summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/linux_builds.yml12
-rw-r--r--.github/workflows/static_checks.yml2
-rw-r--r--.mailmap3
-rw-r--r--AUTHORS.md9
-rw-r--r--COPYRIGHT.txt13
-rw-r--r--DONORS.md152
-rw-r--r--core/config/project_settings.cpp24
-rw-r--r--core/config/project_settings.h8
-rw-r--r--core/core_bind.cpp50
-rw-r--r--core/core_bind.h5
-rw-r--r--core/core_constants.cpp42
-rw-r--r--core/core_constants.h2
-rw-r--r--core/extension/extension_api_dump.cpp10
-rw-r--r--core/extension/gdnative_interface.cpp12
-rw-r--r--core/extension/gdnative_interface.h2
-rw-r--r--core/extension/native_extension.cpp16
-rw-r--r--core/input/input.cpp12
-rw-r--r--core/input/input.h4
-rw-r--r--core/input/input_event.cpp18
-rw-r--r--core/io/config_file.cpp13
-rw-r--r--core/io/file_access_pack.h4
-rw-r--r--core/io/image.cpp43
-rw-r--r--core/io/image.h12
-rw-r--r--core/io/resource.cpp20
-rw-r--r--core/io/resource_format_binary.cpp19
-rw-r--r--core/math/a_star.cpp170
-rw-r--r--core/math/a_star.h122
-rw-r--r--core/math/audio_frame.h2
-rw-r--r--core/math/camera_matrix.cpp5
-rw-r--r--core/math/camera_matrix.h1
-rw-r--r--core/math/color.cpp61
-rw-r--r--core/math/color.h8
-rw-r--r--core/math/delaunay_3d.h2
-rw-r--r--core/math/expression.cpp2
-rw-r--r--core/math/math_funcs.h12
-rw-r--r--core/math/triangle_mesh.cpp16
-rw-r--r--core/math/triangle_mesh.h7
-rw-r--r--core/multiplayer/multiplayer_peer.cpp11
-rw-r--r--core/object/callable_method_pointer.cpp4
-rw-r--r--core/object/class_db.cpp64
-rw-r--r--core/object/class_db.h6
-rw-r--r--core/object/method_bind.cpp25
-rw-r--r--core/object/object.cpp41
-rw-r--r--core/object/object.h11
-rw-r--r--core/os/keyboard.cpp38
-rw-r--r--core/os/keyboard.h115
-rw-r--r--core/os/os.cpp35
-rw-r--r--core/os/os.h1
-rw-r--r--core/string/ustring.cpp39
-rw-r--r--core/string/ustring.h4
-rw-r--r--core/templates/hashfuncs.h257
-rw-r--r--core/variant/array.cpp54
-rw-r--r--core/variant/array.h2
-rw-r--r--core/variant/callable.cpp3
-rw-r--r--core/variant/dictionary.cpp16
-rw-r--r--core/variant/dictionary.h1
-rw-r--r--core/variant/variant.cpp204
-rw-r--r--core/variant/variant_call.cpp38
-rw-r--r--core/variant/variant_setget.h4
-rw-r--r--core/variant/variant_utility.cpp12
-rw-r--r--doc/classes/@GlobalScope.xml238
-rw-r--r--doc/classes/AStar2D.xml10
-rw-r--r--doc/classes/AStar3D.xml4
-rw-r--r--doc/classes/AnimationLibrary.xml8
-rw-r--r--doc/classes/Array.xml49
-rw-r--r--doc/classes/AudioEffectAmplify.xml2
-rw-r--r--doc/classes/AudioEffectBandLimitFilter.xml1
-rw-r--r--doc/classes/AudioEffectBandPassFilter.xml1
-rw-r--r--doc/classes/AudioEffectCapture.xml3
-rw-r--r--doc/classes/AudioEffectChorus.xml1
-rw-r--r--doc/classes/AudioEffectCompressor.xml1
-rw-r--r--doc/classes/AudioEffectDelay.xml1
-rw-r--r--doc/classes/AudioEffectEQ.xml1
-rw-r--r--doc/classes/AudioEffectEQ10.xml1
-rw-r--r--doc/classes/AudioEffectEQ21.xml1
-rw-r--r--doc/classes/AudioEffectEQ6.xml3
-rw-r--r--doc/classes/AudioEffectHighPassFilter.xml3
-rw-r--r--doc/classes/AudioEffectHighShelfFilter.xml3
-rw-r--r--doc/classes/AudioEffectLimiter.xml1
-rw-r--r--doc/classes/AudioEffectLowPassFilter.xml3
-rw-r--r--doc/classes/AudioEffectLowShelfFilter.xml3
-rw-r--r--doc/classes/AudioEffectNotchFilter.xml1
-rw-r--r--doc/classes/AudioEffectPanner.xml3
-rw-r--r--doc/classes/AudioEffectPhaser.xml3
-rw-r--r--doc/classes/AudioEffectPitchShift.xml3
-rw-r--r--doc/classes/AudioEffectReverb.xml4
-rw-r--r--doc/classes/AudioEffectStereoEnhance.xml1
-rw-r--r--doc/classes/AudioStreamPlayer2D.xml3
-rw-r--r--doc/classes/AudioStreamPlayer3D.xml3
-rw-r--r--doc/classes/BaseMaterial3D.xml1
-rw-r--r--doc/classes/Button.xml3
-rw-r--r--doc/classes/Color.xml22
-rw-r--r--doc/classes/ColorPicker.xml3
-rw-r--r--doc/classes/CurveTexture.xml8
-rw-r--r--doc/classes/CurveXYZTexture.xml7
-rw-r--r--doc/classes/Dictionary.xml8
-rw-r--r--doc/classes/EditorPlugin.xml35
-rw-r--r--doc/classes/FontData.xml14
-rw-r--r--doc/classes/GradientTexture1D.xml2
-rw-r--r--doc/classes/GradientTexture2D.xml2
-rw-r--r--doc/classes/Image.xml37
-rw-r--r--doc/classes/ImporterMesh.xml10
-rw-r--r--doc/classes/Input.xml34
-rw-r--r--doc/classes/InputEventMouseMotion.xml2
-rw-r--r--doc/classes/ItemList.xml5
-rw-r--r--doc/classes/Label.xml56
-rw-r--r--doc/classes/Label3D.xml16
-rw-r--r--doc/classes/LightmapGI.xml44
-rw-r--r--doc/classes/LightmapGIData.xml10
-rw-r--r--doc/classes/LightmapProbe.xml3
-rw-r--r--doc/classes/Lightmapper.xml3
-rw-r--r--doc/classes/LightmapperRD.xml3
-rw-r--r--doc/classes/Mesh.xml29
-rw-r--r--doc/classes/MeshInstance2D.xml2
-rw-r--r--doc/classes/MovieWriter.xml76
-rw-r--r--doc/classes/MultiplayerSynchronizer.xml2
-rw-r--r--doc/classes/NavigationAgent2D.xml42
-rw-r--r--doc/classes/NavigationAgent3D.xml42
-rw-r--r--doc/classes/NavigationMesh.xml70
-rw-r--r--doc/classes/NavigationMeshGenerator.xml2
-rw-r--r--doc/classes/NavigationObstacle2D.xml1
-rw-r--r--doc/classes/NavigationObstacle3D.xml1
-rw-r--r--doc/classes/NavigationPolygon.xml6
-rw-r--r--doc/classes/NavigationRegion2D.xml28
-rw-r--r--doc/classes/NavigationRegion3D.xml29
-rw-r--r--doc/classes/NavigationServer2D.xml51
-rw-r--r--doc/classes/NavigationServer3D.xml51
-rw-r--r--doc/classes/Node.xml10
-rw-r--r--doc/classes/Node2D.xml4
-rw-r--r--doc/classes/Node3D.xml1
-rw-r--r--doc/classes/NodePath.xml8
-rw-r--r--doc/classes/ORMMaterial3D.xml3
-rw-r--r--doc/classes/OS.xml17
-rw-r--r--doc/classes/Object.xml6
-rw-r--r--doc/classes/PopupMenu.xml16
-rw-r--r--doc/classes/ProjectSettings.xml69
-rw-r--r--doc/classes/Range.xml2
-rw-r--r--doc/classes/RenderingServer.xml12
-rw-r--r--doc/classes/RichTextLabel.xml35
-rw-r--r--doc/classes/SceneTreeTimer.xml2
-rw-r--r--doc/classes/StandardMaterial3D.xml4
-rw-r--r--doc/classes/String.xml8
-rw-r--r--doc/classes/StringName.xml8
-rw-r--r--doc/classes/SurfaceTool.xml47
-rw-r--r--doc/classes/TextLine.xml21
-rw-r--r--doc/classes/TextParagraph.xml21
-rw-r--r--doc/classes/TextServer.xml66
-rw-r--r--doc/classes/TextServerExtension.xml22
-rw-r--r--doc/classes/Texture2D.xml3
-rw-r--r--doc/classes/Thread.xml7
-rw-r--r--doc/classes/TileData.xml9
-rw-r--r--doc/classes/TileMap.xml23
-rw-r--r--doc/classes/Transform2D.xml1
-rw-r--r--doc/classes/Tree.xml1
-rw-r--r--doc/classes/Viewport.xml8
-rw-r--r--doc/classes/VisualShader.xml4
-rw-r--r--doc/classes/VisualShaderNodeFloatFunc.xml2
-rw-r--r--doc/classes/VisualShaderNodeVectorFunc.xml2
-rw-r--r--doc/classes/Window.xml120
-rw-r--r--doc/classes/World3D.xml2
-rw-r--r--doc/classes/WorldEnvironment.xml1
-rwxr-xr-xdoc/tools/make_rst.py53
-rw-r--r--doc/translations/ar.po1177
-rw-r--r--doc/translations/ca.po1165
-rw-r--r--doc/translations/classes.pot1165
-rw-r--r--doc/translations/cs.po1184
-rw-r--r--doc/translations/de.po1213
-rw-r--r--doc/translations/el.po1177
-rw-r--r--doc/translations/es.po1365
-rw-r--r--doc/translations/fa.po1165
-rw-r--r--doc/translations/fi.po1177
-rw-r--r--doc/translations/fil.po1165
-rw-r--r--doc/translations/fr.po3921
-rw-r--r--doc/translations/gl.po1165
-rw-r--r--doc/translations/hi.po1165
-rw-r--r--doc/translations/hu.po1174
-rw-r--r--doc/translations/id.po1176
-rw-r--r--doc/translations/is.po1165
-rw-r--r--doc/translations/it.po1188
-rw-r--r--doc/translations/ja.po1222
-rw-r--r--doc/translations/ko.po1299
-rw-r--r--doc/translations/lt.po1165
-rw-r--r--doc/translations/lv.po1165
-rw-r--r--doc/translations/mr.po1165
-rw-r--r--doc/translations/nb.po1165
-rw-r--r--doc/translations/ne.po1165
-rw-r--r--doc/translations/nl.po1165
-rw-r--r--doc/translations/pl.po1189
-rw-r--r--doc/translations/pt.po1226
-rw-r--r--doc/translations/pt_BR.po1302
-rw-r--r--doc/translations/ro.po1166
-rw-r--r--doc/translations/ru.po1272
-rw-r--r--doc/translations/sk.po1165
-rw-r--r--doc/translations/sr_Cyrl.po1165
-rw-r--r--doc/translations/sv.po1165
-rw-r--r--doc/translations/th.po1176
-rw-r--r--doc/translations/tl.po1174
-rw-r--r--doc/translations/tr.po1205
-rw-r--r--doc/translations/uk.po1189
-rw-r--r--doc/translations/vi.po1184
-rw-r--r--doc/translations/zh_CN.po2080
-rw-r--r--doc/translations/zh_TW.po1177
-rw-r--r--drivers/gles3/SCsub1
-rw-r--r--drivers/gles3/environment/SCsub5
-rw-r--r--drivers/gles3/environment/gi.cpp140
-rw-r--r--drivers/gles3/environment/gi.h99
-rw-r--r--drivers/gles3/rasterizer_canvas_gles3.cpp47
-rw-r--r--drivers/gles3/rasterizer_canvas_gles3.h2
-rw-r--r--drivers/gles3/rasterizer_gles3.cpp3
-rw-r--r--drivers/gles3/rasterizer_gles3.h3
-rw-r--r--drivers/gles3/rasterizer_scene_gles3.cpp82
-rw-r--r--drivers/gles3/rasterizer_scene_gles3.h7
-rw-r--r--drivers/gles3/rasterizer_storage_gles3.cpp119
-rw-r--r--drivers/gles3/rasterizer_storage_gles3.h62
-rw-r--r--drivers/gles3/shaders/canvas.glsl10
-rw-r--r--drivers/gles3/shaders/scene.glsl24
-rw-r--r--drivers/gles3/storage/mesh_storage.cpp270
-rw-r--r--drivers/gles3/storage/mesh_storage.h1
-rw-r--r--drivers/vulkan/rendering_device_vulkan.cpp6
-rw-r--r--drivers/vulkan/rendering_device_vulkan.h14
-rw-r--r--editor/animation_track_editor.cpp43
-rw-r--r--editor/debugger/debug_adapter/debug_adapter_types.h2
-rw-r--r--editor/debugger/editor_debugger_inspector.cpp2
-rw-r--r--editor/debugger/editor_debugger_node.cpp72
-rw-r--r--editor/debugger/editor_debugger_node.h3
-rw-r--r--editor/debugger/editor_performance_profiler.cpp2
-rw-r--r--editor/debugger/editor_profiler.cpp4
-rw-r--r--editor/debugger/editor_visual_profiler.cpp4
-rw-r--r--editor/debugger/script_editor_debugger.cpp6
-rw-r--r--editor/dependency_editor.cpp2
-rw-r--r--editor/editor_about.cpp2
-rw-r--r--editor/editor_audio_buses.cpp8
-rw-r--r--editor/editor_export.cpp114
-rw-r--r--editor/editor_export.h59
-rw-r--r--editor/editor_file_dialog.cpp2
-rw-r--r--editor/editor_inspector.cpp22
-rw-r--r--editor/editor_node.cpp121
-rw-r--r--editor/editor_node.h4
-rw-r--r--editor/editor_path.cpp2
-rw-r--r--editor/editor_properties.cpp314
-rw-r--r--editor/editor_properties.h40
-rw-r--r--editor/editor_properties_array_dict.cpp82
-rw-r--r--editor/editor_properties_array_dict.h8
-rw-r--r--editor/editor_property_name_processor.cpp1
-rw-r--r--editor/editor_resource_picker.cpp2
-rw-r--r--editor/editor_run.cpp12
-rw-r--r--editor/editor_run.h2
-rw-r--r--editor/editor_run_native.cpp17
-rw-r--r--editor/editor_run_native.h5
-rw-r--r--editor/editor_sectioned_inspector.cpp5
-rw-r--r--editor/editor_settings.cpp3
-rw-r--r--editor/editor_spin_slider.cpp7
-rw-r--r--editor/editor_themes.cpp131
-rw-r--r--editor/editor_toaster.cpp14
-rw-r--r--editor/find_in_files.cpp4
-rw-r--r--editor/groups_editor.cpp2
-rw-r--r--editor/icons/MainMovieWrite.svg1
-rw-r--r--editor/icons/MainMovieWriteEnabled.svg1
-rw-r--r--editor/icons/NavigationAgent2D.svg2
-rw-r--r--editor/icons/NavigationAgent3D.svg2
-rw-r--r--editor/icons/NavigationObstacle2D.svg2
-rw-r--r--editor/icons/NavigationObstacle3D.svg2
-rw-r--r--editor/icons/SkeletonIK3D.svg2
-rw-r--r--editor/icons/TerrainConnect.svg1
-rw-r--r--editor/icons/TerrainPath.svg1
-rw-r--r--editor/icons/Unlinked.svg1
-rw-r--r--editor/icons/VideoStreamPlayer.svg (renamed from editor/icons/VideoPlayer.svg)0
-rw-r--r--editor/import/dynamic_font_import_settings.cpp31
-rw-r--r--editor/import/resource_importer_dynamic_font.cpp7
-rw-r--r--editor/import/resource_importer_imagefont.cpp2
-rw-r--r--editor/import/resource_importer_scene.cpp38
-rw-r--r--editor/import/resource_importer_texture.cpp6
-rw-r--r--editor/import/scene_import_settings.cpp2
-rw-r--r--editor/import_dock.cpp2
-rw-r--r--editor/node_dock.cpp2
-rw-r--r--editor/plugins/animation_blend_space_1d_editor.cpp2
-rw-r--r--editor/plugins/animation_blend_space_2d_editor.cpp2
-rw-r--r--editor/plugins/animation_library_editor.cpp6
-rw-r--r--editor/plugins/animation_library_editor.h2
-rw-r--r--editor/plugins/animation_player_editor_plugin.cpp6
-rw-r--r--editor/plugins/animation_state_machine_editor.cpp11
-rw-r--r--editor/plugins/canvas_item_editor_plugin.cpp78
-rw-r--r--editor/plugins/canvas_item_editor_plugin.h2
-rw-r--r--editor/plugins/control_editor_plugin.cpp4
-rw-r--r--editor/plugins/gpu_particles_3d_editor_plugin.cpp2
-rw-r--r--editor/plugins/input_event_editor_plugin.cpp5
-rw-r--r--editor/plugins/mesh_instance_3d_editor_plugin.cpp4
-rw-r--r--editor/plugins/node_3d_editor_plugin.cpp71
-rw-r--r--editor/plugins/node_3d_editor_plugin.h3
-rw-r--r--editor/plugins/occluder_instance_3d_editor_plugin.cpp2
-rw-r--r--editor/plugins/path_3d_editor_plugin.cpp57
-rw-r--r--editor/plugins/resource_preloader_editor_plugin.cpp5
-rw-r--r--editor/plugins/script_editor_plugin.cpp2
-rw-r--r--editor/plugins/shader_editor_plugin.cpp210
-rw-r--r--editor/plugins/shader_editor_plugin.h42
-rw-r--r--editor/plugins/sprite_2d_editor_plugin.cpp6
-rw-r--r--editor/plugins/theme_editor_plugin.cpp6
-rw-r--r--editor/plugins/tiles/tile_data_editors.cpp183
-rw-r--r--editor/plugins/tiles/tile_map_editor.cpp430
-rw-r--r--editor/plugins/tiles/tile_map_editor.h20
-rw-r--r--editor/plugins/tiles/tile_set_atlas_source_editor.cpp20
-rw-r--r--editor/plugins/tiles/tile_set_editor.cpp7
-rw-r--r--editor/plugins/visual_shader_editor_plugin.cpp84
-rw-r--r--editor/plugins/visual_shader_editor_plugin.h17
-rw-r--r--editor/project_converter_3_to_4.cpp3813
-rw-r--r--editor/project_converter_3_to_4.h83
-rw-r--r--editor/project_export.cpp48
-rw-r--r--editor/project_export.h3
-rw-r--r--editor/project_manager.cpp53
-rw-r--r--editor/project_manager.h5
-rw-r--r--editor/project_settings_editor.cpp4
-rw-r--r--editor/property_editor.cpp33
-rw-r--r--editor/rename_dialog.cpp2
-rw-r--r--editor/scene_tree_dock.cpp28
-rw-r--r--editor/scene_tree_dock.h1
-rw-r--r--editor/scene_tree_editor.cpp8
-rw-r--r--editor/script_create_dialog.cpp8
-rw-r--r--editor/shader_create_dialog.cpp5
-rw-r--r--editor/translations/af.po728
-rw-r--r--editor/translations/ar.po1314
-rw-r--r--editor/translations/az.po702
-rw-r--r--editor/translations/bg.po754
-rw-r--r--editor/translations/bn.po828
-rw-r--r--editor/translations/br.po689
-rw-r--r--editor/translations/ca.po1089
-rw-r--r--editor/translations/cs.po763
-rw-r--r--editor/translations/da.po749
-rw-r--r--editor/translations/de.po884
-rw-r--r--editor/translations/editor.pot638
-rw-r--r--editor/translations/el.po757
-rw-r--r--editor/translations/en_Shaw.po673
-rw-r--r--editor/translations/eo.po786
-rw-r--r--editor/translations/es.po1115
-rw-r--r--editor/translations/es_AR.po1285
-rw-r--r--editor/translations/et.po740
-rw-r--r--editor/translations/eu.po724
-rw-r--r--editor/translations/fa.po733
-rw-r--r--editor/translations/fi.po785
-rw-r--r--editor/translations/fil.po696
-rw-r--r--editor/translations/fr.po798
-rw-r--r--editor/translations/ga.po685
-rw-r--r--editor/translations/gl.po758
-rw-r--r--editor/translations/he.po944
-rw-r--r--editor/translations/hi.po877
-rw-r--r--editor/translations/hr.po731
-rw-r--r--editor/translations/hu.po800
-rw-r--r--editor/translations/id.po765
-rw-r--r--editor/translations/is.po684
-rw-r--r--editor/translations/it.po1034
-rw-r--r--editor/translations/ja.po830
-rw-r--r--editor/translations/ka.po716
-rw-r--r--editor/translations/km.po665
-rw-r--r--editor/translations/ko.po800
-rw-r--r--editor/translations/lt.po726
-rw-r--r--editor/translations/lv.po757
-rw-r--r--editor/translations/mi.po25656
-rw-r--r--editor/translations/mk.po673
-rw-r--r--editor/translations/ml.po682
-rw-r--r--editor/translations/mr.po683
-rw-r--r--editor/translations/ms.po1213
-rw-r--r--editor/translations/nb.po746
-rw-r--r--editor/translations/nl.po755
-rw-r--r--editor/translations/or.po25662
-rw-r--r--editor/translations/pl.po783
-rw-r--r--editor/translations/pr.po717
-rw-r--r--editor/translations/pt.po805
-rw-r--r--editor/translations/pt_BR.po846
-rw-r--r--editor/translations/ro.po758
-rw-r--r--editor/translations/ru.po861
-rw-r--r--editor/translations/si.po685
-rw-r--r--editor/translations/sk.po763
-rw-r--r--editor/translations/sl.po902
-rw-r--r--editor/translations/sq.po752
-rw-r--r--editor/translations/sr_Cyrl.po749
-rw-r--r--editor/translations/sr_Latn.po704
-rw-r--r--editor/translations/sv.po752
-rw-r--r--editor/translations/ta.po26267
-rw-r--r--editor/translations/te.po657
-rw-r--r--editor/translations/th.po756
-rw-r--r--editor/translations/tl.po770
-rw-r--r--editor/translations/tr.po1185
-rw-r--r--editor/translations/tt.po25676
-rw-r--r--editor/translations/tzm.po25683
-rw-r--r--editor/translations/uk.po901
-rw-r--r--editor/translations/ur_PK.po709
-rw-r--r--editor/translations/vi.po762
-rw-r--r--editor/translations/zh_CN.po798
-rw-r--r--editor/translations/zh_HK.po727
-rw-r--r--editor/translations/zh_TW.po765
-rw-r--r--main/main.cpp116
-rw-r--r--misc/dist/shell/_godot.zsh-completion2
-rw-r--r--misc/dist/shell/godot.bash-completion2
-rw-r--r--misc/dist/shell/godot.fish2
-rwxr-xr-xmisc/hooks/pre-commit-make-rst2
-rwxr-xr-xmisc/scripts/check_ci_log.py2
-rwxr-xr-x[-rw-r--r--]misc/scripts/codespell.sh0
-rw-r--r--modules/csg/csg.h6
-rw-r--r--modules/csg/csg_shape.cpp6
-rw-r--r--modules/csg/csg_shape.h6
-rw-r--r--modules/gdscript/editor/script_templates/EditorScenePostImport/basic_import_script.gd9
-rw-r--r--modules/gdscript/editor/script_templates/EditorScenePostImport/no_comments.gd7
-rw-r--r--modules/gdscript/gdscript.cpp6
-rw-r--r--modules/gdscript/gdscript.h2
-rw-r--r--modules/gdscript/gdscript_analyzer.cpp6
-rw-r--r--modules/gdscript/gdscript_compiler.cpp95
-rw-r--r--modules/gdscript/gdscript_editor.cpp5
-rw-r--r--modules/gdscript/gdscript_lambda_callable.cpp6
-rw-r--r--modules/gdscript/gdscript_parser.cpp2
-rw-r--r--modules/gdscript/gdscript_rpc_callable.cpp2
-rw-r--r--modules/gdscript/gdscript_vm.cpp2
-rw-r--r--modules/gdscript/language_server/gdscript_text_document.cpp8
-rw-r--r--modules/gdscript/language_server/lsp.hpp2
-rw-r--r--modules/gdscript/tests/scripts/parser/features/match_bind_unused.gd13
-rw-r--r--modules/gdscript/tests/scripts/parser/features/match_bind_unused.out6
-rw-r--r--modules/gdscript/tests/scripts/parser/features/match_dictionary.gd43
-rw-r--r--modules/gdscript/tests/scripts/parser/features/match_dictionary.out15
-rw-r--r--modules/gdscript/tests/scripts/parser/features/match_multiple_patterns_with_array.gd26
-rw-r--r--modules/gdscript/tests/scripts/parser/features/match_multiple_patterns_with_array.out9
-rw-r--r--modules/gdscript/tests/test_gdscript.cpp46
-rw-r--r--modules/gridmap/doc_classes/GridMap.xml17
-rw-r--r--modules/gridmap/editor/grid_map_editor_plugin.cpp2
-rw-r--r--modules/gridmap/grid_map.cpp76
-rw-r--r--modules/gridmap/grid_map.h8
-rw-r--r--modules/jpg/SCsub1
-rw-r--r--modules/jpg/image_loader_jpegd.cpp56
-rw-r--r--modules/lightmapper_rd/lightmapper_rd.h30
-rw-r--r--modules/minimp3/audio_stream_mp3.cpp4
-rw-r--r--modules/mono/class_db_api_json.cpp2
-rw-r--r--modules/mono/csharp_script.cpp6
-rw-r--r--modules/mono/editor/bindings_generator.cpp85
-rw-r--r--modules/mono/editor/bindings_generator.h10
-rw-r--r--modules/mono/editor/script_templates/EditorScenePostImport/basic_import_script.cs16
-rw-r--r--modules/mono/editor/script_templates/EditorScenePostImport/no_comments.cs15
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/AssemblyHasScriptsAttribute.cs10
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/DisableGodotGeneratorsAttribute.cs3
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/ExportAttribute.cs8
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/GodotMethodAttribute.cs7
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/RPCAttributes.cs6
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/ScriptPathAttribute.cs7
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/Dispatcher.cs7
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/GodotSynchronizationContext.cs3
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/GodotTaskScheduler.cs21
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/Interfaces/IAwaitable.cs7
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/Interfaces/IAwaiter.cs7
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/Interfaces/ISerializationListener.cs3
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/MarshalUtils.cs5
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/Mathf.cs25
-rw-r--r--modules/mono/managed_callable.cpp3
-rw-r--r--modules/mono/mono_gd/gd_mono_cache.cpp2
-rw-r--r--modules/mono/mono_gd/gd_mono_cache.h1
-rw-r--r--modules/mono/mono_gd/gd_mono_utils.cpp8
-rw-r--r--modules/mono/mono_gd/gd_mono_utils.h1
-rw-r--r--modules/mono/signal_awaiter_utils.cpp4
-rw-r--r--modules/mono/utils/string_utils.cpp2
-rw-r--r--modules/navigation/godot_navigation_server.cpp42
-rw-r--r--modules/navigation/godot_navigation_server.h12
-rw-r--r--modules/navigation/nav_map.cpp24
-rw-r--r--modules/navigation/nav_map.h6
-rw-r--r--modules/navigation/nav_region.cpp8
-rw-r--r--modules/navigation/nav_region.h14
-rw-r--r--modules/navigation/navigation_mesh_generator.cpp25
-rw-r--r--modules/navigation/rvo_agent.cpp3
-rw-r--r--modules/noise/noise_texture.cpp4
-rw-r--r--modules/openxr/SCsub2
-rw-r--r--modules/openxr/action_map/openxr_action_map.cpp65
-rw-r--r--modules/openxr/action_map/openxr_defs.cpp158
-rw-r--r--modules/openxr/action_map/openxr_defs.h21
-rw-r--r--modules/openxr/extensions/openxr_htc_vive_tracker_extension.cpp67
-rw-r--r--modules/openxr/extensions/openxr_htc_vive_tracker_extension.h52
-rw-r--r--modules/openxr/openxr_api.cpp13
-rw-r--r--modules/openxr/openxr_api.h6
-rw-r--r--modules/openxr/openxr_interface.cpp19
-rw-r--r--modules/raycast/raycast_occlusion_cull.h4
-rw-r--r--modules/text_server_adv/text_server_adv.cpp89
-rw-r--r--modules/text_server_adv/text_server_adv.h10
-rw-r--r--modules/text_server_fb/text_server_fb.cpp78
-rw-r--r--modules/text_server_fb/text_server_fb.h10
-rw-r--r--modules/visual_script/editor/visual_script_editor.cpp47
-rw-r--r--modules/visual_script/visual_script.cpp6
-rw-r--r--modules/visual_script/visual_script.h4
-rw-r--r--modules/visual_script/visual_script_flow_control.cpp4
-rw-r--r--modules/visual_script/visual_script_nodes.cpp8
-rw-r--r--modules/vorbis/audio_stream_ogg_vorbis.cpp17
-rw-r--r--modules/webp/image_loader_webp.cpp181
-rw-r--r--modules/webp/image_loader_webp.h4
-rw-r--r--modules/webp/register_types.cpp10
-rw-r--r--modules/webp/resource_saver_webp.cpp90
-rw-r--r--modules/webp/resource_saver_webp.h49
-rw-r--r--modules/webp/webp_common.cpp190
-rw-r--r--modules/webp/webp_common.h45
-rw-r--r--modules/webrtc/doc_classes/WebRTCPeerConnection.xml7
-rw-r--r--modules/webrtc/doc_classes/WebRTCPeerConnectionExtension.xml5
-rw-r--r--modules/webrtc/webrtc_peer_connection.cpp7
-rw-r--r--modules/webrtc/webrtc_peer_connection_extension.cpp7
-rw-r--r--modules/webrtc/webrtc_peer_connection_extension.h2
-rw-r--r--platform/android/export/export_plugin.cpp69
-rw-r--r--platform/android/java/editor/src/main/java/org/godotengine/editor/GodotEditor.kt (renamed from platform/android/java/editor/src/main/java/org/godotengine/editor/GodotEditor.java)143
-rw-r--r--platform/android/java/editor/src/main/java/org/godotengine/editor/GodotGame.kt (renamed from platform/android/java/editor/src/main/java/org/godotengine/editor/GodotGame.java)10
-rw-r--r--platform/android/java/editor/src/main/java/org/godotengine/editor/GodotProjectManager.kt (renamed from platform/android/java/editor/src/main/java/org/godotengine/editor/GodotProjectManager.java)9
-rw-r--r--platform/android/java/lib/src/org/godotengine/godot/input/GodotInputHandler.java3
-rw-r--r--platform/iphone/export/export_plugin.cpp10
-rw-r--r--platform/javascript/SCsub6
-rw-r--r--platform/javascript/detect.py15
-rw-r--r--platform/javascript/emscripten_helpers.py6
-rw-r--r--platform/javascript/export/export_plugin.cpp49
-rw-r--r--platform/javascript/export/export_plugin.h15
-rw-r--r--platform/linuxbsd/display_server_x11.cpp15
-rw-r--r--platform/linuxbsd/display_server_x11.h2
-rw-r--r--platform/linuxbsd/export/export_plugin.cpp20
-rw-r--r--platform/linuxbsd/export/export_plugin.h2
-rw-r--r--platform/linuxbsd/key_mapping_x11.cpp42
-rw-r--r--platform/osx/display_server_osx.h2
-rw-r--r--platform/osx/display_server_osx.mm11
-rw-r--r--platform/osx/export/export_plugin.cpp113
-rw-r--r--platform/osx/godot_application.mm5
-rw-r--r--platform/osx/key_mapping_osx.mm29
-rw-r--r--platform/windows/display_server_windows.cpp1
-rw-r--r--platform/windows/export/export_plugin.cpp72
-rw-r--r--platform/windows/export/export_plugin.h2
-rw-r--r--platform/windows/key_mapping_windows.cpp17
-rw-r--r--scene/2d/area_2d.cpp2
-rw-r--r--scene/2d/audio_stream_player_2d.cpp24
-rw-r--r--scene/2d/audio_stream_player_2d.h6
-rw-r--r--scene/2d/back_buffer_copy.cpp2
-rw-r--r--scene/2d/camera_2d.cpp14
-rw-r--r--scene/2d/canvas_group.cpp4
-rw-r--r--scene/2d/collision_polygon_2d.cpp2
-rw-r--r--scene/2d/cpu_particles_2d.cpp4
-rw-r--r--scene/2d/gpu_particles_2d.cpp4
-rw-r--r--scene/2d/light_2d.cpp5
-rw-r--r--scene/2d/light_2d.h2
-rw-r--r--scene/2d/navigation_agent_2d.cpp79
-rw-r--r--scene/2d/navigation_agent_2d.h19
-rw-r--r--scene/2d/navigation_region_2d.cpp66
-rw-r--r--scene/2d/navigation_region_2d.h16
-rw-r--r--scene/2d/node_2d.cpp58
-rw-r--r--scene/2d/node_2d.h4
-rw-r--r--scene/2d/parallax_background.cpp2
-rw-r--r--scene/2d/parallax_layer.cpp2
-rw-r--r--scene/2d/physics_body_2d.cpp6
-rw-r--r--scene/2d/polygon_2d.cpp9
-rw-r--r--scene/2d/shape_cast_2d.cpp4
-rw-r--r--scene/2d/tile_map.cpp613
-rw-r--r--scene/2d/tile_map.h38
-rw-r--r--scene/3d/area_3d.cpp2
-rw-r--r--scene/3d/audio_stream_player_3d.cpp22
-rw-r--r--scene/3d/audio_stream_player_3d.h6
-rw-r--r--scene/3d/fog_volume.cpp2
-rw-r--r--scene/3d/gpu_particles_3d.cpp2
-rw-r--r--scene/3d/gpu_particles_collision_3d.cpp2
-rw-r--r--scene/3d/joint_3d.cpp42
-rw-r--r--scene/3d/label_3d.cpp31
-rw-r--r--scene/3d/label_3d.h14
-rw-r--r--scene/3d/light_3d.cpp36
-rw-r--r--scene/3d/light_3d.h2
-rw-r--r--scene/3d/lightmap_gi.cpp161
-rw-r--r--scene/3d/lightmap_gi.h12
-rw-r--r--scene/3d/navigation_agent_3d.cpp79
-rw-r--r--scene/3d/navigation_agent_3d.h19
-rw-r--r--scene/3d/navigation_region_3d.cpp76
-rw-r--r--scene/3d/navigation_region_3d.h16
-rw-r--r--scene/3d/node_3d.cpp2
-rw-r--r--scene/3d/occluder_instance_3d.cpp8
-rw-r--r--scene/3d/path_3d.cpp14
-rw-r--r--scene/3d/path_3d.h2
-rw-r--r--scene/3d/physics_body_3d.cpp12
-rw-r--r--scene/3d/skeleton_3d.cpp12
-rw-r--r--scene/3d/skeleton_ik_3d.cpp2
-rw-r--r--scene/3d/soft_dynamic_body_3d.cpp2
-rw-r--r--scene/3d/sprite_3d.cpp8
-rw-r--r--scene/3d/visual_instance_3d.cpp8
-rw-r--r--scene/3d/voxel_gi.cpp2
-rw-r--r--scene/animation/animation_blend_tree.cpp10
-rw-r--r--scene/animation/animation_node_state_machine.cpp24
-rw-r--r--scene/animation/animation_node_state_machine.h6
-rw-r--r--scene/animation/animation_player.cpp11
-rw-r--r--scene/animation/animation_player.h4
-rw-r--r--scene/animation/animation_tree.cpp56
-rw-r--r--scene/animation/root_motion_view.cpp4
-rw-r--r--scene/gui/button.cpp24
-rw-r--r--scene/gui/button.h4
-rw-r--r--scene/gui/color_picker.cpp177
-rw-r--r--scene/gui/color_picker.h6
-rw-r--r--scene/gui/control.cpp10
-rw-r--r--scene/gui/dialogs.cpp4
-rw-r--r--scene/gui/graph_edit.cpp13
-rw-r--r--scene/gui/graph_node.cpp2
-rw-r--r--scene/gui/item_list.cpp8
-rw-r--r--scene/gui/item_list.h6
-rw-r--r--scene/gui/label.cpp79
-rw-r--r--scene/gui/label.h46
-rw-r--r--scene/gui/line_edit.cpp20
-rw-r--r--scene/gui/nine_patch_rect.cpp10
-rw-r--r--scene/gui/popup.cpp11
-rw-r--r--scene/gui/popup.h4
-rw-r--r--scene/gui/popup_menu.cpp34
-rw-r--r--scene/gui/popup_menu.h5
-rw-r--r--scene/gui/reference_rect.cpp2
-rw-r--r--scene/gui/rich_text_label.cpp156
-rw-r--r--scene/gui/rich_text_label.h35
-rw-r--r--scene/gui/scroll_bar.cpp2
-rw-r--r--scene/gui/scroll_container.cpp4
-rw-r--r--scene/gui/split_container.cpp2
-rw-r--r--scene/gui/tab_bar.cpp2
-rw-r--r--scene/gui/text_edit.cpp12
-rw-r--r--scene/gui/texture_progress_bar.cpp12
-rw-r--r--scene/gui/video_stream_player.cpp2
-rw-r--r--scene/main/canvas_item.cpp4
-rw-r--r--scene/main/canvas_layer.cpp6
-rw-r--r--scene/main/http_request.cpp6
-rw-r--r--scene/main/node.cpp9
-rw-r--r--scene/main/node.h1
-rw-r--r--scene/main/scene_tree.cpp9
-rw-r--r--scene/main/viewport.cpp66
-rw-r--r--scene/main/viewport.h7
-rw-r--r--scene/main/window.cpp69
-rw-r--r--scene/multiplayer/multiplayer_synchronizer.cpp7
-rw-r--r--scene/resources/animation.cpp2
-rw-r--r--scene/resources/animation_library.cpp6
-rw-r--r--scene/resources/canvas_item_material.h2
-rw-r--r--scene/resources/concave_polygon_shape_3d.h4
-rw-r--r--scene/resources/default_theme/default_theme.cpp1
-rw-r--r--scene/resources/environment.cpp8
-rw-r--r--scene/resources/font.cpp45
-rw-r--r--scene/resources/font.h6
-rw-r--r--scene/resources/importer_mesh.cpp11
-rw-r--r--scene/resources/material.cpp29
-rw-r--r--scene/resources/mesh.cpp78
-rw-r--r--scene/resources/mesh_library.cpp4
-rw-r--r--scene/resources/navigation_mesh.cpp90
-rw-r--r--scene/resources/navigation_mesh.h5
-rw-r--r--scene/resources/particles_material.cpp6
-rw-r--r--scene/resources/particles_material.h2
-rw-r--r--scene/resources/primitive_meshes.cpp18
-rw-r--r--scene/resources/resource_format_text.cpp38
-rw-r--r--scene/resources/scene_replication_config.cpp12
-rw-r--r--scene/resources/separation_ray_shape_2d.cpp2
-rw-r--r--scene/resources/separation_ray_shape_3d.cpp2
-rw-r--r--scene/resources/skeleton_modification_2d_twoboneik.cpp4
-rw-r--r--scene/resources/style_box.cpp62
-rw-r--r--scene/resources/surface_tool.cpp66
-rw-r--r--scene/resources/surface_tool.h12
-rw-r--r--scene/resources/text_line.cpp26
-rw-r--r--scene/resources/text_line.h17
-rw-r--r--scene/resources/text_paragraph.cpp24
-rw-r--r--scene/resources/text_paragraph.h17
-rw-r--r--scene/resources/texture.cpp52
-rw-r--r--scene/resources/theme.cpp4
-rw-r--r--scene/resources/tile_set.cpp357
-rw-r--r--scene/resources/tile_set.h60
-rw-r--r--scene/resources/visual_shader.cpp99
-rw-r--r--scene/resources/visual_shader.h10
-rw-r--r--scene/resources/visual_shader_nodes.cpp8
-rw-r--r--scene/resources/visual_shader_nodes.h4
-rw-r--r--scene/resources/world_2d.cpp4
-rw-r--r--scene/resources/world_3d.cpp8
-rw-r--r--servers/SCsub1
-rw-r--r--servers/audio/audio_driver_dummy.cpp67
-rw-r--r--servers/audio/audio_driver_dummy.h22
-rw-r--r--servers/audio/audio_stream.cpp31
-rw-r--r--servers/audio/effects/audio_effect_capture.cpp2
-rw-r--r--servers/audio/effects/audio_effect_chorus.cpp40
-rw-r--r--servers/audio/effects/audio_effect_compressor.cpp4
-rw-r--r--servers/audio/effects/audio_effect_delay.cpp12
-rw-r--r--servers/audio/effects/audio_effect_distortion.cpp2
-rw-r--r--servers/audio/effects/audio_effect_filter.cpp2
-rw-r--r--servers/audio/effects/audio_effect_limiter.cpp6
-rw-r--r--servers/audio/effects/audio_effect_phaser.cpp6
-rw-r--r--servers/audio/effects/audio_effect_record.cpp4
-rw-r--r--servers/audio/effects/audio_effect_record.h1
-rw-r--r--servers/audio/effects/audio_effect_reverb.cpp2
-rw-r--r--servers/audio/effects/audio_effect_spectrum_analyzer.cpp2
-rw-r--r--servers/audio/effects/audio_effect_stereo_enhance.cpp2
-rw-r--r--servers/audio/effects/audio_stream_generator.cpp4
-rw-r--r--servers/movie_writer/SCsub5
-rw-r--r--servers/movie_writer/movie_writer.cpp306
-rw-r--r--servers/movie_writer/movie_writer.h123
-rw-r--r--servers/movie_writer/movie_writer_mjpeg.cpp263
-rw-r--r--servers/movie_writer/movie_writer_mjpeg.h73
-rw-r--r--servers/navigation_server_2d.cpp20
-rw-r--r--servers/navigation_server_2d.h14
-rw-r--r--servers/navigation_server_3d.cpp10
-rw-r--r--servers/navigation_server_3d.h14
-rw-r--r--servers/physics_2d/godot_area_2d.h6
-rw-r--r--servers/physics_3d/godot_area_3d.h6
-rw-r--r--servers/register_server_types.cpp15
-rw-r--r--servers/rendering/dummy/environment/gi.h85
-rw-r--r--servers/rendering/dummy/rasterizer_dummy.h3
-rw-r--r--servers/rendering/dummy/rasterizer_scene_dummy.h4
-rw-r--r--servers/rendering/dummy/rasterizer_storage_dummy.h41
-rw-r--r--servers/rendering/environment/renderer_gi.h85
-rw-r--r--servers/rendering/renderer_compositor.h2
-rw-r--r--servers/rendering/renderer_rd/SCsub1
-rw-r--r--servers/rendering/renderer_rd/effects/resolve.cpp130
-rw-r--r--servers/rendering/renderer_rd/effects/resolve.h74
-rw-r--r--servers/rendering/renderer_rd/effects_rd.cpp96
-rw-r--r--servers/rendering/renderer_rd/effects_rd.h40
-rw-r--r--servers/rendering/renderer_rd/environment/SCsub5
-rw-r--r--servers/rendering/renderer_rd/environment/gi.cpp (renamed from servers/rendering/renderer_rd/renderer_scene_gi_rd.cpp)1336
-rw-r--r--servers/rendering/renderer_rd/environment/gi.h (renamed from servers/rendering/renderer_rd/renderer_scene_gi_rd.h)201
-rw-r--r--servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.cpp397
-rw-r--r--servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.h37
-rw-r--r--servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.cpp43
-rw-r--r--servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.h10
-rw-r--r--servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.cpp20
-rw-r--r--servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.h4
-rw-r--r--servers/rendering/renderer_rd/forward_mobile/scene_shader_forward_mobile.cpp2
-rw-r--r--servers/rendering/renderer_rd/renderer_compositor_rd.h14
-rw-r--r--servers/rendering/renderer_rd/renderer_scene_render_rd.cpp158
-rw-r--r--servers/rendering/renderer_rd/renderer_scene_render_rd.h46
-rw-r--r--servers/rendering/renderer_rd/renderer_scene_sky_rd.cpp2
-rw-r--r--servers/rendering/renderer_rd/renderer_storage_rd.cpp344
-rw-r--r--servers/rendering/renderer_rd/renderer_storage_rd.h86
-rw-r--r--servers/rendering/renderer_rd/shaders/SCsub1
-rw-r--r--servers/rendering/renderer_rd/shaders/effects/resolve.glsl (renamed from servers/rendering/renderer_rd/shaders/resolve.glsl)0
-rw-r--r--servers/rendering/renderer_rd/shaders/effects/tonemap.glsl9
-rw-r--r--servers/rendering/renderer_rd/shaders/environment/SCsub17
-rw-r--r--servers/rendering/renderer_rd/shaders/environment/gi.glsl (renamed from servers/rendering/renderer_rd/shaders/gi.glsl)44
-rw-r--r--servers/rendering/renderer_rd/shaders/environment/sdfgi_debug.glsl (renamed from servers/rendering/renderer_rd/shaders/sdfgi_debug.glsl)10
-rw-r--r--servers/rendering/renderer_rd/shaders/environment/sdfgi_debug_probes.glsl (renamed from servers/rendering/renderer_rd/shaders/sdfgi_debug_probes.glsl)48
-rw-r--r--servers/rendering/renderer_rd/shaders/environment/sdfgi_direct_light.glsl (renamed from servers/rendering/renderer_rd/shaders/sdfgi_direct_light.glsl)0
-rw-r--r--servers/rendering/renderer_rd/shaders/environment/sdfgi_integrate.glsl (renamed from servers/rendering/renderer_rd/shaders/sdfgi_integrate.glsl)0
-rw-r--r--servers/rendering/renderer_rd/shaders/environment/sdfgi_preprocess.glsl (renamed from servers/rendering/renderer_rd/shaders/sdfgi_preprocess.glsl)0
-rw-r--r--servers/rendering/renderer_rd/shaders/environment/voxel_gi.glsl (renamed from servers/rendering/renderer_rd/shaders/voxel_gi.glsl)0
-rw-r--r--servers/rendering/renderer_rd/shaders/environment/voxel_gi_debug.glsl (renamed from servers/rendering/renderer_rd/shaders/voxel_gi_debug.glsl)0
-rw-r--r--servers/rendering/renderer_rd/shaders/environment/voxel_gi_sdf.glsl (renamed from servers/rendering/renderer_rd/shaders/voxel_gi_sdf.glsl)0
-rw-r--r--servers/rendering/renderer_rd/shaders/scene_forward_clustered.glsl145
-rw-r--r--servers/rendering/renderer_rd/shaders/scene_forward_clustered_inc.glsl21
-rw-r--r--servers/rendering/renderer_rd/shaders/scene_forward_lights_inc.glsl30
-rw-r--r--servers/rendering/renderer_rd/shaders/scene_forward_mobile.glsl36
-rw-r--r--servers/rendering/renderer_rd/shaders/scene_forward_mobile_inc.glsl9
-rw-r--r--servers/rendering/renderer_rd/shaders/taa_resolve.glsl393
-rw-r--r--servers/rendering/renderer_rd/storage_rd/material_storage.cpp2
-rw-r--r--servers/rendering/renderer_rd/uniform_set_cache_rd.h18
-rw-r--r--servers/rendering/renderer_scene.h4
-rw-r--r--servers/rendering/renderer_scene_cull.cpp40
-rw-r--r--servers/rendering/renderer_scene_cull.h7
-rw-r--r--servers/rendering/renderer_scene_render.cpp3
-rw-r--r--servers/rendering/renderer_scene_render.h7
-rw-r--r--servers/rendering/renderer_storage.h42
-rw-r--r--servers/rendering/renderer_viewport.cpp45
-rw-r--r--servers/rendering/renderer_viewport.h11
-rw-r--r--servers/rendering/rendering_server_default.cpp8
-rw-r--r--servers/rendering/rendering_server_default.h7
-rw-r--r--servers/rendering/rendering_server_globals.cpp1
-rw-r--r--servers/rendering/rendering_server_globals.h2
-rw-r--r--servers/rendering/shader_compiler.cpp1
-rw-r--r--servers/rendering/shader_compiler.h1
-rw-r--r--servers/rendering/shader_language.cpp976
-rw-r--r--servers/rendering/shader_language.h5
-rw-r--r--servers/rendering_server.cpp10
-rw-r--r--servers/rendering_server.h7
-rw-r--r--servers/text/text_server_extension.cpp25
-rw-r--r--servers/text/text_server_extension.h8
-rw-r--r--servers/text_server.cpp29
-rw-r--r--servers/text_server.h33
-rw-r--r--tests/core/math/test_astar.h8
-rw-r--r--tests/core/object/test_class_db.h6
-rw-r--r--thirdparty/README.md25
-rw-r--r--thirdparty/doctest/doctest.h2109
-rw-r--r--thirdparty/etcpak/AUTHORS.txt2
-rw-r--r--thirdparty/etcpak/LICENSE.txt2
-rw-r--r--thirdparty/freetype/patches/fix_gcc_lto_build.diff34
-rw-r--r--thirdparty/freetype/src/smooth/ftgrays.c9
-rw-r--r--thirdparty/jpeg-compressor/jpge.cpp1076
-rw-r--r--thirdparty/jpeg-compressor/jpge.h174
-rw-r--r--thirdparty/meshoptimizer/patches/attribute-aware-simplify-distance-only-metric.patch30
-rw-r--r--thirdparty/meshoptimizer/patches/attribute-aware-simplify.patch24
-rw-r--r--thirdparty/meshoptimizer/simplifier.cpp10
-rw-r--r--thirdparty/misc/ok_color.h688
-rw-r--r--thirdparty/misc/ok_color_shader.h663
-rw-r--r--thirdparty/openxr/include/openxr/openxr.h595
-rw-r--r--thirdparty/openxr/include/openxr/openxr_platform.h19
-rw-r--r--thirdparty/openxr/include/openxr/openxr_reflection.h357
-rw-r--r--thirdparty/openxr/src/common/xr_linear.h6
-rw-r--r--thirdparty/openxr/src/xr_generated_dispatch_table.c30
-rw-r--r--thirdparty/openxr/src/xr_generated_dispatch_table.h30
-rw-r--r--thirdparty/vulkan/vk_mem_alloc.h150
778 files changed, 106364 insertions, 157052 deletions
diff --git a/.github/workflows/linux_builds.yml b/.github/workflows/linux_builds.yml
index 338278f461..3df4409041 100644
--- a/.github/workflows/linux_builds.yml
+++ b/.github/workflows/linux_builds.yml
@@ -28,6 +28,7 @@ jobs:
doc-test: true
bin: "./bin/godot.linuxbsd.opt.tools.64.mono"
build-mono: true
+ proj-conv: true
artifact: true
- name: Editor with doubles and GCC sanitizers (target=debug, tools=yes, float=64, tests=yes, use_asan=yes, use_ubsan=yes)
@@ -147,6 +148,17 @@ jobs:
curr="$(pwd)/libvk_swiftshader.so"
sed -i "s|PATH_TO_CHANGE|$curr|" vk_swiftshader_icd.json
+ # Test 3.x -> 4.x project converter
+ - name: Test project converter
+ if: ${{ matrix.proj-conv }}
+ run: |
+ mkdir converter_test
+ cd converter_test
+ touch project.godot
+ ../${{ matrix.bin }} --headless --audio-driver Dummy --validate-conversion-3to4
+ cd ..
+ rm converter_test -rf
+
# Download and extract zip archive with project, folder is renamed to be able to easy change used project
- name: Download test project
if: ${{ matrix.proj-test }}
diff --git a/.github/workflows/static_checks.yml b/.github/workflows/static_checks.yml
index 5531509007..d7d07b7022 100644
--- a/.github/workflows/static_checks.yml
+++ b/.github/workflows/static_checks.yml
@@ -54,4 +54,4 @@ jobs:
- name: Documentation checks
run: |
- doc/tools/make_rst.py --dry-run doc/classes modules
+ doc/tools/make_rst.py --dry-run --color doc/classes modules
diff --git a/.mailmap b/.mailmap
index b316b1e808..779c58460e 100644
--- a/.mailmap
+++ b/.mailmap
@@ -36,6 +36,7 @@ Eveline Jarosz <marqin.pl@gmail.com> <marqin.pl+git@gmail.com>
Fabian <supagu@gmail.com>
Ferenc Arn <tagcup@yahoo.com>
Ferenc Arn <tagcup@yahoo.com> <tagcup@users.noreply.github.com>
+FireForge <67974470+fire-forge@users.noreply.github.com> <isaacr.7.2005@gmail.com>
foxydevloper <12120644+foxydevloper@users.noreply.github.com>
Fredia Huya-Kouadio <fhuyakou@gmail.com>
Fredia Huya-Kouadio <fhuyakou@gmail.com> <fhuya@google.com>
@@ -56,6 +57,7 @@ Ignacio Etcheverry <ignalfonsore@gmail.com> <neikeq@users.noreply.github.com>
Ilaria Cislaghi <cislaghi.ilaria@gmail.com>
Ilaria Cislaghi <cislaghi.ilaria@gmail.com> <ilaria.cislaghi@simedis.com>
Indah Sylvia <ISylvox@yahoo.com>
+iwek <miwanczuk7@gmail.com>
J08nY <johny@neuromancer.sk> <jancar.jj@gmail.com>
J08nY <johny@neuromancer.sk> <J08nY@users.noreply.github.com>
Jake Young <young9003@gmail.com>
@@ -143,6 +145,7 @@ Wilhem Barbier <nounoursheureux@openmailbox.org> <schtroumps31@gmail.com>
Will Nations <willnationsdev@gmail.com>
yg2f <yoann@terminajones.com>
Yuri Sizov <yuris@humnom.net> <pycbouh@users.noreply.github.com>
+Yuri Sizov <yuris@humnom.net> <yaschik4ilicha@gmail.com>
Zae <zaevi@live.com>
Zak Stam <zakscomputers@hotmail.com>
Zher Huei Lee <lee.zh.92@gmail.com>
diff --git a/AUTHORS.md b/AUTHORS.md
index 4d52e3d1e0..36be7c4501 100644
--- a/AUTHORS.md
+++ b/AUTHORS.md
@@ -60,6 +60,7 @@ name is available.
Carter Anderson (cart)
Chris Bradfield (cbscribe)
Clay John (clayjohn)
+ ConteZero
Dana Olson (adolson)
Daniel J. Ramirez (djrm)
Daniel Rakos (aqnuep)
@@ -86,6 +87,7 @@ name is available.
Fabio Alessandrelli (Faless)
fabriceci
Ferenc Arn (tagcup)
+ FireForge (fire-forge)
follower
foxydevloper
François Belair (Razoric480)
@@ -109,6 +111,7 @@ name is available.
Ian Bishop (ianb96)
Ibrahn Sahir (ibrahn)
Ignacio Etcheverry (neikeq)
+ Igor Kordiukiewicz (IgorKordiukiewicz)
Ilaria Cislaghi (QbieShay)
Indah Sylvia (ISylvox)
J08nY
@@ -150,6 +153,7 @@ name is available.
Mariano Javier Suligoy (MarianoGnu)
Mario Schlack (hurikhan)
Marios Staikopoulos (marstaik)
+ Mark Riedesel (klowner)
Markus Sauermann (Sauermann)
Martin Capitanio (capnm)
Martin Liška (marxin)
@@ -163,6 +167,7 @@ name is available.
merumelu
Meru Patel (Janglee123)
Michael Alexsander (YeldhamDev)
+ Michał Iwańczuk (iwek7)
MichiRecRoom (LikeLakers2)
Morris "Tabor" Arroad (mortarroad)
mrezai
@@ -182,6 +187,7 @@ name is available.
Paul Batty (Paulb23)
Paul Joannon (paulloz)
Paul Trojahn (ptrojahn)
+ Paweł Fertyk (pfertyk)
Pawel Kowal (pkowal1982)
Pawel Lampe (Scony)
Pedro J. Estébanez (RandomShaper)
@@ -212,6 +218,7 @@ name is available.
Shiqing (kawa-yoiko)
Silc 'Tokage' Renew (TokageItLab)
Simon Wenner (swenner)
+ smix8
Stijn Hinlopen (hinlopen)
Swarnim Arun (minraws)
TC (floppyhammer)
@@ -234,7 +241,7 @@ name is available.
Xavier Cho (mysticfall)
yg2f (SuperUserNameMan)
Yuri Rubinsky (Chaosus)
- Yuri Sizov (pycbouh)
+ Yuri Sizov (YuriSizov)
Zae Chao (zaevi)
Zak Stam (zaksnet)
Zher Huei Lee (leezh)
diff --git a/COPYRIGHT.txt b/COPYRIGHT.txt
index 06a5643dd3..3f4981b7fb 100644
--- a/COPYRIGHT.txt
+++ b/COPYRIGHT.txt
@@ -131,6 +131,11 @@ Comment: Intel ASSAO and related files
Copyright: 2016, Intel Corporation
License: Expat
+Files: ./servers/rendering/renderer_rd/shaders/taa_resolve.glsl
+Comment: Temporal Anti-Aliasing resolve implementation
+Copyright: 2016, Panos Karabelas
+License: Expat
+
Files: ./thirdparty/amd-fsr/
Comment: AMD FidelityFX Super Resolution
Copyright: 2021, Advanced Micro Devices, Inc.
@@ -174,7 +179,7 @@ License: Expat
Files: ./thirdparty/etcpak/
Comment: etcpak
-Copyright: 2013-2021, Bartosz Taudul
+Copyright: 2013-2022, Bartosz Taudul
License: BSD-3-clause
Files: ./thirdparty/fonts/DroidSans*.woff2
@@ -321,6 +326,12 @@ Comment: Tangent Space Normal Maps implementation
Copyright: 2011, Morten S. Mikkelsen
License: Zlib
+Files: ./thirdparty/misc/ok_color.h
+ ./thirdparty/misc/ok_color_shader.h
+Comment: OK Lab color space
+Copyright: 2021, Björn Ottosson
+License: Expat
+
Files: ./thirdparty/noise/FastNoiseLite.h
Comment: FastNoise Lite
Copyright: 2020, Jordan Peck and contributors
diff --git a/DONORS.md b/DONORS.md
index 36fa7a39ad..a41cb750bd 100644
--- a/DONORS.md
+++ b/DONORS.md
@@ -26,7 +26,6 @@ generous deed immortalized in the next stable release of Godot Engine.
## Bronze sponsors
- Ben Nolan
Brandon Lamb
Bri
Daniel Kaplan
@@ -36,6 +35,7 @@ generous deed immortalized in the next stable release of Godot Engine.
Kitcat490
Kyle Szklenski
Maxim Karsten
+ Nik Rudenko
Moonwards <https://www.moonwards.com>
TrampolineTales <https://trampolinetales.com>
@@ -46,6 +46,7 @@ generous deed immortalized in the next stable release of Godot Engine.
Andrew Bowen
Andrew Dunai
anti666
+ Chris Bolton
Christian Baune
Christopher Montesano
Christopher Shifflett
@@ -53,15 +54,10 @@ generous deed immortalized in the next stable release of Godot Engine.
Darrin Massena
David Mydlarz
Digital Grows
- Dov Zimring
Edward Flick
Florian Neumann
- Gamechuck
GameDev.net
Hein-Pieter van Braam
- Jasper Brooks
- Jeffery Chiu
- John G Gentzel
Jonah Stich
Justin Arnold
Justo Delgado Baudí
@@ -105,10 +101,9 @@ generous deed immortalized in the next stable release of Godot Engine.
David Snopek
Ed Morley
First Last
- Florian Rämisch
Hunter Jones
Jacobus Dens
- Jakub Grzesik
+ Jasper Brooks
Javier Roman
Joan Fons
Jonathan Wright
@@ -131,6 +126,7 @@ generous deed immortalized in the next stable release of Godot Engine.
Sarksus
Sean
Sergey
+ Sergio Airaldi
Sofox
Stephan Kessler
Stephen Molyneaux
@@ -150,7 +146,6 @@ generous deed immortalized in the next stable release of Godot Engine.
Alexander J Maynard
Alex Khayrullin
alice gambrell
- Amar Šahinović
Andrew Cunningham
Andrew Farr
Andriy
@@ -158,8 +153,12 @@ generous deed immortalized in the next stable release of Godot Engine.
Antoni Batchelli
Arch Henderson III
Arthur S. Muszynski
+ BasicIncomePlz
+ BoomHorseHat
+ BrizzleBrip
c64cosmin
Cameron Connolly
+ Charles Gray
Charlie Whitfield
Chase Taranto
Chris Petrich
@@ -171,20 +170,15 @@ generous deed immortalized in the next stable release of Godot Engine.
CzechBlueBear
D
DagobertDick
- dan didenko
- Daniel
Daniel Hernández Alcojor
Daniel Tebbutt
Darrian Little
- Daylon
+ David Thomason
+ Daylon J Williams
Dennis Belfrage
- Dev To be curious
- Dima Fedotov
+ Dev To Be curious
Dimitri Nüscheler
- Dmitriy Khudorozhkov
Donn Eddy
- Douglas Hammond
- EerieExpanse
Eric Brand
Eugenio Hugo Salgüero Jáñez
EXUREI
@@ -192,13 +186,12 @@ generous deed immortalized in the next stable release of Godot Engine.
flesk
foxydevloper
Fransiska
- Freeman
Gabrielius Vaiškūnas
Gary Hulst
- gavlig
Geoffroy Warin
- GGGames.org
+ George Venizelos
gisora
+ GlassBrick
GrayDwarf
Guilherme Felipe de C. G. da Silva
Harry Tumber
@@ -208,6 +201,7 @@ generous deed immortalized in the next stable release of Godot Engine.
Hu Hund
Hunter Barabas
HurrieCrane
+ Jaap Marsman
Jamal Bencharki
James Couzens
Jan Sælid
@@ -219,6 +213,7 @@ generous deed immortalized in the next stable release of Godot Engine.
Jesús Chicharro
Joel Fivat
Johnathan Kupferer
+ John Stinson
Josef Stumpfegger
Jose Malheiro
Jose Manuel Muñoz Perez
@@ -227,23 +222,21 @@ generous deed immortalized in the next stable release of Godot Engine.
Joshua Lesperance
Juan Velandia
Judd
- Julián Absatz
Julian Todd
Juraj Móza
JUSTIN CARROLL
Kelteseth
+ Kevan
+ Khora
kickmaniac
kinfox
- Kos
Lakshaya Goel
Laszlo Kiss
leetNightshade
Leo Fidel R Liban
Liam Smyth
LoparPanda
- LordZaruflex
Luca Vazzano
- Luke
MadScientistCarl
Marcus Dobler
Marcus Richter
@@ -254,7 +247,6 @@ generous deed immortalized in the next stable release of Godot Engine.
Martin Soucek
matt
Matt Greene
- Matthew Hall
Max Kryschi
medecau
Michael Dürwald
@@ -271,11 +263,13 @@ generous deed immortalized in the next stable release of Godot Engine.
Paul Hocker
Paul Von Zimmerman
Pavel Kotlyar
+ Pedro
Pete Goodwin
Peter Richmond
Petr Malac
PhaineOfCatz
Rafał Michno
+ RAMupgrade
Raymond Harris
Reilt
Rene Tailleur
@@ -283,7 +277,6 @@ generous deed immortalized in the next stable release of Godot Engine.
Rickard Hermanson
Rob
Robert McDermott
- Robert Willes
Rob McInroy
Rocknight Studios
RodZilla
@@ -293,6 +286,7 @@ generous deed immortalized in the next stable release of Godot Engine.
Russ
Ryan Breaker
Ryan Heath
+ Ryan Miller
Ryan Scott
Samuel Hummerstone
Samuel Judd
@@ -307,17 +301,15 @@ generous deed immortalized in the next stable release of Godot Engine.
Song Junwoo
spacechase0
Stephan Hennion
- Stephen Brown
Steven Landow
Stoned Xander
- Super Izzo
- Sven F.
- Thomas Bjarnelöf
+ Teslatech
Thomas Kurz
- Timothy van der Valk
+ Tim Suess
Tobias Bocanegra
Tobias Raggl
Todd Smith
+ Tom Glenn
Tom Wor
Torbulous
toto bibi
@@ -331,7 +323,6 @@ generous deed immortalized in the next stable release of Godot Engine.
xzibiting
Yifan Lai
Yuancheng Zhang
- Ðртём Равбецкий
## Silver donors
@@ -344,12 +335,14 @@ generous deed immortalized in the next stable release of Godot Engine.
Adam McCurdy
Adam N Webber
Adam Smeltzer
- Adam Szymański
Adisibio
+ Adriano Orioli
Adrien de Pierres
Agustinus Arya
Aidan O'Flannagain
Aki Mimoto
+ Akio Yamazaki
+ Alaksandr Suša
Alan Beauchamp
Albert Gyulgazyan
Alberto Salazar Muñoz
@@ -362,9 +355,9 @@ generous deed immortalized in the next stable release of Godot Engine.
Alex Chan
Alex Clavelle
alex raeside
- Alex (Well Done Games)
Allan Davis
Allen Schade
+ Amar Šahinović
Andre Altmueller
Andre Stackhouse
Andrew Groot
@@ -377,13 +370,15 @@ generous deed immortalized in the next stable release of Godot Engine.
Antti Vesanen
Arch Toasty
Arda Erol
- Arseniy M
Arthur Brainville
Arturo Rosales
Ashley Claymore
Aubrey Falconer
Auré Franky
aurelien condomines
+ Austin Finlinson
+ Austin Miller
+ Azar Gurbanov
AzulCrescent
b110110
Balázs Batári
@@ -398,14 +393,10 @@ generous deed immortalized in the next stable release of Godot Engine.
bitbrain
Bjarne Voigtländer
Black Block
- Blair Allen
Blunderjack
- Bobby CC Wong
Brad Harms
Bram
- Brandon
- Brian Klein
- Brodie Fairhall
+ Brian Ford
Bronson Zgeb
Burney Waring
Caleb Gartner
@@ -418,24 +409,26 @@ generous deed immortalized in the next stable release of Godot Engine.
Cassidy James
Chad Steadman
Checkpoint Charlie
- ChrBohm
Chris Jagusch
Chris Langford
+ Chris Ridenour
Christian Mauduit
Christian Winter
Christoffer Dahlblom
Christophe Gagnier
Christopher Chin
Christoph Woinke
- Codecat
+ ClicheChloe
Cody Parker
Conall O
Conner Lane
Corchari
Corey W
Craig Post
+ CT
+ Cullen Canejo
Dakota Watkins
- Daniel Cheney
+ Danielle Cheney
Daren Scot Wilson
Dave Walker
David Baker
@@ -444,7 +437,6 @@ generous deed immortalized in the next stable release of Godot Engine.
David Maziarka
David Rapisarda
Devin Carraway
- Diego Pereira
Dimitri Roche
Dmytro Korchynskyi
Dominik Wetzel
@@ -459,8 +451,10 @@ generous deed immortalized in the next stable release of Godot Engine.
Edward Herbert
Edward Swartz
Egon Elbre
+ eiki kanou
Elgenzay
Elias Nykrem
+ Elijah Anderson
Emerson MX
Ephemeral
Eric Stokes
@@ -477,15 +471,14 @@ generous deed immortalized in the next stable release of Godot Engine.
Felix Bohmann
Fer DC
Filip Lundby
- Francisco Garcia Florez
Frank
- freakazoid
FrostMarble
Game Endeavor
Garett Bass
Gary Thomas
gebba
George Marques
+ Gon Shibayama
Green Fox
Greg Lincoln
Greg Olson
@@ -496,18 +489,15 @@ generous deed immortalized in the next stable release of Godot Engine.
Guldoman
Guo Hongci
gurehamu
- Hal A
Haplo
Hayden Foley
Heribert Hirth
- Hinken
Ian Richard Kunert
Ian Williams
- Idilio Alfaro
IndustrialRobot
- Ivan Nikolaev
+ Inki Crow
iveks
- izzy neuhaus
+ izzy kestrel
Jackson Harmer
Jacob D
Jaguar
@@ -523,7 +513,6 @@ generous deed immortalized in the next stable release of Godot Engine.
Jamie Massey
Janis Skuja
Jan Vetulani
- Japortie
JARKKO PARVIAINEN
Jason Bolton
Jason Evans
@@ -536,10 +525,8 @@ generous deed immortalized in the next stable release of Godot Engine.
Jim Engstrand
Joe Hurdle
Joe Klemmer
- Joel Höglund
John Anders Stav
John Bruce
- John Gabriel
Jonas
Jonas Arndt
Jonas Bernemann
@@ -550,7 +537,6 @@ generous deed immortalized in the next stable release of Godot Engine.
Jonathan Ellis
Jonathan G
Jonathan Turner
- Jon Bonazza
Jon Sully
Jordan West
Jordy Goodridge
@@ -562,22 +548,19 @@ generous deed immortalized in the next stable release of Godot Engine.
Josh Taylor
Joshua Heidrich
Joshua Segall
- jromkjrom
Juanfran
Juan Maggi
Juan Uys
Jueast
Julian le Roux
Julian Murgia
- June Little
Justin Hamilton
- Justin Oaksford
Justin Spedding
KaDokta
Karol Wojtasiuk (Drakonter)
Katsuomi Kobayashi
Keedong Park
- keeganstoybox
+ Keegan Scott
Keinan Powers
Keith Bradner
Kenji Kawabata
@@ -585,43 +568,43 @@ generous deed immortalized in the next stable release of Godot Engine.
Kent Jofur
Kerotasma
Ketafuki
- Kiri Jolly
+ killaQueen
Kodera Software
Kolandrious
Kquona
- Krishna Nadoor
Kristian Nygaard Jensen
- KR McGinley
- Kronarq
KsyTek Games
kycho
Kyle Burnett
Kyle Jacobs
- Kyuppin
La diagonale du poulpe
Lasse le Dous
Laurent CHEA
Laurent Dethoor
Laxman Pradhan
Leland Vakarian
+ Lemin
LEMMiNO
+ Leonardo Baumle
Leonardo Dimano
+ Levi Lindsey
Linus Lind Lundgren
Logan Apple
Ludovic DELVAL
Luigi Renna
Luis Gaemperle
+ Luis M
Luke Kasz
- LunaticInAHat
Major Haul
Malcolm
Marco Lardelli
+ Marcos Heitor Carvalho
+ Markie Music
Mark Jad
Mark Malone
Markus Martin
Markus Michael Egger
Markus Strompen
- Martin FIbik
Martin Holas
Martin Linklater
Martin Liška
@@ -629,33 +612,34 @@ generous deed immortalized in the next stable release of Godot Engine.
Martin Zabinski
Matt Edwards
Matthew Booe
- Matt Sylvia
Maverick
- Max Fiedler
Maxime Blade
Maxime Santerre
Maxwell
+ McStuffings
+ meinkush
Melissa Mears
Merlyn Morgan-Graham
Metal Demon 2000
mhilbrunner
Michael
- Michael Bruce-Lockhart
Michael Haney
Michael Morrison
- Michael Toporkov
Michał Skwarek
Mikael Nordenberg
+ Mikail Freitas
Mikayla
Mike Birkhead
Mike Copley
- Mitchell
+ Miss
Mitchell J. Wagner
+ Mitchell White
MJacred
ModularMind
Molinghu
Molly Jameson
MoltenGears
+ Moowool
moulefrite
MrAZIE
Mrjemandem
@@ -673,46 +657,46 @@ generous deed immortalized in the next stable release of Godot Engine.
Niclas Eriksen
Nicolas Goll-Perrier
Nicolas Rosset
+ Nicolò Brigadoi Calamari
Nils Nordmark
Nima Farid
Noel Billig
Noesis
- oceoh
Okatima
Oleg Reva
Oliver Ambrose
oscar1000108
Oscar Domingo
+ Panagiotis Xynos
Pascal
Patrick Indermühle
Patrickm
Patrick Nafarrete
Patrick Wuttke
- Paul E Hansen
Paul Gieske
Paweł Kowal
PaweÅ‚ Åyczkowski
Peter Höglund
- Philip Cohoe
Philip Ludington (MrPhil)
+ Philip Woods
Pierre Caye
- pingudroid
+ Pixel Archipel
pj
Point08
Preethi Vaidyanathan
PsycHead
+ Puntigames
pwab
- RabidTunes
RackBar Dingum
Rafa Laguna
Raffaele Aramo
Ragnar Pettersson
Rainer Amler
- Rami Hanano
Rammeow
- RAMupgrade
+ Recep Karademir
red1939
Remi Rampin
+ Remtaine
Reneator
René Habermann
Riccardo Marini
@@ -733,20 +717,18 @@ generous deed immortalized in the next stable release of Godot Engine.
Roy Scayged
Ryan Groom
Rykk
- Sam Caulfield
Sam Edson
Sammy Fischer
Sangeeth Pavithran
schroedinger's possum
Scott Longley
- Sean Wall
+ Sean Dee
Sebastian Michailidis
SeongWan Kim
Sessamekesh
SeungJong k
Shaidak
Shane
- Shane Abraham
Shane Sicienski
Shane Spoor
Silver1063
@@ -764,6 +746,7 @@ generous deed immortalized in the next stable release of Godot Engine.
Soheib El-Harrache
Solene Waked
Sophie Winter
+ Squidgy
Squirrel
Stéphane Roussel
Stephen Rice
@@ -791,7 +774,6 @@ generous deed immortalized in the next stable release of Godot Engine.
Tim Gleason
Tim Klein
Timothy B. MacDonald
- tinyBigGAMES LLC
Title Plinsut
TMoney
Toadile
@@ -804,11 +786,12 @@ generous deed immortalized in the next stable release of Godot Engine.
Travis O'Brien
Trent Skinner
tril zerobyte
- Troy Bonneau
Tryggve Sollid
Turgut Temucin
+ tweedle
Tycho
Tyler Stafos
+ Ukko K.
UltyX
Uther
v01tech
@@ -825,15 +808,12 @@ generous deed immortalized in the next stable release of Godot Engine.
William Bodin
William Edwards
William F Siqueira
- William Hogben
Woonki Moon
Wyatt Goodin
- xenomat
yakcyll
Yan Shi
Yegor Smirnov
Zach H.
- Zak Stephens
Zher Huei Lee
蕭惟å…
è²´å® å°æ¾
diff --git a/core/config/project_settings.cpp b/core/config/project_settings.cpp
index ff5ff83bf8..7145e628c1 100644
--- a/core/config/project_settings.cpp
+++ b/core/config/project_settings.cpp
@@ -41,7 +41,6 @@
#include "core/os/keyboard.h"
#include "core/variant/variant_parser.h"
#include "core/version.h"
-
#include "modules/modules_enabled.gen.h" // For mono.
const String ProjectSettings::PROJECT_DATA_DIR_NAME_SUFFIX = "godot";
@@ -205,6 +204,11 @@ void ProjectSettings::set_as_basic(const String &p_name, bool p_basic) {
props[p_name].basic = p_basic;
}
+void ProjectSettings::set_as_internal(const String &p_name, bool p_internal) {
+ ERR_FAIL_COND_MSG(!props.has(p_name), "Request for nonexistent project setting: " + p_name + ".");
+ props[p_name].internal = p_internal;
+}
+
void ProjectSettings::set_ignore_value_in_docs(const String &p_name, bool p_ignore) {
ERR_FAIL_COND_MSG(!props.has(p_name), "Request for nonexistent project setting: " + p_name + ".");
#ifdef DEBUG_METHODS_ENABLED
@@ -344,7 +348,7 @@ void ProjectSettings::_get_property_list(List<PropertyInfo> *p_list) const {
vc.name = E.key;
vc.order = v->order;
vc.type = v->variant.get_type();
- if (vc.name.begins_with("input/") || vc.name.begins_with("import/") || vc.name.begins_with("export/") || vc.name.begins_with("/remap") || vc.name.begins_with("/locale") || vc.name.begins_with("/autoload")) {
+ if (v->internal || vc.name.begins_with("input/") || vc.name.begins_with("importer_defaults/") || vc.name.begins_with("import/") || vc.name.begins_with("autoload/") || vc.name.begins_with("editor_plugins/") || vc.name.begins_with("shader_globals/")) {
vc.flags = PROPERTY_USAGE_STORAGE;
} else {
vc.flags = PROPERTY_USAGE_EDITOR | PROPERTY_USAGE_STORAGE;
@@ -890,7 +894,7 @@ Error ProjectSettings::_save_custom_bnd(const String &p_file) { // add other par
Error ProjectSettings::save_custom(const String &p_path, const CustomMap &p_custom, const Vector<String> &p_custom_features, bool p_merge_with_current) {
ERR_FAIL_COND_V_MSG(p_path.is_empty(), ERR_INVALID_PARAMETER, "Project settings save path cannot be empty.");
- PackedStringArray project_features = has_setting("application/config/features") ? (PackedStringArray)get_setting("application/config/features") : PackedStringArray();
+ PackedStringArray project_features = get_setting("application/config/features");
// If there is no feature list currently present, force one to generate.
if (project_features.is_empty()) {
project_features = ProjectSettings::get_required_features();
@@ -994,7 +998,7 @@ Error ProjectSettings::save_custom(const String &p_path, const CustomMap &p_cust
}
}
-Variant _GLOBAL_DEF(const String &p_var, const Variant &p_default, bool p_restart_if_changed, bool p_ignore_value_in_docs, bool p_basic) {
+Variant _GLOBAL_DEF(const String &p_var, const Variant &p_default, bool p_restart_if_changed, bool p_ignore_value_in_docs, bool p_basic, bool p_internal) {
Variant ret;
if (!ProjectSettings::get_singleton()->has_setting(p_var)) {
ProjectSettings::get_singleton()->set(p_var, p_default);
@@ -1006,6 +1010,7 @@ Variant _GLOBAL_DEF(const String &p_var, const Variant &p_default, bool p_restar
ProjectSettings::get_singleton()->set_as_basic(p_var, p_basic);
ProjectSettings::get_singleton()->set_restart_if_changed(p_var, p_restart_if_changed);
ProjectSettings::get_singleton()->set_ignore_value_in_docs(p_var, p_ignore_value_in_docs);
+ ProjectSettings::get_singleton()->set_as_internal(p_var, p_internal);
return ret;
}
@@ -1151,7 +1156,7 @@ void ProjectSettings::_add_builtin_input_map() {
action["events"] = events;
String action_name = "input/" + E.key;
- GLOBAL_DEF(action_name, action);
+ GLOBAL_DEF_INTERNAL(action_name, action);
input_presets.push_back(action_name);
}
}
@@ -1194,6 +1199,10 @@ ProjectSettings::ProjectSettings() {
GLOBAL_DEF_BASIC("audio/buses/default_bus_layout", "res://default_bus_layout.tres");
custom_prop_info["audio/buses/default_bus_layout"] = PropertyInfo(Variant::STRING, "audio/buses/default_bus_layout", PROPERTY_HINT_FILE, "*.tres");
+ GLOBAL_DEF_RST("audio/general/2d_panning_strength", 1.0f);
+ custom_prop_info["audio/general/2d_panning_strength"] = PropertyInfo(Variant::FLOAT, "audio/general/2d_panning_strength", PROPERTY_HINT_RANGE, "0,4,0.01");
+ GLOBAL_DEF_RST("audio/general/3d_panning_strength", 1.0f);
+ custom_prop_info["audio/general/3d_panning_strength"] = PropertyInfo(Variant::FLOAT, "audio/general/3d_panning_strength", PROPERTY_HINT_RANGE, "0,4,0.01");
PackedStringArray extensions = PackedStringArray();
extensions.push_back("gd");
@@ -1235,6 +1244,11 @@ ProjectSettings::ProjectSettings() {
GLOBAL_DEF("compression/formats/gzip/compression_level", Compression::gzip_level);
custom_prop_info["compression/formats/gzip/compression_level"] = PropertyInfo(Variant::INT, "compression/formats/gzip/compression_level", PROPERTY_HINT_RANGE, "-1,9,1");
+
+ // These properties will not show up in the dialog nor in the documentation. If you want to exclude whole groups, see _get_property_list() method.
+ GLOBAL_DEF_INTERNAL("application/config/features", PackedStringArray());
+ GLOBAL_DEF_INTERNAL("internationalization/locale/translation_remaps", PackedStringArray());
+ GLOBAL_DEF_INTERNAL("internationalization/locale/translations", PackedStringArray());
}
ProjectSettings::~ProjectSettings() {
diff --git a/core/config/project_settings.h b/core/config/project_settings.h
index d9b1a9b81b..c3992a4db2 100644
--- a/core/config/project_settings.h
+++ b/core/config/project_settings.h
@@ -62,6 +62,7 @@ protected:
int order = 0;
bool persist = false;
bool basic = false;
+ bool internal = false;
Variant variant;
Variant initial;
bool hide_from_editor = false;
@@ -141,6 +142,7 @@ public:
void set_initial_value(const String &p_name, const Variant &p_value);
void set_as_basic(const String &p_name, bool p_basic);
+ void set_as_internal(const String &p_name, bool p_internal);
void set_restart_if_changed(const String &p_name, bool p_restart);
void set_ignore_value_in_docs(const String &p_name, bool p_ignore);
bool get_ignore_value_in_docs(const String &p_name) const;
@@ -191,8 +193,8 @@ public:
~ProjectSettings();
};
-//not a macro any longer
-Variant _GLOBAL_DEF(const String &p_var, const Variant &p_default, bool p_restart_if_changed = false, bool p_ignore_value_in_docs = false, bool p_basic = false);
+// Not a macro any longer.
+Variant _GLOBAL_DEF(const String &p_var, const Variant &p_default, bool p_restart_if_changed = false, bool p_ignore_value_in_docs = false, bool p_basic = false, bool p_internal = false);
#define GLOBAL_DEF(m_var, m_value) _GLOBAL_DEF(m_var, m_value)
#define GLOBAL_DEF_RST(m_var, m_value) _GLOBAL_DEF(m_var, m_value, true)
#define GLOBAL_DEF_NOVAL(m_var, m_value) _GLOBAL_DEF(m_var, m_value, false, true)
@@ -204,4 +206,6 @@ Variant _GLOBAL_DEF(const String &p_var, const Variant &p_default, bool p_restar
#define GLOBAL_DEF_NOVAL_BASIC(m_var, m_value) _GLOBAL_DEF(m_var, m_value, false, true, true)
#define GLOBAL_DEF_RST_NOVAL_BASIC(m_var, m_value) _GLOBAL_DEF(m_var, m_value, true, true, true)
+#define GLOBAL_DEF_INTERNAL(m_var, m_value) _GLOBAL_DEF(m_var, m_value, false, false, false, true)
+
#endif // PROJECT_SETTINGS_H
diff --git a/core/core_bind.cpp b/core/core_bind.cpp
index 194c7fdefd..fc91f83462 100644
--- a/core/core_bind.cpp
+++ b/core/core_bind.cpp
@@ -1820,60 +1820,25 @@ void Thread::_start_func(void *ud) {
ERR_FAIL_MSG(vformat("Could not call function '%s' on previously freed instance to start thread %s.", t->target_callable.get_method(), t->get_id()));
}
- Callable::CallError ce;
- const Variant *arg[1] = { &t->userdata };
- int argc = 0;
- if (arg[0]->get_type() != Variant::NIL) {
- // Just pass to the target function whatever came as user data
- argc = 1;
- } else {
- // There are two cases of null user data:
- // a) The target function has zero parameters and the caller is just honoring that.
- // b) The target function has at least one parameter with no default and the caller is
- // leveraging the fact that user data defaults to null in Thread.start().
- // We care about the case of more than one parameter because, even if a thread
- // function can have one at most, out mindset here is to do our best with the
- // only/first one and let the call handle any other error conditions, like too
- // much arguments.
- // We must check if we are in case b).
- int target_param_count = 0;
- int target_default_arg_count = 0;
- Ref<Script> script = target_instance->get_script();
- if (script.is_valid()) {
- MethodInfo mi = script->get_method_info(t->target_callable.get_method());
- target_param_count = mi.arguments.size();
- target_default_arg_count = mi.default_arguments.size();
- } else {
- MethodBind *method = ClassDB::get_method(target_instance->get_class_name(), t->target_callable.get_method());
- if (method) {
- target_param_count = method->get_argument_count();
- target_default_arg_count = method->get_default_argument_count();
- }
- }
- if (target_param_count >= 1 && target_default_arg_count < target_param_count) {
- argc = 1;
- }
- }
-
::Thread::set_name(t->target_callable.get_method());
- t->target_callable.call(arg, argc, t->ret, ce);
+ Callable::CallError ce;
+ t->target_callable.call(nullptr, 0, t->ret, ce);
if (ce.error != Callable::CallError::CALL_OK) {
t->running.clear();
- ERR_FAIL_MSG("Could not call function '" + t->target_callable.get_method().operator String() + "' to start thread " + t->get_id() + ": " + Variant::get_callable_error_text(t->target_callable, arg, argc, ce) + ".");
+ ERR_FAIL_MSG("Could not call function '" + t->target_callable.get_method().operator String() + "' to start thread " + t->get_id() + ": " + Variant::get_callable_error_text(t->target_callable, nullptr, 0, ce) + ".");
}
t->running.clear();
}
-Error Thread::start(const Callable &p_callable, const Variant &p_userdata, Priority p_priority) {
+Error Thread::start(const Callable &p_callable, Priority p_priority) {
ERR_FAIL_COND_V_MSG(is_started(), ERR_ALREADY_IN_USE, "Thread already started.");
ERR_FAIL_COND_V(!p_callable.is_valid(), ERR_INVALID_PARAMETER);
ERR_FAIL_INDEX_V(p_priority, PRIORITY_MAX, ERR_INVALID_PARAMETER);
ret = Variant();
target_callable = p_callable;
- userdata = p_userdata;
running.set();
Ref<Thread> *ud = memnew(Ref<Thread>(this));
@@ -1902,13 +1867,12 @@ Variant Thread::wait_to_finish() {
thread.wait_to_finish();
Variant r = ret;
target_callable = Callable();
- userdata = Variant();
return r;
}
void Thread::_bind_methods() {
- ClassDB::bind_method(D_METHOD("start", "callable", "userdata", "priority"), &Thread::start, DEFVAL(Variant()), DEFVAL(PRIORITY_NORMAL));
+ ClassDB::bind_method(D_METHOD("start", "callable", "priority"), &Thread::start, DEFVAL(PRIORITY_NORMAL));
ClassDB::bind_method(D_METHOD("get_id"), &Thread::get_id);
ClassDB::bind_method(D_METHOD("is_started"), &Thread::is_started);
ClassDB::bind_method(D_METHOD("is_alive"), &Thread::is_alive);
@@ -2076,9 +2040,9 @@ bool ClassDB::has_integer_constant(const StringName &p_class, const StringName &
return success;
}
-int ClassDB::get_integer_constant(const StringName &p_class, const StringName &p_name) const {
+int64_t ClassDB::get_integer_constant(const StringName &p_class, const StringName &p_name) const {
bool found;
- int c = ::ClassDB::get_integer_constant(p_class, p_name, &found);
+ int64_t c = ::ClassDB::get_integer_constant(p_class, p_name, &found);
ERR_FAIL_COND_V(!found, 0);
return c;
}
diff --git a/core/core_bind.h b/core/core_bind.h
index e4d15d5c9d..ec9bcdbc02 100644
--- a/core/core_bind.h
+++ b/core/core_bind.h
@@ -551,7 +551,6 @@ class Thread : public RefCounted {
protected:
Variant ret;
- Variant userdata;
SafeFlag running;
Callable target_callable;
::Thread thread;
@@ -566,7 +565,7 @@ public:
PRIORITY_MAX
};
- Error start(const Callable &p_callable, const Variant &p_userdata = Variant(), Priority p_priority = PRIORITY_NORMAL);
+ Error start(const Callable &p_callable, Priority p_priority = PRIORITY_NORMAL);
String get_id() const;
bool is_started() const;
bool is_alive() const;
@@ -604,7 +603,7 @@ public:
PackedStringArray get_integer_constant_list(const StringName &p_class, bool p_no_inheritance = false) const;
bool has_integer_constant(const StringName &p_class, const StringName &p_name) const;
- int get_integer_constant(const StringName &p_class, const StringName &p_name) const;
+ int64_t get_integer_constant(const StringName &p_class, const StringName &p_name) const;
bool has_enum(const StringName &p_class, const StringName &p_name, bool p_no_inheritance = false) const;
PackedStringArray get_enum_list(const StringName &p_class, bool p_no_inheritance = false) const;
diff --git a/core/core_constants.cpp b/core/core_constants.cpp
index ea1304f5ba..1f46223a1d 100644
--- a/core/core_constants.cpp
+++ b/core/core_constants.cpp
@@ -42,19 +42,19 @@ struct _CoreConstant {
bool ignore_value_in_docs = false;
#endif
const char *name = nullptr;
- int value = 0;
+ int64_t value = 0;
_CoreConstant() {}
#ifdef DEBUG_METHODS_ENABLED
- _CoreConstant(const StringName &p_enum_name, const char *p_name, int p_value, bool p_ignore_value_in_docs = false) :
+ _CoreConstant(const StringName &p_enum_name, const char *p_name, int64_t p_value, bool p_ignore_value_in_docs = false) :
enum_name(p_enum_name),
ignore_value_in_docs(p_ignore_value_in_docs),
name(p_name),
value(p_value) {
}
#else
- _CoreConstant(const char *p_name, int p_value) :
+ _CoreConstant(const char *p_name, int64_t p_value) :
name(p_name),
value(p_value) {
}
@@ -73,13 +73,13 @@ static Vector<_CoreConstant> _global_constants;
// This just binds enum classes as if they were regular enum constants.
#define BIND_CORE_ENUM_CLASS_CONSTANT(m_enum, m_prefix, m_member) \
- _global_constants.push_back(_CoreConstant(__constant_get_enum_name(m_enum::m_member, #m_prefix "_" #m_member), #m_prefix "_" #m_member, (int)m_enum::m_member));
+ _global_constants.push_back(_CoreConstant(__constant_get_enum_name(m_enum::m_member, #m_prefix "_" #m_member), #m_prefix "_" #m_member, (int64_t)m_enum::m_member));
#define BIND_CORE_ENUM_CLASS_CONSTANT_CUSTOM(m_enum, m_name, m_member) \
- _global_constants.push_back(_CoreConstant(__constant_get_enum_name(m_enum::m_member, #m_name), #m_name, (int)m_enum::m_member));
+ _global_constants.push_back(_CoreConstant(__constant_get_enum_name(m_enum::m_member, #m_name), #m_name, (int64_t)m_enum::m_member));
#define BIND_CORE_ENUM_CLASS_CONSTANT_NO_VAL(m_enum, m_prefix, m_member) \
- _global_constants.push_back(_CoreConstant(__constant_get_enum_name(m_enum::m_member, #m_prefix "_" #m_member), #m_prefix "_" #m_member, (int)m_enum::m_member, true));
+ _global_constants.push_back(_CoreConstant(__constant_get_enum_name(m_enum::m_member, #m_prefix "_" #m_member), #m_prefix "_" #m_member, (int64_t)m_enum::m_member, true));
#define BIND_CORE_ENUM_CONSTANT_CUSTOM(m_custom_name, m_constant) \
_global_constants.push_back(_CoreConstant(__constant_get_enum_name(m_constant, #m_constant), m_custom_name, m_constant));
@@ -103,13 +103,13 @@ static Vector<_CoreConstant> _global_constants;
// This just binds enum classes as if they were regular enum constants.
#define BIND_CORE_ENUM_CLASS_CONSTANT(m_enum, m_prefix, m_member) \
- _global_constants.push_back(_CoreConstant(#m_prefix "_" #m_member, (int)m_enum::m_member));
+ _global_constants.push_back(_CoreConstant(#m_prefix "_" #m_member, (int64_t)m_enum::m_member));
#define BIND_CORE_ENUM_CLASS_CONSTANT_CUSTOM(m_enum, m_name, m_member) \
- _global_constants.push_back(_CoreConstant(#m_name, (int)m_enum::m_member));
+ _global_constants.push_back(_CoreConstant(#m_name, (int64_t)m_enum::m_member));
#define BIND_CORE_ENUM_CLASS_CONSTANT_NO_VAL(m_enum, m_prefix, m_member) \
- _global_constants.push_back(_CoreConstant(#m_prefix "_" #m_member, (int)m_enum::m_member));
+ _global_constants.push_back(_CoreConstant(#m_prefix "_" #m_member, (int64_t)m_enum::m_member));
#define BIND_CORE_ENUM_CONSTANT_CUSTOM(m_custom_name, m_constant) \
_global_constants.push_back(_CoreConstant(m_custom_name, m_constant));
@@ -213,6 +213,25 @@ void register_global_constants() {
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F14);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F15);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F16);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F17);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F18);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F19);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F20);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F21);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F22);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F23);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F24);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F25);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F26);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F27);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F28);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F29);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F30);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F31);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F32);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F33);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F34);
+ BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, F35);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, KP_MULTIPLY);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, KP_DIVIDE);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, KP_SUBTRACT);
@@ -552,6 +571,7 @@ void register_global_constants() {
BIND_CORE_ENUM_CONSTANT(PROPERTY_HINT_ENUM_SUGGESTION);
BIND_CORE_ENUM_CONSTANT(PROPERTY_HINT_EXP_EASING);
BIND_CORE_ENUM_CONSTANT(PROPERTY_HINT_LENGTH);
+ BIND_CORE_ENUM_CONSTANT(PROPERTY_HINT_LINK);
BIND_CORE_ENUM_CONSTANT(PROPERTY_HINT_KEY_ACCEL);
BIND_CORE_ENUM_CONSTANT(PROPERTY_HINT_FLAGS);
@@ -587,6 +607,7 @@ void register_global_constants() {
BIND_CORE_ENUM_CONSTANT(PROPERTY_HINT_OBJECT_TOO_BIG);
BIND_CORE_ENUM_CONSTANT(PROPERTY_HINT_NODE_PATH_VALID_TYPES);
BIND_CORE_ENUM_CONSTANT(PROPERTY_HINT_SAVE_FILE);
+ BIND_CORE_ENUM_CONSTANT(PROPERTY_HINT_GLOBAL_SAVE_FILE);
BIND_CORE_ENUM_CONSTANT(PROPERTY_HINT_INT_IS_OBJECTID);
BIND_CORE_ENUM_CONSTANT(PROPERTY_HINT_INT_IS_POINTER);
BIND_CORE_ENUM_CONSTANT(PROPERTY_HINT_ARRAY_TYPE);
@@ -638,6 +659,7 @@ void register_global_constants() {
BIND_CORE_ENUM_CONSTANT(METHOD_FLAG_REVERSE);
BIND_CORE_ENUM_CONSTANT(METHOD_FLAG_VIRTUAL);
BIND_CORE_ENUM_CONSTANT(METHOD_FLAG_FROM_SCRIPT);
+ BIND_CORE_ENUM_CONSTANT(METHOD_FLAG_VARARG);
BIND_CORE_ENUM_CONSTANT(METHOD_FLAG_STATIC);
BIND_CORE_ENUM_CONSTANT(METHOD_FLAG_OBJECT_CORE);
BIND_CORE_ENUM_CONSTANT(METHOD_FLAGS_DEFAULT);
@@ -751,6 +773,6 @@ const char *CoreConstants::get_global_constant_name(int p_idx) {
return _global_constants[p_idx].name;
}
-int CoreConstants::get_global_constant_value(int p_idx) {
+int64_t CoreConstants::get_global_constant_value(int p_idx) {
return _global_constants[p_idx].value;
}
diff --git a/core/core_constants.h b/core/core_constants.h
index 9302c23959..d5b3b156b2 100644
--- a/core/core_constants.h
+++ b/core/core_constants.h
@@ -39,7 +39,7 @@ public:
static StringName get_global_constant_enum(int p_idx);
static bool get_ignore_value_in_docs(int p_idx);
static const char *get_global_constant_name(int p_idx);
- static int get_global_constant_value(int p_idx);
+ static int64_t get_global_constant_value(int p_idx);
};
#endif // GLOBAL_CONSTANTS_H
diff --git a/core/extension/extension_api_dump.cpp b/core/extension/extension_api_dump.cpp
index 9e8addf8aa..edd48cf9cd 100644
--- a/core/extension/extension_api_dump.cpp
+++ b/core/extension/extension_api_dump.cpp
@@ -334,14 +334,14 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
{
// Global enums and constants.
Array constants;
- HashMap<String, List<Pair<String, int>>> enum_list;
+ HashMap<String, List<Pair<String, int64_t>>> enum_list;
for (int i = 0; i < CoreConstants::get_global_constant_count(); i++) {
- int value = CoreConstants::get_global_constant_value(i);
+ int64_t value = CoreConstants::get_global_constant_value(i);
String enum_name = CoreConstants::get_global_constant_enum(i);
String name = CoreConstants::get_global_constant_name(i);
if (!enum_name.is_empty()) {
- enum_list[enum_name].push_back(Pair<String, int>(name, value));
+ enum_list[enum_name].push_back(Pair<String, int64_t>(name, value));
} else {
Dictionary d;
d["name"] = name;
@@ -353,11 +353,11 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
api_dump["global_constants"] = constants;
Array enums;
- for (const KeyValue<String, List<Pair<String, int>>> &E : enum_list) {
+ for (const KeyValue<String, List<Pair<String, int64_t>>> &E : enum_list) {
Dictionary d1;
d1["name"] = E.key;
Array values;
- for (const Pair<String, int> &F : E.value) {
+ for (const Pair<String, int64_t> &F : E.value) {
Dictionary d2;
d2["name"] = F.first;
d2["value"] = F.second;
diff --git a/core/extension/gdnative_interface.cpp b/core/extension/gdnative_interface.cpp
index a1d54f9c6d..58103e3af3 100644
--- a/core/extension/gdnative_interface.cpp
+++ b/core/extension/gdnative_interface.cpp
@@ -230,6 +230,16 @@ static void gdnative_variant_iter_get(const GDNativeVariantPtr p_self, GDNativeV
}
/// Variant functions.
+static GDNativeInt gdnative_variant_hash(const GDNativeVariantPtr p_self) {
+ const Variant *self = (const Variant *)p_self;
+ return self->hash();
+}
+
+static GDNativeInt gdnative_variant_recursive_hash(const GDNativeVariantPtr p_self, GDNativeInt p_recursion_count) {
+ const Variant *self = (const Variant *)p_self;
+ return self->recursive_hash(p_recursion_count);
+}
+
static GDNativeBool gdnative_variant_hash_compare(const GDNativeVariantPtr p_self, const GDNativeVariantPtr p_other) {
const Variant *self = (const Variant *)p_self;
const Variant *other = (const Variant *)p_other;
@@ -944,6 +954,8 @@ void gdnative_setup_interface(GDNativeInterface *p_interface) {
gdni.variant_iter_init = gdnative_variant_iter_init;
gdni.variant_iter_next = gdnative_variant_iter_next;
gdni.variant_iter_get = gdnative_variant_iter_get;
+ gdni.variant_hash = gdnative_variant_hash;
+ gdni.variant_recursive_hash = gdnative_variant_recursive_hash;
gdni.variant_hash_compare = gdnative_variant_hash_compare;
gdni.variant_booleanize = gdnative_variant_booleanize;
gdni.variant_sub = gdnative_variant_sub;
diff --git a/core/extension/gdnative_interface.h b/core/extension/gdnative_interface.h
index 98976b29f6..095c7983ee 100644
--- a/core/extension/gdnative_interface.h
+++ b/core/extension/gdnative_interface.h
@@ -413,6 +413,8 @@ typedef struct {
GDNativeBool (*variant_iter_init)(const GDNativeVariantPtr p_self, GDNativeVariantPtr r_iter, GDNativeBool *r_valid);
GDNativeBool (*variant_iter_next)(const GDNativeVariantPtr p_self, GDNativeVariantPtr r_iter, GDNativeBool *r_valid);
void (*variant_iter_get)(const GDNativeVariantPtr p_self, GDNativeVariantPtr r_iter, GDNativeVariantPtr r_ret, GDNativeBool *r_valid);
+ GDNativeInt (*variant_hash)(const GDNativeVariantPtr p_self);
+ GDNativeInt (*variant_recursive_hash)(const GDNativeVariantPtr p_self, GDNativeInt p_recursion_count);
GDNativeBool (*variant_hash_compare)(const GDNativeVariantPtr p_self, const GDNativeVariantPtr p_other);
GDNativeBool (*variant_booleanize)(const GDNativeVariantPtr p_self);
void (*variant_sub)(const GDNativeVariantPtr p_a, const GDNativeVariantPtr p_b, GDNativeVariantPtr r_dst);
diff --git a/core/extension/native_extension.cpp b/core/extension/native_extension.cpp
index 5738b42049..ebdfa20725 100644
--- a/core/extension/native_extension.cpp
+++ b/core/extension/native_extension.cpp
@@ -281,6 +281,7 @@ void NativeExtension::_get_library_path(const GDNativeExtensionClassLibraryPtr p
Error NativeExtension::open_library(const String &p_path, const String &p_entry_symbol) {
Error err = OS::get_singleton()->open_dynamic_library(p_path, library, true, &library_path);
if (err != OK) {
+ ERR_PRINT("GDExtension dynamic library not found: " + p_path);
return err;
}
@@ -289,15 +290,20 @@ Error NativeExtension::open_library(const String &p_path, const String &p_entry_
err = OS::get_singleton()->get_dynamic_library_symbol_handle(library, p_entry_symbol, entry_funcptr, false);
if (err != OK) {
+ ERR_PRINT("GDExtension entry point '" + p_entry_symbol + "' not found in library " + p_path);
OS::get_singleton()->close_dynamic_library(library);
return err;
}
GDNativeInitializationFunction initialization_function = (GDNativeInitializationFunction)entry_funcptr;
- initialization_function(&gdnative_interface, this, &initialization);
- level_initialized = -1;
- return OK;
+ if (initialization_function(&gdnative_interface, this, &initialization)) {
+ level_initialized = -1;
+ return OK;
+ } else {
+ ERR_PRINT("GDExtension initialization function '" + p_entry_symbol + "' returned an error.");
+ return FAILED;
+ }
}
void NativeExtension::close_library() {
@@ -384,6 +390,7 @@ Ref<Resource> NativeExtensionResourceLoader::load(const String &p_path, const St
}
if (err != OK) {
+ ERR_PRINT("Error loading GDExtension config file: " + p_path);
return Ref<Resource>();
}
@@ -391,6 +398,7 @@ Ref<Resource> NativeExtensionResourceLoader::load(const String &p_path, const St
if (r_error) {
*r_error = ERR_INVALID_DATA;
}
+ ERR_PRINT("GDExtension config file must contain 'configuration.entry_symbol' key: " + p_path);
return Ref<Resource>();
}
@@ -423,6 +431,7 @@ Ref<Resource> NativeExtensionResourceLoader::load(const String &p_path, const St
if (r_error) {
*r_error = ERR_FILE_NOT_FOUND;
}
+ ERR_PRINT("No GDExtension library found for current architecture; in config file " + p_path);
return Ref<Resource>();
}
@@ -440,6 +449,7 @@ Ref<Resource> NativeExtensionResourceLoader::load(const String &p_path, const St
}
if (err != OK) {
+ // Errors already logged in open_library()
return Ref<Resource>();
}
diff --git a/core/input/input.cpp b/core/input/input.cpp
index 4befdfac58..b3a68bb98c 100644
--- a/core/input/input.cpp
+++ b/core/input/input.cpp
@@ -134,8 +134,12 @@ void Input::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_custom_mouse_cursor", "image", "shape", "hotspot"), &Input::set_custom_mouse_cursor, DEFVAL(CURSOR_ARROW), DEFVAL(Vector2()));
ClassDB::bind_method(D_METHOD("parse_input_event", "event"), &Input::parse_input_event);
ClassDB::bind_method(D_METHOD("set_use_accumulated_input", "enable"), &Input::set_use_accumulated_input);
+ ClassDB::bind_method(D_METHOD("is_using_accumulated_input"), &Input::is_using_accumulated_input);
ClassDB::bind_method(D_METHOD("flush_buffered_events"), &Input::flush_buffered_events);
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "mouse_mode"), "set_mouse_mode", "get_mouse_mode");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "use_accumulated_input"), "set_use_accumulated_input", "is_using_accumulated_input");
+
BIND_ENUM_CONSTANT(MOUSE_MODE_VISIBLE);
BIND_ENUM_CONSTANT(MOUSE_MODE_HIDDEN);
BIND_ENUM_CONSTANT(MOUSE_MODE_CAPTURED);
@@ -897,6 +901,10 @@ void Input::set_use_accumulated_input(bool p_enable) {
use_accumulated_input = p_enable;
}
+bool Input::is_using_accumulated_input() {
+ return use_accumulated_input;
+}
+
void Input::release_pressed_events() {
flush_buffered_events(); // this is needed to release actions strengths
@@ -1401,8 +1409,8 @@ String Input::get_joy_guid(int p_device) const {
return joy_names[p_device].uid;
}
-Array Input::get_connected_joypads() {
- Array ret;
+TypedArray<int> Input::get_connected_joypads() {
+ TypedArray<int> ret;
HashMap<int, Joypad>::Iterator elem = joy_names.begin();
while (elem) {
if (elem->value.connected) {
diff --git a/core/input/input.h b/core/input/input.h
index 9a5b8e6e06..f02f2abae5 100644
--- a/core/input/input.h
+++ b/core/input/input.h
@@ -36,6 +36,7 @@
#include "core/os/keyboard.h"
#include "core/os/thread_safe.h"
#include "core/templates/rb_set.h"
+#include "core/variant/typed_array.h"
class Input : public Object {
GDCLASS(Input, Object);
@@ -259,7 +260,7 @@ public:
float get_joy_axis(int p_device, JoyAxis p_axis) const;
String get_joy_name(int p_idx);
- Array get_connected_joypads();
+ TypedArray<int> get_connected_joypads();
Vector2 get_joy_vibration_strength(int p_device);
float get_joy_vibration_duration(int p_device);
uint64_t get_joy_vibration_timestamp(int p_device);
@@ -326,6 +327,7 @@ public:
bool is_using_input_buffering();
void set_use_input_buffering(bool p_enable);
void set_use_accumulated_input(bool p_enable);
+ bool is_using_accumulated_input();
void release_pressed_events();
diff --git a/core/input/input_event.cpp b/core/input/input_event.cpp
index 2d4c203748..32e025417e 100644
--- a/core/input/input_event.cpp
+++ b/core/input/input_event.cpp
@@ -525,8 +525,8 @@ void InputEventMouse::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_global_position"), &InputEventMouse::get_global_position);
ADD_PROPERTY(PropertyInfo(Variant::INT, "button_mask"), "set_button_mask", "get_button_mask");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "position"), "set_position", "get_position");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "global_position"), "set_global_position", "get_global_position");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "position", PROPERTY_HINT_NONE, "suffix:px"), "set_position", "get_position");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "global_position", PROPERTY_HINT_NONE, "suffix:px"), "set_global_position", "get_global_position");
}
///////////////////////////////////
@@ -867,8 +867,8 @@ void InputEventMouseMotion::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "tilt"), "set_tilt", "get_tilt");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "pressure"), "set_pressure", "get_pressure");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "relative"), "set_relative", "get_relative");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "velocity"), "set_velocity", "get_velocity");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "relative", PROPERTY_HINT_NONE, "suffix:px"), "set_relative", "get_relative");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "velocity", PROPERTY_HINT_NONE, "suffix:px/s"), "set_velocity", "get_velocity");
}
///////////////////////////////////
@@ -1167,7 +1167,7 @@ void InputEventScreenTouch::_bind_methods() {
//ClassDB::bind_method(D_METHOD("is_pressed"),&InputEventScreenTouch::is_pressed);
ADD_PROPERTY(PropertyInfo(Variant::INT, "index"), "set_index", "get_index");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "position"), "set_position", "get_position");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "position", PROPERTY_HINT_NONE, "suffix:px"), "set_position", "get_position");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "pressed"), "set_pressed", "is_pressed");
}
@@ -1260,9 +1260,9 @@ void InputEventScreenDrag::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_velocity"), &InputEventScreenDrag::get_velocity);
ADD_PROPERTY(PropertyInfo(Variant::INT, "index"), "set_index", "get_index");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "position"), "set_position", "get_position");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "relative"), "set_relative", "get_relative");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "velocity"), "set_velocity", "get_velocity");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "position", PROPERTY_HINT_NONE, "suffix:px"), "set_position", "get_position");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "relative", PROPERTY_HINT_NONE, "suffix:px"), "set_relative", "get_relative");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "velocity", PROPERTY_HINT_NONE, "suffix:px/s"), "set_velocity", "get_velocity");
}
///////////////////////////////////
@@ -1362,7 +1362,7 @@ void InputEventGesture::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_position", "position"), &InputEventGesture::set_position);
ClassDB::bind_method(D_METHOD("get_position"), &InputEventGesture::get_position);
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "position"), "set_position", "get_position");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "position", PROPERTY_HINT_NONE, "suffix:px"), "set_position", "get_position");
}
Vector2 InputEventGesture::get_position() const {
diff --git a/core/io/config_file.cpp b/core/io/config_file.cpp
index dd0191f43f..ae421654ca 100644
--- a/core/io/config_file.cpp
+++ b/core/io/config_file.cpp
@@ -61,19 +61,19 @@ PackedStringArray ConfigFile::_get_section_keys(const String &p_section) const {
}
void ConfigFile::set_value(const String &p_section, const String &p_key, const Variant &p_value) {
- if (p_value.get_type() == Variant::NIL) {
- //erase
+ if (p_value.get_type() == Variant::NIL) { // Erase key.
if (!values.has(p_section)) {
- return; // ?
+ return;
}
+
values[p_section].erase(p_key);
if (values[p_section].is_empty()) {
values.erase(p_section);
}
-
} else {
if (!values.has(p_section)) {
- values[p_section] = HashMap<String, Variant>();
+ // Insert section-less keys at the beginning.
+ values.insert(p_section, HashMap<String, Variant>(), p_section.is_empty());
}
values[p_section][p_key] = p_value;
@@ -125,6 +125,9 @@ void ConfigFile::erase_section_key(const String &p_section, const String &p_key)
ERR_FAIL_COND_MSG(!values[p_section].has(p_key), vformat("Cannot erase nonexistent key \"%s\" from section \"%s\".", p_key, p_section));
values[p_section].erase(p_key);
+ if (values[p_section].is_empty()) {
+ values.erase(p_section);
+ }
}
Error ConfigFile::save(const String &p_path) {
diff --git a/core/io/file_access_pack.h b/core/io/file_access_pack.h
index 19a0cce796..e656f6b885 100644
--- a/core/io/file_access_pack.h
+++ b/core/io/file_access_pack.h
@@ -84,8 +84,8 @@ private:
return (a == p_val.a) && (b == p_val.b);
}
static uint32_t hash(const PathMD5 &p_val) {
- uint32_t h = hash_djb2_one_32(p_val.a);
- return hash_djb2_one_32(p_val.b, h);
+ uint32_t h = hash_murmur3_one_32(p_val.a);
+ return hash_fmix32(hash_murmur3_one_32(p_val.b, h));
}
PathMD5() {}
diff --git a/core/io/image.cpp b/core/io/image.cpp
index dfba45c4e9..a945d3e6cd 100644
--- a/core/io/image.cpp
+++ b/core/io/image.cpp
@@ -81,9 +81,14 @@ const char *Image::format_names[Image::FORMAT_MAX] = {
};
SavePNGFunc Image::save_png_func = nullptr;
+SaveJPGFunc Image::save_jpg_func = nullptr;
SaveEXRFunc Image::save_exr_func = nullptr;
SavePNGBufferFunc Image::save_png_buffer_func = nullptr;
+SaveJPGBufferFunc Image::save_jpg_buffer_func = nullptr;
+
+SaveWebPFunc Image::save_webp_func = nullptr;
+SaveWebPBufferFunc Image::save_webp_buffer_func = nullptr;
void Image::_put_pixelb(int p_x, int p_y, uint32_t p_pixel_size, uint8_t *p_data, const uint8_t *p_pixel) {
uint32_t ofs = (p_y * width + p_x) * p_pixel_size;
@@ -2286,6 +2291,14 @@ Error Image::save_png(const String &p_path) const {
return save_png_func(p_path, Ref<Image>((Image *)this));
}
+Error Image::save_jpg(const String &p_path, float p_quality) const {
+ if (save_jpg_func == nullptr) {
+ return ERR_UNAVAILABLE;
+ }
+
+ return save_jpg_func(p_path, Ref<Image>((Image *)this), p_quality);
+}
+
Vector<uint8_t> Image::save_png_to_buffer() const {
if (save_png_buffer_func == nullptr) {
return Vector<uint8_t>();
@@ -2294,6 +2307,14 @@ Vector<uint8_t> Image::save_png_to_buffer() const {
return save_png_buffer_func(Ref<Image>((Image *)this));
}
+Vector<uint8_t> Image::save_jpg_to_buffer(float p_quality) const {
+ if (save_jpg_buffer_func == nullptr) {
+ return Vector<uint8_t>();
+ }
+
+ return save_jpg_buffer_func(Ref<Image>((Image *)this), p_quality);
+}
+
Error Image::save_exr(const String &p_path, bool p_grayscale) const {
if (save_exr_func == nullptr) {
return ERR_UNAVAILABLE;
@@ -2302,6 +2323,24 @@ Error Image::save_exr(const String &p_path, bool p_grayscale) const {
return save_exr_func(p_path, Ref<Image>((Image *)this), p_grayscale);
}
+Error Image::save_webp(const String &p_path, const bool p_lossy, const float p_quality) const {
+ if (save_webp_func == nullptr) {
+ return ERR_UNAVAILABLE;
+ }
+ ERR_FAIL_COND_V_MSG(p_lossy && !(0.0f <= p_quality && p_quality <= 1.0f), ERR_INVALID_PARAMETER, "The WebP lossy quality was set to " + rtos(p_quality) + ", which is not valid. WebP lossy quality must be between 0.0 and 1.0 (inclusive).");
+
+ return save_webp_func(p_path, Ref<Image>((Image *)this), p_lossy, p_quality);
+}
+
+Vector<uint8_t> Image::save_webp_to_buffer(const bool p_lossy, const float p_quality) const {
+ if (save_webp_buffer_func == nullptr) {
+ return Vector<uint8_t>();
+ }
+ ERR_FAIL_COND_V_MSG(p_lossy && !(0.0f <= p_quality && p_quality <= 1.0f), Vector<uint8_t>(), "The WebP lossy quality was set to " + rtos(p_quality) + ", which is not valid. WebP lossy quality must be between 0.0 and 1.0 (inclusive).");
+
+ return save_webp_buffer_func(Ref<Image>((Image *)this), p_lossy, p_quality);
+}
+
int Image::get_image_data_size(int p_width, int p_height, Format p_format, bool p_mipmaps) {
int mm;
return _get_dst_image_size(p_width, p_height, p_format, mm, p_mipmaps ? -1 : 0);
@@ -3138,7 +3177,11 @@ void Image::_bind_methods() {
ClassDB::bind_method(D_METHOD("load", "path"), &Image::load);
ClassDB::bind_method(D_METHOD("save_png", "path"), &Image::save_png);
ClassDB::bind_method(D_METHOD("save_png_to_buffer"), &Image::save_png_to_buffer);
+ ClassDB::bind_method(D_METHOD("save_jpg", "path", "quality"), &Image::save_jpg, DEFVAL(0.75));
+ ClassDB::bind_method(D_METHOD("save_jpg_to_buffer", "quality"), &Image::save_jpg_to_buffer, DEFVAL(0.75));
ClassDB::bind_method(D_METHOD("save_exr", "path", "grayscale"), &Image::save_exr, DEFVAL(false));
+ ClassDB::bind_method(D_METHOD("save_webp", "path", "lossy", "quality"), &Image::save_webp, DEFVAL(false), DEFVAL(0.75f));
+ ClassDB::bind_method(D_METHOD("save_webp_to_buffer", "lossy", "quality"), &Image::save_webp_to_buffer, DEFVAL(false), DEFVAL(0.75f));
ClassDB::bind_method(D_METHOD("detect_alpha"), &Image::detect_alpha);
ClassDB::bind_method(D_METHOD("is_invisible"), &Image::is_invisible);
diff --git a/core/io/image.h b/core/io/image.h
index 1025554d51..229103f792 100644
--- a/core/io/image.h
+++ b/core/io/image.h
@@ -45,7 +45,11 @@ class Image;
typedef Error (*SavePNGFunc)(const String &p_path, const Ref<Image> &p_img);
typedef Vector<uint8_t> (*SavePNGBufferFunc)(const Ref<Image> &p_img);
+typedef Error (*SaveJPGFunc)(const String &p_path, const Ref<Image> &p_img, float p_quality);
+typedef Vector<uint8_t> (*SaveJPGBufferFunc)(const Ref<Image> &p_img, float p_quality);
typedef Ref<Image> (*ImageMemLoadFunc)(const uint8_t *p_png, int p_size);
+typedef Error (*SaveWebPFunc)(const String &p_path, const Ref<Image> &p_img, const bool p_lossy, const float p_quality);
+typedef Vector<uint8_t> (*SaveWebPBufferFunc)(const Ref<Image> &p_img, const bool p_lossy, const float p_quality);
typedef Error (*SaveEXRFunc)(const String &p_path, const Ref<Image> &p_img, bool p_grayscale);
@@ -54,8 +58,12 @@ class Image : public Resource {
public:
static SavePNGFunc save_png_func;
+ static SaveJPGFunc save_jpg_func;
static SaveEXRFunc save_exr_func;
static SavePNGBufferFunc save_png_buffer_func;
+ static SaveJPGBufferFunc save_jpg_buffer_func;
+ static SaveWebPFunc save_webp_func;
+ static SaveWebPBufferFunc save_webp_buffer_func;
enum {
MAX_WIDTH = (1 << 24), // force a limit somehow
@@ -281,8 +289,12 @@ public:
Error load(const String &p_path);
Error save_png(const String &p_path) const;
+ Error save_jpg(const String &p_path, float p_quality = 0.75) const;
Vector<uint8_t> save_png_to_buffer() const;
+ Vector<uint8_t> save_jpg_to_buffer(float p_quality = 0.75) const;
Error save_exr(const String &p_path, bool p_grayscale) const;
+ Error save_webp(const String &p_path, const bool p_lossy = false, const float p_quality = 0.75f) const;
+ Vector<uint8_t> save_webp_to_buffer(const bool p_lossy = false, const float p_quality = 0.75f) const;
void create_empty(int p_width, int p_height, bool p_use_mipmaps, Format p_format) {
create(p_width, p_height, p_use_mipmaps, p_format);
diff --git a/core/io/resource.cpp b/core/io/resource.cpp
index ad01eb1083..ed7228d0b9 100644
--- a/core/io/resource.cpp
+++ b/core/io/resource.cpp
@@ -100,14 +100,14 @@ String Resource::generate_scene_unique_id() {
// If it's not unique it does not matter because the saver will try again.
OS::Date date = OS::get_singleton()->get_date();
OS::Time time = OS::get_singleton()->get_time();
- uint32_t hash = hash_djb2_one_32(OS::get_singleton()->get_ticks_usec());
- hash = hash_djb2_one_32(date.year, hash);
- hash = hash_djb2_one_32(date.month, hash);
- hash = hash_djb2_one_32(date.day, hash);
- hash = hash_djb2_one_32(time.hour, hash);
- hash = hash_djb2_one_32(time.minute, hash);
- hash = hash_djb2_one_32(time.second, hash);
- hash = hash_djb2_one_32(Math::rand(), hash);
+ uint32_t hash = hash_murmur3_one_32(OS::get_singleton()->get_ticks_usec());
+ hash = hash_murmur3_one_32(date.year, hash);
+ hash = hash_murmur3_one_32(date.month, hash);
+ hash = hash_murmur3_one_32(date.day, hash);
+ hash = hash_murmur3_one_32(time.hour, hash);
+ hash = hash_murmur3_one_32(time.minute, hash);
+ hash = hash_murmur3_one_32(time.second, hash);
+ hash = hash_murmur3_one_32(Math::rand(), hash);
static constexpr uint32_t characters = 5;
static constexpr uint32_t char_count = ('z' - 'a');
@@ -328,7 +328,7 @@ void Resource::notify_change_to_owners() {
#ifdef TOOLS_ENABLED
uint32_t Resource::hash_edited_version() const {
- uint32_t hash = hash_djb2_one_32(get_edited_version());
+ uint32_t hash = hash_murmur3_one_32(get_edited_version());
List<PropertyInfo> plist;
get_property_list(&plist);
@@ -337,7 +337,7 @@ uint32_t Resource::hash_edited_version() const {
if (E.usage & PROPERTY_USAGE_STORAGE && E.type == Variant::OBJECT && E.hint == PROPERTY_HINT_RESOURCE_TYPE) {
Ref<Resource> res = get(E.name);
if (res.is_valid()) {
- hash = hash_djb2_one_32(res->hash_edited_version(), hash);
+ hash = hash_murmur3_one_32(res->hash_edited_version(), hash);
}
}
}
diff --git a/core/io/resource_format_binary.cpp b/core/io/resource_format_binary.cpp
index 24458f20b4..2469e1a4be 100644
--- a/core/io/resource_format_binary.cpp
+++ b/core/io/resource_format_binary.cpp
@@ -1547,10 +1547,11 @@ void ResourceFormatSaverBinaryInstance::write_variant(Ref<FileAccess> f, const V
case Variant::COLOR: {
f->store_32(VARIANT_COLOR);
Color val = p_property;
- f->store_real(val.r);
- f->store_real(val.g);
- f->store_real(val.b);
- f->store_real(val.a);
+ // Color are always floats
+ f->store_float(val.r);
+ f->store_float(val.g);
+ f->store_float(val.b);
+ f->store_float(val.a);
} break;
case Variant::STRING_NAME: {
@@ -1685,7 +1686,7 @@ void ResourceFormatSaverBinaryInstance::write_variant(Ref<FileAccess> f, const V
f->store_32(len);
const float *r = arr.ptr();
for (int i = 0; i < len; i++) {
- f->store_real(r[i]);
+ f->store_float(r[i]);
}
} break;
@@ -1743,10 +1744,10 @@ void ResourceFormatSaverBinaryInstance::write_variant(Ref<FileAccess> f, const V
f->store_32(len);
const Color *r = arr.ptr();
for (int i = 0; i < len; i++) {
- f->store_real(r[i].r);
- f->store_real(r[i].g);
- f->store_real(r[i].b);
- f->store_real(r[i].a);
+ f->store_float(r[i].r);
+ f->store_float(r[i].g);
+ f->store_float(r[i].b);
+ f->store_float(r[i].a);
}
} break;
diff --git a/core/math/a_star.cpp b/core/math/a_star.cpp
index efa970c681..41a0848d01 100644
--- a/core/math/a_star.cpp
+++ b/core/math/a_star.cpp
@@ -33,19 +33,19 @@
#include "core/math/geometry_3d.h"
#include "core/object/script_language.h"
-int AStar3D::get_available_point_id() const {
+int64_t AStar3D::get_available_point_id() const {
if (points.has(last_free_id)) {
- int cur_new_id = last_free_id + 1;
+ int64_t cur_new_id = last_free_id + 1;
while (points.has(cur_new_id)) {
cur_new_id++;
}
- const_cast<int &>(last_free_id) = cur_new_id;
+ const_cast<int64_t &>(last_free_id) = cur_new_id;
}
return last_free_id;
}
-void AStar3D::add_point(int p_id, const Vector3 &p_pos, real_t p_weight_scale) {
+void AStar3D::add_point(int64_t p_id, const Vector3 &p_pos, real_t p_weight_scale) {
ERR_FAIL_COND_MSG(p_id < 0, vformat("Can't add a point with negative id: %d.", p_id));
ERR_FAIL_COND_MSG(p_weight_scale < 0.0, vformat("Can't add a point with weight scale less than 0.0: %f.", p_weight_scale));
@@ -68,7 +68,7 @@ void AStar3D::add_point(int p_id, const Vector3 &p_pos, real_t p_weight_scale) {
}
}
-Vector3 AStar3D::get_point_position(int p_id) const {
+Vector3 AStar3D::get_point_position(int64_t p_id) const {
Point *p;
bool p_exists = points.lookup(p_id, p);
ERR_FAIL_COND_V_MSG(!p_exists, Vector3(), vformat("Can't get point's position. Point with id: %d doesn't exist.", p_id));
@@ -76,7 +76,7 @@ Vector3 AStar3D::get_point_position(int p_id) const {
return p->pos;
}
-void AStar3D::set_point_position(int p_id, const Vector3 &p_pos) {
+void AStar3D::set_point_position(int64_t p_id, const Vector3 &p_pos) {
Point *p;
bool p_exists = points.lookup(p_id, p);
ERR_FAIL_COND_MSG(!p_exists, vformat("Can't set point's position. Point with id: %d doesn't exist.", p_id));
@@ -84,7 +84,7 @@ void AStar3D::set_point_position(int p_id, const Vector3 &p_pos) {
p->pos = p_pos;
}
-real_t AStar3D::get_point_weight_scale(int p_id) const {
+real_t AStar3D::get_point_weight_scale(int64_t p_id) const {
Point *p;
bool p_exists = points.lookup(p_id, p);
ERR_FAIL_COND_V_MSG(!p_exists, 0, vformat("Can't get point's weight scale. Point with id: %d doesn't exist.", p_id));
@@ -92,7 +92,7 @@ real_t AStar3D::get_point_weight_scale(int p_id) const {
return p->weight_scale;
}
-void AStar3D::set_point_weight_scale(int p_id, real_t p_weight_scale) {
+void AStar3D::set_point_weight_scale(int64_t p_id, real_t p_weight_scale) {
Point *p;
bool p_exists = points.lookup(p_id, p);
ERR_FAIL_COND_MSG(!p_exists, vformat("Can't set point's weight scale. Point with id: %d doesn't exist.", p_id));
@@ -101,12 +101,12 @@ void AStar3D::set_point_weight_scale(int p_id, real_t p_weight_scale) {
p->weight_scale = p_weight_scale;
}
-void AStar3D::remove_point(int p_id) {
+void AStar3D::remove_point(int64_t p_id) {
Point *p;
bool p_exists = points.lookup(p_id, p);
ERR_FAIL_COND_MSG(!p_exists, vformat("Can't remove point. Point with id: %d doesn't exist.", p_id));
- for (OAHashMap<int, Point *>::Iterator it = p->neighbours.iter(); it.valid; it = p->neighbours.next_iter(it)) {
+ for (OAHashMap<int64_t, Point *>::Iterator it = p->neighbours.iter(); it.valid; it = p->neighbours.next_iter(it)) {
Segment s(p_id, (*it.key));
segments.erase(s);
@@ -114,7 +114,7 @@ void AStar3D::remove_point(int p_id) {
(*it.value)->unlinked_neighbours.remove(p->id);
}
- for (OAHashMap<int, Point *>::Iterator it = p->unlinked_neighbours.iter(); it.valid; it = p->unlinked_neighbours.next_iter(it)) {
+ for (OAHashMap<int64_t, Point *>::Iterator it = p->unlinked_neighbours.iter(); it.valid; it = p->unlinked_neighbours.next_iter(it)) {
Segment s(p_id, (*it.key));
segments.erase(s);
@@ -127,7 +127,7 @@ void AStar3D::remove_point(int p_id) {
last_free_id = p_id;
}
-void AStar3D::connect_points(int p_id, int p_with_id, bool bidirectional) {
+void AStar3D::connect_points(int64_t p_id, int64_t p_with_id, bool bidirectional) {
ERR_FAIL_COND_MSG(p_id == p_with_id, vformat("Can't connect point with id: %d to itself.", p_id));
Point *a;
@@ -165,7 +165,7 @@ void AStar3D::connect_points(int p_id, int p_with_id, bool bidirectional) {
segments.insert(s);
}
-void AStar3D::disconnect_points(int p_id, int p_with_id, bool bidirectional) {
+void AStar3D::disconnect_points(int64_t p_id, int64_t p_with_id, bool bidirectional) {
Point *a;
bool a_exists = points.lookup(p_id, a);
ERR_FAIL_COND_MSG(!a_exists, vformat("Can't disconnect points. Point with id: %d doesn't exist.", p_id));
@@ -175,7 +175,7 @@ void AStar3D::disconnect_points(int p_id, int p_with_id, bool bidirectional) {
ERR_FAIL_COND_MSG(!b_exists, vformat("Can't disconnect points. Point with id: %d doesn't exist.", p_with_id));
Segment s(p_id, p_with_id);
- int remove_direction = bidirectional ? (int)Segment::BIDIRECTIONAL : s.direction;
+ int remove_direction = bidirectional ? (int)Segment::BIDIRECTIONAL : (int)s.direction;
HashSet<Segment, Segment>::Iterator element = segments.find(s);
if (element) {
@@ -205,35 +205,35 @@ void AStar3D::disconnect_points(int p_id, int p_with_id, bool bidirectional) {
}
}
-bool AStar3D::has_point(int p_id) const {
+bool AStar3D::has_point(int64_t p_id) const {
return points.has(p_id);
}
Array AStar3D::get_point_ids() {
Array point_list;
- for (OAHashMap<int, Point *>::Iterator it = points.iter(); it.valid; it = points.next_iter(it)) {
+ for (OAHashMap<int64_t, Point *>::Iterator it = points.iter(); it.valid; it = points.next_iter(it)) {
point_list.push_back(*(it.key));
}
return point_list;
}
-Vector<int> AStar3D::get_point_connections(int p_id) {
+Vector<int64_t> AStar3D::get_point_connections(int64_t p_id) {
Point *p;
bool p_exists = points.lookup(p_id, p);
- ERR_FAIL_COND_V_MSG(!p_exists, Vector<int>(), vformat("Can't get point's connections. Point with id: %d doesn't exist.", p_id));
+ ERR_FAIL_COND_V_MSG(!p_exists, Vector<int64_t>(), vformat("Can't get point's connections. Point with id: %d doesn't exist.", p_id));
- Vector<int> point_list;
+ Vector<int64_t> point_list;
- for (OAHashMap<int, Point *>::Iterator it = p->neighbours.iter(); it.valid; it = p->neighbours.next_iter(it)) {
+ for (OAHashMap<int64_t, Point *>::Iterator it = p->neighbours.iter(); it.valid; it = p->neighbours.next_iter(it)) {
point_list.push_back((*it.key));
}
return point_list;
}
-bool AStar3D::are_points_connected(int p_id, int p_with_id, bool bidirectional) const {
+bool AStar3D::are_points_connected(int64_t p_id, int64_t p_with_id, bool bidirectional) const {
Segment s(p_id, p_with_id);
const HashSet<Segment, Segment>::Iterator element = segments.find(s);
@@ -243,32 +243,32 @@ bool AStar3D::are_points_connected(int p_id, int p_with_id, bool bidirectional)
void AStar3D::clear() {
last_free_id = 0;
- for (OAHashMap<int, Point *>::Iterator it = points.iter(); it.valid; it = points.next_iter(it)) {
+ for (OAHashMap<int64_t, Point *>::Iterator it = points.iter(); it.valid; it = points.next_iter(it)) {
memdelete(*(it.value));
}
segments.clear();
points.clear();
}
-int AStar3D::get_point_count() const {
+int64_t AStar3D::get_point_count() const {
return points.get_num_elements();
}
-int AStar3D::get_point_capacity() const {
+int64_t AStar3D::get_point_capacity() const {
return points.get_capacity();
}
-void AStar3D::reserve_space(int p_num_nodes) {
+void AStar3D::reserve_space(int64_t p_num_nodes) {
ERR_FAIL_COND_MSG(p_num_nodes <= 0, vformat("New capacity must be greater than 0, new was: %d.", p_num_nodes));
ERR_FAIL_COND_MSG((uint32_t)p_num_nodes < points.get_capacity(), vformat("New capacity must be greater than current capacity: %d, new was: %d.", points.get_capacity(), p_num_nodes));
points.reserve(p_num_nodes);
}
-int AStar3D::get_closest_point(const Vector3 &p_point, bool p_include_disabled) const {
- int closest_id = -1;
+int64_t AStar3D::get_closest_point(const Vector3 &p_point, bool p_include_disabled) const {
+ int64_t closest_id = -1;
real_t closest_dist = 1e20;
- for (OAHashMap<int, Point *>::Iterator it = points.iter(); it.valid; it = points.next_iter(it)) {
+ for (OAHashMap<int64_t, Point *>::Iterator it = points.iter(); it.valid; it = points.next_iter(it)) {
if (!p_include_disabled && !(*it.value)->enabled) {
continue; // Disabled points should not be considered.
}
@@ -276,7 +276,7 @@ int AStar3D::get_closest_point(const Vector3 &p_point, bool p_include_disabled)
// Keep the closest point's ID, and in case of multiple closest IDs,
// the smallest one (makes it deterministic).
real_t d = p_point.distance_squared_to((*it.value)->pos);
- int id = *(it.key);
+ int64_t id = *(it.key);
if (d <= closest_dist) {
if (d == closest_dist && id > closest_id) { // Keep lowest ID.
continue;
@@ -295,8 +295,8 @@ Vector3 AStar3D::get_closest_position_in_segment(const Vector3 &p_point) const {
for (const Segment &E : segments) {
Point *from_point = nullptr, *to_point = nullptr;
- points.lookup(E.u, from_point);
- points.lookup(E.v, to_point);
+ points.lookup(E.key.first, from_point);
+ points.lookup(E.key.second, to_point);
if (!(from_point->enabled && to_point->enabled)) {
continue;
@@ -346,7 +346,7 @@ bool AStar3D::_solve(Point *begin_point, Point *end_point) {
open_list.remove_at(open_list.size() - 1);
p->closed_pass = pass; // Mark the point as closed
- for (OAHashMap<int, Point *>::Iterator it = p->neighbours.iter(); it.valid; it = p->neighbours.next_iter(it)) {
+ for (OAHashMap<int64_t, Point *>::Iterator it = p->neighbours.iter(); it.valid; it = p->neighbours.next_iter(it)) {
Point *e = *(it.value); // The neighbour point
if (!e->enabled || e->closed_pass == pass) {
@@ -380,7 +380,7 @@ bool AStar3D::_solve(Point *begin_point, Point *end_point) {
return found_route;
}
-real_t AStar3D::_estimate_cost(int p_from_id, int p_to_id) {
+real_t AStar3D::_estimate_cost(int64_t p_from_id, int64_t p_to_id) {
real_t scost;
if (GDVIRTUAL_CALL(_estimate_cost, p_from_id, p_to_id, scost)) {
return scost;
@@ -397,7 +397,7 @@ real_t AStar3D::_estimate_cost(int p_from_id, int p_to_id) {
return from_point->pos.distance_to(to_point->pos);
}
-real_t AStar3D::_compute_cost(int p_from_id, int p_to_id) {
+real_t AStar3D::_compute_cost(int64_t p_from_id, int64_t p_to_id) {
real_t scost;
if (GDVIRTUAL_CALL(_compute_cost, p_from_id, p_to_id, scost)) {
return scost;
@@ -414,7 +414,7 @@ real_t AStar3D::_compute_cost(int p_from_id, int p_to_id) {
return from_point->pos.distance_to(to_point->pos);
}
-Vector<Vector3> AStar3D::get_point_path(int p_from_id, int p_to_id) {
+Vector<Vector3> AStar3D::get_point_path(int64_t p_from_id, int64_t p_to_id) {
Point *a;
bool from_exists = points.lookup(p_from_id, a);
ERR_FAIL_COND_V_MSG(!from_exists, Vector<Vector3>(), vformat("Can't get point path. Point with id: %d doesn't exist.", p_from_id));
@@ -438,7 +438,7 @@ Vector<Vector3> AStar3D::get_point_path(int p_from_id, int p_to_id) {
}
Point *p = end_point;
- int pc = 1; // Begin point
+ int64_t pc = 1; // Begin point
while (p != begin_point) {
pc++;
p = p->prev_point;
@@ -451,7 +451,7 @@ Vector<Vector3> AStar3D::get_point_path(int p_from_id, int p_to_id) {
Vector3 *w = path.ptrw();
Point *p2 = end_point;
- int idx = pc - 1;
+ int64_t idx = pc - 1;
while (p2 != begin_point) {
w[idx--] = p2->pos;
p2 = p2->prev_point;
@@ -463,17 +463,17 @@ Vector<Vector3> AStar3D::get_point_path(int p_from_id, int p_to_id) {
return path;
}
-Vector<int> AStar3D::get_id_path(int p_from_id, int p_to_id) {
+Vector<int64_t> AStar3D::get_id_path(int64_t p_from_id, int64_t p_to_id) {
Point *a;
bool from_exists = points.lookup(p_from_id, a);
- ERR_FAIL_COND_V_MSG(!from_exists, Vector<int>(), vformat("Can't get id path. Point with id: %d doesn't exist.", p_from_id));
+ ERR_FAIL_COND_V_MSG(!from_exists, Vector<int64_t>(), vformat("Can't get id path. Point with id: %d doesn't exist.", p_from_id));
Point *b;
bool to_exists = points.lookup(p_to_id, b);
- ERR_FAIL_COND_V_MSG(!to_exists, Vector<int>(), vformat("Can't get id path. Point with id: %d doesn't exist.", p_to_id));
+ ERR_FAIL_COND_V_MSG(!to_exists, Vector<int64_t>(), vformat("Can't get id path. Point with id: %d doesn't exist.", p_to_id));
if (a == b) {
- Vector<int> ret;
+ Vector<int64_t> ret;
ret.push_back(a->id);
return ret;
}
@@ -483,24 +483,24 @@ Vector<int> AStar3D::get_id_path(int p_from_id, int p_to_id) {
bool found_route = _solve(begin_point, end_point);
if (!found_route) {
- return Vector<int>();
+ return Vector<int64_t>();
}
Point *p = end_point;
- int pc = 1; // Begin point
+ int64_t pc = 1; // Begin point
while (p != begin_point) {
pc++;
p = p->prev_point;
}
- Vector<int> path;
+ Vector<int64_t> path;
path.resize(pc);
{
- int *w = path.ptrw();
+ int64_t *w = path.ptrw();
p = end_point;
- int idx = pc - 1;
+ int64_t idx = pc - 1;
while (p != begin_point) {
w[idx--] = p->id;
p = p->prev_point;
@@ -512,7 +512,7 @@ Vector<int> AStar3D::get_id_path(int p_from_id, int p_to_id) {
return path;
}
-void AStar3D::set_point_disabled(int p_id, bool p_disabled) {
+void AStar3D::set_point_disabled(int64_t p_id, bool p_disabled) {
Point *p;
bool p_exists = points.lookup(p_id, p);
ERR_FAIL_COND_MSG(!p_exists, vformat("Can't set if point is disabled. Point with id: %d doesn't exist.", p_id));
@@ -520,7 +520,7 @@ void AStar3D::set_point_disabled(int p_id, bool p_disabled) {
p->enabled = !p_disabled;
}
-bool AStar3D::is_point_disabled(int p_id) const {
+bool AStar3D::is_point_disabled(int64_t p_id) const {
Point *p;
bool p_exists = points.lookup(p_id, p);
ERR_FAIL_COND_V_MSG(!p_exists, false, vformat("Can't get if point is disabled. Point with id: %d doesn't exist.", p_id));
@@ -568,40 +568,40 @@ AStar3D::~AStar3D() {
/////////////////////////////////////////////////////////////
-int AStar2D::get_available_point_id() const {
+int64_t AStar2D::get_available_point_id() const {
return astar.get_available_point_id();
}
-void AStar2D::add_point(int p_id, const Vector2 &p_pos, real_t p_weight_scale) {
+void AStar2D::add_point(int64_t p_id, const Vector2 &p_pos, real_t p_weight_scale) {
astar.add_point(p_id, Vector3(p_pos.x, p_pos.y, 0), p_weight_scale);
}
-Vector2 AStar2D::get_point_position(int p_id) const {
+Vector2 AStar2D::get_point_position(int64_t p_id) const {
Vector3 p = astar.get_point_position(p_id);
return Vector2(p.x, p.y);
}
-void AStar2D::set_point_position(int p_id, const Vector2 &p_pos) {
+void AStar2D::set_point_position(int64_t p_id, const Vector2 &p_pos) {
astar.set_point_position(p_id, Vector3(p_pos.x, p_pos.y, 0));
}
-real_t AStar2D::get_point_weight_scale(int p_id) const {
+real_t AStar2D::get_point_weight_scale(int64_t p_id) const {
return astar.get_point_weight_scale(p_id);
}
-void AStar2D::set_point_weight_scale(int p_id, real_t p_weight_scale) {
+void AStar2D::set_point_weight_scale(int64_t p_id, real_t p_weight_scale) {
astar.set_point_weight_scale(p_id, p_weight_scale);
}
-void AStar2D::remove_point(int p_id) {
+void AStar2D::remove_point(int64_t p_id) {
astar.remove_point(p_id);
}
-bool AStar2D::has_point(int p_id) const {
+bool AStar2D::has_point(int64_t p_id) const {
return astar.has_point(p_id);
}
-Vector<int> AStar2D::get_point_connections(int p_id) {
+Vector<int64_t> AStar2D::get_point_connections(int64_t p_id) {
return astar.get_point_connections(p_id);
}
@@ -609,31 +609,31 @@ Array AStar2D::get_point_ids() {
return astar.get_point_ids();
}
-void AStar2D::set_point_disabled(int p_id, bool p_disabled) {
+void AStar2D::set_point_disabled(int64_t p_id, bool p_disabled) {
astar.set_point_disabled(p_id, p_disabled);
}
-bool AStar2D::is_point_disabled(int p_id) const {
+bool AStar2D::is_point_disabled(int64_t p_id) const {
return astar.is_point_disabled(p_id);
}
-void AStar2D::connect_points(int p_id, int p_with_id, bool p_bidirectional) {
+void AStar2D::connect_points(int64_t p_id, int64_t p_with_id, bool p_bidirectional) {
astar.connect_points(p_id, p_with_id, p_bidirectional);
}
-void AStar2D::disconnect_points(int p_id, int p_with_id) {
- astar.disconnect_points(p_id, p_with_id);
+void AStar2D::disconnect_points(int64_t p_id, int64_t p_with_id, bool p_bidirectional) {
+ astar.disconnect_points(p_id, p_with_id, p_bidirectional);
}
-bool AStar2D::are_points_connected(int p_id, int p_with_id) const {
- return astar.are_points_connected(p_id, p_with_id);
+bool AStar2D::are_points_connected(int64_t p_id, int64_t p_with_id, bool p_bidirectional) const {
+ return astar.are_points_connected(p_id, p_with_id, p_bidirectional);
}
-int AStar2D::get_point_count() const {
+int64_t AStar2D::get_point_count() const {
return astar.get_point_count();
}
-int AStar2D::get_point_capacity() const {
+int64_t AStar2D::get_point_capacity() const {
return astar.get_point_capacity();
}
@@ -641,11 +641,11 @@ void AStar2D::clear() {
astar.clear();
}
-void AStar2D::reserve_space(int p_num_nodes) {
+void AStar2D::reserve_space(int64_t p_num_nodes) {
astar.reserve_space(p_num_nodes);
}
-int AStar2D::get_closest_point(const Vector2 &p_point, bool p_include_disabled) const {
+int64_t AStar2D::get_closest_point(const Vector2 &p_point, bool p_include_disabled) const {
return astar.get_closest_point(Vector3(p_point.x, p_point.y, 0), p_include_disabled);
}
@@ -654,7 +654,7 @@ Vector2 AStar2D::get_closest_position_in_segment(const Vector2 &p_point) const {
return Vector2(p.x, p.y);
}
-real_t AStar2D::_estimate_cost(int p_from_id, int p_to_id) {
+real_t AStar2D::_estimate_cost(int64_t p_from_id, int64_t p_to_id) {
real_t scost;
if (GDVIRTUAL_CALL(_estimate_cost, p_from_id, p_to_id, scost)) {
return scost;
@@ -671,7 +671,7 @@ real_t AStar2D::_estimate_cost(int p_from_id, int p_to_id) {
return from_point->pos.distance_to(to_point->pos);
}
-real_t AStar2D::_compute_cost(int p_from_id, int p_to_id) {
+real_t AStar2D::_compute_cost(int64_t p_from_id, int64_t p_to_id) {
real_t scost;
if (GDVIRTUAL_CALL(_compute_cost, p_from_id, p_to_id, scost)) {
return scost;
@@ -688,7 +688,7 @@ real_t AStar2D::_compute_cost(int p_from_id, int p_to_id) {
return from_point->pos.distance_to(to_point->pos);
}
-Vector<Vector2> AStar2D::get_point_path(int p_from_id, int p_to_id) {
+Vector<Vector2> AStar2D::get_point_path(int64_t p_from_id, int64_t p_to_id) {
AStar3D::Point *a;
bool from_exists = astar.points.lookup(p_from_id, a);
ERR_FAIL_COND_V_MSG(!from_exists, Vector<Vector2>(), vformat("Can't get point path. Point with id: %d doesn't exist.", p_from_id));
@@ -711,7 +711,7 @@ Vector<Vector2> AStar2D::get_point_path(int p_from_id, int p_to_id) {
}
AStar3D::Point *p = end_point;
- int pc = 1; // Begin point
+ int64_t pc = 1; // Begin point
while (p != begin_point) {
pc++;
p = p->prev_point;
@@ -724,7 +724,7 @@ Vector<Vector2> AStar2D::get_point_path(int p_from_id, int p_to_id) {
Vector2 *w = path.ptrw();
AStar3D::Point *p2 = end_point;
- int idx = pc - 1;
+ int64_t idx = pc - 1;
while (p2 != begin_point) {
w[idx--] = Vector2(p2->pos.x, p2->pos.y);
p2 = p2->prev_point;
@@ -736,17 +736,17 @@ Vector<Vector2> AStar2D::get_point_path(int p_from_id, int p_to_id) {
return path;
}
-Vector<int> AStar2D::get_id_path(int p_from_id, int p_to_id) {
+Vector<int64_t> AStar2D::get_id_path(int64_t p_from_id, int64_t p_to_id) {
AStar3D::Point *a;
bool from_exists = astar.points.lookup(p_from_id, a);
- ERR_FAIL_COND_V_MSG(!from_exists, Vector<int>(), vformat("Can't get id path. Point with id: %d doesn't exist.", p_from_id));
+ ERR_FAIL_COND_V_MSG(!from_exists, Vector<int64_t>(), vformat("Can't get id path. Point with id: %d doesn't exist.", p_from_id));
AStar3D::Point *b;
bool to_exists = astar.points.lookup(p_to_id, b);
- ERR_FAIL_COND_V_MSG(!to_exists, Vector<int>(), vformat("Can't get id path. Point with id: %d doesn't exist.", p_to_id));
+ ERR_FAIL_COND_V_MSG(!to_exists, Vector<int64_t>(), vformat("Can't get id path. Point with id: %d doesn't exist.", p_to_id));
if (a == b) {
- Vector<int> ret;
+ Vector<int64_t> ret;
ret.push_back(a->id);
return ret;
}
@@ -756,24 +756,24 @@ Vector<int> AStar2D::get_id_path(int p_from_id, int p_to_id) {
bool found_route = _solve(begin_point, end_point);
if (!found_route) {
- return Vector<int>();
+ return Vector<int64_t>();
}
AStar3D::Point *p = end_point;
- int pc = 1; // Begin point
+ int64_t pc = 1; // Begin point
while (p != begin_point) {
pc++;
p = p->prev_point;
}
- Vector<int> path;
+ Vector<int64_t> path;
path.resize(pc);
{
- int *w = path.ptrw();
+ int64_t *w = path.ptrw();
p = end_point;
- int idx = pc - 1;
+ int64_t idx = pc - 1;
while (p != begin_point) {
w[idx--] = p->id;
p = p->prev_point;
@@ -813,7 +813,7 @@ bool AStar2D::_solve(AStar3D::Point *begin_point, AStar3D::Point *end_point) {
open_list.remove_at(open_list.size() - 1);
p->closed_pass = astar.pass; // Mark the point as closed
- for (OAHashMap<int, AStar3D::Point *>::Iterator it = p->neighbours.iter(); it.valid; it = p->neighbours.next_iter(it)) {
+ for (OAHashMap<int64_t, AStar3D::Point *>::Iterator it = p->neighbours.iter(); it.valid; it = p->neighbours.next_iter(it)) {
AStar3D::Point *e = *(it.value); // The neighbour point
if (!e->enabled || e->closed_pass == astar.pass) {
@@ -863,8 +863,8 @@ void AStar2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("is_point_disabled", "id"), &AStar2D::is_point_disabled);
ClassDB::bind_method(D_METHOD("connect_points", "id", "to_id", "bidirectional"), &AStar2D::connect_points, DEFVAL(true));
- ClassDB::bind_method(D_METHOD("disconnect_points", "id", "to_id"), &AStar2D::disconnect_points);
- ClassDB::bind_method(D_METHOD("are_points_connected", "id", "to_id"), &AStar2D::are_points_connected);
+ ClassDB::bind_method(D_METHOD("disconnect_points", "id", "to_id", "bidirectional"), &AStar2D::disconnect_points, DEFVAL(true));
+ ClassDB::bind_method(D_METHOD("are_points_connected", "id", "to_id", "bidirectional"), &AStar2D::are_points_connected, DEFVAL(true));
ClassDB::bind_method(D_METHOD("get_point_count"), &AStar2D::get_point_count);
ClassDB::bind_method(D_METHOD("get_point_capacity"), &AStar2D::get_point_capacity);
diff --git a/core/math/a_star.h b/core/math/a_star.h
index e2f75ad18c..c1497d133f 100644
--- a/core/math/a_star.h
+++ b/core/math/a_star.h
@@ -47,13 +47,13 @@ class AStar3D : public RefCounted {
struct Point {
Point() {}
- int id = 0;
+ int64_t id = 0;
Vector3 pos;
real_t weight_scale = 0;
bool enabled = false;
- OAHashMap<int, Point *> neighbours = 4u;
- OAHashMap<int, Point *> unlinked_neighbours = 4u;
+ OAHashMap<int64_t, Point *> neighbours = 4u;
+ OAHashMap<int64_t, Point *> unlinked_neighbours = 4u;
// Used for pathfinding.
Point *prev_point = nullptr;
@@ -76,13 +76,7 @@ class AStar3D : public RefCounted {
};
struct Segment {
- union {
- struct {
- int32_t u;
- int32_t v;
- };
- uint64_t key = 0;
- };
+ Pair<int64_t, int64_t> key;
enum {
NONE = 0,
@@ -93,28 +87,28 @@ class AStar3D : public RefCounted {
unsigned char direction = NONE;
static uint32_t hash(const Segment &p_seg) {
- return hash_one_uint64(p_seg.key);
+ return PairHash<int64_t, int64_t>().hash(p_seg.key);
}
bool operator==(const Segment &p_s) const { return key == p_s.key; }
Segment() {}
- Segment(int p_from, int p_to) {
+ Segment(int64_t p_from, int64_t p_to) {
if (p_from < p_to) {
- u = p_from;
- v = p_to;
+ key.first = p_from;
+ key.second = p_to;
direction = FORWARD;
} else {
- u = p_to;
- v = p_from;
+ key.first = p_to;
+ key.second = p_from;
direction = BACKWARD;
}
}
};
- int last_free_id = 0;
+ int64_t last_free_id = 0;
uint64_t pass = 1;
- OAHashMap<int, Point *> points;
+ OAHashMap<int64_t, Point *> points;
HashSet<Segment, Segment> segments;
bool _solve(Point *begin_point, Point *end_point);
@@ -122,42 +116,42 @@ class AStar3D : public RefCounted {
protected:
static void _bind_methods();
- virtual real_t _estimate_cost(int p_from_id, int p_to_id);
- virtual real_t _compute_cost(int p_from_id, int p_to_id);
+ virtual real_t _estimate_cost(int64_t p_from_id, int64_t p_to_id);
+ virtual real_t _compute_cost(int64_t p_from_id, int64_t p_to_id);
GDVIRTUAL2RC(real_t, _estimate_cost, int64_t, int64_t)
GDVIRTUAL2RC(real_t, _compute_cost, int64_t, int64_t)
public:
- int get_available_point_id() const;
-
- void add_point(int p_id, const Vector3 &p_pos, real_t p_weight_scale = 1);
- Vector3 get_point_position(int p_id) const;
- void set_point_position(int p_id, const Vector3 &p_pos);
- real_t get_point_weight_scale(int p_id) const;
- void set_point_weight_scale(int p_id, real_t p_weight_scale);
- void remove_point(int p_id);
- bool has_point(int p_id) const;
- Vector<int> get_point_connections(int p_id);
+ int64_t get_available_point_id() const;
+
+ void add_point(int64_t p_id, const Vector3 &p_pos, real_t p_weight_scale = 1);
+ Vector3 get_point_position(int64_t p_id) const;
+ void set_point_position(int64_t p_id, const Vector3 &p_pos);
+ real_t get_point_weight_scale(int64_t p_id) const;
+ void set_point_weight_scale(int64_t p_id, real_t p_weight_scale);
+ void remove_point(int64_t p_id);
+ bool has_point(int64_t p_id) const;
+ Vector<int64_t> get_point_connections(int64_t p_id);
Array get_point_ids();
- void set_point_disabled(int p_id, bool p_disabled = true);
- bool is_point_disabled(int p_id) const;
+ void set_point_disabled(int64_t p_id, bool p_disabled = true);
+ bool is_point_disabled(int64_t p_id) const;
- void connect_points(int p_id, int p_with_id, bool bidirectional = true);
- void disconnect_points(int p_id, int p_with_id, bool bidirectional = true);
- bool are_points_connected(int p_id, int p_with_id, bool bidirectional = true) const;
+ void connect_points(int64_t p_id, int64_t p_with_id, bool bidirectional = true);
+ void disconnect_points(int64_t p_id, int64_t p_with_id, bool bidirectional = true);
+ bool are_points_connected(int64_t p_id, int64_t p_with_id, bool bidirectional = true) const;
- int get_point_count() const;
- int get_point_capacity() const;
- void reserve_space(int p_num_nodes);
+ int64_t get_point_count() const;
+ int64_t get_point_capacity() const;
+ void reserve_space(int64_t p_num_nodes);
void clear();
- int get_closest_point(const Vector3 &p_point, bool p_include_disabled = false) const;
+ int64_t get_closest_point(const Vector3 &p_point, bool p_include_disabled = false) const;
Vector3 get_closest_position_in_segment(const Vector3 &p_point) const;
- Vector<Vector3> get_point_path(int p_from_id, int p_to_id);
- Vector<int> get_id_path(int p_from_id, int p_to_id);
+ Vector<Vector3> get_point_path(int64_t p_from_id, int64_t p_to_id);
+ Vector<int64_t> get_id_path(int64_t p_from_id, int64_t p_to_id);
AStar3D() {}
~AStar3D();
@@ -172,42 +166,42 @@ class AStar2D : public RefCounted {
protected:
static void _bind_methods();
- virtual real_t _estimate_cost(int p_from_id, int p_to_id);
- virtual real_t _compute_cost(int p_from_id, int p_to_id);
+ virtual real_t _estimate_cost(int64_t p_from_id, int64_t p_to_id);
+ virtual real_t _compute_cost(int64_t p_from_id, int64_t p_to_id);
GDVIRTUAL2RC(real_t, _estimate_cost, int64_t, int64_t)
GDVIRTUAL2RC(real_t, _compute_cost, int64_t, int64_t)
public:
- int get_available_point_id() const;
-
- void add_point(int p_id, const Vector2 &p_pos, real_t p_weight_scale = 1);
- Vector2 get_point_position(int p_id) const;
- void set_point_position(int p_id, const Vector2 &p_pos);
- real_t get_point_weight_scale(int p_id) const;
- void set_point_weight_scale(int p_id, real_t p_weight_scale);
- void remove_point(int p_id);
- bool has_point(int p_id) const;
- Vector<int> get_point_connections(int p_id);
+ int64_t get_available_point_id() const;
+
+ void add_point(int64_t p_id, const Vector2 &p_pos, real_t p_weight_scale = 1);
+ Vector2 get_point_position(int64_t p_id) const;
+ void set_point_position(int64_t p_id, const Vector2 &p_pos);
+ real_t get_point_weight_scale(int64_t p_id) const;
+ void set_point_weight_scale(int64_t p_id, real_t p_weight_scale);
+ void remove_point(int64_t p_id);
+ bool has_point(int64_t p_id) const;
+ Vector<int64_t> get_point_connections(int64_t p_id);
Array get_point_ids();
- void set_point_disabled(int p_id, bool p_disabled = true);
- bool is_point_disabled(int p_id) const;
+ void set_point_disabled(int64_t p_id, bool p_disabled = true);
+ bool is_point_disabled(int64_t p_id) const;
- void connect_points(int p_id, int p_with_id, bool p_bidirectional = true);
- void disconnect_points(int p_id, int p_with_id);
- bool are_points_connected(int p_id, int p_with_id) const;
+ void connect_points(int64_t p_id, int64_t p_with_id, bool p_bidirectional = true);
+ void disconnect_points(int64_t p_id, int64_t p_with_id, bool p_bidirectional = true);
+ bool are_points_connected(int64_t p_id, int64_t p_with_id, bool p_bidirectional = true) const;
- int get_point_count() const;
- int get_point_capacity() const;
- void reserve_space(int p_num_nodes);
+ int64_t get_point_count() const;
+ int64_t get_point_capacity() const;
+ void reserve_space(int64_t p_num_nodes);
void clear();
- int get_closest_point(const Vector2 &p_point, bool p_include_disabled = false) const;
+ int64_t get_closest_point(const Vector2 &p_point, bool p_include_disabled = false) const;
Vector2 get_closest_position_in_segment(const Vector2 &p_point) const;
- Vector<Vector2> get_point_path(int p_from_id, int p_to_id);
- Vector<int> get_id_path(int p_from_id, int p_to_id);
+ Vector<Vector2> get_point_path(int64_t p_from_id, int64_t p_to_id);
+ Vector<int64_t> get_id_path(int64_t p_from_id, int64_t p_to_id);
AStar2D() {}
~AStar2D() {}
diff --git a/core/math/audio_frame.h b/core/math/audio_frame.h
index 8b244e9fe4..b3d63c0094 100644
--- a/core/math/audio_frame.h
+++ b/core/math/audio_frame.h
@@ -52,7 +52,7 @@ static const float AUDIO_MIN_PEAK_DB = -200.0f; // linear2db(AUDIO_PEAK_OFFSET)
struct AudioFrame {
//left and right samples
- float l, r;
+ float l = 0.f, r = 0.f;
_ALWAYS_INLINE_ const float &operator[](int idx) const { return idx == 0 ? l : r; }
_ALWAYS_INLINE_ float &operator[](int idx) { return idx == 0 ? l : r; }
diff --git a/core/math/camera_matrix.cpp b/core/math/camera_matrix.cpp
index 9443addd22..57c53b0adb 100644
--- a/core/math/camera_matrix.cpp
+++ b/core/math/camera_matrix.cpp
@@ -710,6 +710,11 @@ void CameraMatrix::scale_translate_to_fit(const AABB &p_aabb) {
matrix[3][3] = 1;
}
+void CameraMatrix::add_jitter_offset(const Vector2 &p_offset) {
+ matrix[3][0] += p_offset.x;
+ matrix[3][1] += p_offset.y;
+}
+
CameraMatrix::operator Transform3D() const {
Transform3D tr;
const real_t *m = &matrix[0][0];
diff --git a/core/math/camera_matrix.h b/core/math/camera_matrix.h
index f1aea5e4e8..a4051cee3b 100644
--- a/core/math/camera_matrix.h
+++ b/core/math/camera_matrix.h
@@ -95,6 +95,7 @@ struct CameraMatrix {
operator String() const;
void scale_translate_to_fit(const AABB &p_aabb);
+ void add_jitter_offset(const Vector2 &p_offset);
void make_scale(const Vector3 &p_scale);
int get_pixels_per_meter(int p_for_pixel_width) const;
operator Transform3D() const;
diff --git a/core/math/color.cpp b/core/math/color.cpp
index 74552a2894..4bdeafd2f2 100644
--- a/core/math/color.cpp
+++ b/core/math/color.cpp
@@ -35,6 +35,8 @@
#include "core/string/print_string.h"
#include "core/templates/rb_map.h"
+#include "thirdparty/misc/ok_color.h"
+
uint32_t Color::to_argb32() const {
uint32_t c = (uint8_t)Math::round(a * 255);
c <<= 8;
@@ -240,6 +242,20 @@ void Color::set_hsv(float p_h, float p_s, float p_v, float p_alpha) {
}
}
+void Color::set_ok_hsl(float p_h, float p_s, float p_l, float p_alpha) {
+ ok_color::HSL hsl;
+ hsl.h = p_h;
+ hsl.s = p_s;
+ hsl.l = p_l;
+ ok_color new_ok_color;
+ ok_color::RGB rgb = new_ok_color.okhsl_to_srgb(hsl);
+ Color c = Color(rgb.r, rgb.g, rgb.b, p_alpha).clamp();
+ r = c.r;
+ g = c.g;
+ b = c.b;
+ a = c.a;
+}
+
bool Color::is_equal_approx(const Color &p_color) const {
return Math::is_equal_approx(r, p_color.r) && Math::is_equal_approx(g, p_color.g) && Math::is_equal_approx(b, p_color.b) && Math::is_equal_approx(a, p_color.a);
}
@@ -568,3 +584,48 @@ Color Color::operator-() const {
1.0f - b,
1.0f - a);
}
+
+Color Color::from_ok_hsl(float p_h, float p_s, float p_l, float p_alpha) {
+ Color c;
+ c.set_ok_hsl(p_h, p_s, p_l, p_alpha);
+ return c;
+}
+
+float Color::get_ok_hsl_h() const {
+ ok_color::RGB rgb;
+ rgb.r = r;
+ rgb.g = g;
+ rgb.b = b;
+ ok_color new_ok_color;
+ ok_color::HSL ok_hsl = new_ok_color.srgb_to_okhsl(rgb);
+ if (Math::is_nan(ok_hsl.h)) {
+ return 0.0f;
+ }
+ return CLAMP(ok_hsl.h, 0.0f, 1.0f);
+}
+
+float Color::get_ok_hsl_s() const {
+ ok_color::RGB rgb;
+ rgb.r = r;
+ rgb.g = g;
+ rgb.b = b;
+ ok_color new_ok_color;
+ ok_color::HSL ok_hsl = new_ok_color.srgb_to_okhsl(rgb);
+ if (Math::is_nan(ok_hsl.s)) {
+ return 0.0f;
+ }
+ return CLAMP(ok_hsl.s, 0.0f, 1.0f);
+}
+
+float Color::get_ok_hsl_l() const {
+ ok_color::RGB rgb;
+ rgb.r = r;
+ rgb.g = g;
+ rgb.b = b;
+ ok_color new_ok_color;
+ ok_color::HSL ok_hsl = new_ok_color.srgb_to_okhsl(rgb);
+ if (Math::is_nan(ok_hsl.l)) {
+ return 0.0f;
+ }
+ return CLAMP(ok_hsl.l, 0.0f, 1.0f);
+}
diff --git a/core/math/color.h b/core/math/color.h
index 91e0bf5532..0afa6006a8 100644
--- a/core/math/color.h
+++ b/core/math/color.h
@@ -56,6 +56,10 @@ struct _NO_DISCARD_ Color {
float get_s() const;
float get_v() const;
void set_hsv(float p_h, float p_s, float p_v, float p_alpha = 1.0);
+ float get_ok_hsl_h() const;
+ float get_ok_hsl_s() const;
+ float get_ok_hsl_l() const;
+ void set_ok_hsl(float p_h, float p_s, float p_l, float p_alpha = 1.0);
_FORCE_INLINE_ float &operator[](int p_idx) {
return components[p_idx];
@@ -195,6 +199,7 @@ struct _NO_DISCARD_ Color {
static Color get_named_color(int p_idx);
static Color from_string(const String &p_string, const Color &p_default);
static Color from_hsv(float p_h, float p_s, float p_v, float p_alpha = 1.0);
+ static Color from_ok_hsl(float p_h, float p_s, float p_l, float p_alpha = 1.0);
static Color from_rgbe9995(uint32_t p_rgbe);
_FORCE_INLINE_ bool operator<(const Color &p_color) const; //used in set keys
@@ -213,6 +218,9 @@ struct _NO_DISCARD_ Color {
_FORCE_INLINE_ void set_h(float p_h) { set_hsv(p_h, get_s(), get_v()); }
_FORCE_INLINE_ void set_s(float p_s) { set_hsv(get_h(), p_s, get_v()); }
_FORCE_INLINE_ void set_v(float p_v) { set_hsv(get_h(), get_s(), p_v); }
+ _FORCE_INLINE_ void set_ok_hsl_h(float p_h) { set_ok_hsl(p_h, get_ok_hsl_s(), get_ok_hsl_l()); }
+ _FORCE_INLINE_ void set_ok_hsl_s(float p_s) { set_ok_hsl(get_ok_hsl_h(), p_s, get_ok_hsl_l()); }
+ _FORCE_INLINE_ void set_ok_hsl_l(float p_l) { set_ok_hsl(get_ok_hsl_h(), get_ok_hsl_s(), p_l); }
_FORCE_INLINE_ Color() {}
diff --git a/core/math/delaunay_3d.h b/core/math/delaunay_3d.h
index f8a10ec87e..4ab00e1f34 100644
--- a/core/math/delaunay_3d.h
+++ b/core/math/delaunay_3d.h
@@ -101,7 +101,7 @@ class Delaunay3D {
_FORCE_INLINE_ static uint32_t hash(const Triangle &p_triangle) {
uint32_t h = hash_djb2_one_32(p_triangle.triangle[0]);
h = hash_djb2_one_32(p_triangle.triangle[1], h);
- return hash_djb2_one_32(p_triangle.triangle[2], h);
+ return hash_fmix32(hash_djb2_one_32(p_triangle.triangle[2], h));
}
};
diff --git a/core/math/expression.cpp b/core/math/expression.cpp
index 97dc175d94..5a90f68b66 100644
--- a/core/math/expression.cpp
+++ b/core/math/expression.cpp
@@ -1245,7 +1245,7 @@ bool Expression::_execute(const Array &p_inputs, Object *p_instance, Expression:
case Expression::ENode::TYPE_INPUT: {
const Expression::InputNode *in = static_cast<const Expression::InputNode *>(p_node);
if (in->index < 0 || in->index >= p_inputs.size()) {
- r_error_str = vformat(RTR("Invalid input %i (not passed) in expression"), in->index);
+ r_error_str = vformat(RTR("Invalid input %d (not passed) in expression"), in->index);
return true;
}
r_ret = p_inputs[in->index];
diff --git a/core/math/math_funcs.h b/core/math/math_funcs.h
index 068bc0397e..c8a55341aa 100644
--- a/core/math/math_funcs.h
+++ b/core/math/math_funcs.h
@@ -302,11 +302,19 @@ public:
}
static _ALWAYS_INLINE_ double wrapf(double value, double min, double max) {
double range = max - min;
- return is_zero_approx(range) ? min : value - (range * Math::floor((value - min) / range));
+ double result = is_zero_approx(range) ? min : value - (range * Math::floor((value - min) / range));
+ if (is_equal_approx(result, max)) {
+ return min;
+ }
+ return result;
}
static _ALWAYS_INLINE_ float wrapf(float value, float min, float max) {
float range = max - min;
- return is_zero_approx(range) ? min : value - (range * Math::floor((value - min) / range));
+ float result = is_zero_approx(range) ? min : value - (range * Math::floor((value - min) / range));
+ if (is_equal_approx(result, max)) {
+ return min;
+ }
+ return result;
}
static _ALWAYS_INLINE_ float fract(float value) {
diff --git a/core/math/triangle_mesh.cpp b/core/math/triangle_mesh.cpp
index 54461bf70f..4433559e6d 100644
--- a/core/math/triangle_mesh.cpp
+++ b/core/math/triangle_mesh.cpp
@@ -104,9 +104,11 @@ void TriangleMesh::get_indices(Vector<int> *r_triangles_indices) const {
}
}
-void TriangleMesh::create(const Vector<Vector3> &p_faces) {
+void TriangleMesh::create(const Vector<Vector3> &p_faces, const Vector<int32_t> &p_surface_indices) {
valid = false;
+ ERR_FAIL_COND(p_surface_indices.size() && p_surface_indices.size() != p_faces.size());
+
int fc = p_faces.size();
ERR_FAIL_COND(!fc || ((fc % 3) != 0));
fc /= 3;
@@ -121,6 +123,7 @@ void TriangleMesh::create(const Vector<Vector3> &p_faces) {
//goes in-place.
const Vector3 *r = p_faces.ptr();
+ const int32_t *si = p_surface_indices.ptr();
Triangle *w = triangles.ptrw();
HashMap<Vector3, int> db;
@@ -148,6 +151,7 @@ void TriangleMesh::create(const Vector<Vector3> &p_faces) {
}
f.normal = Face3(r[i * 3 + 0], r[i * 3 + 1], r[i * 3 + 2]).get_plane().get_normal();
+ f.surface_index = si ? si[i] : 0;
bw[i].left = -1;
bw[i].right = -1;
@@ -264,7 +268,7 @@ Vector3 TriangleMesh::get_area_normal(const AABB &p_aabb) const {
return n;
}
-bool TriangleMesh::intersect_segment(const Vector3 &p_begin, const Vector3 &p_end, Vector3 &r_point, Vector3 &r_normal) const {
+bool TriangleMesh::intersect_segment(const Vector3 &p_begin, const Vector3 &p_end, Vector3 &r_point, Vector3 &r_normal, int32_t *r_surf_index) const {
uint32_t *stack = (uint32_t *)alloca(sizeof(int) * max_depth);
enum {
@@ -317,6 +321,9 @@ bool TriangleMesh::intersect_segment(const Vector3 &p_begin, const Vector3 &p_en
d = nd;
r_point = res;
r_normal = f3.get_plane().get_normal();
+ if (r_surf_index) {
+ *r_surf_index = s.surface_index;
+ }
inters = true;
}
}
@@ -366,7 +373,7 @@ bool TriangleMesh::intersect_segment(const Vector3 &p_begin, const Vector3 &p_en
return inters;
}
-bool TriangleMesh::intersect_ray(const Vector3 &p_begin, const Vector3 &p_dir, Vector3 &r_point, Vector3 &r_normal) const {
+bool TriangleMesh::intersect_ray(const Vector3 &p_begin, const Vector3 &p_dir, Vector3 &r_point, Vector3 &r_normal, int32_t *r_surf_index) const {
uint32_t *stack = (uint32_t *)alloca(sizeof(int) * max_depth);
enum {
@@ -417,6 +424,9 @@ bool TriangleMesh::intersect_ray(const Vector3 &p_begin, const Vector3 &p_dir, V
d = nd;
r_point = res;
r_normal = f3.get_plane().get_normal();
+ if (r_surf_index) {
+ *r_surf_index = s.surface_index;
+ }
inters = true;
}
}
diff --git a/core/math/triangle_mesh.h b/core/math/triangle_mesh.h
index 1b99945698..166b4adb7a 100644
--- a/core/math/triangle_mesh.h
+++ b/core/math/triangle_mesh.h
@@ -41,6 +41,7 @@ public:
struct Triangle {
Vector3 normal;
int indices[3];
+ int32_t surface_index;
};
private:
@@ -81,8 +82,8 @@ private:
public:
bool is_valid() const;
- bool intersect_segment(const Vector3 &p_begin, const Vector3 &p_end, Vector3 &r_point, Vector3 &r_normal) const;
- bool intersect_ray(const Vector3 &p_begin, const Vector3 &p_dir, Vector3 &r_point, Vector3 &r_normal) const;
+ bool intersect_segment(const Vector3 &p_begin, const Vector3 &p_end, Vector3 &r_point, Vector3 &r_normal, int32_t *r_surf_index = nullptr) const;
+ bool intersect_ray(const Vector3 &p_begin, const Vector3 &p_dir, Vector3 &r_point, Vector3 &r_normal, int32_t *r_surf_index = nullptr) const;
bool intersect_convex_shape(const Plane *p_planes, int p_plane_count, const Vector3 *p_points, int p_point_count) const;
bool inside_convex_shape(const Plane *p_planes, int p_plane_count, const Vector3 *p_points, int p_point_count, Vector3 p_scale = Vector3(1, 1, 1)) const;
Vector3 get_area_normal(const AABB &p_aabb) const;
@@ -92,7 +93,7 @@ public:
const Vector<Vector3> &get_vertices() const { return vertices; }
void get_indices(Vector<int> *r_triangles_indices) const;
- void create(const Vector<Vector3> &p_faces);
+ void create(const Vector<Vector3> &p_faces, const Vector<int32_t> &p_surface_indices = Vector<int32_t>());
TriangleMesh();
};
diff --git a/core/multiplayer/multiplayer_peer.cpp b/core/multiplayer/multiplayer_peer.cpp
index ae3b139bcc..b262903ce8 100644
--- a/core/multiplayer/multiplayer_peer.cpp
+++ b/core/multiplayer/multiplayer_peer.cpp
@@ -36,17 +36,18 @@ uint32_t MultiplayerPeer::generate_unique_id() const {
uint32_t hash = 0;
while (hash == 0 || hash == 1) {
- hash = hash_djb2_one_32(
+ hash = hash_murmur3_one_32(
(uint32_t)OS::get_singleton()->get_ticks_usec());
- hash = hash_djb2_one_32(
+ hash = hash_murmur3_one_32(
(uint32_t)OS::get_singleton()->get_unix_time(), hash);
- hash = hash_djb2_one_32(
+ hash = hash_murmur3_one_32(
(uint32_t)OS::get_singleton()->get_user_data_dir().hash64(), hash);
- hash = hash_djb2_one_32(
+ hash = hash_murmur3_one_32(
(uint32_t)((uint64_t)this), hash); // Rely on ASLR heap
- hash = hash_djb2_one_32(
+ hash = hash_murmur3_one_32(
(uint32_t)((uint64_t)&hash), hash); // Rely on ASLR stack
+ hash = hash_fmix32(hash);
hash = hash & 0x7FFFFFFF; // Make it compatible with unsigned, since negative ID is used for exclusion
}
diff --git a/core/object/callable_method_pointer.cpp b/core/object/callable_method_pointer.cpp
index 1bf926cafc..81f8ab6be2 100644
--- a/core/object/callable_method_pointer.cpp
+++ b/core/object/callable_method_pointer.cpp
@@ -85,9 +85,9 @@ void CallableCustomMethodPointerBase::_setup(uint32_t *p_base_ptr, uint32_t p_pt
// Precompute hash.
for (uint32_t i = 0; i < comp_size; i++) {
if (i == 0) {
- h = hash_djb2_one_32(comp_ptr[i]);
+ h = hash_murmur3_one_32(comp_ptr[i]);
} else {
- h = hash_djb2_one_32(comp_ptr[i], h);
+ h = hash_murmur3_one_32(comp_ptr[i], h);
}
}
}
diff --git a/core/object/class_db.cpp b/core/object/class_db.cpp
index f61bd24efd..3c9f373d12 100644
--- a/core/object/class_db.cpp
+++ b/core/object/class_db.cpp
@@ -164,7 +164,7 @@ uint64_t ClassDB::get_api_hash(APIType p_api) {
OBJTYPE_RLOCK;
#ifdef DEBUG_METHODS_ENABLED
- uint64_t hash = hash_djb2_one_64(HashMapHasherDefault::hash(VERSION_FULL_CONFIG));
+ uint64_t hash = hash_murmur3_one_64(HashMapHasherDefault::hash(VERSION_FULL_CONFIG));
List<StringName> class_list;
ClassDB::get_class_list(&class_list);
@@ -177,8 +177,8 @@ uint64_t ClassDB::get_api_hash(APIType p_api) {
if (t->api != p_api || !t->exposed) {
continue;
}
- hash = hash_djb2_one_64(t->name.hash(), hash);
- hash = hash_djb2_one_64(t->inherits.hash(), hash);
+ hash = hash_murmur3_one_64(t->name.hash(), hash);
+ hash = hash_murmur3_one_64(t->inherits.hash(), hash);
{ //methods
@@ -200,27 +200,27 @@ uint64_t ClassDB::get_api_hash(APIType p_api) {
for (const StringName &F : snames) {
MethodBind *mb = t->method_map[F];
- hash = hash_djb2_one_64(mb->get_name().hash(), hash);
- hash = hash_djb2_one_64(mb->get_argument_count(), hash);
- hash = hash_djb2_one_64(mb->get_argument_type(-1), hash); //return
+ hash = hash_murmur3_one_64(mb->get_name().hash(), hash);
+ hash = hash_murmur3_one_64(mb->get_argument_count(), hash);
+ hash = hash_murmur3_one_64(mb->get_argument_type(-1), hash); //return
for (int i = 0; i < mb->get_argument_count(); i++) {
const PropertyInfo info = mb->get_argument_info(i);
- hash = hash_djb2_one_64(info.type, hash);
- hash = hash_djb2_one_64(info.name.hash(), hash);
- hash = hash_djb2_one_64(info.hint, hash);
- hash = hash_djb2_one_64(info.hint_string.hash(), hash);
+ hash = hash_murmur3_one_64(info.type, hash);
+ hash = hash_murmur3_one_64(info.name.hash(), hash);
+ hash = hash_murmur3_one_64(info.hint, hash);
+ hash = hash_murmur3_one_64(info.hint_string.hash(), hash);
}
- hash = hash_djb2_one_64(mb->get_default_argument_count(), hash);
+ hash = hash_murmur3_one_64(mb->get_default_argument_count(), hash);
for (int i = 0; i < mb->get_default_argument_count(); i++) {
//hash should not change, i hope for tis
Variant da = mb->get_default_argument(i);
- hash = hash_djb2_one_64(da.hash(), hash);
+ hash = hash_murmur3_one_64(da.hash(), hash);
}
- hash = hash_djb2_one_64(mb->get_hint_flags(), hash);
+ hash = hash_murmur3_one_64(mb->get_hint_flags(), hash);
}
}
@@ -228,15 +228,15 @@ uint64_t ClassDB::get_api_hash(APIType p_api) {
List<StringName> snames;
- for (const KeyValue<StringName, int> &F : t->constant_map) {
+ for (const KeyValue<StringName, int64_t> &F : t->constant_map) {
snames.push_back(F.key);
}
snames.sort_custom<StringName::AlphCompare>();
for (const StringName &F : snames) {
- hash = hash_djb2_one_64(F.hash(), hash);
- hash = hash_djb2_one_64(t->constant_map[F], hash);
+ hash = hash_murmur3_one_64(F.hash(), hash);
+ hash = hash_murmur3_one_64(t->constant_map[F], hash);
}
}
@@ -252,9 +252,9 @@ uint64_t ClassDB::get_api_hash(APIType p_api) {
for (const StringName &F : snames) {
MethodInfo &mi = t->signal_map[F];
- hash = hash_djb2_one_64(F.hash(), hash);
+ hash = hash_murmur3_one_64(F.hash(), hash);
for (int i = 0; i < mi.arguments.size(); i++) {
- hash = hash_djb2_one_64(mi.arguments[i].type, hash);
+ hash = hash_murmur3_one_64(mi.arguments[i].type, hash);
}
}
}
@@ -273,23 +273,23 @@ uint64_t ClassDB::get_api_hash(APIType p_api) {
PropertySetGet *psg = t->property_setget.getptr(F);
ERR_FAIL_COND_V(!psg, 0);
- hash = hash_djb2_one_64(F.hash(), hash);
- hash = hash_djb2_one_64(psg->setter.hash(), hash);
- hash = hash_djb2_one_64(psg->getter.hash(), hash);
+ hash = hash_murmur3_one_64(F.hash(), hash);
+ hash = hash_murmur3_one_64(psg->setter.hash(), hash);
+ hash = hash_murmur3_one_64(psg->getter.hash(), hash);
}
}
//property list
for (const PropertyInfo &F : t->property_list) {
- hash = hash_djb2_one_64(F.name.hash(), hash);
- hash = hash_djb2_one_64(F.type, hash);
- hash = hash_djb2_one_64(F.hint, hash);
- hash = hash_djb2_one_64(F.hint_string.hash(), hash);
- hash = hash_djb2_one_64(F.usage, hash);
+ hash = hash_murmur3_one_64(F.name.hash(), hash);
+ hash = hash_murmur3_one_64(F.type, hash);
+ hash = hash_murmur3_one_64(F.hint, hash);
+ hash = hash_murmur3_one_64(F.hint_string.hash(), hash);
+ hash = hash_murmur3_one_64(F.usage, hash);
}
}
- return hash;
+ return hash_fmix32(hash);
#else
return 0;
#endif
@@ -536,7 +536,7 @@ MethodBind *ClassDB::get_method(const StringName &p_class, const StringName &p_n
return nullptr;
}
-void ClassDB::bind_integer_constant(const StringName &p_class, const StringName &p_enum, const StringName &p_name, int p_constant) {
+void ClassDB::bind_integer_constant(const StringName &p_class, const StringName &p_enum, const StringName &p_name, int64_t p_constant) {
OBJTYPE_WLOCK;
ClassInfo *type = classes.getptr(p_class);
@@ -583,7 +583,7 @@ void ClassDB::get_integer_constant_list(const StringName &p_class, List<String>
}
#else
- for (const KeyValue<StringName, int> &E : type->constant_map) {
+ for (const KeyValue<StringName, int64_t> &E : type->constant_map) {
p_constants->push_back(E.key);
}
@@ -596,13 +596,13 @@ void ClassDB::get_integer_constant_list(const StringName &p_class, List<String>
}
}
-int ClassDB::get_integer_constant(const StringName &p_class, const StringName &p_name, bool *p_success) {
+int64_t ClassDB::get_integer_constant(const StringName &p_class, const StringName &p_name, bool *p_success) {
OBJTYPE_RLOCK;
ClassInfo *type = classes.getptr(p_class);
while (type) {
- int *constant = type->constant_map.getptr(p_name);
+ int64_t *constant = type->constant_map.getptr(p_name);
if (constant) {
if (p_success) {
*p_success = true;
@@ -1066,7 +1066,7 @@ bool ClassDB::get_property(Object *p_object, const StringName &p_property, Varia
return true;
}
- const int *c = check->constant_map.getptr(p_property); //constants count
+ const int64_t *c = check->constant_map.getptr(p_property); //constants count
if (c) {
r_value = *c;
return true;
diff --git a/core/object/class_db.h b/core/object/class_db.h
index 2448a86e33..f2f73dc674 100644
--- a/core/object/class_db.h
+++ b/core/object/class_db.h
@@ -103,7 +103,7 @@ public:
ObjectNativeExtension *native_extension = nullptr;
HashMap<StringName, MethodBind *> method_map;
- HashMap<StringName, int> constant_map;
+ HashMap<StringName, int64_t> constant_map;
HashMap<StringName, List<StringName>> enum_map;
HashMap<StringName, MethodInfo> signal_map;
List<PropertyInfo> property_list;
@@ -325,9 +325,9 @@ public:
static void add_virtual_method(const StringName &p_class, const MethodInfo &p_method, bool p_virtual = true, const Vector<String> &p_arg_names = Vector<String>(), bool p_object_core = false);
static void get_virtual_methods(const StringName &p_class, List<MethodInfo> *p_methods, bool p_no_inheritance = false);
- static void bind_integer_constant(const StringName &p_class, const StringName &p_enum, const StringName &p_name, int p_constant);
+ static void bind_integer_constant(const StringName &p_class, const StringName &p_enum, const StringName &p_name, int64_t p_constant);
static void get_integer_constant_list(const StringName &p_class, List<String> *p_constants, bool p_no_inheritance = false);
- static int get_integer_constant(const StringName &p_class, const StringName &p_name, bool *p_success = nullptr);
+ static int64_t get_integer_constant(const StringName &p_class, const StringName &p_name, bool *p_success = nullptr);
static bool has_integer_constant(const StringName &p_class, const StringName &p_name, bool p_no_inheritance = false);
static StringName get_integer_constant_enum(const StringName &p_class, const StringName &p_name, bool p_no_inheritance = false);
diff --git a/core/object/method_bind.cpp b/core/object/method_bind.cpp
index a208c1a2b2..a4474ea53b 100644
--- a/core/object/method_bind.cpp
+++ b/core/object/method_bind.cpp
@@ -35,32 +35,27 @@
#include "method_bind.h"
uint32_t MethodBind::get_hash() const {
- uint32_t hash = hash_djb2_one_32(has_return() ? 1 : 0);
- hash = hash_djb2_one_32(get_argument_count(), hash);
-
-#ifndef _MSC_VER
-#warning This needs proper class name and argument type for hashing
-#endif
-#if 0
+ uint32_t hash = hash_murmur3_one_32(has_return() ? 1 : 0);
+ hash = hash_murmur3_one_32(get_argument_count(), hash);
for (int i = (has_return() ? -1 : 0); i < get_argument_count(); i++) {
PropertyInfo pi = i == -1 ? get_return_info() : get_argument_info(i);
- hash = hash_djb2_one_32(get_argument_type(i), hash);
+ hash = hash_murmur3_one_32(get_argument_type(i), hash);
if (pi.class_name != StringName()) {
- hash = hash_djb2_one_32(pi.class_name.operator String().hash(), hash);
+ hash = hash_murmur3_one_32(pi.class_name.operator String().hash(), hash);
}
}
-#endif
- hash = hash_djb2_one_32(get_default_argument_count(), hash);
+
+ hash = hash_murmur3_one_32(get_default_argument_count(), hash);
for (int i = 0; i < get_default_argument_count(); i++) {
Variant v = get_default_argument(i);
- hash = hash_djb2_one_32(v.hash(), hash);
+ hash = hash_murmur3_one_32(v.hash(), hash);
}
- hash = hash_djb2_one_32(is_const(), hash);
- hash = hash_djb2_one_32(is_vararg(), hash);
+ hash = hash_murmur3_one_32(is_const(), hash);
+ hash = hash_murmur3_one_32(is_vararg(), hash);
- return hash;
+ return hash_fmix32(hash);
}
PropertyInfo MethodBind::get_argument_info(int p_argument) const {
diff --git a/core/object/object.cpp b/core/object/object.cpp
index 0912ea55f0..96469db8c6 100644
--- a/core/object/object.cpp
+++ b/core/object/object.cpp
@@ -209,6 +209,17 @@ MethodInfo::MethodInfo(const String &p_name, const PropertyInfo &p_param1, const
arguments.push_back(p_param5);
}
+MethodInfo::MethodInfo(const String &p_name, const PropertyInfo &p_param1, const PropertyInfo &p_param2, const PropertyInfo &p_param3, const PropertyInfo &p_param4, const PropertyInfo &p_param5, const PropertyInfo &p_param6) :
+ name(p_name),
+ flags(METHOD_FLAG_NORMAL) {
+ arguments.push_back(p_param1);
+ arguments.push_back(p_param2);
+ arguments.push_back(p_param3);
+ arguments.push_back(p_param4);
+ arguments.push_back(p_param5);
+ arguments.push_back(p_param6);
+}
+
MethodInfo::MethodInfo(Variant::Type ret) :
flags(METHOD_FLAG_NORMAL) {
return_val.type = ret;
@@ -265,6 +276,18 @@ MethodInfo::MethodInfo(Variant::Type ret, const String &p_name, const PropertyIn
arguments.push_back(p_param5);
}
+MethodInfo::MethodInfo(Variant::Type ret, const String &p_name, const PropertyInfo &p_param1, const PropertyInfo &p_param2, const PropertyInfo &p_param3, const PropertyInfo &p_param4, const PropertyInfo &p_param5, const PropertyInfo &p_param6) :
+ name(p_name),
+ flags(METHOD_FLAG_NORMAL) {
+ return_val.type = ret;
+ arguments.push_back(p_param1);
+ arguments.push_back(p_param2);
+ arguments.push_back(p_param3);
+ arguments.push_back(p_param4);
+ arguments.push_back(p_param5);
+ arguments.push_back(p_param6);
+}
+
MethodInfo::MethodInfo(const PropertyInfo &p_ret, const String &p_name) :
name(p_name),
return_val(p_ret),
@@ -316,6 +339,18 @@ MethodInfo::MethodInfo(const PropertyInfo &p_ret, const String &p_name, const Pr
arguments.push_back(p_param5);
}
+MethodInfo::MethodInfo(const PropertyInfo &p_ret, const String &p_name, const PropertyInfo &p_param1, const PropertyInfo &p_param2, const PropertyInfo &p_param3, const PropertyInfo &p_param4, const PropertyInfo &p_param5, const PropertyInfo &p_param6) :
+ name(p_name),
+ return_val(p_ret),
+ flags(METHOD_FLAG_NORMAL) {
+ arguments.push_back(p_param1);
+ arguments.push_back(p_param2);
+ arguments.push_back(p_param3);
+ arguments.push_back(p_param4);
+ arguments.push_back(p_param5);
+ arguments.push_back(p_param6);
+}
+
Object::Connection::operator Variant() const {
Dictionary d;
d["signal"] = signal;
@@ -1196,7 +1231,7 @@ Array Object::_get_signal_list() const {
return ret;
}
-Array Object::_get_signal_connection_list(const String &p_signal) const {
+Array Object::_get_signal_connection_list(const StringName &p_signal) const {
List<Connection> conns;
get_all_signal_connections(&conns);
@@ -1422,11 +1457,11 @@ void Object::_disconnect(const StringName &p_signal, const Callable &p_callable,
}
}
-void Object::_set_bind(const String &p_set, const Variant &p_value) {
+void Object::_set_bind(const StringName &p_set, const Variant &p_value) {
set(p_set, p_value);
}
-Variant Object::_get_bind(const String &p_name) const {
+Variant Object::_get_bind(const StringName &p_name) const {
return get(p_name);
}
diff --git a/core/object/object.h b/core/object/object.h
index 988d261d77..02dd875acf 100644
--- a/core/object/object.h
+++ b/core/object/object.h
@@ -52,6 +52,7 @@ enum PropertyHint {
PROPERTY_HINT_ENUM_SUGGESTION, ///< hint_text= "val1,val2,val3,etc"
PROPERTY_HINT_EXP_EASING, /// exponential easing function (Math::ease) use "attenuation" hint string to revert (flip h), "full" to also include in/out. (ie: "attenuation,inout")
PROPERTY_HINT_LENGTH, ///< hint_text= "length" (as integer)
+ PROPERTY_HINT_LINK,
PROPERTY_HINT_KEY_ACCEL, ///< hint_text= "length" (as integer)
PROPERTY_HINT_FLAGS, ///< hint_text= "flag1,flag2,etc" (as bit flags)
PROPERTY_HINT_LAYERS_2D_RENDER,
@@ -84,6 +85,7 @@ enum PropertyHint {
PROPERTY_HINT_OBJECT_TOO_BIG, ///< object is too big to send
PROPERTY_HINT_NODE_PATH_VALID_TYPES,
PROPERTY_HINT_SAVE_FILE, ///< a file path must be passed, hint_text (optionally) is a filter "*.png,*.wav,*.doc,". This opens a save dialog
+ PROPERTY_HINT_GLOBAL_SAVE_FILE, ///< a file path must be passed, hint_text (optionally) is a filter "*.png,*.wav,*.doc,". This opens a save dialog
PROPERTY_HINT_INT_IS_OBJECTID,
PROPERTY_HINT_ARRAY_TYPE,
PROPERTY_HINT_INT_IS_POINTER,
@@ -224,6 +226,7 @@ struct MethodInfo {
MethodInfo(const String &p_name, const PropertyInfo &p_param1, const PropertyInfo &p_param2, const PropertyInfo &p_param3);
MethodInfo(const String &p_name, const PropertyInfo &p_param1, const PropertyInfo &p_param2, const PropertyInfo &p_param3, const PropertyInfo &p_param4);
MethodInfo(const String &p_name, const PropertyInfo &p_param1, const PropertyInfo &p_param2, const PropertyInfo &p_param3, const PropertyInfo &p_param4, const PropertyInfo &p_param5);
+ MethodInfo(const String &p_name, const PropertyInfo &p_param1, const PropertyInfo &p_param2, const PropertyInfo &p_param3, const PropertyInfo &p_param4, const PropertyInfo &p_param5, const PropertyInfo &p_param6);
MethodInfo(Variant::Type ret);
MethodInfo(Variant::Type ret, const String &p_name);
MethodInfo(Variant::Type ret, const String &p_name, const PropertyInfo &p_param1);
@@ -231,12 +234,14 @@ struct MethodInfo {
MethodInfo(Variant::Type ret, const String &p_name, const PropertyInfo &p_param1, const PropertyInfo &p_param2, const PropertyInfo &p_param3);
MethodInfo(Variant::Type ret, const String &p_name, const PropertyInfo &p_param1, const PropertyInfo &p_param2, const PropertyInfo &p_param3, const PropertyInfo &p_param4);
MethodInfo(Variant::Type ret, const String &p_name, const PropertyInfo &p_param1, const PropertyInfo &p_param2, const PropertyInfo &p_param3, const PropertyInfo &p_param4, const PropertyInfo &p_param5);
+ MethodInfo(Variant::Type ret, const String &p_name, const PropertyInfo &p_param1, const PropertyInfo &p_param2, const PropertyInfo &p_param3, const PropertyInfo &p_param4, const PropertyInfo &p_param5, const PropertyInfo &p_param6);
MethodInfo(const PropertyInfo &p_ret, const String &p_name);
MethodInfo(const PropertyInfo &p_ret, const String &p_name, const PropertyInfo &p_param1);
MethodInfo(const PropertyInfo &p_ret, const String &p_name, const PropertyInfo &p_param1, const PropertyInfo &p_param2);
MethodInfo(const PropertyInfo &p_ret, const String &p_name, const PropertyInfo &p_param1, const PropertyInfo &p_param2, const PropertyInfo &p_param3);
MethodInfo(const PropertyInfo &p_ret, const String &p_name, const PropertyInfo &p_param1, const PropertyInfo &p_param2, const PropertyInfo &p_param3, const PropertyInfo &p_param4);
MethodInfo(const PropertyInfo &p_ret, const String &p_name, const PropertyInfo &p_param1, const PropertyInfo &p_param2, const PropertyInfo &p_param3, const PropertyInfo &p_param4, const PropertyInfo &p_param5);
+ MethodInfo(const PropertyInfo &p_ret, const String &p_name, const PropertyInfo &p_param1, const PropertyInfo &p_param2, const PropertyInfo &p_param3, const PropertyInfo &p_param4, const PropertyInfo &p_param5, const PropertyInfo &p_param6);
};
// API used to extend in GDNative and other C compatible compiled languages.
@@ -523,10 +528,10 @@ private:
bool _has_user_signal(const StringName &p_name) const;
Error _emit_signal(const Variant **p_args, int p_argcount, Callable::CallError &r_error);
Array _get_signal_list() const;
- Array _get_signal_connection_list(const String &p_signal) const;
+ Array _get_signal_connection_list(const StringName &p_signal) const;
Array _get_incoming_connections() const;
- void _set_bind(const String &p_set, const Variant &p_value);
- Variant _get_bind(const String &p_name) const;
+ void _set_bind(const StringName &p_set, const Variant &p_value);
+ Variant _get_bind(const StringName &p_name) const;
void _set_indexed_bind(const NodePath &p_name, const Variant &p_value);
Variant _get_indexed_bind(const NodePath &p_name) const;
diff --git a/core/os/keyboard.cpp b/core/os/keyboard.cpp
index 24907d34c8..3e690991d9 100644
--- a/core/os/keyboard.cpp
+++ b/core/os/keyboard.cpp
@@ -86,6 +86,25 @@ static const _KeyCodeText _keycodes[] = {
{Key::F14 ,"F14"},
{Key::F15 ,"F15"},
{Key::F16 ,"F16"},
+ {Key::F17 ,"F17"},
+ {Key::F18 ,"F18"},
+ {Key::F19 ,"F19"},
+ {Key::F20 ,"F20"},
+ {Key::F21 ,"F21"},
+ {Key::F22 ,"F22"},
+ {Key::F23 ,"F23"},
+ {Key::F24 ,"F24"},
+ {Key::F25 ,"F25"},
+ {Key::F26 ,"F26"},
+ {Key::F27 ,"F27"},
+ {Key::F28 ,"F28"},
+ {Key::F29 ,"F29"},
+ {Key::F30 ,"F30"},
+ {Key::F31 ,"F31"},
+ {Key::F32 ,"F32"},
+ {Key::F33 ,"F33"},
+ {Key::F34 ,"F34"},
+ {Key::F35 ,"F35"},
{Key::KP_MULTIPLY ,"Kp Multiply"},
{Key::KP_DIVIDE ,"Kp Divide"},
{Key::KP_SUBTRACT ,"Kp Subtract"},
@@ -333,6 +352,25 @@ bool keycode_has_unicode(Key p_keycode) {
case Key::F14:
case Key::F15:
case Key::F16:
+ case Key::F17:
+ case Key::F18:
+ case Key::F19:
+ case Key::F20:
+ case Key::F21:
+ case Key::F22:
+ case Key::F23:
+ case Key::F24:
+ case Key::F25:
+ case Key::F26:
+ case Key::F27:
+ case Key::F28:
+ case Key::F29:
+ case Key::F30:
+ case Key::F31:
+ case Key::F32:
+ case Key::F33:
+ case Key::F34:
+ case Key::F35:
case Key::SUPER_L:
case Key::SUPER_R:
case Key::MENU:
diff --git a/core/os/keyboard.h b/core/os/keyboard.h
index 3176a8a210..517a53e505 100644
--- a/core/os/keyboard.h
+++ b/core/os/keyboard.h
@@ -85,6 +85,25 @@ enum class Key {
F14 = SPECIAL | 0x29,
F15 = SPECIAL | 0x2A,
F16 = SPECIAL | 0x2B,
+ F17 = SPECIAL | 0x2C,
+ F18 = SPECIAL | 0x2D,
+ F19 = SPECIAL | 0x2E,
+ F20 = SPECIAL | 0x2F,
+ F21 = SPECIAL | 0x30,
+ F22 = SPECIAL | 0x31,
+ F23 = SPECIAL | 0x32,
+ F24 = SPECIAL | 0x33,
+ F25 = SPECIAL | 0x34,
+ F26 = SPECIAL | 0x35,
+ F27 = SPECIAL | 0x36,
+ F28 = SPECIAL | 0x37,
+ F29 = SPECIAL | 0x38,
+ F30 = SPECIAL | 0x39,
+ F31 = SPECIAL | 0x3A,
+ F32 = SPECIAL | 0x3B,
+ F33 = SPECIAL | 0x3C,
+ F34 = SPECIAL | 0x3D,
+ F35 = SPECIAL | 0x3E,
KP_MULTIPLY = SPECIAL | 0x81,
KP_DIVIDE = SPECIAL | 0x82,
KP_SUBTRACT = SPECIAL | 0x83,
@@ -100,54 +119,54 @@ enum class Key {
KP_7 = SPECIAL | 0x8D,
KP_8 = SPECIAL | 0x8E,
KP_9 = SPECIAL | 0x8F,
- SUPER_L = SPECIAL | 0x2C,
- SUPER_R = SPECIAL | 0x2D,
- MENU = SPECIAL | 0x2E,
- HYPER_L = SPECIAL | 0x2F,
- HYPER_R = SPECIAL | 0x30,
- HELP = SPECIAL | 0x31,
- DIRECTION_L = SPECIAL | 0x32,
- DIRECTION_R = SPECIAL | 0x33,
- BACK = SPECIAL | 0x40,
- FORWARD = SPECIAL | 0x41,
- STOP = SPECIAL | 0x42,
- REFRESH = SPECIAL | 0x43,
- VOLUMEDOWN = SPECIAL | 0x44,
- VOLUMEMUTE = SPECIAL | 0x45,
- VOLUMEUP = SPECIAL | 0x46,
- BASSBOOST = SPECIAL | 0x47,
- BASSUP = SPECIAL | 0x48,
- BASSDOWN = SPECIAL | 0x49,
- TREBLEUP = SPECIAL | 0x4A,
- TREBLEDOWN = SPECIAL | 0x4B,
- MEDIAPLAY = SPECIAL | 0x4C,
- MEDIASTOP = SPECIAL | 0x4D,
- MEDIAPREVIOUS = SPECIAL | 0x4E,
- MEDIANEXT = SPECIAL | 0x4F,
- MEDIARECORD = SPECIAL | 0x50,
- HOMEPAGE = SPECIAL | 0x51,
- FAVORITES = SPECIAL | 0x52,
- SEARCH = SPECIAL | 0x53,
- STANDBY = SPECIAL | 0x54,
- OPENURL = SPECIAL | 0x55,
- LAUNCHMAIL = SPECIAL | 0x56,
- LAUNCHMEDIA = SPECIAL | 0x57,
- LAUNCH0 = SPECIAL | 0x58,
- LAUNCH1 = SPECIAL | 0x59,
- LAUNCH2 = SPECIAL | 0x5A,
- LAUNCH3 = SPECIAL | 0x5B,
- LAUNCH4 = SPECIAL | 0x5C,
- LAUNCH5 = SPECIAL | 0x5D,
- LAUNCH6 = SPECIAL | 0x5E,
- LAUNCH7 = SPECIAL | 0x5F,
- LAUNCH8 = SPECIAL | 0x60,
- LAUNCH9 = SPECIAL | 0x61,
- LAUNCHA = SPECIAL | 0x62,
- LAUNCHB = SPECIAL | 0x63,
- LAUNCHC = SPECIAL | 0x64,
- LAUNCHD = SPECIAL | 0x65,
- LAUNCHE = SPECIAL | 0x66,
- LAUNCHF = SPECIAL | 0x67,
+ SUPER_L = SPECIAL | 0x40,
+ SUPER_R = SPECIAL | 0x41,
+ MENU = SPECIAL | 0x42,
+ HYPER_L = SPECIAL | 0x43,
+ HYPER_R = SPECIAL | 0x44,
+ HELP = SPECIAL | 0x45,
+ DIRECTION_L = SPECIAL | 0x46,
+ DIRECTION_R = SPECIAL | 0x47,
+ BACK = SPECIAL | 0x48,
+ FORWARD = SPECIAL | 0x49,
+ STOP = SPECIAL | 0x4A,
+ REFRESH = SPECIAL | 0x4B,
+ VOLUMEDOWN = SPECIAL | 0x4C,
+ VOLUMEMUTE = SPECIAL | 0x4D,
+ VOLUMEUP = SPECIAL | 0x4E,
+ BASSBOOST = SPECIAL | 0x4F,
+ BASSUP = SPECIAL | 0x50,
+ BASSDOWN = SPECIAL | 0x51,
+ TREBLEUP = SPECIAL | 0x52,
+ TREBLEDOWN = SPECIAL | 0x53,
+ MEDIAPLAY = SPECIAL | 0x54,
+ MEDIASTOP = SPECIAL | 0x55,
+ MEDIAPREVIOUS = SPECIAL | 0x56,
+ MEDIANEXT = SPECIAL | 0x57,
+ MEDIARECORD = SPECIAL | 0x58,
+ HOMEPAGE = SPECIAL | 0x59,
+ FAVORITES = SPECIAL | 0x5A,
+ SEARCH = SPECIAL | 0x5B,
+ STANDBY = SPECIAL | 0x5C,
+ OPENURL = SPECIAL | 0x5D,
+ LAUNCHMAIL = SPECIAL | 0x5E,
+ LAUNCHMEDIA = SPECIAL | 0x5F,
+ LAUNCH0 = SPECIAL | 0x60,
+ LAUNCH1 = SPECIAL | 0x61,
+ LAUNCH2 = SPECIAL | 0x62,
+ LAUNCH3 = SPECIAL | 0x63,
+ LAUNCH4 = SPECIAL | 0x64,
+ LAUNCH5 = SPECIAL | 0x65,
+ LAUNCH6 = SPECIAL | 0x66,
+ LAUNCH7 = SPECIAL | 0x67,
+ LAUNCH8 = SPECIAL | 0x68,
+ LAUNCH9 = SPECIAL | 0x69,
+ LAUNCHA = SPECIAL | 0x6A,
+ LAUNCHB = SPECIAL | 0x6B,
+ LAUNCHC = SPECIAL | 0x6C,
+ LAUNCHD = SPECIAL | 0x6D,
+ LAUNCHE = SPECIAL | 0x6E,
+ LAUNCHF = SPECIAL | 0x6F,
UNKNOWN = SPECIAL | 0xFFFFFF,
diff --git a/core/os/os.cpp b/core/os/os.cpp
index 4f7095b0fc..93477f4288 100644
--- a/core/os/os.cpp
+++ b/core/os/os.cpp
@@ -388,6 +388,10 @@ bool OS::has_feature(const String &p_feature) {
return true;
}
+ if (p_feature == "movie") {
+ return _writing_movie;
+ }
+
#ifdef DEBUG_ENABLED
if (p_feature == "debug") {
return true;
@@ -413,19 +417,29 @@ bool OS::has_feature(const String &p_feature) {
if (sizeof(void *) == 4 && p_feature == "32") {
return true;
}
-#if defined(__x86_64) || defined(__x86_64__) || defined(__amd64__)
+#if defined(__x86_64) || defined(__x86_64__) || defined(__amd64__) || defined(__i386) || defined(__i386__) || defined(_M_IX86) || defined(_M_X64)
+#if defined(__x86_64) || defined(__x86_64__) || defined(__amd64__) || defined(_M_X64)
if (p_feature == "x86_64") {
return true;
}
-#elif (defined(__i386) || defined(__i386__))
+#elif defined(__i386) || defined(__i386__) || defined(_M_IX86)
+ if (p_feature == "x86_32") {
+ return true;
+ }
+#endif
if (p_feature == "x86") {
return true;
}
-#elif defined(__aarch64__)
+#elif defined(__arm__) || defined(__aarch64__) || defined(_M_ARM) || defined(_M_ARM64)
+#if defined(__aarch64__) || defined(_M_ARM64)
if (p_feature == "arm64") {
return true;
}
-#elif defined(__arm__)
+#elif defined(__arm__) || defined(_M_ARM)
+ if (p_feature == "arm32") {
+ return true;
+ }
+#endif
#if defined(__ARM_ARCH_7A__)
if (p_feature == "armv7a" || p_feature == "armv7") {
return true;
@@ -457,6 +471,19 @@ bool OS::has_feature(const String &p_feature) {
if (p_feature == "ppc") {
return true;
}
+#elif defined(__wasm__)
+#if defined(__wasm64__)
+ if (p_feature == "wasm64") {
+ return true;
+ }
+#elif defined(__wasm32__)
+ if (p_feature == "wasm32") {
+ return true;
+ }
+#endif
+ if (p_feature == "wasm") {
+ return true;
+ }
#endif
if (_check_internal_feature_support(p_feature)) {
diff --git a/core/os/os.h b/core/os/os.h
index 157b8ab992..c6ea9d869a 100644
--- a/core/os/os.h
+++ b/core/os/os.h
@@ -58,6 +58,7 @@ class OS {
bool _allow_layered = false;
bool _stdout_enabled = true;
bool _stderr_enabled = true;
+ bool _writing_movie = false;
CompositeLogger *_logger = nullptr;
diff --git a/core/string/ustring.cpp b/core/string/ustring.cpp
index 44df349613..df1aae5370 100644
--- a/core/string/ustring.cpp
+++ b/core/string/ustring.cpp
@@ -3359,36 +3359,36 @@ String String::repeat(int p_count) const {
return new_string;
}
-String String::left(int p_pos) const {
- if (p_pos < 0) {
- p_pos = length() + p_pos;
+String String::left(int p_len) const {
+ if (p_len < 0) {
+ p_len = length() + p_len;
}
- if (p_pos <= 0) {
+ if (p_len <= 0) {
return "";
}
- if (p_pos >= length()) {
+ if (p_len >= length()) {
return *this;
}
- return substr(0, p_pos);
+ return substr(0, p_len);
}
-String String::right(int p_pos) const {
- if (p_pos < 0) {
- p_pos = length() + p_pos;
+String String::right(int p_len) const {
+ if (p_len < 0) {
+ p_len = length() + p_len;
}
- if (p_pos <= 0) {
+ if (p_len <= 0) {
return "";
}
- if (p_pos >= length()) {
+ if (p_len >= length()) {
return *this;
}
- return substr(length() - p_pos);
+ return substr(length() - p_len);
}
char32_t String::unicode_at(int p_idx) const {
@@ -3712,18 +3712,15 @@ String String::uri_encode() const {
const CharString temp = utf8();
String res;
for (int i = 0; i < temp.length(); ++i) {
- char ord = temp[i];
+ uint8_t ord = temp[i];
if (ord == '.' || ord == '-' || ord == '~' || is_ascii_identifier_char(ord)) {
res += ord;
} else {
- char h_Val[3];
-#if defined(__GNUC__) || defined(_MSC_VER)
- snprintf(h_Val, 3, "%02hhX", ord);
-#else
- sprintf(h_Val, "%02hhX", ord);
-#endif
- res += "%";
- res += h_Val;
+ char p[4] = { '%', 0, 0, 0 };
+ static const char hex[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
+ p[1] = hex[ord >> 4];
+ p[2] = hex[ord & 0xF];
+ res += p;
}
}
return res;
diff --git a/core/string/ustring.h b/core/string/ustring.h
index e4f6c3327a..11d0974381 100644
--- a/core/string/ustring.h
+++ b/core/string/ustring.h
@@ -356,8 +356,8 @@ public:
int count(const String &p_string, int p_from = 0, int p_to = 0) const;
int countn(const String &p_string, int p_from = 0, int p_to = 0) const;
- String left(int p_pos) const;
- String right(int p_pos) const;
+ String left(int p_len) const;
+ String right(int p_len) const;
String indent(const String &p_prefix) const;
String dedent() const;
String strip_edges(bool left = true, bool right = true) const;
diff --git a/core/templates/hashfuncs.h b/core/templates/hashfuncs.h
index 1330d55270..b0371f2ab5 100644
--- a/core/templates/hashfuncs.h
+++ b/core/templates/hashfuncs.h
@@ -56,30 +56,30 @@
* @param C String
* @return 32-bits hashcode
*/
-static inline uint32_t hash_djb2(const char *p_cstr) {
+static _FORCE_INLINE_ uint32_t hash_djb2(const char *p_cstr) {
const unsigned char *chr = (const unsigned char *)p_cstr;
uint32_t hash = 5381;
uint32_t c;
while ((c = *chr++)) {
- hash = ((hash << 5) + hash) + c; /* hash * 33 + c */
+ hash = ((hash << 5) + hash) ^ c; /* hash * 33 ^ c */
}
return hash;
}
-static inline uint32_t hash_djb2_buffer(const uint8_t *p_buff, int p_len, uint32_t p_prev = 5381) {
+static _FORCE_INLINE_ uint32_t hash_djb2_buffer(const uint8_t *p_buff, int p_len, uint32_t p_prev = 5381) {
uint32_t hash = p_prev;
for (int i = 0; i < p_len; i++) {
- hash = ((hash << 5) + hash) + p_buff[i]; /* hash * 33 + c */
+ hash = ((hash << 5) + hash) ^ p_buff[i]; /* hash * 33 + c */
}
return hash;
}
-static inline uint32_t hash_djb2_one_32(uint32_t p_in, uint32_t p_prev = 5381) {
- return ((p_prev << 5) + p_prev) + p_in;
+static _FORCE_INLINE_ uint32_t hash_djb2_one_32(uint32_t p_in, uint32_t p_prev = 5381) {
+ return ((p_prev << 5) + p_prev) ^ p_in;
}
/**
@@ -89,7 +89,7 @@ static inline uint32_t hash_djb2_one_32(uint32_t p_in, uint32_t p_prev = 5381) {
* @param p_int - 64-bit unsigned integer key to be hashed
* @return unsigned 32-bit value representing hashcode
*/
-static inline uint32_t hash_one_uint64(const uint64_t p_int) {
+static _FORCE_INLINE_ uint32_t hash_one_uint64(const uint64_t p_int) {
uint64_t v = p_int;
v = (~v) + (v << 18); // v = (v << 18) - v - 1;
v = v ^ (v >> 31);
@@ -100,7 +100,134 @@ static inline uint32_t hash_one_uint64(const uint64_t p_int) {
return uint32_t(v);
}
-static inline uint32_t hash_djb2_one_float(double p_in, uint32_t p_prev = 5381) {
+#define HASH_MURMUR3_SEED 0x7F07C65
+// Murmurhash3 32-bit version.
+// All MurmurHash versions are public domain software, and the author disclaims all copyright to their code.
+
+static _FORCE_INLINE_ uint32_t hash_murmur3_one_32(uint32_t p_in, uint32_t p_seed = HASH_MURMUR3_SEED) {
+ p_in *= 0xcc9e2d51;
+ p_in = (p_in << 15) | (p_in >> 17);
+ p_in *= 0x1b873593;
+
+ p_seed ^= p_in;
+ p_seed = (p_seed << 13) | (p_seed >> 19);
+ p_seed = p_seed * 5 + 0xe6546b64;
+
+ return p_seed;
+}
+
+static _FORCE_INLINE_ uint32_t hash_murmur3_one_float(float p_in, uint32_t p_seed = HASH_MURMUR3_SEED) {
+ union {
+ float f;
+ uint32_t i;
+ } u;
+
+ // Normalize +/- 0.0 and NaN values so they hash the same.
+ if (p_in == 0.0f) {
+ u.f = 0.0;
+ } else if (Math::is_nan(p_in)) {
+ u.f = NAN;
+ } else {
+ u.f = p_in;
+ }
+
+ return hash_murmur3_one_32(u.i, p_seed);
+}
+
+static _FORCE_INLINE_ uint32_t hash_murmur3_one_64(uint64_t p_in, uint32_t p_seed = HASH_MURMUR3_SEED) {
+ p_seed = hash_murmur3_one_32(p_in & 0xFFFFFFFF, p_seed);
+ return hash_murmur3_one_32(p_in >> 32, p_seed);
+}
+
+static _FORCE_INLINE_ uint32_t hash_murmur3_one_double(double p_in, uint32_t p_seed = HASH_MURMUR3_SEED) {
+ union {
+ double d;
+ uint64_t i;
+ } u;
+
+ // Normalize +/- 0.0 and NaN values so they hash the same.
+ if (p_in == 0.0f) {
+ u.d = 0.0;
+ } else if (Math::is_nan(p_in)) {
+ u.d = NAN;
+ } else {
+ u.d = p_in;
+ }
+
+ return hash_murmur3_one_64(u.i, p_seed);
+}
+
+static _FORCE_INLINE_ uint32_t hash_murmur3_one_real(real_t p_in, uint32_t p_seed = HASH_MURMUR3_SEED) {
+#ifdef REAL_T_IS_DOUBLE
+ return hash_murmur3_one_double(p_in, p_seed);
+#else
+ return hash_murmur3_one_float(p_in, p_seed);
+#endif
+}
+
+static _FORCE_INLINE_ uint32_t hash_rotl32(uint32_t x, int8_t r) {
+ return (x << r) | (x >> (32 - r));
+}
+
+static _FORCE_INLINE_ uint32_t hash_fmix32(uint32_t h) {
+ h ^= h >> 16;
+ h *= 0x85ebca6b;
+ h ^= h >> 13;
+ h *= 0xc2b2ae35;
+ h ^= h >> 16;
+
+ return h;
+}
+
+static _FORCE_INLINE_ uint32_t hash_murmur3_buffer(const void *key, int length, const uint32_t seed = HASH_MURMUR3_SEED) {
+ // Although not required, this is a random prime number.
+ const uint8_t *data = (const uint8_t *)key;
+ const int nblocks = length / 4;
+
+ uint32_t h1 = seed;
+
+ const uint32_t c1 = 0xcc9e2d51;
+ const uint32_t c2 = 0x1b873593;
+
+ const uint32_t *blocks = (const uint32_t *)(data + nblocks * 4);
+
+ for (int i = -nblocks; i; i++) {
+ uint32_t k1 = blocks[i];
+
+ k1 *= c1;
+ k1 = hash_rotl32(k1, 15);
+ k1 *= c2;
+
+ h1 ^= k1;
+ h1 = hash_rotl32(h1, 13);
+ h1 = h1 * 5 + 0xe6546b64;
+ }
+
+ const uint8_t *tail = (const uint8_t *)(data + nblocks * 4);
+
+ uint32_t k1 = 0;
+
+ switch (length & 3) {
+ case 3:
+ k1 ^= tail[2] << 16;
+ [[fallthrough]];
+ case 2:
+ k1 ^= tail[1] << 8;
+ [[fallthrough]];
+ case 1:
+ k1 ^= tail[0];
+ k1 *= c1;
+ k1 = hash_rotl32(k1, 15);
+ k1 *= c2;
+ h1 ^= k1;
+ };
+
+ // Finalize with additional bit mixing.
+ h1 ^= length;
+ return hash_fmix32(h1);
+}
+
+static _FORCE_INLINE_ uint32_t hash_djb2_one_float(double p_in, uint32_t p_prev = 5381) {
union {
double d;
uint64_t i;
@@ -119,7 +246,7 @@ static inline uint32_t hash_djb2_one_float(double p_in, uint32_t p_prev = 5381)
}
template <class T>
-static inline uint32_t make_uint32_t(T p_in) {
+static _FORCE_INLINE_ uint32_t hash_make_uint32_t(T p_in) {
union {
T t;
uint32_t _u32;
@@ -129,7 +256,7 @@ static inline uint32_t make_uint32_t(T p_in) {
return _u._u32;
}
-static inline uint64_t hash_djb2_one_float_64(double p_in, uint64_t p_prev = 5381) {
+static _FORCE_INLINE_ uint64_t hash_djb2_one_float_64(double p_in, uint64_t p_prev = 5381) {
union {
double d;
uint64_t i;
@@ -147,12 +274,12 @@ static inline uint64_t hash_djb2_one_float_64(double p_in, uint64_t p_prev = 538
return ((p_prev << 5) + p_prev) + u.i;
}
-static inline uint64_t hash_djb2_one_64(uint64_t p_in, uint64_t p_prev = 5381) {
- return ((p_prev << 5) + p_prev) + p_in;
+static _FORCE_INLINE_ uint64_t hash_djb2_one_64(uint64_t p_in, uint64_t p_prev = 5381) {
+ return ((p_prev << 5) + p_prev) ^ p_in;
}
template <class T>
-static inline uint64_t make_uint64_t(T p_in) {
+static _FORCE_INLINE_ uint64_t hash_make_uint64_t(T p_in) {
union {
T t;
uint64_t _u64;
@@ -167,78 +294,78 @@ template <class T>
class Ref;
struct HashMapHasherDefault {
- static _FORCE_INLINE_ uint32_t hash(const String &p_string) { return p_string.hash(); }
- static _FORCE_INLINE_ uint32_t hash(const char *p_cstr) { return hash_djb2(p_cstr); }
- static _FORCE_INLINE_ uint32_t hash(const uint64_t p_int) { return hash_one_uint64(p_int); }
- static _FORCE_INLINE_ uint32_t hash(const ObjectID &p_id) { return hash_one_uint64(p_id); }
-
- static _FORCE_INLINE_ uint32_t hash(const int64_t p_int) { return hash(uint64_t(p_int)); }
- static _FORCE_INLINE_ uint32_t hash(const float p_float) { return hash_djb2_one_float(p_float); }
- static _FORCE_INLINE_ uint32_t hash(const double p_double) { return hash_djb2_one_float(p_double); }
- static _FORCE_INLINE_ uint32_t hash(const uint32_t p_int) { return p_int; }
- static _FORCE_INLINE_ uint32_t hash(const int32_t p_int) { return (uint32_t)p_int; }
- static _FORCE_INLINE_ uint32_t hash(const uint16_t p_int) { return p_int; }
- static _FORCE_INLINE_ uint32_t hash(const int16_t p_int) { return (uint32_t)p_int; }
- static _FORCE_INLINE_ uint32_t hash(const uint8_t p_int) { return p_int; }
- static _FORCE_INLINE_ uint32_t hash(const int8_t p_int) { return (uint32_t)p_int; }
- static _FORCE_INLINE_ uint32_t hash(const wchar_t p_wchar) { return (uint32_t)p_wchar; }
- static _FORCE_INLINE_ uint32_t hash(const char16_t p_uchar) { return (uint32_t)p_uchar; }
- static _FORCE_INLINE_ uint32_t hash(const char32_t p_uchar) { return (uint32_t)p_uchar; }
- static _FORCE_INLINE_ uint32_t hash(const RID &p_rid) { return hash_one_uint64(p_rid.get_id()); }
-
- static _FORCE_INLINE_ uint32_t hash(const StringName &p_string_name) { return p_string_name.hash(); }
- static _FORCE_INLINE_ uint32_t hash(const NodePath &p_path) { return p_path.hash(); }
-
+ // Generic hash function for any type.
template <class T>
static _FORCE_INLINE_ uint32_t hash(const T *p_pointer) { return hash_one_uint64((uint64_t)p_pointer); }
template <class T>
static _FORCE_INLINE_ uint32_t hash(const Ref<T> &p_ref) { return hash_one_uint64((uint64_t)p_ref.operator->()); }
+ static _FORCE_INLINE_ uint32_t hash(const String &p_string) { return p_string.hash(); }
+ static _FORCE_INLINE_ uint32_t hash(const char *p_cstr) { return hash_djb2(p_cstr); }
+ static _FORCE_INLINE_ uint32_t hash(const wchar_t p_wchar) { return hash_fmix32(p_wchar); }
+ static _FORCE_INLINE_ uint32_t hash(const char16_t p_uchar) { return hash_fmix32(p_uchar); }
+ static _FORCE_INLINE_ uint32_t hash(const char32_t p_uchar) { return hash_fmix32(p_uchar); }
+ static _FORCE_INLINE_ uint32_t hash(const RID &p_rid) { return hash_one_uint64(p_rid.get_id()); }
+ static _FORCE_INLINE_ uint32_t hash(const StringName &p_string_name) { return p_string_name.hash(); }
+ static _FORCE_INLINE_ uint32_t hash(const NodePath &p_path) { return p_path.hash(); }
+ static _FORCE_INLINE_ uint32_t hash(const ObjectID &p_id) { return hash_one_uint64(p_id); }
+
+ static _FORCE_INLINE_ uint32_t hash(const uint64_t p_int) { return hash_one_uint64(p_int); }
+ static _FORCE_INLINE_ uint32_t hash(const int64_t p_int) { return hash_one_uint64(p_int); }
+ static _FORCE_INLINE_ uint32_t hash(const float p_float) { return hash_murmur3_one_float(p_float); }
+ static _FORCE_INLINE_ uint32_t hash(const double p_double) { return hash_murmur3_one_double(p_double); }
+ static _FORCE_INLINE_ uint32_t hash(const uint32_t p_int) { return hash_fmix32(p_int); }
+ static _FORCE_INLINE_ uint32_t hash(const int32_t p_int) { return hash_fmix32(p_int); }
+ static _FORCE_INLINE_ uint32_t hash(const uint16_t p_int) { return hash_fmix32(p_int); }
+ static _FORCE_INLINE_ uint32_t hash(const int16_t p_int) { return hash_fmix32(p_int); }
+ static _FORCE_INLINE_ uint32_t hash(const uint8_t p_int) { return hash_fmix32(p_int); }
+ static _FORCE_INLINE_ uint32_t hash(const int8_t p_int) { return hash_fmix32(p_int); }
static _FORCE_INLINE_ uint32_t hash(const Vector2i &p_vec) {
- uint32_t h = hash_djb2_one_32(p_vec.x);
- return hash_djb2_one_32(p_vec.y, h);
+ uint32_t h = hash_murmur3_one_32(p_vec.x);
+ h = hash_murmur3_one_32(p_vec.y, h);
+ return hash_fmix32(h);
}
static _FORCE_INLINE_ uint32_t hash(const Vector3i &p_vec) {
- uint32_t h = hash_djb2_one_32(p_vec.x);
- h = hash_djb2_one_32(p_vec.y, h);
- return hash_djb2_one_32(p_vec.z, h);
+ uint32_t h = hash_murmur3_one_32(p_vec.x);
+ h = hash_murmur3_one_32(p_vec.y, h);
+ h = hash_murmur3_one_32(p_vec.z, h);
+ return hash_fmix32(h);
}
-
static _FORCE_INLINE_ uint32_t hash(const Vector2 &p_vec) {
- uint32_t h = hash_djb2_one_float(p_vec.x);
- return hash_djb2_one_float(p_vec.y, h);
+ uint32_t h = hash_murmur3_one_real(p_vec.x);
+ h = hash_murmur3_one_real(p_vec.y, h);
+ return hash_fmix32(h);
}
static _FORCE_INLINE_ uint32_t hash(const Vector3 &p_vec) {
- uint32_t h = hash_djb2_one_float(p_vec.x);
- h = hash_djb2_one_float(p_vec.y, h);
- return hash_djb2_one_float(p_vec.z, h);
+ uint32_t h = hash_murmur3_one_real(p_vec.x);
+ h = hash_murmur3_one_real(p_vec.y, h);
+ h = hash_murmur3_one_real(p_vec.z, h);
+ return hash_fmix32(h);
}
-
static _FORCE_INLINE_ uint32_t hash(const Rect2i &p_rect) {
- uint32_t h = hash_djb2_one_32(p_rect.position.x);
- h = hash_djb2_one_32(p_rect.position.y, h);
- h = hash_djb2_one_32(p_rect.size.x, h);
- return hash_djb2_one_32(p_rect.size.y, h);
+ uint32_t h = hash_murmur3_one_32(p_rect.position.x);
+ h = hash_murmur3_one_32(p_rect.position.y, h);
+ h = hash_murmur3_one_32(p_rect.size.x, h);
+ h = hash_murmur3_one_32(p_rect.size.y, h);
+ return hash_fmix32(h);
}
-
static _FORCE_INLINE_ uint32_t hash(const Rect2 &p_rect) {
- uint32_t h = hash_djb2_one_float(p_rect.position.x);
- h = hash_djb2_one_float(p_rect.position.y, h);
- h = hash_djb2_one_float(p_rect.size.x, h);
- return hash_djb2_one_float(p_rect.size.y, h);
+ uint32_t h = hash_murmur3_one_real(p_rect.position.x);
+ h = hash_murmur3_one_real(p_rect.position.y, h);
+ h = hash_murmur3_one_real(p_rect.size.x, h);
+ h = hash_murmur3_one_real(p_rect.size.y, h);
+ return hash_fmix32(h);
}
-
static _FORCE_INLINE_ uint32_t hash(const AABB &p_aabb) {
- uint32_t h = hash_djb2_one_float(p_aabb.position.x);
- h = hash_djb2_one_float(p_aabb.position.y, h);
- h = hash_djb2_one_float(p_aabb.position.z, h);
- h = hash_djb2_one_float(p_aabb.size.x, h);
- h = hash_djb2_one_float(p_aabb.size.y, h);
- return hash_djb2_one_float(p_aabb.size.z, h);
+ uint32_t h = hash_murmur3_one_real(p_aabb.position.x);
+ h = hash_murmur3_one_real(p_aabb.position.y, h);
+ h = hash_murmur3_one_real(p_aabb.position.z, h);
+ h = hash_murmur3_one_real(p_aabb.size.x, h);
+ h = hash_murmur3_one_real(p_aabb.size.y, h);
+ h = hash_murmur3_one_real(p_aabb.size.z, h);
+ return hash_fmix32(h);
}
-
- //static _FORCE_INLINE_ uint32_t hash(const void* p_ptr) { return uint32_t(uint64_t(p_ptr))*(0x9e3779b1L); }
};
template <typename T>
diff --git a/core/variant/array.cpp b/core/variant/array.cpp
index 7551350c95..af166e09a3 100644
--- a/core/variant/array.cpp
+++ b/core/variant/array.cpp
@@ -190,13 +190,13 @@ uint32_t Array::recursive_hash(int recursion_count) const {
return 0;
}
- uint32_t h = hash_djb2_one_32(Variant::ARRAY);
+ uint32_t h = hash_murmur3_one_32(Variant::ARRAY);
recursion_count++;
for (int i = 0; i < _p->array.size(); i++) {
- h = hash_djb2_one_32(_p->array[i].recursive_hash(recursion_count), h);
+ h = hash_murmur3_one_32(_p->array[i].recursive_hash(recursion_count), h);
}
- return h;
+ return hash_fmix32(h);
}
bool Array::_assign(const Array &p_array) {
@@ -260,7 +260,9 @@ void Array::push_back(const Variant &p_value) {
void Array::append_array(const Array &p_array) {
ERR_FAIL_COND_MSG(_p->read_only, "Array is in read-only state.");
- ERR_FAIL_COND(!_p->typed.validate(p_array, "append_array"));
+ for (int i = 0; i < p_array.size(); ++i) {
+ ERR_FAIL_COND(!_p->typed.validate(p_array[i], "append_array"));
+ }
_p->array.append_array(p_array._p->array);
}
@@ -501,6 +503,50 @@ Variant Array::reduce(const Callable &p_callable, const Variant &p_accum) const
return ret;
}
+bool Array::any(const Callable &p_callable) const {
+ const Variant *argptrs[1];
+ for (int i = 0; i < size(); i++) {
+ argptrs[0] = &get(i);
+
+ Variant result;
+ Callable::CallError ce;
+ p_callable.call(argptrs, 1, result, ce);
+ if (ce.error != Callable::CallError::CALL_OK) {
+ ERR_FAIL_V_MSG(false, "Error calling method from 'any': " + Variant::get_callable_error_text(p_callable, argptrs, 1, ce));
+ }
+
+ if (result.operator bool()) {
+ // Return as early as possible when one of the conditions is `true`.
+ // This improves performance compared to relying on `filter(...).size() >= 1`.
+ return true;
+ }
+ }
+
+ return false;
+}
+
+bool Array::all(const Callable &p_callable) const {
+ const Variant *argptrs[1];
+ for (int i = 0; i < size(); i++) {
+ argptrs[0] = &get(i);
+
+ Variant result;
+ Callable::CallError ce;
+ p_callable.call(argptrs, 1, result, ce);
+ if (ce.error != Callable::CallError::CALL_OK) {
+ ERR_FAIL_V_MSG(false, "Error calling method from 'all': " + Variant::get_callable_error_text(p_callable, argptrs, 1, ce));
+ }
+
+ if (!(result.operator bool())) {
+ // Return as early as possible when one of the inverted conditions is `false`.
+ // This improves performance compared to relying on `filter(...).size() >= array_size().`.
+ return false;
+ }
+ }
+
+ return true;
+}
+
struct _ArrayVariantSort {
_FORCE_INLINE_ bool operator()(const Variant &p_l, const Variant &p_r) const {
bool valid = false;
diff --git a/core/variant/array.h b/core/variant/array.h
index f537700f99..c007376734 100644
--- a/core/variant/array.h
+++ b/core/variant/array.h
@@ -108,6 +108,8 @@ public:
Array filter(const Callable &p_callable) const;
Array map(const Callable &p_callable) const;
Variant reduce(const Callable &p_callable, const Variant &p_accum) const;
+ bool any(const Callable &p_callable) const;
+ bool all(const Callable &p_callable) const;
bool operator<(const Array &p_array) const;
bool operator<=(const Array &p_array) const;
diff --git a/core/variant/callable.cpp b/core/variant/callable.cpp
index 516b8f2d51..5453f0d5c6 100644
--- a/core/variant/callable.cpp
+++ b/core/variant/callable.cpp
@@ -143,7 +143,8 @@ uint32_t Callable::hash() const {
return custom->hash();
} else {
uint32_t hash = method.hash();
- return hash_djb2_one_64(object, hash);
+ hash = hash_murmur3_one_64(object, hash);
+ return hash_fmix32(hash);
}
}
diff --git a/core/variant/dictionary.cpp b/core/variant/dictionary.cpp
index bda8c93a79..d9f4359ee5 100644
--- a/core/variant/dictionary.cpp
+++ b/core/variant/dictionary.cpp
@@ -269,6 +269,14 @@ void Dictionary::clear() {
_p->variant_map.clear();
}
+void Dictionary::merge(const Dictionary &p_dictionary, bool p_overwrite) {
+ for (const KeyValue<Variant, Variant> &E : p_dictionary._p->variant_map) {
+ if (p_overwrite || !has(E.key)) {
+ this->operator[](E.key) = E.value;
+ }
+ }
+}
+
void Dictionary::_unref() const {
ERR_FAIL_COND(!_p);
if (_p->refcount.unref()) {
@@ -290,15 +298,15 @@ uint32_t Dictionary::recursive_hash(int recursion_count) const {
return 0;
}
- uint32_t h = hash_djb2_one_32(Variant::DICTIONARY);
+ uint32_t h = hash_murmur3_one_32(Variant::DICTIONARY);
recursion_count++;
for (const KeyValue<Variant, Variant> &E : _p->variant_map) {
- h = hash_djb2_one_32(E.key.recursive_hash(recursion_count), h);
- h = hash_djb2_one_32(E.value.recursive_hash(recursion_count), h);
+ h = hash_murmur3_one_32(E.key.recursive_hash(recursion_count), h);
+ h = hash_murmur3_one_32(E.value.recursive_hash(recursion_count), h);
}
- return h;
+ return hash_fmix32(h);
}
Array Dictionary::keys() const {
diff --git a/core/variant/dictionary.h b/core/variant/dictionary.h
index 1224a4ff6f..2632893e8d 100644
--- a/core/variant/dictionary.h
+++ b/core/variant/dictionary.h
@@ -62,6 +62,7 @@ public:
int size() const;
bool is_empty() const;
void clear();
+ void merge(const Dictionary &p_dictionary, bool p_overwrite = false);
bool has(const Variant &p_key) const;
bool has_all(const Array &p_keys) const;
diff --git a/core/variant/variant.cpp b/core/variant/variant.cpp
index e69bd88413..6007268e21 100644
--- a/core/variant/variant.cpp
+++ b/core/variant/variant.cpp
@@ -2780,7 +2780,7 @@ uint32_t Variant::recursive_hash(int recursion_count) const {
return hash_one_uint64((uint64_t)_data._int);
} break;
case FLOAT: {
- return hash_djb2_one_float(_data._float);
+ return hash_murmur3_one_float(_data._float);
} break;
case STRING: {
return reinterpret_cast<const String *>(_data._mem)->hash();
@@ -2788,106 +2788,102 @@ uint32_t Variant::recursive_hash(int recursion_count) const {
// math types
case VECTOR2: {
- uint32_t hash = hash_djb2_one_float(reinterpret_cast<const Vector2 *>(_data._mem)->x);
- return hash_djb2_one_float(reinterpret_cast<const Vector2 *>(_data._mem)->y, hash);
+ return HashMapHasherDefault::hash(*reinterpret_cast<const Vector2 *>(_data._mem));
} break;
case VECTOR2I: {
- uint32_t hash = hash_djb2_one_32((uint32_t) reinterpret_cast<const Vector2i *>(_data._mem)->x);
- return hash_djb2_one_32((uint32_t) reinterpret_cast<const Vector2i *>(_data._mem)->y, hash);
+ return HashMapHasherDefault::hash(*reinterpret_cast<const Vector2i *>(_data._mem));
} break;
case RECT2: {
- uint32_t hash = hash_djb2_one_float(reinterpret_cast<const Rect2 *>(_data._mem)->position.x);
- hash = hash_djb2_one_float(reinterpret_cast<const Rect2 *>(_data._mem)->position.y, hash);
- hash = hash_djb2_one_float(reinterpret_cast<const Rect2 *>(_data._mem)->size.x, hash);
- return hash_djb2_one_float(reinterpret_cast<const Rect2 *>(_data._mem)->size.y, hash);
+ return HashMapHasherDefault::hash(*reinterpret_cast<const Rect2 *>(_data._mem));
} break;
case RECT2I: {
- uint32_t hash = hash_djb2_one_32((uint32_t) reinterpret_cast<const Rect2i *>(_data._mem)->position.x);
- hash = hash_djb2_one_32((uint32_t) reinterpret_cast<const Rect2i *>(_data._mem)->position.y, hash);
- hash = hash_djb2_one_32((uint32_t) reinterpret_cast<const Rect2i *>(_data._mem)->size.x, hash);
- return hash_djb2_one_32((uint32_t) reinterpret_cast<const Rect2i *>(_data._mem)->size.y, hash);
+ return HashMapHasherDefault::hash(*reinterpret_cast<const Rect2i *>(_data._mem));
} break;
case TRANSFORM2D: {
- uint32_t hash = 5831;
- for (int i = 0; i < 3; i++) {
- for (int j = 0; j < 2; j++) {
- hash = hash_djb2_one_float(_data._transform2d->columns[i][j], hash);
- }
- }
+ uint32_t h = HASH_MURMUR3_SEED;
+ const Transform2D &t = *_data._transform2d;
+ h = hash_murmur3_one_real(t[0].x, h);
+ h = hash_murmur3_one_real(t[0].y, h);
+ h = hash_murmur3_one_real(t[1].x, h);
+ h = hash_murmur3_one_real(t[1].y, h);
+ h = hash_murmur3_one_real(t[2].x, h);
+ h = hash_murmur3_one_real(t[2].y, h);
- return hash;
+ return hash_fmix32(h);
} break;
case VECTOR3: {
- uint32_t hash = hash_djb2_one_float(reinterpret_cast<const Vector3 *>(_data._mem)->x);
- hash = hash_djb2_one_float(reinterpret_cast<const Vector3 *>(_data._mem)->y, hash);
- return hash_djb2_one_float(reinterpret_cast<const Vector3 *>(_data._mem)->z, hash);
+ return HashMapHasherDefault::hash(*reinterpret_cast<const Vector3 *>(_data._mem));
} break;
case VECTOR3I: {
- uint32_t hash = hash_djb2_one_32((uint32_t) reinterpret_cast<const Vector3i *>(_data._mem)->x);
- hash = hash_djb2_one_32((uint32_t) reinterpret_cast<const Vector3i *>(_data._mem)->y, hash);
- return hash_djb2_one_32((uint32_t) reinterpret_cast<const Vector3i *>(_data._mem)->z, hash);
+ return HashMapHasherDefault::hash(*reinterpret_cast<const Vector3i *>(_data._mem));
} break;
case PLANE: {
- uint32_t hash = hash_djb2_one_float(reinterpret_cast<const Plane *>(_data._mem)->normal.x);
- hash = hash_djb2_one_float(reinterpret_cast<const Plane *>(_data._mem)->normal.y, hash);
- hash = hash_djb2_one_float(reinterpret_cast<const Plane *>(_data._mem)->normal.z, hash);
- return hash_djb2_one_float(reinterpret_cast<const Plane *>(_data._mem)->d, hash);
-
+ uint32_t h = HASH_MURMUR3_SEED;
+ const Plane &p = *reinterpret_cast<const Plane *>(_data._mem);
+ h = hash_murmur3_one_real(p.normal.x, h);
+ h = hash_murmur3_one_real(p.normal.y, h);
+ h = hash_murmur3_one_real(p.normal.z, h);
+ h = hash_murmur3_one_real(p.d, h);
+ return hash_fmix32(h);
} break;
case AABB: {
- uint32_t hash = 5831;
- for (int i = 0; i < 3; i++) {
- hash = hash_djb2_one_float(_data._aabb->position[i], hash);
- hash = hash_djb2_one_float(_data._aabb->size[i], hash);
- }
-
- return hash;
-
+ return HashMapHasherDefault::hash(*_data._aabb);
} break;
case QUATERNION: {
- uint32_t hash = hash_djb2_one_float(reinterpret_cast<const Quaternion *>(_data._mem)->x);
- hash = hash_djb2_one_float(reinterpret_cast<const Quaternion *>(_data._mem)->y, hash);
- hash = hash_djb2_one_float(reinterpret_cast<const Quaternion *>(_data._mem)->z, hash);
- return hash_djb2_one_float(reinterpret_cast<const Quaternion *>(_data._mem)->w, hash);
-
+ uint32_t h = HASH_MURMUR3_SEED;
+ const Quaternion &q = *reinterpret_cast<const Quaternion *>(_data._mem);
+ h = hash_murmur3_one_real(q.x, h);
+ h = hash_murmur3_one_real(q.y, h);
+ h = hash_murmur3_one_real(q.z, h);
+ h = hash_murmur3_one_real(q.w, h);
+ return hash_fmix32(h);
} break;
case BASIS: {
- uint32_t hash = 5831;
- for (int i = 0; i < 3; i++) {
- for (int j = 0; j < 3; j++) {
- hash = hash_djb2_one_float(_data._basis->rows[i][j], hash);
- }
- }
-
- return hash;
-
+ uint32_t h = HASH_MURMUR3_SEED;
+ const Basis &b = *_data._basis;
+ h = hash_murmur3_one_real(b[0].x, h);
+ h = hash_murmur3_one_real(b[0].y, h);
+ h = hash_murmur3_one_real(b[0].z, h);
+ h = hash_murmur3_one_real(b[1].x, h);
+ h = hash_murmur3_one_real(b[1].y, h);
+ h = hash_murmur3_one_real(b[1].z, h);
+ h = hash_murmur3_one_real(b[2].x, h);
+ h = hash_murmur3_one_real(b[2].y, h);
+ h = hash_murmur3_one_real(b[2].z, h);
+ return hash_fmix32(h);
} break;
case TRANSFORM3D: {
- uint32_t hash = 5831;
- for (int i = 0; i < 3; i++) {
- for (int j = 0; j < 3; j++) {
- hash = hash_djb2_one_float(_data._transform3d->basis.rows[i][j], hash);
- }
- hash = hash_djb2_one_float(_data._transform3d->origin[i], hash);
- }
-
- return hash;
-
+ uint32_t h = HASH_MURMUR3_SEED;
+ const Transform3D &t = *_data._transform3d;
+ h = hash_murmur3_one_real(t.basis[0].x, h);
+ h = hash_murmur3_one_real(t.basis[0].y, h);
+ h = hash_murmur3_one_real(t.basis[0].z, h);
+ h = hash_murmur3_one_real(t.basis[1].x, h);
+ h = hash_murmur3_one_real(t.basis[1].y, h);
+ h = hash_murmur3_one_real(t.basis[1].z, h);
+ h = hash_murmur3_one_real(t.basis[2].x, h);
+ h = hash_murmur3_one_real(t.basis[2].y, h);
+ h = hash_murmur3_one_real(t.basis[2].z, h);
+ h = hash_murmur3_one_real(t.origin.x, h);
+ h = hash_murmur3_one_real(t.origin.y, h);
+ h = hash_murmur3_one_real(t.origin.z, h);
+ return hash_fmix32(h);
} break;
-
// misc types
case COLOR: {
- uint32_t hash = hash_djb2_one_float(reinterpret_cast<const Color *>(_data._mem)->r);
- hash = hash_djb2_one_float(reinterpret_cast<const Color *>(_data._mem)->g, hash);
- hash = hash_djb2_one_float(reinterpret_cast<const Color *>(_data._mem)->b, hash);
- return hash_djb2_one_float(reinterpret_cast<const Color *>(_data._mem)->a, hash);
-
+ uint32_t h = HASH_MURMUR3_SEED;
+ const Color &c = *reinterpret_cast<const Color *>(_data._mem);
+ h = hash_murmur3_one_float(c.r, h);
+ h = hash_murmur3_one_float(c.g, h);
+ h = hash_murmur3_one_float(c.b, h);
+ h = hash_murmur3_one_float(c.a, h);
+ return hash_fmix32(h);
} break;
case RID: {
- return hash_djb2_one_64(reinterpret_cast<const ::RID *>(_data._mem)->get_id());
+ return hash_one_uint64(reinterpret_cast<const ::RID *>(_data._mem)->get_id());
} break;
case OBJECT: {
- return hash_djb2_one_64(make_uint64_t(_get_obj().obj));
+ return hash_one_uint64(hash_make_uint64_t(_get_obj().obj));
} break;
case STRING_NAME: {
return reinterpret_cast<const StringName *>(_data._mem)->hash();
@@ -2906,7 +2902,7 @@ uint32_t Variant::recursive_hash(int recursion_count) const {
case SIGNAL: {
const Signal &s = *reinterpret_cast<const Signal *>(_data._mem);
uint32_t hash = s.get_name().hash();
- return hash_djb2_one_64(s.get_object_id(), hash);
+ return hash_murmur3_one_64(s.get_object_id(), hash);
} break;
case ARRAY: {
const Array &arr = *reinterpret_cast<const Array *>(_data._mem);
@@ -2918,9 +2914,9 @@ uint32_t Variant::recursive_hash(int recursion_count) const {
int len = arr.size();
if (likely(len)) {
const uint8_t *r = arr.ptr();
- return hash_djb2_buffer((uint8_t *)&r[0], len);
+ return hash_murmur3_buffer((uint8_t *)&r[0], len);
} else {
- return hash_djb2_one_64(0);
+ return hash_murmur3_one_64(0);
}
} break;
@@ -2929,9 +2925,9 @@ uint32_t Variant::recursive_hash(int recursion_count) const {
int len = arr.size();
if (likely(len)) {
const int32_t *r = arr.ptr();
- return hash_djb2_buffer((uint8_t *)&r[0], len * sizeof(int32_t));
+ return hash_murmur3_buffer((uint8_t *)&r[0], len * sizeof(int32_t));
} else {
- return hash_djb2_one_64(0);
+ return hash_murmur3_one_64(0);
}
} break;
@@ -2940,9 +2936,9 @@ uint32_t Variant::recursive_hash(int recursion_count) const {
int len = arr.size();
if (likely(len)) {
const int64_t *r = arr.ptr();
- return hash_djb2_buffer((uint8_t *)&r[0], len * sizeof(int64_t));
+ return hash_murmur3_buffer((uint8_t *)&r[0], len * sizeof(int64_t));
} else {
- return hash_djb2_one_64(0);
+ return hash_murmur3_one_64(0);
}
} break;
@@ -2952,9 +2948,13 @@ uint32_t Variant::recursive_hash(int recursion_count) const {
if (likely(len)) {
const float *r = arr.ptr();
- return hash_djb2_buffer((uint8_t *)&r[0], len * sizeof(float));
+ uint32_t h = HASH_MURMUR3_SEED;
+ for (int32_t i = 0; i < len; i++) {
+ h = hash_murmur3_one_float(r[i], h);
+ }
+ return hash_fmix32(h);
} else {
- return hash_djb2_one_float(0.0);
+ return hash_murmur3_one_float(0.0);
}
} break;
@@ -2964,14 +2964,18 @@ uint32_t Variant::recursive_hash(int recursion_count) const {
if (likely(len)) {
const double *r = arr.ptr();
- return hash_djb2_buffer((uint8_t *)&r[0], len * sizeof(double));
+ uint32_t h = HASH_MURMUR3_SEED;
+ for (int32_t i = 0; i < len; i++) {
+ h = hash_murmur3_one_double(r[i], h);
+ }
+ return hash_fmix32(h);
} else {
- return hash_djb2_one_float(0.0);
+ return hash_murmur3_one_float(0.0);
}
} break;
case PACKED_STRING_ARRAY: {
- uint32_t hash = 5831;
+ uint32_t hash = HASH_MURMUR3_SEED;
const Vector<String> &arr = PackedArrayRef<String>::get_array(_data.packed_array);
int len = arr.size();
@@ -2979,14 +2983,15 @@ uint32_t Variant::recursive_hash(int recursion_count) const {
const String *r = arr.ptr();
for (int i = 0; i < len; i++) {
- hash = hash_djb2_one_32(r[i].hash(), hash);
+ hash = hash_murmur3_one_32(r[i].hash(), hash);
}
+ hash = hash_fmix32(hash);
}
return hash;
} break;
case PACKED_VECTOR2_ARRAY: {
- uint32_t hash = 5831;
+ uint32_t hash = HASH_MURMUR3_SEED;
const Vector<Vector2> &arr = PackedArrayRef<Vector2>::get_array(_data.packed_array);
int len = arr.size();
@@ -2994,15 +2999,16 @@ uint32_t Variant::recursive_hash(int recursion_count) const {
const Vector2 *r = arr.ptr();
for (int i = 0; i < len; i++) {
- hash = hash_djb2_one_float(r[i].x, hash);
- hash = hash_djb2_one_float(r[i].y, hash);
+ hash = hash_murmur3_one_real(r[i].x, hash);
+ hash = hash_murmur3_one_real(r[i].y, hash);
}
+ hash = hash_fmix32(hash);
}
return hash;
} break;
case PACKED_VECTOR3_ARRAY: {
- uint32_t hash = 5831;
+ uint32_t hash = HASH_MURMUR3_SEED;
const Vector<Vector3> &arr = PackedArrayRef<Vector3>::get_array(_data.packed_array);
int len = arr.size();
@@ -3010,16 +3016,17 @@ uint32_t Variant::recursive_hash(int recursion_count) const {
const Vector3 *r = arr.ptr();
for (int i = 0; i < len; i++) {
- hash = hash_djb2_one_float(r[i].x, hash);
- hash = hash_djb2_one_float(r[i].y, hash);
- hash = hash_djb2_one_float(r[i].z, hash);
+ hash = hash_murmur3_one_real(r[i].x, hash);
+ hash = hash_murmur3_one_real(r[i].y, hash);
+ hash = hash_murmur3_one_real(r[i].z, hash);
}
+ hash = hash_fmix32(hash);
}
return hash;
} break;
case PACKED_COLOR_ARRAY: {
- uint32_t hash = 5831;
+ uint32_t hash = HASH_MURMUR3_SEED;
const Vector<Color> &arr = PackedArrayRef<Color>::get_array(_data.packed_array);
int len = arr.size();
@@ -3027,11 +3034,12 @@ uint32_t Variant::recursive_hash(int recursion_count) const {
const Color *r = arr.ptr();
for (int i = 0; i < len; i++) {
- hash = hash_djb2_one_float(r[i].r, hash);
- hash = hash_djb2_one_float(r[i].g, hash);
- hash = hash_djb2_one_float(r[i].b, hash);
- hash = hash_djb2_one_float(r[i].a, hash);
+ hash = hash_murmur3_one_float(r[i].r, hash);
+ hash = hash_murmur3_one_float(r[i].g, hash);
+ hash = hash_murmur3_one_float(r[i].b, hash);
+ hash = hash_murmur3_one_float(r[i].a, hash);
}
+ hash = hash_fmix32(hash);
}
return hash;
@@ -3102,6 +3110,10 @@ bool Variant::hash_compare(const Variant &p_variant, int recursion_count) const
return *reinterpret_cast<const String *>(_data._mem) == *reinterpret_cast<const String *>(p_variant._data._mem);
} break;
+ case STRING_NAME: {
+ return *reinterpret_cast<const StringName *>(_data._mem) == *reinterpret_cast<const StringName *>(p_variant._data._mem);
+ } break;
+
case VECTOR2: {
const Vector2 *l = reinterpret_cast<const Vector2 *>(_data._mem);
const Vector2 *r = reinterpret_cast<const Vector2 *>(p_variant._data._mem);
diff --git a/core/variant/variant_call.cpp b/core/variant/variant_call.cpp
index a3568a8d6a..cb9dfe478b 100644
--- a/core/variant/variant_call.cpp
+++ b/core/variant/variant_call.cpp
@@ -919,7 +919,7 @@ struct _VariantCall {
}
struct ConstantData {
- HashMap<StringName, int> value;
+ HashMap<StringName, int64_t> value;
#ifdef DEBUG_ENABLED
List<StringName> value_ordered;
#endif
@@ -931,7 +931,7 @@ struct _VariantCall {
static ConstantData *constant_data;
- static void add_constant(int p_type, StringName p_constant_name, int p_constant_value) {
+ static void add_constant(int p_type, StringName p_constant_name, int64_t p_constant_value) {
constant_data[p_type].value[p_constant_name] = p_constant_value;
#ifdef DEBUG_ENABLED
constant_data[p_type].value_ordered.push_back(p_constant_name);
@@ -1170,19 +1170,19 @@ uint32_t Variant::get_builtin_method_hash(Variant::Type p_type, const StringName
ERR_FAIL_INDEX_V(p_type, Variant::VARIANT_MAX, 0);
const VariantBuiltInMethodInfo *method = builtin_method_info[p_type].lookup_ptr(p_method);
ERR_FAIL_COND_V(!method, 0);
- uint32_t hash = hash_djb2_one_32(method->is_const);
- hash = hash_djb2_one_32(method->is_static, hash);
- hash = hash_djb2_one_32(method->is_vararg, hash);
- hash = hash_djb2_one_32(method->has_return_type, hash);
+ uint32_t hash = hash_murmur3_one_32(method->is_const);
+ hash = hash_murmur3_one_32(method->is_static, hash);
+ hash = hash_murmur3_one_32(method->is_vararg, hash);
+ hash = hash_murmur3_one_32(method->has_return_type, hash);
if (method->has_return_type) {
- hash = hash_djb2_one_32(method->return_type, hash);
+ hash = hash_murmur3_one_32(method->return_type, hash);
}
- hash = hash_djb2_one_32(method->argument_count, hash);
+ hash = hash_murmur3_one_32(method->argument_count, hash);
for (int i = 0; i < method->argument_count; i++) {
- hash = method->get_argument_type(i);
+ hash = hash_murmur3_one_32(method->get_argument_type(i), hash);
}
- return hash;
+ return hash_fmix32(hash);
}
void Variant::get_method_list(List<MethodInfo> *p_list) const {
@@ -1245,7 +1245,7 @@ void Variant::get_constants_for_type(Variant::Type p_type, List<StringName> *p_c
for (const List<StringName>::Element *E = cd.value_ordered.front(); E; E = E->next()) {
p_constants->push_back(E->get());
#else
- for (const KeyValue<StringName, int> &E : cd.value) {
+ for (const KeyValue<StringName, int64_t> &E : cd.value) {
p_constants->push_back(E.key);
#endif
}
@@ -1281,7 +1281,7 @@ Variant Variant::get_constant_value(Variant::Type p_type, const StringName &p_va
ERR_FAIL_INDEX_V(p_type, Variant::VARIANT_MAX, 0);
_VariantCall::ConstantData &cd = _VariantCall::constant_data[p_type];
- HashMap<StringName, int>::Iterator E = cd.value.find(p_value);
+ HashMap<StringName, int64_t>::Iterator E = cd.value.find(p_value);
if (!E) {
HashMap<StringName, Variant>::Iterator F = cd.variant_value.find(p_value);
if (F) {
@@ -1402,8 +1402,8 @@ static void _register_variant_builtin_methods() {
bind_method(String, to_upper, sarray(), varray());
bind_method(String, to_lower, sarray(), varray());
- bind_method(String, left, sarray("position"), varray());
- bind_method(String, right, sarray("position"), varray());
+ bind_method(String, left, sarray("length"), varray());
+ bind_method(String, right, sarray("length"), varray());
bind_method(String, strip_edges, sarray("left", "right"), varray(true, true));
bind_method(String, strip_escapes, sarray(), varray());
@@ -1472,6 +1472,10 @@ static void _register_variant_builtin_methods() {
bind_static_method(String, chr, sarray("char"), varray());
bind_static_method(String, humanize_size, sarray("size"), varray());
+ /* StringName */
+
+ bind_method(StringName, hash, sarray(), varray());
+
/* Vector2 */
bind_method(Vector2, angle, sarray(), varray());
@@ -1671,6 +1675,8 @@ static void _register_variant_builtin_methods() {
bind_static_method(Color, get_named_color, sarray("idx"), varray());
bind_static_method(Color, from_string, sarray("str", "default"), varray());
bind_static_method(Color, from_hsv, sarray("h", "s", "v", "alpha"), varray(1.0));
+ bind_static_method(Color, from_ok_hsl, sarray("h", "s", "l", "alpha"), varray(1.0));
+
bind_static_method(Color, from_rgbe9995, sarray("rgbe"), varray());
/* RID */
@@ -1684,6 +1690,7 @@ static void _register_variant_builtin_methods() {
bind_method(NodePath, get_name_count, sarray(), varray());
bind_method(NodePath, get_name, sarray("idx"), varray());
bind_method(NodePath, get_subname_count, sarray(), varray());
+ bind_method(NodePath, hash, sarray(), varray());
bind_method(NodePath, get_subname, sarray("idx"), varray());
bind_method(NodePath, get_concatenated_subnames, sarray(), varray());
bind_method(NodePath, get_as_property_path, sarray(), varray());
@@ -1808,6 +1815,7 @@ static void _register_variant_builtin_methods() {
bind_method(Dictionary, size, sarray(), varray());
bind_method(Dictionary, is_empty, sarray(), varray());
bind_method(Dictionary, clear, sarray(), varray());
+ bind_method(Dictionary, merge, sarray("dictionary", "overwrite"), varray(false));
bind_method(Dictionary, has, sarray("key"), varray());
bind_method(Dictionary, has_all, sarray("keys"), varray());
bind_method(Dictionary, erase, sarray("key"), varray());
@@ -1853,6 +1861,8 @@ static void _register_variant_builtin_methods() {
bind_method(Array, filter, sarray("method"), varray());
bind_method(Array, map, sarray("method"), varray());
bind_method(Array, reduce, sarray("method", "accum"), varray(Variant()));
+ bind_method(Array, any, sarray("method"), varray());
+ bind_method(Array, all, sarray("method"), varray());
bind_method(Array, max, sarray(), varray());
bind_method(Array, min, sarray(), varray());
diff --git a/core/variant/variant_setget.h b/core/variant/variant_setget.h
index 3b95f0531b..bc4dc4b408 100644
--- a/core/variant/variant_setget.h
+++ b/core/variant/variant_setget.h
@@ -329,4 +329,8 @@ SETGET_NUMBER_STRUCT_FUNC(Color, double, h, set_h, get_h)
SETGET_NUMBER_STRUCT_FUNC(Color, double, s, set_s, get_s)
SETGET_NUMBER_STRUCT_FUNC(Color, double, v, set_v, get_v)
+SETGET_NUMBER_STRUCT_FUNC(Color, double, ok_hsl_h, set_ok_hsl_h, get_ok_hsl_h)
+SETGET_NUMBER_STRUCT_FUNC(Color, double, ok_hsl_s, set_ok_hsl_s, get_ok_hsl_s)
+SETGET_NUMBER_STRUCT_FUNC(Color, double, ok_hsl_l, set_ok_hsl_l, get_ok_hsl_l)
+
#endif // VARIANT_SETGET_H
diff --git a/core/variant/variant_utility.cpp b/core/variant/variant_utility.cpp
index 66badce268..7fabdcbc82 100644
--- a/core/variant/variant_utility.cpp
+++ b/core/variant/variant_utility.cpp
@@ -1423,17 +1423,17 @@ uint32_t Variant::get_utility_function_hash(const StringName &p_name) {
const VariantUtilityFunctionInfo *bfi = utility_function_table.lookup_ptr(p_name);
ERR_FAIL_COND_V(!bfi, 0);
- uint32_t hash = hash_djb2_one_32(bfi->is_vararg);
- hash = hash_djb2_one_32(bfi->returns_value, hash);
+ uint32_t hash = hash_murmur3_one_32(bfi->is_vararg);
+ hash = hash_murmur3_one_32(bfi->returns_value, hash);
if (bfi->returns_value) {
- hash = hash_djb2_one_32(bfi->return_type, hash);
+ hash = hash_murmur3_one_32(bfi->return_type, hash);
}
- hash = hash_djb2_one_32(bfi->argcount, hash);
+ hash = hash_murmur3_one_32(bfi->argcount, hash);
for (int i = 0; i < bfi->argcount; i++) {
- hash = hash_djb2_one_32(bfi->get_arg_type(i), hash);
+ hash = hash_murmur3_one_32(bfi->get_arg_type(i), hash);
}
- return hash;
+ return hash_fmix32(hash);
}
void Variant::get_utility_function_list(List<StringName> *r_functions) {
diff --git a/doc/classes/@GlobalScope.xml b/doc/classes/@GlobalScope.xml
index 43101d6e5e..4048b483e8 100644
--- a/doc/classes/@GlobalScope.xml
+++ b/doc/classes/@GlobalScope.xml
@@ -1414,6 +1414,63 @@
<constant name="KEY_F16" value="16777259" enum="Key">
F16 key.
</constant>
+ <constant name="KEY_F17" value="16777260" enum="Key">
+ F17 key.
+ </constant>
+ <constant name="KEY_F18" value="16777261" enum="Key">
+ F18 key.
+ </constant>
+ <constant name="KEY_F19" value="16777262" enum="Key">
+ F19 key.
+ </constant>
+ <constant name="KEY_F20" value="16777263" enum="Key">
+ F20 key.
+ </constant>
+ <constant name="KEY_F21" value="16777264" enum="Key">
+ F21 key.
+ </constant>
+ <constant name="KEY_F22" value="16777265" enum="Key">
+ F22 key.
+ </constant>
+ <constant name="KEY_F23" value="16777266" enum="Key">
+ F23 key.
+ </constant>
+ <constant name="KEY_F24" value="16777267" enum="Key">
+ F24 key.
+ </constant>
+ <constant name="KEY_F25" value="16777268" enum="Key">
+ F25 key. Only supported on macOS and Linux due to a Windows limitation.
+ </constant>
+ <constant name="KEY_F26" value="16777269" enum="Key">
+ F26 key. Only supported on macOS and Linux due to a Windows limitation.
+ </constant>
+ <constant name="KEY_F27" value="16777270" enum="Key">
+ F27 key. Only supported on macOS and Linux due to a Windows limitation.
+ </constant>
+ <constant name="KEY_F28" value="16777271" enum="Key">
+ F28 key. Only supported on macOS and Linux due to a Windows limitation.
+ </constant>
+ <constant name="KEY_F29" value="16777272" enum="Key">
+ F29 key. Only supported on macOS and Linux due to a Windows limitation.
+ </constant>
+ <constant name="KEY_F30" value="16777273" enum="Key">
+ F30 key. Only supported on macOS and Linux due to a Windows limitation.
+ </constant>
+ <constant name="KEY_F31" value="16777274" enum="Key">
+ F31 key. Only supported on macOS and Linux due to a Windows limitation.
+ </constant>
+ <constant name="KEY_F32" value="16777275" enum="Key">
+ F32 key. Only supported on macOS and Linux due to a Windows limitation.
+ </constant>
+ <constant name="KEY_F33" value="16777276" enum="Key">
+ F33 key. Only supported on macOS and Linux due to a Windows limitation.
+ </constant>
+ <constant name="KEY_F34" value="16777277" enum="Key">
+ F34 key. Only supported on macOS and Linux due to a Windows limitation.
+ </constant>
+ <constant name="KEY_F35" value="16777278" enum="Key">
+ F35 key. Only supported on macOS and Linux due to a Windows limitation.
+ </constant>
<constant name="KEY_KP_MULTIPLY" value="16777345" enum="Key">
Multiply (*) key on the numeric keypad.
</constant>
@@ -1459,148 +1516,148 @@
<constant name="KEY_KP_9" value="16777359" enum="Key">
Number 9 on the numeric keypad.
</constant>
- <constant name="KEY_SUPER_L" value="16777260" enum="Key">
+ <constant name="KEY_SUPER_L" value="16777280" enum="Key">
Left Super key (Windows key).
</constant>
- <constant name="KEY_SUPER_R" value="16777261" enum="Key">
+ <constant name="KEY_SUPER_R" value="16777281" enum="Key">
Right Super key (Windows key).
</constant>
- <constant name="KEY_MENU" value="16777262" enum="Key">
+ <constant name="KEY_MENU" value="16777282" enum="Key">
Context menu key.
</constant>
- <constant name="KEY_HYPER_L" value="16777263" enum="Key">
+ <constant name="KEY_HYPER_L" value="16777283" enum="Key">
Left Hyper key.
</constant>
- <constant name="KEY_HYPER_R" value="16777264" enum="Key">
+ <constant name="KEY_HYPER_R" value="16777284" enum="Key">
Right Hyper key.
</constant>
- <constant name="KEY_HELP" value="16777265" enum="Key">
+ <constant name="KEY_HELP" value="16777285" enum="Key">
Help key.
</constant>
- <constant name="KEY_DIRECTION_L" value="16777266" enum="Key">
+ <constant name="KEY_DIRECTION_L" value="16777286" enum="Key">
Left Direction key.
</constant>
- <constant name="KEY_DIRECTION_R" value="16777267" enum="Key">
+ <constant name="KEY_DIRECTION_R" value="16777287" enum="Key">
Right Direction key.
</constant>
- <constant name="KEY_BACK" value="16777280" enum="Key">
+ <constant name="KEY_BACK" value="16777288" enum="Key">
Media back key. Not to be confused with the Back button on an Android device.
</constant>
- <constant name="KEY_FORWARD" value="16777281" enum="Key">
+ <constant name="KEY_FORWARD" value="16777289" enum="Key">
Media forward key.
</constant>
- <constant name="KEY_STOP" value="16777282" enum="Key">
+ <constant name="KEY_STOP" value="16777290" enum="Key">
Media stop key.
</constant>
- <constant name="KEY_REFRESH" value="16777283" enum="Key">
+ <constant name="KEY_REFRESH" value="16777291" enum="Key">
Media refresh key.
</constant>
- <constant name="KEY_VOLUMEDOWN" value="16777284" enum="Key">
+ <constant name="KEY_VOLUMEDOWN" value="16777292" enum="Key">
Volume down key.
</constant>
- <constant name="KEY_VOLUMEMUTE" value="16777285" enum="Key">
+ <constant name="KEY_VOLUMEMUTE" value="16777293" enum="Key">
Mute volume key.
</constant>
- <constant name="KEY_VOLUMEUP" value="16777286" enum="Key">
+ <constant name="KEY_VOLUMEUP" value="16777294" enum="Key">
Volume up key.
</constant>
- <constant name="KEY_BASSBOOST" value="16777287" enum="Key">
+ <constant name="KEY_BASSBOOST" value="16777295" enum="Key">
Bass Boost key.
</constant>
- <constant name="KEY_BASSUP" value="16777288" enum="Key">
+ <constant name="KEY_BASSUP" value="16777296" enum="Key">
Bass up key.
</constant>
- <constant name="KEY_BASSDOWN" value="16777289" enum="Key">
+ <constant name="KEY_BASSDOWN" value="16777297" enum="Key">
Bass down key.
</constant>
- <constant name="KEY_TREBLEUP" value="16777290" enum="Key">
+ <constant name="KEY_TREBLEUP" value="16777298" enum="Key">
Treble up key.
</constant>
- <constant name="KEY_TREBLEDOWN" value="16777291" enum="Key">
+ <constant name="KEY_TREBLEDOWN" value="16777299" enum="Key">
Treble down key.
</constant>
- <constant name="KEY_MEDIAPLAY" value="16777292" enum="Key">
+ <constant name="KEY_MEDIAPLAY" value="16777300" enum="Key">
Media play key.
</constant>
- <constant name="KEY_MEDIASTOP" value="16777293" enum="Key">
+ <constant name="KEY_MEDIASTOP" value="16777301" enum="Key">
Media stop key.
</constant>
- <constant name="KEY_MEDIAPREVIOUS" value="16777294" enum="Key">
+ <constant name="KEY_MEDIAPREVIOUS" value="16777302" enum="Key">
Previous song key.
</constant>
- <constant name="KEY_MEDIANEXT" value="16777295" enum="Key">
+ <constant name="KEY_MEDIANEXT" value="16777303" enum="Key">
Next song key.
</constant>
- <constant name="KEY_MEDIARECORD" value="16777296" enum="Key">
+ <constant name="KEY_MEDIARECORD" value="16777304" enum="Key">
Media record key.
</constant>
- <constant name="KEY_HOMEPAGE" value="16777297" enum="Key">
+ <constant name="KEY_HOMEPAGE" value="16777305" enum="Key">
Home page key.
</constant>
- <constant name="KEY_FAVORITES" value="16777298" enum="Key">
+ <constant name="KEY_FAVORITES" value="16777306" enum="Key">
Favorites key.
</constant>
- <constant name="KEY_SEARCH" value="16777299" enum="Key">
+ <constant name="KEY_SEARCH" value="16777307" enum="Key">
Search key.
</constant>
- <constant name="KEY_STANDBY" value="16777300" enum="Key">
+ <constant name="KEY_STANDBY" value="16777308" enum="Key">
Standby key.
</constant>
- <constant name="KEY_OPENURL" value="16777301" enum="Key">
+ <constant name="KEY_OPENURL" value="16777309" enum="Key">
Open URL / Launch Browser key.
</constant>
- <constant name="KEY_LAUNCHMAIL" value="16777302" enum="Key">
+ <constant name="KEY_LAUNCHMAIL" value="16777310" enum="Key">
Launch Mail key.
</constant>
- <constant name="KEY_LAUNCHMEDIA" value="16777303" enum="Key">
+ <constant name="KEY_LAUNCHMEDIA" value="16777311" enum="Key">
Launch Media key.
</constant>
- <constant name="KEY_LAUNCH0" value="16777304" enum="Key">
+ <constant name="KEY_LAUNCH0" value="16777312" enum="Key">
Launch Shortcut 0 key.
</constant>
- <constant name="KEY_LAUNCH1" value="16777305" enum="Key">
+ <constant name="KEY_LAUNCH1" value="16777313" enum="Key">
Launch Shortcut 1 key.
</constant>
- <constant name="KEY_LAUNCH2" value="16777306" enum="Key">
+ <constant name="KEY_LAUNCH2" value="16777314" enum="Key">
Launch Shortcut 2 key.
</constant>
- <constant name="KEY_LAUNCH3" value="16777307" enum="Key">
+ <constant name="KEY_LAUNCH3" value="16777315" enum="Key">
Launch Shortcut 3 key.
</constant>
- <constant name="KEY_LAUNCH4" value="16777308" enum="Key">
+ <constant name="KEY_LAUNCH4" value="16777316" enum="Key">
Launch Shortcut 4 key.
</constant>
- <constant name="KEY_LAUNCH5" value="16777309" enum="Key">
+ <constant name="KEY_LAUNCH5" value="16777317" enum="Key">
Launch Shortcut 5 key.
</constant>
- <constant name="KEY_LAUNCH6" value="16777310" enum="Key">
+ <constant name="KEY_LAUNCH6" value="16777318" enum="Key">
Launch Shortcut 6 key.
</constant>
- <constant name="KEY_LAUNCH7" value="16777311" enum="Key">
+ <constant name="KEY_LAUNCH7" value="16777319" enum="Key">
Launch Shortcut 7 key.
</constant>
- <constant name="KEY_LAUNCH8" value="16777312" enum="Key">
+ <constant name="KEY_LAUNCH8" value="16777320" enum="Key">
Launch Shortcut 8 key.
</constant>
- <constant name="KEY_LAUNCH9" value="16777313" enum="Key">
+ <constant name="KEY_LAUNCH9" value="16777321" enum="Key">
Launch Shortcut 9 key.
</constant>
- <constant name="KEY_LAUNCHA" value="16777314" enum="Key">
+ <constant name="KEY_LAUNCHA" value="16777322" enum="Key">
Launch Shortcut A key.
</constant>
- <constant name="KEY_LAUNCHB" value="16777315" enum="Key">
+ <constant name="KEY_LAUNCHB" value="16777323" enum="Key">
Launch Shortcut B key.
</constant>
- <constant name="KEY_LAUNCHC" value="16777316" enum="Key">
+ <constant name="KEY_LAUNCHC" value="16777324" enum="Key">
Launch Shortcut C key.
</constant>
- <constant name="KEY_LAUNCHD" value="16777317" enum="Key">
+ <constant name="KEY_LAUNCHD" value="16777325" enum="Key">
Launch Shortcut D key.
</constant>
- <constant name="KEY_LAUNCHE" value="16777318" enum="Key">
+ <constant name="KEY_LAUNCHE" value="16777326" enum="Key">
Launch Shortcut E key.
</constant>
- <constant name="KEY_LAUNCHF" value="16777319" enum="Key">
+ <constant name="KEY_LAUNCHF" value="16777327" enum="Key">
Launch Shortcut F key.
</constant>
<constant name="KEY_UNKNOWN" value="33554431" enum="Key">
@@ -2419,63 +2476,66 @@
<constant name="PROPERTY_HINT_LENGTH" value="5" enum="PropertyHint">
Deprecated hint, unused.
</constant>
- <constant name="PROPERTY_HINT_KEY_ACCEL" value="6" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_LINK" value="6" enum="PropertyHint">
+ Hints that a vector property should allow linking values (e.g. to edit both [code]x[/code] and [code]y[/code] together).
+ </constant>
+ <constant name="PROPERTY_HINT_KEY_ACCEL" value="7" enum="PropertyHint">
Deprecated hint, unused.
</constant>
- <constant name="PROPERTY_HINT_FLAGS" value="7" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_FLAGS" value="8" enum="PropertyHint">
Hints that an integer property is a bitmask with named bit flags. For example, to allow toggling bits 0, 1, 2 and 4, the hint could be something like [code]"Bit0,Bit1,Bit2,,Bit4"[/code].
</constant>
- <constant name="PROPERTY_HINT_LAYERS_2D_RENDER" value="8" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_LAYERS_2D_RENDER" value="9" enum="PropertyHint">
Hints that an integer property is a bitmask using the optionally named 2D render layers.
</constant>
- <constant name="PROPERTY_HINT_LAYERS_2D_PHYSICS" value="9" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_LAYERS_2D_PHYSICS" value="10" enum="PropertyHint">
Hints that an integer property is a bitmask using the optionally named 2D physics layers.
</constant>
- <constant name="PROPERTY_HINT_LAYERS_2D_NAVIGATION" value="10" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_LAYERS_2D_NAVIGATION" value="11" enum="PropertyHint">
Hints that an integer property is a bitmask using the optionally named 2D navigation layers.
</constant>
- <constant name="PROPERTY_HINT_LAYERS_3D_RENDER" value="11" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_LAYERS_3D_RENDER" value="12" enum="PropertyHint">
Hints that an integer property is a bitmask using the optionally named 3D render layers.
</constant>
- <constant name="PROPERTY_HINT_LAYERS_3D_PHYSICS" value="12" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_LAYERS_3D_PHYSICS" value="13" enum="PropertyHint">
Hints that an integer property is a bitmask using the optionally named 3D physics layers.
</constant>
- <constant name="PROPERTY_HINT_LAYERS_3D_NAVIGATION" value="13" enum="PropertyHint">
- Hints that an integer property is a bitmask using the optionally named 2D navigation layers.
+ <constant name="PROPERTY_HINT_LAYERS_3D_NAVIGATION" value="14" enum="PropertyHint">
+ Hints that an integer property is a bitmask using the optionally named 3D navigation layers.
</constant>
- <constant name="PROPERTY_HINT_FILE" value="14" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_FILE" value="15" enum="PropertyHint">
Hints that a string property is a path to a file. Editing it will show a file dialog for picking the path. The hint string can be a set of filters with wildcards like [code]"*.png,*.jpg"[/code].
</constant>
- <constant name="PROPERTY_HINT_DIR" value="15" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_DIR" value="16" enum="PropertyHint">
Hints that a string property is a path to a directory. Editing it will show a file dialog for picking the path.
</constant>
- <constant name="PROPERTY_HINT_GLOBAL_FILE" value="16" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_GLOBAL_FILE" value="17" enum="PropertyHint">
Hints that a string property is an absolute path to a file outside the project folder. Editing it will show a file dialog for picking the path. The hint string can be a set of filters with wildcards like [code]"*.png,*.jpg"[/code].
</constant>
- <constant name="PROPERTY_HINT_GLOBAL_DIR" value="17" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_GLOBAL_DIR" value="18" enum="PropertyHint">
Hints that a string property is an absolute path to a directory outside the project folder. Editing it will show a file dialog for picking the path.
</constant>
- <constant name="PROPERTY_HINT_RESOURCE_TYPE" value="18" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_RESOURCE_TYPE" value="19" enum="PropertyHint">
Hints that a property is an instance of a [Resource]-derived type, optionally specified via the hint string (e.g. [code]"Texture2D"[/code]). Editing it will show a popup menu of valid resource types to instantiate.
</constant>
- <constant name="PROPERTY_HINT_MULTILINE_TEXT" value="19" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_MULTILINE_TEXT" value="20" enum="PropertyHint">
Hints that a string property is text with line breaks. Editing it will show a text input field where line breaks can be typed.
</constant>
- <constant name="PROPERTY_HINT_PLACEHOLDER_TEXT" value="20" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_PLACEHOLDER_TEXT" value="21" enum="PropertyHint">
Hints that a string property should have a placeholder text visible on its input field, whenever the property is empty. The hint string is the placeholder text to use.
</constant>
- <constant name="PROPERTY_HINT_COLOR_NO_ALPHA" value="21" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_COLOR_NO_ALPHA" value="22" enum="PropertyHint">
Hints that a color property should be edited without changing its alpha component, i.e. only R, G and B channels are edited.
</constant>
- <constant name="PROPERTY_HINT_IMAGE_COMPRESS_LOSSY" value="22" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_IMAGE_COMPRESS_LOSSY" value="23" enum="PropertyHint">
Hints that an image is compressed using lossy compression.
</constant>
- <constant name="PROPERTY_HINT_IMAGE_COMPRESS_LOSSLESS" value="23" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_IMAGE_COMPRESS_LOSSLESS" value="24" enum="PropertyHint">
Hints that an image is compressed using lossless compression.
</constant>
- <constant name="PROPERTY_HINT_OBJECT_ID" value="24" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_OBJECT_ID" value="25" enum="PropertyHint">
</constant>
- <constant name="PROPERTY_HINT_TYPE_STRING" value="25" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_TYPE_STRING" value="26" enum="PropertyHint">
Hint that a property represents a particular type. If a property is [constant TYPE_STRING], allows to set a type from the create dialog. If you need to create an [Array] to contain elements of a specific type, the [code]hint_string[/code] must encode nested types using [code]":"[/code] and [code]"/"[/code] for specifying [Resource] types. For instance:
[codeblock]
hint_string = "%s:" % [TYPE_INT] # Array of inteters.
@@ -2485,43 +2545,45 @@
[/codeblock]
[b]Note:[/b] The final colon is required to specify for properly detecting built-in types.
</constant>
- <constant name="PROPERTY_HINT_NODE_PATH_TO_EDITED_NODE" value="26" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_NODE_PATH_TO_EDITED_NODE" value="27" enum="PropertyHint">
</constant>
- <constant name="PROPERTY_HINT_METHOD_OF_VARIANT_TYPE" value="27" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_METHOD_OF_VARIANT_TYPE" value="28" enum="PropertyHint">
</constant>
- <constant name="PROPERTY_HINT_METHOD_OF_BASE_TYPE" value="28" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_METHOD_OF_BASE_TYPE" value="29" enum="PropertyHint">
</constant>
- <constant name="PROPERTY_HINT_METHOD_OF_INSTANCE" value="29" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_METHOD_OF_INSTANCE" value="30" enum="PropertyHint">
</constant>
- <constant name="PROPERTY_HINT_METHOD_OF_SCRIPT" value="30" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_METHOD_OF_SCRIPT" value="31" enum="PropertyHint">
</constant>
- <constant name="PROPERTY_HINT_PROPERTY_OF_VARIANT_TYPE" value="31" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_PROPERTY_OF_VARIANT_TYPE" value="32" enum="PropertyHint">
</constant>
- <constant name="PROPERTY_HINT_PROPERTY_OF_BASE_TYPE" value="32" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_PROPERTY_OF_BASE_TYPE" value="33" enum="PropertyHint">
</constant>
- <constant name="PROPERTY_HINT_PROPERTY_OF_INSTANCE" value="33" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_PROPERTY_OF_INSTANCE" value="34" enum="PropertyHint">
</constant>
- <constant name="PROPERTY_HINT_PROPERTY_OF_SCRIPT" value="34" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_PROPERTY_OF_SCRIPT" value="35" enum="PropertyHint">
</constant>
- <constant name="PROPERTY_HINT_OBJECT_TOO_BIG" value="35" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_OBJECT_TOO_BIG" value="36" enum="PropertyHint">
</constant>
- <constant name="PROPERTY_HINT_NODE_PATH_VALID_TYPES" value="36" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_NODE_PATH_VALID_TYPES" value="37" enum="PropertyHint">
</constant>
- <constant name="PROPERTY_HINT_SAVE_FILE" value="37" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_SAVE_FILE" value="38" enum="PropertyHint">
</constant>
- <constant name="PROPERTY_HINT_INT_IS_OBJECTID" value="38" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_GLOBAL_SAVE_FILE" value="39" enum="PropertyHint">
</constant>
- <constant name="PROPERTY_HINT_INT_IS_POINTER" value="40" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_INT_IS_OBJECTID" value="40" enum="PropertyHint">
</constant>
- <constant name="PROPERTY_HINT_ARRAY_TYPE" value="39" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_INT_IS_POINTER" value="42" enum="PropertyHint">
</constant>
- <constant name="PROPERTY_HINT_LOCALE_ID" value="41" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_ARRAY_TYPE" value="41" enum="PropertyHint">
+ </constant>
+ <constant name="PROPERTY_HINT_LOCALE_ID" value="43" enum="PropertyHint">
Hints that a string property is a locale code. Editing it will show a locale dialog for picking language and country.
</constant>
- <constant name="PROPERTY_HINT_LOCALIZABLE_STRING" value="42" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_LOCALIZABLE_STRING" value="44" enum="PropertyHint">
Hints that a dictionary property is string translation map. Dictionary keys are locale codes and, values are translated strings.
</constant>
- <constant name="PROPERTY_HINT_MAX" value="43" enum="PropertyHint">
+ <constant name="PROPERTY_HINT_MAX" value="45" enum="PropertyHint">
</constant>
<constant name="PROPERTY_USAGE_NONE" value="0" enum="PropertyUsageFlags">
</constant>
@@ -2626,6 +2688,8 @@
<constant name="METHOD_FLAG_FROM_SCRIPT" value="64" enum="MethodFlags">
Deprecated method flag, unused.
</constant>
+ <constant name="METHOD_FLAG_VARARG" value="128" enum="MethodFlags">
+ </constant>
<constant name="METHOD_FLAG_STATIC" value="256" enum="MethodFlags">
</constant>
<constant name="METHOD_FLAG_OBJECT_CORE" value="512" enum="MethodFlags">
diff --git a/doc/classes/AStar2D.xml b/doc/classes/AStar2D.xml
index 7a27568d30..c05fb885b9 100644
--- a/doc/classes/AStar2D.xml
+++ b/doc/classes/AStar2D.xml
@@ -52,8 +52,9 @@
<return type="bool" />
<argument index="0" name="id" type="int" />
<argument index="1" name="to_id" type="int" />
+ <argument index="2" name="bidirectional" type="bool" default="true" />
<description>
- Returns whether there is a connection/segment between the given points.
+ Returns whether there is a connection/segment between the given points. If [code]bidirectional[/code] is [code]false[/code], returns whether movement from [code]id[/code] to [code]to_id[/code] is possible through this segment.
</description>
</method>
<method name="clear">
@@ -89,8 +90,9 @@
<return type="void" />
<argument index="0" name="id" type="int" />
<argument index="1" name="to_id" type="int" />
+ <argument index="2" name="bidirectional" type="bool" default="true" />
<description>
- Deletes the segment between the given points.
+ Deletes the segment between the given points. If [code]bidirectional[/code] is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/code] is prevented, and a unidirectional segment possibly remains.
</description>
</method>
<method name="get_available_point_id" qualifiers="const">
@@ -133,7 +135,7 @@
</description>
</method>
<method name="get_id_path">
- <return type="PackedInt32Array" />
+ <return type="PackedInt64Array" />
<argument index="0" name="from_id" type="int" />
<argument index="1" name="to_id" type="int" />
<description>
@@ -177,7 +179,7 @@
</description>
</method>
<method name="get_point_connections">
- <return type="PackedInt32Array" />
+ <return type="PackedInt64Array" />
<argument index="0" name="id" type="int" />
<description>
Returns an array with the IDs of the points that form the connection with the given point.
diff --git a/doc/classes/AStar3D.xml b/doc/classes/AStar3D.xml
index 33407c3e74..ea4e49c173 100644
--- a/doc/classes/AStar3D.xml
+++ b/doc/classes/AStar3D.xml
@@ -164,7 +164,7 @@
</description>
</method>
<method name="get_id_path">
- <return type="PackedInt32Array" />
+ <return type="PackedInt64Array" />
<argument index="0" name="from_id" type="int" />
<argument index="1" name="to_id" type="int" />
<description>
@@ -207,7 +207,7 @@
</description>
</method>
<method name="get_point_connections">
- <return type="PackedInt32Array" />
+ <return type="PackedInt64Array" />
<argument index="0" name="id" type="int" />
<description>
Returns an array with the IDs of the points that form the connection with the given point.
diff --git a/doc/classes/AnimationLibrary.xml b/doc/classes/AnimationLibrary.xml
index 0a731edadd..d856c65dfc 100644
--- a/doc/classes/AnimationLibrary.xml
+++ b/doc/classes/AnimationLibrary.xml
@@ -51,18 +51,18 @@
</members>
<signals>
<signal name="animation_added">
- <argument index="0" name="name" type="Animation" />
+ <argument index="0" name="name" type="StringName" />
<description>
</description>
</signal>
<signal name="animation_removed">
- <argument index="0" name="name" type="Animation" />
+ <argument index="0" name="name" type="StringName" />
<description>
</description>
</signal>
<signal name="animation_renamed">
- <argument index="0" name="name" type="Animation" />
- <argument index="1" name="to_name" type="Animation" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="to_name" type="StringName" />
<description>
</description>
</signal>
diff --git a/doc/classes/Array.xml b/doc/classes/Array.xml
index ef4f86f1a9..c149cdc0e4 100644
--- a/doc/classes/Array.xml
+++ b/doc/classes/Array.xml
@@ -123,6 +123,52 @@
</constructor>
</constructors>
<methods>
+ <method name="all" qualifiers="const">
+ <return type="bool" />
+ <argument index="0" name="method" type="Callable" />
+ <description>
+ Calls the provided [Callable] on each element in the array and returns [code]true[/code] if the [Callable] returns [code]true[/code] for [i]all[/i] elements in the array. If the [Callable] returns [code]false[/code] for one array element or more, this method returns [code]false[/code].
+ The callable's method should take one [Variant] parameter (the current array element) and return a boolean value.
+ [codeblock]
+ func _ready():
+ print([6, 10, 6].all(greater_than_5)) # Prints True (3/3 elements evaluate to `true`).
+ print([4, 10, 4].all(greater_than_5)) # Prints False (1/3 elements evaluate to `true`).
+ print([4, 4, 4].all(greater_than_5)) # Prints False (0/3 elements evaluate to `true`).
+ print([].all(greater_than_5)) # Prints True (0/0 elements evaluate to `true`).
+
+ print([6, 10, 6].all(func(number): return number &gt; 5)) # Prints True. Same as the first line above, but using lambda function.
+
+ func greater_than_5(number):
+ return number &gt; 5
+ [/codeblock]
+ See also [method any], [method filter], [method map] and [method reduce].
+ [b]Note:[/b] Unlike relying on the size of an array returned by [method filter], this method will return as early as possible to improve performance (especially with large arrays).
+ [b]Note:[/b] For an empty array, this method [url=https://en.wikipedia.org/wiki/Vacuous_truth]always[/url] returns [code]true[/code].
+ </description>
+ </method>
+ <method name="any" qualifiers="const">
+ <return type="bool" />
+ <argument index="0" name="method" type="Callable" />
+ <description>
+ Calls the provided [Callable] on each element in the array and returns [code]true[/code] if the [Callable] returns [code]true[/code] for [i]one or more[/i] elements in the array. If the [Callable] returns [code]false[/code] for all elements in the array, this method returns [code]false[/code].
+ The callable's method should take one [Variant] parameter (the current array element) and return a boolean value.
+ [codeblock]
+ func _ready():
+ print([6, 10, 6].any(greater_than_5)) # Prints True (3 elements evaluate to `true`).
+ print([4, 10, 4].any(greater_than_5)) # Prints True (1 elements evaluate to `true`).
+ print([4, 4, 4].any(greater_than_5)) # Prints False (0 elements evaluate to `true`).
+ print([].any(greater_than_5)) # Prints False (0 elements evaluate to `true`).
+
+ print([6, 10, 6].any(func(number): return number &gt; 5)) # Prints True. Same as the first line above, but using lambda function.
+
+ func greater_than_5(number):
+ return number &gt; 5
+ [/codeblock]
+ See also [method all], [method filter], [method map] and [method reduce].
+ [b]Note:[/b] Unlike relying on the size of an array returned by [method filter], this method will return as early as possible to improve performance (especially with large arrays).
+ [b]Note:[/b] For an empty array, this method always returns [code]false[/code].
+ </description>
+ </method>
<method name="append">
<return type="void" />
<argument index="0" name="value" type="Variant" />
@@ -232,6 +278,7 @@
func remove_1(number):
return number != 1
[/codeblock]
+ See also [method any], [method all], [method map] and [method reduce].
</description>
</method>
<method name="find" qualifiers="const">
@@ -333,6 +380,7 @@
func negate(number):
return -number
[/codeblock]
+ See also [method filter], [method reduce], [method any] and [method all].
</description>
</method>
<method name="max" qualifiers="const">
@@ -398,6 +446,7 @@
func sum(accum, number):
return accum + number
[/codeblock]
+ See also [method map], [method filter], [method any] and [method all].
</description>
</method>
<method name="remove_at">
diff --git a/doc/classes/AudioEffectAmplify.xml b/doc/classes/AudioEffectAmplify.xml
index 7ae0b06dad..43fa9d6ad3 100644
--- a/doc/classes/AudioEffectAmplify.xml
+++ b/doc/classes/AudioEffectAmplify.xml
@@ -2,12 +2,12 @@
<class name="AudioEffectAmplify" inherits="AudioEffect" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
Adds an amplifying audio effect to an audio bus.
- Increases or decreases the volume of the selected audio bus.
</brief_description>
<description>
Increases or decreases the volume being routed through the audio bus.
</description>
<tutorials>
+ <link title="Audio buses">$DOCS_URL/tutorials/audio/audio_buses.html</link>
</tutorials>
<members>
<member name="volume_db" type="float" setter="set_volume_db" getter="get_volume_db" default="0.0">
diff --git a/doc/classes/AudioEffectBandLimitFilter.xml b/doc/classes/AudioEffectBandLimitFilter.xml
index 3635f122f2..4efa431714 100644
--- a/doc/classes/AudioEffectBandLimitFilter.xml
+++ b/doc/classes/AudioEffectBandLimitFilter.xml
@@ -7,5 +7,6 @@
Limits the frequencies in a range around the [member AudioEffectFilter.cutoff_hz] and allows frequencies outside of this range to pass.
</description>
<tutorials>
+ <link title="Audio buses">$DOCS_URL/tutorials/audio/audio_buses.html</link>
</tutorials>
</class>
diff --git a/doc/classes/AudioEffectBandPassFilter.xml b/doc/classes/AudioEffectBandPassFilter.xml
index 5e7713f3d4..6820b2c9f8 100644
--- a/doc/classes/AudioEffectBandPassFilter.xml
+++ b/doc/classes/AudioEffectBandPassFilter.xml
@@ -7,5 +7,6 @@
Attenuates the frequencies inside of a range around the [member AudioEffectFilter.cutoff_hz] and cuts frequencies outside of this band.
</description>
<tutorials>
+ <link title="Audio buses">$DOCS_URL/tutorials/audio/audio_buses.html</link>
</tutorials>
</class>
diff --git a/doc/classes/AudioEffectCapture.xml b/doc/classes/AudioEffectCapture.xml
index 5ab4403be5..8e02056456 100644
--- a/doc/classes/AudioEffectCapture.xml
+++ b/doc/classes/AudioEffectCapture.xml
@@ -5,9 +5,10 @@
</brief_description>
<description>
AudioEffectCapture is an AudioEffect which copies all audio frames from the attached audio effect bus into its internal ring buffer.
- Application code should consume these audio frames from this ring buffer using [method get_buffer] and process it as needed, for example to capture data from a microphone, implement application defined effects, or to transmit audio over the network.
+ Application code should consume these audio frames from this ring buffer using [method get_buffer] and process it as needed, for example to capture data from a microphone, implement application defined effects, or to transmit audio over the network. When capturing audio data from a microphone, the format of the samples will be stereo 32-bit floating point PCM.
</description>
<tutorials>
+ <link title="Audio buses">$DOCS_URL/tutorials/audio/audio_buses.html</link>
</tutorials>
<methods>
<method name="can_get_buffer" qualifiers="const">
diff --git a/doc/classes/AudioEffectChorus.xml b/doc/classes/AudioEffectChorus.xml
index ca04126da4..5efba17e6a 100644
--- a/doc/classes/AudioEffectChorus.xml
+++ b/doc/classes/AudioEffectChorus.xml
@@ -7,6 +7,7 @@
Adds a chorus audio effect. The effect applies a filter with voices to duplicate the audio source and manipulate it through the filter.
</description>
<tutorials>
+ <link title="Audio buses">$DOCS_URL/tutorials/audio/audio_buses.html</link>
</tutorials>
<methods>
<method name="get_voice_cutoff_hz" qualifiers="const">
diff --git a/doc/classes/AudioEffectCompressor.xml b/doc/classes/AudioEffectCompressor.xml
index 5ad948feba..8793ec0a02 100644
--- a/doc/classes/AudioEffectCompressor.xml
+++ b/doc/classes/AudioEffectCompressor.xml
@@ -13,6 +13,7 @@
- Accentuates transients by using a wider attack, making effects sound more punchy.
</description>
<tutorials>
+ <link title="Audio buses">$DOCS_URL/tutorials/audio/audio_buses.html</link>
</tutorials>
<members>
<member name="attack_us" type="float" setter="set_attack_us" getter="get_attack_us" default="20.0">
diff --git a/doc/classes/AudioEffectDelay.xml b/doc/classes/AudioEffectDelay.xml
index 8a95e315cd..8223ccd6bd 100644
--- a/doc/classes/AudioEffectDelay.xml
+++ b/doc/classes/AudioEffectDelay.xml
@@ -8,6 +8,7 @@
Plays input signal back after a period of time. The delayed signal may be played back multiple times to create the sound of a repeating, decaying echo. Delay effects range from a subtle echo effect to a pronounced blending of previous sounds with new sounds.
</description>
<tutorials>
+ <link title="Audio buses">$DOCS_URL/tutorials/audio/audio_buses.html</link>
</tutorials>
<members>
<member name="dry" type="float" setter="set_dry" getter="get_dry" default="1.0">
diff --git a/doc/classes/AudioEffectEQ.xml b/doc/classes/AudioEffectEQ.xml
index 908ae956ed..ce5b6de3be 100644
--- a/doc/classes/AudioEffectEQ.xml
+++ b/doc/classes/AudioEffectEQ.xml
@@ -8,6 +8,7 @@
AudioEffectEQ gives you control over frequencies. Use it to compensate for existing deficiencies in audio. AudioEffectEQs are useful on the Master bus to completely master a mix and give it more character. They are also useful when a game is run on a mobile device, to adjust the mix to that kind of speakers (it can be added but disabled when headphones are plugged).
</description>
<tutorials>
+ <link title="Audio buses">$DOCS_URL/tutorials/audio/audio_buses.html</link>
</tutorials>
<methods>
<method name="get_band_count" qualifiers="const">
diff --git a/doc/classes/AudioEffectEQ10.xml b/doc/classes/AudioEffectEQ10.xml
index 0b03ea99dd..8cf53b9df2 100644
--- a/doc/classes/AudioEffectEQ10.xml
+++ b/doc/classes/AudioEffectEQ10.xml
@@ -19,5 +19,6 @@
See also [AudioEffectEQ], [AudioEffectEQ6], [AudioEffectEQ21].
</description>
<tutorials>
+ <link title="Audio buses">$DOCS_URL/tutorials/audio/audio_buses.html</link>
</tutorials>
</class>
diff --git a/doc/classes/AudioEffectEQ21.xml b/doc/classes/AudioEffectEQ21.xml
index 6861a74596..2eed3b4836 100644
--- a/doc/classes/AudioEffectEQ21.xml
+++ b/doc/classes/AudioEffectEQ21.xml
@@ -30,5 +30,6 @@
See also [AudioEffectEQ], [AudioEffectEQ6], [AudioEffectEQ10].
</description>
<tutorials>
+ <link title="Audio buses">$DOCS_URL/tutorials/audio/audio_buses.html</link>
</tutorials>
</class>
diff --git a/doc/classes/AudioEffectEQ6.xml b/doc/classes/AudioEffectEQ6.xml
index 5aea8efaa9..816d4b9b38 100644
--- a/doc/classes/AudioEffectEQ6.xml
+++ b/doc/classes/AudioEffectEQ6.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="AudioEffectEQ6" inherits="AudioEffectEQ" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
- Adds a 6-band equalizer audio effect to an Audio bus. Gives you control over frequencies from 32 Hz to 10000 Hz.
+ Adds a 6-band equalizer audio effect to an audio bus. Gives you control over frequencies from 32 Hz to 10000 Hz.
Each frequency can be modulated between -60/+24 dB.
</brief_description>
<description>
@@ -15,5 +15,6 @@
See also [AudioEffectEQ], [AudioEffectEQ10], [AudioEffectEQ21].
</description>
<tutorials>
+ <link title="Audio buses">$DOCS_URL/tutorials/audio/audio_buses.html</link>
</tutorials>
</class>
diff --git a/doc/classes/AudioEffectHighPassFilter.xml b/doc/classes/AudioEffectHighPassFilter.xml
index 02d8dbfffc..53e6f3ca63 100644
--- a/doc/classes/AudioEffectHighPassFilter.xml
+++ b/doc/classes/AudioEffectHighPassFilter.xml
@@ -1,11 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="AudioEffectHighPassFilter" inherits="AudioEffectFilter" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
- Adds a high-pass filter to the Audio Bus.
+ Adds a high-pass filter to the audio bus.
</brief_description>
<description>
Cuts frequencies lower than the [member AudioEffectFilter.cutoff_hz] and allows higher frequencies to pass.
</description>
<tutorials>
+ <link title="Audio buses">$DOCS_URL/tutorials/audio/audio_buses.html</link>
</tutorials>
</class>
diff --git a/doc/classes/AudioEffectHighShelfFilter.xml b/doc/classes/AudioEffectHighShelfFilter.xml
index bb5cf5c4a0..f2c20862fb 100644
--- a/doc/classes/AudioEffectHighShelfFilter.xml
+++ b/doc/classes/AudioEffectHighShelfFilter.xml
@@ -1,9 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="AudioEffectHighShelfFilter" inherits="AudioEffectFilter" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
- Reduces all frequencies above the [member AudioEffectFilter.cutoff_hz].
+ Adds a high-shelf filter to the audio bus.
</brief_description>
<description>
+ Reduces all frequencies above the [member AudioEffectFilter.cutoff_hz].
</description>
<tutorials>
<link title="Audio buses">$DOCS_URL/tutorials/audio/audio_buses.html</link>
diff --git a/doc/classes/AudioEffectLimiter.xml b/doc/classes/AudioEffectLimiter.xml
index 3fd099b55e..e841889b2a 100644
--- a/doc/classes/AudioEffectLimiter.xml
+++ b/doc/classes/AudioEffectLimiter.xml
@@ -8,6 +8,7 @@
Soft clipping starts to reduce the peaks a little below the threshold level and progressively increases its effect as the input level increases such that the threshold is never exceeded.
</description>
<tutorials>
+ <link title="Audio buses">$DOCS_URL/tutorials/audio/audio_buses.html</link>
</tutorials>
<members>
<member name="ceiling_db" type="float" setter="set_ceiling_db" getter="get_ceiling_db" default="-0.1">
diff --git a/doc/classes/AudioEffectLowPassFilter.xml b/doc/classes/AudioEffectLowPassFilter.xml
index 8a9ca04354..b0577f19c3 100644
--- a/doc/classes/AudioEffectLowPassFilter.xml
+++ b/doc/classes/AudioEffectLowPassFilter.xml
@@ -1,11 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="AudioEffectLowPassFilter" inherits="AudioEffectFilter" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
- Adds a low-pass filter to the Audio bus.
+ Adds a low-pass filter to the audio bus.
</brief_description>
<description>
Cuts frequencies higher than the [member AudioEffectFilter.cutoff_hz] and allows lower frequencies to pass.
</description>
<tutorials>
+ <link title="Audio buses">$DOCS_URL/tutorials/audio/audio_buses.html</link>
</tutorials>
</class>
diff --git a/doc/classes/AudioEffectLowShelfFilter.xml b/doc/classes/AudioEffectLowShelfFilter.xml
index 04cc1ab1d8..f654ba3612 100644
--- a/doc/classes/AudioEffectLowShelfFilter.xml
+++ b/doc/classes/AudioEffectLowShelfFilter.xml
@@ -1,9 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="AudioEffectLowShelfFilter" inherits="AudioEffectFilter" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
- Reduces all frequencies below the [member AudioEffectFilter.cutoff_hz].
+ Adds a low-shelf filter to the audio bus.
</brief_description>
<description>
+ Reduces all frequencies below the [member AudioEffectFilter.cutoff_hz].
</description>
<tutorials>
<link title="Audio buses">$DOCS_URL/tutorials/audio/audio_buses.html</link>
diff --git a/doc/classes/AudioEffectNotchFilter.xml b/doc/classes/AudioEffectNotchFilter.xml
index a2cc764003..ad4577cfbc 100644
--- a/doc/classes/AudioEffectNotchFilter.xml
+++ b/doc/classes/AudioEffectNotchFilter.xml
@@ -7,5 +7,6 @@
Attenuates frequencies in a narrow band around the [member AudioEffectFilter.cutoff_hz] and cuts frequencies outside of this range.
</description>
<tutorials>
+ <link title="Audio buses">$DOCS_URL/tutorials/audio/audio_buses.html</link>
</tutorials>
</class>
diff --git a/doc/classes/AudioEffectPanner.xml b/doc/classes/AudioEffectPanner.xml
index 1dd2d9fa27..291e86214e 100644
--- a/doc/classes/AudioEffectPanner.xml
+++ b/doc/classes/AudioEffectPanner.xml
@@ -1,12 +1,13 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="AudioEffectPanner" inherits="AudioEffect" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
- Adds a panner audio effect to an Audio bus. Pans sound left or right.
+ Adds a panner audio effect to an audio bus. Pans sound left or right.
</brief_description>
<description>
Determines how much of an audio signal is sent to the left and right buses.
</description>
<tutorials>
+ <link title="Audio buses">$DOCS_URL/tutorials/audio/audio_buses.html</link>
</tutorials>
<members>
<member name="pan" type="float" setter="set_pan" getter="get_pan" default="0.0">
diff --git a/doc/classes/AudioEffectPhaser.xml b/doc/classes/AudioEffectPhaser.xml
index 9c10052b6a..7aaf404352 100644
--- a/doc/classes/AudioEffectPhaser.xml
+++ b/doc/classes/AudioEffectPhaser.xml
@@ -1,13 +1,14 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="AudioEffectPhaser" inherits="AudioEffect" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
- Adds a phaser audio effect to an Audio bus.
+ Adds a phaser audio effect to an audio bus.
Combines the original signal with a copy that is slightly out of phase with the original.
</brief_description>
<description>
Combines phase-shifted signals with the original signal. The movement of the phase-shifted signals is controlled using a low-frequency oscillator.
</description>
<tutorials>
+ <link title="Audio buses">$DOCS_URL/tutorials/audio/audio_buses.html</link>
</tutorials>
<members>
<member name="depth" type="float" setter="set_depth" getter="get_depth" default="1.0">
diff --git a/doc/classes/AudioEffectPitchShift.xml b/doc/classes/AudioEffectPitchShift.xml
index aab380aa72..952d432879 100644
--- a/doc/classes/AudioEffectPitchShift.xml
+++ b/doc/classes/AudioEffectPitchShift.xml
@@ -1,13 +1,14 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="AudioEffectPitchShift" inherits="AudioEffect" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
- Adds a pitch-shifting audio effect to an Audio bus.
+ Adds a pitch-shifting audio effect to an audio bus.
Raises or lowers the pitch of original sound.
</brief_description>
<description>
Allows modulation of pitch independently of tempo. All frequencies can be increased/decreased with minimal effect on transients.
</description>
<tutorials>
+ <link title="Audio buses">$DOCS_URL/tutorials/audio/audio_buses.html</link>
</tutorials>
<members>
<member name="fft_size" type="int" setter="set_fft_size" getter="get_fft_size" enum="AudioEffectPitchShift.FFTSize" default="3">
diff --git a/doc/classes/AudioEffectReverb.xml b/doc/classes/AudioEffectReverb.xml
index 5525102806..b024f06849 100644
--- a/doc/classes/AudioEffectReverb.xml
+++ b/doc/classes/AudioEffectReverb.xml
@@ -2,12 +2,12 @@
<class name="AudioEffectReverb" inherits="AudioEffect" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
Adds a reverberation audio effect to an Audio bus.
- Simulates the sound of acoustic environments such as rooms, concert halls, caverns, or an open spaces.
</brief_description>
<description>
- Simulates rooms of different sizes. Its parameters can be adjusted to simulate the sound of a specific room.
+ Simulates the sound of acoustic environments such as rooms, concert halls, caverns, or an open spaces.
</description>
<tutorials>
+ <link title="Audio buses">$DOCS_URL/tutorials/audio/audio_buses.html</link>
<link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
</tutorials>
<members>
diff --git a/doc/classes/AudioEffectStereoEnhance.xml b/doc/classes/AudioEffectStereoEnhance.xml
index 5c62ba982f..088d61189f 100644
--- a/doc/classes/AudioEffectStereoEnhance.xml
+++ b/doc/classes/AudioEffectStereoEnhance.xml
@@ -7,6 +7,7 @@
An audio effect that can be used to adjust the intensity of stereo panning.
</description>
<tutorials>
+ <link title="Audio buses">$DOCS_URL/tutorials/audio/audio_buses.html</link>
</tutorials>
<members>
<member name="pan_pullout" type="float" setter="set_pan_pullout" getter="get_pan_pullout" default="1.0">
diff --git a/doc/classes/AudioStreamPlayer2D.xml b/doc/classes/AudioStreamPlayer2D.xml
index 7d0470f396..76666b1f27 100644
--- a/doc/classes/AudioStreamPlayer2D.xml
+++ b/doc/classes/AudioStreamPlayer2D.xml
@@ -64,6 +64,9 @@
<member name="max_polyphony" type="int" setter="set_max_polyphony" getter="get_max_polyphony" default="1">
The maximum number of sounds this node can play at the same time. Playing additional sounds after this value is reached will cut off the oldest sounds.
</member>
+ <member name="panning_strength" type="float" setter="set_panning_strength" getter="get_panning_strength" default="1.0">
+ Scales the panning strength for this node by multiplying the base [member ProjectSettings.audio/general/2d_panning_strength] with this factor. Higher values will pan audio from left to right more dramatically than lower values.
+ </member>
<member name="pitch_scale" type="float" setter="set_pitch_scale" getter="get_pitch_scale" default="1.0">
The pitch and the tempo of the audio, as a multiplier of the audio sample's sample rate.
</member>
diff --git a/doc/classes/AudioStreamPlayer3D.xml b/doc/classes/AudioStreamPlayer3D.xml
index 8356596f54..a49b1e2291 100644
--- a/doc/classes/AudioStreamPlayer3D.xml
+++ b/doc/classes/AudioStreamPlayer3D.xml
@@ -86,6 +86,9 @@
<member name="max_polyphony" type="int" setter="set_max_polyphony" getter="get_max_polyphony" default="1">
The maximum number of sounds this node can play at the same time. Playing additional sounds after this value is reached will cut off the oldest sounds.
</member>
+ <member name="panning_strength" type="float" setter="set_panning_strength" getter="get_panning_strength" default="1.0">
+ Scales the panning strength for this node by multiplying the base [member ProjectSettings.audio/general/3d_panning_strength] with this factor. Higher values will pan audio from left to right more dramatically than lower values.
+ </member>
<member name="pitch_scale" type="float" setter="set_pitch_scale" getter="get_pitch_scale" default="1.0">
The pitch and the tempo of the audio, as a multiplier of the audio sample's sample rate.
</member>
diff --git a/doc/classes/BaseMaterial3D.xml b/doc/classes/BaseMaterial3D.xml
index a9c6030809..d3ae85101d 100644
--- a/doc/classes/BaseMaterial3D.xml
+++ b/doc/classes/BaseMaterial3D.xml
@@ -359,6 +359,7 @@
</member>
<member name="texture_filter" type="int" setter="set_texture_filter" getter="get_texture_filter" enum="BaseMaterial3D.TextureFilter" default="3">
Filter flags for the texture. See [enum TextureFilter] for options.
+ [b]Note:[/b] [member heightmap_texture] is always sampled with linear filtering, even if nearest-neighbor filtering is selected here. This is to ensure the heightmap effect looks as intended. If you need sharper height transitions between pixels, resize the heightmap texture in an image editor with nearest-neighbor filtering.
</member>
<member name="texture_repeat" type="bool" setter="set_flag" getter="get_flag" default="true">
Repeat flags for the texture. See [enum TextureFilter] for options.
diff --git a/doc/classes/Button.xml b/doc/classes/Button.xml
index d85d02fbfb..1e0b685795 100644
--- a/doc/classes/Button.xml
+++ b/doc/classes/Button.xml
@@ -92,6 +92,9 @@
<member name="text_direction" type="int" setter="set_text_direction" getter="get_text_direction" enum="Control.TextDirection" default="0">
Base text writing direction.
</member>
+ <member name="text_overrun_behavior" type="int" setter="set_text_overrun_behavior" getter="get_text_overrun_behavior" enum="TextServer.OverrunBehavior" default="0">
+ Sets the clipping behavior when the text exceeds the node's bounding rectangle. See [enum TextServer.OverrunBehavior] for a description of all modes.
+ </member>
</members>
<theme_items>
<theme_item name="font_color" data_type="color" type="Color" default="Color(0.875, 0.875, 0.875, 1)">
diff --git a/doc/classes/Color.xml b/doc/classes/Color.xml
index 7b8a57ed22..59ad104ad1 100644
--- a/doc/classes/Color.xml
+++ b/doc/classes/Color.xml
@@ -157,10 +157,28 @@
Constructs a color from an [url=https://en.wikipedia.org/wiki/HSL_and_HSV]HSV profile[/url]. [code]h[/code] (hue), [code]s[/code] (saturation), and [code]v[/code] (value) are typically between 0 and 1.
[codeblocks]
[gdscript]
- var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8)
+ var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8)
[/gdscript]
[csharp]
- var c = Color.FromHsv(0.58f, 0.5f, 0.79f, 0.8f);
+ var color = Color.FromHsv(0.58f, 0.5f, 0.79f, 0.8f);
+ [/csharp]
+ [/codeblocks]
+ </description>
+ </method>
+ <method name="from_ok_hsl" qualifiers="static">
+ <return type="Color" />
+ <argument index="0" name="h" type="float" />
+ <argument index="1" name="s" type="float" />
+ <argument index="2" name="l" type="float" />
+ <argument index="3" name="alpha" type="float" default="1.0" />
+ <description>
+ Constructs a color from an [url=https://bottosson.github.io/posts/colorpicker/]OK HSL profile[/url]. [code]h[/code] (hue), [code]s[/code] (saturation), and [code]v[/code] (value) are typically between 0 and 1.
+ [codeblocks]
+ [gdscript]
+ var color = Color.from_ok_hsl(0.58, 0.5, 0.79, 0.8)
+ [/gdscript]
+ [csharp]
+ var color = Color.FromOkHsl(0.58f, 0.5f, 0.79f, 0.8f);
[/csharp]
[/codeblocks]
</description>
diff --git a/doc/classes/ColorPicker.xml b/doc/classes/ColorPicker.xml
index 5c47d6fb54..7c9c4ed4d6 100644
--- a/doc/classes/ColorPicker.xml
+++ b/doc/classes/ColorPicker.xml
@@ -91,6 +91,9 @@
<constant name="SHAPE_VHS_CIRCLE" value="2" enum="PickerShapeType">
HSV Color Model circle color space. Use Saturation as a radius.
</constant>
+ <constant name="SHAPE_OKHSL_CIRCLE" value="3" enum="PickerShapeType">
+ HSL OK Color Model circle color space.
+ </constant>
</constants>
<theme_items>
<theme_item name="h_width" data_type="constant" type="int" default="30">
diff --git a/doc/classes/CurveTexture.xml b/doc/classes/CurveTexture.xml
index 6aa39e453e..85473fc237 100644
--- a/doc/classes/CurveTexture.xml
+++ b/doc/classes/CurveTexture.xml
@@ -5,23 +5,27 @@
</brief_description>
<description>
Renders a given [Curve] provided to it. Simplifies the task of drawing curves and/or saving them as image files.
+ If you need to store up to 3 curves within a single texture, use [CurveXYZTexture] instead. See also [GradientTexture1D] and [GradientTexture2D].
</description>
<tutorials>
</tutorials>
<members>
<member name="curve" type="Curve" setter="set_curve" getter="get_curve">
- The [code]curve[/code] rendered onto the texture.
+ The [Curve] that is rendered onto the texture.
</member>
<member name="texture_mode" type="int" setter="set_texture_mode" getter="get_texture_mode" enum="CurveTexture.TextureMode" default="0">
+ The format the texture should be generated with. When passing a CurveTexture as a input to a [Shader], this may need to be adjusted.
</member>
<member name="width" type="int" setter="set_width" getter="get_width" default="256">
- The width of the texture.
+ The width of the texture (in pixels). Higher values make it possible to represent high-frequency data better (such as sudden direction changes), at the cost of increased generation time and memory usage.
</member>
</members>
<constants>
<constant name="TEXTURE_MODE_RGB" value="0" enum="TextureMode">
+ Store the curve equally across the red, green and blue channels. This uses more video memory, but is more compatible with shaders that only read the green and blue values.
</constant>
<constant name="TEXTURE_MODE_RED" value="1" enum="TextureMode">
+ Store the curve only in the red channel. This saves video memory, but some custom shaders may not be able to work with this.
</constant>
</constants>
</class>
diff --git a/doc/classes/CurveXYZTexture.xml b/doc/classes/CurveXYZTexture.xml
index d289e394aa..e3f2e8fc45 100644
--- a/doc/classes/CurveXYZTexture.xml
+++ b/doc/classes/CurveXYZTexture.xml
@@ -1,19 +1,26 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="CurveXYZTexture" inherits="Texture2D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
+ A texture that shows 3 different curves (stored on the red, green and blue color channels).
</brief_description>
<description>
+ Renders 3 given [Curve]s provided to it, on the red, green and blue channels respectively. Compared to using separate [CurveTexture]s, this further simplifies the task of drawing curves and/or saving them as image files.
+ If you only need to store one curve within a single texture, use [CurveTexture] instead. See also [GradientTexture1D] and [GradientTexture2D].
</description>
<tutorials>
</tutorials>
<members>
<member name="curve_x" type="Curve" setter="set_curve_x" getter="get_curve_x">
+ The [Curve] that is rendered onto the texture's red channel.
</member>
<member name="curve_y" type="Curve" setter="set_curve_y" getter="get_curve_y">
+ The [Curve] that is rendered onto the texture's green channel.
</member>
<member name="curve_z" type="Curve" setter="set_curve_z" getter="get_curve_z">
+ The [Curve] that is rendered onto the texture's blue channel.
</member>
<member name="width" type="int" setter="set_width" getter="get_width" default="256">
+ The width of the texture (in pixels). Higher values make it possible to represent high-frequency data better (such as sudden direction changes), at the cost of increased generation time and memory usage.
</member>
</members>
</class>
diff --git a/doc/classes/Dictionary.xml b/doc/classes/Dictionary.xml
index b46719c758..6f2ad5205c 100644
--- a/doc/classes/Dictionary.xml
+++ b/doc/classes/Dictionary.xml
@@ -291,6 +291,14 @@
Returns the list of keys in the [Dictionary].
</description>
</method>
+ <method name="merge">
+ <return type="void" />
+ <argument index="0" name="dictionary" type="Dictionary" />
+ <argument index="1" name="overwrite" type="bool" default="false" />
+ <description>
+ Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, duplicate keys will not be copied over, unless [code]overwrite[/code] is [code]true[/code].
+ </description>
+ </method>
<method name="size" qualifiers="const">
<return type="int" />
<description>
diff --git a/doc/classes/EditorPlugin.xml b/doc/classes/EditorPlugin.xml
index 7bbb2ae26c..1514b82ff8 100644
--- a/doc/classes/EditorPlugin.xml
+++ b/doc/classes/EditorPlugin.xml
@@ -261,14 +261,28 @@
<method name="_get_state" qualifiers="virtual const">
<return type="Dictionary" />
<description>
- Gets the state of your plugin editor. This is used when saving the scene (so state is kept when opening it again) and for switching tabs (so state can be restored when the tab returns).
+ Override this method to provide a state data you want to be saved, like view position, grid settings, folding, etc. This is used when saving the scene (so state is kept when opening it again) and for switching tabs (so state can be restored when the tab returns). This data is automatically saved for each scene in an [code]editstate[/code] file in the editor metadata folder. If you want to store global (scene-independent) editor data for your plugin, you can use [method _get_window_layout] instead.
+ Use [method _set_state] to restore your saved state.
+ [b]Note:[/b] This method should not be used to save important settings that should persist with the project.
+ [b]Note:[/b] You must implement [method _get_plugin_name] for the state to be stored and restored correctly.
+ [codeblock]
+ func _get_state():
+ var state = {"zoom": zoom, "preferred_color": my_color}
+ return state
+ [/codeblock]
</description>
</method>
<method name="_get_window_layout" qualifiers="virtual">
<return type="void" />
<argument index="0" name="configuration" type="ConfigFile" />
<description>
- Gets the GUI layout of the plugin. This is used to save the project's editor layout when [method queue_save_layout] is called or the editor layout was changed(For example changing the position of a dock).
+ Override this method to provide the GUI layout of the plugin or any other data you want to be stored. This is used to save the project's editor layout when [method queue_save_layout] is called or the editor layout was changed (for example changing the position of a dock). The data is stored in the [code]editor_layout.cfg[/code] file in the editor metadata directory.
+ Use [method _set_window_layout] to restore your saved layout.
+ [codeblock]
+ func _get_window_layout(configuration):
+ configuration.set_value("MyPlugin", "window_position", $Window.position)
+ configuration.set_value("MyPlugin", "icon_color", $Icon.modulate)
+ [/codeblock]
</description>
</method>
<method name="_handles" qualifiers="virtual const">
@@ -302,14 +316,25 @@
<return type="void" />
<argument index="0" name="state" type="Dictionary" />
<description>
- Restore the state saved by [method _get_state].
+ Restore the state saved by [method _get_state]. This method is called when the current scene tab is changed in the editor.
+ [b]Note:[/b] Your plugin must implement [method _get_plugin_name], otherwise it will not be recognized and this method will not be called.
+ [codeblock]
+ func _set_state(data):
+ zoom = data.get("zoom", 1.0)
+ preferred_color = data.get("my_color", Color.white)
+ [/codeblock]
</description>
</method>
<method name="_set_window_layout" qualifiers="virtual">
<return type="void" />
<argument index="0" name="configuration" type="ConfigFile" />
<description>
- Restore the plugin GUI layout saved by [method _get_window_layout].
+ Restore the plugin GUI layout and data saved by [method _get_window_layout]. This method is called for every plugin on editor startup. Use the provided [code]configuration[/code] file to read your saved data.
+ [codeblock]
+ func _set_window_layout(configuration):
+ $Window.position = configuration.get_value("MyPlugin", "window_position", Vector2())
+ $Icon.modulate = configuration.get_value("MyPlugin", "icon_color", Color.white)
+ [/codeblock]
</description>
</method>
<method name="add_autoload_singleton">
@@ -479,7 +504,7 @@
<method name="get_script_create_dialog">
<return type="ScriptCreateDialog" />
<description>
- Gets the Editor's dialogue used for making scripts.
+ Gets the Editor's dialog used for making scripts.
[b]Note:[/b] Users can configure it before use.
[b]Warning:[/b] Removing and freeing this node will render a part of the editor useless and may cause a crash.
</description>
diff --git a/doc/classes/FontData.xml b/doc/classes/FontData.xml
index a423d7a4e4..d32e7b3a94 100644
--- a/doc/classes/FontData.xml
+++ b/doc/classes/FontData.xml
@@ -3,7 +3,7 @@
<brief_description>
Font source data and prerendered glyph cache, imported from dynamic or bitmap font.
Supported font formats:
- - Dynamic font importer: TrueType (.ttf), OpenType (.otf), WOFF (.woff), WOFF2 (.woff2), Type 1 (.pfb, .pfm).
+ - Dynamic font importer: TrueType (.ttf), TrueType collection (.ttc), OpenType (.otf), OpenType collection (.otc), WOFF (.woff), WOFF2 (.woff2), Type 1 (.pfb, .pfm).
- Bitmap font importer: AngelCode BMFont (.fnt, .font), text and binary (version 3) format variants.
- Monospace image font importer: All supported image formats.
</brief_description>
@@ -87,6 +87,12 @@
Returns font descent (number of pixels below the baseline).
</description>
</method>
+ <method name="get_face_count" qualifiers="const">
+ <return type="int" />
+ <description>
+ Returns number of faces in the TrueType / OpenType collection.
+ </description>
+ </method>
<method name="get_glyph_advance" qualifiers="const">
<return type="Vector2" />
<argument index="0" name="cache_index" type="int" />
@@ -318,7 +324,8 @@
<return type="int" enum="Error" />
<argument index="0" name="path" type="String" />
<description>
- Loads a TrueType (.ttf), OpenType (.otf), WOFF (.woff), WOFF2 (.woff2) or Type 1 (.pfb, .pfm) dynamic font from file [code]path[/code].
+ Loads a TrueType (.ttf), TrueType collection (.ttc), OpenType (.otf), OpenType collection (.otc), WOFF (.woff), WOFF2 (.woff2) or Type 1 (.pfb, .pfm) dynamic font from file [code]path[/code].
+ [b]Note:[/b] Use [member face_index] to select specific face from the collection file.
[b]Warning:[/b] This method should only be used in the editor or in cases when you need to load external fonts at run-time, such as fonts located at the [code]user://[/code] directory.
</description>
</method>
@@ -570,6 +577,9 @@
<member name="embolden" type="float" setter="set_embolden" getter="get_embolden" default="0.0">
If is not equal to zero, emboldens the font outlines. Negative values reduce the outline thickness.
</member>
+ <member name="face_index" type="int" setter="set_face_index" getter="get_face_index" default="0">
+ Active face index in the TrueType / OpenType collection file.
+ </member>
<member name="fixed_size" type="int" setter="set_fixed_size" getter="get_fixed_size" default="0">
Font size, used only for the bitmap fonts.
</member>
diff --git a/doc/classes/GradientTexture1D.xml b/doc/classes/GradientTexture1D.xml
index a124753a9f..3254754ac1 100644
--- a/doc/classes/GradientTexture1D.xml
+++ b/doc/classes/GradientTexture1D.xml
@@ -4,7 +4,7 @@
Gradient-filled texture.
</brief_description>
<description>
- GradientTexture1D uses a [Gradient] to fill the texture data. The gradient will be filled from left to right using colors obtained from the gradient. This means the texture does not necessarily represent an exact copy of the gradient, but instead an interpolation of samples obtained from the gradient at fixed steps (see [member width]).
+ GradientTexture1D uses a [Gradient] to fill the texture data. The gradient will be filled from left to right using colors obtained from the gradient. This means the texture does not necessarily represent an exact copy of the gradient, but instead an interpolation of samples obtained from the gradient at fixed steps (see [member width]). See also [GradientTexture2D], [CurveTexture] and [CurveXYZTexture].
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/GradientTexture2D.xml b/doc/classes/GradientTexture2D.xml
index 4362578932..7561f1b947 100644
--- a/doc/classes/GradientTexture2D.xml
+++ b/doc/classes/GradientTexture2D.xml
@@ -4,7 +4,7 @@
Gradient-filled 2D texture.
</brief_description>
<description>
- The texture uses a [Gradient] to fill the texture data in 2D space. The gradient is filled according to the specified [member fill] and [member repeat] types using colors obtained from the gradient. The texture does not necessarily represent an exact copy of the gradient, but instead an interpolation of samples obtained from the gradient at fixed steps (see [member width] and [member height]).
+ The texture uses a [Gradient] to fill the texture data in 2D space. The gradient is filled according to the specified [member fill] and [member repeat] types using colors obtained from the gradient. The texture does not necessarily represent an exact copy of the gradient, but instead an interpolation of samples obtained from the gradient at fixed steps (see [member width] and [member height]). See also [GradientTexture1D], [CurveTexture] and [CurveXYZTexture].
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/Image.xml b/doc/classes/Image.xml
index da5b907fab..d2baf78a9e 100644
--- a/doc/classes/Image.xml
+++ b/doc/classes/Image.xml
@@ -380,16 +380,51 @@
[b]Note:[/b] The TinyEXR module is disabled in non-editor builds, which means [method save_exr] will return [constant ERR_UNAVAILABLE] when it is called from an exported project.
</description>
</method>
+ <method name="save_jpg" qualifiers="const">
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="quality" type="float" default="0.75" />
+ <description>
+ Saves the image as a JPEG file to [code]path[/code] with the specified [code]quality[/code] between [code]0.01[/code] and [code]1.0[/code] (inclusive). Higher [code]quality[/code] values result in better-looking output at the cost of larger file sizes. Recommended [code]quality[/code] values are between [code]0.75[/code] and [code]0.90[/code]. Even at quality [code]1.00[/code], JPEG compression remains lossy.
+ [b]Note:[/b] JPEG does not save an alpha channel. If the [Image] contains an alpha channel, the image will still be saved, but the resulting JPEG file won't contain the alpha channel.
+ </description>
+ </method>
+ <method name="save_jpg_to_buffer" qualifiers="const">
+ <return type="PackedByteArray" />
+ <argument index="0" name="quality" type="float" default="0.75" />
+ <description>
+ Saves the image as a JPEG file to a byte array with the specified [code]quality[/code] between [code]0.01[/code] and [code]1.0[/code] (inclusive). Higher [code]quality[/code] values result in better-looking output at the cost of larger byte array sizes (and therefore memory usage). Recommended [code]quality[/code] values are between [code]0.75[/code] and [code]0.90[/code]. Even at quality [code]1.00[/code], JPEG compression remains lossy.
+ [b]Note:[/b] JPEG does not save an alpha channel. If the [Image] contains an alpha channel, the image will still be saved, but the resulting byte array won't contain the alpha channel.
+ </description>
+ </method>
<method name="save_png" qualifiers="const">
<return type="int" enum="Error" />
<argument index="0" name="path" type="String" />
<description>
- Saves the image as a PNG file to [code]path[/code].
+ Saves the image as a PNG file to the file at [code]path[/code].
</description>
</method>
<method name="save_png_to_buffer" qualifiers="const">
<return type="PackedByteArray" />
<description>
+ Saves the image as a PNG file to a byte array.
+ </description>
+ </method>
+ <method name="save_webp" qualifiers="const">
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="lossy" type="bool" default="false" />
+ <argument index="2" name="quality" type="float" default="0.75" />
+ <description>
+ Saves the image as a WebP (Web Picture) file to the file at [code]path[/code]. By default it will save lossless. If [code]lossy[/code] is true, the image will be saved lossy, using the [code]quality[/code] setting between 0.0 and 1.0 (inclusive).
+ </description>
+ </method>
+ <method name="save_webp_to_buffer" qualifiers="const">
+ <return type="PackedByteArray" />
+ <argument index="0" name="lossy" type="bool" default="false" />
+ <argument index="1" name="quality" type="float" default="0.75" />
+ <description>
+ Saves the image as a WebP (Web Picture) file to a byte array. By default it will save lossless. If [code]lossy[/code] is true, the image will be saved lossy, using the [code]quality[/code] setting between 0.0 and 1.0 (inclusive).
</description>
</method>
<method name="set_pixel">
diff --git a/doc/classes/ImporterMesh.xml b/doc/classes/ImporterMesh.xml
index 90e7df4421..00601cec75 100644
--- a/doc/classes/ImporterMesh.xml
+++ b/doc/classes/ImporterMesh.xml
@@ -39,6 +39,16 @@
Removes all surfaces and blend shapes from this [ImporterMesh].
</description>
</method>
+ <method name="generate_lods">
+ <return type="void" />
+ <argument index="0" name="normal_merge_angle" type="float" />
+ <argument index="1" name="normal_split_angle" type="float" />
+ <description>
+ Generates all lods for this ImporterMesh.
+ [code]normal_merge_angle[/code] and [code]normal_split_angle[/code] are in degrees and used in the same way as the importer settings in [code]lods[/code]. As a good default, use 25 and 60 respectively.
+ The number of generated lods can be accessed using [method get_surface_lod_count], and each LOD is available in [method get_surface_lod_size] and [method get_surface_lod_indices].
+ </description>
+ </method>
<method name="get_blend_shape_count" qualifiers="const">
<return type="int" />
<description>
diff --git a/doc/classes/Input.xml b/doc/classes/Input.xml
index 2a4381b41b..66683fa0ee 100644
--- a/doc/classes/Input.xml
+++ b/doc/classes/Input.xml
@@ -40,7 +40,7 @@
<method name="flush_buffered_events">
<return type="void" />
<description>
- Sends all input events which are in the current buffer to the game loop. These events may have been buffered as a result of accumulated input ([method set_use_accumulated_input]) or agile input flushing ([member ProjectSettings.input_devices/buffering/agile_event_flushing]).
+ Sends all input events which are in the current buffer to the game loop. These events may have been buffered as a result of accumulated input ([member use_accumulated_input]) or agile input flushing ([member ProjectSettings.input_devices/buffering/agile_event_flushing]).
The engine will already do this itself at key execution points (at least once per frame). However, this can be useful in advanced cases where you want precise control over the timing of event handling.
</description>
</method>
@@ -80,7 +80,7 @@
</description>
</method>
<method name="get_connected_joypads">
- <return type="Array" />
+ <return type="int[]" />
<description>
Returns an [Array] containing the device IDs of all currently connected joypads.
</description>
@@ -160,12 +160,6 @@
Returns mouse buttons as a bitmask. If multiple mouse buttons are pressed at the same time, the bits are added together.
</description>
</method>
- <method name="get_mouse_mode" qualifiers="const">
- <return type="int" enum="Input.MouseMode" />
- <description>
- Returns the mouse mode. See the constants for more information.
- </description>
- </method>
<method name="get_vector" qualifiers="const">
<return type="Vector2" />
<argument index="0" name="negative_x" type="StringName" />
@@ -338,21 +332,6 @@
[b]Note:[/b] This value can be immediately overwritten by the hardware sensor value on Android and iOS.
</description>
</method>
- <method name="set_mouse_mode">
- <return type="void" />
- <argument index="0" name="mode" type="int" enum="Input.MouseMode" />
- <description>
- Sets the mouse mode. See the constants for more information.
- </description>
- </method>
- <method name="set_use_accumulated_input">
- <return type="void" />
- <argument index="0" name="enable" type="bool" />
- <description>
- Enables or disables the accumulation of similar input events sent by the operating system. When input accumulation is enabled, all input events generated during a frame will be merged and emitted when the frame is done rendering. Therefore, this limits the number of input method calls per second to the rendering FPS.
- Input accumulation is enabled by default. It can be disabled to get slightly more precise/reactive input at the cost of increased CPU usage. In applications where drawing freehand lines is required, input accumulation should generally be disabled while the user is drawing the line to get results that closely follow the actual input.
- </description>
- </method>
<method name="start_joy_vibration">
<return type="void" />
<argument index="0" name="device" type="int" />
@@ -389,6 +368,15 @@
</description>
</method>
</methods>
+ <members>
+ <member name="mouse_mode" type="int" setter="set_mouse_mode" getter="get_mouse_mode" enum="Input.MouseMode">
+ Controls the mouse mode. See [enum MouseMode] for more information.
+ </member>
+ <member name="use_accumulated_input" type="bool" setter="set_use_accumulated_input" getter="is_using_accumulated_input">
+ If [code]true[/code], similar input events sent by the operating system are accumulated. When input accumulation is enabled, all input events generated during a frame will be merged and emitted when the frame is done rendering. Therefore, this limits the number of input method calls per second to the rendering FPS.
+ Input accumulation can be disabled to get slightly more precise/reactive input at the cost of increased CPU usage. In applications where drawing freehand lines is required, input accumulation should generally be disabled while the user is drawing the line to get results that closely follow the actual input.
+ </member>
+ </members>
<signals>
<signal name="joy_connection_changed">
<argument index="0" name="device" type="int" />
diff --git a/doc/classes/InputEventMouseMotion.xml b/doc/classes/InputEventMouseMotion.xml
index 7cc3de8fcb..ad74204d82 100644
--- a/doc/classes/InputEventMouseMotion.xml
+++ b/doc/classes/InputEventMouseMotion.xml
@@ -5,7 +5,7 @@
</brief_description>
<description>
Contains mouse and pen motion information. Supports relative, absolute positions and velocity. See [method Node._input].
- [b]Note:[/b] By default, this event is only emitted once per frame rendered at most. If you need more precise input reporting, call [method Input.set_use_accumulated_input] with [code]false[/code] to make events emitted as often as possible. If you use InputEventMouseMotion to draw lines, consider implementing [url=https://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to avoid visible gaps in lines if the user is moving the mouse quickly.
+ [b]Note:[/b] By default, this event is only emitted once per frame rendered at most. If you need more precise input reporting, set [member Input.use_accumulated_input] to [code]false[/code] to make events emitted as often as possible. If you use InputEventMouseMotion to draw lines, consider implementing [url=https://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to avoid visible gaps in lines if the user is moving the mouse quickly.
</description>
<tutorials>
<link title="Mouse and input coordinates">$DOCS_URL/tutorials/inputs/mouse_and_input_coordinates.html</link>
diff --git a/doc/classes/ItemList.xml b/doc/classes/ItemList.xml
index 83e7eba5e5..d52234e9ac 100644
--- a/doc/classes/ItemList.xml
+++ b/doc/classes/ItemList.xml
@@ -8,6 +8,7 @@
Selectable items in the list may be selected or deselected and multiple selection may be enabled. Selection with right mouse button may also be enabled to allow use of popup context menus. Items may also be "activated" by double-clicking them or by pressing [kbd]Enter[/kbd].
Item text only supports single-line strings, newline characters (e.g. [code]\n[/code]) in the string won't produce a newline. Text wrapping is enabled in [constant ICON_MODE_TOP] mode, but column's width is adjusted to fully fit its content by default. You need to set [member fixed_column_width] greater than zero to wrap the text.
All [code]set_*[/code] methods allow negative item index, which makes the item accessed from the last one.
+ [b]Incremental search:[/b] Like [PopupMenu] and [Tree], [ItemList] supports searching within the list while the control is focused. Press a key that matches the first letter of an item's name to select the first item starting with the given letter. After that point, there are two ways to perform incremental search: 1) Press the same key again before the timeout duration to select the next item starting with the same letter. 2) Press letter keys that match the rest of the word before the timeout duration to match to select the item in question directly. Both of these actions will be reset to the beginning of the list if the timeout duration has passed since the last keystroke was registered. You can adjust the timeout duration by changing [member ProjectSettings.gui/timers/incremental_search_max_interval_msec].
</description>
<tutorials>
</tutorials>
@@ -402,8 +403,8 @@
<member name="select_mode" type="int" setter="set_select_mode" getter="get_select_mode" enum="ItemList.SelectMode" default="0">
Allows single or multiple item selection. See the [enum SelectMode] constants.
</member>
- <member name="text_overrun_behavior" type="int" setter="set_text_overrun_behavior" getter="get_text_overrun_behavior" enum="TextParagraph.OverrunBehavior" default="3">
- Sets the clipping behavior when the text exceeds an item's bounding rectangle. See [enum TextParagraph.OverrunBehavior] for a description of all modes.
+ <member name="text_overrun_behavior" type="int" setter="set_text_overrun_behavior" getter="get_text_overrun_behavior" enum="TextServer.OverrunBehavior" default="3">
+ Sets the clipping behavior when the text exceeds an item's bounding rectangle. See [enum TextServer.OverrunBehavior] for a description of all modes.
</member>
</members>
<signals>
diff --git a/doc/classes/Label.xml b/doc/classes/Label.xml
index d5744bbc42..b5f045621b 100644
--- a/doc/classes/Label.xml
+++ b/doc/classes/Label.xml
@@ -61,8 +61,8 @@
</method>
</methods>
<members>
- <member name="autowrap_mode" type="int" setter="set_autowrap_mode" getter="get_autowrap_mode" enum="Label.AutowrapMode" default="0">
- If set to something other than [constant AUTOWRAP_OFF], the text gets wrapped inside the node's bounding rectangle. If you resize the node, it will change its height automatically to show all the text. To see how each mode behaves, see [enum AutowrapMode].
+ <member name="autowrap_mode" type="int" setter="set_autowrap_mode" getter="get_autowrap_mode" enum="TextServer.AutowrapMode" default="0">
+ If set to something other than [constant TextServer.AUTOWRAP_OFF], the text gets wrapped inside the node's bounding rectangle. If you resize the node, it will change its height automatically to show all the text. To see how each mode behaves, see [enum TextServer.AutowrapMode].
</member>
<member name="clip_text" type="bool" setter="set_clip_text" getter="is_clipping_text" default="false">
If [code]true[/code], the Label only shows the text that fits inside its bounding rectangle and will clip text horizontally.
@@ -97,8 +97,8 @@
<member name="text_direction" type="int" setter="set_text_direction" getter="get_text_direction" enum="Control.TextDirection" default="0">
Base text writing direction.
</member>
- <member name="text_overrun_behavior" type="int" setter="set_text_overrun_behavior" getter="get_text_overrun_behavior" enum="Label.OverrunBehavior" default="0">
- Sets the clipping behavior when the text exceeds the node's bounding rectangle. See [enum OverrunBehavior] for a description of all modes.
+ <member name="text_overrun_behavior" type="int" setter="set_text_overrun_behavior" getter="get_text_overrun_behavior" enum="TextServer.OverrunBehavior" default="0">
+ Sets the clipping behavior when the text exceeds the node's bounding rectangle. See [enum TextServer.OverrunBehavior] for a description of all modes.
</member>
<member name="uppercase" type="bool" setter="set_uppercase" getter="is_uppercase" default="false">
If [code]true[/code], all the text displays as UPPERCASE.
@@ -110,54 +110,10 @@
Restricts the number of characters to display. Set to -1 to disable.
[b]Note:[/b] Setting this property updates [member percent_visible] based on current [method get_total_character_count].
</member>
- <member name="visible_characters_behavior" type="int" setter="set_visible_characters_behavior" getter="get_visible_characters_behavior" enum="Label.VisibleCharactersBehavior" default="0">
- Sets the clipping behavior when [member visible_characters] or [member percent_visible] is set. See [enum VisibleCharactersBehavior] for more info.
+ <member name="visible_characters_behavior" type="int" setter="set_visible_characters_behavior" getter="get_visible_characters_behavior" enum="TextServer.VisibleCharactersBehavior" default="0">
+ Sets the clipping behavior when [member visible_characters] or [member percent_visible] is set. See [enum TextServer.VisibleCharactersBehavior] for more info.
</member>
</members>
- <constants>
- <constant name="AUTOWRAP_OFF" value="0" enum="AutowrapMode">
- Autowrap is disabled.
- </constant>
- <constant name="AUTOWRAP_ARBITRARY" value="1" enum="AutowrapMode">
- Wraps the text inside the node's bounding rectangle by allowing to break lines at arbitrary positions, which is useful when very limited space is available.
- </constant>
- <constant name="AUTOWRAP_WORD" value="2" enum="AutowrapMode">
- Wraps the text inside the node's bounding rectangle by soft-breaking between words.
- </constant>
- <constant name="AUTOWRAP_WORD_SMART" value="3" enum="AutowrapMode">
- Behaves similarly to [constant AUTOWRAP_WORD], but force-breaks a word if that single word does not fit in one line.
- </constant>
- <constant name="OVERRUN_NO_TRIMMING" value="0" enum="OverrunBehavior">
- No text trimming is performed.
- </constant>
- <constant name="OVERRUN_TRIM_CHAR" value="1" enum="OverrunBehavior">
- Trims the text per character.
- </constant>
- <constant name="OVERRUN_TRIM_WORD" value="2" enum="OverrunBehavior">
- Trims the text per word.
- </constant>
- <constant name="OVERRUN_TRIM_ELLIPSIS" value="3" enum="OverrunBehavior">
- Trims the text per character and adds an ellipsis to indicate that parts are hidden.
- </constant>
- <constant name="OVERRUN_TRIM_WORD_ELLIPSIS" value="4" enum="OverrunBehavior">
- Trims the text per word and adds an ellipsis to indicate that parts are hidden.
- </constant>
- <constant name="VC_CHARS_BEFORE_SHAPING" value="0" enum="VisibleCharactersBehavior">
- Trims text before the shaping. e.g, increasing [member visible_characters] value is visually identical to typing the text.
- </constant>
- <constant name="VC_CHARS_AFTER_SHAPING" value="1" enum="VisibleCharactersBehavior">
- Displays glyphs that are mapped to the first [member visible_characters] characters from the beginning of the text.
- </constant>
- <constant name="VC_GLYPHS_AUTO" value="2" enum="VisibleCharactersBehavior">
- Displays [member percent_visible] glyphs, starting from the left or from the right, depending on [member Control.layout_direction] value.
- </constant>
- <constant name="VC_GLYPHS_LTR" value="3" enum="VisibleCharactersBehavior">
- Displays [member percent_visible] glyphs, starting from the left.
- </constant>
- <constant name="VC_GLYPHS_RTL" value="4" enum="VisibleCharactersBehavior">
- Displays [member percent_visible] glyphs, starting from the right.
- </constant>
- </constants>
<theme_items>
<theme_item name="font_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
Default text [Color] of the [Label].
diff --git a/doc/classes/Label3D.xml b/doc/classes/Label3D.xml
index c4d02e6101..47126575f7 100644
--- a/doc/classes/Label3D.xml
+++ b/doc/classes/Label3D.xml
@@ -59,8 +59,8 @@
<member name="alpha_scissor_threshold" type="float" setter="set_alpha_scissor_threshold" getter="get_alpha_scissor_threshold" default="0.5">
Threshold at which the alpha scissor will discard values.
</member>
- <member name="autowrap_mode" type="int" setter="set_autowrap_mode" getter="get_autowrap_mode" enum="Label3D.AutowrapMode" default="0">
- If set to something other than [constant AUTOWRAP_OFF], the text gets wrapped inside the node's bounding rectangle. If you resize the node, it will change its height automatically to show all the text. To see how each mode behaves, see [enum AutowrapMode].
+ <member name="autowrap_mode" type="int" setter="set_autowrap_mode" getter="get_autowrap_mode" enum="TextServer.AutowrapMode" default="0">
+ If set to something other than [constant TextServer.AUTOWRAP_OFF], the text gets wrapped inside the node's bounding rectangle. If you resize the node, it will change its height automatically to show all the text. To see how each mode behaves, see [enum TextServer.AutowrapMode].
</member>
<member name="billboard" type="int" setter="set_billboard_mode" getter="get_billboard_mode" enum="BaseMaterial3D.BillboardMode" default="0">
The billboard mode to use for the label. See [enum BaseMaterial3D.BillboardMode] for possible values.
@@ -143,18 +143,6 @@
</member>
</members>
<constants>
- <constant name="AUTOWRAP_OFF" value="0" enum="AutowrapMode">
- Autowrap is disabled.
- </constant>
- <constant name="AUTOWRAP_ARBITRARY" value="1" enum="AutowrapMode">
- Wraps the text inside the node's bounding rectangle by allowing to break lines at arbitrary positions, which is useful when very limited space is available.
- </constant>
- <constant name="AUTOWRAP_WORD" value="2" enum="AutowrapMode">
- Wraps the text inside the node's bounding rectangle by soft-breaking between words.
- </constant>
- <constant name="AUTOWRAP_WORD_SMART" value="3" enum="AutowrapMode">
- Behaves similarly to [constant AUTOWRAP_WORD], but force-breaks a word if that single word does not fit in one line.
- </constant>
<constant name="FLAG_SHADED" value="0" enum="DrawFlags">
If set, lights in the environment affect the label.
</constant>
diff --git a/doc/classes/LightmapGI.xml b/doc/classes/LightmapGI.xml
index ee98356962..ffde0d95ce 100644
--- a/doc/classes/LightmapGI.xml
+++ b/doc/classes/LightmapGI.xml
@@ -4,80 +4,122 @@
Computes and stores baked lightmaps for fast global illumination.
</brief_description>
<description>
- The [LightmapGI] node is used to compute and store baked lightmaps. Lightmaps are used to provide high-quality indirect lighting with very little light leaking. [LightmapGI] can also provide rough reflections using spherical harmonics if [member directional] is enabled. Dynamic objects can receive indirect lighting thanks to [i]light probes[/i], which can be automatically placed by setting [member generate_probes_subdiv]. Additional lightmap probes can also be added by creating [LightmapProbe] nodes. The downside is that lightmaps are fully static and cannot be baked in an exported project. Baking a [LightmapGI] node is also slower compared to [VoxelGI].
+ The [LightmapGI] node is used to compute and store baked lightmaps. Lightmaps are used to provide high-quality indirect lighting with very little light leaking. [LightmapGI] can also provide rough reflections using spherical harmonics if [member directional] is enabled. Dynamic objects can receive indirect lighting thanks to [i]light probes[/i], which can be automatically placed by setting [member generate_probes_subdiv] to a value other than [constant GENERATE_PROBES_DISABLED]. Additional lightmap probes can also be added by creating [LightmapProbe] nodes. The downside is that lightmaps are fully static and cannot be baked in an exported project. Baking a [LightmapGI] node is also slower compared to [VoxelGI].
[b]Procedural generation:[/b] Lightmap baking functionality is only available in the editor. This means [LightmapGI] is not suited to procedurally generated or user-built levels. For procedurally generated or user-built levels, use [VoxelGI] or SDFGI instead (see [member Environment.sdfgi_enabled]).
[b]Performance:[/b] [LightmapGI] provides the best possible run-time performance for global illumination. It is suitable for low-end hardware including integrated graphics and mobile devices.
+ [b]Note:[/b] Due to how lightmaps work, most properties only have a visible effect once lightmaps are baked again.
+ [b]Note:[/b] Lightmap baking on [CSGShape3D]s and [PrimitiveMesh]es is not supported, as these cannot store UV2 data required for baking.
+ [b]Note:[/b] If no custom lightmappers are installed, [LightmapGI] can only be baked when using the Vulkan backend (Clustered or Mobile), not OpenGL.
</description>
<tutorials>
</tutorials>
<members>
<member name="bias" type="float" setter="set_bias" getter="get_bias" default="0.0005">
+ The bias to use when computing shadows. Increasing [member bias] can fix shadow acne on the resulting baked lightmap, but can introduce peter-panning (shadows not connecting to their casters). Real-time [Light3D] shadows are not affected by this [member bias] property.
</member>
<member name="bounces" type="int" setter="set_bounces" getter="get_bounces" default="1">
+ Number of light bounces that are taken into account during baking. Higher values result in brighter, more realistic lighting, at the cost of longer bake times. If set to [code]0[/code], only environment lighting, direct light and emissive lighting is baked.
</member>
<member name="directional" type="bool" setter="set_directional" getter="is_directional" default="false">
+ If [code]true[/code], bakes lightmaps to contain directional information as spherical harmonics. This results in more realistic lighting appearance, especially with normal mapped materials and for lights that their have direct light baked ([member Light3D.light_bake_mode] set to [constant Light3D.BAKE_STATIC]). The directional information is also used to provide rough reflections for static and dynamic objects. This has a small run-time performance cost as the shader has to perform more work to interpret the direction information from the lightmap. Directional lightmaps also take longer to bake and result in larger file sizes.
+ [b]Note:[/b] The property's name has no relationship with [DirectionalLight3D]. [member directional] works with all light types.
</member>
<member name="environment_custom_color" type="Color" setter="set_environment_custom_color" getter="get_environment_custom_color">
+ The color to use for environment lighting. Only effective if [member environment_mode] is [constant ENVIRONMENT_MODE_CUSTOM_COLOR].
</member>
<member name="environment_custom_energy" type="float" setter="set_environment_custom_energy" getter="get_environment_custom_energy">
+ The color multiplier to use for environment lighting. Only effective if [member environment_mode] is [constant ENVIRONMENT_MODE_CUSTOM_COLOR].
</member>
<member name="environment_custom_sky" type="Sky" setter="set_environment_custom_sky" getter="get_environment_custom_sky">
+ The sky to use as a source of environment lighting. Only effective if [member environment_mode] is [constant ENVIRONMENT_MODE_CUSTOM_SKY].
</member>
<member name="environment_mode" type="int" setter="set_environment_mode" getter="get_environment_mode" enum="LightmapGI.EnvironmentMode" default="0">
+ The environment mode to use when baking lightmaps.
</member>
<member name="generate_probes_subdiv" type="int" setter="set_generate_probes" getter="get_generate_probes" enum="LightmapGI.GenerateProbes" default="0">
+ The level of subdivision to use when automatically generating [LightmapProbe]s for dynamic object lighting. Higher values result in more accurate indirect lighting on dynamic objects, at the cost of longer bake times and larger file sizes.
+ [b]Note:[/b] Automatically generated [LightmapProbe]s are not visible as nodes in the Scene tree dock, and cannot be modified this way after they are generated.
+ [b]Note:[/b] Regardless of [member generate_probes_subdiv], direct lighting on dynamic objects is always applied using [Light3D] nodes in real-time.
</member>
<member name="interior" type="bool" setter="set_interior" getter="is_interior" default="false">
+ If [code]true[/code], ignore environment lighting when baking lightmaps.
</member>
<member name="light_data" type="LightmapGIData" setter="set_light_data" getter="get_light_data">
+ The [LightmapGIData] associated to this [LightmapGI] node. This resource is automatically created after baking, and is not meant to be created manually.
</member>
<member name="max_texture_size" type="int" setter="set_max_texture_size" getter="get_max_texture_size" default="16384">
+ The maximum texture size for the generated texture atlas. Higher values will result in fewer slices being generated, but may not work on all hardware as a result of hardware limitations on texture sizes. Leave [member max_texture_size] at its default value of [code]16384[/code] if unsure.
</member>
<member name="quality" type="int" setter="set_bake_quality" getter="get_bake_quality" enum="LightmapGI.BakeQuality" default="1">
+ The quality preset to use when baking lightmaps. This affects bake times, but output file sizes remain mostly identical across quality levels.
+ To further speed up bake times, decrease [member bounces], disable [member use_denoiser] and increase the lightmap texel size on 3D scenes in the Import doc.
</member>
<member name="use_denoiser" type="bool" setter="set_use_denoiser" getter="is_using_denoiser" default="true">
+ If [code]true[/code], uses a CPU-based denoising algorithm on the generated lightmap. This eliminates most noise within the generated lightmap at the cost of longer bake times. File sizes are generally not impacted significantly by the use of a denoiser, although lossless compression may do a better job at compressing a denoised image.
+ [b]Note:[/b] The built-in denoiser (OpenImageDenoise) may crash when denoising lightmaps in large scenes. If you encounter a crash at the end of lightmap baking, try disabling [member use_denoiser].
</member>
</members>
<constants>
<constant name="BAKE_QUALITY_LOW" value="0" enum="BakeQuality">
+ Low bake quality (fastest bake times). The quality of this preset can be adjusted by changing [member ProjectSettings.rendering/lightmapping/bake_quality/low_quality_ray_count] and [member ProjectSettings.rendering/lightmapping/bake_quality/low_quality_probe_ray_count].
</constant>
<constant name="BAKE_QUALITY_MEDIUM" value="1" enum="BakeQuality">
+ Medium bake quality (fast bake times). The quality of this preset can be adjusted by changing [member ProjectSettings.rendering/lightmapping/bake_quality/medium_quality_ray_count] and [member ProjectSettings.rendering/lightmapping/bake_quality/medium_quality_probe_ray_count].
</constant>
<constant name="BAKE_QUALITY_HIGH" value="2" enum="BakeQuality">
+ High bake quality (slow bake times). The quality of this preset can be adjusted by changing [member ProjectSettings.rendering/lightmapping/bake_quality/high_quality_ray_count] and [member ProjectSettings.rendering/lightmapping/bake_quality/high_quality_probe_ray_count].
</constant>
<constant name="BAKE_QUALITY_ULTRA" value="3" enum="BakeQuality">
+ Highest bake quality (slowest bake times). The quality of this preset can be adjusted by changing [member ProjectSettings.rendering/lightmapping/bake_quality/high_quality_ray_count] and [member ProjectSettings.rendering/lightmapping/bake_quality/ultra_quality_probe_ray_count].
</constant>
<constant name="GENERATE_PROBES_DISABLED" value="0" enum="GenerateProbes">
+ Don't generate lightmap probes for lighting dynamic objects.
</constant>
<constant name="GENERATE_PROBES_SUBDIV_4" value="1" enum="GenerateProbes">
+ Lowest level of subdivision (fastest bake times, smallest file sizes).
</constant>
<constant name="GENERATE_PROBES_SUBDIV_8" value="2" enum="GenerateProbes">
+ Low level of subdivision (fast bake times, small file sizes).
</constant>
<constant name="GENERATE_PROBES_SUBDIV_16" value="3" enum="GenerateProbes">
+ High level of subdivision (slow bake times, large file sizes).
</constant>
<constant name="GENERATE_PROBES_SUBDIV_32" value="4" enum="GenerateProbes">
+ Highest level of subdivision (slowest bake times, largest file sizes).
</constant>
<constant name="BAKE_ERROR_OK" value="0" enum="BakeError">
+ Lightmap baking was successful.
</constant>
<constant name="BAKE_ERROR_NO_LIGHTMAPPER" value="1" enum="BakeError">
+ Lightmap baking failed as there is no lightmapper available in this Godot build.
</constant>
<constant name="BAKE_ERROR_NO_SAVE_PATH" value="2" enum="BakeError">
+ Lightmap baking failed as the [LightmapGIData] save path isn't configured in the resource.
</constant>
<constant name="BAKE_ERROR_NO_MESHES" value="3" enum="BakeError">
+ Lightmap baking failed as there are no meshes whose [member GeometryInstance3D.gi_mode] is [constant GeometryInstance3D.GI_MODE_STATIC] and with valid UV2 mapping in the current scene. You may need to select 3D scenes in the Import dock and change their global illumination mode accordingly.
</constant>
<constant name="BAKE_ERROR_MESHES_INVALID" value="4" enum="BakeError">
+ Lightmap baking failed as the lightmapper failed to analyze some of the meshes marked as static for baking.
</constant>
<constant name="BAKE_ERROR_CANT_CREATE_IMAGE" value="5" enum="BakeError">
+ Lightmap baking failed as the resulting image couldn't be saved or imported by Godot after it was saved.
</constant>
<constant name="BAKE_ERROR_USER_ABORTED" value="6" enum="BakeError">
+ The user aborted the lightmap baking operation (typically by clicking the [b]Cancel[/b] button in the progress dialog).
</constant>
<constant name="ENVIRONMENT_MODE_DISABLED" value="0" enum="EnvironmentMode">
+ Ignore environment lighting when baking lightmaps.
</constant>
<constant name="ENVIRONMENT_MODE_SCENE" value="1" enum="EnvironmentMode">
+ Use the scene's environment lighting when baking lightmaps.
+ [b]Note:[/b] If baking lightmaps in a scene with no [WorldEnvironment] node, this will act like [constant ENVIRONMENT_MODE_DISABLED]. The editor's preview sky and sun is [i]not[/i] taken into account by [LightmapGI] when baking lightmaps.
</constant>
<constant name="ENVIRONMENT_MODE_CUSTOM_SKY" value="2" enum="EnvironmentMode">
+ Use [member environment_custom_sky] as a source of environment lighting when baking lightmaps.
</constant>
<constant name="ENVIRONMENT_MODE_CUSTOM_COLOR" value="3" enum="EnvironmentMode">
+ Use [member environment_custom_color] multiplied by [member environment_custom_energy] as a constant source of environment lighting when baking lightmaps.
</constant>
</constants>
</class>
diff --git a/doc/classes/LightmapGIData.xml b/doc/classes/LightmapGIData.xml
index c2423daef0..20113ac309 100644
--- a/doc/classes/LightmapGIData.xml
+++ b/doc/classes/LightmapGIData.xml
@@ -1,8 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="LightmapGIData" inherits="Resource" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
+ Contains baked lightmap and dynamic object probe data for [LightmapGI].
</brief_description>
<description>
+ [LightmapGIData] contains baked lightmap and dynamic object probe data for [LightmapGI]. It is replaced every time lightmaps are baked in [LightmapGI].
</description>
<tutorials>
</tutorials>
@@ -14,38 +16,46 @@
<argument index="2" name="slice_index" type="int" />
<argument index="3" name="sub_instance" type="int" />
<description>
+ Adds an object that is considered baked within this [LightmapGIData].
</description>
</method>
<method name="clear_users">
<return type="void" />
<description>
+ Clear all objects that are considred baked within this [LightmapGIData].
</description>
</method>
<method name="get_user_count" qualifiers="const">
<return type="int" />
<description>
+ Returns the number of objects that are considered baked within this [LightmapGIData].
</description>
</method>
<method name="get_user_path" qualifiers="const">
<return type="NodePath" />
<argument index="0" name="user_idx" type="int" />
<description>
+ Returns the [NodePath] of the baked object at index [code]user_idx[/code].
</description>
</method>
<method name="is_using_spherical_harmonics" qualifiers="const">
<return type="bool" />
<description>
+ If [code]true[/code], lightmaps were baked with directional information. See also [member LightmapGI.directional].
</description>
</method>
<method name="set_uses_spherical_harmonics">
<return type="void" />
<argument index="0" name="uses_spherical_harmonics" type="bool" />
<description>
+ If [code]uses_spherical_harmonics[/code] is [code]true[/code], tells the engine to treat the lightmap data as if it was baked with directional information.
+ [b]Note:[/b] Changing this value on already baked lightmaps will not cause them to be baked again. This means the material appearance will look incorrect until lightmaps are baked again, in which case the value set here is discarded as the entire [LightmapGIData] resource is replaced by the lightmapper.
</description>
</method>
</methods>
<members>
<member name="light_texture" type="TextureLayered" setter="set_light_texture" getter="get_light_texture">
+ The lightmap atlas texture generated by the lightmapper.
</member>
</members>
</class>
diff --git a/doc/classes/LightmapProbe.xml b/doc/classes/LightmapProbe.xml
index a5ba6294b9..cb4879b6c7 100644
--- a/doc/classes/LightmapProbe.xml
+++ b/doc/classes/LightmapProbe.xml
@@ -1,8 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="LightmapProbe" inherits="Node3D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
+ Represents a single manually placed probe for dynamic object lighting with [LightmapGI].
</brief_description>
<description>
+ [LightmapProbe] represents the position of a single manually placed probe for dynamic object lighting with [LightmapGI].
+ Typically, [LightmapGI] probes are placed automatically by setting [member LightmapGI.generate_probes_subdiv] to a value other than [constant LightmapGI.GENERATE_PROBES_DISABLED]. By creating [LightmapProbe] nodes before baking lightmaps, you can add more probes in specific areas for greater detail, or disable automatic generation and rely only on manually placed probes instead.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/Lightmapper.xml b/doc/classes/Lightmapper.xml
index f9a1e2fa99..58ef2ed0cf 100644
--- a/doc/classes/Lightmapper.xml
+++ b/doc/classes/Lightmapper.xml
@@ -1,8 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="Lightmapper" inherits="RefCounted" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
+ Abstract class extended by lightmappers, for use in [LightmapGI].
</brief_description>
<description>
+ This class should be extended by custom lightmapper classes. Lightmappers can then be used with [LightmapGI] to provide fast baked global illumination in 3D.
+ Godot contains a built-in GPU-based lightmapper [LightmapperRD] that uses compute shaders, but custom lightmappers can be implemented by C++ modules.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/LightmapperRD.xml b/doc/classes/LightmapperRD.xml
index 29d95244ce..e4b68a7ef8 100644
--- a/doc/classes/LightmapperRD.xml
+++ b/doc/classes/LightmapperRD.xml
@@ -1,8 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="LightmapperRD" inherits="Lightmapper" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
+ The built-in GPU-based lightmapper for use with [LightmapGI].
</brief_description>
<description>
+ LightmapperRD ("RD" stands for [RenderingDevice]) is the built-in GPU-based lightmapper for use with [LightmapGI]. On most dedicated GPUs, it can bake lightmaps much faster than most CPU-based lightmappers. LightmapperRD uses compute shaders to bake lightmaps, so it does not require CUDA or OpenCL libraries to be installed to be usable.
+ [b]Note:[/b] Only usable when using the Vulkan backend (Clustered or Mobile), not OpenGL.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/Mesh.xml b/doc/classes/Mesh.xml
index 2b24901fe2..48fa2754d5 100644
--- a/doc/classes/Mesh.xml
+++ b/doc/classes/Mesh.xml
@@ -123,7 +123,7 @@
<method name="generate_triangle_mesh" qualifiers="const">
<return type="TriangleMesh" />
<description>
- Generate a [TriangleMesh] from the mesh.
+ Generate a [TriangleMesh] from the mesh. Considers only surfaces using one of these primitive types: [constant PRIMITIVE_TRIANGLES], [constant PRIMITIVE_TRIANGLE_STRIP].
</description>
</method>
<method name="get_aabb" qualifiers="const">
@@ -215,12 +215,16 @@
[PackedVector2Array] for second UV coordinates.
</constant>
<constant name="ARRAY_CUSTOM0" value="6" enum="ArrayType">
+ Contains custom color channel 0. [PackedByteArray] if [code](format &gt;&gt; [constant ARRAY_FORMAT_CUSTOM0_SHIFT]) &amp; [constant ARRAY_FORMAT_CUSTOM_MASK])[/code] is [constant ARRAY_CUSTOM_RGBA8_UNORM], [constant ARRAY_CUSTOM_RGBA8_UNORM], [constant ARRAY_CUSTOM_RG_HALF] or [constant ARRAY_CUSTOM_RGBA_HALF]. [PackedFloat32Array] otherwise.
</constant>
<constant name="ARRAY_CUSTOM1" value="7" enum="ArrayType">
+ Contains custom color channel 1. [PackedByteArray] if [code](format &gt;&gt; [constant ARRAY_FORMAT_CUSTOM1_SHIFT]) &amp; [constant ARRAY_FORMAT_CUSTOM_MASK])[/code] is [constant ARRAY_CUSTOM_RGBA8_UNORM], [constant ARRAY_CUSTOM_RGBA8_UNORM], [constant ARRAY_CUSTOM_RG_HALF] or [constant ARRAY_CUSTOM_RGBA_HALF]. [PackedFloat32Array] otherwise.
</constant>
<constant name="ARRAY_CUSTOM2" value="8" enum="ArrayType">
+ Contains custom color channel 2. [PackedByteArray] if [code](format &gt;&gt; [constant ARRAY_FORMAT_CUSTOM2_SHIFT]) &amp; [constant ARRAY_FORMAT_CUSTOM_MASK])[/code] is [constant ARRAY_CUSTOM_RGBA8_UNORM], [constant ARRAY_CUSTOM_RGBA8_UNORM], [constant ARRAY_CUSTOM_RG_HALF] or [constant ARRAY_CUSTOM_RGBA_HALF]. [PackedFloat32Array] otherwise.
</constant>
<constant name="ARRAY_CUSTOM3" value="9" enum="ArrayType">
+ Contains custom color channel 3. [PackedByteArray] if [code](format &gt;&gt; [constant ARRAY_FORMAT_CUSTOM3_SHIFT]) &amp; [constant ARRAY_FORMAT_CUSTOM_MASK])[/code] is [constant ARRAY_CUSTOM_RGBA8_UNORM], [constant ARRAY_CUSTOM_RGBA8_UNORM], [constant ARRAY_CUSTOM_RG_HALF] or [constant ARRAY_CUSTOM_RGBA_HALF]. [PackedFloat32Array] otherwise.
</constant>
<constant name="ARRAY_BONES" value="10" enum="ArrayType">
[PackedFloat32Array] or [PackedInt32Array] of bone indices. Each element is a group of 4 numbers.
@@ -236,20 +240,28 @@
Represents the size of the [enum ArrayType] enum.
</constant>
<constant name="ARRAY_CUSTOM_RGBA8_UNORM" value="0" enum="ArrayCustomFormat">
+ Indicates this custom channel contains unsigned normalized byte colors from 0 to 1, encoded as [PackedByteArray].
</constant>
<constant name="ARRAY_CUSTOM_RGBA8_SNORM" value="1" enum="ArrayCustomFormat">
+ Indicates this custom channel contains signed normalized byte colors from -1 to 1, encoded as [PackedByteArray].
</constant>
<constant name="ARRAY_CUSTOM_RG_HALF" value="2" enum="ArrayCustomFormat">
+ Indicates this custom channel contains half precision float colors, encoded as [PackedByteArray]. Only red and green channels are used.
</constant>
<constant name="ARRAY_CUSTOM_RGBA_HALF" value="3" enum="ArrayCustomFormat">
+ Indicates this custom channel contains half precision float colors, encoded as [PackedByteArray].
</constant>
<constant name="ARRAY_CUSTOM_R_FLOAT" value="4" enum="ArrayCustomFormat">
+ Indicates this custom channel contains full float colors, in a [PackedFloat32Array]. Only the red green channel is used.
</constant>
<constant name="ARRAY_CUSTOM_RG_FLOAT" value="5" enum="ArrayCustomFormat">
+ Indicates this custom channel contains full float colors, in a [PackedFloat32Array]. Only red and green channels are used.
</constant>
<constant name="ARRAY_CUSTOM_RGB_FLOAT" value="6" enum="ArrayCustomFormat">
+ Indicates this custom channel contains full float colors, in a [PackedFloat32Array]. Only red, green and blue channels are used.
</constant>
<constant name="ARRAY_CUSTOM_RGBA_FLOAT" value="7" enum="ArrayCustomFormat">
+ Indicates this custom channel contains full float colors, in a [PackedFloat32Array].
</constant>
<constant name="ARRAY_CUSTOM_MAX" value="8" enum="ArrayCustomFormat">
Represents the size of the [enum ArrayCustomFormat] enum.
@@ -273,12 +285,16 @@
Mesh array contains second UV.
</constant>
<constant name="ARRAY_FORMAT_CUSTOM0" value="64" enum="ArrayFormat">
+ Mesh array contains custom channel index 0.
</constant>
<constant name="ARRAY_FORMAT_CUSTOM1" value="128" enum="ArrayFormat">
+ Mesh array contains custom channel index 1.
</constant>
<constant name="ARRAY_FORMAT_CUSTOM2" value="256" enum="ArrayFormat">
+ Mesh array contains custom channel index 2.
</constant>
<constant name="ARRAY_FORMAT_CUSTOM3" value="512" enum="ArrayFormat">
+ Mesh array contains custom channel index 3.
</constant>
<constant name="ARRAY_FORMAT_BONES" value="1024" enum="ArrayFormat">
Mesh array contains bones.
@@ -290,29 +306,40 @@
Mesh array uses indices.
</constant>
<constant name="ARRAY_FORMAT_BLEND_SHAPE_MASK" value="7" enum="ArrayFormat">
+ Mask of mesh channels permitted in blend shapes.
</constant>
<constant name="ARRAY_FORMAT_CUSTOM_BASE" value="13" enum="ArrayFormat">
+ Shift of first custom channel.
</constant>
<constant name="ARRAY_FORMAT_CUSTOM_BITS" value="3" enum="ArrayFormat">
+ Number of format bits per custom channel. See [enum ArrayCustomFormat].
</constant>
<constant name="ARRAY_FORMAT_CUSTOM0_SHIFT" value="13" enum="ArrayFormat">
+ Amount to shift [enum ArrayCustomFormat] for custom channel index 0.
</constant>
<constant name="ARRAY_FORMAT_CUSTOM1_SHIFT" value="16" enum="ArrayFormat">
+ Amount to shift [enum ArrayCustomFormat] for custom channel index 1.
</constant>
<constant name="ARRAY_FORMAT_CUSTOM2_SHIFT" value="19" enum="ArrayFormat">
+ Amount to shift [enum ArrayCustomFormat] for custom channel index 2.
</constant>
<constant name="ARRAY_FORMAT_CUSTOM3_SHIFT" value="22" enum="ArrayFormat">
+ Amount to shift [enum ArrayCustomFormat] for custom channel index 3.
</constant>
<constant name="ARRAY_FORMAT_CUSTOM_MASK" value="7" enum="ArrayFormat">
+ Mask of custom format bits per custom channel. Must be shifted by one of the SHIFT constants. See [enum ArrayCustomFormat].
</constant>
<constant name="ARRAY_COMPRESS_FLAGS_BASE" value="25" enum="ArrayFormat">
+ Shift of first compress flag. Compress flags should be passed to [method ArrayMesh.add_surface_from_arrays] and [method SurfaceTool.commit].
</constant>
<constant name="ARRAY_FLAG_USE_2D_VERTICES" value="33554432" enum="ArrayFormat">
Flag used to mark that the array contains 2D vertices.
</constant>
<constant name="ARRAY_FLAG_USE_DYNAMIC_UPDATE" value="67108864" enum="ArrayFormat">
+ Flag indices that the mesh data will use [code]GL_DYNAMIC_DRAW[/code] on GLES. Unused on Vulkan.
</constant>
<constant name="ARRAY_FLAG_USE_8_BONE_WEIGHTS" value="134217728" enum="ArrayFormat">
+ Flag used to mark that the mesh contains up to 8 bone influences per vertex. This flag indicates that [constant ARRAY_BONES] and [constant ARRAY_WEIGHTS] elements will have double length.
</constant>
<constant name="BLEND_SHAPE_MODE_NORMALIZED" value="0" enum="BlendShapeMode">
Blend shapes are normalized.
diff --git a/doc/classes/MeshInstance2D.xml b/doc/classes/MeshInstance2D.xml
index 96e66f850a..e9666337a1 100644
--- a/doc/classes/MeshInstance2D.xml
+++ b/doc/classes/MeshInstance2D.xml
@@ -4,7 +4,7 @@
Node used for displaying a [Mesh] in 2D.
</brief_description>
<description>
- Node used for displaying a [Mesh] in 2D. Can be constructed from an existing [Sprite2D] via a tool in the editor toolbar. Select "Sprite2D" then "Convert to Mesh2D", select settings in popup and press "Create Mesh2D".
+ Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be automatically created from an existing [Sprite2D] via a tool in the editor toolbar. Select the [Sprite2D] node, then choose [b]Sprite2D &gt; Convert to MeshInstance2D[/b] at the top of the 2D editor viewport.
</description>
<tutorials>
<link title="2D meshes">$DOCS_URL/tutorials/2d/2d_meshes.html</link>
diff --git a/doc/classes/MovieWriter.xml b/doc/classes/MovieWriter.xml
new file mode 100644
index 0000000000..9c713bd7ae
--- /dev/null
+++ b/doc/classes/MovieWriter.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="MovieWriter" inherits="Object" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+ <brief_description>
+ Abstract class for non-real-time video recording encoders.
+ </brief_description>
+ <description>
+ Godot can record videos with non-real-time simulation. Like the [code]--fixed-fps[/code] command line argument, this forces the reported [code]delta[/code] in [method Node._process] functions to be identical across frames, regardless of how long it actually took to render the frame. This can be used to record high-quality videos with perfect frame pacing regardless of your hardware's capabilities.
+ Godot has 2 built-in [MovieWriter]s:
+ - AVI container with MJPEG for video and uncompressed audio ([code].avi[/code] file extension). Lossy compression, medium file sizes, fast encoding. The lossy compression quality can be adjusted by changing [member ProjectSettings.editor/movie_writer/mjpeg_quality]. The resulting file can be viewed in most video players, but it must be converted to another format for viewing on the web or by Godot with [VideoStreamPlayer]. AVI output is currently limited to a file of 4 GB in size at most.
+ - PNG image sequence for video and WAV for audio ([code].png[/code] file extension). Lossless compression, large file sizes, slow encoding. Designed to be encoded to a video file with another tool such as [url=https://ffmpeg.org/]FFmpeg[/url] after recording. Transparency is currently not supported.
+ If you need to encode to a different format or pipe a stream through third-party software, you can extend the [MovieWriter] class to create your own movie writers. This should typically be done using GDExtension for performance reasons.
+ [b]Editor usage:[/b] A default movie file path can be specified in [member ProjectSettings.editor/movie_writer/movie_file]. Alternatively, for running single scenes, a [code]movie_path[/code] metadata can be added to the root node, specifying the path to a movie file that will be used when recording that scene. Once a path is set, click the video reel icon in the top-right corner of the editor to enable Movie Maker mode, then run any scene as usual. The engine will start recording as soon as the splash screen is finished, and it will only stop recording when the engine quits. Click the video reel icon again to disable Movie Maker mode. Note that toggling Movie Maker mode does not affect project instances that are already running.
+ [b]Note:[/b] MovieWriter is available for use in both the editor and exported projects, but it is [i]not[/i] designed for use by end users to record videos while playing. Players wishing to record gameplay videos should install tools such as [url=https://obsproject.com/]OBS Studio[/url] or [url=https://www.maartenbaert.be/simplescreenrecorder/]SimpleScreenRecorder[/url] instead.
+ </description>
+ <tutorials>
+ </tutorials>
+ <methods>
+ <method name="_get_audio_mix_rate" qualifiers="virtual const">
+ <return type="int" />
+ <description>
+ Called when the audio sample rate used for recording the audio is requested by the engine. The value returned must be specified in Hz. Defaults to 48000 Hz if [method _get_audio_mix_rate] is not overridden.
+ </description>
+ </method>
+ <method name="_get_audio_speaker_mode" qualifiers="virtual const">
+ <return type="int" enum="AudioServer.SpeakerMode" />
+ <description>
+ Called when the audio speaker mode used for recording the audio is requested by the engine. This can affect the number of output channels in the resulting audio file/stream. Defaults to [constant AudioServer.SPEAKER_MODE_STEREO] if [method _get_audio_speaker_mode] is not overridden.
+ </description>
+ </method>
+ <method name="_handles_file" qualifiers="virtual const">
+ <return type="bool" />
+ <argument index="0" name="path" type="String" />
+ <description>
+ Called when the engine determines whether this [MovieWriter] is able to handle the file at [code]path[/code]. Must return [code]true[/code] if this [MovieWriter] is able to handle the given file path, [code]false[/code] otherwise. Typically, [method _handles_file] is overridden as follows to allow the user to record a file at any path with a given file extension:
+ [codeblock]
+ func _handles_file(path):
+ # Allows specifying an output file with a `.mkv` file extension (case-insensitive),
+ # either in the Project Settings or with the `--write-movie &lt;path&gt;` command line argument.
+ return path.get_extension().to_lower() == "mkv"
+ [/codeblock]
+ </description>
+ </method>
+ <method name="_write_begin" qualifiers="virtual">
+ <return type="int" enum="Error" />
+ <argument index="0" name="movie_size" type="Vector2i" />
+ <argument index="1" name="fps" type="int" />
+ <argument index="2" name="base_path" type="String" />
+ <description>
+ Called once before the engine starts writing video and audio data. [code]movie_size[/code] is the width and height of the video to save. [code]fps[/code] is the number of frames per second specified in the project settings or using the [code]--fixed-fps &lt;fps&gt;[/code] command line argument.
+ </description>
+ </method>
+ <method name="_write_end" qualifiers="virtual">
+ <return type="void" />
+ <description>
+ Called when the engine finishes writing. This occurs when the engine quits by pressing the window manager's close button, or when [method SceneTree.quit] is called.
+ [b]Note:[/b] Pressing [kbd]Ctrl + C[/kbd] on the terminal running the editor/project does [i]not[/i] result in [method _write_end] being called.
+ </description>
+ </method>
+ <method name="_write_frame" qualifiers="virtual">
+ <return type="int" enum="Error" />
+ <argument index="0" name="frame_image" type="Image" />
+ <argument index="1" name="audio_frame_block" type="const void*" />
+ <description>
+ Called at the end of every rendered frame. The [code]frame_image[/code] and [code]audio_frame_block[/code] function arguments should be written to.
+ </description>
+ </method>
+ <method name="add_writer" qualifiers="static">
+ <return type="void" />
+ <argument index="0" name="writer" type="MovieWriter" />
+ <description>
+ Adds a writer to be usable by the engine. The supported file extensions can be set by overridding [method _handles_file].
+ [b]Note:[/b] [method add_writer] must be called early enough in the engine initialization to work, as movie writing is designed to start at the same time as the rest of the engine.
+ </description>
+ </method>
+ </methods>
+</class>
diff --git a/doc/classes/MultiplayerSynchronizer.xml b/doc/classes/MultiplayerSynchronizer.xml
index 43355481b6..ac067791e6 100644
--- a/doc/classes/MultiplayerSynchronizer.xml
+++ b/doc/classes/MultiplayerSynchronizer.xml
@@ -7,7 +7,7 @@
<tutorials>
</tutorials>
<members>
- <member name="congiruation" type="SceneReplicationConfig" setter="set_replication_config" getter="get_replication_config">
+ <member name="replication_config" type="SceneReplicationConfig" setter="set_replication_config" getter="get_replication_config">
</member>
<member name="replication_interval" type="float" setter="set_replication_interval" getter="get_replication_interval" default="0.0">
</member>
diff --git a/doc/classes/NavigationAgent2D.xml b/doc/classes/NavigationAgent2D.xml
index 942579f564..757b635252 100644
--- a/doc/classes/NavigationAgent2D.xml
+++ b/doc/classes/NavigationAgent2D.xml
@@ -5,6 +5,7 @@
</brief_description>
<description>
2D Agent that is used in navigation to reach a location while avoiding static and dynamic obstacles. The dynamic obstacles are avoided using RVO collision avoidance. The agent needs navigation data to work correctly. [NavigationAgent2D] is physics safe.
+ [b]Note:[/b] After [method set_target_location] is used it is required to use the [method get_next_location] function once every physics frame to update the internal path logic of the NavigationAgent. The returned vector position from this function should be used as the next movement position for the agent's parent Node.
</description>
<tutorials>
</tutorials>
@@ -24,7 +25,7 @@
<method name="get_nav_path" qualifiers="const">
<return type="PackedVector2Array" />
<description>
- Returns the path from start to finish in global coordinates.
+ Returns this agent's current path from start to finish in global coordinates. The path only updates when the target location is changed or the agent requires a repath. The path array is not intended to be used in direct path movement as the agent has its own internal path logic that would get corrupted by changing the path array manually. Use the intended [method get_next_location] once every physics frame to receive the next path point for the agents movement as this function also updates the internal path logic.
</description>
</method>
<method name="get_nav_path_index" qualifiers="const">
@@ -33,10 +34,23 @@
Returns which index the agent is currently on in the navigation path's [PackedVector2Array].
</description>
</method>
+ <method name="get_navigation_layer_value" qualifiers="const">
+ <return type="bool" />
+ <argument index="0" name="layer_number" type="int" />
+ <description>
+ Returns whether or not the specified layer of the [member navigation_layers] bitmask is enabled, given a [code]layer_number[/code] between 1 and 32.
+ </description>
+ </method>
+ <method name="get_navigation_map" qualifiers="const">
+ <return type="RID" />
+ <description>
+ Returns the [RID] of the navigation map for this NavigationAgent node. This function returns always the map set on the NavigationAgent node and not the map of the abstract agent on the NavigationServer. If the agent map is changed directly with the NavigationServer API the NavigationAgent node will not be aware of the map change. Use [method set_navigation_map] to change the navigation map for the NavigationAgent and also update the agent on the NavigationServer.
+ </description>
+ </method>
<method name="get_next_location">
<return type="Vector2" />
<description>
- Returns a [Vector2] in global coordinates, that can be moved to, making sure that there are no static objects in the way. If the agent does not have a navigation path, it will return the position of the agent's parent.
+ Returns the next location in global coordinates that can be moved to, making sure that there are no static objects in the way. If the agent does not have a navigation path, it will return the position of the agent's parent. The use of this function once every physics frame is required to update the internal path logic of the NavigationAgent.
</description>
</method>
<method name="get_rid" qualifiers="const">
@@ -69,6 +83,21 @@
Returns true if the target location is reached. The target location is set using [method set_target_location]. It may not always be possible to reach the target location. It should always be possible to reach the final location though. See [method get_final_location].
</description>
</method>
+ <method name="set_navigation_layer_value">
+ <return type="void" />
+ <argument index="0" name="layer_number" type="int" />
+ <argument index="1" name="value" type="bool" />
+ <description>
+ Based on [code]value[/code], enables or disables the specified layer in the [member navigation_layers] bitmask, given a [code]layer_number[/code] between 1 and 32.
+ </description>
+ </method>
+ <method name="set_navigation_map">
+ <return type="void" />
+ <argument index="0" name="navigation_map" type="RID" />
+ <description>
+ Sets the [RID] of the navigation map this NavigationAgent node should use and also updates the [code]agent[/code] on the NavigationServer.
+ </description>
+ </method>
<method name="set_target_location">
<return type="void" />
<argument index="0" name="location" type="Vector2" />
@@ -94,12 +123,15 @@
<member name="max_speed" type="float" setter="set_max_speed" getter="get_max_speed" default="200.0">
The maximum speed that an agent can move.
</member>
- <member name="navigable_layers" type="int" setter="set_navigable_layers" getter="get_navigable_layers" default="1">
- A bitfield determining what layers of navigation regions this agent will use to calculate path. Changing it runtime will clear current navigation path and generate new one, according to new layers.
+ <member name="navigation_layers" type="int" setter="set_navigation_layers" getter="get_navigation_layers" default="1">
+ A bitfield determining what navigation layers of navigation regions this agent will use to calculate path. Changing it runtime will clear current navigation path and generate new one, according to new navigation layers.
</member>
<member name="neighbor_dist" type="float" setter="set_neighbor_dist" getter="get_neighbor_dist" default="500.0">
The distance to search for other agents.
</member>
+ <member name="path_desired_distance" type="float" setter="set_path_desired_distance" getter="get_path_desired_distance" default="1.0">
+ The distance threshold before a path point is considered to be reached. This will allow an agent to not have to hit a path point on the path exactly, but in the area. If this value is set to high the NavigationAgent will skip points on the path which can lead to leaving the navigation mesh. If this value is set to low the NavigationAgent will be stuck in a repath loop cause it will constantly overshoot or undershoot the distance to the next point on each physics frame update.
+ </member>
<member name="path_max_distance" type="float" setter="set_path_max_distance" getter="get_path_max_distance" default="3.0">
The maximum distance the agent is allowed away from the ideal path to the final location. This can happen due to trying to avoid collisions. When the maximum distance is exceeded, it recalculates the ideal path.
</member>
@@ -107,7 +139,7 @@
The radius of the agent.
</member>
<member name="target_desired_distance" type="float" setter="set_target_desired_distance" getter="get_target_desired_distance" default="1.0">
- The distance threshold before a target is considered to be reached. This will allow an agent to not have to hit a point on the path exactly, but in the area.
+ The distance threshold before the final target point is considered to be reached. This will allow an agent to not have to hit the point of the final target exactly, but only the area. If this value is set to low the NavigationAgent will be stuck in a repath loop cause it will constantly overshoot or undershoot the distance to the final target point on each physics frame update.
</member>
<member name="time_horizon" type="float" setter="set_time_horizon" getter="get_time_horizon" default="20.0">
The minimal amount of time for which this agent's velocities, that are computed with the collision avoidance algorithm, are safe with respect to other agents. The larger the number, the sooner the agent will respond to other agents, but less freedom in choosing its velocities. Must be positive.
diff --git a/doc/classes/NavigationAgent3D.xml b/doc/classes/NavigationAgent3D.xml
index db2210b6e3..5e1004165d 100644
--- a/doc/classes/NavigationAgent3D.xml
+++ b/doc/classes/NavigationAgent3D.xml
@@ -5,6 +5,7 @@
</brief_description>
<description>
3D Agent that is used in navigation to reach a location while avoiding static and dynamic obstacles. The dynamic obstacles are avoided using RVO collision avoidance. The agent needs navigation data to work correctly. [NavigationAgent3D] is physics safe.
+ [b]Note:[/b] After [method set_target_location] is used it is required to use the [method get_next_location] function once every physics frame to update the internal path logic of the NavigationAgent. The returned vector position from this function should be used as the next movement position for the agent's parent Node.
</description>
<tutorials>
</tutorials>
@@ -24,7 +25,7 @@
<method name="get_nav_path" qualifiers="const">
<return type="PackedVector3Array" />
<description>
- Returns the path from start to finish in global coordinates.
+ Returns this agent's current path from start to finish in global coordinates. The path only updates when the target location is changed or the agent requires a repath. The path array is not intended to be used in direct path movement as the agent has its own internal path logic that would get corrupted by changing the path array manually. Use the intended [method get_next_location] once every physics frame to receive the next path point for the agents movement as this function also updates the internal path logic.
</description>
</method>
<method name="get_nav_path_index" qualifiers="const">
@@ -33,10 +34,23 @@
Returns which index the agent is currently on in the navigation path's [PackedVector3Array].
</description>
</method>
+ <method name="get_navigation_layer_value" qualifiers="const">
+ <return type="bool" />
+ <argument index="0" name="layer_number" type="int" />
+ <description>
+ Returns whether or not the specified layer of the [member navigation_layers] bitmask is enabled, given a [code]layer_number[/code] between 1 and 32.
+ </description>
+ </method>
+ <method name="get_navigation_map" qualifiers="const">
+ <return type="RID" />
+ <description>
+ Returns the [RID] of the navigation map for this NavigationAgent node. This function returns always the map set on the NavigationAgent node and not the map of the abstract agent on the NavigationServer. If the agent map is changed directly with the NavigationServer API the NavigationAgent node will not be aware of the map change. Use [method set_navigation_map] to change the navigation map for the NavigationAgent and also update the agent on the NavigationServer.
+ </description>
+ </method>
<method name="get_next_location">
<return type="Vector3" />
<description>
- Returns a [Vector3] in global coordinates, that can be moved to, making sure that there are no static objects in the way. If the agent does not have a navigation path, it will return the origin of the agent's parent.
+ Returns the next location in global coordinates that can be moved to, making sure that there are no static objects in the way. If the agent does not have a navigation path, it will return the position of the agent's parent. The use of this function once every physics frame is required to update the internal path logic of the NavigationAgent.
</description>
</method>
<method name="get_rid" qualifiers="const">
@@ -69,6 +83,21 @@
Returns true if the target location is reached. The target location is set using [method set_target_location]. It may not always be possible to reach the target location. It should always be possible to reach the final location though. See [method get_final_location].
</description>
</method>
+ <method name="set_navigation_layer_value">
+ <return type="void" />
+ <argument index="0" name="layer_number" type="int" />
+ <argument index="1" name="value" type="bool" />
+ <description>
+ Based on [code]value[/code], enables or disables the specified layer in the [member navigation_layers] bitmask, given a [code]layer_number[/code] between 1 and 32.
+ </description>
+ </method>
+ <method name="set_navigation_map">
+ <return type="void" />
+ <argument index="0" name="navigation_map" type="RID" />
+ <description>
+ Sets the [RID] of the navigation map this NavigationAgent node should use and also updates the [code]agent[/code] on the NavigationServer.
+ </description>
+ </method>
<method name="set_target_location">
<return type="void" />
<argument index="0" name="location" type="Vector3" />
@@ -100,12 +129,15 @@
<member name="max_speed" type="float" setter="set_max_speed" getter="get_max_speed" default="10.0">
The maximum speed that an agent can move.
</member>
- <member name="navigable_layers" type="int" setter="set_navigable_layers" getter="get_navigable_layers" default="1">
- A bitfield determining what layers of navigation regions this agent will use to calculate path. Changing it runtime will clear current navigation path and generate new one, according to new layers.
+ <member name="navigation_layers" type="int" setter="set_navigation_layers" getter="get_navigation_layers" default="1">
+ A bitfield determining what navigation layers of navigation regions this NavigationAgent will use to calculate path. Changing it runtime will clear current navigation path and generate new one, according to new navigation layers.
</member>
<member name="neighbor_dist" type="float" setter="set_neighbor_dist" getter="get_neighbor_dist" default="50.0">
The distance to search for other agents.
</member>
+ <member name="path_desired_distance" type="float" setter="set_path_desired_distance" getter="get_path_desired_distance" default="1.0">
+ The distance threshold before a path point is considered to be reached. This will allow an agent to not have to hit a path point on the path exactly, but in the area. If this value is set to high the NavigationAgent will skip points on the path which can lead to leaving the navigation mesh. If this value is set to low the NavigationAgent will be stuck in a repath loop cause it will constantly overshoot or undershoot the distance to the next point on each physics frame update.
+ </member>
<member name="path_max_distance" type="float" setter="set_path_max_distance" getter="get_path_max_distance" default="3.0">
The maximum distance the agent is allowed away from the ideal path to the final location. This can happen due to trying to avoid collisions. When the maximum distance is exceeded, it recalculates the ideal path.
</member>
@@ -113,7 +145,7 @@
The radius of the agent.
</member>
<member name="target_desired_distance" type="float" setter="set_target_desired_distance" getter="get_target_desired_distance" default="1.0">
- The distance threshold before a target is considered to be reached. This will allow an agent to not have to hit a point on the path exactly, but in the area.
+ The distance threshold before the final target point is considered to be reached. This will allow an agent to not have to hit the point of the final target exactly, but only the area. If this value is set to low the NavigationAgent will be stuck in a repath loop cause it will constantly overshoot or undershoot the distance to the final target point on each physics frame update.
</member>
<member name="time_horizon" type="float" setter="set_time_horizon" getter="get_time_horizon" default="5.0">
The minimal amount of time for which this agent's velocities, that are computed with the collision avoidance algorithm, are safe with respect to other agents. The larger the number, the sooner the agent will respond to other agents, but less freedom in choosing its velocities. Must be positive.
diff --git a/doc/classes/NavigationMesh.xml b/doc/classes/NavigationMesh.xml
index bee459273b..3c18b56658 100644
--- a/doc/classes/NavigationMesh.xml
+++ b/doc/classes/NavigationMesh.xml
@@ -34,7 +34,7 @@
<return type="bool" />
<argument index="0" name="layer_number" type="int" />
<description>
- Returns whether or not the specified layer of the [member geometry/collision_mask] is enabled, given a [code]layer_number[/code] between 1 and 32.
+ Returns whether or not the specified layer of the [member geometry_collision_mask] is enabled, given a [code]layer_number[/code] between 1 and 32.
</description>
</method>
<method name="get_polygon">
@@ -61,7 +61,7 @@
<argument index="0" name="layer_number" type="int" />
<argument index="1" name="value" type="bool" />
<description>
- Based on [code]value[/code], enables or disables the specified layer in the [member geometry/collision_mask], given a [code]layer_number[/code] between 1 and 32.
+ Based on [code]value[/code], enables or disables the specified layer in the [member geometry_collision_mask], given a [code]layer_number[/code] between 1 and 32.
</description>
</method>
<method name="set_vertices">
@@ -73,75 +73,75 @@
</method>
</methods>
<members>
- <member name="agent/height" type="float" setter="set_agent_height" getter="get_agent_height" default="1.5">
+ <member name="agent_height" type="float" setter="set_agent_height" getter="get_agent_height" default="1.5">
The minimum floor to ceiling height that will still allow the floor area to be considered walkable.
- [b]Note:[/b] While baking, this value will be rounded up to the nearest multiple of [member cell/height].
+ [b]Note:[/b] While baking, this value will be rounded up to the nearest multiple of [member cell_height].
</member>
- <member name="agent/max_climb" type="float" setter="set_agent_max_climb" getter="get_agent_max_climb" default="0.25">
+ <member name="agent_max_climb" type="float" setter="set_agent_max_climb" getter="get_agent_max_climb" default="0.25">
The minimum ledge height that is considered to still be traversable.
- [b]Note:[/b] While baking, this value will be rounded down to the nearest multiple of [member cell/height].
+ [b]Note:[/b] While baking, this value will be rounded down to the nearest multiple of [member cell_height].
</member>
- <member name="agent/max_slope" type="float" setter="set_agent_max_slope" getter="get_agent_max_slope" default="45.0">
+ <member name="agent_max_slope" type="float" setter="set_agent_max_slope" getter="get_agent_max_slope" default="45.0">
The maximum slope that is considered walkable, in degrees.
</member>
- <member name="agent/radius" type="float" setter="set_agent_radius" getter="get_agent_radius" default="0.5">
+ <member name="agent_radius" type="float" setter="set_agent_radius" getter="get_agent_radius" default="0.5">
The distance to erode/shrink the walkable area of the heightfield away from obstructions.
- [b]Note:[/b] While baking, this value will be rounded up to the nearest multiple of [member cell/size].
+ [b]Note:[/b] While baking, this value will be rounded up to the nearest multiple of [member cell_size].
</member>
- <member name="cell/height" type="float" setter="set_cell_height" getter="get_cell_height" default="0.25">
+ <member name="cell_height" type="float" setter="set_cell_height" getter="get_cell_height" default="0.25">
The Y axis cell size to use for fields.
</member>
- <member name="cell/size" type="float" setter="set_cell_size" getter="get_cell_size" default="0.25">
+ <member name="cell_size" type="float" setter="set_cell_size" getter="get_cell_size" default="0.25">
The XZ plane cell size to use for fields.
</member>
- <member name="detail/sample_distance" type="float" setter="set_detail_sample_distance" getter="get_detail_sample_distance" default="6.0">
+ <member name="detail_sample_distance" type="float" setter="set_detail_sample_distance" getter="get_detail_sample_distance" default="6.0">
The sampling distance to use when generating the detail mesh, in cell unit.
</member>
- <member name="detail/sample_max_error" type="float" setter="set_detail_sample_max_error" getter="get_detail_sample_max_error" default="1.0">
+ <member name="detail_sample_max_error" type="float" setter="set_detail_sample_max_error" getter="get_detail_sample_max_error" default="1.0">
The maximum distance the detail mesh surface should deviate from heightfield, in cell unit.
</member>
- <member name="edge/max_error" type="float" setter="set_edge_max_error" getter="get_edge_max_error" default="1.3">
+ <member name="edge_max_error" type="float" setter="set_edge_max_error" getter="get_edge_max_error" default="1.3">
The maximum distance a simplfied contour's border edges should deviate the original raw contour.
</member>
- <member name="edge/max_length" type="float" setter="set_edge_max_length" getter="get_edge_max_length" default="12.0">
+ <member name="edge_max_length" type="float" setter="set_edge_max_length" getter="get_edge_max_length" default="12.0">
The maximum allowed length for contour edges along the border of the mesh.
- [b]Note:[/b] While baking, this value will be rounded up to the nearest multiple of [member cell/size].
+ [b]Note:[/b] While baking, this value will be rounded up to the nearest multiple of [member cell_size].
</member>
- <member name="filter/filter_walkable_low_height_spans" type="bool" setter="set_filter_walkable_low_height_spans" getter="get_filter_walkable_low_height_spans" default="false">
- If [code]true[/code], marks walkable spans as not walkable if the clearance above the span is less than [member agent/height].
- </member>
- <member name="filter/ledge_spans" type="bool" setter="set_filter_ledge_spans" getter="get_filter_ledge_spans" default="false">
+ <member name="filter_ledge_spans" type="bool" setter="set_filter_ledge_spans" getter="get_filter_ledge_spans" default="false">
If [code]true[/code], marks spans that are ledges as non-walkable.
</member>
- <member name="filter/low_hanging_obstacles" type="bool" setter="set_filter_low_hanging_obstacles" getter="get_filter_low_hanging_obstacles" default="false">
- If [code]true[/code], marks non-walkable spans as walkable if their maximum is within [member agent/max_climb] of a walkable neighbor.
+ <member name="filter_low_hanging_obstacles" type="bool" setter="set_filter_low_hanging_obstacles" getter="get_filter_low_hanging_obstacles" default="false">
+ If [code]true[/code], marks non-walkable spans as walkable if their maximum is within [member agent_max_climb] of a walkable neighbor.
+ </member>
+ <member name="filter_walkable_low_height_spans" type="bool" setter="set_filter_walkable_low_height_spans" getter="get_filter_walkable_low_height_spans" default="false">
+ If [code]true[/code], marks walkable spans as not walkable if the clearance above the span is less than [member agent_height].
</member>
- <member name="geometry/collision_mask" type="int" setter="set_collision_mask" getter="get_collision_mask">
+ <member name="geometry_collision_mask" type="int" setter="set_collision_mask" getter="get_collision_mask" default="4294967295">
The physics layers to scan for static colliders.
- Only used when [member geometry/parsed_geometry_type] is [constant PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH].
+ Only used when [member geometry_parsed_geometry_type] is [constant PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH].
</member>
- <member name="geometry/parsed_geometry_type" type="int" setter="set_parsed_geometry_type" getter="get_parsed_geometry_type" enum="NavigationMesh.ParsedGeometryType" default="0">
+ <member name="geometry_parsed_geometry_type" type="int" setter="set_parsed_geometry_type" getter="get_parsed_geometry_type" enum="NavigationMesh.ParsedGeometryType" default="0">
Determines which type of nodes will be parsed as geometry. See [enum ParsedGeometryType] for possible values.
</member>
- <member name="geometry/source_geometry_mode" type="int" setter="set_source_geometry_mode" getter="get_source_geometry_mode" enum="NavigationMesh.SourceGeometryMode" default="0">
+ <member name="geometry_source_geometry_mode" type="int" setter="set_source_geometry_mode" getter="get_source_geometry_mode" enum="NavigationMesh.SourceGeometryMode" default="0">
The source of the geometry used when baking. See [enum SourceGeometryMode] for possible values.
</member>
- <member name="geometry/source_group_name" type="StringName" setter="set_source_group_name" getter="get_source_group_name">
+ <member name="geometry_source_group_name" type="StringName" setter="set_source_group_name" getter="get_source_group_name" default="&amp;&quot;navmesh&quot;">
The name of the group to scan for geometry.
- Only used when [member geometry/source_geometry_mode] is [constant SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant SOURCE_GEOMETRY_GROUPS_EXPLICIT].
+ Only used when [member geometry_source_geometry_mode] is [constant SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant SOURCE_GEOMETRY_GROUPS_EXPLICIT].
</member>
- <member name="polygon/verts_per_poly" type="float" setter="set_verts_per_poly" getter="get_verts_per_poly" default="6.0">
+ <member name="polygon_verts_per_poly" type="float" setter="set_verts_per_poly" getter="get_verts_per_poly" default="6.0">
The maximum number of vertices allowed for polygons generated during the contour to polygon conversion process.
</member>
- <member name="region/merge_size" type="float" setter="set_region_merge_size" getter="get_region_merge_size" default="20.0">
+ <member name="region_merge_size" type="float" setter="set_region_merge_size" getter="get_region_merge_size" default="20.0">
Any regions with a size smaller than this will be merged with larger regions if possible.
[b]Note:[/b] This value will be squared to calculate the number of cells. For example, a value of 20 will set the number of cells to 400.
</member>
- <member name="region/min_size" type="float" setter="set_region_min_size" getter="get_region_min_size" default="2.0">
+ <member name="region_min_size" type="float" setter="set_region_min_size" getter="get_region_min_size" default="2.0">
The minimum size of a region for it to be created.
[b]Note:[/b] This value will be squared to calculate the minimum number of cells allowed to form isolated island areas. For example, a value of 8 will set the number of cells to 64.
</member>
- <member name="sample_partition_type/sample_partition_type" type="int" setter="set_sample_partition_type" getter="get_sample_partition_type" enum="NavigationMesh.SamplePartitionType" default="0">
+ <member name="sample_partition_type" type="int" setter="set_sample_partition_type" getter="get_sample_partition_type" enum="NavigationMesh.SamplePartitionType" default="0">
Partitioning algorithm for creating the navigation mesh polys. See [enum SamplePartitionType] for possible values.
</member>
</members>
@@ -162,7 +162,7 @@
Parses mesh instances as geometry. This includes [MeshInstance3D], [CSGShape3D], and [GridMap] nodes.
</constant>
<constant name="PARSED_GEOMETRY_STATIC_COLLIDERS" value="1" enum="ParsedGeometryType">
- Parses [StaticBody3D] colliders as geometry. The collider should be in any of the layers specified by [member geometry/collision_mask].
+ Parses [StaticBody3D] colliders as geometry. The collider should be in any of the layers specified by [member geometry_collision_mask].
</constant>
<constant name="PARSED_GEOMETRY_BOTH" value="2" enum="ParsedGeometryType">
Both [constant PARSED_GEOMETRY_MESH_INSTANCES] and [constant PARSED_GEOMETRY_STATIC_COLLIDERS].
@@ -174,10 +174,10 @@
Scans the child nodes of [NavigationRegion3D] recursively for geometry.
</constant>
<constant name="SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN" value="1" enum="SourceGeometryMode">
- Scans nodes in a group and their child nodes recursively for geometry. The group is specified by [member geometry/source_group_name].
+ Scans nodes in a group and their child nodes recursively for geometry. The group is specified by [member geometry_source_group_name].
</constant>
<constant name="SOURCE_GEOMETRY_GROUPS_EXPLICIT" value="2" enum="SourceGeometryMode">
- Uses nodes in a group for geometry. The group is specified by [member geometry/source_group_name].
+ Uses nodes in a group for geometry. The group is specified by [member geometry_source_group_name].
</constant>
<constant name="SOURCE_GEOMETRY_MAX" value="3" enum="SourceGeometryMode">
Represents the size of the [enum SourceGeometryMode] enum.
diff --git a/doc/classes/NavigationMeshGenerator.xml b/doc/classes/NavigationMeshGenerator.xml
index 36588ce2f5..b92183fda0 100644
--- a/doc/classes/NavigationMeshGenerator.xml
+++ b/doc/classes/NavigationMeshGenerator.xml
@@ -17,7 +17,7 @@
<argument index="0" name="nav_mesh" type="NavigationMesh" />
<argument index="1" name="root_node" type="Node" />
<description>
- Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child nodes under the provided [code]root_node[/code] or a specific group of nodes for potential source geometry. The parse behavior can be controlled with the [member NavigationMesh.geometry/parsed_geometry_type] and [member NavigationMesh.geometry/source_geometry_mode] properties on the [NavigationMesh] resource.
+ Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child nodes under the provided [code]root_node[/code] or a specific group of nodes for potential source geometry. The parse behavior can be controlled with the [member NavigationMesh.geometry_parsed_geometry_type] and [member NavigationMesh.geometry_source_geometry_mode] properties on the [NavigationMesh] resource.
</description>
</method>
<method name="clear">
diff --git a/doc/classes/NavigationObstacle2D.xml b/doc/classes/NavigationObstacle2D.xml
index f3690ce8a7..4ecdc06645 100644
--- a/doc/classes/NavigationObstacle2D.xml
+++ b/doc/classes/NavigationObstacle2D.xml
@@ -5,6 +5,7 @@
</brief_description>
<description>
2D Obstacle used in navigation for collision avoidance. The obstacle needs navigation data to work correctly. [NavigationObstacle2D] is physics safe.
+ [b]Note:[/b] Obstacles are intended as a last resort option for constantly moving objects that cannot be (re)baked to a navigation mesh efficiently.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/NavigationObstacle3D.xml b/doc/classes/NavigationObstacle3D.xml
index e6ea70b91a..ed8af3883c 100644
--- a/doc/classes/NavigationObstacle3D.xml
+++ b/doc/classes/NavigationObstacle3D.xml
@@ -5,6 +5,7 @@
</brief_description>
<description>
3D Obstacle used in navigation for collision avoidance. The obstacle needs navigation data to work correctly. [NavigationObstacle3D] is physics safe.
+ [b]Note:[/b] Obstacles are intended as a last resort option for constantly moving objects that cannot be (re)baked to a navigation mesh efficiently.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/NavigationPolygon.xml b/doc/classes/NavigationPolygon.xml
index ee57d8f26b..0a2ceeedc5 100644
--- a/doc/classes/NavigationPolygon.xml
+++ b/doc/classes/NavigationPolygon.xml
@@ -80,6 +80,12 @@
Clears the array of polygons, but it doesn't clear the array of outlines and vertices.
</description>
</method>
+ <method name="get_mesh">
+ <return type="NavigationMesh" />
+ <description>
+ Returns the [NavigationMesh] resulting from this navigation polygon. This navmesh can be used to update the navmesh of a region with the [method NavigationServer3D.region_set_navmesh] API directly (as 2D uses the 3D server behind the scene).
+ </description>
+ </method>
<method name="get_outline" qualifiers="const">
<return type="PackedVector2Array" />
<argument index="0" name="idx" type="int" />
diff --git a/doc/classes/NavigationRegion2D.xml b/doc/classes/NavigationRegion2D.xml
index 5cd2e035b6..c48ca18e9e 100644
--- a/doc/classes/NavigationRegion2D.xml
+++ b/doc/classes/NavigationRegion2D.xml
@@ -7,26 +7,50 @@
A region of the navigation map. It tells the [NavigationServer2D] what can be navigated and what cannot, based on its [NavigationPolygon] resource.
Two regions can be connected to each other if they share a similar edge. You can set the minimum distance between two vertices required to connect two edges by using [method NavigationServer2D.map_set_edge_connection_margin].
[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting two regions. They must share a similar edge.
+ The pathfinding cost of entering this region from another region can be controlled with the [member enter_cost] value.
+ [b]Note[/b]: This value is not added to the path cost when the start position is already inside this region.
+ The pathfinding cost of traveling distances inside this region can be controlled with the [member travel_cost] multiplier.
</description>
<tutorials>
</tutorials>
<methods>
+ <method name="get_navigation_layer_value" qualifiers="const">
+ <return type="bool" />
+ <argument index="0" name="layer_number" type="int" />
+ <description>
+ Returns whether or not the specified layer of the [member navigation_layers] bitmask is enabled, given a [code]layer_number[/code] between 1 and 32.
+ </description>
+ </method>
<method name="get_region_rid" qualifiers="const">
<return type="RID" />
<description>
Returns the [RID] of this region on the [NavigationServer2D]. Combined with [method NavigationServer2D.map_get_closest_point_owner] can be used to identify the [NavigationRegion2D] closest to a point on the merged navigation map.
</description>
</method>
+ <method name="set_navigation_layer_value">
+ <return type="void" />
+ <argument index="0" name="layer_number" type="int" />
+ <argument index="1" name="value" type="bool" />
+ <description>
+ Based on [code]value[/code], enables or disables the specified layer in the [member navigation_layers] bitmask, given a [code]layer_number[/code] between 1 and 32.
+ </description>
+ </method>
</methods>
<members>
<member name="enabled" type="bool" setter="set_enabled" getter="is_enabled" default="true">
Determines if the [NavigationRegion2D] is enabled or disabled.
</member>
- <member name="layers" type="int" setter="set_layers" getter="get_layers" default="1">
- A bitfield determining all layers the region belongs to. These layers can be checked upon when requesting a path with [method NavigationServer2D.map_get_path].
+ <member name="enter_cost" type="float" setter="set_enter_cost" getter="get_enter_cost" default="0.0">
+ When pathfinding enters this region's navmesh from another regions navmesh the [code]enter_cost[/code] value is added to the path distance for determining the shortest path.
+ </member>
+ <member name="navigation_layers" type="int" setter="set_navigation_layers" getter="get_navigation_layers" default="1">
+ A bitfield determining all navigation layers the region belongs to. These navigation layers can be checked upon when requesting a path with [method NavigationServer2D.map_get_path].
</member>
<member name="navpoly" type="NavigationPolygon" setter="set_navigation_polygon" getter="get_navigation_polygon">
The [NavigationPolygon] resource to use.
</member>
+ <member name="travel_cost" type="float" setter="set_travel_cost" getter="get_travel_cost" default="1.0">
+ When pathfinding moves inside this region's navmesh the traveled distances are multiplied with [code]travel_cost[/code] for determining the shortest path.
+ </member>
</members>
</class>
diff --git a/doc/classes/NavigationRegion3D.xml b/doc/classes/NavigationRegion3D.xml
index 42f0e0c5d9..9f4feee072 100644
--- a/doc/classes/NavigationRegion3D.xml
+++ b/doc/classes/NavigationRegion3D.xml
@@ -6,6 +6,10 @@
<description>
A region of the navigation map. It tells the [NavigationServer3D] what can be navigated and what cannot, based on its [NavigationMesh] resource.
Two regions can be connected to each other if they share a similar edge. You can set the minimum distance between two vertices required to connect two edges by using [method NavigationServer3D.map_set_edge_connection_margin].
+ [b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting two regions. They must share a similar edge.
+ The cost of entering this region from another region can be controlled with the [member enter_cost] value.
+ [b]Note[/b]: This value is not added to the path cost when the start position is already inside this region.
+ The cost of traveling distances inside this region can be controlled with the [member travel_cost] multiplier.
</description>
<tutorials>
</tutorials>
@@ -17,23 +21,44 @@
Bakes the [NavigationMesh]. If [code]on_thread[/code] is set to [code]true[/code] (default), the baking is done on a separate thread. Baking on separate thread is useful because navigation baking is not a cheap operation. When it is completed, it automatically sets the new [NavigationMesh]. Please note that baking on separate thread may be very slow if geometry is parsed from meshes as async access to each mesh involves heavy synchronization. Also, please note that baking on a separate thread is automatically disabled on operating systems that cannot use threads (such as HTML5 with threads disabled).
</description>
</method>
+ <method name="get_navigation_layer_value" qualifiers="const">
+ <return type="bool" />
+ <argument index="0" name="layer_number" type="int" />
+ <description>
+ Returns whether or not the specified layer of the [member navigation_layers] bitmask is enabled, given a [code]layer_number[/code] between 1 and 32.
+ </description>
+ </method>
<method name="get_region_rid" qualifiers="const">
<return type="RID" />
<description>
Returns the [RID] of this region on the [NavigationServer3D]. Combined with [method NavigationServer3D.map_get_closest_point_owner] can be used to identify the [NavigationRegion3D] closest to a point on the merged navigation map.
</description>
</method>
+ <method name="set_navigation_layer_value">
+ <return type="void" />
+ <argument index="0" name="layer_number" type="int" />
+ <argument index="1" name="value" type="bool" />
+ <description>
+ Based on [code]value[/code], enables or disables the specified layer in the [member navigation_layers] bitmask, given a [code]layer_number[/code] between 1 and 32.
+ </description>
+ </method>
</methods>
<members>
<member name="enabled" type="bool" setter="set_enabled" getter="is_enabled" default="true">
Determines if the [NavigationRegion3D] is enabled or disabled.
</member>
- <member name="layers" type="int" setter="set_layers" getter="get_layers" default="1">
- A bitfield determining all layers the region belongs to. These layers can be checked upon when requesting a path with [method NavigationServer3D.map_get_path].
+ <member name="enter_cost" type="float" setter="set_enter_cost" getter="get_enter_cost" default="0.0">
+ When pathfinding enters this region's navmesh from another regions navmesh the [code]enter_cost[/code] value is added to the path distance for determining the shortest path.
+ </member>
+ <member name="navigation_layers" type="int" setter="set_navigation_layers" getter="get_navigation_layers" default="1">
+ A bitfield determining all navigation layers the region belongs to. These navigation layers can be checked upon when requesting a path with [method NavigationServer3D.map_get_path].
</member>
<member name="navmesh" type="NavigationMesh" setter="set_navigation_mesh" getter="get_navigation_mesh">
The [NavigationMesh] resource to use.
</member>
+ <member name="travel_cost" type="float" setter="set_travel_cost" getter="get_travel_cost" default="1.0">
+ When pathfinding moves inside this region's navmesh the traveled distances are multiplied with [code]travel_cost[/code] for determining the shortest path.
+ </member>
</members>
<signals>
<signal name="bake_finished">
diff --git a/doc/classes/NavigationServer2D.xml b/doc/classes/NavigationServer2D.xml
index 1994a7a4c4..220c12ce7f 100644
--- a/doc/classes/NavigationServer2D.xml
+++ b/doc/classes/NavigationServer2D.xml
@@ -8,7 +8,7 @@
Maps are made up of regions, which are made of navigation polygons. Together, they define the navigable areas in the 2D world.
[b]Note:[/b] Most NavigationServer changes take effect after the next physics frame and not immediately. This includes all changes made to maps, regions or agents by navigation related Nodes in the SceneTree or made through scripts.
For two regions to be connected to each other, they must share a similar edge. An edge is considered connected to another if both of its two vertices are at a distance less than [code]edge_connection_margin[/code] to the respective other edge's vertex.
- You may assign navigation layers to regions with [method NavigationServer2D.region_set_layers], which then can be checked upon when requesting a path with [method NavigationServer2D.map_get_path]. This allows allowing or forbidding some areas to 2D objects.
+ You may assign navigation layers to regions with [method NavigationServer2D.region_set_navigation_layers], which then can be checked upon when requesting a path with [method NavigationServer2D.map_get_path]. This allows allowing or forbidding some areas to 2D objects.
To use the collision avoidance system, you may use agents. You can set an agent's target velocity, then the servers will emit a callback with a modified velocity.
[b]Note:[/b] The collision avoidance system ignores regions. Using the modified velocity as-is might lead to pushing and agent outside of a navigable area. This is a limitation of the collision avoidance system, any more complex situation may require the use of the physics engine.
This server keeps tracks of any call and executes them during the sync phase. This means that you can request any change to the map, using any thread, without worrying.
@@ -44,7 +44,8 @@
<argument index="2" name="method" type="StringName" />
<argument index="3" name="userdata" type="Variant" default="null" />
<description>
- Callback called at the end of the RVO process.
+ Callback called at the end of the RVO process. If a callback is created manually and the agent is placed on a navigation map it will calculate avoidance for the agent and dispatch the calculated [code]safe_velocity[/code] to the [code]receiver[/code] object with a signal to the chosen [code]method[/code] name.
+ [b]Note:[/b] Created callbacks are always processed independently of the SceneTree state as long as the agent is on a navigation map and not freed. To disable the dispatch of a callback from an agent use [method agent_set_callback] again with a [code]null[/code] object as the [code]receiver[/code].
</description>
</method>
<method name="agent_set_map" qualifiers="const">
@@ -175,9 +176,9 @@
<argument index="1" name="origin" type="Vector2" />
<argument index="2" name="destination" type="Vector2" />
<argument index="3" name="optimize" type="bool" />
- <argument index="4" name="layers" type="int" default="1" />
+ <argument index="4" name="navigation_layers" type="int" default="1" />
<description>
- Returns the navigation path to reach the destination from the origin. [code]layers[/code] is a bitmask of all region layers that are allowed to be in the path.
+ Returns the navigation path to reach the destination from the origin. [code]navigation_layers[/code] is a bitmask of all region navigation layers that are allowed to be in the path.
</description>
</method>
<method name="map_get_regions" qualifiers="const">
@@ -247,11 +248,11 @@
Returns how many connections this [code]region[/code] has with other regions in the map.
</description>
</method>
- <method name="region_get_layers" qualifiers="const">
- <return type="int" />
+ <method name="region_get_enter_cost" qualifiers="const">
+ <return type="float" />
<argument index="0" name="region" type="RID" />
<description>
- Returns the region's layers.
+ Returns the [code]enter_cost[/code] of this [code]region[/code].
</description>
</method>
<method name="region_get_map" qualifiers="const">
@@ -261,12 +262,26 @@
Returns the navigation map [RID] the requested [code]region[/code] is currently assigned to.
</description>
</method>
- <method name="region_set_layers" qualifiers="const">
+ <method name="region_get_navigation_layers" qualifiers="const">
+ <return type="int" />
+ <argument index="0" name="region" type="RID" />
+ <description>
+ Returns the region's navigation layers.
+ </description>
+ </method>
+ <method name="region_get_travel_cost" qualifiers="const">
+ <return type="float" />
+ <argument index="0" name="region" type="RID" />
+ <description>
+ Returns the [code]travel_cost[/code] of this [code]region[/code].
+ </description>
+ </method>
+ <method name="region_set_enter_cost" qualifiers="const">
<return type="void" />
<argument index="0" name="region" type="RID" />
- <argument index="1" name="layers" type="int" />
+ <argument index="1" name="enter_cost" type="float" />
<description>
- Set the region's layers. This allows selecting regions from a path request (when using [method NavigationServer2D.map_get_path]).
+ Sets the [code]enter_cost[/code] for this [code]region[/code].
</description>
</method>
<method name="region_set_map" qualifiers="const">
@@ -277,6 +292,14 @@
Sets the map for the region.
</description>
</method>
+ <method name="region_set_navigation_layers" qualifiers="const">
+ <return type="void" />
+ <argument index="0" name="region" type="RID" />
+ <argument index="1" name="navigation_layers" type="int" />
+ <description>
+ Set the region's navigation layers. This allows selecting regions from a path request (when using [method NavigationServer2D.map_get_path]).
+ </description>
+ </method>
<method name="region_set_navpoly" qualifiers="const">
<return type="void" />
<argument index="0" name="region" type="RID" />
@@ -293,6 +316,14 @@
Sets the global transformation for the region.
</description>
</method>
+ <method name="region_set_travel_cost" qualifiers="const">
+ <return type="void" />
+ <argument index="0" name="region" type="RID" />
+ <argument index="1" name="travel_cost" type="float" />
+ <description>
+ Sets the [code]travel_cost[/code] for this [code]region[/code].
+ </description>
+ </method>
</methods>
<signals>
<signal name="map_changed">
diff --git a/doc/classes/NavigationServer3D.xml b/doc/classes/NavigationServer3D.xml
index 2a729e7108..d2eef49cfd 100644
--- a/doc/classes/NavigationServer3D.xml
+++ b/doc/classes/NavigationServer3D.xml
@@ -8,7 +8,7 @@
Maps are made up of regions, which are made of navigation meshes. Together, they define the navigable areas in the 3D world.
[b]Note:[/b] Most NavigationServer changes take effect after the next physics frame and not immediately. This includes all changes made to maps, regions or agents by navigation related Nodes in the SceneTree or made through scripts.
For two regions to be connected to each other, they must share a similar edge. An edge is considered connected to another if both of its two vertices are at a distance less than [code]edge_connection_margin[/code] to the respective other edge's vertex.
- You may assign navigation layers to regions with [method NavigationServer3D.region_set_layers], which then can be checked upon when requesting a path with [method NavigationServer3D.map_get_path]. This allows allowing or forbidding some areas to 3D objects.
+ You may assign navigation layers to regions with [method NavigationServer3D.region_set_navigation_layers], which then can be checked upon when requesting a path with [method NavigationServer3D.map_get_path]. This allows allowing or forbidding some areas to 3D objects.
To use the collision avoidance system, you may use agents. You can set an agent's target velocity, then the servers will emit a callback with a modified velocity.
[b]Note:[/b] The collision avoidance system ignores regions. Using the modified velocity as-is might lead to pushing and agent outside of a navigable area. This is a limitation of the collision avoidance system, any more complex situation may require the use of the physics engine.
This server keeps tracks of any call and executes them during the sync phase. This means that you can request any change to the map, using any thread, without worrying.
@@ -44,7 +44,8 @@
<argument index="2" name="method" type="StringName" />
<argument index="3" name="userdata" type="Variant" default="null" />
<description>
- Callback called at the end of the RVO process.
+ Callback called at the end of the RVO process. If a callback is created manually and the agent is placed on a navigation map it will calculate avoidance for the agent and dispatch the calculated [code]safe_velocity[/code] to the [code]receiver[/code] object with a signal to the chosen [code]method[/code] name.
+ [b]Note:[/b] Created callbacks are always processed independently of the SceneTree state as long as the agent is on a navigation map and not freed. To disable the dispatch of a callback from an agent use [method agent_set_callback] again with a [code]null[/code] object as the [code]receiver[/code].
</description>
</method>
<method name="agent_set_map" qualifiers="const">
@@ -193,9 +194,9 @@
<argument index="1" name="origin" type="Vector3" />
<argument index="2" name="destination" type="Vector3" />
<argument index="3" name="optimize" type="bool" />
- <argument index="4" name="layers" type="int" default="1" />
+ <argument index="4" name="navigation_layers" type="int" default="1" />
<description>
- Returns the navigation path to reach the destination from the origin. [code]layers[/code] is a bitmask of all region layers that are allowed to be in the path.
+ Returns the navigation path to reach the destination from the origin. [code]navigation_layers[/code] is a bitmask of all region navigation layers that are allowed to be in the path.
</description>
</method>
<method name="map_get_regions" qualifiers="const">
@@ -297,11 +298,11 @@
Returns how many connections this [code]region[/code] has with other regions in the map.
</description>
</method>
- <method name="region_get_layers" qualifiers="const">
- <return type="int" />
+ <method name="region_get_enter_cost" qualifiers="const">
+ <return type="float" />
<argument index="0" name="region" type="RID" />
<description>
- Returns the region's layers.
+ Returns the [code]enter_cost[/code] of this [code]region[/code].
</description>
</method>
<method name="region_get_map" qualifiers="const">
@@ -311,12 +312,26 @@
Returns the navigation map [RID] the requested [code]region[/code] is currently assigned to.
</description>
</method>
- <method name="region_set_layers" qualifiers="const">
+ <method name="region_get_navigation_layers" qualifiers="const">
+ <return type="int" />
+ <argument index="0" name="region" type="RID" />
+ <description>
+ Returns the region's navigation layers.
+ </description>
+ </method>
+ <method name="region_get_travel_cost" qualifiers="const">
+ <return type="float" />
+ <argument index="0" name="region" type="RID" />
+ <description>
+ Returns the [code]travel_cost[/code] of this [code]region[/code].
+ </description>
+ </method>
+ <method name="region_set_enter_cost" qualifiers="const">
<return type="void" />
<argument index="0" name="region" type="RID" />
- <argument index="1" name="layers" type="int" />
+ <argument index="1" name="enter_cost" type="float" />
<description>
- Set the region's layers. This allows selecting regions from a path request (when using [method NavigationServer3D.map_get_path]).
+ Sets the [code]enter_cost[/code] for this [code]region[/code].
</description>
</method>
<method name="region_set_map" qualifiers="const">
@@ -327,6 +342,14 @@
Sets the map for the region.
</description>
</method>
+ <method name="region_set_navigation_layers" qualifiers="const">
+ <return type="void" />
+ <argument index="0" name="region" type="RID" />
+ <argument index="1" name="navigation_layers" type="int" />
+ <description>
+ Set the region's navigation layers. This allows selecting regions from a path request (when using [method NavigationServer3D.map_get_path]).
+ </description>
+ </method>
<method name="region_set_navmesh" qualifiers="const">
<return type="void" />
<argument index="0" name="region" type="RID" />
@@ -343,6 +366,14 @@
Sets the global transformation for the region.
</description>
</method>
+ <method name="region_set_travel_cost" qualifiers="const">
+ <return type="void" />
+ <argument index="0" name="region" type="RID" />
+ <argument index="1" name="travel_cost" type="float" />
+ <description>
+ Sets the [code]travel_cost[/code] for this [code]region[/code].
+ </description>
+ </method>
<method name="set_active" qualifiers="const">
<return type="void" />
<argument index="0" name="active" type="bool" />
diff --git a/doc/classes/Node.xml b/doc/classes/Node.xml
index 966e24c537..b7591ed4f4 100644
--- a/doc/classes/Node.xml
+++ b/doc/classes/Node.xml
@@ -778,12 +778,14 @@
<argument index="0" name="node" type="Node" />
<description>
Emitted when a child node enters the scene tree, either because it entered on its own or because this node entered with it.
+ This signal is emitted [i]after[/i] the child node's own [constant NOTIFICATION_ENTER_TREE] and [signal tree_entered].
</description>
</signal>
- <signal name="child_exited_tree">
+ <signal name="child_exiting_tree">
<argument index="0" name="node" type="Node" />
<description>
- Emitted when a child node exits the scene tree, either because it exited on its own or because this node exited.
+ Emitted when a child node is about to exit the scene tree, either because it is being removed or freed directly, or because this node is exiting the tree.
+ When this signal is received, the child [code]node[/code] is still in the tree and valid. This signal is emitted [i]after[/i] the child node's own [signal tree_exiting] and [constant NOTIFICATION_EXIT_TREE].
</description>
</signal>
<signal name="ready">
@@ -799,6 +801,7 @@
<signal name="tree_entered">
<description>
Emitted when the node enters the tree.
+ This signal is emitted [i]after[/i] the related [constant NOTIFICATION_ENTER_TREE] notification.
</description>
</signal>
<signal name="tree_exited">
@@ -809,15 +812,18 @@
<signal name="tree_exiting">
<description>
Emitted when the node is still active but about to exit the tree. This is the right place for de-initialization (or a "destructor", if you will).
+ This signal is emitted [i]before[/i] the related [constant NOTIFICATION_EXIT_TREE] notification.
</description>
</signal>
</signals>
<constants>
<constant name="NOTIFICATION_ENTER_TREE" value="10">
Notification received when the node enters a [SceneTree].
+ This notification is emitted [i]before[/i] the related [signal tree_entered].
</constant>
<constant name="NOTIFICATION_EXIT_TREE" value="11">
Notification received when the node is about to exit a [SceneTree].
+ This notification is emitted [i]after[/i] the related [signal tree_exiting].
</constant>
<constant name="NOTIFICATION_MOVED_IN_PARENT" value="12">
Notification received when the node is moved in the parent.
diff --git a/doc/classes/Node2D.xml b/doc/classes/Node2D.xml
index bb73019668..2238be4ece 100644
--- a/doc/classes/Node2D.xml
+++ b/doc/classes/Node2D.xml
@@ -102,6 +102,9 @@
<member name="global_scale" type="Vector2" setter="set_global_scale" getter="get_global_scale">
Global scale.
</member>
+ <member name="global_skew" type="float" setter="set_global_skew" getter="get_global_skew">
+ Global skew in radians.
+ </member>
<member name="global_transform" type="Transform2D" setter="set_global_transform" getter="get_global_transform">
Global [Transform2D].
</member>
@@ -113,6 +116,7 @@
</member>
<member name="scale" type="Vector2" setter="set_scale" getter="get_scale" default="Vector2(1, 1)">
The node's scale. Unscaled value: [code](1, 1)[/code].
+ [b]Note:[/b] Negative X scales in 2D are not decomposable from the transformation matrix. Due to the way scale is represented with transformation matrices in Godot, negative scales on the X axis will be changed to negative scales on the Y axis and a rotation of 180 degrees when decomposed.
</member>
<member name="skew" type="float" setter="set_skew" getter="get_skew" default="0.0">
</member>
diff --git a/doc/classes/Node3D.xml b/doc/classes/Node3D.xml
index 4444416a06..ac434af4fa 100644
--- a/doc/classes/Node3D.xml
+++ b/doc/classes/Node3D.xml
@@ -302,6 +302,7 @@
</member>
<member name="scale" type="Vector3" setter="set_scale" getter="get_scale" default="Vector3(1, 1, 1)">
Scale part of the local transformation.
+ [b]Note:[/b] Mixed negative scales in 3D are not decomposable from the transformation matrix. Due to the way scale is represented with transformation matrices in Godot, the scale values will either be all positive or all negative.
</member>
<member name="top_level" type="bool" setter="set_as_top_level" getter="is_set_as_top_level" default="false">
If [code]true[/code], the node will not inherit its transformations from its parent. Node transformations are only in global space.
diff --git a/doc/classes/NodePath.xml b/doc/classes/NodePath.xml
index 3319e5d822..00c5dcaa3d 100644
--- a/doc/classes/NodePath.xml
+++ b/doc/classes/NodePath.xml
@@ -107,7 +107,7 @@
<return type="StringName" />
<argument index="0" name="idx" type="int" />
<description>
- Gets the node name indicated by [code]idx[/code] (0 to [method get_name_count]).
+ Gets the node name indicated by [code]idx[/code] (0 to [method get_name_count] - 1).
[codeblocks]
[gdscript]
var node_path = NodePath("Path2D/PathFollow2D/Sprite2D")
@@ -157,6 +157,12 @@
For example, [code]"Path2D/PathFollow2D/Sprite2D:texture:load_path"[/code] has 2 subnames.
</description>
</method>
+ <method name="hash" qualifiers="const">
+ <return type="int" />
+ <description>
+ Returns the 32-bit hash value representing the [NodePath]'s contents.
+ </description>
+ </method>
<method name="is_absolute" qualifiers="const">
<return type="bool" />
<description>
diff --git a/doc/classes/ORMMaterial3D.xml b/doc/classes/ORMMaterial3D.xml
index 69d238ceff..656594a3c3 100644
--- a/doc/classes/ORMMaterial3D.xml
+++ b/doc/classes/ORMMaterial3D.xml
@@ -1,9 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="ORMMaterial3D" inherits="BaseMaterial3D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
+ Physically based rendering (PBR) material that can be applied to 3D objects, can use an ORM texture.
</brief_description>
<description>
+ ORMMaterial3D's properties are inherited from [BaseMaterial3D]. Unlike [StandardMaterial3D], ORMMaterial3D uses a single texture for ambient occlusion, roughness and metallic maps, known as an ORM texture.
</description>
<tutorials>
+ <link title="Standard Material 3D and ORM Material 3D">$DOCS_URL/tutorials/3d/standard_material_3d.html</link>
</tutorials>
</class>
diff --git a/doc/classes/OS.xml b/doc/classes/OS.xml
index 266a2573de..aaf08dec2f 100644
--- a/doc/classes/OS.xml
+++ b/doc/classes/OS.xml
@@ -175,6 +175,10 @@
if argument.find("=") &gt; -1:
var key_value = argument.split("=")
arguments[key_value[0].lstrip("--")] = key_value[1]
+ else:
+ # Options without an argument will be present in the dictionary,
+ # with the value set to an empty string.
+ arguments[argument.lstrip("--")] = ""
[/gdscript]
[csharp]
var arguments = new Godot.Collections.Dictionary();
@@ -185,6 +189,12 @@
string[] keyValue = argument.Split("=");
arguments[keyValue[0].LStrip("--")] = keyValue[1];
}
+ else
+ {
+ // Options without an argument will be present in the dictionary,
+ // with the value set to an empty string.
+ arguments[keyValue[0].LStrip("--")] = "";
+ }
}
[/csharp]
[/codeblocks]
@@ -469,7 +479,12 @@
<argument index="0" name="path" type="String" />
<description>
Moves the file or directory to the system's recycle bin. See also [method Directory.remove].
+ The method takes only global paths, so you may need to use [method ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/code] as it will not work in exported project.
[b]Note:[/b] If the user has disabled the recycle bin on their system, the file will be permanently deleted instead.
+ [codeblock]
+ var file_to_remove = "user://slot1.sav"
+ OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))
+ [/codeblock]
</description>
</method>
<method name="open_midi_inputs">
@@ -550,7 +565,7 @@
Requests the OS to open a resource with the most appropriate program. For example:
- [code]OS.shell_open("C:\\Users\name\Downloads")[/code] on Windows opens the file explorer at the user's Downloads folder.
- [code]OS.shell_open("https://godotengine.org")[/code] opens the default web browser on the official Godot website.
- - [code]OS.shell_open("mailto:example@example.com")[/code] opens the default email client with the "To" field set to [code]example@example.com[/code]. See [url=https://blog.escapecreative.com/customizing-mailto-links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields that can be added.
+ - [code]OS.shell_open("mailto:example@example.com")[/code] opens the default email client with the "To" field set to [code]example@example.com[/code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The [code]mailto[/code] URL scheme[/url] for a list of fields that can be added.
Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] or [code]user://[/code] path into a system path for use with this method.
[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS and Windows.
</description>
diff --git a/doc/classes/Object.xml b/doc/classes/Object.xml
index 42844794b0..11ae7cc2b0 100644
--- a/doc/classes/Object.xml
+++ b/doc/classes/Object.xml
@@ -325,7 +325,7 @@
</method>
<method name="get" qualifiers="const">
<return type="Variant" />
- <argument index="0" name="property" type="String" />
+ <argument index="0" name="property" type="StringName" />
<description>
Returns the [Variant] value of the given [code]property[/code]. If the [code]property[/code] doesn't exist, this will return [code]null[/code].
[b]Note:[/b] In C#, the property name must be specified as snake_case if it is defined by a built-in Godot node. This doesn't apply to user-defined properties where you should use the same convention as in the C# source (typically PascalCase).
@@ -399,7 +399,7 @@
</method>
<method name="get_signal_connection_list" qualifiers="const">
<return type="Array" />
- <argument index="0" name="signal" type="String" />
+ <argument index="0" name="signal" type="StringName" />
<description>
Returns an [Array] of connections for the given [code]signal[/code].
</description>
@@ -490,7 +490,7 @@
</method>
<method name="set">
<return type="void" />
- <argument index="0" name="property" type="String" />
+ <argument index="0" name="property" type="StringName" />
<argument index="1" name="value" type="Variant" />
<description>
Assigns a new value to the given property. If the [code]property[/code] does not exist or the given value's type doesn't match, nothing will happen.
diff --git a/doc/classes/PopupMenu.xml b/doc/classes/PopupMenu.xml
index bf80aa94a5..73413b379e 100644
--- a/doc/classes/PopupMenu.xml
+++ b/doc/classes/PopupMenu.xml
@@ -8,6 +8,7 @@
The size of a [PopupMenu] can be limited by using [member Window.max_size]. If the height of the list of items is larger than the maximum height of the [PopupMenu], a [ScrollContainer] within the popup will allow the user to scroll the contents.
If no maximum size is set, or if it is set to 0, the [PopupMenu] height will be limited by its parent rect.
All [code]set_*[/code] methods allow negative item index, which makes the item accessed from the last one.
+ [b]Incremental search:[/b] Like [ItemList] and [Tree], [PopupMenu] supports searching within the list while the control is focused. Press a key that matches the first letter of an item's name to select the first item starting with the given letter. After that point, there are two ways to perform incremental search: 1) Press the same key again before the timeout duration to select the next item starting with the same letter. 2) Press letter keys that match the rest of the word before the timeout duration to match to select the item in question directly. Both of these actions will be reset to the beginning of the list if the timeout duration has passed since the last keystroke was registered. You can adjust the timeout duration by changing [member ProjectSettings.gui/timers/incremental_search_max_interval_msec].
</description>
<tutorials>
</tutorials>
@@ -201,6 +202,13 @@
Returns the accelerator of the item at the given [code]index[/code]. Accelerators are special combinations of keys that activate the item, no matter which control is focused.
</description>
</method>
+ <method name="get_item_horizontal_offset" qualifiers="const">
+ <return type="int" />
+ <argument index="0" name="index" type="int" />
+ <description>
+ Returns the horizontal offset of the item at the given [code]index[/code].
+ </description>
+ </method>
<method name="get_item_icon" qualifiers="const">
<return type="Texture2D" />
<argument index="0" name="index" type="int" />
@@ -395,6 +403,14 @@
Enables/disables the item at the given [code]index[/code]. When it is disabled, it can't be selected and its action can't be invoked.
</description>
</method>
+ <method name="set_item_horizontal_offset">
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
+ <argument index="1" name="offset" type="int" />
+ <description>
+ Sets the horizontal offset of the item at the given [code]index[/code].
+ </description>
+ </method>
<method name="set_item_icon">
<return type="void" />
<argument index="0" name="index" type="int" />
diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml
index 98205e0e16..fc86b67c60 100644
--- a/doc/classes/ProjectSettings.xml
+++ b/doc/classes/ProjectSettings.xml
@@ -216,6 +216,9 @@
<member name="application/config/description" type="String" setter="" getter="" default="&quot;&quot;">
The project's description, displayed as a tooltip in the Project Manager when hovering the project.
</member>
+ <member name="application/config/features" type="PackedStringArray" setter="" getter="">
+ List of internal features associated with the project, like [code]Double Precision[/code] or [code]C#[/code]. Not to be confused with feature tags.
+ </member>
<member name="application/config/icon" type="String" setter="" getter="" default="&quot;&quot;">
Icon used for the project, set when project loads. Exporters will also use this icon when possible.
</member>
@@ -304,6 +307,12 @@
<member name="audio/driver/output_latency.web" type="int" setter="" getter="" default="50">
Safer override for [member audio/driver/output_latency] in the Web platform, to avoid audio issues especially on mobile devices.
</member>
+ <member name="audio/general/2d_panning_strength" type="float" setter="" getter="" default="1.0">
+ The base strength of the panning effect for all AudioStreamPlayer2D nodes. The panning strength can be further scaled on each Node using [member AudioStreamPlayer2D.panning_strength].
+ </member>
+ <member name="audio/general/3d_panning_strength" type="float" setter="" getter="" default="1.0">
+ The base strength of the panning effect for all AudioStreamPlayer3D nodes. The panning strength can be further scaled on each Node using [member AudioStreamPlayer3D.panning_strength].
+ </member>
<member name="audio/video/video_delay_compensation_ms" type="int" setter="" getter="" default="0">
Setting to hardcode audio delay when playing video. Best to leave this untouched unless you know what you are doing.
</member>
@@ -438,8 +447,11 @@
<member name="debug/gdscript/warnings/void_assignment" type="int" setter="" getter="" default="1">
If [code]enabled[/code], prints a warning or an error when assigning the result of a function that returns [code]void[/code] to a variable.
</member>
- <member name="debug/settings/crash_handler/message" type="String" setter="" getter="" default="&quot;Please include this when reporting the bug on https://github.com/godotengine/godot/issues&quot;">
- Message to be displayed before the backtrace when the engine crashes.
+ <member name="debug/settings/crash_handler/message" type="String" setter="" getter="" default="&quot;Please include this when reporting the bug to the project developer.&quot;">
+ Message to be displayed before the backtrace when the engine crashes. By default, this message is only used in exported projects due to the editor-only override applied to this setting.
+ </member>
+ <member name="debug/settings/crash_handler/message.editor" type="String" setter="" getter="" default="&quot;Please include this when reporting the bug on: https://github.com/godotengine/godot/issues&quot;">
+ Editor-only override for [member debug/settings/crash_handler/message]. Does not affect exported projects in debug or release mode.
</member>
<member name="debug/settings/fps/force_fps" type="int" setter="" getter="" default="0">
Maximum number of frames per second allowed. The actual number of frames per second may still be below this value if the game is lagging.
@@ -541,6 +553,33 @@
See [enum DisplayServer.VSyncMode] for possible values and how they affect the behavior of your application.
Depending on the platform and used renderer, the engine will fall back to [code]Enabled[/code], if the desired mode is not supported.
</member>
+ <member name="editor/movie_writer/disable_vsync" type="bool" setter="" getter="" default="false">
+ If [code]true[/code], requests V-Sync to be disabled when writing a movie (similar to setting [member display/window/vsync/vsync_mode] to [b]Disabled[/b]). This can speed up video writing if the hardware is fast enough to render, encode and save the video at a framerate higher than the monitor's refresh rate.
+ [b]Note:[/b] [member editor/movie_writer/disable_vsync] has no effect if the operating system or graphics driver forces V-Sync with no way for applications to disable it.
+ </member>
+ <member name="editor/movie_writer/fps" type="int" setter="" getter="" default="60">
+ The number of frames per second to record in the video when writing a movie. Simulation speed will adjust to always match the specified framerate, which means the engine will appear to run slower at higher [member editor/movie_writer/fps] values. Certain FPS values will require you to adjust [member editor/movie_writer/mix_rate_hz] to prevent audio from desynchronizing over time.
+ This can be specified manually on the command line using the [code]--fixed-fps &lt;fps&gt;[/code] command line argument.
+ </member>
+ <member name="editor/movie_writer/mix_rate_hz" type="int" setter="" getter="" default="48000">
+ The audio mix rate to use in the recorded audio when writing a movie (in Hz). This can be different from [member audio/driver/mix_rate], but this value must be divisible by [member editor/movie_writer/fps] to prevent audio from desynchronizing over time.
+ </member>
+ <member name="editor/movie_writer/mjpeg_quality" type="float" setter="" getter="" default="0.75">
+ The JPEG quality to use when writing a video to an AVI file, between [code]0.01[/code] and [code]1.0[/code] (inclusive). Higher [code]quality[/code] values result in better-looking output at the cost of larger file sizes. Recommended [code]quality[/code] values are between [code]0.75[/code] and [code]0.90[/code]. Even at quality [code]1.00[/code], JPEG compression remains lossy.
+ [b]Note:[/b] JPEG does not saving an alpha channel. If the [Image] contains an alpha channel, the image will still be saved, but the resulting JPEG file won't contain the alpha channel.
+ [b]Note:[/b] This does not affect the audio quality or writing PNG image sequences.
+ </member>
+ <member name="editor/movie_writer/movie_file" type="String" setter="" getter="" default="&quot;&quot;">
+ The output path for the movie. The file extension determines the [MovieWriter] that will be used.
+ Godot has 2 built-in [MovieWriter]s:
+ - AVI container with MJPEG for video and uncompressed audio ([code].avi[/code] file extension). Lossy compression, medium file sizes, fast encoding. The lossy compression quality can be adjusted by changing [member ProjectSettings.editor/movie_writer/mjpeg_quality]. The resulting file can be viewed in most video players, but it must be converted to another format for viewing on the web or by Godot with [VideoStreamPlayer]. AVI output is currently limited to a file of 4 GB in size at most.
+ - PNG image sequence for video and WAV for audio ([code].png[/code] file extension). Lossless compression, large file sizes, slow encoding. Designed to be encoded to a video file with another tool such as [url=https://ffmpeg.org/]FFmpeg[/url] after recording. Transparency is currently not supported.
+ If you need to encode to a different format or pipe a stream through third-party software, you can extend this [MovieWriter] class to create your own movie writers.
+ When using PNG output, the frame number will be appended at the end of the file name. It starts from 0 and is padded with 8 digits to ensure correct sorting and easier processing. For example, if the output path is [code]/tmp/hello.png[/code], the first two frames will be [code]/tmp/hello00000000.png[/code] and [code]/tmp/hello00000001.png[/code]. The audio will be saved at [code]/tmp/hello.wav[/code].
+ </member>
+ <member name="editor/movie_writer/speaker_mode" type="int" setter="" getter="" default="0">
+ The speaker mode to use in the recorded audio when writing a movie. See [enum AudioServer.SpeakerMode] for possible values.
+ </member>
<member name="editor/node_naming/name_casing" type="int" setter="" getter="" default="0">
When creating node names automatically, set the type of casing in this project. This is mostly an editor setting.
</member>
@@ -811,6 +850,12 @@
<member name="internationalization/locale/test" type="String" setter="" getter="" default="&quot;&quot;">
If non-empty, this locale will be used when running the project from the editor.
</member>
+ <member name="internationalization/locale/translation_remaps" type="PackedStringArray" setter="" getter="">
+ Locale-dependent resource remaps. Edit them in the "Localization" tab of Project Settings editor.
+ </member>
+ <member name="internationalization/locale/translations" type="PackedStringArray" setter="" getter="">
+ List of translation files available in the project. Edit them in the "Localization" tab of Project Settings editor.
+ </member>
<member name="internationalization/pseudolocalization/double_vowels" type="bool" setter="" getter="" default="false">
Double vowels in strings during pseudolocalization to simulate the lengthening of text due to localization.
</member>
@@ -1375,10 +1420,10 @@
<member name="navigation/2d/default_edge_connection_margin" type="int" setter="" getter="" default="1">
Default edge connection margin for 2D navigation maps. See [method NavigationServer2D.map_set_edge_connection_margin].
</member>
- <member name="navigation/3d/default_cell_size" type="float" setter="" getter="" default="0.3">
+ <member name="navigation/3d/default_cell_size" type="float" setter="" getter="" default="0.25">
Default cell size for 3D navigation maps. See [method NavigationServer3D.map_set_cell_size].
</member>
- <member name="navigation/3d/default_edge_connection_margin" type="float" setter="" getter="" default="0.3">
+ <member name="navigation/3d/default_edge_connection_margin" type="float" setter="" getter="" default="0.25">
Default edge connection margin for 3D navigation maps. See [method NavigationServer3D.map_set_edge_connection_margin].
</member>
<member name="network/limits/debugger/max_chars_per_second" type="int" setter="" getter="" default="32768">
@@ -1584,6 +1629,10 @@
</member>
<member name="rendering/anti_aliasing/quality/use_debanding" type="bool" setter="" getter="" default="false">
</member>
+ <member name="rendering/anti_aliasing/quality/use_taa" type="bool" setter="" getter="" default="false">
+ Enables Temporal Anti-Aliasing for the default screen [Viewport]. TAA works by jittering the camera and accumulating the images of the last rendered frames, motion vector rendering is used to account for camera and object motion.
+ [b]Note:[/b] The implementation is not complete yet, some visual instances such as particles and skinned meshes may show artifacts.
+ </member>
<member name="rendering/anti_aliasing/screen_space_roughness_limiter/amount" type="float" setter="" getter="" default="0.25">
</member>
<member name="rendering/anti_aliasing/screen_space_roughness_limiter/enabled" type="bool" setter="" getter="" default="true">
@@ -1701,28 +1750,40 @@
<member name="rendering/global_illumination/voxel_gi/quality" type="int" setter="" getter="" default="0">
</member>
<member name="rendering/lightmapping/bake_performance/max_rays_per_pass" type="int" setter="" getter="" default="32">
+ The maximum number of rays that can be thrown per pass when baking lightmaps with [LightmapGI]. Depending on the scene, adjusting this value may result in higher GPU utilization when baking lightmaps, leading to faster bake times.
</member>
<member name="rendering/lightmapping/bake_performance/max_rays_per_probe_pass" type="int" setter="" getter="" default="64">
+ The maximum number of rays that can be thrown per pass when baking dynamic object lighting in [LightmapProbe]s with [LightmapGI]. Depending on the scene, adjusting this value may result in higher GPU utilization when baking lightmaps, leading to faster bake times.
</member>
<member name="rendering/lightmapping/bake_performance/region_size" type="int" setter="" getter="" default="512">
+ The region size to use when baking lightmaps with [LightmapGI].
</member>
<member name="rendering/lightmapping/bake_quality/high_quality_probe_ray_count" type="int" setter="" getter="" default="512">
+ The number of rays to use for baking dynamic object lighting in [LightmapProbe]s when [member LightmapGI.quality] is [constant LightmapGI.BAKE_QUALITY_HIGH].
</member>
<member name="rendering/lightmapping/bake_quality/high_quality_ray_count" type="int" setter="" getter="" default="256">
+ The number of rays to use for baking lightmaps with [LightmapGI] when [member LightmapGI.quality] is [constant LightmapGI.BAKE_QUALITY_HIGH].
</member>
<member name="rendering/lightmapping/bake_quality/low_quality_probe_ray_count" type="int" setter="" getter="" default="64">
+ The number of rays to use for baking dynamic object lighting in [LightmapProbe]s when [member LightmapGI.quality] is [constant LightmapGI.BAKE_QUALITY_LOW].
</member>
<member name="rendering/lightmapping/bake_quality/low_quality_ray_count" type="int" setter="" getter="" default="16">
+ The number of rays to use for baking lightmaps with [LightmapGI] when [member LightmapGI.quality] is [constant LightmapGI.BAKE_QUALITY_LOW].
</member>
<member name="rendering/lightmapping/bake_quality/medium_quality_probe_ray_count" type="int" setter="" getter="" default="256">
+ The number of rays to use for baking dynamic object lighting in [LightmapProbe]s when [member LightmapGI.quality] is [constant LightmapGI.BAKE_QUALITY_MEDIUM].
</member>
<member name="rendering/lightmapping/bake_quality/medium_quality_ray_count" type="int" setter="" getter="" default="64">
+ The number of rays to use for baking lightmaps with [LightmapGI] when [member LightmapGI.quality] is [constant LightmapGI.BAKE_QUALITY_MEDIUM].
</member>
<member name="rendering/lightmapping/bake_quality/ultra_quality_probe_ray_count" type="int" setter="" getter="" default="2048">
+ The number of rays to use for baking dynamic object lighting in [LightmapProbe]s when [member LightmapGI.quality] is [constant LightmapGI.BAKE_QUALITY_ULTRA].
</member>
<member name="rendering/lightmapping/bake_quality/ultra_quality_ray_count" type="int" setter="" getter="" default="1024">
+ The number of rays to use for baking lightmaps with [LightmapGI] when [member LightmapGI.quality] is [constant LightmapGI.BAKE_QUALITY_ULTRA].
</member>
<member name="rendering/lightmapping/probe_capture/update_speed" type="float" setter="" getter="" default="15">
+ The framerate-independent update speed when representing dynamic object lighting from [LightmapProbe]s. Higher values make dynamic object lighting update faster. Higher values can prevent fast-moving objects from having "outdated" indirect lighting displayed on them, at the cost of possible flickering when an object moves from a bright area to a shaded area.
</member>
<member name="rendering/limits/cluster_builder/max_clustered_elements" type="float" setter="" getter="" default="512">
</member>
diff --git a/doc/classes/Range.xml b/doc/classes/Range.xml
index df6efd155a..22793e75d8 100644
--- a/doc/classes/Range.xml
+++ b/doc/classes/Range.xml
@@ -4,7 +4,7 @@
Abstract base class for range-based controls.
</brief_description>
<description>
- Range is a base class for [Control] nodes that change a floating-point [i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/i] and [i]page[/i], for example a [ScrollBar].
+ Range is a base class for [Control] nodes that change a floating-point [member value] between a [member min_value] and [member max_value], using a configured [member step] and [member page] size. See e.g. [ScrollBar] and [Slider] for examples of higher level nodes using Range.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/RenderingServer.xml b/doc/classes/RenderingServer.xml
index 4d039227ce..d92121a950 100644
--- a/doc/classes/RenderingServer.xml
+++ b/doc/classes/RenderingServer.xml
@@ -3035,7 +3035,7 @@
$Viewport.set_attach_to_screen_rect(Rect2(0, 0, 600, 600))
[/gdscript]
[/codeblocks]
- Using this can result in significant optimization, especially on lower-end devices. However, it comes at the cost of having to manage your viewports manually. For a further optimization see, [method viewport_set_render_direct_to_screen].
+ Using this can result in significant optimization, especially on lower-end devices. However, it comes at the cost of having to manage your viewports manually. For further optimization, see [method viewport_set_render_direct_to_screen].
</description>
</method>
<method name="viewport_create">
@@ -3340,6 +3340,14 @@
<description>
</description>
</method>
+ <method name="viewport_set_use_taa">
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="enable" type="bool" />
+ <description>
+ If [code]true[/code], use Temporal Anti-Aliasing.
+ </description>
+ </method>
<method name="viewport_set_use_xr">
<return type="void" />
<argument index="0" name="viewport" type="RID" />
@@ -4105,6 +4113,8 @@
</constant>
<constant name="VIEWPORT_DEBUG_DRAW_OCCLUDERS" value="24" enum="ViewportDebugDraw">
</constant>
+ <constant name="VIEWPORT_DEBUG_DRAW_MOTION_VECTORS" value="25" enum="ViewportDebugDraw">
+ </constant>
<constant name="SKY_MODE_AUTOMATIC" value="0" enum="SkyMode">
</constant>
<constant name="SKY_MODE_QUALITY" value="1" enum="SkyMode">
diff --git a/doc/classes/RichTextLabel.xml b/doc/classes/RichTextLabel.xml
index c5cc343fac..1294e5b58a 100644
--- a/doc/classes/RichTextLabel.xml
+++ b/doc/classes/RichTextLabel.xml
@@ -454,8 +454,8 @@
</method>
</methods>
<members>
- <member name="autowrap_mode" type="int" setter="set_autowrap_mode" getter="get_autowrap_mode" enum="RichTextLabel.AutowrapMode" default="3">
- If set to something other than [constant AUTOWRAP_OFF], the text gets wrapped inside the node's bounding rectangle. To see how each mode behaves, see [enum AutowrapMode].
+ <member name="autowrap_mode" type="int" setter="set_autowrap_mode" getter="get_autowrap_mode" enum="TextServer.AutowrapMode" default="3">
+ If set to something other than [constant TextServer.AUTOWRAP_OFF], the text gets wrapped inside the node's bounding rectangle. To see how each mode behaves, see [enum TextServer.AutowrapMode].
</member>
<member name="bbcode_enabled" type="bool" setter="set_use_bbcode" getter="is_using_bbcode" default="false">
If [code]true[/code], the label uses BBCode formatting.
@@ -530,8 +530,8 @@
The restricted number of characters to display in the label. If [code]-1[/code], all characters will be displayed.
[b]Note:[/b] Setting this property updates [member percent_visible] based on current [method get_total_character_count].
</member>
- <member name="visible_characters_behavior" type="int" setter="set_visible_characters_behavior" getter="get_visible_characters_behavior" enum="RichTextLabel.VisibleCharactersBehavior" default="0">
- Sets the clipping behavior when [member visible_characters] or [member percent_visible] is set. See [enum VisibleCharactersBehavior] for more info.
+ <member name="visible_characters_behavior" type="int" setter="set_visible_characters_behavior" getter="get_visible_characters_behavior" enum="TextServer.VisibleCharactersBehavior" default="0">
+ Sets the clipping behavior when [member visible_characters] or [member percent_visible] is set. See [enum TextServer.VisibleCharactersBehavior] for more info.
</member>
</members>
<signals>
@@ -560,18 +560,6 @@
</signal>
</signals>
<constants>
- <constant name="AUTOWRAP_OFF" value="0" enum="AutowrapMode">
- Autowrap is disabled.
- </constant>
- <constant name="AUTOWRAP_ARBITRARY" value="1" enum="AutowrapMode">
- Wraps the text inside the node's bounding rectangle by allowing to break lines at arbitrary positions, which is useful when very limited space is available.
- </constant>
- <constant name="AUTOWRAP_WORD" value="2" enum="AutowrapMode">
- Wraps the text inside the node's bounding rectangle by soft-breaking between words.
- </constant>
- <constant name="AUTOWRAP_WORD_SMART" value="3" enum="AutowrapMode">
- Behaves similarly to [constant AUTOWRAP_WORD], but force-breaks a word if that single word does not fit in one line.
- </constant>
<constant name="LIST_NUMBERS" value="0" enum="ListType">
Each list item has a number marker.
</constant>
@@ -638,21 +626,6 @@
</constant>
<constant name="ITEM_CUSTOMFX" value="26" enum="ItemType">
</constant>
- <constant name="VC_CHARS_BEFORE_SHAPING" value="0" enum="VisibleCharactersBehavior">
- Trims text before the shaping. e.g, increasing [member visible_characters] value is visually identical to typing the text.
- </constant>
- <constant name="VC_CHARS_AFTER_SHAPING" value="1" enum="VisibleCharactersBehavior">
- Displays glyphs that are mapped to the first [member visible_characters] characters from the beginning of the text.
- </constant>
- <constant name="VC_GLYPHS_AUTO" value="2" enum="VisibleCharactersBehavior">
- Displays [member percent_visible] glyphs, starting from the left or from the right, depending on [member Control.layout_direction] value.
- </constant>
- <constant name="VC_GLYPHS_LTR" value="3" enum="VisibleCharactersBehavior">
- Displays [member percent_visible] glyphs, starting from the left.
- </constant>
- <constant name="VC_GLYPHS_RTL" value="4" enum="VisibleCharactersBehavior">
- Displays [member percent_visible] glyphs, starting from the right.
- </constant>
</constants>
<theme_items>
<theme_item name="default_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
diff --git a/doc/classes/SceneTreeTimer.xml b/doc/classes/SceneTreeTimer.xml
index 427608ead3..f28e65c5bf 100644
--- a/doc/classes/SceneTreeTimer.xml
+++ b/doc/classes/SceneTreeTimer.xml
@@ -22,7 +22,7 @@
}
[/csharp]
[/codeblocks]
- The timer will be automatically freed after its time elapses.
+ The timer will be dereferenced after its time elapses. To preserve the timer, you can keep a reference to it. See [RefCounted].
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/StandardMaterial3D.xml b/doc/classes/StandardMaterial3D.xml
index 2305a9d325..bd6e5cdfa2 100644
--- a/doc/classes/StandardMaterial3D.xml
+++ b/doc/classes/StandardMaterial3D.xml
@@ -1,10 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="StandardMaterial3D" inherits="BaseMaterial3D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
+ Physically based rendering (PBR) material that can be applied to 3D objects.
</brief_description>
<description>
+ StandardMaterial3D's properties are inherited from [BaseMaterial3D].
</description>
<tutorials>
- <link title="Standard Material 3D">$DOCS_URL/tutorials/3d/standard_material_3d.html</link>
+ <link title="Standard Material 3D and ORM Material 3D">$DOCS_URL/tutorials/3d/standard_material_3d.html</link>
</tutorials>
</class>
diff --git a/doc/classes/String.xml b/doc/classes/String.xml
index 1f3d5596aa..f4d453700c 100644
--- a/doc/classes/String.xml
+++ b/doc/classes/String.xml
@@ -412,9 +412,9 @@
</method>
<method name="left" qualifiers="const">
<return type="String" />
- <argument index="0" name="position" type="int" />
+ <argument index="0" name="length" type="int" />
<description>
- Returns a number of characters from the left of the string. If negative [code]position[/code] is used, the characters are counted downwards from [String]'s length.
+ Returns a number of characters from the left of the string. If negative [code]length[/code] is used, the characters are counted downwards from [String]'s length.
Examples:
[codeblock]
print("sample text".left(3)) #prints "sam"
@@ -599,9 +599,9 @@
</method>
<method name="right" qualifiers="const">
<return type="String" />
- <argument index="0" name="position" type="int" />
+ <argument index="0" name="length" type="int" />
<description>
- Returns a number of characters from the right of the string. If negative [code]position[/code] is used, the characters are counted downwards from [String]'s length.
+ Returns a number of characters from the right of the string. If negative [code]length[/code] is used, the characters are counted downwards from [String]'s length.
Examples:
[codeblock]
print("sample text".right(3)) #prints "ext"
diff --git a/doc/classes/StringName.xml b/doc/classes/StringName.xml
index ffa1227500..a2bcac9788 100644
--- a/doc/classes/StringName.xml
+++ b/doc/classes/StringName.xml
@@ -32,6 +32,14 @@
</description>
</constructor>
</constructors>
+ <methods>
+ <method name="hash" qualifiers="const">
+ <return type="int" />
+ <description>
+ Returns the 32-bit hash value representing the [StringName]'s contents.
+ </description>
+ </method>
+ </methods>
<operators>
<operator name="operator !=">
<return type="bool" />
diff --git a/doc/classes/SurfaceTool.xml b/doc/classes/SurfaceTool.xml
index 43d34d3890..ad638a680b 100644
--- a/doc/classes/SurfaceTool.xml
+++ b/doc/classes/SurfaceTool.xml
@@ -35,7 +35,7 @@
<return type="void" />
<argument index="0" name="index" type="int" />
<description>
- Adds an index to index array if you are using indexed vertices. Does not need to be called before adding vertices.
+ Adds a vertex to index array if you are using indexed vertices. Does not need to be called before adding vertices.
</description>
</method>
<method name="add_triangle_fan">
@@ -123,6 +123,8 @@
<argument index="0" name="nd_threshold" type="float" />
<argument index="1" name="target_index_count" type="int" default="3" />
<description>
+ Generates a LOD for a given [code]nd_threshold[/code] in linear units (square root of quadric error metric), using at most [code]target_index_count[/code] indices.
+ Deprecated. Unused internally and neglects to preserve normals or UVs. Consider using [method ImporterMesh.generate_lods] instead.
</description>
</method>
<method name="generate_normals">
@@ -139,25 +141,31 @@
Generates a tangent vector for each vertex. Requires that each vertex have UVs and normals set already (see [method generate_normals]).
</description>
</method>
- <method name="get_custom_format" qualifiers="const">
- <return type="int" enum="SurfaceTool.CustomFormat" />
- <argument index="0" name="index" type="int" />
+ <method name="get_aabb" qualifiers="const">
+ <return type="AABB" />
<description>
+ Returns the axis-aligned bounding box of the vertex positions.
</description>
</method>
- <method name="get_max_axis_length" qualifiers="const">
- <return type="float" />
+ <method name="get_custom_format" qualifiers="const">
+ <return type="int" enum="SurfaceTool.CustomFormat" />
+ <argument index="0" name="channel_index" type="int" />
<description>
+ Returns the format for custom [code]channel_index[/code] (currently up to 4). Returns [constant CUSTOM_MAX] if this custom channel is unused.
</description>
</method>
- <method name="get_primitive" qualifiers="const">
+ <method name="get_primitive_type" qualifiers="const">
<return type="int" enum="Mesh.PrimitiveType" />
<description>
+ Returns the type of mesh geometry, such as [constant Mesh.PRIMITIVE_TRIANGLES].
</description>
</method>
<method name="get_skin_weight_count" qualifiers="const">
<return type="int" enum="SurfaceTool.SkinWeightCount" />
<description>
+ By default, returns [constant SKIN_4_WEIGHTS] to indicate only 4 bone influences per vertex are used.
+ Returns [constant SKIN_8_WEIGHTS] if up to 8 influences are used.
+ [b]Note:[/b] This function returns an enum, not the exact number of weights.
</description>
</method>
<method name="index">
@@ -169,6 +177,7 @@
<method name="optimize_indices_for_cache">
<return type="void" />
<description>
+ Optimizes triangle sorting for performance. Requires that [method get_primitive_type] is [constant Mesh.PRIMITIVE_TRIANGLES].
</description>
</method>
<method name="set_bones">
@@ -188,16 +197,20 @@
</method>
<method name="set_custom">
<return type="void" />
- <argument index="0" name="index" type="int" />
- <argument index="1" name="custom" type="Color" />
+ <argument index="0" name="channel_index" type="int" />
+ <argument index="1" name="custom_color" type="Color" />
<description>
+ Sets the custom value on this vertex for [code]channel_index[/code].
+ [method set_custom_format] must be called first for this [code]channel_index[/code]. Formats which are not RGBA will ignore other color channels.
</description>
</method>
<method name="set_custom_format">
<return type="void" />
- <argument index="0" name="index" type="int" />
+ <argument index="0" name="channel_index" type="int" />
<argument index="1" name="format" type="int" enum="SurfaceTool.CustomFormat" />
<description>
+ Sets the color format for this custom [code]channel_index[/code]. Use [constant CUSTOM_MAX] to disable.
+ Must be invoked after [method begin] and should be set before [method commit] or [method commit_to_arrays].
</description>
</method>
<method name="set_material">
@@ -218,6 +231,9 @@
<return type="void" />
<argument index="0" name="count" type="int" enum="SurfaceTool.SkinWeightCount" />
<description>
+ Set to [constant SKIN_8_WEIGHTS] to indicate that up to 8 bone influences per vertex may be used.
+ By default, only 4 bone influences are used ([constant SKIN_4_WEIGHTS])
+ [b]Note:[/b] This function takes an enum, not the exact number of weights.
</description>
</method>
<method name="set_smooth_group">
@@ -258,26 +274,37 @@
</methods>
<constants>
<constant name="CUSTOM_RGBA8_UNORM" value="0" enum="CustomFormat">
+ Limits range of data passed to `set_custom` to unsigned normalized 0 to 1 stored in 8 bits per channel. See [constant Mesh.ARRAY_CUSTOM_RGBA8_UNORM].
</constant>
<constant name="CUSTOM_RGBA8_SNORM" value="1" enum="CustomFormat">
+ Limits range of data passed to `set_custom` to signed normalized -1 to 1 stored in 8 bits per channel. See [constant Mesh.ARRAY_CUSTOM_RGBA8_SNORM].
</constant>
<constant name="CUSTOM_RG_HALF" value="2" enum="CustomFormat">
+ Stores data passed to `set_custom` as half precision floats, and uses only red and green color channels. See [constant Mesh.ARRAY_CUSTOM_RG_HALF].
</constant>
<constant name="CUSTOM_RGBA_HALF" value="3" enum="CustomFormat">
+ Stores data passed to `set_custom` as half precision floats and uses all color channels. See [constant Mesh.ARRAY_CUSTOM_RGBA_HALF].
</constant>
<constant name="CUSTOM_R_FLOAT" value="4" enum="CustomFormat">
+ Stores data passed to `set_custom` as full precision floats, and uses only red color channel. See [constant Mesh.ARRAY_CUSTOM_R_FLOAT].
</constant>
<constant name="CUSTOM_RG_FLOAT" value="5" enum="CustomFormat">
+ Stores data passed to `set_custom` as full precision floats, and uses only red and green color channels. See [constant Mesh.ARRAY_CUSTOM_RG_FLOAT].
</constant>
<constant name="CUSTOM_RGB_FLOAT" value="6" enum="CustomFormat">
+ Stores data passed to `set_custom` as full precision floats, and uses only red, green and blue color channels. See [constant Mesh.ARRAY_CUSTOM_RGB_FLOAT].
</constant>
<constant name="CUSTOM_RGBA_FLOAT" value="7" enum="CustomFormat">
+ Stores data passed to `set_custom` as full precision floats, and uses all color channels. See [constant Mesh.ARRAY_CUSTOM_RGBA_FLOAT].
</constant>
<constant name="CUSTOM_MAX" value="8" enum="CustomFormat">
+ Used to indicate a disabled custom channel.
</constant>
<constant name="SKIN_4_WEIGHTS" value="0" enum="SkinWeightCount">
+ Each individual vertex can be influenced by only 4 bone weights.
</constant>
<constant name="SKIN_8_WEIGHTS" value="1" enum="SkinWeightCount">
+ Each individual vertex can be influenced by up to 8 bone weights.
</constant>
</constants>
</class>
diff --git a/doc/classes/TextLine.xml b/doc/classes/TextLine.xml
index 5359937db5..f154cbbe9a 100644
--- a/doc/classes/TextLine.xml
+++ b/doc/classes/TextLine.xml
@@ -161,28 +161,11 @@
<member name="preserve_invalid" type="bool" setter="set_preserve_invalid" getter="get_preserve_invalid" default="true">
If set to [code]true[/code] text will display invalid characters.
</member>
- <member name="text_overrun_behavior" type="int" setter="set_text_overrun_behavior" getter="get_text_overrun_behavior" enum="TextLine.OverrunBehavior" default="3">
- Sets the clipping behavior when the text exceeds the text line's set width. See [enum OverrunBehavior] for a description of all modes.
+ <member name="text_overrun_behavior" type="int" setter="set_text_overrun_behavior" getter="get_text_overrun_behavior" enum="TextServer.OverrunBehavior" default="3">
+ Sets the clipping behavior when the text exceeds the text line's set width. See [enum TextServer.OverrunBehavior] for a description of all modes.
</member>
<member name="width" type="float" setter="set_width" getter="get_width" default="-1.0">
Text line width.
</member>
</members>
- <constants>
- <constant name="OVERRUN_NO_TRIMMING" value="0" enum="OverrunBehavior">
- No text trimming is performed.
- </constant>
- <constant name="OVERRUN_TRIM_CHAR" value="1" enum="OverrunBehavior">
- Trims the text per character.
- </constant>
- <constant name="OVERRUN_TRIM_WORD" value="2" enum="OverrunBehavior">
- Trims the text per word.
- </constant>
- <constant name="OVERRUN_TRIM_ELLIPSIS" value="3" enum="OverrunBehavior">
- Trims the text per character and adds an ellipsis to indicate that parts are hidden.
- </constant>
- <constant name="OVERRUN_TRIM_WORD_ELLIPSIS" value="4" enum="OverrunBehavior">
- Trims the text per word and adds an ellipsis to indicate that parts are hidden.
- </constant>
- </constants>
</class>
diff --git a/doc/classes/TextParagraph.xml b/doc/classes/TextParagraph.xml
index 964e2c771f..aaaacfe3ac 100644
--- a/doc/classes/TextParagraph.xml
+++ b/doc/classes/TextParagraph.xml
@@ -298,28 +298,11 @@
<member name="preserve_invalid" type="bool" setter="set_preserve_invalid" getter="get_preserve_invalid" default="true">
If set to [code]true[/code] text will display invalid characters.
</member>
- <member name="text_overrun_behavior" type="int" setter="set_text_overrun_behavior" getter="get_text_overrun_behavior" enum="TextParagraph.OverrunBehavior" default="0">
- Sets the clipping behavior when the text exceeds the paragraph's set width. See [enum OverrunBehavior] for a description of all modes.
+ <member name="text_overrun_behavior" type="int" setter="set_text_overrun_behavior" getter="get_text_overrun_behavior" enum="TextServer.OverrunBehavior" default="0">
+ Sets the clipping behavior when the text exceeds the paragraph's set width. See [enum TextServer.OverrunBehavior] for a description of all modes.
</member>
<member name="width" type="float" setter="set_width" getter="get_width" default="-1.0">
Paragraph width.
</member>
</members>
- <constants>
- <constant name="OVERRUN_NO_TRIMMING" value="0" enum="OverrunBehavior">
- No text trimming is performed.
- </constant>
- <constant name="OVERRUN_TRIM_CHAR" value="1" enum="OverrunBehavior">
- Trims the text per character.
- </constant>
- <constant name="OVERRUN_TRIM_WORD" value="2" enum="OverrunBehavior">
- Trims the text per word.
- </constant>
- <constant name="OVERRUN_TRIM_ELLIPSIS" value="3" enum="OverrunBehavior">
- Trims the text per character and adds an ellipsis to indicate that parts are hidden.
- </constant>
- <constant name="OVERRUN_TRIM_WORD_ELLIPSIS" value="4" enum="OverrunBehavior">
- Trims the text per word and adds an ellipsis to indicate that parts are hidden.
- </constant>
- </constants>
</class>
diff --git a/doc/classes/TextServer.xml b/doc/classes/TextServer.xml
index 2f57b76374..ca1aec19ea 100644
--- a/doc/classes/TextServer.xml
+++ b/doc/classes/TextServer.xml
@@ -121,6 +121,20 @@
Returns font embolden strength.
</description>
</method>
+ <method name="font_get_face_count" qualifiers="const">
+ <return type="int" />
+ <argument index="0" name="font_rid" type="RID" />
+ <description>
+ Returns number of faces in the TrueType / OpenType collection.
+ </description>
+ </method>
+ <method name="font_get_face_index" qualifiers="const">
+ <return type="int" />
+ <argument index="0" name="font_rid" type="RID" />
+ <description>
+ Recturns an active face index in the TrueType / OpenType collection.
+ </description>
+ </method>
<method name="font_get_fixed_size" qualifiers="const">
<return type="int" />
<argument index="0" name="font_rid" type="RID" />
@@ -593,6 +607,14 @@
Sets font embolden strength. If [code]strength[/code] is not equal to zero, emboldens the font outlines. Negative values reduce the outline thickness.
</description>
</method>
+ <method name="font_set_face_index">
+ <return type="void" />
+ <argument index="0" name="font_rid" type="RID" />
+ <argument index="1" name="face_index" type="int" />
+ <description>
+ Sets an active face index in the TrueType / OpenType collection.
+ </description>
+ </method>
<method name="font_set_fixed_size">
<return type="void" />
<argument index="0" name="font_rid" type="RID" />
@@ -1520,6 +1542,18 @@
<constant name="JUSTIFICATION_CONSTRAIN_ELLIPSIS" value="16" enum="JustificationFlag">
Apply justification to the trimmed line with ellipsis.
</constant>
+ <constant name="AUTOWRAP_OFF" value="0" enum="AutowrapMode">
+ Autowrap is disabled.
+ </constant>
+ <constant name="AUTOWRAP_ARBITRARY" value="1" enum="AutowrapMode">
+ Wraps the text inside the node's bounding rectangle by allowing to break lines at arbitrary positions, which is useful when very limited space is available.
+ </constant>
+ <constant name="AUTOWRAP_WORD" value="2" enum="AutowrapMode">
+ Wraps the text inside the node's bounding rectangle by soft-breaking between words.
+ </constant>
+ <constant name="AUTOWRAP_WORD_SMART" value="3" enum="AutowrapMode">
+ Behaves similarly to [constant AUTOWRAP_WORD], but force-breaks a word if that single word does not fit in one line.
+ </constant>
<constant name="BREAK_NONE" value="0" enum="LineBreakFlag">
Do not break the line.
</constant>
@@ -1535,7 +1569,37 @@
<constant name="BREAK_WORD_BOUND_ADAPTIVE" value="320" enum="LineBreakFlag">
Break the line between the words, or any unconnected graphemes if line is too short to fit the whole word.
</constant>
- <constant name="OVERRUN_NO_TRIMMING" value="0" enum="TextOverrunFlag">
+ <constant name="VC_CHARS_BEFORE_SHAPING" value="0" enum="VisibleCharactersBehavior">
+ Trims text before the shaping. e.g, increasing [member Label.visible_characters] or [member RichTextLabel.visible_characters] value is visually identical to typing the text.
+ </constant>
+ <constant name="VC_CHARS_AFTER_SHAPING" value="1" enum="VisibleCharactersBehavior">
+ Displays glyphs that are mapped to the first [member Label.visible_characters] or [member RichTextLabel.visible_characters] characters from the beginning of the text.
+ </constant>
+ <constant name="VC_GLYPHS_AUTO" value="2" enum="VisibleCharactersBehavior">
+ Displays [member Label.percent_visible] or [member RichTextLabel.percent_visible] glyphs, starting from the left or from the right, depending on [member Control.layout_direction] value.
+ </constant>
+ <constant name="VC_GLYPHS_LTR" value="3" enum="VisibleCharactersBehavior">
+ Displays [member Label.percent_visible] or [member RichTextLabel.percent_visible] glyphs, starting from the left.
+ </constant>
+ <constant name="VC_GLYPHS_RTL" value="4" enum="VisibleCharactersBehavior">
+ Displays [member Label.percent_visible] or [member RichTextLabel.percent_visible] glyphs, starting from the right.
+ </constant>
+ <constant name="OVERRUN_NO_TRIMMING" value="0" enum="OverrunBehavior">
+ No text trimming is performed.
+ </constant>
+ <constant name="OVERRUN_TRIM_CHAR" value="1" enum="OverrunBehavior">
+ Trims the text per character.
+ </constant>
+ <constant name="OVERRUN_TRIM_WORD" value="2" enum="OverrunBehavior">
+ Trims the text per word.
+ </constant>
+ <constant name="OVERRUN_TRIM_ELLIPSIS" value="3" enum="OverrunBehavior">
+ Trims the text per character and adds an ellipsis to indicate that parts are hidden.
+ </constant>
+ <constant name="OVERRUN_TRIM_WORD_ELLIPSIS" value="4" enum="OverrunBehavior">
+ Trims the text per word and adds an ellipsis to indicate that parts are hidden.
+ </constant>
+ <constant name="OVERRUN_NO_TRIM" value="0" enum="TextOverrunFlag">
No trimming is performed.
</constant>
<constant name="OVERRUN_TRIM" value="1" enum="TextOverrunFlag">
diff --git a/doc/classes/TextServerExtension.xml b/doc/classes/TextServerExtension.xml
index 434d6f909c..b3be858ca1 100644
--- a/doc/classes/TextServerExtension.xml
+++ b/doc/classes/TextServerExtension.xml
@@ -114,6 +114,20 @@
Returns font embolden strength.
</description>
</method>
+ <method name="font_get_face_count" qualifiers="virtual const">
+ <return type="int" />
+ <argument index="0" name="font_rid" type="RID" />
+ <description>
+ Returns number of faces in the TrueType / OpenType collection.
+ </description>
+ </method>
+ <method name="font_get_face_index" qualifiers="virtual const">
+ <return type="int" />
+ <argument index="0" name="font_rid" type="RID" />
+ <description>
+ Returns an active face index in the TrueType / OpenType collection.
+ </description>
+ </method>
<method name="font_get_fixed_size" qualifiers="virtual const">
<return type="int" />
<argument index="0" name="font_rid" type="RID" />
@@ -590,6 +604,14 @@
Sets font embolden strength. If [code]strength[/code] is not equal to zero, emboldens the font outlines. Negative values reduce the outline thickness.
</description>
</method>
+ <method name="font_set_face_index" qualifiers="virtual">
+ <return type="void" />
+ <argument index="0" name="font_rid" type="RID" />
+ <argument index="1" name="face_index" type="int" />
+ <description>
+ Sets an active face index in the TrueType / OpenType collection.
+ </description>
+ </method>
<method name="font_set_fixed_size" qualifiers="virtual">
<return type="void" />
<argument index="0" name="font_rid" type="RID" />
diff --git a/doc/classes/Texture2D.xml b/doc/classes/Texture2D.xml
index 1bbebe085e..3721058d25 100644
--- a/doc/classes/Texture2D.xml
+++ b/doc/classes/Texture2D.xml
@@ -106,7 +106,8 @@
<method name="get_image" qualifiers="const">
<return type="Image" />
<description>
- Returns an [Image] that is a copy of data from this [Texture2D]. [Image]s can be accessed and manipulated directly.
+ Returns an [Image] that is a copy of data from this [Texture2D] (a new [Image] is created each time). [Image]s can be accessed and manipulated directly.
+ [b]Note:[/b] This will fetch the texture data from the GPU, which might cause performance problems when overused.
</description>
</method>
<method name="get_size" qualifiers="const">
diff --git a/doc/classes/Thread.xml b/doc/classes/Thread.xml
index d78b8db052..513daff37c 100644
--- a/doc/classes/Thread.xml
+++ b/doc/classes/Thread.xml
@@ -35,10 +35,11 @@
<method name="start">
<return type="int" enum="Error" />
<argument index="0" name="callable" type="Callable" />
- <argument index="1" name="userdata" type="Variant" default="null" />
- <argument index="2" name="priority" type="int" enum="Thread.Priority" default="1" />
+ <argument index="1" name="priority" type="int" enum="Thread.Priority" default="1" />
<description>
- Starts a new [Thread] that calls [code]callable[/code] with [code]userdata[/code] passed as an argument. Even if no userdata is passed, [code]callable[/code] must accept one argument and it will be null. The [code]priority[/code] of the [Thread] can be changed by passing a value from the [enum Priority] enum.
+ Starts a new [Thread] that calls [code]callable[/code].
+ If the method takes some arguments, you can pass them using [method Callable.bind].
+ The [code]priority[/code] of the [Thread] can be changed by passing a value from the [enum Priority] enum.
Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure.
</description>
</method>
diff --git a/doc/classes/TileData.xml b/doc/classes/TileData.xml
index d5c2693f8b..66cf602e5d 100644
--- a/doc/classes/TileData.xml
+++ b/doc/classes/TileData.xml
@@ -79,7 +79,7 @@
Returns the occluder polygon of the tile for the TileSet occlusion layer with index [code]layer_id[/code].
</description>
</method>
- <method name="get_peering_bit_terrain" qualifiers="const">
+ <method name="get_terrain_peering_bit" qualifiers="const">
<return type="int" />
<argument index="0" name="peering_bit" type="int" enum="TileSet.CellNeighbor" />
<description>
@@ -185,7 +185,7 @@
Sets the occluder for the TileSet occlusion layer with index [code]layer_id[/code].
</description>
</method>
- <method name="set_peering_bit_terrain">
+ <method name="set_terrain_peering_bit">
<return type="void" />
<argument index="0" name="peering_bit" type="int" enum="TileSet.CellNeighbor" />
<argument index="1" name="terrain" type="int" />
@@ -199,12 +199,15 @@
</member>
<member name="flip_v" type="bool" setter="set_flip_v" getter="get_flip_v" default="false">
</member>
- <member name="material" type="ShaderMaterial" setter="set_material" getter="get_material">
+ <member name="material" type="Material" setter="set_material" getter="get_material">
+ The [Material] to use for this [TileData]. This can be a [CanvasItemMaterial] to use the default shader, or a [ShaderMaterial] to use a custom shader.
</member>
<member name="modulate" type="Color" setter="set_modulate" getter="get_modulate" default="Color(1, 1, 1, 1)">
</member>
<member name="probability" type="float" setter="set_probability" getter="get_probability" default="1.0">
</member>
+ <member name="terrain" type="int" setter="set_terrain" getter="get_terrain" default="-1">
+ </member>
<member name="terrain_set" type="int" setter="set_terrain_set" getter="get_terrain_set" default="-1">
</member>
<member name="texture_offset" type="Vector2i" setter="set_texture_offset" getter="get_texture_offset" default="Vector2i(0, 0)">
diff --git a/doc/classes/TileMap.xml b/doc/classes/TileMap.xml
index 259c800a78..d532f583e6 100644
--- a/doc/classes/TileMap.xml
+++ b/doc/classes/TileMap.xml
@@ -243,15 +243,30 @@
- The alternative tile identifier [code]alternative_tile[/code] identifies a tile alternative the source is a [TileSetAtlasSource], and the scene for a [TileSetScenesCollectionSource].
</description>
</method>
- <method name="set_cells_from_surrounding_terrains">
+ <method name="set_cells_terrain_connect">
<return type="void" />
<argument index="0" name="layer" type="int" />
<argument index="1" name="cells" type="Vector2i[]" />
<argument index="2" name="terrain_set" type="int" />
- <argument index="3" name="ignore_empty_terrains" type="bool" default="true" />
+ <argument index="3" name="terrain" type="int" />
+ <argument index="4" name="ignore_empty_terrains" type="bool" default="true" />
<description>
- Updates all the cells in the [code]cells[/code] coordinates array and replace them by tiles that matches the surrounding cells terrains. Only cells form the given [code]terrain_set[/code] are considered.
- If [code]ignore_empty_terrains[/code] is true, zones with no terrain defined are ignored to select the tiles.
+ Update all the cells in the [code]cells[/code] coordinates array so that they use the given [code]terrain[/code] for the given [code]terrain_set[/code]. If an updated cell has the same terrain as one of its neighboring cells, this function tries to join the two. This function might update neighboring tiles if needed to create correct terrain transitions. If [code]ignore_empty_terrains[/code] is true, empty terrains will be ignored when trying to find the best fitting tile for the given terrain constraints.
+ If [code]ignore_empty_terrains[/code] is true, empty terrains will be ignored when trying to find the best fitting tile for the given terrain constraints.
+ [b]Note:[/b] To work correctly, [code]set_cells_terrain_connect[/code] requires the TileMap's TileSet to have terrains set up with all required terrain combinations. Otherwise, it may produce unexpected results.
+ </description>
+ </method>
+ <method name="set_cells_terrain_path">
+ <return type="void" />
+ <argument index="0" name="layer" type="int" />
+ <argument index="1" name="path" type="Vector2i[]" />
+ <argument index="2" name="terrain_set" type="int" />
+ <argument index="3" name="terrain" type="int" />
+ <argument index="4" name="ignore_empty_terrains" type="bool" default="true" />
+ <description>
+ Update all the cells in the [code]cells[/code] coordinates array so that they use the given [code]terrain[/code] for the given [code]terrain_set[/code]. The function will also connect two successive cell in the path with the same terrain. This function might update neighboring tiles if needed to create correct terrain transitions.
+ If [code]ignore_empty_terrains[/code] is true, empty terrains will be ignored when trying to find the best fitting tile for the given terrain constraints.
+ [b]Note:[/b] To work correctly, [code]set_cells_terrain_path[/code] requires the TileMap's TileSet to have terrains set up with all required terrain combinations. Otherwise, it may produce unexpected results.
</description>
</method>
<method name="set_layer_enabled">
diff --git a/doc/classes/Transform2D.xml b/doc/classes/Transform2D.xml
index 8c2a5aa6d9..e1f7ff21d0 100644
--- a/doc/classes/Transform2D.xml
+++ b/doc/classes/Transform2D.xml
@@ -163,6 +163,7 @@
<argument index="0" name="scale" type="Vector2" />
<description>
Sets the transform's scale.
+ [b]Note:[/b] Negative X scales in 2D are not decomposable from the transformation matrix. Due to the way scale is represented with transformation matrices in Godot, negative scales on the X axis will be changed to negative scales on the Y axis and a rotation of 180 degrees when decomposed.
</description>
</method>
<method name="set_skew">
diff --git a/doc/classes/Tree.xml b/doc/classes/Tree.xml
index 6ae85ad242..8a30364ebe 100644
--- a/doc/classes/Tree.xml
+++ b/doc/classes/Tree.xml
@@ -31,6 +31,7 @@
[/csharp]
[/codeblocks]
To iterate over all the [TreeItem] objects in a [Tree] object, use [method TreeItem.get_next] and [method TreeItem.get_first_child] after getting the root through [method get_root]. You can use [method Object.free] on a [TreeItem] to remove it from the [Tree].
+ [b]Incremental search:[/b] Like [ItemList] and [PopupMenu], [Tree] supports searching within the list while the control is focused. Press a key that matches the first letter of an item's name to select the first item starting with the given letter. After that point, there are two ways to perform incremental search: 1) Press the same key again before the timeout duration to select the next item starting with the same letter. 2) Press letter keys that match the rest of the word before the timeout duration to match to select the item in question directly. Both of these actions will be reset to the beginning of the list if the timeout duration has passed since the last keystroke was registered. You can adjust the timeout duration by changing [member ProjectSettings.gui/timers/incremental_search_max_interval_msec].
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/Viewport.xml b/doc/classes/Viewport.xml
index 148c6d7064..4727bc389e 100644
--- a/doc/classes/Viewport.xml
+++ b/doc/classes/Viewport.xml
@@ -227,7 +227,7 @@
The multisample anti-aliasing mode. A higher number results in smoother edges at the cost of significantly worse performance. A value of 2 or 4 is best unless targeting very high-end systems. See also bilinear scaling 3d [member scaling_3d_mode] for supersampling, which provides higher quality but is much more expensive.
</member>
<member name="own_world_3d" type="bool" setter="set_use_own_world_3d" getter="is_using_own_world_3d" default="false">
- If [code]true[/code], the viewport will use the [World3D] defined in [member world_3d].
+ If [code]true[/code], the viewport will use a unique copy of the [World3D] defined in [member world_3d].
</member>
<member name="physics_object_picking" type="bool" setter="set_physics_object_picking" getter="get_physics_object_picking" default="false">
If [code]true[/code], the objects rendered by viewport become subjects of mouse picking process.
@@ -279,6 +279,10 @@
If [code]true[/code], [OccluderInstance3D] nodes will be usable for occlusion culling in 3D for this viewport. For the root viewport, [member ProjectSettings.rendering/occlusion_culling/use_occlusion_culling] must be set to [code]true[/code] instead.
[b]Note:[/b] Enabling occlusion culling has a cost on the CPU. Only enable occlusion culling if you actually plan to use it, and think whether your scene can actually benefit from occlusion culling. Large, open scenes with few or no objects blocking the view will generally not benefit much from occlusion culling. Large open scenes generally benefit more from mesh LOD and visibility ranges ([member GeometryInstance3D.visibility_range_begin] and [member GeometryInstance3D.visibility_range_end]) compared to occlusion culling.
</member>
+ <member name="use_taa" type="bool" setter="set_use_taa" getter="is_using_taa" default="false">
+ Enables Temporal Anti-Aliasing for this viewport. TAA works by jittering the camera and accumulating the images of the last rendered frames, motion vector rendering is used to account for camera and object motion.
+ [b]Note:[/b] The implementation is not complete yet, some visual instances such as particles and skinned meshes may show artifacts.
+ </member>
<member name="use_xr" type="bool" setter="set_use_xr" getter="is_using_xr" default="false">
If [code]true[/code], the viewport will use the primary XR interface to render XR output. When applicable this can result in a stereoscopic image and the resulting render being output to a headset.
</member>
@@ -441,6 +445,8 @@
</constant>
<constant name="DEBUG_DRAW_OCCLUDERS" value="24" enum="DebugDraw">
</constant>
+ <constant name="DEBUG_DRAW_MOTION_VECTORS" value="25" enum="DebugDraw">
+ </constant>
<constant name="DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_NEAREST" value="0" enum="DefaultCanvasItemTextureFilter">
The texture filter reads from the nearest pixel only. The simplest and fastest method of filtering, but the texture will look pixelized.
</constant>
diff --git a/doc/classes/VisualShader.xml b/doc/classes/VisualShader.xml
index 5f13e4e7bc..64d901cd79 100644
--- a/doc/classes/VisualShader.xml
+++ b/doc/classes/VisualShader.xml
@@ -166,10 +166,6 @@
</method>
</methods>
<members>
- <member name="engine_version" type="Dictionary" setter="set_engine_version" getter="get_engine_version" default="{}">
- The Godot version this [VisualShader] was designed for, in the form of a [Dictionary] with [code]major[/code] and [code]minor[/code] keys with integer values. Example: [code]{"major": 4, "minor": 0}[/code]
- This is used by the editor to convert visual shaders from older Godot versions.
- </member>
<member name="graph_offset" type="Vector2" setter="set_graph_offset" getter="get_graph_offset" default="Vector2(0, 0)">
The offset vector of the whole graph.
</member>
diff --git a/doc/classes/VisualShaderNodeFloatFunc.xml b/doc/classes/VisualShaderNodeFloatFunc.xml
index 0f057b2e6d..1226013c67 100644
--- a/doc/classes/VisualShaderNodeFloatFunc.xml
+++ b/doc/classes/VisualShaderNodeFloatFunc.xml
@@ -65,7 +65,7 @@
<constant name="FUNC_CEIL" value="16" enum="Function">
Finds the nearest integer that is greater than or equal to the parameter. Translates to [code]ceil(x)[/code] in the Godot Shader Language.
</constant>
- <constant name="FUNC_FRAC" value="17" enum="Function">
+ <constant name="FUNC_FRACT" value="17" enum="Function">
Computes the fractional part of the argument. Translates to [code]fract(x)[/code] in the Godot Shader Language.
</constant>
<constant name="FUNC_SATURATE" value="18" enum="Function">
diff --git a/doc/classes/VisualShaderNodeVectorFunc.xml b/doc/classes/VisualShaderNodeVectorFunc.xml
index bc4e12c0b3..7524025f21 100644
--- a/doc/classes/VisualShaderNodeVectorFunc.xml
+++ b/doc/classes/VisualShaderNodeVectorFunc.xml
@@ -68,7 +68,7 @@
<constant name="FUNC_FLOOR" value="17" enum="Function">
Finds the nearest integer less than or equal to the parameter.
</constant>
- <constant name="FUNC_FRAC" value="18" enum="Function">
+ <constant name="FUNC_FRACT" value="18" enum="Function">
Computes the fractional part of the argument.
</constant>
<constant name="FUNC_INVERSE_SQRT" value="19" enum="Function">
diff --git a/doc/classes/Window.xml b/doc/classes/Window.xml
index 5ce870a899..f4eaaac2e1 100644
--- a/doc/classes/Window.xml
+++ b/doc/classes/Window.xml
@@ -4,7 +4,8 @@
Base class for all windows.
</brief_description>
<description>
- A node that creates a window.
+ A node that creates a window. The window can either be a native system window or embedded inside another [Window] (see [member Viewport.gui_embed_subwindows]).
+ At runtime, [Window]s will not close automatically when requested. You need to handle it manually using [signal close_requested] (this applies both to clicking close button and clicking outside popup).
</description>
<tutorials>
</tutorials>
@@ -18,12 +19,13 @@
<method name="child_controls_changed">
<return type="void" />
<description>
+ Requests an update of the [Window] size to fit underlying [Control] nodes.
</description>
</method>
<method name="get_contents_minimum_size" qualifiers="const">
<return type="Vector2" />
<description>
- Returns the combined minimum size from the child [Control] nodes of the window.
+ Returns the combined minimum size from the child [Control] nodes of the window. Use [method child_controls_changed] to update it when children nodes have changed.
</description>
</method>
<method name="get_flag" qualifiers="const">
@@ -50,6 +52,8 @@
<argument index="0" name="name" type="StringName" />
<argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
+ Returns the [Color] at [code]name[/code] if the theme has [code]theme_type[/code].
+ See [method Control.get_theme_color] for more details.
</description>
</method>
<method name="get_theme_constant" qualifiers="const">
@@ -57,21 +61,29 @@
<argument index="0" name="name" type="StringName" />
<argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
+ Returns the constant at [code]name[/code] if the theme has [code]theme_type[/code].
+ See [method Control.get_theme_color] for more details.
</description>
</method>
<method name="get_theme_default_base_scale" qualifiers="const">
<return type="float" />
<description>
+ Returns the default base scale defined in the attached [Theme].
+ See [member Theme.default_base_scale] for more details.
</description>
</method>
<method name="get_theme_default_font" qualifiers="const">
<return type="Font" />
<description>
+ Returns the default [Font] defined in the attached [Theme].
+ See [member Theme.default_font] for more details.
</description>
</method>
<method name="get_theme_default_font_size" qualifiers="const">
<return type="int" />
<description>
+ Returns the default font size defined in the attached [Theme].
+ See [member Theme.default_font_size] for more details.
</description>
</method>
<method name="get_theme_font" qualifiers="const">
@@ -80,6 +92,7 @@
<argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
Returns the [Font] at [code]name[/code] if the theme has [code]theme_type[/code].
+ See [method Control.get_theme_color] for more details.
</description>
</method>
<method name="get_theme_font_size" qualifiers="const">
@@ -88,6 +101,7 @@
<argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
Returns the font size at [code]name[/code] if the theme has [code]theme_type[/code].
+ See [method Control.get_theme_color] for more details.
</description>
</method>
<method name="get_theme_icon" qualifiers="const">
@@ -95,6 +109,8 @@
<argument index="0" name="name" type="StringName" />
<argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
+ Returns the icon at [code]name[/code] if the theme has [code]theme_type[/code].
+ See [method Control.get_theme_color] for more details.
</description>
</method>
<method name="get_theme_stylebox" qualifiers="const">
@@ -102,6 +118,8 @@
<argument index="0" name="name" type="StringName" />
<argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
+ Returns the [StyleBox] at [code]name[/code] if the theme has [code]theme_type[/code].
+ See [method Control.get_theme_color] for more details.
</description>
</method>
<method name="grab_focus">
@@ -121,6 +139,7 @@
<argument index="0" name="name" type="StringName" />
<argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
+ Returns [code]true[/code] if [Color] with [code]name[/code] is in [code]theme_type[/code].
</description>
</method>
<method name="has_theme_constant" qualifiers="const">
@@ -128,6 +147,7 @@
<argument index="0" name="name" type="StringName" />
<argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
+ Returns [code]true[/code] if constant with [code]name[/code] is in [code]theme_type[/code].
</description>
</method>
<method name="has_theme_font" qualifiers="const">
@@ -136,7 +156,6 @@
<argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
Returns [code]true[/code] if [Font] with [code]name[/code] is in [code]theme_type[/code].
- Returns [code]false[/code] if the theme does not have [code]theme_type[/code].
</description>
</method>
<method name="has_theme_font_size" qualifiers="const">
@@ -145,7 +164,6 @@
<argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
Returns [code]true[/code] if font size with [code]name[/code] is in [code]theme_type[/code].
- Returns [code]false[/code] if the theme does not have [code]theme_type[/code].
</description>
</method>
<method name="has_theme_icon" qualifiers="const">
@@ -153,6 +171,7 @@
<argument index="0" name="name" type="StringName" />
<argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
+ Returns [code]true[/code] if icon with [code]name[/code] is in [code]theme_type[/code].
</description>
</method>
<method name="has_theme_stylebox" qualifiers="const">
@@ -160,11 +179,13 @@
<argument index="0" name="name" type="StringName" />
<argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
+ Returns [code]true[/code] if [StyleBox] with [code]name[/code] is in [code]theme_type[/code].
</description>
</method>
<method name="hide">
<return type="void" />
<description>
+ Hides the window. This is not the same as minimized state. Hidden window can't be interacted with and needs to be made visible with [method show].
</description>
</method>
<method name="is_embedded" qualifiers="const">
@@ -182,28 +203,35 @@
<method name="is_maximize_allowed" qualifiers="const">
<return type="bool" />
<description>
+ Returns [code]true[/code] if the window can be maximized (the maximize button is enabled).
</description>
</method>
<method name="is_using_font_oversampling" qualifiers="const">
<return type="bool" />
<description>
+ Returns [code]true[/code] if font oversampling is enabled. See [method set_use_font_oversampling].
</description>
</method>
<method name="move_to_foreground">
<return type="void" />
<description>
+ Moves the [Window] on top of other windows and focuses it.
</description>
</method>
<method name="popup">
<return type="void" />
<argument index="0" name="rect" type="Rect2i" default="Rect2i(0, 0, 0, 0)" />
<description>
+ Shows the [Window] and makes it transient (see [member transient]). If [code]rect[/code] is provided, it will be set as the [Window]'s size.
+ Fails if called on the main window.
</description>
</method>
<method name="popup_centered">
<return type="void" />
<argument index="0" name="minsize" type="Vector2i" default="Vector2i(0, 0)" />
<description>
+ Popups the [Window] at the center of the current screen, with optionally given minimum size.
+ If the [Window] is embedded, it will be centered in the parent [Viewport] instead.
</description>
</method>
<method name="popup_centered_clamped">
@@ -211,23 +239,29 @@
<argument index="0" name="minsize" type="Vector2i" default="Vector2i(0, 0)" />
<argument index="1" name="fallback_ratio" type="float" default="0.75" />
<description>
+ Popups the [Window] centered inside its parent [Window].
+ [code]fallback_ratio[/code] determines the maximum size of the [Window], in relation to its parent.
</description>
</method>
<method name="popup_centered_ratio">
<return type="void" />
<argument index="0" name="ratio" type="float" default="0.8" />
<description>
+ Popups the [Window] centered inside its parent [Window] and sets its size as a [code]ratio[/code] of parent's size.
</description>
</method>
<method name="popup_on_parent">
<return type="void" />
<argument index="0" name="parent_rect" type="Rect2i" />
<description>
+ Popups the [Window] with a position shifted by parent [Window]'s position.
+ If the [Window] is embedded, has the same effect as [method popup].
</description>
</method>
<method name="request_attention">
<return type="void" />
<description>
+ Tells the OS that the [Window] needs an attention. This makes the window stand out in some way depending on the system, e.g. it might blink on the task bar.
</description>
</method>
<method name="reset_size">
@@ -248,12 +282,14 @@
<return type="void" />
<argument index="0" name="active" type="bool" />
<description>
+ If [code]active[/code] is [code]true[/code], enables system's native IME (Input Method Editor).
</description>
</method>
<method name="set_ime_position">
<return type="void" />
<argument index="0" name="position" type="Vector2i" />
<description>
+ Moves IME to the given position.
</description>
</method>
<method name="set_layout_direction">
@@ -267,17 +303,19 @@
<return type="void" />
<argument index="0" name="enable" type="bool" />
<description>
+ Enables font oversampling. This makes fonts look better when they are scaled up.
</description>
</method>
<method name="show">
<return type="void" />
<description>
+ Makes the [Window] appear. This enables interactions with the [Window] and doesn't change any of its property other than visibility (unlike e.g. [method popup]).
</description>
</method>
</methods>
<members>
<member name="always_on_top" type="bool" setter="set_flag" getter="get_flag" default="false">
- If [code]true[/code], the window will be on top of all other windows.
+ If [code]true[/code], the window will be on top of all other windows. Does not work if [member transient] is enabled.
</member>
<member name="auto_translate" type="bool" setter="set_auto_translate" getter="is_auto_translating" default="true">
Toggles if any text should automatically change to its translated version depending on the current locale.
@@ -286,27 +324,36 @@
If [code]true[/code], the window will have no borders.
</member>
<member name="content_scale_aspect" type="int" setter="set_content_scale_aspect" getter="get_content_scale_aspect" enum="Window.ContentScaleAspect" default="0">
+ Specifies how the content's aspect behaves when the [Window] is resized. The base aspect is determined by [member content_scale_size].
</member>
<member name="content_scale_factor" type="float" setter="set_content_scale_factor" getter="get_content_scale_factor" default="1.0">
+ Specifies the base scale of [Window]'s content when its [member size] is equal to [member content_scale_size].
</member>
<member name="content_scale_mode" type="int" setter="set_content_scale_mode" getter="get_content_scale_mode" enum="Window.ContentScaleMode" default="0">
+ Specifies how the content is scaled when the [Window] is resized.
</member>
<member name="content_scale_size" type="Vector2i" setter="set_content_scale_size" getter="get_content_scale_size" default="Vector2i(0, 0)">
+ Base size of the content (i.e. nodes that are drawn inside the window). If non-zero, [Window]'s content will be scaled when the window is resized to a different size.
</member>
<member name="current_screen" type="int" setter="set_current_screen" getter="get_current_screen" default="0">
The screen the window is currently on.
</member>
<member name="exclusive" type="bool" setter="set_exclusive" getter="is_exclusive" default="false">
+ If [code]true[/code], the [Window] will be in exclusive mode. Exclusive windows are always on top of their parent and will block all input going to the parent [Window].
+ Needs [member transient] enabled to work.
</member>
<member name="max_size" type="Vector2i" setter="set_max_size" getter="get_max_size" default="Vector2i(0, 0)">
+ If non-zero, the [Window] can't be resized to be bigger than this size.
</member>
<member name="min_size" type="Vector2i" setter="set_min_size" getter="get_min_size" default="Vector2i(0, 0)">
+ If non-zero, the [Window] can't be resized to be smaller than this size.
</member>
<member name="mode" type="int" setter="set_mode" getter="get_mode" enum="Window.Mode" default="0">
Set's the window's current mode.
[b]Note:[/b] Fullscreen mode is not exclusive fullscreen on Windows and Linux.
</member>
<member name="popup_window" type="bool" setter="set_flag" getter="get_flag" default="false">
+ If [code]true[/code], the [Window] will be considered a popup. Popups are sub-windows that don't show as separate windows in system's window manager's window list and will send close request when anything is clicked outside of them (unless [member exclusive] is enabled).
</member>
<member name="position" type="Vector2i" setter="set_position" getter="get_position" default="Vector2i(0, 0)">
The window's position in pixels.
@@ -315,34 +362,46 @@
The window's size in pixels.
</member>
<member name="theme" type="Theme" setter="set_theme" getter="get_theme">
+ The [Theme] resource that determines the style of the underlying [Control] nodes.
+ [Window] styles will have no effect unless the window is embedded.
</member>
<member name="theme_type_variation" type="StringName" setter="set_theme_type_variation" getter="get_theme_type_variation" default="&amp;&quot;&quot;">
+ The name of a theme type variation used by this [Window] to look up its own theme items. See [member Control.theme_type_variation] for more details.
</member>
<member name="title" type="String" setter="set_title" getter="get_title" default="&quot;&quot;">
- The window's title.
+ The window's title. If the [Window] is non-embedded, title styles set in [Theme] will have no effect.
</member>
<member name="transient" type="bool" setter="set_transient" getter="is_transient" default="false">
+ If [code]true[/code], the [Window] is transient, i.e. it's considered a child of another [Window]. Transient windows can't be in fullscreen mode and will return focus to their parent when closed.
+ Note that behavior might be different depending on the platform.
</member>
<member name="transparent" type="bool" setter="set_flag" getter="get_flag" default="false">
+ If [code]true[/code], the [Window]'s background can be transparent. This is best used with embedded windows. Currently non-embedded [Window] transparency is implemented only for MacOS.
</member>
<member name="unfocusable" type="bool" setter="set_flag" getter="get_flag" default="false">
+ If [code]true[/code], the [Window] can't be focused nor interacted with. It can still be visible.
</member>
<member name="unresizable" type="bool" setter="set_flag" getter="get_flag" default="false">
- If [code]true[/code], the window can't be resized.
+ If [code]true[/code], the window can't be resized. Minimize and maximize buttons are disabled.
</member>
<member name="visible" type="bool" setter="set_visible" getter="is_visible" default="true">
If [code]true[/code], the window is visible.
</member>
<member name="wrap_controls" type="bool" setter="set_wrap_controls" getter="is_wrapping_controls" default="false">
+ If [code]true[/code], the window's size will automatically update when a child node is added or removed.
+ If [code]false[/code], you need to call [method child_controls_changed] manually.
</member>
</members>
<signals>
<signal name="about_to_popup">
<description>
+ Emitted right after [method popup] call, before the [Window] appears or does anything.
</description>
</signal>
<signal name="close_requested">
<description>
+ Emitted when the [Window]'s close button is pressed or when [member popup_window] is enabled and user clicks outside the window.
+ This signal can be used to handle window closing, e.g. by connecting it to [method hide].
</description>
</signal>
<signal name="files_dropped">
@@ -362,49 +421,58 @@
</signal>
<signal name="focus_entered">
<description>
+ Emitted when the [Window] gains focus.
</description>
</signal>
<signal name="focus_exited">
<description>
+ Emitted when the [Window] loses its focus.
</description>
</signal>
<signal name="go_back_requested">
<description>
+ Emitted when a go back request is sent (e.g. pressing the "Back" button on Android), right after [constant Node.NOTIFICATION_WM_GO_BACK_REQUEST].
</description>
</signal>
<signal name="mouse_entered">
<description>
+ Emitted when the mouse cursor enters the [Window]'s area, regardless if it's currently focused or not.
</description>
</signal>
<signal name="mouse_exited">
<description>
+ Emitted when the mouse cursor exits the [Window]'s area (including when it's hovered over another window on top of this one).
</description>
</signal>
<signal name="theme_changed">
<description>
+ Emitted when the [member theme] is modified or changed to another [Theme].
</description>
</signal>
<signal name="visibility_changed">
<description>
+ Emitted when [Window] is made visible or disappears.
</description>
</signal>
<signal name="window_input">
<argument index="0" name="event" type="InputEvent" />
<description>
+ Emitted when the [Window] is currently focused and receives any input, passing the received event as an argument.
</description>
</signal>
</signals>
<constants>
<constant name="NOTIFICATION_VISIBILITY_CHANGED" value="30">
+ Emitted when [Window]'s visibility changes, right before [signal visibility_changed].
</constant>
<constant name="MODE_WINDOWED" value="0" enum="Mode">
- Windowed mode.
+ Windowed mode, i.e. [Window] doesn't occupy whole screen (unless set to the size of the screen).
</constant>
<constant name="MODE_MINIMIZED" value="1" enum="Mode">
- Minimized window mode.
+ Minimized window mode, i.e. [Window] is not visible and available on window manager's window list. Normally happens when the minimize button is presesd.
</constant>
<constant name="MODE_MAXIMIZED" value="2" enum="Mode">
- Maximized window mode.
+ Maximized window mode, i.e. [Window] will occupy whole screen area except task bar and still display its borders. Normally happens when the minimize button is presesd.
</constant>
<constant name="MODE_FULLSCREEN" value="3" enum="Mode">
Fullscreen window mode. Note that this is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless window is used to emulate fullscreen. On macOS, a new desktop is used to display the running project.
@@ -416,37 +484,49 @@
Regardless of the platform, enabling fullscreen will change the window size to match the monitor's size. Therefore, make sure your project supports [url=$DOCS_URL/tutorials/rendering/multiple_resolutions.html]multiple resolutions[/url] when enabling fullscreen mode.
</constant>
<constant name="FLAG_RESIZE_DISABLED" value="0" enum="Flags">
- The window's ability to be resized.
+ The window's ability to be resized. Set with [member unresizable].
</constant>
<constant name="FLAG_BORDERLESS" value="1" enum="Flags">
- Borderless window.
+ Borderless window. Set with [member borderless].
</constant>
<constant name="FLAG_ALWAYS_ON_TOP" value="2" enum="Flags">
- Flag for making the window always on top of all other windows.
+ Flag for making the window always on top of all other windows. Set with [member always_on_top].
</constant>
<constant name="FLAG_TRANSPARENT" value="3" enum="Flags">
+ Flag for per-pixel transparency. Set with [member transparent].
</constant>
<constant name="FLAG_NO_FOCUS" value="4" enum="Flags">
+ The window's ability to gain focus. Set with [member unfocusable].
</constant>
<constant name="FLAG_POPUP" value="5" enum="Flags">
+ Whether the window is popup or a regular window. Set with [member popup_window].
</constant>
<constant name="FLAG_MAX" value="6" enum="Flags">
+ Max value of the [enum Flags].
</constant>
<constant name="CONTENT_SCALE_MODE_DISABLED" value="0" enum="ContentScaleMode">
+ The content will not be scaled to match the [Window]'s size.
</constant>
<constant name="CONTENT_SCALE_MODE_CANVAS_ITEMS" value="1" enum="ContentScaleMode">
+ The content will be rendered at the target size. This is more performance-expensive than [constant CONTENT_SCALE_MODE_VIEWPORT], but provides better results.
</constant>
<constant name="CONTENT_SCALE_MODE_VIEWPORT" value="2" enum="ContentScaleMode">
+ The content will be rendered at the base size and then scaled to the target size. More performant than [constant CONTENT_SCALE_MODE_CANVAS_ITEMS], but results in pixelated image.
</constant>
<constant name="CONTENT_SCALE_ASPECT_IGNORE" value="0" enum="ContentScaleAspect">
+ The aspect will be ignored. Scaling will simply stretch the content to fit the target size.
</constant>
<constant name="CONTENT_SCALE_ASPECT_KEEP" value="1" enum="ContentScaleAspect">
+ The content's aspect will be preserved. If the target size has different aspect from the base one, the image will be centered and black bars will appear on left and right sides.
</constant>
<constant name="CONTENT_SCALE_ASPECT_KEEP_WIDTH" value="2" enum="ContentScaleAspect">
+ The content can be expanded vertically. Scaling horizontally will result in keeping the width ratio and then black bars on left and right sides.
</constant>
<constant name="CONTENT_SCALE_ASPECT_KEEP_HEIGHT" value="3" enum="ContentScaleAspect">
+ The content can be expanded horizontally. Scaling vertically will result in keeping the height ratio and then black bars on top and bottom sides.
</constant>
<constant name="CONTENT_SCALE_ASPECT_EXPAND" value="4" enum="ContentScaleAspect">
+ The content's aspect will be preserved. If the target size has different aspect from the base one, the content will stay in the to-left corner and add an extra visible area in the stretched space.
</constant>
<constant name="LAYOUT_DIRECTION_INHERITED" value="0" enum="LayoutDirection">
Automatic layout direction, determined from the parent window layout direction.
@@ -463,33 +543,41 @@
</constants>
<theme_items>
<theme_item name="title_color" data_type="color" type="Color" default="Color(0.875, 0.875, 0.875, 1)">
+ The color of the title's text.
</theme_item>
<theme_item name="title_outline_modulate" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
- The color of the title outline.
+ The color of the title's text outline.
</theme_item>
<theme_item name="close_h_offset" data_type="constant" type="int" default="18">
+ Horizontal position offset of the close button.
</theme_item>
<theme_item name="close_v_offset" data_type="constant" type="int" default="24">
+ Vertical position offset of the close button.
</theme_item>
<theme_item name="resize_margin" data_type="constant" type="int" default="4">
- </theme_item>
- <theme_item name="scaleborder_size" data_type="constant" type="int" default="4">
+ Defines the outside margin at which the window border can be grabbed with mouse and resized.
</theme_item>
<theme_item name="title_height" data_type="constant" type="int" default="36">
+ Height of the title bar.
</theme_item>
<theme_item name="title_outline_size" data_type="constant" type="int" default="0">
The size of the title outline.
</theme_item>
<theme_item name="title_font" data_type="font" type="Font">
+ The font used to draw the title.
</theme_item>
<theme_item name="title_font_size" data_type="font_size" type="int">
The size of the title font.
</theme_item>
<theme_item name="close" data_type="icon" type="Texture2D">
+ The icon for the close button.
</theme_item>
<theme_item name="close_pressed" data_type="icon" type="Texture2D">
+ The icon for the close button when it's being pressed.
</theme_item>
<theme_item name="embedded_border" data_type="style" type="StyleBox">
+ The background style used when the [Window] is embedded. Note that this is drawn only under the window's content, excluding the title. For proper borders and title bar style, you can use [code]expand_margin_*[/code] properties of [StyleBoxFlat].
+ [b]Note:[/b] The content background will not be visible unless [member transparent] is enabled.
</theme_item>
</theme_items>
</class>
diff --git a/doc/classes/World3D.xml b/doc/classes/World3D.xml
index c57029a180..56a662d062 100644
--- a/doc/classes/World3D.xml
+++ b/doc/classes/World3D.xml
@@ -19,7 +19,7 @@
The World3D's [Environment].
</member>
<member name="fallback_environment" type="Environment" setter="set_fallback_environment" getter="get_fallback_environment">
- The World3D's fallback_environment will be used if the World3D's [Environment] fails or is missing.
+ The World3D's fallback environment will be used if [member environment] fails or is missing.
</member>
<member name="navigation_map" type="RID" setter="" getter="get_navigation_map">
The [RID] of this world's navigation map. Used by the [NavigationServer3D].
diff --git a/doc/classes/WorldEnvironment.xml b/doc/classes/WorldEnvironment.xml
index 8afe169874..ed8f0b9a04 100644
--- a/doc/classes/WorldEnvironment.xml
+++ b/doc/classes/WorldEnvironment.xml
@@ -16,6 +16,7 @@
</tutorials>
<members>
<member name="camera_effects" type="CameraEffects" setter="set_camera_effects" getter="get_camera_effects">
+ The [CameraEffects] resource used by this [WorldEnvironment], defining the default properties. This [CameraEffects] resource will be used by all [Camera3D]s that do not define their own [CameraEffects].
</member>
<member name="environment" type="Environment" setter="set_environment" getter="get_environment">
The [Environment] resource used by this [WorldEnvironment], defining the default properties.
diff --git a/doc/tools/make_rst.py b/doc/tools/make_rst.py
index 2e227ce578..ce09361dfa 100755
--- a/doc/tools/make_rst.py
+++ b/doc/tools/make_rst.py
@@ -4,7 +4,9 @@
import argparse
import os
+import platform
import re
+import sys
import xml.etree.ElementTree as ET
from collections import OrderedDict
@@ -55,9 +57,11 @@ BASE_STRINGS = [
]
strings_l10n = {}
+STYLES = {}
+
def print_error(error, state): # type: (str, State) -> None
- print("ERROR: {}".format(error))
+ print("{}{}ERROR:{} {}{}".format(STYLES["red"], STYLES["bold"], STYLES["regular"], error, STYLES["reset"]))
state.num_errors += 1
@@ -399,10 +403,26 @@ def parse_arguments(root): # type: (ET.Element) -> List[ParameterDef]
def main(): # type: () -> None
+ # Enable ANSI escape code support on Windows 10 and later (for colored console output).
+ # <https://bugs.python.org/issue29059>
+ if platform.system().lower() == "windows":
+ from ctypes import windll, c_int, byref
+
+ stdout_handle = windll.kernel32.GetStdHandle(c_int(-11))
+ mode = c_int(0)
+ windll.kernel32.GetConsoleMode(c_int(stdout_handle), byref(mode))
+ mode = c_int(mode.value | 4)
+ windll.kernel32.SetConsoleMode(c_int(stdout_handle), mode)
+
parser = argparse.ArgumentParser()
parser.add_argument("path", nargs="+", help="A path to an XML file or a directory containing XML files to parse.")
parser.add_argument("--filter", default="", help="The filepath pattern for XML files to filter.")
parser.add_argument("--lang", "-l", default="en", help="Language to use for section headings.")
+ parser.add_argument(
+ "--color",
+ action="store_true",
+ help="If passed, force colored output even if stdout is not a TTY (useful for continuous integration).",
+ )
group = parser.add_mutually_exclusive_group()
group.add_argument("--output", "-o", default=".", help="The directory to save output .rst files in.")
group.add_argument(
@@ -412,6 +432,13 @@ def main(): # type: () -> None
)
args = parser.parse_args()
+ should_color = args.color or (hasattr(sys.stdout, "isatty") and sys.stdout.isatty())
+ STYLES["red"] = "\x1b[91m" if should_color else ""
+ STYLES["green"] = "\x1b[92m" if should_color else ""
+ STYLES["bold"] = "\x1b[1m" if should_color else ""
+ STYLES["regular"] = "\x1b[22m" if should_color else ""
+ STYLES["reset"] = "\x1b[0m" if should_color else ""
+
# Retrieve heading translations for the given language.
if not args.dry_run and args.lang != "en":
lang_file = os.path.join(
@@ -464,17 +491,17 @@ def main(): # type: () -> None
try:
tree = ET.parse(cur_file)
except ET.ParseError as e:
- print_error("{}.xml: Parse error while reading the file: {}".format(cur_file, e), state)
+ print_error("{}: Parse error while reading the file: {}".format(cur_file, e), state)
continue
doc = tree.getroot()
if "version" not in doc.attrib:
- print_error('{}.xml: "version" attribute missing from "doc".'.format(cur_file), state)
+ print_error('{}: "version" attribute missing from "doc".'.format(cur_file), state)
continue
name = doc.attrib["name"]
if name in classes:
- print_error('{}.xml: Duplicate class "{}".'.format(cur_file, name), state)
+ print_error('{}: Duplicate class "{}".'.format(cur_file, name), state)
continue
classes[name] = (doc, cur_file)
@@ -499,16 +526,22 @@ def main(): # type: () -> None
make_rst_class(class_def, state, args.dry_run, args.output)
if state.num_errors == 0:
- print("No errors found in the class reference XML.")
+ print("{}No errors found in the class reference XML.{}".format(STYLES["green"], STYLES["reset"]))
if not args.dry_run:
print("Wrote reStructuredText files for each class to: %s" % args.output)
else:
if state.num_errors >= 2:
print(
- "%d errors were found in the class reference XML. Please check the messages above." % state.num_errors
+ "{}{} errors were found in the class reference XML. Please check the messages above.{}".format(
+ STYLES["red"], state.num_errors, STYLES["reset"]
+ )
)
else:
- print("1 error was found in the class reference XML. Please check the messages above.")
+ print(
+ "{}1 error was found in the class reference XML. Please check the messages above.{}".format(
+ STYLES["red"], STYLES["reset"]
+ )
+ )
exit(1)
@@ -880,9 +913,9 @@ def format_codeblock(code_type, post_text, indent_level, state): # types: str,
if to_skip > indent_level:
print_error(
- "{}.xml: Four spaces should be used for indentation within ["
- + code_type
- + "].".format(state.current_class),
+ "{}.xml: Four spaces should be used for indentation within [{}].".format(
+ state.current_class, code_type
+ ),
state,
)
diff --git a/doc/translations/ar.po b/doc/translations/ar.po
index 4f588d5122..8354193353 100644
--- a/doc/translations/ar.po
+++ b/doc/translations/ar.po
@@ -480,7 +480,7 @@ msgstr ""
#, fuzzy
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3543,6 +3543,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -3555,6 +3561,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -8532,7 +8544,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -8731,7 +8743,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -8748,10 +8763,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -8936,7 +8947,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -12528,7 +12541,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -13785,7 +13798,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -14253,7 +14266,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -14291,9 +14304,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -14312,8 +14325,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -14329,8 +14342,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -14421,9 +14434,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -19269,11 +19282,15 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
-msgstr ""
+#, fuzzy
+msgid "The [Curve] that is rendered onto the texture."
+msgstr "ÙŠÙØ±Ø¬Ø¹ جيب المَعلم."
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -19559,6 +19576,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
#, fuzzy
msgid "Returns the number of keys in the dictionary."
msgstr "ÙŠÙØ±Ø¬Ø¹ باقي قسمة كل من Ø§Ù„Ù…ÙØªØ¬Ù‡ÙŠÙ† (الشعاعين)."
@@ -21491,7 +21515,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -21499,9 +21523,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21512,9 +21550,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21627,11 +21674,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -23805,11 +23871,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -26277,7 +26343,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -26299,7 +26366,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -27107,6 +27175,12 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -27157,6 +27231,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -29549,7 +29627,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -29698,10 +29776,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -29895,24 +29969,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -29948,6 +30004,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -30255,8 +30329,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -30519,9 +30593,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -34832,9 +34906,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -35639,6 +35714,11 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+#, fuzzy
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr "ÙŠÙØ±Ø¬Ø¹ جيب المَعلم."
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -35661,10 +35741,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -35699,6 +35791,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -35708,11 +35806,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -35740,7 +35846,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35810,6 +35926,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Returns the map cell size."
@@ -35834,7 +35954,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35853,6 +35976,12 @@ msgstr "ÙŠÙØ±Ø¬Ø¹ جيب التمام \"cosine \" لقيمة المَعلم."
msgid "Sets the map active."
msgstr "ÙŠÙØ±Ø¬Ø¹ قيمة الجيب العكسية للمَعلم."
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -35868,15 +35997,61 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr "ÙŠÙØ±Ø¬Ø¹ باقي قسمة كل من Ø§Ù„Ù…ÙØªØ¬Ù‡ÙŠÙ† (الشعاعين)."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
+msgid "Returns the region's navigation layers."
+msgstr "ÙŠÙØ±Ø¬Ø¹ جيب المَعلم."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr "ÙŠÙØ±Ø¬Ø¹ جيب المَعلم."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr "ÙŠÙØ±Ø¬Ø¹ جيب المَعلم."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
msgid "Sets the map for the region."
msgstr "ÙŠÙØ±Ø¬Ø¹ جيب المَعلم."
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Sets the navigation mesh for the region."
@@ -35886,6 +36061,11 @@ msgstr "ÙŠÙØ±Ø¬Ø¹ القيمة المعاكسة للمَعلم."
msgid "Sets the global transformation for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr "ÙŠÙØ±Ø¬Ø¹ جيب المَعلم."
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -35895,9 +36075,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -35915,7 +36102,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35931,11 +36126,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35977,6 +36185,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -35989,7 +36203,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -36016,6 +36236,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -36078,9 +36305,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -36097,13 +36331,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
#, fuzzy
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr "ÙŠÙØ±Ø¬Ø¹ جيب المَعلم."
@@ -36124,6 +36351,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -36154,8 +36388,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36178,9 +36412,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36194,14 +36428,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36213,7 +36447,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36241,29 +36475,29 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
+msgid ""
+"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
+"is within [member agent_max_climb] of a walkable neighbor."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -36282,7 +36516,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -36345,7 +36579,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36367,13 +36601,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36423,8 +36657,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -36442,8 +36676,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -36472,10 +36719,34 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "The [NavigationMesh] resource to use."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -36492,7 +36763,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -36533,7 +36806,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -36614,6 +36889,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -36650,6 +36933,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -36657,6 +36964,22 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "The [NavigationPolygon] resource to use."
+msgstr ""
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -36666,11 +36989,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36732,6 +37059,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -38495,7 +38828,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -38619,7 +38958,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -40596,8 +40935,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -40780,9 +41126,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -44911,7 +45257,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45065,7 +45411,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45120,7 +45466,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45173,7 +45519,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45222,7 +45568,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45274,7 +45620,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45326,7 +45672,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -46965,7 +47311,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -47210,6 +47565,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -47435,6 +47802,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -47643,6 +48202,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -47910,6 +48661,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -49412,7 +50206,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -49764,8 +50557,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -51560,6 +52354,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -51769,8 +52579,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -53297,7 +54107,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -55018,7 +55829,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -61130,6 +61946,11 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+#, fuzzy
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr "ÙŠÙØ±Ø¬Ø¹ جيب التمام \"cosine \" لقيمة المَعلم."
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -61236,6 +62057,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -62367,7 +63192,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -65612,8 +66442,8 @@ msgstr ""
#: doc/classes/Viewport.xml
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
#: doc/classes/Viewport.xml
@@ -66050,11 +66880,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -66094,6 +66925,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -69988,7 +70829,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -70856,6 +71697,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -74056,8 +74907,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -74072,11 +74923,17 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
+msgstr "ÙŠÙØ±Ø¬Ø¹ جيب المَعلم."
+
+#: doc/classes/World.xml
msgid "The World's visual scenario."
msgstr ""
@@ -74091,8 +74948,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -74109,6 +74966,12 @@ msgid ""
msgstr ""
#: doc/classes/World2D.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr "ÙŠÙØ±Ø¬Ø¹ جيب المَعلم."
+
+#: doc/classes/World2D.xml
msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
diff --git a/doc/translations/ca.po b/doc/translations/ca.po
index 4b3e2f27f1..234b5cd60c 100644
--- a/doc/translations/ca.po
+++ b/doc/translations/ca.po
@@ -460,7 +460,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3492,6 +3492,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -3504,6 +3510,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -8479,7 +8491,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -8678,7 +8690,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -8695,10 +8710,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -8883,7 +8894,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -12469,7 +12482,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -13726,7 +13739,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -14194,7 +14207,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -14232,9 +14245,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -14253,8 +14266,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -14270,8 +14283,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -14362,9 +14375,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -19201,11 +19214,14 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
+msgid "The [Curve] that is rendered onto the texture."
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -19491,6 +19507,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
msgid "Returns the number of keys in the dictionary."
msgstr ""
@@ -21421,7 +21444,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -21429,9 +21452,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21442,9 +21479,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21557,11 +21603,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -23733,11 +23798,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -26199,7 +26264,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -26221,7 +26287,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -27027,6 +27094,12 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -27077,6 +27150,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -29467,7 +29544,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -29616,10 +29693,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -29813,24 +29886,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -29866,6 +29921,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -30173,8 +30246,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -30437,9 +30510,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -34745,9 +34818,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -35545,6 +35619,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr ""
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -35567,10 +35645,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -35605,6 +35695,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -35614,11 +35710,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -35646,7 +35750,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35710,6 +35824,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Returns the map cell size."
msgstr ""
@@ -35733,7 +35851,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35750,6 +35871,12 @@ msgstr ""
msgid "Sets the map active."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -35765,14 +35892,56 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the region's navigation layers."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the map for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the navigation mesh for the region."
msgstr ""
@@ -35781,6 +35950,10 @@ msgstr ""
msgid "Sets the global transformation for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -35790,9 +35963,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -35810,7 +35990,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35825,11 +36013,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35870,6 +36071,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -35882,7 +36089,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35909,6 +36122,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -35971,9 +36191,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -35989,13 +36216,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr ""
@@ -36015,6 +36235,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -36045,8 +36272,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36068,9 +36295,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36084,14 +36311,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36103,7 +36330,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36131,29 +36358,29 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
+msgid ""
+"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
+"is within [member agent_max_climb] of a walkable neighbor."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -36172,7 +36399,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -36235,7 +36462,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36256,13 +36483,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36312,8 +36539,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -36330,8 +36557,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -36360,10 +36600,34 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "The [NavigationMesh] resource to use."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -36380,7 +36644,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -36420,7 +36686,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -36500,6 +36768,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -36536,6 +36812,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -36543,6 +36843,22 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "The [NavigationPolygon] resource to use."
+msgstr ""
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -36552,11 +36868,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36614,6 +36934,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -38377,7 +38703,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -38501,7 +38833,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -40470,8 +40802,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -40654,9 +40993,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -44766,7 +45105,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44920,7 +45259,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44975,7 +45314,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45028,7 +45367,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45077,7 +45416,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45129,7 +45468,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45181,7 +45520,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -46817,7 +47156,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -47062,6 +47410,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -47287,6 +47647,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -47495,6 +48047,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -47762,6 +48506,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -49264,7 +50051,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -49616,8 +50402,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -51410,6 +52197,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -51619,8 +52422,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -53147,7 +53950,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -54868,7 +55672,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -60969,6 +61778,10 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -61075,6 +61888,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -62206,7 +63023,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -65439,8 +66261,8 @@ msgstr ""
#: doc/classes/Viewport.xml
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
#: doc/classes/Viewport.xml
@@ -65877,11 +66699,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -65921,6 +66744,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -69798,7 +70631,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -70666,6 +71499,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -73862,8 +74705,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -73878,8 +74721,13 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
+msgstr ""
+
+#: doc/classes/World.xml
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
msgstr ""
#: doc/classes/World.xml
@@ -73897,8 +74745,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -73916,6 +74764,11 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr ""
+
+#: doc/classes/World2D.xml
+msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
msgstr ""
diff --git a/doc/translations/classes.pot b/doc/translations/classes.pot
index fcaab07a2f..72d9388f80 100644
--- a/doc/translations/classes.pot
+++ b/doc/translations/classes.pot
@@ -340,7 +340,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3372,6 +3372,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -3384,6 +3390,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -8359,7 +8371,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -8558,7 +8570,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -8575,10 +8590,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -8763,7 +8774,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -12349,7 +12362,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -13606,7 +13619,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -14074,7 +14087,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -14112,9 +14125,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -14133,8 +14146,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -14150,8 +14163,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -14242,9 +14255,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -19081,11 +19094,14 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
+msgid "The [Curve] that is rendered onto the texture."
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -19371,6 +19387,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
msgid "Returns the number of keys in the dictionary."
msgstr ""
@@ -21301,7 +21324,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -21309,9 +21332,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21322,9 +21359,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21437,11 +21483,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -23610,11 +23675,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -26076,7 +26141,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -26098,7 +26164,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -26904,6 +26971,12 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -26954,6 +27027,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -29344,7 +29421,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -29493,10 +29570,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -29690,24 +29763,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -29743,6 +29798,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -30050,8 +30123,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -30314,9 +30387,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -34622,9 +34695,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -35422,6 +35496,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr ""
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -35444,10 +35522,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -35482,6 +35572,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -35491,11 +35587,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -35523,7 +35627,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35587,6 +35701,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Returns the map cell size."
msgstr ""
@@ -35610,7 +35728,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35627,6 +35748,12 @@ msgstr ""
msgid "Sets the map active."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -35642,14 +35769,56 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the region's navigation layers."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the map for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the navigation mesh for the region."
msgstr ""
@@ -35658,6 +35827,10 @@ msgstr ""
msgid "Sets the global transformation for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -35667,9 +35840,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -35687,7 +35867,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35702,11 +35890,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35747,6 +35948,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -35759,7 +35966,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35786,6 +35999,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -35848,9 +36068,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -35866,13 +36093,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr ""
@@ -35892,6 +36112,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -35922,8 +36149,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -35945,9 +36172,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -35961,14 +36188,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -35980,7 +36207,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36008,29 +36235,29 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
+msgid ""
+"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
+"is within [member agent_max_climb] of a walkable neighbor."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -36049,7 +36276,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -36112,7 +36339,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36133,13 +36360,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36189,8 +36416,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -36207,8 +36434,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -36237,10 +36477,34 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "The [NavigationMesh] resource to use."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -36257,7 +36521,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -36297,7 +36563,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -36377,6 +36645,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -36413,6 +36689,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -36420,6 +36720,22 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "The [NavigationPolygon] resource to use."
+msgstr ""
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -36429,11 +36745,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36491,6 +36811,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -38254,7 +38580,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -38378,7 +38710,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -40347,8 +40679,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -40531,9 +40870,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -44643,7 +44982,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44797,7 +45136,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44852,7 +45191,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44905,7 +45244,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44954,7 +45293,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45006,7 +45345,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45058,7 +45397,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -46694,7 +47033,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -46939,6 +47287,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -47164,6 +47524,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -47372,6 +47924,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -47639,6 +48383,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -49141,7 +49928,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -49493,8 +50279,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -51287,6 +52074,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -51496,8 +52299,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -53024,7 +53827,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -54745,7 +55549,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -60846,6 +61655,10 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -60952,6 +61765,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -62083,7 +62900,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -65316,8 +66138,8 @@ msgstr ""
#: doc/classes/Viewport.xml
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
#: doc/classes/Viewport.xml
@@ -65754,11 +66576,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -65798,6 +66621,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -69675,7 +70508,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -70543,6 +71376,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -73739,8 +74582,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -73755,8 +74598,13 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
+msgstr ""
+
+#: doc/classes/World.xml
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
msgstr ""
#: doc/classes/World.xml
@@ -73774,8 +74622,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -73793,6 +74641,11 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr ""
+
+#: doc/classes/World2D.xml
+msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
msgstr ""
diff --git a/doc/translations/cs.po b/doc/translations/cs.po
index 540e9fea2d..4b60e4d7c4 100644
--- a/doc/translations/cs.po
+++ b/doc/translations/cs.po
@@ -489,7 +489,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3877,6 +3877,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -3889,6 +3895,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -8869,7 +8881,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -9068,7 +9080,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -9085,10 +9100,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -9273,7 +9284,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -12875,7 +12888,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -14133,7 +14146,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -14602,7 +14615,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -14640,9 +14653,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -14661,8 +14674,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -14678,8 +14691,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -14770,9 +14783,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -19646,11 +19659,15 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
-msgstr ""
+#, fuzzy
+msgid "The [Curve] that is rendered onto the texture."
+msgstr "Vrátí sinus parametru."
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -19937,6 +19954,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
#, fuzzy
msgid "Returns the number of keys in the dictionary."
msgstr "Vrátí zbytek po dělení dvou vektorů."
@@ -21870,7 +21894,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -21878,9 +21902,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21891,9 +21929,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -22006,11 +22053,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -24189,11 +24255,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -26661,7 +26727,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -26683,7 +26750,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -27495,6 +27563,13 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+#, fuzzy
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr "Vrací [code]true[/code] pokud [code]s[/code] je nula nebo téměř nula."
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -27545,6 +27620,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -29938,7 +30017,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -30087,10 +30166,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -30284,24 +30359,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -30337,6 +30394,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -30644,8 +30719,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -30908,9 +30983,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -35226,9 +35301,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -36034,6 +36110,11 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+#, fuzzy
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr "Vrátí sinus parametru."
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -36056,10 +36137,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -36094,6 +36187,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -36103,11 +36202,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36136,7 +36243,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr "Vrátí [code] true [/code], pokud je vektor normalizován, jinak false."
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -36206,6 +36323,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Returns the map cell size."
@@ -36230,7 +36351,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -36249,6 +36373,12 @@ msgstr "Vrátí [code] true [/code], pokud je vektor normalizován, jinak false.
msgid "Sets the map active."
msgstr "Vrátí arkus sinus parametru."
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -36264,15 +36394,61 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr "Vrací [code]true[/code] pokud [code]s[/code] je nula nebo téměř nula."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
+msgid "Returns the region's navigation layers."
+msgstr "Vrátí sinus parametru."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr "Vrací [code]true[/code] pokud [code]s[/code] je nula nebo téměř nula."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr "Vrací [code]true[/code] pokud [code]s[/code] je nula nebo téměř nula."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
msgid "Sets the map for the region."
msgstr "Vrátí sinus parametru."
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Sets the navigation mesh for the region."
@@ -36282,6 +36458,11 @@ msgstr "Vrátí opaÄnou hodnotu parametru."
msgid "Sets the global transformation for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr "Vrací [code]true[/code] pokud [code]s[/code] je nula nebo téměř nula."
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -36291,9 +36472,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -36311,7 +36499,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -36327,11 +36523,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -36375,6 +36584,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -36387,7 +36602,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -36414,6 +36635,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -36476,9 +36704,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -36495,13 +36730,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
#, fuzzy
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr "Vrátí sinus parametru."
@@ -36522,6 +36750,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -36551,10 +36786,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationMesh.xml
+#, fuzzy
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
+"Vrací [code]true[/code] pokud si jsou [code]a[/code] a [code]b[/code] "
+"přiblížně rovny."
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
msgid ""
@@ -36576,9 +36814,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36592,14 +36830,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36611,7 +36849,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36639,29 +36877,29 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
+msgid ""
+"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
+"is within [member agent_max_climb] of a walkable neighbor."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -36680,7 +36918,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -36743,7 +36981,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36765,13 +37003,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36821,8 +37059,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -36840,8 +37078,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -36870,10 +37121,34 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "The [NavigationMesh] resource to use."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -36890,7 +37165,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -36931,7 +37208,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -37012,6 +37291,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -37048,6 +37335,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -37055,6 +37366,22 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "The [NavigationPolygon] resource to use."
+msgstr ""
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -37064,11 +37391,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -37130,6 +37461,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -38893,7 +39230,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -39017,7 +39360,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -41003,8 +41346,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -41187,9 +41537,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -45320,7 +45670,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45477,7 +45827,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45532,7 +45882,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45585,7 +45935,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45634,7 +45984,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45687,7 +46037,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45739,7 +46089,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -47379,7 +47729,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -47624,6 +47983,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -47849,6 +48220,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -48057,6 +48620,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -48324,6 +49079,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -49826,7 +50624,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -50182,8 +50979,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -51981,6 +52779,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -52190,8 +53004,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -53719,7 +54533,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -55441,7 +56256,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -61589,6 +62409,11 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+#, fuzzy
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr "Vrátí [code] true [/code], pokud je vektor normalizován, jinak false."
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -61695,6 +62520,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -62829,7 +63658,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -66083,10 +66917,11 @@ msgid ""
msgstr ""
#: doc/classes/Viewport.xml
+#, fuzzy
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
-msgstr ""
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
+msgstr "Vrátí [code] true [/code], pokud je vektor normalizován, jinak false."
#: doc/classes/Viewport.xml
msgid ""
@@ -66522,11 +67357,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -66566,6 +67402,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -70466,7 +71312,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -71335,6 +72181,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -74535,8 +75391,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -74551,11 +75407,17 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
+msgstr "Vrátí sinus parametru."
+
+#: doc/classes/World.xml
msgid "The World's visual scenario."
msgstr ""
@@ -74570,8 +75432,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -74588,6 +75450,12 @@ msgid ""
msgstr ""
#: doc/classes/World2D.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr "Vrátí sinus parametru."
+
+#: doc/classes/World2D.xml
msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
diff --git a/doc/translations/de.po b/doc/translations/de.po
index d6a5bab648..640725bd9a 100644
--- a/doc/translations/de.po
+++ b/doc/translations/de.po
@@ -533,9 +533,10 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
+#, fuzzy
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -4378,6 +4379,15 @@ msgstr ""
"die optional benannten 2D-Physikebenen verwendet."
#: doc/classes/@GlobalScope.xml
+#, fuzzy
+msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+"Weist darauf hin, dass eine Integer-Eigenschaft eine Bitmaske ist, welche "
+"die optional benannten 2D-Renderebenen verwendet."
+
+#: doc/classes/@GlobalScope.xml
msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
@@ -4394,6 +4404,15 @@ msgstr ""
"die optional benannten 3D-Physikebenen verwendet."
#: doc/classes/@GlobalScope.xml
+#, fuzzy
+msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+"Weist darauf hin, dass eine Integer-Eigenschaft eine Bitmaske ist, welche "
+"die optional benannten 2D-Renderebenen verwendet."
+
+#: doc/classes/@GlobalScope.xml
msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
@@ -10407,7 +10426,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -10606,7 +10625,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -10623,10 +10645,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -10811,7 +10829,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -14438,7 +14458,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -15732,7 +15752,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -16227,7 +16247,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -16265,9 +16285,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -16286,8 +16306,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -16303,8 +16323,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -16395,9 +16415,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -21355,11 +21375,15 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
-msgstr ""
+#, fuzzy
+msgid "The [Curve] that is rendered onto the texture."
+msgstr "Der Name des Audiobusses des Bereichs."
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -21647,6 +21671,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
#, fuzzy
msgid "Returns the number of keys in the dictionary."
msgstr "Gibt die Nummer von Elementen innerhalb eines Arrays wieder."
@@ -23583,7 +23614,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -23591,9 +23622,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -23604,9 +23649,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -23719,11 +23773,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -25919,11 +25992,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -28408,7 +28481,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -28430,7 +28504,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -29261,6 +29336,15 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+#, fuzzy
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+"Wenn [code]true[/code], aktualisiert Animationen als Reaktion auf "
+"prozessbezogene Benachrichtigungen."
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -29311,6 +29395,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -31715,7 +31803,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -31864,10 +31952,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -32064,24 +32148,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -32117,6 +32183,25 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+#, fuzzy
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr "Der operator, der benutzt wird. Siehe [enum Operator] für Optionen."
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -32424,8 +32509,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -32688,9 +32773,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -37030,9 +37115,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -37838,6 +37924,11 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+#, fuzzy
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr "Gibt die Anzahl der Spuren in der Animation zurück."
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -37861,10 +37952,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -37900,6 +38003,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr "Der Anrufmodus, der für Spuren der Anrufmethode verwendet werden soll."
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
#, fuzzy
msgid "Server interface for low-level 2D navigation access."
@@ -37910,11 +38019,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -37948,7 +38065,17 @@ msgstr ""
"Gibt [code]true[/code] zurück, wenn der Graph das übergebene Node enthält."
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -38019,6 +38146,13 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+#, fuzzy
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+"Gibt die aktuelle Zeile in der geöffneten Datei zurück (aktuell nicht "
+"implementiert)."
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Returns the map cell size."
@@ -38046,7 +38180,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -38065,6 +38202,12 @@ msgstr "Gibt [code]true[/code] zurück falls das Array leer ist."
msgid "Sets the map active."
msgstr "Die letzte Aktion wiederholen."
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -38080,15 +38223,62 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr ""
+"Gibt [code]true[/code] zurück, wenn das Array [code]value[/code] enthält."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
+msgid "Returns the region's navigation layers."
+msgstr "Gibt die Anzahl der Verbindungen im Graphen zurück."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr "Logischer ODER-Operator ([code]oder[/code] oder [code]||[/code])."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr "Logischer ODER-Operator ([code]oder[/code] oder [code]||[/code])."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
msgid "Sets the map for the region."
msgstr "Gibt die Größe des Arrays zurück."
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Sets the navigation mesh for the region."
@@ -38101,6 +38291,11 @@ msgstr ""
"Gibt zurück, ob die Knochenauflage für den Bone an [code]bone_idx[/code] "
"deaktiviert ist."
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr "Logischer ODER-Operator ([code]oder[/code] oder [code]||[/code])."
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -38110,9 +38305,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -38130,9 +38332,16 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-#, fuzzy
-msgid "Returns the path from start to finish in global coordinates."
-msgstr "Gibt die Rotation in Radians zurück."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
+msgstr ""
#: doc/classes/NavigationAgent.xml
#, fuzzy
@@ -38148,11 +38357,24 @@ msgid ""
"system."
msgstr "Gibt das AnimationNode mit dem gegebenen Namen zurück."
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -38198,6 +38420,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -38210,7 +38438,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -38237,6 +38471,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -38301,9 +38542,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -38321,13 +38569,6 @@ msgid ""
msgstr "Gibt das AnimationNode mit dem gegebenen Namen zurück."
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
#, fuzzy
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr "Gibt die Anzahl der Spuren in der Animation zurück."
@@ -38348,6 +38589,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -38377,10 +38625,11 @@ msgid ""
msgstr ""
#: doc/classes/NavigationMesh.xml
+#, fuzzy
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
-msgstr ""
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
+msgstr "Gibt das Unternodemit dem angegebenen [code]Namen[/code] zurück."
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
msgid ""
@@ -38402,9 +38651,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -38418,14 +38667,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -38437,7 +38686,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -38466,13 +38715,7 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
-msgstr ""
-
-#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -38483,13 +38726,22 @@ msgstr "Wenn [code]true[/code], ist die Filterung aktiviert."
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"is within [member agent_max_climb] of a walkable neighbor."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml
+#, fuzzy
+msgid ""
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
+"Wenn der Wert [code]true[/code] ist, dann ist Tranzparenz für den Körper "
+"aktiviert. Siehe auch [member blend_mode]."
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -38508,7 +38760,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -38572,7 +38824,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -38594,13 +38846,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -38651,8 +38903,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -38670,8 +38922,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -38700,11 +38965,35 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
#, fuzzy
msgid "The [NavigationMesh] resource to use."
msgstr "Das [NavigationMeshGenerator] Singleton."
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
#, fuzzy
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr "Benachrichtigt, wenn eine Animation abgespielt wird."
@@ -38723,7 +39012,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -38765,7 +39056,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -38846,6 +39139,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -38882,6 +39183,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -38889,6 +39214,23 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+#, fuzzy
+msgid "The [NavigationPolygon] resource to use."
+msgstr "Das [NavigationMeshGenerator] Singleton."
+
#: doc/classes/NavigationServer.xml
#, fuzzy
msgid "Server interface for low-level 3D navigation access."
@@ -38899,11 +39241,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -38966,6 +39312,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -40732,7 +41084,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -40856,7 +41214,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -42857,8 +43215,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -43041,9 +43406,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -47191,7 +47556,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -47358,7 +47723,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -47421,7 +47786,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -47483,7 +47848,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -47537,7 +47902,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -47597,7 +47962,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -47654,7 +48019,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -49316,7 +49681,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -49561,6 +49935,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -49786,6 +50172,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -49994,6 +50572,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -50261,6 +51031,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -51765,7 +52578,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -52138,8 +52950,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -53957,6 +54770,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -54167,8 +54996,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
#, fuzzy
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -55711,7 +56540,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -57444,7 +58274,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -63679,6 +64514,11 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+#, fuzzy
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr "Wenn [code]true[/code], ist die Filterung aktiviert."
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -63785,6 +64625,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -64922,7 +65766,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -68342,8 +69191,8 @@ msgstr ""
#: doc/classes/Viewport.xml
#, fuzzy
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
"Gibt [code]true[/code] zurück wenn der Skript Bereich lädt, ansonsten "
"[code]false[/code]."
@@ -68789,12 +69638,16 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+#, fuzzy
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
+"Die Animationen werden während des Physikframes (d. h. [method Node."
+"_physics_process]) fortgesetzt."
#: doc/classes/VisibilityEnabler2D.xml
msgid "This enabler will stop [AnimatedSprite] nodes animations."
@@ -68833,6 +69686,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
#, fuzzy
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr "Gesendet wenn die Sichtbarkeit (versteckt/sichtbar) sich verändert."
@@ -72791,7 +73654,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -73663,6 +74526,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -76888,11 +77761,15 @@ msgid "Class that has everything pertaining to a world."
msgstr "Eine Klasse die alles für eine Welt mitbringt."
#: doc/classes/World.xml
+#, fuzzy
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
+"Eine Klasse die alles für eine 2D Welt mitbringt. Einen physikalischen Raum, "
+"ein visuelles Szenario und einen Bereich für Sounds. 2D Knotenpunkte "
+"registrieren ihre Resourcen in die aktuelle 2D Welt."
#: doc/classes/World.xml
msgid ""
@@ -76907,14 +77784,21 @@ msgid "The World's [Environment]."
msgstr "Das [Environment] der Welt."
#: doc/classes/World.xml
+#, fuzzy
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
"Das fallback_environment der Welt wird genutzt, sollte das [Environment] der "
"Welt nicht existieren oder nicht geladen werden können."
#: doc/classes/World.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
+msgstr "Gibt die Anzahl der Spuren in der Animation zurück."
+
+#: doc/classes/World.xml
msgid "The World's visual scenario."
msgstr "Das visuelle Szenario der Welt."
@@ -76927,10 +77811,11 @@ msgid "Class that has everything pertaining to a 2D world."
msgstr "Eine Klasse die alles für eine 2D Welt mitbringt."
#: doc/classes/World2D.xml
+#, fuzzy
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
"Eine Klasse die alles für eine 2D Welt mitbringt. Einen physikalischen Raum, "
"ein visuelles Szenario und einen Bereich für Sounds. 2D Knotenpunkte "
@@ -76952,6 +77837,12 @@ msgid ""
msgstr ""
#: doc/classes/World2D.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr "Gibt die Anzahl der Spuren in der Animation zurück."
+
+#: doc/classes/World2D.xml
msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
diff --git a/doc/translations/el.po b/doc/translations/el.po
index ffe896e14a..e19557ebb4 100644
--- a/doc/translations/el.po
+++ b/doc/translations/el.po
@@ -355,7 +355,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3387,6 +3387,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -3399,6 +3405,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -8376,7 +8388,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -8575,7 +8587,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -8592,10 +8607,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -8780,7 +8791,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -12373,7 +12386,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -13630,7 +13643,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -14098,7 +14111,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -14136,9 +14149,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -14157,8 +14170,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -14174,8 +14187,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -14266,9 +14279,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -19114,11 +19127,15 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
-msgstr ""
+#, fuzzy
+msgid "The [Curve] that is rendered onto the texture."
+msgstr "ΕπιστÏέφει το ημίτονο της παÏαμέτÏου."
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -19404,6 +19421,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
#, fuzzy
msgid "Returns the number of keys in the dictionary."
msgstr "ΕπιστÏέφει το υπόλοιπο των 2 διανυσμάτων."
@@ -21336,7 +21360,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -21344,9 +21368,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21357,9 +21395,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21472,11 +21519,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -23650,11 +23716,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -26122,7 +26188,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -26144,7 +26211,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -26952,6 +27020,12 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -27002,6 +27076,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -29394,7 +29472,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -29543,10 +29621,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -29740,24 +29814,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -29793,6 +29849,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -30100,8 +30174,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -30364,9 +30438,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -34677,9 +34751,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -35478,6 +35553,11 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+#, fuzzy
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr "ΕπιστÏέφει το ημίτονο της παÏαμέτÏου."
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -35500,10 +35580,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -35538,6 +35630,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -35547,11 +35645,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -35579,7 +35685,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35649,6 +35765,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Returns the map cell size."
@@ -35673,7 +35793,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35692,6 +35815,12 @@ msgstr "ΕπιστÏέφει το συνημίτονο της παÏαμέτÏο
msgid "Sets the map active."
msgstr "ΕπιστÏέφει το τόξο ημιτόνου της παÏαμέτÏου."
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -35707,15 +35836,61 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr "ΕπιστÏέφει το υπόλοιπο των 2 διανυσμάτων."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
+msgid "Returns the region's navigation layers."
+msgstr "ΕπιστÏέφει το ημίτονο της παÏαμέτÏου."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr "ΕπιστÏέφει το ημίτονο της παÏαμέτÏου."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr "ΕπιστÏέφει το ημίτονο της παÏαμέτÏου."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
msgid "Sets the map for the region."
msgstr "ΕπιστÏέφει το ημίτονο της παÏαμέτÏου."
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Sets the navigation mesh for the region."
@@ -35725,6 +35900,11 @@ msgstr "ΕπιστÏέφει την αντίθετη τιμή της παÏαμÎ
msgid "Sets the global transformation for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr "ΕπιστÏέφει το ημίτονο της παÏαμέτÏου."
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -35734,9 +35914,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -35754,7 +35941,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35770,11 +35965,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35816,6 +36024,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -35828,7 +36042,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35855,6 +36075,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -35917,9 +36144,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -35936,13 +36170,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
#, fuzzy
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr "ΕπιστÏέφει το ημίτονο της παÏαμέτÏου."
@@ -35963,6 +36190,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -35993,8 +36227,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36017,9 +36251,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36033,14 +36267,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36052,7 +36286,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36080,29 +36314,29 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
+msgid ""
+"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
+"is within [member agent_max_climb] of a walkable neighbor."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -36121,7 +36355,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -36184,7 +36418,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36206,13 +36440,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36262,8 +36496,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -36281,8 +36515,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -36311,10 +36558,34 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "The [NavigationMesh] resource to use."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -36331,7 +36602,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -36372,7 +36645,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -36453,6 +36728,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -36489,6 +36772,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -36496,6 +36803,22 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "The [NavigationPolygon] resource to use."
+msgstr ""
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -36505,11 +36828,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36571,6 +36898,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -38334,7 +38667,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -38458,7 +38797,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -40435,8 +40774,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -40619,9 +40965,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -44737,7 +45083,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44891,7 +45237,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44946,7 +45292,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44999,7 +45345,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45048,7 +45394,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45100,7 +45446,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45152,7 +45498,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -46791,7 +47137,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -47036,6 +47391,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -47261,6 +47628,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -47469,6 +48028,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -47736,6 +48487,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -49238,7 +50032,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -49590,8 +50383,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -51386,6 +52180,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -51595,8 +52405,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -53123,7 +53933,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -54844,7 +55655,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -60956,6 +61772,11 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+#, fuzzy
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr "ΕπιστÏέφει το συνημίτονο της παÏαμέτÏου."
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -61062,6 +61883,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -62193,7 +63018,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -65438,8 +66268,8 @@ msgstr ""
#: doc/classes/Viewport.xml
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
#: doc/classes/Viewport.xml
@@ -65876,11 +66706,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -65920,6 +66751,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -69814,7 +70655,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -70682,6 +71523,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -73881,8 +74732,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -73897,11 +74748,17 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
+msgstr "ΕπιστÏέφει το ημίτονο της παÏαμέτÏου."
+
+#: doc/classes/World.xml
msgid "The World's visual scenario."
msgstr ""
@@ -73916,8 +74773,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -73934,6 +74791,12 @@ msgid ""
msgstr ""
#: doc/classes/World2D.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr "ΕπιστÏέφει το ημίτονο της παÏαμέτÏου."
+
+#: doc/classes/World2D.xml
msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
diff --git a/doc/translations/es.po b/doc/translations/es.po
index 1fa0223e9b..4c4982ad59 100644
--- a/doc/translations/es.po
+++ b/doc/translations/es.po
@@ -34,12 +34,13 @@
# Francesco Santoro <fgsantoror20@gmail.com>, 2022.
# Jake-insane <jake0insane@gmail.com>, 2022.
# Luis Alberto Flores Baca <betofloresbaca@gmail.com>, 2022.
+# emnrx <emanuelermancia@gmail.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine class reference\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2022-04-25 15:12+0000\n"
-"Last-Translator: Ventura Pérez García <vetu@protonmail.com>\n"
+"PO-Revision-Date: 2022-06-16 18:58+0000\n"
+"Last-Translator: emnrx <emanuelermancia@gmail.com>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/"
"godot-class-reference/es/>\n"
"Language: es\n"
@@ -47,7 +48,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.12.1-dev\n"
+"X-Generator: Weblate 4.13-dev\n"
#: doc/tools/make_rst.py
msgid "Description"
@@ -525,7 +526,7 @@ msgstr ""
#, fuzzy
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -4433,6 +4434,15 @@ msgstr ""
"opcionalmente nombradas, capas de física 2D."
#: doc/classes/@GlobalScope.xml
+#, fuzzy
+msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+"Sugiere que una propiedad entera es una máscara de bits usando las, "
+"opcionalmente nombradas, capas de representación 2D."
+
+#: doc/classes/@GlobalScope.xml
msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
@@ -4449,6 +4459,15 @@ msgstr ""
"opcionalmente nombrada, capas fisicas 3D."
#: doc/classes/@GlobalScope.xml
+#, fuzzy
+msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+"Sugiere que una propiedad entera es una máscara de bits usando las, "
+"opcionalmente nombradas, capas de representación 2D."
+
+#: doc/classes/@GlobalScope.xml
msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
@@ -11064,7 +11083,7 @@ msgstr ""
"astar.connect_points(1,2, false)\n"
"[/codeblock]"
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -11356,8 +11375,16 @@ msgstr ""
"actualizados con los pesos dados."
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
-msgstr "Devuelve si hay una conexion/segmento entre los puntos dados."
+#, fuzzy
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
+msgstr ""
+"Devuelve si dos puntos dados estan directamente conectados por un segmento. "
+"Si [code]bidirectional[/code] es [code]false[/code], devuelve si el "
+"movimiento desde [code]id[/code] a [code]to_id[/code] es posible a traves "
+"del segmento."
#: doc/classes/AStar2D.xml
msgid ""
@@ -11382,10 +11409,6 @@ msgstr ""
"[/codeblock]"
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr "Elimina el segmento entre los puntos dados."
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -11640,7 +11663,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -16199,8 +16224,9 @@ msgstr ""
"siguiente carácter."
#: doc/classes/CanvasItem.xml
+#, fuzzy
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -16208,6 +16234,9 @@ msgid ""
"create an AntialiasedRegularPolygon2D node. That node relies on a texture "
"with custom mipmaps to perform antialiasing."
msgstr ""
+"Dibuja múltiples líneas paralelas con un [code]width[/code] uniforme y "
+"coloración segmento por segmento. Los colores asignados a los segmentos de "
+"línea coinciden por índice entre [code]points[/code] y [code]colors[/code]."
#: doc/classes/CanvasItem.xml
msgid ""
@@ -17838,7 +17867,7 @@ msgstr ""
"configurado."
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr "Devuelve el [RID] del objeto."
@@ -18475,7 +18504,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
"Construye un color a partir de un entero de 32 bits (cada byte representa un "
@@ -18534,12 +18563,13 @@ msgstr ""
"[/codeblock]"
#: doc/classes/Color.xml
+#, fuzzy
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
"Devuelve el color más contrastado.\n"
@@ -18566,12 +18596,13 @@ msgstr ""
"[/codeblock]"
#: doc/classes/Color.xml
+#, fuzzy
msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
"Construye un color a partir de un perfil de HSV. [code]h[/code], [code]s[/"
@@ -18594,8 +18625,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
"Devuelve el color invertido [code](1 - r, 1 - g, 1 - b, a)[/code].\n"
@@ -18740,15 +18771,16 @@ msgstr ""
"[/codeblock]"
#: doc/classes/Color.xml
+#, fuzzy
msgid ""
"Returns the color's HTML hexadecimal color string in ARGB format (ex: "
"[code]ff34f822[/code]).\n"
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
"Devuelve la cadena de color hexadecimal HTML del color en formato ARGB (ex: "
@@ -25059,12 +25091,16 @@ msgstr ""
"de dibujar curvas y/o guardarlas como archivos de imagen."
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
+#, fuzzy
+msgid "The [Curve] that is rendered onto the texture."
msgstr "La [code]curve[/code] renderizada en la textura."
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
-msgstr "El ancho de la textura."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
+msgstr ""
#: doc/classes/CylinderMesh.xml
msgid "Class representing a cylindrical [PrimitiveMesh]."
@@ -25497,6 +25533,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr "Devuelve la lista de claves en el [Dictionary]."
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
#, fuzzy
msgid "Returns the number of keys in the dictionary."
msgstr "Devuelve el número de archivos en este directorio."
@@ -28173,7 +28216,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
#, fuzzy
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -28183,13 +28226,24 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
-"Obtiene el estado de su editor de plugins. Se usa cuando se guarda la escena "
-"(así que el estado se mantiene al abrirla de nuevo) y para cambiar de "
-"pestaña (así que el estado puede ser restaurado cuando la pestaña vuelve)."
#: doc/classes/EditorPlugin.xml
msgid ""
@@ -28202,14 +28256,19 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
-"Consigue el diseño de la interfaz gráfica del plugin. Se utiliza para "
-"guardar la disposición del editor del proyecto cuando se llama a [method "
-"queue_save_layout] o se ha cambiado la disposición del editor (por ejemplo, "
-"cambiando la posición de un dock)."
#: doc/classes/EditorPlugin.xml
msgid ""
@@ -28350,13 +28409,31 @@ msgstr ""
"especialmente útil si tu plugin quiere usar raycast en la escena."
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
-msgstr "Restaurar el estado guardado por [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
+msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
-"Restaurar el diseño del plugin GUI guardado por [method get_window_layout]."
#: doc/classes/EditorPlugin.xml
msgid ""
@@ -31251,14 +31328,14 @@ msgstr ""
#: doc/classes/Environment.xml
#, fuzzy
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
"Desenfoque de 1×1 para el efecto de oclusión ambiental del espacio de la "
"pantalla."
#: doc/classes/Environment.xml
#, fuzzy
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
"No hay desenfoque para el efecto de oclusión ambiental del espacio de la "
"pantalla (más rápido)."
@@ -34510,12 +34587,14 @@ msgid "Gradient-filled texture."
msgstr "Textura llena de gradientes."
#: doc/classes/GradientTexture.xml
+#, fuzzy
msgid ""
"GradientTexture uses a [Gradient] to fill the texture data. The gradient "
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
"GradientTexture utiliza un [Gradient] para rellenar los datos de la textura. "
"El gradiente se rellenará de izquierda a derecha usando los colores "
@@ -34544,7 +34623,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
"GradientTexture utiliza un [Gradient] para rellenar los datos de la textura. "
"El gradiente se rellenará de izquierda a derecha usando los colores "
@@ -35582,6 +35662,15 @@ msgstr ""
"GridMap."
#: modules/gridmap/doc_classes/GridMap.xml
+#, fuzzy
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+"Si [code]true[/code], actualiza las animaciones en respuesta a las "
+"notificaciones relacionadas con el proceso."
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
"Si [code]true[/code], los elementos de la cuadrícula se centran en el eje X."
@@ -35647,6 +35736,10 @@ msgid "The assigned [MeshLibrary]."
msgstr "La [MeshLibrary] asignada."
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -38945,7 +39038,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -39128,10 +39221,6 @@ msgstr ""
"botones del ratón al mismo tiempo, los bits se suman."
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr "Devuelve el modo de ratón. Vea las constantes para más información."
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -39389,36 +39478,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr "Establece el modo del ratón. Vea las constantes para más información."
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-"Habilita o deshabilita la acumulación de eventos de entrada similares "
-"enviados por el sistema operativo. Cuando la acumulación de entrada está "
-"activada, todos los eventos de entrada generados durante una trama se "
-"fusionarán y se emitirán cuando la trama se termine de renderizar. Por lo "
-"tanto, esto limita el número de llamadas del método de entrada por segundo "
-"al FPS de renderización.\n"
-"La acumulación de entrada está habilitada por defecto. Se puede desactivar "
-"para obtener una entrada ligeramente más precisa/reactiva a costa de un "
-"mayor uso de la CPU. En aplicaciones donde se requiere dibujar líneas a mano "
-"alzada, la acumulación de entrada generalmente debe deshabilitarse mientras "
-"el usuario está dibujando la línea para obtener resultados que sigan de "
-"cerca la entrada real."
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -39467,6 +39526,38 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+#, fuzzy
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr "Establece el modo del ratón. Vea las constantes para más información."
+
+#: doc/classes/Input.xml
+#, fuzzy
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+"Habilita o deshabilita la acumulación de eventos de entrada similares "
+"enviados por el sistema operativo. Cuando la acumulación de entrada está "
+"activada, todos los eventos de entrada generados durante una trama se "
+"fusionarán y se emitirán cuando la trama se termine de renderizar. Por lo "
+"tanto, esto limita el número de llamadas del método de entrada por segundo "
+"al FPS de renderización.\n"
+"La acumulación de entrada está habilitada por defecto. Se puede desactivar "
+"para obtener una entrada ligeramente más precisa/reactiva a costa de un "
+"mayor uso de la CPU. En aplicaciones donde se requiere dibujar líneas a mano "
+"alzada, la acumulación de entrada generalmente debe deshabilitarse mientras "
+"el usuario está dibujando la línea para obtener resultados que sigan de "
+"cerca la entrada real."
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr "Se emite cuando se ha conectado o desconectado un dispositivo joypad."
@@ -39882,9 +39973,10 @@ msgstr ""
"code], se libera el estado del botón."
#: doc/classes/InputEventJoypadButton.xml
+#, fuzzy
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
"Representa la presión que el usuario ejerce sobre el botón con su dedo, si "
"el controlador lo soporta. Va de [code]0[/code] a [code]1[/code]."
@@ -40205,13 +40297,14 @@ msgid "Input event type for mouse motion events."
msgstr "Tipo de evento de entrada para los eventos de movimiento del ratón."
#: doc/classes/InputEventMouseMotion.xml
+#, fuzzy
msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -45864,9 +45957,10 @@ msgstr "Nodo utilizado para mostrar una [Mesh] en 2D."
#: doc/classes/MeshInstance2D.xml
#, fuzzy
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
"Nodo utilizado para mostrar una [Mesh] en 2D. Puede ser construido a partir "
"de un [Sprite2D] existente mediante una herramienta en la barra de "
@@ -46930,6 +47024,11 @@ msgstr ""
#: doc/classes/Navigation.xml
#, fuzzy
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr "Devuelve el [RID] de la forma enésima de un área."
+
+#: doc/classes/Navigation.xml
+#, fuzzy
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -46958,12 +47057,24 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
"Define qué dirección es hacia arriba. Por defecto, esto es [code](0, 1, 0)[/"
"code], que es la dirección \"arriba\" del mundo."
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr "Navegación 2D y nodo de búsqueda de caminos."
@@ -47008,6 +47119,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr "El modo de llamada a utilizar para las Call Method Tracks."
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
#, fuzzy
msgid "Server interface for low-level 2D navigation access."
@@ -47018,11 +47135,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -47055,7 +47180,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr "Devuelve [code]true[/code] si el script puede ser instanciado."
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -47127,6 +47262,13 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+#, fuzzy
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+"Obtiene la línea actual en el archivo analizado (actualmente no "
+"implementado)."
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Returns the map cell size."
@@ -47157,9 +47299,11 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-#, fuzzy
-msgid "Returns the navigation path to reach the destination from the origin."
-msgstr "Devuelve el polígono de navegación del tile."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
+msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
@@ -47177,6 +47321,13 @@ msgstr "Devuelve [code]true[/code] si la selección está activa."
msgid "Sets the map active."
msgstr "Detiene el temporizador."
+#: doc/classes/Navigation2DServer.xml
+#, fuzzy
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr "Devuelve la transformada aplicada a la malla de navegación del objeto."
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Set the map cell size used to weld the navigation mesh polygons."
@@ -47194,15 +47345,64 @@ msgstr "Crea un [Area2D]."
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+"Devuelve la proyección ortogonal de [code]point[/code] en un punto del plano."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr "Devuelve [code]true[/code] si existe la [code]signal[/code] dada."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
+msgid "Returns the region's navigation layers."
+msgstr "Devuelve la malla de navegación del objeto."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr "Devuelve [code]true[/code] si existe la [code]signal[/code] dada."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr ""
+"Coloca la [code]position[/code] para el punto con el [code]id[/code] dado."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
msgid "Sets the map for the region."
msgstr "Establece los metadatos del borde dado."
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Sets the navigation mesh for the region."
@@ -47213,6 +47413,12 @@ msgstr "Establece la malla de navegación del objeto."
msgid "Sets the global transformation for the region."
msgstr "Establece la matriz de transformación global del Viewport."
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr ""
+"Coloca la [code]position[/code] para el punto con el [code]id[/code] dado."
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -47222,9 +47428,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -47242,9 +47455,16 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-#, fuzzy
-msgid "Returns the path from start to finish in global coordinates."
-msgstr "Devuelve el RID del viewport del [VisualServer]."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
+msgstr ""
#: doc/classes/NavigationAgent.xml
#, fuzzy
@@ -47260,11 +47480,24 @@ msgid ""
"system."
msgstr "Devuelve el nodo animacion con el nombre dado."
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -47311,6 +47544,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -47323,9 +47562,14 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-#, fuzzy
-msgid "The agent height offset to match the navigation mesh height."
-msgstr "Devuelve el desplazamiento del polígono de navegación del tile."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
+msgstr ""
#: doc/classes/NavigationAgent.xml
msgid ""
@@ -47353,6 +47597,13 @@ msgstr "El valor máximo de luminosidad para la exposición automática."
msgid "The maximum speed that an agent can move."
msgstr "El valor máximo que puede alcanzar la curva."
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
#, fuzzy
msgid "The distance to search for other agents."
@@ -47418,9 +47669,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -47438,13 +47696,6 @@ msgid ""
msgstr "Devuelve el nodo animacion con el nombre dado."
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
#, fuzzy
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr "Devuelve el [RID] de la forma enésima de un área."
@@ -47465,6 +47716,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -47501,8 +47759,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
#, fuzzy
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
"Devuelve [code]true[/code] si el bit de la máscara de colisión dada está "
"configurado."
@@ -47533,9 +47791,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -47551,14 +47809,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -47571,7 +47829,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -47600,13 +47858,7 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
-msgstr ""
-
-#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -47617,13 +47869,22 @@ msgstr "Si [code]true[/code], se activan las pulsaciones de paso."
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"is within [member agent_max_climb] of a walkable neighbor."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml
+#, fuzzy
+msgid ""
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
+"Si [code]true[/code], las partículas emitirán una vez y luego se detendrán. "
+"Equivalente a [member GPUParticles.one_shot]."
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -47646,7 +47907,7 @@ msgstr "El modo de fondo. Ver [enum BGMode] para los posibles valores."
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -47713,7 +47974,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -47735,13 +47996,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -47792,8 +48053,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -47812,8 +48073,21 @@ msgstr "Nodo que instancia un [MultiMesh]."
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -47842,11 +48116,35 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
#, fuzzy
msgid "The [NavigationMesh] resource to use."
msgstr "El recurso [Mesh] para la instancia."
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
#, fuzzy
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr "Notifica cuando una animación comienza a reproducirse."
@@ -47865,7 +48163,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -47910,7 +48210,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -48028,6 +48330,14 @@ msgstr ""
"vértices."
#: doc/classes/NavigationPolygon.xml
+msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
#, fuzzy
msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
@@ -48079,6 +48389,31 @@ msgstr ""
"[method make_polygons_from_outlines] para que los polígonos se actualicen."
#: doc/classes/NavigationPolygonInstance.xml
+#, fuzzy
+msgid "A region of the 2D navigation map."
+msgstr "Establece la malla de navegación del objeto."
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -48086,6 +48421,23 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+#, fuzzy
+msgid "The [NavigationPolygon] resource to use."
+msgstr "El recurso [Mesh] para la instancia."
+
#: doc/classes/NavigationServer.xml
#, fuzzy
msgid "Server interface for low-level 3D navigation access."
@@ -48096,11 +48448,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -48167,6 +48523,12 @@ msgid "Bakes the navigation mesh."
msgstr "Establece la malla de navegación del objeto."
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
#, fuzzy
msgid "Control activation of this server."
msgstr "Traducción local de este nodo."
@@ -50730,8 +51092,14 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr "Rotación en grados, en relación con el padre del nodo."
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
-msgstr "La escala del nodo. Valor no escalado: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
+msgstr ""
#: doc/classes/Node2D.xml
msgid "Local [Transform2D]."
@@ -50940,7 +51308,7 @@ msgstr ""
#, fuzzy
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -53641,8 +54009,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -53858,6 +54233,7 @@ msgid ""
msgstr ""
#: doc/classes/OS.xml
+#, fuzzy
msgid ""
"Requests the OS to open a resource with the most appropriate program. For "
"example:\n"
@@ -53867,9 +54243,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -59346,6 +59722,7 @@ msgid "A pooled array of bytes."
msgstr "Un paquete [Array] de bytes."
#: doc/classes/PoolByteArray.xml
+#, fuzzy
msgid ""
"An array specifically designed to hold bytes. Optimized for memory usage, "
"does not fragment the memory.\n"
@@ -59356,7 +59733,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -59368,6 +59745,17 @@ msgid ""
"print(array) # [[123]] (PoolByteArray with 1 element inside an Array)\n"
"[/codeblock]"
msgstr ""
+"Un [Array] diseñado específicamente para mantener valores enteros de 32 "
+"bits. Empaqueta los datos de forma ajustada, por lo que ahorra memoria para "
+"los tamaños de arrays grandes.\n"
+"[b]Nota:[/b] Este tipo se pasa por valor y no por referencia.\n"
+"[b]Nota:[/b] Este tipo almacena enteros de 32 bits con signo, lo que "
+"significa que puede tomar valores en el intervalo [code][-2^31, 2^31 - 1][/"
+"code], es decir, [code][-2147483648, 2147483647][/code]. Exceder esos "
+"límites volvera los valores al minimo inicial. En comparación, [int] usa "
+"enteros de 64 bits con signo, que pueden contener valores mucho mayores. Si "
+"necesitas empaquetar los enteros de 64 bits de forma apretada, mira "
+"[PackedInt64Array]."
#: doc/classes/PoolByteArray.xml
#, fuzzy
@@ -59540,6 +59928,7 @@ msgid "A pooled array of [Color]s."
msgstr "Un paquete de [Array] de [Color]s."
#: doc/classes/PoolColorArray.xml
+#, fuzzy
msgid ""
"An array specifically designed to hold [Color]. Optimized for memory usage, "
"does not fragment the memory.\n"
@@ -59550,7 +59939,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -59563,6 +59952,17 @@ msgid ""
"inside an Array)\n"
"[/codeblock]"
msgstr ""
+"Un [Array] diseñado específicamente para mantener valores enteros de 32 "
+"bits. Empaqueta los datos de forma ajustada, por lo que ahorra memoria para "
+"los tamaños de arrays grandes.\n"
+"[b]Nota:[/b] Este tipo se pasa por valor y no por referencia.\n"
+"[b]Nota:[/b] Este tipo almacena enteros de 32 bits con signo, lo que "
+"significa que puede tomar valores en el intervalo [code][-2^31, 2^31 - 1][/"
+"code], es decir, [code][-2147483648, 2147483647][/code]. Exceder esos "
+"límites volvera los valores al minimo inicial. En comparación, [int] usa "
+"enteros de 64 bits con signo, que pueden contener valores mucho mayores. Si "
+"necesitas empaquetar los enteros de 64 bits de forma apretada, mira "
+"[PackedInt64Array]."
#: doc/classes/PoolColorArray.xml
#, fuzzy
@@ -59613,7 +60013,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -59677,6 +60077,7 @@ msgid "A pooled array of real numbers ([float])."
msgstr "Un paquete de [Array] de [Color]s."
#: doc/classes/PoolRealArray.xml
+#, fuzzy
msgid ""
"An array specifically designed to hold floating-point values. Optimized for "
"memory usage, does not fragment the memory.\n"
@@ -59687,7 +60088,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -59706,6 +60107,17 @@ msgid ""
"store [float]s will use roughly 6 times more memory compared to a "
"[PoolRealArray]."
msgstr ""
+"Un [Array] diseñado específicamente para mantener valores enteros de 32 "
+"bits. Empaqueta los datos de forma ajustada, por lo que ahorra memoria para "
+"los tamaños de arrays grandes.\n"
+"[b]Nota:[/b] Este tipo se pasa por valor y no por referencia.\n"
+"[b]Nota:[/b] Este tipo almacena enteros de 32 bits con signo, lo que "
+"significa que puede tomar valores en el intervalo [code][-2^31, 2^31 - 1][/"
+"code], es decir, [code][-2147483648, 2147483647][/code]. Exceder esos "
+"límites volvera los valores al minimo inicial. En comparación, [int] usa "
+"enteros de 64 bits con signo, que pueden contener valores mucho mayores. Si "
+"necesitas empaquetar los enteros de 64 bits de forma apretada, mira "
+"[PackedInt64Array]."
#: doc/classes/PoolRealArray.xml
#, fuzzy
@@ -59731,6 +60143,7 @@ msgid "A pooled array of [String]s."
msgstr "Un paquete de [Array] de [String]s."
#: doc/classes/PoolStringArray.xml
+#, fuzzy
msgid ""
"An array specifically designed to hold [String]s. Optimized for memory "
"usage, does not fragment the memory.\n"
@@ -59741,7 +60154,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -59753,6 +60166,17 @@ msgid ""
"print(array) # [[hello]] (PoolStringArray with 1 element inside an Array)\n"
"[/codeblock]"
msgstr ""
+"Un [Array] diseñado específicamente para mantener valores enteros de 32 "
+"bits. Empaqueta los datos de forma ajustada, por lo que ahorra memoria para "
+"los tamaños de arrays grandes.\n"
+"[b]Nota:[/b] Este tipo se pasa por valor y no por referencia.\n"
+"[b]Nota:[/b] Este tipo almacena enteros de 32 bits con signo, lo que "
+"significa que puede tomar valores en el intervalo [code][-2^31, 2^31 - 1][/"
+"code], es decir, [code][-2147483648, 2147483647][/code]. Exceder esos "
+"límites volvera los valores al minimo inicial. En comparación, [int] usa "
+"enteros de 64 bits con signo, que pueden contener valores mucho mayores. Si "
+"necesitas empaquetar los enteros de 64 bits de forma apretada, mira "
+"[PackedInt64Array]."
#: doc/classes/PoolStringArray.xml
#, fuzzy
@@ -59789,6 +60213,7 @@ msgid "A pooled array of [Vector2]s."
msgstr "Un empaquetado de [Array] de [Vector2]s."
#: doc/classes/PoolVector2Array.xml
+#, fuzzy
msgid ""
"An array specifically designed to hold [Vector2]. Optimized for memory "
"usage, does not fragment the memory.\n"
@@ -59799,7 +60224,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -59812,6 +60237,17 @@ msgid ""
"Array)\n"
"[/codeblock]"
msgstr ""
+"Un [Array] diseñado específicamente para mantener valores enteros de 32 "
+"bits. Empaqueta los datos de forma ajustada, por lo que ahorra memoria para "
+"los tamaños de arrays grandes.\n"
+"[b]Nota:[/b] Este tipo se pasa por valor y no por referencia.\n"
+"[b]Nota:[/b] Este tipo almacena enteros de 32 bits con signo, lo que "
+"significa que puede tomar valores en el intervalo [code][-2^31, 2^31 - 1][/"
+"code], es decir, [code][-2147483648, 2147483647][/code]. Exceder esos "
+"límites volvera los valores al minimo inicial. En comparación, [int] usa "
+"enteros de 64 bits con signo, que pueden contener valores mucho mayores. Si "
+"necesitas empaquetar los enteros de 64 bits de forma apretada, mira "
+"[PackedInt64Array]."
#: doc/classes/PoolVector2Array.xml doc/classes/TileMap.xml
#: doc/classes/TileSet.xml
@@ -59846,6 +60282,7 @@ msgid "A pooled array of [Vector3]."
msgstr "Un empaquetado [Array] de [Vector3]s."
#: doc/classes/PoolVector3Array.xml
+#, fuzzy
msgid ""
"An array specifically designed to hold [Vector3]. Optimized for memory "
"usage, does not fragment the memory.\n"
@@ -59856,7 +60293,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -59869,6 +60306,17 @@ msgid ""
"Array)\n"
"[/codeblock]"
msgstr ""
+"Un [Array] diseñado específicamente para mantener valores enteros de 32 "
+"bits. Empaqueta los datos de forma ajustada, por lo que ahorra memoria para "
+"los tamaños de arrays grandes.\n"
+"[b]Nota:[/b] Este tipo se pasa por valor y no por referencia.\n"
+"[b]Nota:[/b] Este tipo almacena enteros de 32 bits con signo, lo que "
+"significa que puede tomar valores en el intervalo [code][-2^31, 2^31 - 1][/"
+"code], es decir, [code][-2147483648, 2147483647][/code]. Exceder esos "
+"límites volvera los valores al minimo inicial. En comparación, [int] usa "
+"enteros de 64 bits con signo, que pueden contener valores mucho mayores. Si "
+"necesitas empaquetar los enteros de 64 bits de forma apretada, mira "
+"[PackedInt64Array]."
#: doc/classes/PoolVector3Array.xml
#, fuzzy
@@ -62051,9 +62499,17 @@ msgstr ""
"una función que devuelve [code]void[/code] a una variable."
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
-"Mensaje que se mostrará antes del retroceso cuando el motor se crashea."
#: doc/classes/ProjectSettings.xml
#, fuzzy
@@ -62367,6 +62823,18 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
#, fuzzy
msgid ""
"Search path for project-specific script templates. Godot will search for "
@@ -62691,6 +63159,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr "Retraso predeterminado para las sugerencias (en segundos)."
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr "Nombre opcional para la capa 1 de la física 2D."
@@ -62911,6 +63571,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr "Nombre opcional para la capa 9 del renderizado 2D."
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr "Nombre opcional para la capa 1 de la física 3D."
@@ -63206,6 +64058,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -64268,6 +65163,12 @@ msgid ""
"when it is set to [code]false[/code], i.e. there are problems with the "
"default method."
msgstr ""
+"Usa un método simplificado para generar datos CPV (Conjunto Potencialmente "
+"Visible). Los resultados pueden no ser precisos cuando más de un portal une "
+"habitaciones adyacentes.\n"
+"[b]Nota:[/b] Por lo general, solo deberías utilizar esta opción si "
+"encuentras errores al estar en [code]false[/code], por ej. cuando hay "
+"problemas con el método predeterminado."
#: doc/classes/ProjectSettings.xml
msgid ""
@@ -64994,7 +65895,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -65432,10 +66332,12 @@ msgid "Abstract base class for range-based controls."
msgstr "Clase base abstracta para controles basados en el rango."
#: doc/classes/Range.xml
+#, fuzzy
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
"Rango es una clase base para los nodos [Control] que cambian un [i]valor[/i] "
"real entre un [i]mínimo[/i] y un [i]máximo[/i], usando [i]paso[/i] y "
@@ -67919,6 +68821,26 @@ msgid "Makes text fill width."
msgstr "Hace que el texto se expanda para rellenar el ancho."
#: doc/classes/RichTextLabel.xml
+#, fuzzy
+msgid "Aligns top of the inline image to the top of the text."
+msgstr "La altura de la caja medida desde el centro de la caja."
+
+#: doc/classes/RichTextLabel.xml
+#, fuzzy
+msgid "Aligns center of the inline image to the center of the text."
+msgstr "Alinea a los niños con el centro del contenedor."
+
+#: doc/classes/RichTextLabel.xml
+#, fuzzy
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr "La altura de la caja medida desde el centro de la caja."
+
+#: doc/classes/RichTextLabel.xml
+#, fuzzy
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr "Alinea a los niños con el final del contenedor."
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr "Cada elemento de la lista tiene un marcador numérico."
@@ -68197,8 +69119,8 @@ msgstr "Bloquea el eje lineal o rotacional especificado."
#: doc/classes/RigidBody.xml
#, fuzzy
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -70131,7 +71053,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
"Un temporizador de un solo uso gestionado por el árbol de la escena, que "
"emite [signal timeout] al finalizar. Véase también [method SceneTree."
@@ -72217,8 +73140,13 @@ msgstr ""
"términos de ángulos YXZ-Euler en el formato (ángulo X, ángulo Y, ángulo Z)."
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
-msgstr "Parte de Escala de la transformación local."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
+msgstr ""
#: doc/classes/Spatial.xml
msgid "Local space [Transform] of this node, with respect to the parent node."
@@ -80040,6 +80968,11 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+#, fuzzy
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr "Si [code]true[/code], la animación nombrada existe."
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr "Si [code]true[/code], los UV de la celda serán recortados."
@@ -80189,6 +81122,10 @@ msgstr ""
"El modo de orientación de TileMap. Vea [enum Mode] para los posibles valores."
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -81569,13 +82506,15 @@ msgstr ""
"multiplicación de la matriz."
#: doc/classes/Transform2D.xml
-#, fuzzy
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
-"Escala la transformación por el factor de escala dado, usando la "
-"multiplicación de la matriz."
#: doc/classes/Transform2D.xml
#, fuzzy
@@ -85966,8 +86905,8 @@ msgstr ""
#: doc/classes/Viewport.xml
#, fuzzy
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
"Si [code]true[/code], el viewport utilizará el [World] definido en [member "
"world_3d]."
@@ -86522,11 +87461,14 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr "Este habilitador detendrá los nodos [GPUParticles2D]."
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+#, fuzzy
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr "Este habilitador detendrá la función _process del padre."
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+#, fuzzy
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr "Este habilitador detendrá la función del _physics_process del padre."
#: doc/classes/VisibilityEnabler2D.xml
@@ -86586,6 +87528,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr "El cuadro delimitador del VisibilityNotifier."
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
#, fuzzy
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -91666,7 +92618,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
"Copia el viewport a una región de la pantalla especificada por [code]rect[/"
@@ -92700,6 +93652,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr "La cantidad del shader se repite en el fotograma."
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr "La cantidad de superficie cambia en el fotograma."
@@ -96826,8 +97788,8 @@ msgstr "Clase que tiene todo lo que pertenece a un mundo."
#, fuzzy
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
"Clase que tiene todo lo que pertenece a un mundo. Un espacio físico, un "
"escenario visual y un espacio sonoro. Los nodos de Spatial registran sus "
@@ -96851,14 +97813,20 @@ msgstr "El [Environment] del World."
#: doc/classes/World.xml
#, fuzzy
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
"El fallback_environment del World3D se usará si el [Environment] de World3D "
"falla o falta."
#: doc/classes/World.xml
#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
+msgstr "Devuelve el [RID] de la forma enésima de un área."
+
+#: doc/classes/World.xml
+#, fuzzy
msgid "The World's visual scenario."
msgstr "El escenario visual de World."
@@ -96872,10 +97840,11 @@ msgid "Class that has everything pertaining to a 2D world."
msgstr "Clase que tiene todo lo que pertenece a un mundo 2D."
#: doc/classes/World2D.xml
+#, fuzzy
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
"Clase que tiene todo lo que pertenece a un mundo 2D. Un espacio físico, un "
"escenario visual y un espacio sonoro. Los nodos 2D registran sus recursos en "
@@ -96904,6 +97873,12 @@ msgstr ""
#: doc/classes/World2D.xml
#, fuzzy
msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr "Devuelve el [RID] de la forma enésima de un área."
+
+#: doc/classes/World2D.xml
+#, fuzzy
+msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
msgstr ""
diff --git a/doc/translations/fa.po b/doc/translations/fa.po
index 895a54a49e..ee4b608fbd 100644
--- a/doc/translations/fa.po
+++ b/doc/translations/fa.po
@@ -492,7 +492,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3811,6 +3811,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -3823,6 +3829,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -8798,7 +8810,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -8997,7 +9009,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -9014,10 +9029,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -9202,7 +9213,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -12788,7 +12801,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -14045,7 +14058,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -14513,7 +14526,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -14551,9 +14564,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -14572,8 +14585,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -14589,8 +14602,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -14681,9 +14694,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -19520,11 +19533,14 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
+msgid "The [Curve] that is rendered onto the texture."
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -19810,6 +19826,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
msgid "Returns the number of keys in the dictionary."
msgstr ""
@@ -21740,7 +21763,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -21748,9 +21771,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21761,9 +21798,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21876,11 +21922,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -24052,11 +24117,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -26518,7 +26583,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -26540,7 +26606,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -27346,6 +27413,12 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -27396,6 +27469,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -29786,7 +29863,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -29935,10 +30012,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -30132,24 +30205,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -30185,6 +30240,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -30492,8 +30565,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -30756,9 +30829,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -35064,9 +35137,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -35870,6 +35944,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr ""
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -35892,10 +35970,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -35930,6 +36020,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -35939,11 +36035,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -35971,7 +36075,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -36035,6 +36149,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Returns the map cell size."
msgstr ""
@@ -36058,7 +36176,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -36075,6 +36196,12 @@ msgstr ""
msgid "Sets the map active."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -36090,14 +36217,56 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the region's navigation layers."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the map for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the navigation mesh for the region."
msgstr ""
@@ -36106,6 +36275,10 @@ msgstr ""
msgid "Sets the global transformation for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -36115,9 +36288,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -36135,7 +36315,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -36150,11 +36338,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -36195,6 +36396,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -36207,7 +36414,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -36234,6 +36447,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -36296,9 +36516,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -36314,13 +36541,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr ""
@@ -36340,6 +36560,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -36370,8 +36597,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36393,9 +36620,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36409,14 +36636,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36428,7 +36655,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36456,29 +36683,29 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
+msgid ""
+"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
+"is within [member agent_max_climb] of a walkable neighbor."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -36497,7 +36724,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -36560,7 +36787,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36581,13 +36808,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36637,8 +36864,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -36655,8 +36882,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -36685,10 +36925,34 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "The [NavigationMesh] resource to use."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -36705,7 +36969,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -36745,7 +37011,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -36825,6 +37093,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -36861,6 +37137,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -36868,6 +37168,22 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "The [NavigationPolygon] resource to use."
+msgstr ""
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -36877,11 +37193,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36939,6 +37259,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -38702,7 +39028,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -38826,7 +39158,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -40795,8 +41127,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -40979,9 +41318,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -45103,7 +45442,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45257,7 +45596,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45312,7 +45651,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45365,7 +45704,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45414,7 +45753,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45466,7 +45805,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45518,7 +45857,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -47154,7 +47493,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -47399,6 +47747,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -47624,6 +47984,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -47832,6 +48384,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -48099,6 +48843,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -49601,7 +50388,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -49957,8 +50743,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -51751,6 +52538,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -51960,8 +52763,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -53488,7 +54291,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -55209,7 +56013,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -61310,6 +62119,10 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -61416,6 +62229,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -62547,7 +63364,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -65780,8 +66602,8 @@ msgstr ""
#: doc/classes/Viewport.xml
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
#: doc/classes/Viewport.xml
@@ -66218,11 +67040,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -66262,6 +67085,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -70139,7 +70972,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -71007,6 +71840,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -74203,8 +75046,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -74219,8 +75062,13 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
+msgstr ""
+
+#: doc/classes/World.xml
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
msgstr ""
#: doc/classes/World.xml
@@ -74238,8 +75086,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -74257,6 +75105,11 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr ""
+
+#: doc/classes/World2D.xml
+msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
msgstr ""
diff --git a/doc/translations/fi.po b/doc/translations/fi.po
index 4f165869ff..108f9f7780 100644
--- a/doc/translations/fi.po
+++ b/doc/translations/fi.po
@@ -422,7 +422,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3454,6 +3454,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -3466,6 +3472,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -8449,7 +8461,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -8648,7 +8660,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -8665,10 +8680,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -8853,7 +8864,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -12448,7 +12461,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -13705,7 +13718,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -14174,7 +14187,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -14212,9 +14225,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -14233,8 +14246,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -14250,8 +14263,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -14342,9 +14355,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -19190,11 +19203,15 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
-msgstr ""
+#, fuzzy
+msgid "The [Curve] that is rendered onto the texture."
+msgstr "Palauttaa parametrin sinin."
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -19480,6 +19497,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
#, fuzzy
msgid "Returns the number of keys in the dictionary."
msgstr "Palauttaa kahden vektorin jäännöksen."
@@ -21412,7 +21436,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -21420,9 +21444,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21433,9 +21471,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21548,11 +21595,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -23726,11 +23792,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -26199,7 +26265,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -26221,7 +26288,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -27035,6 +27103,12 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -27085,6 +27159,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -29477,7 +29555,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -29626,10 +29704,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -29823,24 +29897,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -29876,6 +29932,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -30183,8 +30257,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -30447,9 +30521,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -34761,9 +34835,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -35562,6 +35637,11 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+#, fuzzy
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr "Palauttaa parametrin sinin."
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -35584,10 +35664,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -35622,6 +35714,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -35631,11 +35729,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -35663,7 +35769,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35733,6 +35849,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Returns the map cell size."
@@ -35757,7 +35877,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35776,6 +35899,12 @@ msgstr "Palauttaa parametrin kosinin."
msgid "Sets the map active."
msgstr "Palauttaa parametrin arkussinin."
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -35791,15 +35920,61 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr "Laskee kahden vektorin ristitulon."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
+msgid "Returns the region's navigation layers."
+msgstr "Palauttaa parametrin sinin."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr "Laskee kahden vektorin ristitulon."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr "Laskee kahden vektorin ristitulon."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
msgid "Sets the map for the region."
msgstr "Palauttaa parametrin sinin."
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Sets the navigation mesh for the region."
@@ -35810,6 +35985,11 @@ msgstr "Palauttaa parametrin vasta-arvon."
msgid "Sets the global transformation for the region."
msgstr "Laskee kahden vektorin ristitulon."
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr "Laskee kahden vektorin ristitulon."
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -35819,9 +35999,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -35839,7 +36026,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35855,11 +36050,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35901,6 +36109,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -35913,7 +36127,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35940,6 +36160,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -36002,9 +36229,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -36021,13 +36255,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
#, fuzzy
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr "Palauttaa parametrin sinin."
@@ -36048,6 +36275,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -36078,8 +36312,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36102,9 +36336,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36118,14 +36352,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36137,7 +36371,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36165,29 +36399,29 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
+msgid ""
+"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
+"is within [member agent_max_climb] of a walkable neighbor."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -36206,7 +36440,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -36269,7 +36503,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36291,13 +36525,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36347,8 +36581,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -36366,8 +36600,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -36396,10 +36643,34 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "The [NavigationMesh] resource to use."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -36416,7 +36687,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -36457,7 +36730,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -36538,6 +36813,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -36574,6 +36857,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -36581,6 +36888,22 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "The [NavigationPolygon] resource to use."
+msgstr ""
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -36590,11 +36913,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36656,6 +36983,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -38419,7 +38752,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -38543,7 +38882,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -40520,8 +40859,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -40704,9 +41050,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -44822,7 +45168,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44976,7 +45322,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45031,7 +45377,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45084,7 +45430,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45133,7 +45479,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45185,7 +45531,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45237,7 +45583,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -46876,7 +47222,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -47121,6 +47476,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -47346,6 +47713,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -47554,6 +48113,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -47821,6 +48572,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -49323,7 +50117,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -49675,8 +50468,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -51471,6 +52265,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -51680,8 +52490,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -53208,7 +54018,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -54930,7 +55741,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -61046,6 +61862,11 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+#, fuzzy
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr "Palauttaa parametrin kosinin."
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -61152,6 +61973,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -62283,7 +63108,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -65531,8 +66361,8 @@ msgstr ""
#: doc/classes/Viewport.xml
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
#: doc/classes/Viewport.xml
@@ -65969,11 +66799,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -66013,6 +66844,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -69909,7 +70750,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -70777,6 +71618,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -73978,8 +74829,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -73994,11 +74845,17 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
+msgstr "Palauttaa parametrin sinin."
+
+#: doc/classes/World.xml
msgid "The World's visual scenario."
msgstr ""
@@ -74013,8 +74870,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -74031,6 +74888,12 @@ msgid ""
msgstr ""
#: doc/classes/World2D.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr "Palauttaa parametrin sinin."
+
+#: doc/classes/World2D.xml
msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
diff --git a/doc/translations/fil.po b/doc/translations/fil.po
index 04cc07a298..d34766797c 100644
--- a/doc/translations/fil.po
+++ b/doc/translations/fil.po
@@ -356,7 +356,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3388,6 +3388,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -3400,6 +3406,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -8375,7 +8387,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -8574,7 +8586,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -8591,10 +8606,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -8779,7 +8790,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -12365,7 +12378,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -13622,7 +13635,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -14090,7 +14103,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -14128,9 +14141,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -14149,8 +14162,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -14166,8 +14179,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -14258,9 +14271,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -19097,11 +19110,14 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
+msgid "The [Curve] that is rendered onto the texture."
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -19387,6 +19403,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
msgid "Returns the number of keys in the dictionary."
msgstr ""
@@ -21317,7 +21340,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -21325,9 +21348,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21338,9 +21375,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21453,11 +21499,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -23629,11 +23694,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -26095,7 +26160,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -26117,7 +26183,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -26923,6 +26990,12 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -26973,6 +27046,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -29363,7 +29440,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -29512,10 +29589,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -29709,24 +29782,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -29762,6 +29817,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -30069,8 +30142,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -30333,9 +30406,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -34641,9 +34714,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -35441,6 +35515,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr ""
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -35463,10 +35541,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -35501,6 +35591,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -35510,11 +35606,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -35542,7 +35646,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35606,6 +35720,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Returns the map cell size."
msgstr ""
@@ -35629,7 +35747,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35646,6 +35767,12 @@ msgstr ""
msgid "Sets the map active."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -35661,14 +35788,56 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the region's navigation layers."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the map for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the navigation mesh for the region."
msgstr ""
@@ -35677,6 +35846,10 @@ msgstr ""
msgid "Sets the global transformation for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -35686,9 +35859,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -35706,7 +35886,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35721,11 +35909,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35766,6 +35967,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -35778,7 +35985,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35805,6 +36018,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -35867,9 +36087,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -35885,13 +36112,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr ""
@@ -35911,6 +36131,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -35941,8 +36168,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -35964,9 +36191,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -35980,14 +36207,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -35999,7 +36226,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36027,29 +36254,29 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
+msgid ""
+"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
+"is within [member agent_max_climb] of a walkable neighbor."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -36068,7 +36295,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -36131,7 +36358,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36152,13 +36379,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36208,8 +36435,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -36226,8 +36453,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -36256,10 +36496,34 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "The [NavigationMesh] resource to use."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -36276,7 +36540,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -36316,7 +36582,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -36396,6 +36664,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -36432,6 +36708,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -36439,6 +36739,22 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "The [NavigationPolygon] resource to use."
+msgstr ""
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -36448,11 +36764,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36510,6 +36830,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -38273,7 +38599,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -38397,7 +38729,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -40366,8 +40698,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -40550,9 +40889,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -44662,7 +45001,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44816,7 +45155,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44871,7 +45210,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44924,7 +45263,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44973,7 +45312,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45025,7 +45364,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45077,7 +45416,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -46713,7 +47052,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -46958,6 +47306,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -47183,6 +47543,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -47391,6 +47943,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -47658,6 +48402,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -49160,7 +49947,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -49512,8 +50298,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -51306,6 +52093,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -51515,8 +52318,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -53043,7 +53846,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -54764,7 +55568,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -60865,6 +61674,10 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -60971,6 +61784,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -62102,7 +62919,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -65335,8 +66157,8 @@ msgstr ""
#: doc/classes/Viewport.xml
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
#: doc/classes/Viewport.xml
@@ -65773,11 +66595,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -65817,6 +66640,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -69694,7 +70527,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -70562,6 +71395,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -73758,8 +74601,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -73774,8 +74617,13 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
+msgstr ""
+
+#: doc/classes/World.xml
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
msgstr ""
#: doc/classes/World.xml
@@ -73793,8 +74641,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -73812,6 +74660,11 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr ""
+
+#: doc/classes/World2D.xml
+msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
msgstr ""
diff --git a/doc/translations/fr.po b/doc/translations/fr.po
index 96010072b7..98f4921109 100644
--- a/doc/translations/fr.po
+++ b/doc/translations/fr.po
@@ -61,7 +61,7 @@ msgstr ""
"Project-Id-Version: Godot Engine class reference\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-05-31 22:35+0000\n"
+"PO-Revision-Date: 2022-06-19 11:54+0000\n"
"Last-Translator: Maxime Leroy <lisacintosh@gmail.com>\n"
"Language-Team: French <https://hosted.weblate.org/projects/godot-engine/"
"godot-class-reference/fr/>\n"
@@ -70,7 +70,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 4.13-dev\n"
+"X-Generator: Weblate 4.13.1-dev\n"
#: doc/tools/make_rst.py
msgid "Description"
@@ -548,9 +548,10 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
+#, fuzzy
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3881,9 +3882,8 @@ msgid "Gamepad DPad right."
msgstr "DPad droite de la manette."
#: doc/classes/@GlobalScope.xml
-#, fuzzy
msgid "Gamepad SDL guide button."
-msgstr "Bouton guide du contrôleur de jeu SDL."
+msgstr "Bouton guide de la manette SDL."
#: doc/classes/@GlobalScope.xml
msgid "Gamepad SDL miscellaneous button."
@@ -4405,6 +4405,15 @@ msgid ""
"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
+"Indique qu'une propriété d'un entier, un flottant ou une chaine de "
+"caractères est une valeur énumérée à choisir depuis une liste spécifiée par "
+"l'indicateur.\n"
+"Cet indicateur est une liste séparée par des virgules de noms tels que "
+"[code]\"Bonjour,Salut,Autre\"[/code]. Pour les propriétés d'entiers et de "
+"flottants, le premier nom de la liste a valeur 0, le suivant 1, et ainsi de "
+"suite. Les valeurs explicites peuvent également être spécifiées en ajoutant "
+"[code]:integer[/code] au nom, par ex. [code]\"Zéro,Un,Trois:3,Quatre,"
+"Six:6\"[/code]."
#: doc/classes/@GlobalScope.xml
msgid ""
@@ -4414,6 +4423,11 @@ msgid ""
"arbitrary values and can be empty. The list of values serves to suggest "
"possible values."
msgstr ""
+"Indique qu'une propriété peut être une valeur parmi une liste spécifiée via "
+"une chaîne de caractères telle que [code]\"Bonjour,Salut,Autre\"[/code].\n"
+"Contrairement à [constant PROPERTY_HINT_ENUM] une propriété accepte toujours "
+"des valeurs arbitraires et peut être vide. La liste des valeurs permet donc "
+"de suggérer des valeurs possibles."
#: doc/classes/@GlobalScope.xml
msgid ""
@@ -4458,6 +4472,15 @@ msgstr ""
"les couches de physique 2D optionnellement nommées."
#: doc/classes/@GlobalScope.xml
+#, fuzzy
+msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+"Indique qu'une propriété nombre entier est un masque de bits utilisant les "
+"couches de rendu 2D optionnellement nommées."
+
+#: doc/classes/@GlobalScope.xml
msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
@@ -4474,6 +4497,15 @@ msgstr ""
"couches de physique 3D optionnellement nommées."
#: doc/classes/@GlobalScope.xml
+#, fuzzy
+msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+"Indique qu'une propriété nombre entier est un masque de bits utilisant les "
+"couches de rendu 2D optionnellement nommées."
+
+#: doc/classes/@GlobalScope.xml
msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
@@ -4943,6 +4975,15 @@ msgid ""
"var box2 = box.expand(Vector3(0, -1, 2))\n"
"[/codeblock]"
msgstr ""
+"Retourne une copie de ce [AABB] aggrandi pour inclure le point donné.\n"
+"[b]Exemple :[/b]\n"
+"[codeblock]\n"
+"# position -(3, 2, 0,) taille (1, 1, 1)\n"
+"var box = AABB(Vector3(-3, 2, 0), Vector3(1, 1, 1))\n"
+"# position -(3, -1, 0,) taille (3, 4, 2,), il contient maintenant l'ABB "
+"original et le point Vector3(0, -1, 2)\n"
+"var box2 = box.expand(Vector3(0, -1, 2))\n"
+"/[codeblock]"
#: doc/classes/AABB.xml
msgid "Returns the volume of the [AABB]."
@@ -4953,6 +4994,8 @@ msgid ""
"Returns the center of the [AABB], which is equal to [member position] + "
"([member size] / 2)."
msgstr ""
+"Retourne le centre du [AABB], qui est égal à [member position] + ([member "
+"size] / 2)."
#: doc/classes/AABB.xml
msgid "Gets the position of the 8 endpoints of the [AABB] in space."
@@ -5134,6 +5177,10 @@ msgid ""
"may cause a crash. If you wish to hide it or any of its children, use their "
"[member CanvasItem.visible] property."
msgstr ""
+"Retourne le label utilisé pour le texte intégré.\n"
+"[b]Avertissement :[/b] Il s'agit d'un nœud interne nécessaire, le retirer et "
+"le libérer peut causer un plantage. Si vous voulez le cacher lui ou l'un de "
+"ses enfants, utilisez plutôt [membre CanvasItem.visible]."
#: doc/classes/AcceptDialog.xml
msgid ""
@@ -5142,6 +5189,10 @@ msgid ""
"may cause a crash. If you wish to hide it or any of its children, use their "
"[member CanvasItem.visible] property."
msgstr ""
+"Retourne l'instance du [Button] \"OK\".\n"
+"[b]Avertissement :[/b] Il s'agit d'un nœud interne nécessaire, le retirer et "
+"le libérer peut causer un plantage. Si vous voulez le cacher lui ou l'un de "
+"ses enfants, utilisez plutôt [membre CanvasItem.visible]."
#: doc/classes/AcceptDialog.xml
msgid ""
@@ -5372,10 +5423,22 @@ msgid ""
"code] will make it so the [code]run[/code] animation uses normal and "
"specular maps."
msgstr ""
+"[AnimatedSprite] est semblable au nœud [Sprite], sauf qu'il contient "
+"plusieurs textures comme des trames d'animation. Les animations sont créées "
+"à l'aide d'une ressource [SpriteFrames] qui vous permet d'importer des "
+"fichiers d'image (ou un dossier contenant ces fichiers) pour fournir les "
+"trames d'animation pour le sprite. La ressource [SpriteFrames] peut être "
+"configurée dans l'éditeur via le panneau de fond SpriteFrames.\n"
+"[b]Note :[/b] Vous pouvez associer un ensemble de cartes normales ou "
+"speculaires en créant des ressources supplémentaires [SpriteFrames] avec un "
+"suffixe [code]_normal[/code] ou [code]_specular[/code]. Par exemple, avoir 3 "
+"[SpriteFrames] ressources [code]run[/code], [code]run_normal[/code], et "
+"[code]run_specular[/code] le fera ainsi l'animation [code]run[/code] utilise "
+"des cartes normales et speculaires."
#: doc/classes/AnimatedSprite.xml doc/classes/AnimationPlayer.xml
msgid "2D Sprite animation"
-msgstr ""
+msgstr "Animation Sprite 2D"
#: doc/classes/AnimatedSprite.xml doc/classes/Area2D.xml
#: doc/classes/AudioStreamPlayer.xml doc/classes/Button.xml
@@ -5403,13 +5466,12 @@ msgstr ""
"Arrête l'animation actuelle (ne remit pas à zéro le compteur de trames)."
#: doc/classes/AnimatedSprite.xml
-#, fuzzy
msgid ""
"The current animation from the [member frames] resource. If this value "
"changes, the [code]frame[/code] counter is reset."
msgstr ""
-"L'animation actuelle de la ressource [code]frames[/code]. S'il y a un "
-"changement dans la valeur, le compteur [code]frame[/code] est remis à zéro."
+"L'animation actuelle de la ressource [member frames]. Si cette valeur "
+"change, le compteur [code]frame[/code] est remis à zéro."
#: doc/classes/AnimatedSprite.xml doc/classes/SpriteBase3D.xml
msgid "If [code]true[/code], texture will be centered."
@@ -5437,6 +5499,9 @@ msgid ""
"option to load, edit, clear, make unique and save the states of the "
"[SpriteFrames] resource."
msgstr ""
+"La ressource [SpriteFrames] contenant les animations. Vous permet de "
+"charger, modifier, effacer, rendre unique et sauvegarder les états de la "
+"ressource [SpriteFrames]."
#: doc/classes/AnimatedSprite.xml doc/classes/Sprite.xml
#: doc/classes/SpriteBase3D.xml
@@ -5656,14 +5721,13 @@ msgstr ""
"d'où c'était pausé quand cette propriété est mise à [code]false[/code]."
#: doc/classes/AnimatedTexture.xml
-#, fuzzy
msgid ""
"The maximum number of frames supported by [AnimatedTexture]. If you need "
"more frames in your animation, use [AnimationPlayer] or [AnimatedSprite]."
msgstr ""
"Le nombre maximum de trames supporté par [AnimatedTexture]. Si vous avez "
"besoin de plus de trames dans votre animation, utilisez [AnimationPlayer] ou "
-"[AnimatedSprite2D]."
+"[AnimatedSprite]."
#: doc/classes/Animation.xml
msgid "Contains data used to animate everything in the engine."
@@ -6417,7 +6481,6 @@ msgid "Adds or removes a path for the filter."
msgstr "Ajoute ou supprime un chemin pour le filtre."
#: doc/classes/AnimationNode.xml
-#, fuzzy
msgid ""
"Sets a custom parameter. These are used as local memory, because resources "
"can be reused across the tree or scenes."
@@ -6542,7 +6605,7 @@ msgstr "AnimationTree"
#: doc/classes/Quat.xml doc/classes/Skeleton.xml doc/classes/SpotLight.xml
#: doc/classes/StaticBody.xml doc/classes/WorldEnvironment.xml
msgid "Third Person Shooter Demo"
-msgstr ""
+msgstr "Démo de tir à la troisième personne"
#: doc/classes/AnimationNodeAnimation.xml
msgid "Input animation to use in an [AnimationNodeBlendTree]."
@@ -6567,7 +6630,7 @@ msgstr ""
#: doc/classes/MeshInstance.xml doc/classes/MeshLibrary.xml
#: doc/classes/ProjectSettings.xml doc/classes/Transform.xml
msgid "3D Platformer Demo"
-msgstr ""
+msgstr "Démo de jeu de plateforme en 3D"
#: doc/classes/AnimationNodeAnimation.xml
msgid ""
@@ -6880,12 +6943,16 @@ msgid ""
"The blend space plays the animation of the node the blending position is "
"closest to. Useful for frame-by-frame 2D animations."
msgstr ""
+"L'espace de mélange joue l'animation du nœud la position de mélange le plus "
+"proche. Utilisable pour les animations 2D trame par trame."
#: doc/classes/AnimationNodeBlendSpace2D.xml
msgid ""
"Similar to [constant BLEND_MODE_DISCRETE], but starts the new animation at "
"the last animation's playback position."
msgstr ""
+"Semblable à [constant BLEND_MODE_DISCRETE], mais commence la nouvelle "
+"animation à la dernière position de lecture de l'animation suivante."
#: doc/classes/AnimationNodeBlendTree.xml
msgid "[AnimationTree] node resource that contains many blend type nodes."
@@ -6899,18 +6966,27 @@ msgid ""
"An [AnimationNodeOutput] node named [code]output[/code] is created by "
"default."
msgstr ""
+"Ce nœud peut contenir une sous-arborescence d'autres nœuds de type "
+"mélangeur, tels que les [AnimationNodeTransition], [AnimationNodeBlend2], "
+"[AnimationNodeBlend3], [AnimationNodeOneShot], etc. C'est l'une des racines "
+"les plus couramment utilisées.\n"
+"Un nœud [AnimationNodeOutput] nommé [code]output[/code] est créé par défaut."
#: doc/classes/AnimationNodeBlendTree.xml
msgid ""
"Adds an [AnimationNode] at the given [code]position[/code]. The [code]name[/"
"code] is used to identify the created sub-node later."
msgstr ""
+"Ajoute un [AnimationNode] à la [code]position[/code] donnée. Le nom "
+"[code]name[/code] est utilisé pour identifier le sous-node créé plus tard."
#: doc/classes/AnimationNodeBlendTree.xml
msgid ""
"Connects the output of an [AnimationNode] as input for another "
"[AnimationNode], at the input port specified by [code]input_index[/code]."
msgstr ""
+"Connecte la sortie d'un [AnimationNode] à l'entrée d'un autre "
+"[AnimationNode], au port d'entrée spécifié par [code]input_index[/code]."
#: doc/classes/AnimationNodeBlendTree.xml
msgid "Disconnects the node connected to the specified input."
@@ -6982,6 +7058,9 @@ msgid ""
"sub-animation and return once it finishes. Blend times for fading in and out "
"can be customized, as well as filters."
msgstr ""
+"Une ressource à ajouter à un [AnimationNodeBlendTree]. Ce nœud exécutera une "
+"sous-animation et retournera quand il aura fini. Les temps de foudu entrant "
+"et sortant peuvent être personnalisés, ainsi que les filtres."
#: doc/classes/AnimationNodeOneShot.xml
msgid ""
@@ -7070,6 +7149,8 @@ msgstr "Retourne le nom du nœud d'animation donné."
#: doc/classes/AnimationNodeStateMachine.xml
msgid "Returns the given node's coordinates. Used for display in the editor."
msgstr ""
+"Retourne les coordonnées du node donnée. Utilisé pour l'affichage dans "
+"l'éditeur."
#: doc/classes/AnimationNodeStateMachine.xml
msgid "Returns the given transition."
@@ -7095,6 +7176,7 @@ msgstr "Retourne [code]true[/code] si le graphe contient le nœud spécifié."
msgid ""
"Returns [code]true[/code] if there is a transition between the given nodes."
msgstr ""
+"Retourne [code]true[/code] s'il y a une transition entre les nœuds spécifiés."
#: doc/classes/AnimationNodeStateMachine.xml
msgid "Deletes the given node from the graph."
@@ -7207,12 +7289,24 @@ msgid ""
"(linear_velocity.x == 0)\n"
"[/codeblock]"
msgstr ""
+"Active l'avance automatique lorsque cette condition est définie. Le nom "
+"fourni deviendra un paramètre booléen pour le [AnimationTree] qui peut être "
+"contrôlé à partir du code (voir [url=$DOCS_URL/tutorials/animation/tree."
+"html#controlling-from-code][/url]). Par exemple, si [membre AnimationTree."
+"tree_root] est un [AnimationNodeStateMachine] et que [member "
+"advance_condition] est définit à [code]\"idle\"[/code] :\n"
+"[codeblock]\n"
+"$animation_tree[\"parameters/conditions/idle\"] = is_on_floor and "
+"(linear_velocity.x == 0)\n"
+"[/codeblock]"
#: doc/classes/AnimationNodeStateMachineTransition.xml
msgid ""
"Turn on the transition automatically when this state is reached. This works "
"best with [constant SWITCH_MODE_AT_END]."
msgstr ""
+"Active la transition automatiquement lorsque cet état est atteint. Cela "
+"fonctionne mieux avec [constant SWITCH_MODE_AT_END]."
#: doc/classes/AnimationNodeStateMachineTransition.xml
msgid ""
@@ -7228,6 +7322,9 @@ msgid ""
"via [method AnimationNodeStateMachinePlayback.travel] or [member "
"auto_advance]."
msgstr ""
+"Les transitions les moins prioritaires sont préférées lorsque vous voyagez à "
+"travers l'arborescence via [method AnimationNodeStateMachinePlayback.travel] "
+"ou [membre auto_advance]."
#: doc/classes/AnimationNodeStateMachineTransition.xml
msgid "The transition type."
@@ -7246,18 +7343,24 @@ msgid ""
"Switch to the next state immediately. The current state will end and blend "
"into the beginning of the new one."
msgstr ""
+"Passe à l'état suivant immédiatement. L'état actuel se terminera et se "
+"fondra au début du nouveau."
#: doc/classes/AnimationNodeStateMachineTransition.xml
msgid ""
"Switch to the next state immediately, but will seek the new state to the "
"playback position of the old state."
msgstr ""
+"Passe immédiatement à l'état suivant, mais cherchera le nouvel état à la "
+"position de lecture de l'ancien état."
#: doc/classes/AnimationNodeStateMachineTransition.xml
msgid ""
"Wait for the current state playback to end, then switch to the beginning of "
"the next state animation."
msgstr ""
+"Attend que la lecture de l'état actuelle se termine, puis passe au début de "
+"la prochaine animation de l'état."
#: doc/classes/AnimationNodeTimeScale.xml
msgid "A time-scaling animation node to be used with [AnimationTree]."
@@ -7269,6 +7372,8 @@ msgid ""
"Allows scaling the speed of the animation (or reversing it) in any children "
"nodes. Setting it to 0 will pause the animation."
msgstr ""
+"Permet de changer la vitesse de l'animation (ou de l'inverser) dans "
+"n'importe quel nœud enfant. Définir cette valeur à 0 arrêtera l'animation."
#: doc/classes/AnimationNodeTimeSeek.xml
msgid "A time-seeking animation node to be used with [AnimationTree]."
@@ -7296,6 +7401,23 @@ msgid ""
"animation_tree[\"parameters/Seek/seek_position\"] = 12.0\n"
"[/codeblock]"
msgstr ""
+"Ce nœud peut être utilisé pour avancer la lecture de n'importe quel autre "
+"nœud enfant du graphe d'animation. Utilisez ce type de nœud pour jouer une "
+"[Animation] depuis le début ou à une certaine position dans le "
+"[AnimationNodeBlendTree]. Après avoir défini le temps et changé la lecture "
+"de l'animation, le nœud s'arrêtera automatiquement à la trame suivante en "
+"définissant sa [code]seek_position[/code] à la valeur [code]-1.0[/code].\n"
+"[codeblock]\n"
+"# Jouer l'animation enfant depuis le début.\n"
+"animation_tree.set(\"parameters/Seek/seek_position\", 0.0)\n"
+"# Syntaxe alternative (avec le même résultat qu'au-dessus).\n"
+"animation_tree[\"parameters/Seek/seek_position\"] = 0.0\n"
+"\n"
+"# Jouer l'animation enfant à la 12ème seconde.\n"
+"animation_tree.set(\"parameters/Seek/seek_position\", 12.0)\n"
+"# Syntaxe alternative (avec le même résultat qu'au-dessus).\n"
+"animation_tree[\"parameters/Seek/seek_position\"] = 12.0\n"
+"[/codeblock]"
#: doc/classes/AnimationNodeTransition.xml
msgid "A generic animation transition node for [AnimationTree]."
@@ -7307,6 +7429,9 @@ msgid ""
"[AnimationNodeStateMachine]. Animations can be connected to the inputs and "
"transition times can be specified."
msgstr ""
+"Une simple machine à états pour les cas qui n'exigent pas une "
+"[AnimationNodeStateMachine] plus avancée. Les animations peuvent être "
+"connectées aux entrées et les temps de transition peuvent être spécifiés."
#: doc/classes/AnimationNodeTransition.xml
msgid "The number of available input ports for this node."
@@ -7335,6 +7460,19 @@ msgid ""
"a [Tween] node, but it requires doing everything by code.\n"
"Updating the target properties of animations occurs at process time."
msgstr ""
+"Un lecteur d'animation est utilisé pour la lecture générale des ressources "
+"[Animation]. Il contient un dictionnaire d'animations (chacune référencée "
+"par nom) et des temps de mélange personnalisés entre leurs transitions. De "
+"plus, les animations peuvent être jouées et mélangées dans différents "
+"canaux.\n"
+"[AnimationPlayer] est plus adapté que [Tween] pour les animations où vous "
+"connaissez les valeurs finales à l'avance. Par exemple, la transition à "
+"l'écran est plus facile avec un nœud [AnimationPlayer] grâce aux outils "
+"d'animation fournis par l'éditeur. Cet exemple particulier peut également "
+"être mis en œuvre avec un nœud [Tween], mais il nécessite de la faire "
+"complètement par le code.\n"
+"La mise à jour des propriétés cibles des animations se produit au moment du "
+"processus."
#: doc/classes/AnimationPlayer.xml
#, fuzzy
@@ -7354,6 +7492,10 @@ msgid ""
"animation. [code]delta[/code] is the time in seconds to shift. Events "
"between the current frame and [code]delta[/code] are handled."
msgstr ""
+"Déplace la position dans le ligne temporelle de l'animation et met "
+"immédiatement à jour l'animation. [code]delta[/code] est le moment en "
+"secondes à changer. Les événements entre la trame actuele et [code]delta[/"
+"code] sont gérés."
#: doc/classes/AnimationPlayer.xml
msgid "Returns the name of the next animation in the queue."
@@ -7372,6 +7514,9 @@ msgid ""
"[AnimationPlayer] caches animated nodes. It may not notice if a node "
"disappears; [method clear_caches] forces it to update the cache again."
msgstr ""
+"[AnimationPlayer] met en cache des nœuds animés. Il peut ne pas remarquer si "
+"un nœud disparaît ; [méthode clear_caches] le force à mettre à jour le cache "
+"à nouveau."
#: doc/classes/AnimationPlayer.xml
msgid "Clears all queued, unplayed animations."
@@ -7388,6 +7533,8 @@ msgid ""
"Returns the [Animation] with key [code]name[/code] or [code]null[/code] if "
"not found."
msgstr ""
+"Retourne le [Animation] avec la clé [code]name[/code] ou [code]null[/code] "
+"s'il n'est pas trouvé."
#: doc/classes/AnimationPlayer.xml
msgid "Returns the list of stored animation names."
@@ -7408,6 +7555,10 @@ msgid ""
"[code]custom_speed[/code] argument specified when calling the [method play] "
"method."
msgstr ""
+"Retourne la vitesse réelle de lecture de l'animation actuelle ou 0 si n'est "
+"pas jouée. Cette vitesse est la propriété [member playback_speed] multipliée "
+"par l'argument [code]custom_speed[/code] spécifié lors de l'appel de la "
+"méthode [method play]."
#: doc/classes/AnimationPlayer.xml
msgid ""
@@ -7421,6 +7572,8 @@ msgid ""
"Returns [code]true[/code] if the [AnimationPlayer] stores an [Animation] "
"with key [code]name[/code]."
msgstr ""
+"Retourne [code]true[/code] si [AnimationPlayer] stocke une [Animation] avec "
+"la clé [code]name[/code]."
#: doc/classes/AnimationPlayer.xml
msgid "Returns [code]true[/code] if playing an animation."
@@ -7443,6 +7596,20 @@ msgid ""
"time this is called, they may be updated too early. To perform the update "
"immediately, call [code]advance(0)[/code]."
msgstr ""
+"Joue l'animation avec la clé [code]name[/code]. Les temps de mélange et la "
+"vitesse peuvent être définis. Si [code]custom_speed[/code] est négatif et "
+"[code]from_end[/code] est [code]true[/code], l'animation se joué à l'envers "
+"et depuis la fin (qui est équivalent à appeler [method play_backwards)].\n"
+"Le [AnimationPlayer] garde la trace de son animation actuelle ou la dernière "
+"avec [member assigned_animation]. Si cette méthode est appelée avec cette "
+"même animation nommée [code]name[/code], ou sans paramètre [code]name[/"
+"code], l'animation assignée reprendra le jeu si elle a été interrompue, ou "
+"redémarrer si elle a été arrêtée (voir [method stop] pour mettre en pause et "
+"arrêter). Si l'animation jouait déjà, elle continuera d'être jouée.\n"
+"[b]Note :[/b] L'animation sera mise à jour la prochaine fois que "
+"[AnimationPlayer] sera traitée. Si d'autres variables sont mises à jour en "
+"même temps, elles peuvent être mises à jour trop tôt. Pour effectuer une "
+"mise à jour immédiate, appelez [code]advance(0)[/code]."
#: doc/classes/AnimationPlayer.xml
msgid ""
@@ -7451,6 +7618,10 @@ msgid ""
"code] and [code]from_end = true[/code], so see its description for more "
"information."
msgstr ""
+"Joue à l'envers l'animation avec la clé [code]name[/code].\n"
+"Cette méthode est un raccourci pour [method play] avec [code]custom_speed = "
+"-1.0[/code] et [code]from_end = true[/code], ainsi voir sa description pour "
+"plus d'informations."
#: doc/classes/AnimationPlayer.xml
msgid ""
@@ -7458,6 +7629,10 @@ msgid ""
"[b]Note:[/b] If a looped animation is currently playing, the queued "
"animation will never play unless the looped animation is stopped somehow."
msgstr ""
+"Ajouter une animation pour être lue une fois que l'actuelle est terminée.\n"
+"[b]Note :[/b] Si une animation en boucle joue actuellement, l'animation "
+"ajoutée ne sera jamais joué à moins que l'animation en boucle ne soit "
+"arrêtée."
#: doc/classes/AnimationPlayer.xml
msgid "Removes the animation with key [code]name[/code]."
@@ -7481,6 +7656,14 @@ msgid ""
"animation_finished]. If you want to skip animation and emit the signal, use "
"[method advance]."
msgstr ""
+"Avance la lecture de l'animation à la position [code]secondes[/code] dans le "
+"temps (en secondes). Si [code]update[/code] est [code]true[/code], "
+"l'animation se mettra à jour, sinon elle le sera au moment du traitement. "
+"Les événements entre la trame actuel et la position [code]secondes[/code] "
+"sont ignorés.\n"
+"[b]Note :[/b] Aller à la fin de l'animation n'émet pas le signal [signal "
+"animation_finished]. Si vous voulez sauter l'animation et émettre le signal, "
+"utilisez plutôt [method advance]."
#: doc/classes/AnimationPlayer.xml
msgid ""
@@ -7500,6 +7683,13 @@ msgid ""
"[method play_backwards] without arguments or with the same animation name as "
"[member assigned_animation] will resume the animation."
msgstr ""
+"Arrête ou met en pause l'animation en cours. Si [code]reset[/code] est "
+"[code]true[/code], la position de l'animation est réinitialisée à [code]0[/"
+"code] et la vitesse de lecture est réinitialisée à [code]1.0[/code].\n"
+"Si [code]reset[/code] est [code]false[/code], la [membre "
+"current_animation_position] sera gardée et appeller [method play] ou [method "
+"play_backwards] sans arguments ou avec le même nom d'animation que [member "
+"assigned_animation] reprendra l'animation à cette position."
#: doc/classes/AnimationPlayer.xml
msgid ""
@@ -7513,7 +7703,7 @@ msgstr ""
#: doc/classes/AnimationPlayer.xml
msgid "The name of the animation to play when the scene loads."
-msgstr ""
+msgstr "Le nom de l'animation à jouer dès que la scène est chargée."
#: doc/classes/AnimationPlayer.xml
msgid ""
@@ -7526,6 +7716,15 @@ msgid ""
"get the currently playing animation, and internally for animation playback "
"tracks. For more information, see [Animation]."
msgstr ""
+"Le nom de l'animation en cours. Si aucune animation n'est jouée, la valeur "
+"de la propriété est une chaîne de caractères vide. Changer cette valeur ne "
+"redémarre pas l'animation. Voir [methode play] pour plus d'informations sur "
+"les animations.\n"
+"[b]Note :[/b] Bien que cette propriété apparaisse dans l'inspecteur, elle "
+"n'était pas censée être modifiée et n'est pas enregistrée. Cette propriété "
+"est principalement utilisée pour obtenir l'animation en cours, et en interne "
+"pour les pistes de lecture d'animation. Pour plus d'informations, voir "
+"[Animation]."
#: doc/classes/AnimationPlayer.xml
msgid "The length (in seconds) of the currently being played animation."
@@ -7537,23 +7736,28 @@ msgstr "La position (en secondes) de l'animation actuellement jouée."
#: doc/classes/AnimationPlayer.xml
msgid "The call mode to use for Call Method tracks."
-msgstr ""
+msgstr "Le mode d'appel à utiliser pour les pistes \"Call Method\"."
#: doc/classes/AnimationPlayer.xml
msgid ""
"If [code]true[/code], updates animations in response to process-related "
"notifications."
msgstr ""
+"Si [code]true[/code], met à jour les animations en réponse aux notifications "
+"liées au processus."
#: doc/classes/AnimationPlayer.xml
msgid ""
"The default time in which to blend animations. Ranges from 0 to 4096 with "
"0.01 precision."
msgstr ""
+"Le moment par défaut où les animations sont mélangées. L'intervalle va de 0 "
+"à 4096 avec une précision de 0,01."
#: doc/classes/AnimationPlayer.xml
msgid "The process notification in which to update animations."
msgstr ""
+"La notification de processus dans laquelle mettre à jour les animations."
#: doc/classes/AnimationPlayer.xml
msgid ""
@@ -7561,6 +7765,9 @@ msgid ""
"animation plays at normal speed. If it's 0.5, then it plays at half speed. "
"If it's 2, then it plays at double speed."
msgstr ""
+"Le rapport d'échelle de vitesse. Par exemple, si cette valeur est 1, alors "
+"l'animation joue à la vitesse normale. À 0,5, elle est joué à deux fois "
+"moins vite. À 2, elle est jouée deux fois plus vite."
#: doc/classes/AnimationPlayer.xml
msgid ""
@@ -7571,10 +7778,16 @@ msgid ""
"defined by the reset animation, if any, with the editor keeping the values "
"that the nodes had before saving."
msgstr ""
+"Ceci est utilisé par l'éditeur. Si défini à [code]true[/code], la scène sera "
+"sauvegardée avec les effets de l'animation réinitialisée appliquée (comme si "
+"elle avait été cherchée à temps 0), puis rétablie après l'enregistrement.\n"
+"En d'autres termes, le fichier de scène sauvegardé contiendra la \"pose par "
+"défaut\", telle que définie par l'animation réinitialisée, le cas échéant, "
+"avec l'éditeur gardant les valeurs que les nœuds avaient avant de sauver."
#: doc/classes/AnimationPlayer.xml
msgid "The node from which node path references will travel."
-msgstr ""
+msgstr "Le nœud à partir duquel les références de chemin de nœud vont aller."
#: doc/classes/AnimationPlayer.xml
msgid ""
@@ -7583,6 +7796,10 @@ msgid ""
"[b]Note:[/b] The signal is not emitted when the animation is changed via "
"[method play] or from [AnimationTree]."
msgstr ""
+"Émis lorsqu'une animation ajouté à la file jouera après la fin de "
+"l'animation précédente. Voir [methode queue].\n"
+"[b]Note :[/b] Le signal n'est pas émis lorsque l'animation est changée via "
+"[method play] ou depuis le [AnimationTree]."
#: doc/classes/AnimationPlayer.xml
msgid "Notifies when an animation finished playing."
@@ -7597,6 +7814,8 @@ msgid ""
"Notifies when the caches have been cleared, either automatically, or "
"manually via [method clear_caches]."
msgstr ""
+"Notifie quand les caches ont été effacées, soit automatiquement ou soit "
+"manuellement par [méthode clear_caches]."
#: doc/classes/AnimationPlayer.xml doc/classes/AnimationTreePlayer.xml
msgid ""
@@ -7649,6 +7868,14 @@ msgid ""
"[AnimationPlayer] node should be used solely for adding, deleting, and "
"editing animations."
msgstr ""
+"Un nœud à utiliser pour des transitions d'animation complexes dans un "
+"[AnimationPlayer].\n"
+"[b]Note :[/b] Quand lié à un [AnimationPlayer], plusieurs propriétés et "
+"méthodes du [AnimationPlayer] correspondant ne fonctionneront pas comme "
+"prévu. La lecture et les transitions doivent être gérées en utilisant "
+"seulement le [AnimationTree] et son [AnimationNode]. Le nœud "
+"[AnimationPlayer] doit être utilisé uniquement pour ajouter, supprimer et "
+"éditer des animations."
#: doc/classes/AnimationTree.xml
msgid "Using AnimationTree"
@@ -7666,6 +7893,11 @@ msgid ""
"track of type [constant Animation.TYPE_TRANSFORM], returns an identity "
"transformation. See also [member root_motion_track] and [RootMotionView]."
msgstr ""
+"Récupére le mouvement du [membre root_motion_track] sous forme de "
+"[Transform] qui peut être utilisée ailleurs. Si [member root_motion_track] "
+"n'est pas un chemin vers une piste de type [constant Animation."
+"TYPE_TRANSFORM], retourne la transformation d'identité. Voir aussi [membrer "
+"root_motion_track] et [RootMotionView]."
#: doc/classes/AnimationTree.xml
msgid "If [code]true[/code], the [AnimationTree] will be processing."
@@ -7680,6 +7912,8 @@ msgid ""
"The process mode of this [AnimationTree]. See [enum AnimationProcessMode] "
"for available modes."
msgstr ""
+"Le mode de processus de ce [AnimationTree]. Voir [enum AnimationProcessMode] "
+"pour les modes disponibles."
#: doc/classes/AnimationTree.xml
msgid ""
@@ -7715,12 +7949,16 @@ msgid ""
"The animations will progress during the physics frame (i.e. [method Node."
"_physics_process])."
msgstr ""
+"Les animations progresseront pendant les trames physiques (dans [méthode "
+"Node._physics_process)]"
#: doc/classes/AnimationTree.xml
msgid ""
"The animations will progress during the idle frame (i.e. [method Node."
"_process])."
msgstr ""
+"Les animations progresseront pendant les trames d'inactivité (dans [méthode "
+"Node._process)]"
#: doc/classes/AnimationTree.xml
msgid "The animations will only progress manually (see [method advance])."
@@ -7733,6 +7971,8 @@ msgid ""
"[i]Deprecated.[/i] Animation player that uses a node graph for blending "
"animations. Superseded by [AnimationTree]."
msgstr ""
+"[i]Obsolète.[/i] Le lecteur d'animation qui utilise un graph de nœuds pour "
+"mélanger des animations. Remplacé par [AnimationTree]."
#: doc/classes/AnimationTreePlayer.xml
msgid ""
@@ -7744,6 +7984,13 @@ msgid ""
"depending on the graph.\n"
"See [AnimationTree] for a more full-featured replacement of this node."
msgstr ""
+"[i]Obsolète[/i]. Un outil de graph de nœuds pour mélanger plusieurs "
+"animations liées à un [AnimationPlayer]. particulièrement utile pour animer "
+"des personnages ou d'autres éléments à base de squelette. Il peut combiner "
+"plusieurs animations pour former la pose souhaitée.\n"
+"Il prend des [Animation] d'un nœud [AnimationPlayer] et les mélange selon ce "
+"graph.\n"
+"Voir [AnimationTree] pour un remplacement plus complet de ce nœud."
#: doc/classes/AnimationTreePlayer.xml
msgid "Adds a [code]type[/code] node to the graph with name [code]id[/code]."
@@ -7762,12 +8009,16 @@ msgid ""
"Returns the [AnimationPlayer]'s [Animation] bound to the "
"[AnimationTreePlayer]'s animation node with name [code]id[/code]."
msgstr ""
+"Retourne la [Animation] du [AnimationPlayer] lié au nœud d'animation du "
+"[AnimationTreePlayer] nommé [code]id[/code]."
#: doc/classes/AnimationTreePlayer.xml
msgid ""
"Returns the name of the [member master_player]'s [Animation] bound to this "
"animation node."
msgstr ""
+"Retourne le nom de la [Animation] du [member master_player] lié à ce nœud "
+"d'animation."
#: doc/classes/AnimationTreePlayer.xml
msgid ""
@@ -7789,6 +8040,9 @@ msgid ""
"[code]id[/code] turns off the track modifying the property at [code]path[/"
"code]. The modified node's children continue to animate."
msgstr ""
+"Si [code]enable[/code] est [code]true[/code], le nœud d'animation avec "
+"l'identifiant [code]id[/code] désactive la piste en modifiant la propriété "
+"[code]path[/code]. Les enfants modifiés du node's continuent d'être animés."
#: doc/classes/AnimationTreePlayer.xml
msgid ""
@@ -7817,6 +8071,12 @@ msgid ""
"At 0, output is input A. Towards 1, the influence of A gets lessened, the "
"influence of B gets raised. At 1, output is input B."
msgstr ""
+"Définit la quantité de mélange d'un nœud Blend2 à partir de son nom et sa "
+"valeur.\n"
+"Un nœud Blend2 mélange deux animations (A et B) avec une quantité entre 0 et "
+"1.\n"
+"À 0, la sortie est l'entrée A. Jusqu'à 1, l'influence de A baisse, et celle "
+"de B augmente. À 1, la sortie est l'entrée B."
#: doc/classes/AnimationTreePlayer.xml
msgid ""
@@ -7824,6 +8084,9 @@ msgid ""
"[code]id[/code] turns off the track modifying the property at [code]path[/"
"code]. The modified node's children continue to animate."
msgstr ""
+"Si [code]enable[/code] est [code]true[/code], le nœud Blend2 avec le nom "
+"[code]id[/code] désactive la piste en modifiant la propriété [code]path[/"
+"code]. Les enfants modifiés du node's continuent d'être animés."
#: doc/classes/AnimationTreePlayer.xml
#, fuzzy
@@ -7840,6 +8103,13 @@ msgid ""
"input A. From 0 to 1, the influence of A gets lessened, the influence of B+ "
"gets raised and the influence of B+ is 0. At 1, output is input B+."
msgstr ""
+"Définit la quantité de mélange d'un nœud Blend3 donné son nom et sa valeur.\n"
+"A Blend3 Node mélange trois animations (A, B-, B+) avec la quantité entre -1 "
+"et 1.\n"
+"À -1, la sortie est l'entrée B-. De -1 à 0, l'influence de B- se réduit, et "
+"celle de A augmente pendant que cette de B+ est à 0. À 0, la sortie est "
+"l'entrée A. De 0 à 1, l'influence d'A diminue, celle de B+ augmente et celle "
+"de B+ est à 0. À 1, la sortie est l'entrée B+."
#: doc/classes/AnimationTreePlayer.xml
#, fuzzy
@@ -7852,6 +8122,9 @@ msgid ""
"A Blend4 Node blends two pairs of animations.\n"
"The two pairs are blended like Blend2 and then added together."
msgstr ""
+"Définit la quantité de mélange d'un nœud Blend4 donné son nom et sa valeur.\n"
+"A Blend4 Node mélange deux paires d'animations.\n"
+"Les deux paires sont mélangées comme Blend2 et ensuite ajoutées ensemble."
#: doc/classes/AnimationTreePlayer.xml
msgid ""
@@ -7865,6 +8138,8 @@ msgstr ""
msgid ""
"Disconnects nodes connected to [code]id[/code] at the specified input slot."
msgstr ""
+"Déconnecte les nœuds connectés à [code]id[/code] à l'emplacement d'entrée "
+"spécifié."
#: doc/classes/AnimationTreePlayer.xml
msgid "Returns a [PoolStringArray] containing the name of all nodes."
@@ -7880,6 +8155,9 @@ msgid ""
"Sets the mix amount of a Mix node given its name and value.\n"
"A Mix node adds input b to input a by the amount given by ratio."
msgstr ""
+"Définit la quantité de mélange d'un nœud Mix donné son nom et sa valeur.\n"
+"Un nœud Mix ajoute l'entrée b à l'entrée a suivan la quantité donnée sous "
+"forme de ratio."
#: doc/classes/AnimationTreePlayer.xml
msgid "Check if a node exists (by name)."
@@ -7898,9 +8176,8 @@ msgid "Returns the input source for a given node input."
msgstr "Retourne la source entrante pour l'entrée spécifiée du nœud."
#: doc/classes/AnimationTreePlayer.xml
-#, fuzzy
msgid "Returns position of a node in the graph given its name."
-msgstr "Retourne la position du nœud spécifié dans le graphique du nuanceur."
+msgstr "Retourne la position du nœud spécifié dans son nom dans le graph."
#: doc/classes/AnimationTreePlayer.xml
msgid "Gets the node type, will return from [enum NodeType] enum."
@@ -7979,6 +8256,9 @@ msgid ""
"[code]id[/code] turns off the track modifying the property at [code]path[/"
"code]. The modified node's children continue to animate."
msgstr ""
+"Si [code]enable[/code] est [code]true[/code], le nœud OneShot avec "
+"l'identifiant [code]id[/code] désactive la piste en modifiant la propriété à "
+"[code]path[/code]. Les enfants modifiés du node's continuent d'être animés."
#: doc/classes/AnimationTreePlayer.xml
msgid "Starts a OneShot node given its name."
@@ -7994,6 +8274,9 @@ msgid ""
"animation nodes. Needed when external sources modify the animation nodes' "
"state."
msgstr ""
+"Recalcule manuellement le cache des informations générées de la piste à "
+"partir de nœuds d'animation. Nécessaire quand des sources extérieures "
+"modifient l'état des nœuds d'animation."
#: doc/classes/AnimationTreePlayer.xml
msgid "Removes the animation node with name [code]id[/code]."
@@ -8017,6 +8300,12 @@ msgid ""
"If applied after a blend or mix, affects all input animations to that blend "
"or mix."
msgstr ""
+"Définit l'échelle temporelle du nœud TimeScale avec le nom [code]id[/code] à "
+"[code]scale[/code].\n"
+"Le nœud TimeScale est utilisé pour accélérer [Animation] si l'échelle est "
+"supérieure à 1 ou la ralentir si elle est inférieure à 1.\n"
+"S'il est appliqué après un mélange, affecte toutes les animations d'entrée "
+"de ce mélange."
#: doc/classes/AnimationTreePlayer.xml
msgid ""
@@ -8174,7 +8463,7 @@ msgstr ""
#: doc/classes/Area.xml doc/classes/QuadMesh.xml doc/classes/Viewport.xml
#: doc/classes/ViewportTexture.xml
msgid "GUI in 3D Demo"
-msgstr ""
+msgstr "Démo des interfaces en 3D"
#: doc/classes/Area.xml
msgid ""
@@ -8185,6 +8474,13 @@ msgid ""
"list is modified once during the physics step, not immediately after objects "
"are moved. Consider using signals instead."
msgstr ""
+"Retourne une liste de [Area] qui sont en collision. Le calque [membre "
+"CollisionObject.collision_layer] de l'aire de chevauchement doit faire "
+"partie [membre CollisionObject.collision_mask] pour être détectée.\n"
+"Pour des raisons de performance (les collisions sont toutes traitées en même "
+"temps) cette liste est modifiée une fois pendant l'étape physique, pas "
+"immédiatement après le déplacement des objets. Considérez plutôt utiliser "
+"des signaux."
#: doc/classes/Area.xml
msgid ""
@@ -8195,6 +8491,13 @@ msgid ""
"list is modified once during the physics step, not immediately after objects "
"are moved. Consider using signals instead."
msgstr ""
+"Retourne une liste de [PhysicsBody] qui sont en collision. Le calque [membre "
+"CollisionObject.collision_layer] du corps de chevauchement doit faire partie "
+"[membre CollisionObject.collision_mask] pour être détecté.\n"
+"Pour des raisons de performance (les collisions sont toutes traitées en même "
+"temps) cette liste est modifiée une fois pendant l'étape physique, pas "
+"immédiatement après le déplacement des objets. Considérez plutôt utiliser "
+"des signaux."
#: doc/classes/Area.xml
msgid ""
@@ -8203,6 +8506,11 @@ msgid ""
"For performance, list of overlaps is updated once per frame and before the "
"physics step. Consider using signals instead."
msgstr ""
+"Si [code]true[/code], la zone donnée recouvre la Area.\n"
+"[b]Note :[/b] Le résultat de ce test n'est pas immédiat après le déplacement "
+"des objets. Pour la performance, la liste des chevauchements est mise à jour "
+"une fois par trame et avant l'étape physique. Considérez plutôt utiliser des "
+"signaux."
#: doc/classes/Area.xml
msgid ""
@@ -8214,6 +8522,15 @@ msgid ""
"instance (while GridMaps are not physics body themselves, they register "
"their tiles with collision shapes as a virtual physics body)."
msgstr ""
+"Si [code]true[/code], le corps physique donné recouvre la Area.\n"
+"[b]Note :[/b] Le résultat de ce test n'est pas immédiat après le déplacement "
+"des objets. Pour la performance, la liste des chevauchements est mise à jour "
+"une fois par cadre et avant l'étape physique. Considérez plutôt utiliser des "
+"signaux.\n"
+"L'argument [code]body[/code] peut être soit un [PhysicsBody] ou une instance "
+"[GridMap] (bien que GridMap ne sont pas le corps physique eux-mêmes, ils "
+"enregistrent leurs tuiles avec des formes de collision comme un corps "
+"physique virtuel)."
#: doc/classes/Area.xml
msgid ""
@@ -8238,6 +8555,9 @@ msgid ""
"multiplies the gravity vector. This is useful to alter the force of gravity "
"without altering its direction."
msgstr ""
+"L'intensité de la gravité (en mètres par seconde au carré). Cette valeur "
+"multiplie le vecteur de gravité. Ceci est utile pour modifier la force de la "
+"gravité sans modifier sa direction."
#: doc/classes/Area.xml doc/classes/Area2D.xml
msgid ""
@@ -8250,12 +8570,16 @@ msgid ""
"If [code]true[/code], gravity is calculated from a point (set via [member "
"gravity_vec]). See also [member space_override]."
msgstr ""
+"Si [code]true[/code], la gravité est calculée à partir d'un point (set via "
+"[member gravity_vec)]. Voir aussi [member space_override]."
#: doc/classes/Area.xml doc/classes/Area2D.xml
msgid ""
"The area's gravity vector (not normalized). If gravity is a point (see "
"[member gravity_point]), this will be the point of attraction."
msgstr ""
+"Le vecteur de gravité (non normalisé). Si la gravité est un point (voir "
+"[membre gravité_point,)], ce sera le point d'attraction."
#: doc/classes/Area.xml
msgid ""
@@ -8294,16 +8618,21 @@ msgstr ""
#: doc/classes/Area.xml
msgid "If [code]true[/code], the area applies reverb to its associated audio."
msgstr ""
+"Si [code]true[/code], la zone applique de la réverbération à l'audio qui lui "
+"est associé."
#: doc/classes/Area.xml
msgid "The reverb bus name to use for this area's associated audio."
msgstr ""
+"Le nom de bus de réverbération à utiliser pour l'audio associé à cette aire."
#: doc/classes/Area.xml
msgid ""
"The degree to which this area's reverb is a uniform effect. Ranges from "
"[code]0[/code] to [code]1[/code] with [code]0.1[/code] precision."
msgstr ""
+"Le degré de réverbération de cette zone est un effet uniforme. L'intervalle "
+"va de [code]0[/code] à [code]1[/code] avec une précision de [code]0.1[/code]."
#: doc/classes/Area.xml doc/classes/Area2D.xml
msgid ""
@@ -8339,6 +8668,17 @@ msgid ""
"the [PhysicsServer]. Get the [CollisionShape] node with [code]self."
"shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
+"Émis lorsque l'une des [Shape] de l'autre Area entre dans l'une des [Shape] "
+"de cette Area. Nécessite [member monitoring] à [code]true[/code].\n"
+"[code]area_rid[/code] est le [RID] du [CollisionObject] de l'autre Area "
+"utilisée par le [PhysicsServer].\n"
+"[code]area[/code] l'autre Area.\n"
+"[code]area_shape_index[/code] est l'index de la [Shape] de l'autre Area "
+"utilisée par le [PhysicsServer]. Obtenez le nœud [CollisionShape] avec "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] est l'index de la [Shape] de cette Area "
+"utilisée par le [PhysicsServer]. Obtenez le nœud [CollisionShape] avec "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
#: doc/classes/Area.xml
msgid ""
@@ -8348,6 +8688,11 @@ msgid ""
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap]."
msgstr ""
+"Émis quand un [PhysicsBody] ou un [GridMap] entre dans cette Area. Nécessite "
+"[member monitoring] d'être définie à [code]true[/code]. Les [GridMap] sont "
+"détectés si la [MeshLibrary] à des [Shape] de collision.\n"
+"Le [code]body[/code] est le [Node], s'il exist dans l'arborescence, de "
+"l'autre [PhysicsBody] ou [GridMap]."
#: doc/classes/Area.xml
msgid ""
@@ -8357,6 +8702,11 @@ msgid ""
"[code]body[/code] the [Node], if it exists in the tree, of the other "
"[PhysicsBody] or [GridMap]."
msgstr ""
+"Émis quand un [PhysicsBody] ou un [GridMap] quitte cette Area. Nécessite "
+"[member monitoring] d'être définie à [code]true[/code]. Les [GridMap] sont "
+"détectés si la [MeshLibrary] à des [Shape] de collision.\n"
+"Le [code]body[/code] est le [Node], s'il exist dans l'arborescence, de "
+"l'autre [PhysicsBody] ou [GridMap]."
#: doc/classes/Area.xml
msgid ""
@@ -8438,6 +8788,14 @@ msgid ""
"list is modified once during the physics step, not immediately after objects "
"are moved. Consider using signals instead."
msgstr ""
+"Retourne une liste des [Area2D] qui s'intersectent. Le [member "
+"CollisionObject2D.collision_layer] de l'aire intersectant doit faire partie "
+"du [membre CollisionObject2D.collision_mask] de cette aire pour être "
+"détecté.\n"
+"Pour des raisons de performance (les colonnes sont toutes traitées en même "
+"temps) cette liste est modifiée une fois pendant l'étape physique, pas "
+"immédiatement après le déplacement des objets. Considérez plutôt utiliser "
+"des signaux."
#: doc/classes/Area2D.xml
msgid ""
@@ -8467,6 +8825,15 @@ msgid ""
"[TileMap] instance (while TileMaps are not physics bodies themselves, they "
"register their tiles with collision shapes as a virtual physics body)."
msgstr ""
+"Si [code]true[/code], le corps physique donné recouvre la zone2D.\n"
+"[b]Note :[/b] Le résultat de ce test n'est pas immédiat après le déplacement "
+"des objets. Pour des raisons de performance, la liste des chevauchements est "
+"mise à jour une fois par trame et avant l'étape physique. Considérez plutôt "
+"l'utilisateur de signaux.\n"
+"L'argument [code]body[/code] peut soit être un [PhysicsBody2D] ou une "
+"instance [TileMap] (même si les TileMap ne sont pas des corps de physique en "
+"soit, ils enregistrent leurs tuiles avec des formes de collision comme un "
+"corps de physique virtuel)."
#: doc/classes/Area2D.xml
msgid ""
@@ -8475,6 +8842,10 @@ msgid ""
"See [member ProjectSettings.physics/2d/default_angular_damp] for more "
"details about damping."
msgstr ""
+"La vitesse à laquelle les objets arrêtent de tourner dans cette zone. "
+"Représente la vitesse angulaire perdue par seconde.\n"
+"Voir [membre ProjectSettings.physics/2d/default_angular_damp] pour plus de "
+"détails sur l'amortissement."
#: doc/classes/Area2D.xml
msgid ""
@@ -8482,6 +8853,9 @@ msgid ""
"multiplies the gravity vector. This is useful to alter the force of gravity "
"without altering its direction."
msgstr ""
+"L'intensité de gravité (en pixels par seconde au carré). Cette valeur "
+"multiplie le vecteur de gravité. Ceci est utile pour modifier la force de la "
+"gravité sans modifier sa direction."
#: doc/classes/Area2D.xml
msgid ""
@@ -8519,6 +8893,18 @@ msgid ""
"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
+"Émis lorsque l'une des [Shape2D] de l'autre Area2D entre dans l'une des "
+"[Shape2D] de cette Area2D. Nécessite [member monitoring] d'être définie à "
+"[code]true[/code].\n"
+"[code]area_rid[/code] le [RID] du [CollisionObject2D] de l'autre Area2D "
+"utilisé par [Physics2DServer].\n"
+"[code]area[/code] l'autre Area2D.\n"
+"[code]area_shape_index[/code] l'index de la [Shape2D] de l'autre Area2D "
+"utilisée par [Physics2DServer]. Obtenez le nœud [CollisionShape2D] avec "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] l'index de la [Shape2D] de cette Area2D "
+"utilisée par [Physics2DServer]. Obtenez le nœud [CollisionShape2D] avec "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
#: doc/classes/Area2D.xml
msgid ""
@@ -8534,6 +8920,18 @@ msgid ""
"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
+"Émis lorsque l'une des [Shape2D] de l'autre Area2D quitte l'une des "
+"[Shape2D] de cette Area2D. Nécessite [member monitoring] d'être définie à "
+"[code]true[/code].\n"
+"[code]area_rid[/code] le [RID] du [CollisionObject2D] de l'autre Area2D "
+"utilisé par [Physics2DServer].\n"
+"[code]area[/code] l'autre Area2D.\n"
+"[code]area_shape_index[/code] l'index de la [Shape2D] de l'autre Area2D "
+"utilisée par [Physics2DServer]. Obtenez le nœud [CollisionShape2D] avec "
+"[code]area.shape_owner_get_owner(area_shape_index)[/code].\n"
+"[code]local_shape_index[/code] l'index de la [Shape2D] de cette Area2D "
+"utilisée par [Physics2DServer]. Obtenez le nœud [CollisionShape2D] avec "
+"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
#: doc/classes/Area2D.xml
msgid ""
@@ -8571,6 +8969,21 @@ msgid ""
"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
+"Émis quand une des [Shape2D] d'un [PhysicsBody2D] ou d'une [TileMap] entre "
+"dans une des [Shape2D] de cette Area2D. Nécessite [member monitoring] à "
+"[code]true[/code]. Les [TileMap] sont détectées si le [TileSet] a une "
+"[Shape2D] de collision.\n"
+"[code]body_rid[/code] le [RID] du [CollisionObject2D] du [PhysicsBody2D] ou "
+"du [TileSet] utilisé par le [Physics2DServer].\n"
+"[code]body[/code] le [Node], s'il existe dans l'arborescence, du "
+"[PhysicsBody2D] ou du [TileMap].\n"
+"[code]body_shape_index[/code] l'index de la [Shape2D] du [PhysicsBody2D] ou "
+"du [TileMap] utilisé par le [Physics2DServer]. Obtenez le nœud "
+"[CollisionShape2D] avec [code]body.shape_owner_get_owner(body_shape_index)[/"
+"code].\n"
+"[code]local_shape_index[/code] l'index de la [Shape2D] de ce Area2D utilisée "
+"par [Physics2DServer]. Obtenez le nœud [CollisionShape2D] avec [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
#: doc/classes/Area2D.xml
msgid ""
@@ -8590,6 +9003,21 @@ msgid ""
"used by the [Physics2DServer]. Get the [CollisionShape2D] node with "
"[code]self.shape_owner_get_owner(local_shape_index)[/code]."
msgstr ""
+"Émis quand une des [Shape2D] d'un [PhysicsBody2D] ou d'une [TileMap] quitte "
+"une des [Shape2D] de cette Area2D. Nécessite [member monitoring] à "
+"[code]true[/code]. Les [TileMap] sont détectées si le [TileSet] a une "
+"[Shape2D] de collision.\n"
+"[code]body_rid[/code] le [RID] du [CollisionObject2D] du [PhysicsBody2D] ou "
+"du [TileSet] utilisé par le [Physics2DServer].\n"
+"[code]body[/code] le [Node], s'il existe dans l'arborescence, du "
+"[PhysicsBody2D] ou du [TileMap].\n"
+"[code]body_shape_index[/code] l'index de la [Shape2D] du [PhysicsBody2D] ou "
+"du [TileMap] utilisé par le [Physics2DServer]. Obtenez le nœud "
+"[CollisionShape2D] avec [code]body.shape_owner_get_owner(body_shape_index)[/"
+"code].\n"
+"[code]local_shape_index[/code] l'index de la [Shape2D] de ce Area2D utilisée "
+"par [Physics2DServer]. Obtenez le nœud [CollisionShape2D] avec [code]self."
+"shape_owner_get_owner(local_shape_index)[/code]."
#: doc/classes/Array.xml
msgid "A generic array datatype."
@@ -8740,6 +9168,14 @@ msgid ""
"[b]Note:[/b] Calling [method bsearch] on an unsorted array results in "
"unexpected behavior."
msgstr ""
+"Cherche la position d'une valeur existante (ou la position d'insertion qui "
+"maintient l'ordre de tri, si la valeur n'est pas encore présente dans le "
+"tableau) en utilisant la recherche d'arbre binaire. En option, la valeur "
+"[code]before[/code] peut être passé. Si [code]false[/code], la position "
+"retournée vient après toutes les entrées existantes de la valeur dans le "
+"tableau.\n"
+"[b]Note :[/b] Appeler [method bsearch] sur un tableau non trié provoque un "
+"comportement inattendu."
#: doc/classes/Array.xml
msgid ""
@@ -8840,6 +9276,14 @@ msgid ""
"modifying a sub-array or dictionary in the copy will also impact those "
"referenced in the source array."
msgstr ""
+"Retourne une copie du tableau.\n"
+"Si [code]deep[/code] est [code]true[/code], une copie profonde est "
+"effectuée : tous les sous-tableaux et les sous-dictionnaires sont copié et "
+"ne seront pas partagés avec le tableau d'origine. Si [code]false[/code], une "
+"copie de surface est faite et les références aux tableaux et aux "
+"dictionnaires originaux sont conservés, de sorte que la modification d'un "
+"sous-tableau ou d'un sous-dictionnaire dans la copie modifiera aussi ceux "
+"référencés dans le tableau d'origine."
#: doc/classes/Array.xml doc/classes/PoolByteArray.xml
#: doc/classes/PoolColorArray.xml doc/classes/PoolIntArray.xml
@@ -8858,6 +9302,14 @@ msgid ""
"element is close to the beginning of the array (index 0). This is because "
"all elements placed after the removed element have to be reindexed."
msgstr ""
+"Retire le première apparition de la valeur du tableau. Si la valeur n'est "
+"pas présente, rien ne se produit. Pour retirer un élément à partir de sa "
+"position, utilisez plutôt [method remove].\n"
+"[b]Note :[/b] Cette méthode se contente de retirer l'élément et ne retourne "
+"aucune valeur.\n"
+"[b]Note :[/b] Pour les grands tableaux, cette méthode sera lente si la "
+"position de l'insertion est proche du début (index 0). C'est parce que tous "
+"les éléments placés après devront tous être décalés."
#: doc/classes/Array.xml
msgid ""
@@ -8870,6 +9322,14 @@ msgid ""
"array.fill(0) # Initialize the 10 elements to 0.\n"
"[/codeblock]"
msgstr ""
+"Assigne la valeur donnée à tous les éléments du tableau. C'est souvent "
+"utilisé avec [method resize] pour créer un tableau d'une taille donnée avec "
+"tous ses éléments initialisés:\n"
+"[codeblock]\n"
+"var array = []\n"
+"array.resize(10)\n"
+"array.fill(0) # Initialise les 10 éléments avec 0.\n"
+"[/codeblock]"
#: doc/classes/Array.xml doc/classes/PoolByteArray.xml
#: doc/classes/PoolColorArray.xml doc/classes/PoolIntArray.xml
@@ -8890,6 +9350,8 @@ msgid ""
"Searches the array in reverse order for a value and returns its index or "
"[code]-1[/code] if not found."
msgstr ""
+"Recherche la valeur dans le tableau en sens inverse et retourne sa position "
+"ou [code]-1[/code] si n'est pas présent."
#: doc/classes/Array.xml
msgid ""
@@ -8899,6 +9361,11 @@ msgid ""
"[/code]. If the array is empty, accessing by index will pause project "
"execution when running from the editor."
msgstr ""
+"Renvoie le premier élément du tableau. Affiche une erreur et retourne "
+"[code]null[/code] si le tableau est vide.\n"
+"[b]Note :[/b] L'appel de cette fonction n'est pas le même que d'écrire "
+"[code]array[0][/code]. Si le tableau est vide, accéder à un élément par sa "
+"position va suspendre l'exécution de projet depuis l'éditeur."
#: doc/classes/Array.xml
msgid ""
@@ -8917,6 +9384,20 @@ msgid ""
" pass\n"
"[/codeblock]"
msgstr ""
+"Retourne [code]true[/code] si le tableau contient la valeur donnée.\n"
+"[codeblock]\n"
+"[\"inside\", 7].has(\"inside\") # True\n"
+"[\"inside\", 7].has(\"outside\") # False\n"
+"[\"inside\", 7].has(7) # True\n"
+"[\"inside\", 7].has(\"7\") # False\n"
+"[/codeblock]\n"
+"[b]Note :[/b] C'est équivalent à utiliser l'opérateur [code]in[/code] comme "
+"suit :\n"
+"[codeblock]\n"
+"# Sera évalué à `true`.\n"
+"if 2 in [2, 4, 6, 8]:\n"
+" pass\n"
+"[/codeblock]"
#: doc/classes/Array.xml
msgid ""
@@ -8927,6 +9408,13 @@ msgid ""
"does [i]not[/i] imply the arrays are equal, because different arrays can "
"have identical hash values due to hash collisions."
msgstr ""
+"Renvoie entier 32 bits de chachage représentant le tableau ainsi que son "
+"contenu.\n"
+"[b]Note :[/b] Les [Array] avec le même contenu produira toujours la même "
+"hachage. Cependant, la réciproque n'est pas vrai. Retourner un hachage "
+"identiques [i]n'implique pas[/i] que les tableaux ont le même contenu, car "
+"différents tableaux peuvent avoir des hachages identiques à cause des "
+"collisions des hachages."
#: doc/classes/Array.xml
msgid ""
@@ -8937,6 +9425,13 @@ msgid ""
"element is close to the beginning of the array (index 0). This is because "
"all elements placed after the newly inserted element have to be reindexed."
msgstr ""
+"Insère un nouvel élément à la position spécifiée du tableau. La position "
+"doit être valide, ou à la fin du tableau ([code]pos == size()[/code]).\n"
+"[b]Note :[/b] Cette méthode se contente d'insérer l'élément et ne retourne "
+"aucune valeur.\n"
+"[b]Note :[/b] Pour les grands tableaux, cette méthode sera lente si la "
+"position de l'insertion est proche du début (index 0). C'est parce que tous "
+"les éléments placés après devront tous être décalés."
#: doc/classes/Array.xml doc/classes/PoolByteArray.xml
#: doc/classes/PoolColorArray.xml doc/classes/PoolIntArray.xml
@@ -8951,6 +9446,9 @@ msgid ""
"comparable types. If the elements can't be compared, [code]null[/code] is "
"returned."
msgstr ""
+"Retourne la valeur maximale contenue dans le tableau si tous les éléments "
+"peuvent être comparés entre eux. Si les éléments ne peuvent pas être "
+"comparés, [code]null[/code] est retourné."
#: doc/classes/Array.xml
msgid ""
@@ -8958,6 +9456,9 @@ msgid ""
"comparable types. If the elements can't be compared, [code]null[/code] is "
"returned."
msgstr ""
+"Retourne la valeur minimale contenue dans le tableau si tous les éléments "
+"peuvent être comparés entre eux. Si les éléments ne peuvent pas être "
+"comparés, [code]null[/code] est retourné."
#: doc/classes/Array.xml
msgid ""
@@ -8971,6 +9472,16 @@ msgid ""
"removed element. The larger the array and the lower the index of the removed "
"element, the slower [method pop_at] will be."
msgstr ""
+"Retire et retourne l'élément du tableau à la [code]position[/code]. Si "
+"négatif, [code]position[/code] part de la la fin du tableau vers le début. "
+"Laisse le tableau intact et retourne [code]null[/code] si le tableau est "
+"vide ou s'il la position est en dehors des limites du tableau. Un message "
+"d'erreur est affiché lorsque la position est en dehors des limites du "
+"tableau, mais pas lorsque le tableau est vide.\n"
+"[b]Note :[/b] Pour les grands tableaux, cette méthode peut être plus lente "
+"que [method pop_back] car elle réindexera les éléments du tableau qui sont "
+"situés après l'élément enlevé. Plus le tableau est grand et plus la position "
+"de l'élément enlevé, plus [method pop_at] sera lent."
#: doc/classes/Array.xml
msgid ""
@@ -8978,6 +9489,9 @@ msgid ""
"if the array is empty, without printing an error message. See also [method "
"pop_front]."
msgstr ""
+"Retire et retourne le dernier élément du tableau. Retourne [code]null[/code] "
+"si le tableau est vide, sans affiche de message d'erreur. Voir aussi [method "
+"pop_front]."
#: doc/classes/Array.xml
msgid ""
@@ -8988,6 +9502,13 @@ msgid ""
"pop_back] as it will reindex all the array's elements every time it's "
"called. The larger the array, the slower [method pop_front] will be."
msgstr ""
+"Retire et retourne le premier élément du tableau. Retourne [code]null[/code] "
+"si le tableau est vide, sans afficher de message d'erreur. Voir aussi "
+"[method pop_back].\n"
+"[b]Note :[/b] Pour les grands tableaux, cette méthode peut être plus lente "
+"que [method pop_back] car elle réindexera les éléments du tableau suivants "
+"chaque fois qu'elle est appelée. Plus le tableau est grand et plus la "
+"position de l'élément enlevé, plus [method pop_front] sera lent."
#: doc/classes/Array.xml
msgid ""
@@ -9001,6 +9522,11 @@ msgid ""
"push_back] as it will reindex all the array's elements every time it's "
"called. The larger the array, the slower [method push_front] will be."
msgstr ""
+"Ajoute un élément au début du tableau. Voir aussi [method push_back].\n"
+"[b]Note :[/b] Pour les grands tableaux, cette méthode peut être plus lente "
+"que [method push_back] car elle réindexera les éléments du tableau suivants "
+"chaque fois qu'elle est appelée. Plus le tableau est grand et plus la "
+"position de l'élément enlevé, plus [method push_front] sera lent."
#: doc/classes/Array.xml
msgid ""
@@ -9012,6 +9538,13 @@ msgid ""
"element is close to the beginning of the array (index 0). This is because "
"all elements placed after the removed element have to be reindexed."
msgstr ""
+"Retire un élément du tableau par index. Si l'index n'existe pas dans le "
+"tableau, rien ne se passe. Pour supprimer un élément en recherchant sa "
+"valeur, utilisez plutôt [method erase].\n"
+"[b]Note :[/b] Cette méthode ne renvoie pas une valeur.\n"
+"[b]Note :[/b] Sur de grands tableaux, cette méthode sera plus lente si "
+"l'élément enlevé est proche du début du tableau (index 0). C'est parce que "
+"tous les éléments placés après l'élément enlevé doivent être réindexés."
#: doc/classes/Array.xml
msgid ""
@@ -9019,6 +9552,10 @@ msgid ""
"size is smaller, elements are cleared, if bigger, new elements are "
"[code]null[/code]."
msgstr ""
+"Redimensionne le tableau pour contenir un nombre différent d'éléments. Si la "
+"taille du tableau est plus petite, les éléments en trop seront effacés, et "
+"si la taille est plus grande, les nouveaux éléments seront à [code]null[/"
+"code]."
#: doc/classes/Array.xml doc/classes/PoolByteArray.xml
#: doc/classes/PoolColorArray.xml doc/classes/PoolIntArray.xml
@@ -9043,6 +9580,11 @@ msgid ""
"@GDScript.randi]. Call [method @GDScript.randomize] to ensure that a new "
"seed will be used each time if you want non-reproducible shuffling."
msgstr ""
+"Trie le tableau de sorte que tous les éléments auront une position "
+"aléatoire. Cette méthode utilise le générateur de nombres aléatoires global "
+"commun aux méthodes comme [method @GDScript.randi]. Appelez [méthod "
+"@GDScript.randomize] pour s'assurer qu'une nouvelle graine sera utilisée à "
+"chaque fois si vous voulez toujours des séquences de tri aléatoires."
#: doc/classes/Array.xml doc/classes/PoolByteArray.xml
#: doc/classes/PoolColorArray.xml doc/classes/PoolIntArray.xml
@@ -9058,6 +9600,11 @@ msgid ""
"and upper index are inclusive, with the [code]step[/code] describing the "
"change between indices while slicing."
msgstr ""
+"Duplique le sous-ensemble décrit dans la fonction et le renvoie dans un "
+"tableau, en recopiant le tableau en profondeur si [code]deep[/code] est "
+"[code]true[/code]. Les indices inférieur et supérieur sont inclus, avec le "
+"[code]step[/code] décrivant le changement entre les indices pendant le "
+"découpage."
#: doc/classes/Array.xml
msgid ""
@@ -9071,6 +9618,17 @@ msgid ""
"print(strings) # Prints [string1, string10, string11, string2]\n"
"[/codeblock]"
msgstr ""
+"Trie le tableau.\n"
+"[b]Note :[/b] Les chaines sont triées par ordre alphabétique (par opposition "
+"à l'ordre naturel). Cela peut conduire à un comportement inattendu lors du "
+"tri d'un tableau de chaînes se terminant par des nombres. Examinez l'exemple "
+"suivant :\n"
+"[codeblock]\n"
+"var strings = [\"string1\", \"string2\", \"string10\", \"string11\"]\n"
+"strings.sort)(\n"
+"print(strings) # Affiche [string1, string10, string11, string2], parce que "
+"la chaine \"1...\" est avant \"2...\"\n"
+"[/codeblock]"
#: doc/classes/Array.xml
msgid ""
@@ -9096,11 +9654,34 @@ msgid ""
"print(my_items) # Prints [[4, Tomato], [5, Potato], [9, Rice]].\n"
"[/codeblock]"
msgstr ""
+"Trie le tableau en utilisant une méthode personnalisée. Les arguments sont "
+"un objet qui détient la méthode et le nom de cette méthode. La méthode "
+"personnalisée reçoit deux arguments (une paire d'éléments du tableau) et "
+"doit retourner soit [code]true[/code] ou [code]false[/code].\n"
+"Pour deux éléments [code]a[/code] et [code]b[/code], si la méthode donnée "
+"retourne [code]true[/code], l'élément [code]b[/code] sera après élément "
+"[code]a[/code] dans le tableau trié.\n"
+"[b]Note :[/b] Vous ne pouvez pas retourner une valeur de comparaison "
+"aléatoire car l'algorithme de tri s'attend à un résultat déterministe. Cela "
+"entraînerait un comportement inattendu.\n"
+"[codeblock]\n"
+"class MyCustomSorter:\n"
+" static func sort_ascending(a, b): # Par premier élément croissant\n"
+" if a[0] < b[0]:\n"
+" return true\n"
+" return false\n"
+"\n"
+"var my_items = [[5, \"Pomme\"], [9, \"Abricot\"], [4, \"Tomate\"]]\n"
+"my_items.sort_custom(MyCustomSorter, \"sort_ascending\")\n"
+"print(my_items) # Affiche [[4, Tomate], [5, Pomme], [9, Abricot]].\n"
+"[/codeblock]"
#: doc/classes/ArrayMesh.xml
msgid ""
"[Mesh] type that provides utility for constructing a surface from arrays."
msgstr ""
+"Le type [Mesh] qui fournit un utilitaire pour la construction d'une nouvelle "
+"surface à partir de tableaux."
#: doc/classes/ArrayMesh.xml
msgid ""
@@ -9178,10 +9759,25 @@ msgid ""
"length as the vertex array or be empty, except for [constant ARRAY_INDEX] if "
"it is used."
msgstr ""
+"Crée une nouvelle surface.\n"
+"Les surfaces sont créées pour être rendues en utilisant une [code]primitive[/"
+"code], qui peut être l'un des types définis dans [enum Mesh.PrimitiveType] "
+"(Il est préférable lors de l'utilisation d'indices d'utiliser uniquement des "
+"points, des lignes ou des triangles). [method Mesh.get_surface_count] "
+"deviendra l'index [code]surf_idx[/code] pour cette nouvelle surface.\n"
+"L'argument [code]arrays[/code] est un tableau de tableaux. Voir [enum "
+"ArrayType] pour les valeurs utilisées dans ce tableau. Par exemple, "
+"l'argument [code]arrays[/code] est le tableau des sommets. Ce premier sous-"
+"tableau de sommets est nécessaire ; les autres sont facultatifs. L'ajout "
+"d'un tableau d'indices met cette fonction en \"mode index\" où les sommets "
+"et d'autres tableaux deviennent les sources de données et le tableau d'index "
+"définit l'ordre des vertex. Tous les sous-tableau doivent avoir la même "
+"longueur que le tableau des sommets, ou être vides, sauf pour [constant "
+"ARRAY_INDEX] s'il est utilisé."
#: doc/classes/ArrayMesh.xml
msgid "Removes all blend shapes from this [ArrayMesh]."
-msgstr ""
+msgstr "Retire toutes les formes de mélange de ce [ArrayMesh]."
#: doc/classes/ArrayMesh.xml
msgid "Removes all surfaces from this [ArrayMesh]."
@@ -9189,11 +9785,11 @@ msgstr "Retirer toutes les surfaces de ce [ArrayMesh]."
#: doc/classes/ArrayMesh.xml
msgid "Returns the number of blend shapes that the [ArrayMesh] holds."
-msgstr ""
+msgstr "Retourne le nombre de formes de mélange détenues par ce [ArrayMesh]."
#: doc/classes/ArrayMesh.xml
msgid "Returns the name of the blend shape at this index."
-msgstr ""
+msgstr "Retourne le nom de la forme du mélange à cette position."
#: doc/classes/ArrayMesh.xml
msgid ""
@@ -9210,6 +9806,8 @@ msgid ""
"Returns the index of the first surface with this name held within this "
"[ArrayMesh]. If none are found, -1 is returned."
msgstr ""
+"Retourne l'index de la première surface avec ce nom dans ce [ArrayMesh]. Si "
+"aucune surface n'existe, -1 est retourné."
#: doc/classes/ArrayMesh.xml
msgid ""
@@ -9228,6 +9826,8 @@ msgid ""
"Returns the format mask of the requested surface (see [method "
"add_surface_from_arrays])."
msgstr ""
+"Retourne le masque de format de la surface demandée (voir [méthode "
+"add_surface_from_arrays)]."
#: doc/classes/ArrayMesh.xml
msgid "Gets the name assigned to this surface."
@@ -9238,6 +9838,8 @@ msgid ""
"Returns the primitive type of the requested surface (see [method "
"add_surface_from_arrays])."
msgstr ""
+"Retourne le type primitif de la surface demandée (voir [method "
+"add_surface_from_arrays)]."
#: doc/classes/ArrayMesh.xml
msgid ""
@@ -9257,6 +9859,11 @@ msgid ""
"[b]Warning:[/b] Only use if you know what you are doing. You can easily "
"cause crashes by calling this function with improper arguments."
msgstr ""
+"Met à jour une région spécifique de tableaux de maillage directement dans le "
+"GPU.\n"
+"[b]Avertissement :[/b] N'utilisez cette méthode que si vous savez ce que "
+"vous faites. Vous pouvez facilement causer des plantages en appelant cette "
+"fonction avec des arguments inappropriés."
#: doc/classes/ArrayMesh.xml
msgid "Sets the blend shape mode to one of [enum Mesh.BlendShapeMode]."
@@ -9268,6 +9875,9 @@ msgid ""
"Especially useful to avoid unexpected culling when using a shader to offset "
"vertices."
msgstr ""
+"Surcharge le [AABB] avec celui défini par l'utilisateur pour le calcul du "
+"culling d'affichage. Particulièrement utile pour éviter un culling inattendu "
+"lors de l'utilisation d'un shader qui décale les sommets."
#: doc/classes/ArrayMesh.xml
#, fuzzy
@@ -9295,6 +9905,9 @@ msgid ""
"first 3 floats determine the tangent, and the last the binormal direction as "
"-1 or 1."
msgstr ""
+"Le [PoolRealArray] de tangentes des sommets. Chaque élément est un groupe de "
+"4 flottants, les 3 premiers déterminent la tangente, et le dernier la "
+"direction binormale qui est soit -1 ou 1."
#: doc/classes/ArrayMesh.xml
msgid "[PoolColorArray] of vertex colors."
@@ -9335,6 +9948,17 @@ msgid ""
"vertices of each triangle. For lines, the index array is in pairs indicating "
"the start and end of each line."
msgstr ""
+"Un [PoolIntArray] d'entiers utilisés comme indices référentiels de sommets, "
+"de couleurs, de normales, de tangentes et de textures. Tous ces tableaux "
+"doivent avoir le même nombre d'éléments que le tableau des sommets. Aucun "
+"index ne peut dépasser la taille du tableau des sommets. Lorsque ce tableau "
+"d'index est présent, il met la fonction en \"mode d'index\", où l'index "
+"sélectionne les *n-ième* sommet, normal, tangent, couleur, UV, etc. Cela "
+"signifie que si vous voulez avoir des normales ou des couleurs différentes "
+"le long d'une arrête, vous devez doubler ces sommets.\n"
+"Pour les triangles, le tableau d'index est interprété comme des trios, se "
+"référant aux sommets de chaque triangle. Pour les lignes, le tableau d'index "
+"contient des paires indiquant le point de début et de fin de chaque ligne."
#: doc/classes/ArrayMesh.xml doc/classes/Mesh.xml doc/classes/VisualServer.xml
msgid "Represents the size of the [enum ArrayType] enum."
@@ -9396,6 +10020,20 @@ msgid ""
"more about the real world out there especially if only part of the surface "
"is in view."
msgstr ""
+"Le point [ARVRAnchor] est un nœud spatial qui cartographie un emplacement "
+"réel du monde identifié par la plateforme AR à une position dans le monde du "
+"jeu. Par exemple, tant que la détection des plans dans ARKit est activée, "
+"ARKit identifiera et mettra à jour la position des plans (tables, planchers, "
+"etc) et créera des ancrages pour eux.\n"
+"Ce nœud est connecté à l'une des ancres à travers son identifiant unique. "
+"Lorsque vous recevez un signal qu'une nouvelle ancre est disponible, vous "
+"devez ajouter ce nœud à votre scène pour cette ancre. Vous pouvez prédéfinir "
+"les nœuds et définir l'identifiant ; les nœuds resteront simplement sur "
+"0,0,0 jusqu'à ce qu'un plan soit reconnu.\n"
+"Gardez à l'esprit que, tant que la détection du plan est activée, la taille, "
+"le placement et l'orientation d'une ancre seront mis à jour car la logique "
+"de détection en apprend davantage sur le monde réel, surtout si une partie "
+"seulement de la surface est en vue."
#: doc/classes/ARVRAnchor.xml
msgid "Returns the name given to this anchor."
@@ -9406,6 +10044,8 @@ msgid ""
"Returns [code]true[/code] if the anchor is being tracked and [code]false[/"
"code] if no anchor with this ID is currently known."
msgstr ""
+"Retourne [code]true[/code] si l'ancre est suivie et [code]false[/code] si "
+"aucune ancre avec cet identifiant n'est actuellement connue."
#: doc/classes/ARVRAnchor.xml
msgid ""
@@ -9415,6 +10055,11 @@ msgid ""
"can be used to create shadows/reflections on surfaces or for generating "
"collision shapes."
msgstr ""
+"Si fourni par la [ARVRInterface], ça retourne un maillage pour l'ancre. Pour "
+"une ancre, il peut s'agir d'une forme liée à l'objet suivi ou peut être une "
+"maille qui fournit une topologie liée à l'ancre et qui peut être utilisée "
+"pour créer des ombres ou des réflexions sur les surfaces ou pour générer des "
+"formes de collision."
#: doc/classes/ARVRAnchor.xml
msgid ""
@@ -9442,6 +10087,13 @@ msgid ""
"when the AR server identifies that two anchors represent different parts of "
"the same plane and merges them."
msgstr ""
+"L'identifiant de l'ancre. Vous pouvez la définir avant que cette ancre "
+"existe. La première ancre obtient l'identifiant [code]1[/code], la seconde "
+"[code]2[/code], etc. Lorsque les ancres sont enlevées, le moteur peut alors "
+"attribuer l'identifiant correspondant aux nouvelles ancres. Le plus souvent "
+"les ancres \"disparaissent\" quand le serveur AR identifie que deux ancres "
+"représentent différentes parties d'un même plan et décide alors de les "
+"fusionner."
#: doc/classes/ARVRAnchor.xml
msgid ""
@@ -9475,6 +10127,17 @@ msgid ""
"tracking data of the HMD and the location of the ARVRCamera can lag a few "
"milliseconds behind what is used for rendering as a result."
msgstr ""
+"Il s'agit d'un nœud d'aide spatiale pour notre caméra ; notez que, si le "
+"rendu stéréoscopique est applicable (VR-HMD), la plupart des propriétés de "
+"la caméra sont ignorées, car l'information HMD les annule. Les seules "
+"propriétés qui peuvent être fiables sont les plans proches et lointains.\n"
+"La position et l'orientation de ce nœud sont automatiquement mises à jour "
+"par le serveur ARVR pour représenter l'emplacement du HMD si ce suivi est "
+"disponible et peut donc être utilisé par la logique du jeu. Notez que, "
+"contrairement au contrôleur ARVR, le fil d'exécution pour le rendu a accès "
+"aux données de suivi les plus récentes de la HMD et l'emplacement de "
+"l'ARVRCamera peut retarder l'accès de ces données au rendu de quelques "
+"millisecondes."
#: doc/classes/ARVRController.xml
msgid "A spatial node representing a spatially-tracked controller."
@@ -9495,6 +10158,19 @@ msgid ""
"[ARVRServer]. This makes this node ideal to add child nodes to visualize the "
"controller."
msgstr ""
+"C'est un nœud d'aide spatiale qui est lié au suivi des contrôleurs. Il offre "
+"également plusieurs liens utiles à l'état des boutons et commandes des "
+"contrôleurs.\n"
+"Les contrôleurs sont liés par leur identifiant. Vous pouvez créer des nœuds "
+"de contrôleur avant même que les contrôleurs ne soient disponibles. Si votre "
+"jeu utilise toujours deux contrôleurs (un pour chaque main), vous pouvez "
+"prédéfinir les contrôleurs avec les identfiant 1 et 2 ; ils deviendront "
+"actifs dès que les contrôleurs seront identifiés. Si vous attendez que des "
+"contrôleurs supplémentaires soient utilisés, vous devez réagir aux signaux "
+"et ajouter des nœuds ARVRController à votre scène.\n"
+"La position du nœud de contrôleur est automatiquement mise à jour par le "
+"[ARVRServer]. Cela rend ce nœud idéal pour ajouter des nœuds pour visualiser "
+"le contrôleur."
#: doc/classes/ARVRController.xml
msgid ""
@@ -9505,7 +10181,6 @@ msgstr ""
"AR / VR utilisé."
#: doc/classes/ARVRController.xml
-#, fuzzy
msgid ""
"Returns the hand holding this controller, if known. See [enum "
"ARVRPositionalTracker.TrackerHand]."
@@ -9538,25 +10213,31 @@ msgid ""
"the AR/VR controllers. This ID is purely offered as information so you can "
"link up the controller with its joystick entry."
msgstr ""
+"Renvoie l'identifiant de l'objet joystick qui est lié. Chaque contrôleur "
+"suivi par le [ARVRServer] qui a des boutons et un axe sera également "
+"enregistré comme un joystick dans Godot. Cela signifie que tout le suivi "
+"normal des joysticks et la gestion des entrées fonctionnera pour les boutons "
+"et axes trouvés sur les contrôleurs AR/VR. Cet identifiant est seulement "
+"disponible pour que vous puissiez lier le contrôleur avec son entrée de "
+"joystick."
#: doc/classes/ARVRController.xml
-#, fuzzy
msgid ""
"If provided by the [ARVRInterface], this returns a mesh associated with the "
"controller. This can be used to visualize the controller."
msgstr ""
-"Si fourni par l'[XRInterface], ceci renvoie un maillage associé au "
+"Si fourni par la [ARVRInterface], ceci renvoie un maillage associé au "
"contrôleur. Ceci peut être utilisé pour visualiser le contrôleur."
#: doc/classes/ARVRController.xml
-#, fuzzy
msgid ""
"Returns [code]true[/code] if the button at index [code]button[/code] is "
"pressed. See [enum JoystickList], in particular the [code]JOY_VR_*[/code] "
"constants."
msgstr ""
-"Rentourne [code]true[/code] (vrai) si le bouton d'index [code]button[/code] "
-"est préssé. Voir [enum JoyButtonList]."
+"Retourne [code]true[/code] si le bouton d'index [code]button[/code] est "
+"appuyé. Voir [enum JoyButtonList], et surtout les constantes [code]JOY_VR_*[/"
+"code]."
#: doc/classes/ARVRController.xml
msgid ""
@@ -9570,6 +10251,16 @@ msgid ""
"When a controller is turned off, its slot is freed. This ensures controllers "
"will keep the same ID even when controllers with lower IDs are turned off."
msgstr ""
+"ID du contrôleur.\n"
+"Un identifiant de contrôleur à 0 est déconnecté et entraînera toujours un "
+"nœud inactif. L'identifiant de contrôleur 1 est réservé au premier "
+"contrôleur qui s'identifie comme le contrôleur gauche et l'identifiant 2 aux "
+"contrôleur droit.\n"
+"Pour tout autre contrôleur que le [ARVRServer] détecte, les identifiants des "
+"contrôleurs continueront à partir de 3.\n"
+"Lorsqu'un contrôleur est éteint, son emplacement est libéré. Cela assure que "
+"les contrôleurs garderont le même identifiant même si un contrôleur avec un "
+"identifiant inférieur est éteint."
#: doc/classes/ARVRController.xml
msgid ""
@@ -9579,6 +10270,11 @@ msgid ""
"This is a useful property to animate if you want the controller to vibrate "
"for a limited duration."
msgstr ""
+"L'intensité de vibration du contrôleur. L'intervalle va de [code]0.0[/code] "
+"à [code]1.0[/code] avec une précision de [code]0.01[/code]. Si changé, met à "
+"jour [membrez ARVRPositionalTracker.rumble] en conséquence.\n"
+"C'est une propriété utile à animer si vous souhaitez que le contrôleur vibre "
+"pendant une durée limitée."
#: doc/classes/ARVRController.xml
msgid "Emitted when a button on this controller is pressed."
@@ -9613,6 +10309,15 @@ msgid ""
"give us a working setup. You can query the available interfaces through "
"[ARVRServer]."
msgstr ""
+"Cette classe doit être implémentée pour rendre une plateforme AR ou VR "
+"disponible dans Godot et ces modules devraient être implémentés avec des "
+"modules C+ ou GDNative (notez que pour GDNative, la sous-classe "
+"ARVRScriptInterface devrait être utilisée). Une partie de l'interface est "
+"exposée à GDScript afin que vous puissiez détecter, activer et configurer "
+"une plateforme AR ou VR.\n"
+"Les interfaces doivent être écrites de telle manière qu'elles permettent de "
+"fonctionner simplement. Vous pouvez rechercher les interfaces disponibles "
+"via [ARVRServer]."
#: doc/classes/ARVRInterface.xml
msgid ""
@@ -9651,6 +10356,8 @@ msgid ""
"provide feedback to the user whether there are issues with positional "
"tracking."
msgstr ""
+"Si supporté, retourne l'état de notre suivi. Cela vous permettra de fournir "
+"des retours à l'utilisateur s'il y a des problèmes avec le suivi de position."
#: doc/classes/ARVRInterface.xml
msgid ""
@@ -9671,6 +10378,25 @@ msgid ""
"wish to do this if you want to track controllers from other platforms. "
"However, at this point in time only one interface can render to an HMD."
msgstr ""
+"Appelez ceci pour initialiser cette interface. La première interface qui est "
+"initialisée est identifiée comme l'interface primaire et elle sera utilisée "
+"pour faire le rendu de la sortie.\n"
+"Après l'initialisation de l'interface que vous souhaitez utiliser, vous "
+"devez activer le mode AR/VR d'un viseur et le rendu devrait commencer.\n"
+"[b]Note :[/b] Vous devez activer le mode AR/VR sur le point de vue principal "
+"pour tout appareil qui utilise la sortie principale de Godot, comme pour la "
+"VR mobile.\n"
+"Si vous faites cela pour une plate-forme qui gère sa propre sortie (comme "
+"OpenVR), Godot affichera juste un des yeux sans distorsion à l'écran. "
+"Alternativement, vous pouvez ajouter une fenêtre d'affichage séparée à votre "
+"scène et activer AR/VR sur cette fenêtre de d'affichage. Elle sera utilisée "
+"pour sortir HMD, vous permettant d'utiliser la fenêtre principale pour tout "
+"autre utilisation, comme l'utilisation d'une caméra séparée comme pour un "
+"spectateur ou faire un rendu complètement différent.\n"
+"Bien que non utilisé pour l'instant, vous pouvez activer des interfaces "
+"supplémentaires. Vous pouvez le faire si vous voulez suivre les contrôleurs "
+"venant d'autres plateformes. Cependant, actuellement, une seule interface "
+"peut rendre un HMD."
#: doc/classes/ARVRInterface.xml
msgid ""
@@ -9725,6 +10451,12 @@ msgid ""
"[method get_render_targetsize]). Using a separate viewport node frees up the "
"main viewport for other purposes."
msgstr ""
+"Cette interface génère un périphérique externe. Si le port principal est "
+"utilisé, la sortie à l'écran est une mémoire tampon non modifié soit de "
+"l'œil gauche ou du droit (retaillé si la taille du viseur n'est pas changée "
+"au même rapport d'aspect que [method get_render_targetsize)]. L'utilisation "
+"d'un nœud de fenêtre d'affichage séparé libère le port principal pour être "
+"utilisé à d'autres choses."
#: doc/classes/ARVRInterface.xml
msgid ""
@@ -9738,12 +10470,18 @@ msgid ""
"Left eye output, this is mostly used internally when rendering the image for "
"the left eye and obtaining positioning and projection information."
msgstr ""
+"Sortie de l'œil gauche, cela est principalement utilisé à l'interne pour "
+"rendre l'image pour l'œil gauche et obtenir des informations de "
+"positionnement et de projection."
#: doc/classes/ARVRInterface.xml
msgid ""
"Right eye output, this is mostly used internally when rendering the image "
"for the right eye and obtaining positioning and projection information."
msgstr ""
+"La sortie de l'œil droit, c'est principalement utilisé à l'interne pour "
+"rendre l'image pour l'œil droit et obtenir des informations de "
+"positionnement et de projection."
#: doc/classes/ARVRInterface.xml
msgid "Tracking is behaving as expected."
@@ -9754,6 +10492,8 @@ msgid ""
"Tracking is hindered by excessive motion (the player is moving faster than "
"tracking can keep up)."
msgstr ""
+"Le suivi est gêné par un mouvement excessif (le joueur se déplace trop vite "
+"par rapport à ce que le suivi peut suivre)."
#: doc/classes/ARVRInterface.xml
msgid ""
@@ -9766,12 +10506,16 @@ msgid ""
"We don't know the status of the tracking or this interface does not provide "
"feedback."
msgstr ""
+"Nous ne connaissons pas l'état du suivi, ou alors cette interface ne fournit "
+"aucune indication."
#: doc/classes/ARVRInterface.xml
msgid ""
"Tracking is not functional (camera not plugged in or obscured, lighthouses "
"turned off, etc.)."
msgstr ""
+"Le suivi n'est pas fonctionnel (la caméra n'est pas branchée ou cachée, les "
+"lumières sont éteintes, etc.)."
#: modules/gdnative/doc_classes/ARVRInterfaceGDNative.xml
#, fuzzy
@@ -9804,6 +10548,21 @@ msgid ""
"be a child node of this car. Or, if you're implementing a teleport system to "
"move your character, you should change the position of this node."
msgstr ""
+"C'est un nœud spécial dans le système AR/VR qui cartographie l'emplacement "
+"physique du centre de notre espace de suivi à l'emplacement virtuel dans "
+"notre monde de jeu.\n"
+"Il ne devrait y avoir qu'un de ces nœuds dans votre scène et vous devez en "
+"avoir un. Tous les nœuds ARVRCamera, ARVRController et ARVRAnchor devraient "
+"être des enfants directs de ce nœud pour que le suivi spatial fonctionne "
+"correctement.\n"
+"C'est la position de ce nœud que vous mettez à jour lorsque votre personnage "
+"a besoin de passer à travers votre monde de jeu alors qu'il ne se déplace "
+"pas dans le monde réel. Le mouvement dans le monde réel est toujours en "
+"relation avec ce point d'origine.\n"
+"Par exemple, si votre personnage conduit une voiture, le nœud ARVROrigin "
+"devrait être un nœud enfant de cette voiture. Ou, si vous appliquez un "
+"système de téléportation pour déplacer votre personnage, vous devriez "
+"changer la position de ce nœud."
#: doc/classes/ARVROrigin.xml
msgid ""
@@ -9811,6 +10570,9 @@ msgid ""
"assume a scale of 1 game world unit = 1 real world meter.\n"
"[b]Note:[/b] This method is a passthrough to the [ARVRServer] itself."
msgstr ""
+"Vous permet d'ajuster l'échelle à vos unités de votre game. La plupart des "
+"plateformes AR/VR assument une échelle de 1 unité jeu = 1 mètre réel.\n"
+"[b]Note :[/b] Cette méthode est un passage direct au [ARVRServer]."
#: doc/classes/ARVRPositionalTracker.xml
msgid "A tracked object."
@@ -9829,18 +10591,33 @@ msgid ""
"hood objects that make this all work. These are mostly exposed so that "
"GDNative-based interfaces can interact with them."
msgstr ""
+"Une instance de cet objet représente un dispositif qui est suivi, comme un "
+"contrôleur ou un point d'ancrage. Les HMD ne sont pas représentés ici car "
+"ils sont gérés en interne.\n"
+"Comme les contrôleurs sont activés et que l'interface AR/VR les détecte, les "
+"instances de cet objet sont automatiquement ajoutées à cette liste d'objets "
+"de suivi actifs et sont accessibles via [ARVRServer].\n"
+"Les [ARVRController] et [ARVRAnchor] consomment tous deux des objets de ce "
+"type et doivent être utilisés dans votre projet. Les suivant de position "
+"sont juste des objets en interne qui font fonctionner cela. Ceux-ci sont "
+"généralement exposés de sorte que les interfaces basées sur GDNative "
+"puissent interagir avec eux."
#: doc/classes/ARVRPositionalTracker.xml
msgid ""
"Returns the hand holding this tracker, if known. See [enum TrackerHand] "
"constants."
msgstr ""
+"Retourne la main tenant ce traqueur, si connu. Voir les constantes [enum "
+"TrackerHand]."
#: doc/classes/ARVRPositionalTracker.xml
msgid ""
"If this is a controller that is being tracked, the controller will also be "
"represented by a joystick entry with this ID."
msgstr ""
+"Si c'est un contrôleur qui est suivi, le contrôleur sera également "
+"représenté par une entrée de joystick avec cet identifiant."
#: doc/classes/ARVRPositionalTracker.xml
msgid ""
@@ -9849,7 +10626,7 @@ msgstr ""
#: doc/classes/ARVRPositionalTracker.xml
msgid "Returns the controller or anchor point's name if available."
-msgstr ""
+msgstr "Retourne le nom du contrôleur ou du point d'ancrage, si disponible."
#: doc/classes/ARVRPositionalTracker.xml
msgid "Returns the controller's orientation matrix."
@@ -9865,6 +10642,9 @@ msgid ""
"tracker type and matches the ID you need to specify for nodes such as the "
"[ARVRController] and [ARVRAnchor] nodes."
msgstr ""
+"Retourne l'identifiant de suivi interne. Cet identifiant est unique au "
+"suiveur et correspond à l'identifiant que vous devez spécifier pour les "
+"nœuds tels que les nœuds [ARVRController] et [ARVRAnchor]."
#: doc/classes/ARVRPositionalTracker.xml
msgid "Returns [code]true[/code] if this device tracks orientation."
@@ -9892,7 +10672,7 @@ msgstr ""
#: doc/classes/ARVRPositionalTracker.xml
msgid "The hand this tracker is held in is unknown or not applicable."
-msgstr ""
+msgstr "La main de ce traqueur est inconnue ou sa valeur est invalide."
#: doc/classes/ARVRPositionalTracker.xml
msgid "This tracker is the left hand controller."
@@ -9923,6 +10703,8 @@ msgid ""
"Registers a new [ARVRPositionalTracker] that tracks a spatial location in "
"real space."
msgstr ""
+"Enregistre un nouveau [ARVRPositionalTracker] qui suit un emplacement "
+"spatial dans l'espace réel."
#: doc/classes/ARVRServer.xml
msgid ""
@@ -9946,11 +10728,33 @@ msgid ""
"button on a controller for a short period of time, or when implementing a "
"teleport mechanism."
msgstr ""
+"C'est une fonction importante qu'il faut comprendre correctement. Les plates-"
+"formes AR et VR gèrent les positions légèrement différemment.\n"
+"Pour les plateformes qui n'offrent pas de suivi spatial, notre point "
+"d'origine (0,0,0) est l'emplacement de notre HMD, mais vous avez peu de "
+"contrôle sur la direction que le joueur fait face dans le monde réel.\n"
+"Pour les plateformes qui offrent un suivi spatial, notre point d'origine "
+"dépend beaucoup du système. Pour OpenVR, notre point d'origine est "
+"généralement le centre de l'espace de suivi, au sol. Pour d'autres plates-"
+"formes, il s'agit souvent de l'emplacement de la caméra de suivi.\n"
+"Cette méthode vous permet de centrer votre traceur sur l'emplacement du HMD. "
+"Il prendra l'emplacement actuel de l'HMD et l'utilisera pour ajuster toutes "
+"vos données de suivi ; c'est-à-dire réaligner le monde réel à la position "
+"actuelle de votre joueur dans le monde du jeu.\n"
+"Pour que cette méthode produise des résultats utilisables, des informations "
+"de suivi doivent être disponibles. Cela prend souvent quelques trames après "
+"le démarrage de votre jeu.\n"
+"Vous devriez appeler cette méthode après quelques secondes. Par exemple, "
+"lorsque l'utilisateur demande un réalignement de l'écran tenant un bouton "
+"désigné sur un contrôleur pendant une courte période, ou lors de la mise en "
+"œuvre d'un mécanisme de téléportation."
#: doc/classes/ARVRServer.xml
msgid ""
"Clears our current primary interface if it is set to the provided interface."
msgstr ""
+"Efface notre actuelle interface principale si elle est définie pour "
+"l'interface donnée."
#: doc/classes/ARVRServer.xml
msgid ""
@@ -9958,6 +10762,9 @@ msgid ""
"capabilities of an AR/VR platform, you can find the interface for that "
"platform by name and initialize it."
msgstr ""
+"Trouve une interface par son nom. Par exemple, si votre projet utilise des "
+"capacités d'une plateforme AR/VR, vous pouvez trouver l'interface pour cette "
+"plate-forme par son nom et ensuite l'initialiser."
#: doc/classes/ARVRServer.xml
msgid "Returns the primary interface's transformation."
@@ -9978,6 +10785,11 @@ msgid ""
"try to initialize each interface and use the first one that returns "
"[code]true[/code]."
msgstr ""
+"Retourne le nombre d'interfaces actuellement enregistrées avec le serveur AR/"
+"VR. Si votre projet prend en charge plusieurs plateformes AR/VR, vous pouvez "
+"lister les interfaces disponibles, et présenter à l'utilisateur une "
+"sélection ou simplement essayer d'initialiser chaque interface et utiliser "
+"la première interface qui retourne [code]true[/code]."
#: doc/classes/ARVRServer.xml
msgid ""
@@ -10038,6 +10850,8 @@ msgid ""
"Allows you to adjust the scale to your game's units. Most AR/VR platforms "
"assume a scale of 1 game world unit = 1 real world meter."
msgstr ""
+"Vous permet d'ajuster l'échelle des unités de votre jeu. La plupart des "
+"plateformes AR/VR assument une échelle de 1 unité de jeu = 1 mètre réel."
#: doc/classes/ARVRServer.xml
msgid "Emitted when a new interface has been added."
@@ -10054,6 +10868,10 @@ msgid ""
"important to react to this signal to add the appropriate [ARVRController] or "
"[ARVRAnchor] nodes related to this new tracker."
msgstr ""
+"Émis quand un nouveau suiveur a été ajouté. Si vous n'utilisez pas un nombre "
+"fixe de contrôleurs ou si vous utilisez [ARVRAnchor] pour une solution AR, "
+"il est important de réagir à ce signal pour ajouter les nœuds appropriés "
+"[ARVRController] ou [ARVRAnchor] liés à ce nouveau suiveur."
#: doc/classes/ARVRServer.xml
msgid ""
@@ -10063,6 +10881,11 @@ msgid ""
"available (i.e. a new controller is switched on that takes the place of the "
"previous one)."
msgstr ""
+"Émis quand une suiveur est retiré. Vous devez supprimer tout "
+"[ARVRController] ou [ARVRAnchor] si nécessaire. Ce n'est pas non plus "
+"obligatoire, les nœuds deviennent tout simplement inactifs et seront de "
+"nouveau actifs lorsqu'un nouveau suiveur sera disponible (quand un nouveau "
+"contrôleur activé prendra la place du précédent)."
#: doc/classes/ARVRServer.xml
msgid "The tracker tracks the location of a controller."
@@ -10131,6 +10954,10 @@ msgid ""
"the container size is dynamic and the contents' size needs to adjust "
"accordingly without losing proportions."
msgstr ""
+"Arrange les contrôles enfants pour préserver automatiquement leur aspect "
+"lorsque le conteneur est redimensionné. Résout le problème où la taille du "
+"conteneur est dynamique et la taille du contenu doit s'adapter en "
+"conséquence sans perdre ses proportions."
#: doc/classes/AspectRatioContainer.xml doc/classes/BoxContainer.xml
#: doc/classes/CenterContainer.xml doc/classes/Container.xml
@@ -10194,6 +11021,12 @@ msgid ""
"and [member Control.rect_clip_content] is enabled, this allows to show only "
"the container's area restricted by its own bounding rectangle."
msgstr ""
+"La largeur et la hauteur des contrôles enfants sont automatiquement ajustées "
+"pour que leur rectangle englobant recouvre toute la zone du conteneur tout "
+"en gardant le même aspect.\n"
+"Lorsque le rectangle englobant des contrôles d'enfants dépasse la taille du "
+"conteneur et que [member Control.rect_clip_content] est activé, cela permet "
+"de limiter la visibilité à seulement la taille du conteneur."
#: doc/classes/AspectRatioContainer.xml
#, fuzzy
@@ -10261,6 +11094,49 @@ msgid ""
"[code]1.0[/code], then this equals the sum of Euclidean distances of all "
"segments in the path."
msgstr ""
+"A* (A star) est un algorithme informatique qui est largement utilisé dans le "
+"cheminement et la traversée du graph, le processus de traçage des chemins "
+"courts parmi les sommets (points) passant par un ensemble donné de bords "
+"(segments). Il profite d'une utilisation généralisée en raison de sa "
+"performance et de sa précision. L'implémentation dans Godot de A* utilise "
+"par défaut des points dans un espace tridimensionnel et des distances "
+"euclidiennes.\n"
+"Vous devez ajouter des points manuellement avec [method add_point] et créer "
+"des segments manuellement avec [method connect_points]. Ensuite, vous pouvez "
+"tester s'il y a un chemin entre deux points avec la fonction [method "
+"are_points_connected], obtenir un chemin contenant des indices par [method "
+"get_id_path], ou un contenant des coordonnées réelles avec [method "
+"get_point_path].\n"
+"Il est également possible d'utiliser des distances non éuclidiennes. Pour ce "
+"faire, créez une classe qui hérite de [code]AStar[/code] et surchargez les "
+"méthodes [method compute_cost] et [method estimate_cost]. Prenez deux "
+"indices et retournez une longueur, comme le montre l'exemple suivant.\n"
+"[codeblock]\n"
+"clas MyAStar:\n"
+" extends AStar\n"
+"\n"
+" func _compute_cost(u, v):\n"
+" return abs(u - v)\n"
+"\n"
+" func _estimate_cost(u, v):\n"
+" return min(0, abs(u - v) - 1)\n"
+"[/codeblock]\n"
+"[method estimate_cost] doit retourne la valeur minimale de la distance, soit "
+"[code]_estimate_cost(u, v) <= compute_cost(u, v)[ /code]. Cela sert d'indice "
+"pour l'algorithme la méthode [code]_compute_cost[/code] peut être longue à "
+"calculer. Si ce n'est pas le cas, utilisez [method estimate_cost] pour "
+"retourner la même valeur que [method compute_cost] pour fournir à "
+"l'algorithme les informations les plus précises.\n"
+"Si les méthodes par défaut [method estimate_cost] et [method compute_cost] "
+"sont utilisées, ou si la méthode [method estimate_cost] fournie retourne une "
+"limite inférieure du coût du chemin, les chemins retournés par A* seront les "
+"chemins les moins coûteux. Ici, le coût d'un chemin correspond à la somme "
+"des résultats [méthode compute_cost] de tous les segments dans le chemin "
+"multiplié par le [code]weight_scale[/code]s des paramètres de fin des "
+"segments respectifs. Si les méthodes par défaut sont utilisées et que le "
+"[code]weight_scale[/code] de tous les points est [code]1.0[/code], ça "
+"correspond à la somme des distances euclidiennes de tous les segments du "
+"chemin."
#: doc/classes/AStar.xml
msgid ""
@@ -10299,6 +11175,21 @@ msgid ""
"If there already exists a point for the given [code]id[/code], its position "
"and weight scale are updated to the given values."
msgstr ""
+"Ajouter un nouveau point à la position spécifiée avec l'identifiant donné. "
+"L'identifiant [code]id[/code] doit être supérieur ou égal à 0, et le facteur "
+"[code]weight_scale[/code] doit être 0.0 ou supérieur.\n"
+"Le facteur [code]weight_scale[/code] est multiplié par le résultat de "
+"[method _compute_cost] pour déterminer le coût global d'une traversée d'un "
+"segment depuis un voisin jusqu'à ce point. Alors, si la distance est la "
+"même, l'algorithme préfèrera les points avec le facteur de poids "
+"[code]weight_scale[/code] le plus bas pour construire le chemin.\n"
+"[codeblock]\n"
+"var astar = AStar.new()\n"
+"astar.add_point(1, Vector3(1, 0, 0), 4) # Ajoute le point (1, 0, 0) avec le "
+"\"weight_scale\" à 4 et l'identifiant 1\n"
+"[/codeblock]\n"
+"Si un point existe déjà pour l'identifiant [code]id[/code] donné, sa "
+"position et sont facteur de poids seront mis à jour avec la valeur donnée."
#: doc/classes/AStar.xml
msgid ""
@@ -10306,6 +11197,10 @@ msgid ""
"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
+"Retourne si les deux points donnés sont directement reliés par un segment. "
+"Si [code]bidirectionnel[/code] est [code]false[/code], retourne si le "
+"mouvement d'identifiant [code]id[/code] vers l'autre identifiant "
+"[code]to_id[/code] est possible par ce segment."
#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid "Clears all the points and segments."
@@ -10333,12 +11228,16 @@ msgstr ""
"astar.connect_points(1, 2, false)\n"
"[/codeblock]"
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
"code] is prevented, and a unidirectional segment possibly remains."
msgstr ""
+"Supprime le segment entre les points donnés. Si [code]bidirectionnel[/code] "
+"est [code]false[/code], seul le mouvement de l'identifiant [code]id[/code] "
+"vers l'autre identifiant [code]to_id[/code] est bloqué, et un segment "
+"unidirectionnel peut rester."
#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid "Returns the next available point ID with no point associated to it."
@@ -10355,6 +11254,12 @@ msgid ""
"the one with the smallest ID will be returned, ensuring a deterministic "
"result."
msgstr ""
+"Retourne l'identifiant du point le plus proche de [code]to_position[/code], "
+"en prenant en compte les points désactivés en option. Retourne [code]-1[/"
+"code] s'il n'y a pas de points dans l'ensemble de points.\n"
+"[b]Note :[/b] Si plusieurs points sont proches de [code]to_position[/code], "
+"celui avec le plus petit identifiant sera retourné, permettant d'obtenir un "
+"résultat déterministe."
#: doc/classes/AStar.xml
msgid ""
@@ -10517,6 +11422,8 @@ msgid ""
"Removes the point associated with the given [code]id[/code] from the points "
"pool."
msgstr ""
+"Retire le point associé à l'identifiant [code]id[/code] donné de la liste "
+"des points."
#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
@@ -10593,10 +11500,33 @@ msgid ""
"If there already exists a point for the given [code]id[/code], its position "
"and weight scale are updated to the given values."
msgstr ""
+"Ajouter un nouveau point à la position spécifiée avec l'identifiant donné. "
+"L'identifiant [code]id[/code] doit être supérieur ou égal à 0, et le facteur "
+"[code]weight_scale[/code] doit être 0.0 ou supérieur.\n"
+"Le facteur [code]weight_scale[/code] est multiplié par le résultat de "
+"[method _compute_cost] pour déterminer le coût global d'une traversée d'un "
+"segment depuis un voisin jusqu'à ce point. Alors, si la distance est la "
+"même, l'algorithme préfèrera les points avec le facteur de poids "
+"[code]weight_scale[/code] le plus bas pour construire le chemin.\n"
+"[codeblock]\n"
+"var astar = AStar2D.new()\n"
+"astar.add_point(1, Vector2(1, 0), 4) # Ajoute le point (1, 0) avec le "
+"\"weight_scale\" à 4 et l'identifiant 1\n"
+"[/codeblock]\n"
+"Si un point existe déjà pour l'identifiant [code]id[/code] donné, sa "
+"position et sont facteur de poids seront mis à jour avec la valeur donnée."
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
-msgstr "Retourne s'il y a une connexion/segment entre les points spécifiés."
+#, fuzzy
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
+msgstr ""
+"Retourne si les deux points donnés sont directement reliés par un segment. "
+"Si [code]bidirectionnel[/code] est [code]false[/code], retourne si le "
+"mouvement d'identifiant [code]id[/code] vers l'autre identifiant "
+"[code]to_id[/code] est possible par ce segment."
#: doc/classes/AStar2D.xml
msgid ""
@@ -10621,10 +11551,6 @@ msgstr ""
"[/codeblock]"
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr "Supprime le segment entre les points donnés."
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -10713,6 +11639,20 @@ msgid ""
"var neighbors = astar.get_point_connections(1) # Returns [2, 3]\n"
"[/codeblock]"
msgstr ""
+"Retourne un tableau avec les identifiants des points qui forment la "
+"connexion avec le point donné.\n"
+"[codeblock]\n"
+"var astar = AStar2D.new()\n"
+"astar.add_point(1, Vector2(0, 0))\n"
+"astar.add_point(2, Vector2(0, 1))\n"
+"astar.add_point(3, Vector2(1, 1))\n"
+"astar.add_point(4, Vector2(2, 0))\n"
+"\n"
+"astar.connect_points(1, 2, true)\n"
+"astar.connect_points(1, 3, true)\n"
+"\n"
+"var neighbors = astar.get_point_connections(1) # Retourne [2, 3]\n"
+"[/codeblock]"
#: doc/classes/AStar2D.xml
msgid ""
@@ -10753,6 +11693,23 @@ msgid ""
"FLAG_REPEAT] and [constant Texture.FLAG_MIRRORED_REPEAT] flags are ignored "
"when using an AtlasTexture."
msgstr ""
+"La ressource [Texture] qui ne continent qu'une partie de la texture [member "
+"atlas], définie par [member region]. Le principal usage est de découper des "
+"textures d'un atlas de texture, qui est un grand fichier de texture qui "
+"contient plusieurs textures plus petites. Ça consiste en une [Texture] pour "
+"le [member atlas], d'une [member region] qui définit la zone de [member "
+"atlas] à utiliser, et une [member margin] qui définit la largeur de la "
+"bordure autour.\n"
+"[AtlasTexture] ne peut pas être utilisé dans une [AnimatedTexture], ne peut "
+"pas être répéré dans les nœuds tels que [TextureRect], et ne fonctionne pas "
+"correctement si utilisé à l'intérieur d'autres [AtlasTexture]. Plusieurs "
+"[AtlasTexture] peuvent être utilisées pour découper plusieurs textures de "
+"l'atlas. L'utilisation d'un atlas de textures permet d'optimiser "
+"l'utilisation de la mémoire vidéo en limiter les appels par rapport à "
+"plusieurs petits fichiers.\n"
+"[b]Note :[/b] AtlasTextures ne supporte pas les répétition. Les options "
+"[constant Texture.FLAG_REPEAT] et [constant Texture.FLAG_MIRRORED_REPEAT] "
+"sont ignorés pour les AtlasTexture."
#: doc/classes/AtlasTexture.xml
#, fuzzy
@@ -10773,6 +11730,9 @@ msgid ""
"(\"w\" and \"h\" in the editor) resizes the texture so it fits within the "
"margin."
msgstr ""
+"La marge autour de la région. Le paramètre [membre Rect2.size] du [Rect2] "
+"(\"w\" et \"h\" dans l'éditeur) redimensionne la texture de sorte qu'elle "
+"correspond à cette marge."
#: doc/classes/AtlasTexture.xml
msgid "The AtlasTexture's used region."
@@ -10812,13 +11772,15 @@ msgstr ""
#: doc/classes/AudioEffectAmplify.xml
msgid "Increases or decreases the volume being routed through the audio bus."
-msgstr ""
+msgstr "Augmente ou diminue le volume passé au bus audio."
#: doc/classes/AudioEffectAmplify.xml
msgid ""
"Amount of amplification in decibels. Positive values make the sound louder, "
"negative values make it quieter. Value can range from -80 to 24."
msgstr ""
+"La quantité d'amplification en décibels. Les valeurs positives augmentent le "
+"son, les valeurs négatives le diminue. La valeur peut aller de -80 à 24 dB."
#: doc/classes/AudioEffectBandLimitFilter.xml
msgid "Adds a band limit filter to the audio bus."
@@ -10851,7 +11813,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -10974,6 +11938,21 @@ msgid ""
"- Accentuates transients by using a wider attack, making effects sound more "
"punchy."
msgstr ""
+"Le compresseur dynamique d'intensité réduit le niveau du son lorsque le "
+"volume dépasse un certain seuil de décibels. L'une des principales "
+"utilisations d'un compresseur est d'augmenter la gamme dynamique en essayant "
+"de saturer le moins possible le son (quand le son dépasse 0dB).\n"
+"Le compresseur a de nombreuses utilisations dans les mélanges :\n"
+"- Dans le bus \"Master\" pour compresser toute la sortie (même si un "
+"[AudioEffectLimiter] est souvent plus adapté).\n"
+"- Dans les canaux de voix pour s'assurer qu'ils sonnent aussi équilibré que "
+"possible.\n"
+"- Pour le \"Sidechained\". Cela peut réduire le niveau de son enchaînement "
+"avec un autre bus audio pour la détection des seuils. Cette technique est "
+"courante dans le jeu vidéo se mélangeant au niveau de la musique et SFX "
+"tandis que les voix sont entendues.\n"
+"- Accentue les transitions en utilisant une attaque plus grande, rendant les "
+"effets sonores plus percutants."
#: doc/classes/AudioEffectCompressor.xml
msgid ""
@@ -10997,6 +11976,9 @@ msgid ""
"level. The higher the ratio, the more the loud parts of the audio will be "
"compressed. Value can range from 1 to 48."
msgstr ""
+"La quantité de compression appliquée à l'audio après avoir franchi le seuil. "
+"Plus le rapport est élevé, plus les parties hautes de l'audio seront "
+"comprimées. La valeur peut aller de 1 à 48."
#: doc/classes/AudioEffectCompressor.xml
msgid ""
@@ -11007,12 +11989,16 @@ msgstr ""
#: doc/classes/AudioEffectCompressor.xml
msgid "Reduce the sound level using another audio bus for threshold detection."
msgstr ""
+"Réduit le niveau sonore en utilisant un autre bus audio pour détecter les "
+"seuils."
#: doc/classes/AudioEffectCompressor.xml
msgid ""
"The level above which compression is applied to the audio. Value can range "
"from -60 to 0."
msgstr ""
+"Le niveau au-dessus duquel la compression est appliquée à l'audio. La valeur "
+"peut aller de -60 à 0."
#: doc/classes/AudioEffectDelay.xml
msgid ""
@@ -11020,6 +12006,9 @@ msgid ""
"period of time.\n"
"Two tap delay and feedback options."
msgstr ""
+"Ajoute un effet audio de retard à un bus audio. Joue le signal d'entrée "
+"après une période de temps.\n"
+"Deux options de retard et de rétroaction."
#: doc/classes/AudioEffectDelay.xml
msgid ""
@@ -11206,6 +12195,18 @@ msgid ""
"Band 10: 16000 Hz\n"
"See also [AudioEffectEQ], [AudioEffectEQ6], [AudioEffectEQ21]."
msgstr ""
+"Bandes de fréquence :\n"
+"Bande 1 : 31 Hz\n"
+"Bande 2 : 62 Hz\n"
+"Bande 3 : 125 Hz\n"
+"Bande 4 : 250 Hz\n"
+"Bande 5 : 500 Hz\n"
+"Bande 6 : 1000 Hz\n"
+"Bande 7 : 2000 Hz\n"
+"Bande 8 : 4000 Hz\n"
+"Bande 9 : 8000 Hz\n"
+"Bande 10 : 16000 Hz\n"
+"Voir aussi [AudioEffectEQ], [AudioEffectEQ6], [AudioEffectEQ21]."
#: doc/classes/AudioEffectEQ21.xml
msgid ""
@@ -11282,6 +12283,14 @@ msgid ""
"Band 6: 10000 Hz\n"
"See also [AudioEffectEQ], [AudioEffectEQ10], [AudioEffectEQ21]."
msgstr ""
+"Bandes de fréquence :\n"
+"Bande 1 : 32 Hz\n"
+"Bande 2 : 100 Hz\n"
+"Bande 3 : 320 Hz\n"
+"Bande 4 : 1000 Hz\n"
+"Bande 5 : 3200 Hz\n"
+"Bande 6 : 10000 Hz\n"
+"Voir aussi [AudioEffectEQ], [AudioEffectEQ10] et [AudioEffectEQ21]."
#: doc/classes/AudioEffectFilter.xml
msgid "Adds a filter to the audio bus."
@@ -11336,6 +12345,13 @@ msgid ""
"and progressively increases its effect as the input level increases such "
"that the threshold is never exceeded."
msgstr ""
+"Un limiteur est semblable à un compresseur, mais il est moins flexible et "
+"conçu pour limiter le son au delà d'un certain seuil de décibels donné. "
+"L'ajout d'un limiteur dans le bus \"Master\" est toujours recommandé pour "
+"réduire les effets de la coupure.\n"
+"La coupure douce commence à réduire les pics un peu en dessous du seuil et "
+"augmente progressivement son effet puisque le niveau d'entrée augmente de "
+"sorte que le seuil n'est jamais dépassé."
#: doc/classes/AudioEffectLimiter.xml
msgid ""
@@ -11460,6 +12476,11 @@ msgid ""
"this higher latency are especially noticeable on sounds that have sudden "
"amplitude changes."
msgstr ""
+"La taille de la mémoire de la [url=https://fr.wikipedia.org/wiki/"
+"Transformation_de_Fourier_rapide]Transformation de Fourier rapide[/url]. Les "
+"valeurs plus élevées lissent l'effet dans le temps, mais ont une plus grande "
+"latence. Cette latence sera bien plus visible sur les sons qui changent "
+"soudainement."
#: doc/classes/AudioEffectPitchShift.xml
msgid ""
@@ -11475,6 +12496,10 @@ msgid ""
"(infinitely low pitch, inaudible) to [code]16[/code] (16 times higher than "
"the initial pitch)."
msgstr ""
+"L'échelle de pitch à utiliser. [code]1.0[/code] est le pitch par défaut et "
+"joue des sons non modifiés. [member pitch_scale] peut aller de [code]0.0[/"
+"code] (une hauteur infiniment basse, inaudible) à [code]16[/code] (16 fois "
+"supérieur à la hauteur initiale)."
#: doc/classes/AudioEffectPitchShift.xml
#: doc/classes/AudioEffectSpectrumAnalyzer.xml
@@ -11543,10 +12568,19 @@ msgid ""
"16-bit, or compressed). It checks whether or not the recording is active, "
"and if it is, records the sound. It then returns the recorded sample."
msgstr ""
+"Permet à l'utilisateur d'enregistrer le son d'un bus audio. Cela peut "
+"inclure toutes les sorties audio de Godot lorsqu'elles sont utilisées sur le "
+"bus audio \"Master\".\n"
+"Peut être utilisé (avec un [AudioStreamMicrophone)] pour enregistrer un "
+"microphone.\n"
+"Il définit et obtient le format dans lequel le fichier audio sera enregistré "
+"(8-bit, 16-bit ou compressé). Il vérifie si l'enregistrement est actif ou "
+"non, et si c'est le cas, enregistre le son. Il retourne ensuite "
+"l'échantillon enregistré."
#: doc/classes/AudioEffectRecord.xml
msgid "Recording with microphone"
-msgstr ""
+msgstr "L'enregistrement avec le microphone"
#: doc/classes/AudioEffectRecord.xml
msgid "Returns the recorded sample."
@@ -11561,12 +12595,16 @@ msgid ""
"If [code]true[/code], the sound will be recorded. Note that restarting the "
"recording will remove the previously recorded sample."
msgstr ""
+"Si [code]true[/code], le son sera enregistré. Notez que le redémarrage de "
+"l'enregistrement supprimera l'échantillon précédemment enregistré."
#: doc/classes/AudioEffectRecord.xml
msgid ""
"Specifies the format in which the sample will be recorded. See [enum "
"AudioStreamSample.Format] for available formats."
msgstr ""
+"Spécifie le format dans lequel l'échantillon sera enregistré. Voir [enum "
+"AudioStreamSample.Format] pour les formats disponibles."
#: doc/classes/AudioEffectReverb.xml
msgid ""
@@ -11574,6 +12612,9 @@ msgid ""
"Simulates the sound of acoustic environments such as rooms, concert halls, "
"caverns, or an open spaces."
msgstr ""
+"Ajoute un effet audio de réverbération à un bus audio.\n"
+"Simule le son des environnements acoustiques tels que les chambres, les "
+"salles de concert, les cavernes ou les espaces ouverts."
#: doc/classes/AudioEffectReverb.xml
msgid ""
@@ -11885,6 +12926,13 @@ msgid ""
"input. If an invalid device name is set, the value will be reverted back to "
"[code]\"Default\"[/code]."
msgstr ""
+"Le nom du périphérique actuel pour l'entrée audio (voir [method "
+"get_device_list)]. Sur les systèmes avec plusieurs entrées audio (comme "
+"l'analogique, l'USB et l'audio par HDMI), cela peut être utilisé pour "
+"sélectionner le périphérique d'entrée pour l'audio. La valeur "
+"[code]\"Defaut\"[/code] enregistrera l'audio sur l'entrée audio par défaut "
+"du système. Si un nom de périphérique invalide est défini, la valeur sera "
+"retournée à [code]\"Defaut\"[/code]."
#: doc/classes/AudioServer.xml
msgid ""
@@ -11895,6 +12943,13 @@ msgid ""
"output. If an invalid device name is set, the value will be reverted back to "
"[code]\"Default\"[/code]."
msgstr ""
+"Le nom du périphérique actuel pour la sortie audio (voir [method "
+"get_device_list)]. Sur les systèmes avec plusieurs sorties audio (tels que "
+"l'analogique, l'USB et l'audio par HDMI), cela peut être utilisé pour "
+"sélectionner le périphérique de sortie de l'audio. La valeur "
+"[code]\"Default\"[/code] jouera l'audio sur la sortie audio par défaut au "
+"niveau du système. Si un nom de périphérique invalide est défini, la valeur "
+"[code]\"Default\"[/code] sera retournée."
#: doc/classes/AudioServer.xml
msgid ""
@@ -11987,6 +13042,18 @@ msgid ""
"as [code]32000[/code] or [code]22050[/code] may be usable with no loss in "
"quality."
msgstr ""
+"Le taux d'échantillonnage à utiliser (en Hz). Les valeurs plus élevées "
+"demandent plus de puissant de CPU, mais cela produit une meilleure qualité.\n"
+"Dans les jeux, les taux d'échantillonnage courants sont [code]11025[/code], "
+"[code]16000[/code], [code]22050[/code], [code]32000[/code], [code]44100[/"
+"code], et [code]48000[/code].\n"
+"D'après le [url=https://fr.wikipedia.org/wiki/"
+"Th%C3%A9or%C3%A8me_d'%C3%A9chantillonnage]Théorème d'échantillonnage[/url], "
+"il n'y a aucune différence de qualité pour l'audition humaine au-delà de 40 "
+"000 Hz (puisque la plupart des humains ne peuvent entendre que jusqu'à 20 "
+"000 Hz, et souvent bien moins). Si vous générez des sons inférieurs tels que "
+"les voix, des taux d'échantillonnage inférieurs tels que [code]32000[/code] "
+"ou [code]22050[/code] peuvent être utilisables sans perte de qualité audible."
#: doc/classes/AudioStreamGeneratorPlayback.xml
msgid "Plays back audio generated using [AudioStreamGenerator]."
@@ -11997,6 +13064,8 @@ msgid ""
"This class is meant to be used with [AudioStreamGenerator] to play back the "
"generated audio in real-time."
msgstr ""
+"Cette classe est destinée à être utilisée avec un [AudioStreamGenerator] "
+"pour lire l'audio généré en temps réel."
#: doc/classes/AudioStreamGeneratorPlayback.xml
#, fuzzy
@@ -12246,6 +13315,19 @@ msgid ""
"[member unit_db] to a very low value like [code]-100[/code] (which isn't "
"audible to human hearing)."
msgstr ""
+"Joue un effet sonore avec des effets sonores dirigés, amortit par la "
+"distance au besoin, qui génère l'effet de la position audible dans l'espace "
+"environnement. Pour plus de réalisme, un filtre à passe-bas s'applique "
+"automatiquement aux sons lointains. Cela peut être désactivé en définissant "
+"[member attenuation_filter_cutoff_hz] à [code]20500[/code].\n"
+"Par défaut, l'audio est entendu depuis la position de la caméra. Cela peut "
+"être changé en ajoutant un nœud [Listener] à la scène et en l'activant en "
+"appelant [method Listener.make_current] sur lui.\n"
+"Voir aussi [AudioStreamPlayer] pour jouer un son non-positionnel.\n"
+"[b]Note :[/b] Masquer un nœud [AudioStreamPlayer3D] ne désactive pas sa "
+"sortie audio. Pour désactiver temporairement une sortie audio "
+"[AudioStreamPlayer3D], définissez [member unit_db] à une valeur très basse "
+"comme [code]-100[/code] dB (qui n'est pas audible humainement)."
#: doc/classes/AudioStreamPlayer3D.xml
msgid ""
@@ -12262,6 +13344,12 @@ msgid ""
"\"water\" area so that sounds played in the water are redirected through an "
"audio bus to make them sound like they are being played underwater."
msgstr ""
+"Détermine quelles calques du [Area] affectent le son pour les effets de "
+"réverbération et les effets des bus audio. Les aires peuvent être utilisées "
+"pour rediriger les [AudioStream] afin qu'ils jouent dans un certain bus "
+"audio. Un exemple d'utilisation est de faire une aire \"eau\" où les sons "
+"joués dans l'eau sont redirigés par un bus audio qui modifie ces sons pour "
+"qu'ils donnent l'impression d'être joués dans l'eau."
#: doc/classes/AudioStreamPlayer3D.xml
msgid ""
@@ -12304,6 +13392,11 @@ msgid ""
"doppler_tracking] property is set to a value other than [constant Camera."
"DOPPLER_TRACKING_DISABLED]."
msgstr ""
+"Décide dans quelle mesure [url=https://fr.wikipedia.org/wiki/"
+"Effet_Doppler]L'effet Doppler[/url] doit être calculé.\n"
+"[b]Note :[/b] Ce n'est efficace que si la propriété actuelle [Camera] "
+"enregistrée [member Camera.doppler_tracking] est définie à une valeur autre "
+"que [constant Camera. DOPPLER_TRACKING_DISABLED]"
#: doc/classes/AudioStreamPlayer3D.xml
msgid "The angle in which the audio reaches cameras undampened."
@@ -13898,6 +14991,12 @@ msgid ""
"to create [CallbackTweener]. Any [CallbackTweener] created manually will not "
"function correctly."
msgstr ""
+"[CallbackTweener] est utilisé pour appeler une méthode dans une séquence "
+"d'interpolation. Voir [method SceneTreeTween.tween_callback] pour plus "
+"d'informations sur son utilisation.\n"
+"[b]Note :[/b] [method SceneTreeTween.tween_callback] est le seul moyen "
+"correct de créer un [CallbackTweener]. Tout [CallbackTweener] créé "
+"manuellement ne fonctionnera pas correctement."
#: doc/classes/CallbackTweener.xml
msgid ""
@@ -13908,6 +15007,12 @@ msgid ""
"after 2 seconds\n"
"[/codeblock]"
msgstr ""
+"Retarde l'appel par le temps donné en secondes. Par exemple :\n"
+"[codeblock]\n"
+"var tween = get_tree().create_tween()\n"
+"tween.tween_callback(queue_free).set_delay(2) # Cela va appeler "
+"\"queue_free()\"\" après 2 secondes\n"
+"/[codeblock]"
#: doc/classes/Camera.xml
msgid "Camera node, displays from a point of view."
@@ -13923,6 +15028,14 @@ msgid ""
"capabilities to a [Viewport], and, without one, a scene registered in that "
"[Viewport] (or higher viewports) can't be displayed."
msgstr ""
+"La caméra est un nœud spécial qui affiche ce qui est visible depuis son "
+"emplacement actuel. Les caméras s'enregistrent dans le nœud [Viewport] le "
+"plus proche (en remontant l'arborescence). Une seule caméra peut être active "
+"par fenêtre d'affichage. Si aucune fenêtre d'affichage n'est disponible dans "
+"l'arborescence, la caméra s'enregistrera dans la fenêtre d'affichage racine. "
+"En d'autres termes, une caméra permet l'affichage en 3D dans un [Viewport] "
+"et, sans caméra, une scène enregistrée dans ce [Viewport] (où les fenêtres "
+"d'affichage plus hautes) n'affichent rien."
#: doc/classes/Camera.xml
msgid ""
@@ -14049,6 +15162,19 @@ msgid ""
"unproject_position(global_transform.origin)\n"
"[/codeblock]"
msgstr ""
+"Retourne les coordonnées 2D dans le rectangle [Viewport] qui projette le "
+"point 3D donné dans l'espace global.\n"
+"[b]Note :[/b] Lors de l'utilisation de cette fonction pour positionner des "
+"éléments graphiques sur un viseur 3D, utilisez [method is_position_behind] "
+"pour les empêcher d'apparaître si ce point 3D est derrière la caméra :\n"
+"[codeblock]\n"
+"# Ce bloc de code fait partie d'un script qui hérite de Spatial.\n"
+"# `control` est une référence à un nœud héritant de Control.\n"
+"control.visible = not get_viewport().get_camera()."
+"is_position_behind(global_transform.origin)\n"
+"control.rect_position = get_viewport().get_camera()."
+"unproject_position(global_transform.origin)\n"
+"/[codeblock]"
#: doc/classes/Camera.xml
msgid ""
@@ -14074,6 +15200,15 @@ msgid ""
"Perspective menu in the top-left corner of the 3D viewport and toggle "
"[b]Enable Doppler[/b]."
msgstr ""
+"Si n'est pas [constant DOPPLER_TRACKING_DISABLED], cette caméra simulera "
+"[url=https://fr.wikipedia.org/wiki/Effet_Doppler]L'effet Doppler[/url] pour "
+"les objets modifiés en particulier durant la méthode [code]_process[/code]. "
+"L'effet Doppler est seulement simulé pour les nœuds [AudioStreamPlayer3D] "
+"qui ont [member AudioStreamPlayer3D.doppler_tracking] défini à une valeur "
+"autre que [constant AudioStreamPlayer3D.DOPPLER_TRACKING_DISABLED]\n"
+"[b]Note :[/b] Pour basculer la prévisualisation de l'effet Doppler dans "
+"l'éditeur, utilisez le menu \"Perspective\" dans le coin supérieur gauche de "
+"la vue 3D et activer l'option [b]Activer Doppler[/b]."
#: doc/classes/Camera.xml
msgid "The [Environment] to use for this camera."
@@ -14482,6 +15617,8 @@ msgid ""
"The camera's position is fixed so that the top-left corner is always at the "
"origin."
msgstr ""
+"La position de l'appareil photo est fixe de telle sorte que le coin "
+"supérieur gauche soit toujours placé sur l'origine."
#: doc/classes/Camera2D.xml
msgid ""
@@ -14504,6 +15641,8 @@ msgid ""
"A camera feed gives you access to a single physical camera attached to your "
"device."
msgstr ""
+"Un flux de caméra vous donne accès à une caméra physique qui est connectée à "
+"votre appareil."
#: doc/classes/CameraFeed.xml
msgid ""
@@ -14515,6 +15654,14 @@ msgid ""
"for you if you set the environment to show the camera image in the "
"background."
msgstr ""
+"Un flux de caméra vous donne accès à une caméra physique qui est connectée à "
+"votre appareil. Lorsqu'il est activé, Godot commencera à capturer les images "
+"de cette caméra qui pourront alors être utilisées. Voir aussi "
+"[CameraServer].\n"
+"[b]Note :[/b] Beaucoup de caméras renvoient des images au format YCbCr qui "
+"sont divisées en deux textures et doivent être combinées dans un shader. "
+"Godot le fera automatiquement si vous configurez l'environnement pour "
+"afficher cette image comme arrière-plan."
#: doc/classes/CameraFeed.xml
msgid "Returns the unique ID for this feed."
@@ -14556,6 +15703,8 @@ msgid ""
"Feed supplies separate Y and CbCr images that need to be combined and "
"converted to RGB."
msgstr ""
+"Fournis des images Y et CbCr séparées qui doivent être combinées puis "
+"converties en RGB."
#: doc/classes/CameraFeed.xml
msgid "Unspecified position."
@@ -14582,6 +15731,13 @@ msgid ""
"[b]Note:[/b] This class is currently only implemented on macOS and iOS. On "
"other platforms, no [CameraFeed]s will be available."
msgstr ""
+"Le [CameraServer] garde en mémoire de différentes caméras accessibles dans "
+"Godot. Ce sont des caméras externes telles que des webcams ou les caméras "
+"sur votre téléphone.\n"
+"Ce serveur est notamment utilisé pour fournir des flux vidéo venant de la "
+"caméra aux modules AR.\n"
+"[b]Note :[/b] Cette classe n'est actuellement implémentée que sur macOS et "
+"iOS. Sur les autres plates-formes, aucun [CameraFeed] ne sera disponible."
#: doc/classes/CameraServer.xml
#, fuzzy
@@ -14693,6 +15849,33 @@ msgid ""
"parameters must have angles specified as [i]radians[/i]. To convert degrees "
"to radians, use [method @GDScript.deg2rad]."
msgstr ""
+"La classe de base de tout ce qui est en 2D. Les objets du canevas sont placé "
+"dans une arborescence; les enfants héritent et étendent la transformation du "
+"parent. [CanvasItem] est hérité par [Control] pour tout ce qui concerne "
+"l'interface utilisateur, et par [Node2D] pour tout ce qui concerne le moteur "
+"2D.\n"
+"Tout [CanvasItem] peut servir à dessiner. Pour cela, [méthode update] doit "
+"être appelée, puis [constant NOTIFICATION_DRAW] sera reçu lors du temps "
+"inoccupé pour la requête de dessin. En raison de cela, les éléments des "
+"canevas n'ont pas besoin d'être redessinés à chaque trame, ce qui améliore "
+"considérablement les performances. Plusieurs fonctions pour dessiner dans un "
+"[CanvasItem] sont fournies (voir [code]draw_*[/code]). Cependant, elles ne "
+"peuvent être utilisés qu'à l'intérieur des fonctions virtuelles [method "
+"Object._notification], des signaux ou de [method _draw].\n"
+"Les objets des canevas sont dessinés dans l'ordre de l'arborescence. Par "
+"défaut, les enfants sont au-dessus de leurs parents afin que le [CanvasItem] "
+"racine soit dessiné en arrière fond. Ce comportement peut être modifié pour "
+"chaque élément.\n"
+"Un [CanvasItem] peut aussi être caché, ce qui cachera aussi ses enfants. Il "
+"existe de nombreuses façons de modifier des paramètres tels que la "
+"modulation (pour lui-même et ses enfants) et la modulation de ce seul "
+"élément, ainsi que son mode de mélange.\n"
+"Enfin, une notification de transformation peut être demandée, ce qui "
+"signalera au nœud que sa position globale a changé au cas où l'arborescence "
+"parente a changé.\n"
+"[b]Note :[/b] Sauf exception, toutes les paramètres d'angle doivent être des "
+"spécifiés en [i]radians[/i]. Pour convertir des degrés en radians, utilisez "
+"[méthod @GDScript.deg2rad]"
#: doc/classes/CanvasItem.xml doc/classes/CanvasLayer.xml
#: doc/classes/InputEvent.xml doc/classes/Viewport.xml
@@ -14724,16 +15907,32 @@ msgid ""
"mipmaps to perform antialiasing. 2D batching is also still supported with "
"those antialiased lines."
msgstr ""
+"Dessine un arc non rempli entre les deux angles donnés. Plus la valeur "
+"[code]point_count[/code] est grande, plus la courbe est lisse. Voir aussi "
+"[method draw_circle].\n"
+"[b]Note :[/b] Le dessin de ligne n'est pas accéléré par lots si "
+"[code]antialiased[/code] est [code]true[/code].\n"
+"[b]Note :[/b] En raison de son fonctionnement, l'anticrénelage calculé en "
+"interne n'est pas correct pour les lignes semi-transparents voire peut ne "
+"pas fonctionner sur certaines plateformes. Vous pouvez corriger ce problème "
+"en installant le greffon [url=https://github.com/godot-extended-libraries/"
+"godot-antialiased-line2d]Antialiased Line2D[/url] puis créez un nœud "
+"\"AntialiasedPolygon2D\". Ce nœud utilise des texture avec des mipmaps "
+"personnalisés pour afficher l'anticrénelage. L'accélération par lot est "
+"toujours supporté même avec les lignes avec anticrénelage."
#: doc/classes/CanvasItem.xml
msgid ""
"Draws a string character using a custom font. Returns the advance, depending "
"on the character width and kerning with an optional next character."
msgstr ""
+"Dessine un caractère d'une chaîne en utilisant une police personnalisée. "
+"Retourne l'avancement, en fonction de la largeur de caractère et du kerning "
+"avec un caractère optionnel suivant."
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -14741,6 +15940,14 @@ msgid ""
"create an AntialiasedRegularPolygon2D node. That node relies on a texture "
"with custom mipmaps to perform antialiasing."
msgstr ""
+"Dessine un cercle coloré rempli. Voir aussi [method draw_arc], [method "
+"draw_polyline] et [method draw_polygon].\n"
+"[b]Note :[/b] L'anticrénelage intégré n'est pas prévu pour [méthod "
+"draw_circle]. Vous pouvez corriger ce problème en installant le greffon "
+"[url=https://github.com/godot-extended-libraries/godot-antialiased-"
+"line2d]Antialiased Line2D[/url] puis créez un nœud "
+"AntialiasedRegularPolygon2D. Ce nœud utilise des texture avec des mipmaps "
+"personnalisés pour afficher l'anticrénelage."
#: doc/classes/CanvasItem.xml
msgid ""
@@ -14754,6 +15961,16 @@ msgid ""
"AntialiasedPolygon2D node. That node relies on a texture with custom mipmaps "
"to perform antialiasing."
msgstr ""
+"Dessine un polygone coloré avec un nombre donné de points, qu'il soit "
+"convexe ou concave. Contrairement à [method draw_polygon], une seule couleur "
+"doit être spécifiée pour tout le polygone.\n"
+"[b]Note :[/b] En raison de son fonctionnement, l'anticrénelage calculé en "
+"interne n'est pas correct pour les polygones semi-transparents voire peut ne "
+"pas fonctionner sur certaines plateformes. Vous pouvez corriger ce problème "
+"en installant le greffon [url=https://github.com/godot-extended-libraries/"
+"godot-antialiased-line2d]Antialiased Line2D[/url] puis créez un nœud "
+"\"AntialiasedPolygon2D\". Ce nœud utilise des texture avec des mipmaps "
+"personnalisés pour afficher l'anticrénelage."
#: doc/classes/CanvasItem.xml
msgid ""
@@ -14770,6 +15987,19 @@ msgid ""
"perform antialiasing. 2D batching is also still supported with those "
"antialiased lines."
msgstr ""
+"Dessine une ligne d'un point 2D à un autre, avec une couleur et une "
+"épaisseur données. L'anticrénelage peut être activé en option. Voir aussi "
+"[method draw_multiline] et [method draw_polyline].\n"
+"[b]Note :[/b] Le dessin de ligne n'est pas accéléré par lots si "
+"[code]antialiased[/code] est [code]true[/code].\n"
+"[b]Note :[/b] En raison de son fonctionnement, l'anticrénelage calculé en "
+"interne n'est pas correct pour les lignes semi-transparents voire peut ne "
+"pas fonctionner sur certaines plateformes. Vous pouvez corriger ce problème "
+"en installant le greffon [url=https://github.com/godot-extended-libraries/"
+"godot-antialiased-line2d]Antialiased Line2D[/url] puis créez un nœud "
+"\"AntialiasedPolygon2D\". Ce nœud utilise des texture avec des mipmaps "
+"personnalisés pour afficher l'anticrénelage. L'accélération par lot est "
+"toujours supporté même avec les lignes avec anticrénelage."
#: doc/classes/CanvasItem.xml
msgid ""
@@ -14850,6 +16080,17 @@ msgid ""
"AntialiasedPolygon2D node. That node relies on a texture with custom mipmaps "
"to perform antialiasing."
msgstr ""
+"Dessine un polygone plein à partir d'un nombre arbitraire de points, qu'il "
+"soit convexe ou concave. Contrairement à [method draw_colored_polygon], la "
+"couleur de chaque point peut être changée individuellement. Voir aussi "
+"[method draw_polyline] et [method draw_polyline_colors].\n"
+"[b]Note :[/b] En raison de son fonctionnement, l'anticrénelage calculé en "
+"interne n'est pas correct pour les polygones semi-transparents voire peut ne "
+"pas fonctionner sur certaines plateformes. Vous pouvez corriger ce problème "
+"en installant le greffon [url=https://github.com/godot-extended-libraries/"
+"godot-antialiased-line2d]Antialiased Line2D[/url] puis créez un nœud "
+"\"AntialiasedPolygon2D\". Ce nœud utilise des texture avec des mipmaps "
+"personnalisés pour afficher l'anticrénelage."
#: doc/classes/CanvasItem.xml
msgid ""
@@ -14865,6 +16106,19 @@ msgid ""
"AntialiasedPolygon2D node. That node relies on a texture with custom mipmaps "
"to perform antialiasing."
msgstr ""
+"Dessine des segments interconnectés d'une couleur [code]color[/code] et "
+"d'une épaisseur [code]width[/code] constantes avec un anticrénelage "
+"facultatif. Si vous dessinez de grandes quantités de lignes, cette méthode "
+"est plus rapide que d'appeler [méthode draw_line] à chaque ligne. Pour "
+"dessiner des lignes déconnectées, utilisez plutôt [method draw_multiline]. "
+"Voir aussi [method draw_polygon].\n"
+"[b]Note :[/b] En raison de son fonctionnement, l'anticrénelage calculé en "
+"interne n'est pas correct pour les polygones semi-transparents voire peut ne "
+"pas fonctionner sur certaines plateformes. Vous pouvez corriger ce problème "
+"en installant le greffon [url=https://github.com/godot-extended-libraries/"
+"godot-antialiased-line2d]Antialiased Line2D[/url] puis créez un nœud "
+"\"AntialiasedPolygon2D\". Ce nœud utilise des texture avec des mipmaps "
+"personnalisés pour afficher l'anticrénelage."
#: doc/classes/CanvasItem.xml
msgid ""
@@ -14904,6 +16158,11 @@ msgid ""
"See also [method draw_line], [method draw_polyline], [method draw_polygon], "
"and [method draw_rect]."
msgstr ""
+"Dessine une primitive personnalisée. 1 point pour dessiner un point, 2 "
+"points pour une ligne, 3 points pour un triangle, et 4 points pour un quad. "
+"Si 0 points ou plus de 4 points sont spécifiés, rien ne sera dessiné et un "
+"message d'erreur sera affiché. Voir aussi [method draw_line], [method "
+"draw_polyline], [method draw_polygon], et [method draw_rect]."
#: doc/classes/CanvasItem.xml
msgid ""
@@ -14922,6 +16181,21 @@ msgid ""
"AntialiasedPolygon2D node. That node relies on a texture with custom mipmaps "
"to perform antialiasing."
msgstr ""
+"Dessine un rectangle. Si [code]filled[/code] est [code]true[/code], le "
+"rectangle sera rempli avec la couleur [code]color[/code] spécifiée. Si "
+"[code]filled[/code] est [code]false[/code], seule la bordure du rectangle "
+"sera dessinée avec [code]color[/code] et l'épaisseur [code]width[/code] "
+"spécifiées. Si [code]antialiased[/code] est [code]true[/code], il sera tenté "
+"d'utiliser de l'anticrénelage pour l'affichage des bordures via OpenGL.\n"
+"[b]Note :[/b] [code]width[/code] et [code]antialiased[/code] ne seront pris "
+"en compte que quand [code]filled[/code] est [code]false[/code].\n"
+"[b]Note :[/b] En raison de son fonctionnement, l'anticrénelage calculé en "
+"interne n'est pas correct pour les polygones semi-transparents voire peut ne "
+"pas fonctionner sur certaines plateformes. Vous pouvez corriger ce problème "
+"en installant le greffon [url=https://github.com/godot-extended-libraries/"
+"godot-antialiased-line2d]Antialiased Line2D[/url] puis créez un nœud "
+"\"AntialiasedPolygon2D\". Ce nœud utilise des texture avec des mipmaps "
+"personnalisés pour afficher l'anticrénelage."
#: doc/classes/CanvasItem.xml
msgid ""
@@ -14956,6 +16230,20 @@ msgid ""
"[/codeblock]\n"
"See also [method Font.draw]."
msgstr ""
+"Dessine le [code]text[/code] en utilisant la police [code]font[/code] "
+"spécifiée à la [code]position[/code] (le coin bas-gauche correspond à la "
+"ligne de base de la police). Le texte aura sa couleur multipliée par "
+"[code]modulate[/code]. Si [code]clip_w[/code] est supérieur ou égale à 0, le "
+"texte sera tronqué s'il dépasse cette valeur en pixels.\n"
+"[b]Exemple en utilisant la police par défaut du projet :[/b]\n"
+"[codeblock]\n"
+"# Si cette méthode est appelée souvent, déplacer la déclaration de\n"
+"# `default_font` dans une variable assignée dans `_ready()`\n"
+"# pour que le Control ne soit créé qu'une seule fois.\n"
+"var default_font = Control.new().get_font(\"font\")\n"
+"draw_string(default_font, Vector2(64, 64), \"Hello world\")\n"
+"[/codeblock]\n"
+"Voi aussi [method Font.draw]."
#: doc/classes/CanvasItem.xml
msgid "Draws a styled rectangle."
@@ -14971,6 +16259,9 @@ msgid ""
"color. If [code]transpose[/code] is [code]true[/code], the texture will have "
"its X and Y coordinates swapped."
msgstr ""
+"Dessine un rectangle texturé à une position donnée, coloré par une couleur "
+"facultative donnée. Si [code]transpose[/code] est [code]true[/code], la "
+"texture aura ses coordonnées X et Y échangées."
#: doc/classes/CanvasItem.xml
msgid ""
@@ -15291,6 +16582,9 @@ msgid ""
"[b]Note:[/b] This property is only used and visible in the editor if [member "
"particles_animation] is [code]true[/code]."
msgstr ""
+"Si [code]true[/code], l'animation des particules boucle.\n"
+"[b]Note :[/b] Cette propriété est uniquement utilisée et visible dans "
+"l'éditeur si [member particles_animation] est [code]true[/code]."
#: doc/classes/CanvasItemMaterial.xml
msgid ""
@@ -15299,6 +16593,10 @@ msgid ""
"[b]Note:[/b] This property is only used and visible in the editor if [member "
"particles_animation] is [code]true[/code]."
msgstr ""
+"Le nombre de lignes dans la feuille de textures assigné comme [Texture] pour "
+"un [Particles2D] ou un [CPUParticles2D].\n"
+"[b]Note :[/b] Cette propriété est uniquement utilisée et visible dans "
+"l'éditeur si [member particles_animation] est [code]true[/code]."
#: doc/classes/CanvasItemMaterial.xml
msgid ""
@@ -15309,6 +16607,13 @@ msgid ""
"This property (and other [code]particles_anim_*[/code] properties that "
"depend on it) has no effect on other types of nodes."
msgstr ""
+"Si [code]true[/code], cela active les fonctionnalités d'animation basées sur "
+"des feuilles de textures lorsqu'elles sont affectées aux nœuds [Particles2D] "
+"et [CPUParticles2D]. Le [member ParticlesMaterial.anim_speed] ou [member "
+"CPUParticles2D.anim_speed] doit être une valeur positive pour l'animation à "
+"jouer.\n"
+"Cette propriété (et les autres propriétés [code]particles_anim_*[/code] qui "
+"en dépendent) n'a aucun effet sur d'autres types de nœuds."
#: doc/classes/CanvasItemMaterial.xml
msgid ""
@@ -15337,6 +16642,13 @@ msgid ""
"index 1 will be drawn above. This is very useful for HUDs (in layer 1+ or "
"above), or backgrounds (in layer -1 or below)."
msgstr ""
+"Le calque de dessin du canevas. Les nœuds [CanvasItem] qui sont des enfants "
+"directs ou indirects d'un [CanvasLayer] seront dessinés dans ce calque. Le "
+"calque est un index numérique qui définit l'ordre d'affichage. La scène 2D "
+"par défaut fait le rendu avec l'index 0, donc un [CanvasLayer] avec index -1 "
+"sera dessiné en-dessous, et un avec l'index 1 sera dessiné par dessus. Ceci "
+"est très utile pour les interfaces (dans la calque +1 ou au-dessus,) ou les "
+"arrière-plans (dans un calque -1 ou en dessous)."
#: doc/classes/CanvasLayer.xml
msgid "Canvas layers"
@@ -15673,21 +16985,25 @@ msgid "The check icon to display when the [CheckBox] is checked."
msgstr "L'icône de la coche à afficher quand la [CheckBox] est cochée."
#: doc/classes/CheckBox.xml
-#, fuzzy
msgid "The check icon to display when the [CheckBox] is checked and disabled."
-msgstr "Icône à afficher lorsque le [CheckButton] est coché et désactivé."
+msgstr ""
+"L'icône de la coche à afficher quand la [CheckBox] est coché et désactivé."
#: doc/classes/CheckBox.xml
msgid ""
"If the [CheckBox] is configured as a radio button, the icon to display when "
"the [CheckBox] is checked."
msgstr ""
+"Si la [CheckBox] est configurée pour être un bouton radio, l'icône à "
+"afficher quand la [CheckBox] est cochée."
#: doc/classes/CheckBox.xml
msgid ""
"If the [CheckBox] is configured as a radio button, the icon to display when "
"the [CheckBox] is unchecked."
msgstr ""
+"Si la [CheckBox] est configurée pour être un bouton radio, l'icône à "
+"afficher quand la [CheckBox] est décochée."
#: doc/classes/CheckBox.xml
msgid "The check icon to display when the [CheckBox] is unchecked."
@@ -15722,6 +17038,8 @@ msgid ""
"The [StyleBox] to display as a background when the [CheckBox] is hovered and "
"pressed."
msgstr ""
+"La [StyleBox] à afficher en arrière-plan lorsque la [CheckBox] est survolée "
+"et appuyée."
#: doc/classes/CheckBox.xml doc/classes/CheckButton.xml
msgid "The [StyleBox] to display as a background."
@@ -15748,6 +17066,14 @@ msgid ""
"See also [BaseButton] which contains common properties and methods "
"associated with this node."
msgstr ""
+"CheckButton est un bouton à bascule affiché avec une coche. Il est semblable "
+"à [CheckBox] dans ses fonctionnalités, mais son apparence est différente. "
+"Pour suivre les modèles UX établis, il est recommandé d'utiliser CheckButton "
+"pour les effet [b]immédiat[/b] d'une action. Par exemple, il devrait être "
+"utilisé si le basculement active/désactive un réglage sans nécessiter que "
+"l'utilisateur appuie sur un bouton de confirmation.\n"
+"Voir aussi [BaseButton] qui contient des propriétés et des méthodes communes "
+"associées à ce nœud."
#: doc/classes/CheckButton.xml
msgid "The [CheckButton] text's font color."
@@ -16146,7 +17472,7 @@ msgstr ""
"défini."
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr "Retourne le [RID] de l'objet."
@@ -16155,10 +17481,15 @@ msgid ""
"Returns an [Array] of [code]owner_id[/code] identifiers. You can use these "
"ids in other methods that take [code]owner_id[/code] as an argument."
msgstr ""
+"Retourne un [Array] d'identifiants [code]owner_id[/code]. Vous pouvez "
+"utiliser ces identifiants dans les méthodes prennant [code]owner_id[/code] "
+"comme argument."
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
msgid "If [code]true[/code], the shape owner and its shapes are disabled."
msgstr ""
+"Si [code]true[/code], le propriétaire de la forme et toutes ses formes sont "
+"désactivés."
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
msgid "Removes the given shape owner."
@@ -16171,6 +17502,10 @@ msgid ""
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
"code] in the the [member collision_layer]."
msgstr ""
+"Si [code]value[/code] est [code]true[/code], définit le [code]bit[/code] "
+"spécifié dans le calque [member collision_layer].\n"
+"Si [code]value[/code] est [code]false[/code], rétablit le [code]bit[/code] "
+"spécifié dans le calque [member collision_layer]."
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
msgid ""
@@ -16179,6 +17514,10 @@ msgid ""
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
"code] in the the [member collision_mask]."
msgstr ""
+"Si [code]value[/code] est [code]true[/code]], définit le [code]bit[/code] "
+"spécifié dans le masque [nom collision_mask].\n"
+"Si [code]value[/code] est [code]false[/code], rétablit le [code]bit[/code] "
+"spécifié dans le masque [nom collision_mask]."
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
msgid "Returns the [code]owner_id[/code] of the given shape."
@@ -16238,6 +17577,14 @@ msgid ""
"and-masks]Collision layers and masks[/url] in the documentation for more "
"information."
msgstr ""
+"Les calques physiques où ce CollisionObject3D est inclu. Les objets de "
+"collision peuvent exister dans un ou plusieurs des 32 calques existants. "
+"Voir aussi [member collision_mask].\n"
+"[b]Note :[/b] Un contact est détecté si l'objet A est dans l'un des calques "
+"que l'objet B observe, ou l'objet B est dans toutes les couches que l'objet "
+"A observe. Voir [url=$DOCS_URL/tutorials/physics/physics_introduction."
+"html#collision-layers-and-masks]Calques et masques de collision[/url] dans "
+"la documentation pour plus d'informations."
#: doc/classes/CollisionObject.xml
msgid ""
@@ -16249,12 +17596,22 @@ msgid ""
"and-masks]Collision layers and masks[/url] in the documentation for more "
"information."
msgstr ""
+"Le calque physique que ce CollisionObject3D observe. Les objets de collision "
+"peuvent observer un ou plusieurs des 32 calques existants. Voir aussi "
+"[member collision_layer].\n"
+"[b]Note :[/b] Un contact est détecté si l'objet A est dans l'une des couches "
+"que l'objet B observe, ou l'objet B est dans toutes les couches que l'objet "
+"A observe. Voir [url=$DOCS_URL/tutorials/physics/physics_introduction."
+"html#collision-layers-and-masks]Calques et masques de collision[/url] dans "
+"la documentation pour plus d'informations."
#: doc/classes/CollisionObject.xml
msgid ""
"If [code]true[/code], the [CollisionObject] will continue to receive input "
"events as the mouse is dragged across its shapes."
msgstr ""
+"Si [code]true[/code], le [CollisionObject] continuera de recevoir des "
+"événements d'entrée quand la souris sera déplacée au-dessus de ses formes."
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
msgid ""
@@ -16270,6 +17627,10 @@ msgid ""
"the shape with index [code]shape_idx[/code] and [code]normal[/code] is the "
"normal vector of the surface at that point."
msgstr ""
+"Émis lorsque l'objet reçoit un [InputEvent] non traité. [code]position[/"
+"code] est l'emplacement dans les coordonnées globales de la souris sur la "
+"surface de la forme à l'index [code]shape_idx[/code], et [code]normal[/code] "
+"est la normale à la surface à ce point."
#: doc/classes/CollisionObject.xml
msgid "Emitted when the mouse pointer enters any of this object's shapes."
@@ -16295,6 +17656,16 @@ msgid ""
"([Viewport] canvas or [CanvasLayer]) are supported. The behavior of "
"collisions between objects in different canvases is undefined."
msgstr ""
+"CollisionObject2D est la classe de base pour les objets de physique en 2D. "
+"Il peut contenir n'importe quel nombre de formes [Shape2D] de collisions 2D. "
+"Chaque forme doit être assignée à un propriétaire de [i]forme[/i]. Le "
+"CollisionObject2D peut avoir autant de propriétaires de forme qui "
+"nécessaire. Les propriétaires de forme ne sont pas des nœuds et ne "
+"apparaissent pas dans l'éditeur, mais sont accessibles par le code en "
+"utilisant les méthodes [code]shape_owner[* /code].\n"
+"[b]Note :[/b] Seules les collisions entre des objets dans le même canevas "
+"(dans une même [Viewport] ou [CanvasLayer]) sont supportées. Le comportement "
+"des collisions entre des objets dans différents canevas est indéfini."
#: doc/classes/CollisionObject2D.xml
msgid ""
@@ -16603,6 +17974,24 @@ msgid ""
"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/"
"color_constants.png]Color constants cheatsheet[/url]"
msgstr ""
+"Une couleur représentée par des composants rouge, vert, bleu et alpha "
+"(RGBA). Le composant alpha est souvent utilisé pour l'opacité. Les valeurs "
+"sont des flottants et vont habituellement de 0 à 1. Certaines propriétés "
+"(comme CanvasItem.modulate) peuvent accepter des valeurs supérieures à 1 "
+"(sur-luminosité ou HDR).\n"
+"Vous pouvez également créer une couleur à partir de noms de couleurs "
+"standardisés en utilisant [méthode @GDScript.ColorN] ou en utilisant "
+"directement les constantes de couleur définies ici. Le jeu de couleurs "
+"standardisé est basé sur la liste [url=https://fr.wikipedia.org/wiki/"
+"Noms_de_couleur_X11]des noms de couleurs X11[/url].\n"
+"Si vous voulez fournir des valeurs dans une gamme de 0 à 255, vous devez "
+"utiliser [méthode @GDScript.Color8]\n"
+"[b]Note :[/b] Lors de la conversion en booléen, une Color sera évaluée à "
+"[code]false[/code] si elle correspond à [code]Color(0, 0, 0, 1)[/code] (noir "
+"complètement opaque). Sinon, une Color sera toujours évaluée à [code]true[/"
+"code].\n"
+"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/"
+"color_constants.png]Antiscèhe des constantes de couleurs[/url]"
#: doc/classes/Color.xml doc/classes/ColorPickerButton.xml
msgid "2D GD Paint Demo"
@@ -16643,13 +18032,13 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
"Construit une couleur à partir d'un entier de 32 bits au format RGBA (chaque "
"octet représente un canal de couleur).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
#: doc/classes/Color.xml
@@ -16703,11 +18092,16 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
+"Retourne la couleur inversée [code](1 - r, 1 - g, 1 - b, a)[/code].\n"
+"[codeblock]\n"
+"var color = Color(0,3, 0,4, 0,9)\n"
+"var inverted_color = color.inverted () # Équivalent à Color(0.7, 0.6, 0.1)\n"
+"[/codeblock]"
#: doc/classes/Color.xml
msgid ""
@@ -16724,15 +18118,15 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
"Construit une couleur à partir d’un profil HSV. [code]h[/code], [code]s[/"
"code], et [code]v[/code] sont des valeurs comprises entre 0 et 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0,58, 0,5, 0,79, 0,8) # Équivalent au HSV (210, 50, "
-"79, 0,8) ou au Color8 (100, 151, 201, 0,8)\n"
+"var color = Color.from_hsv(0,58, 0,5, 0,79, 0,8) # Équivalent au HSV (210, "
+"50, 79, 0,8) ou au Color8 (100, 151, 201, 0,8)\n"
"[/codeblock]"
#: doc/classes/Color.xml
@@ -16747,15 +18141,15 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
"Retourne la représentation en niveaux de gris.\n"
"La valeur de gris est calculé avec [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = c.gray() # Une valeur de 0.466667\n"
"[/codeblock]"
#: doc/classes/Color.xml
@@ -16814,7 +18208,7 @@ msgstr ""
"[codeblock]\n"
"var c1 = Color(1.0, 0.0, 0.0)\n"
"var c2 = Color(0.0, 1.0, 0.0)\n"
-"var li_c = c1.linear_interpolate(c2, 0.5) # Equivalent to Color(0.5, 0.5, "
+"var li_c = c1.linear_interpolate(c2, 0.5) # Équivalent à Color(0.5, 0.5, "
"0.0)\n"
"[/codeblock]"
@@ -16895,11 +18289,20 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
+"Retourne la chaîne de caractères avec le code hexadécimal façon HTML au "
+"format ARGB (par exemple [code]ff34f822[/code)].\n"
+"Définir [code]with_alpha[/code] à [code]false[/code] ne retourne pas la "
+"valeur alpha dans le code hexadécimal retourné.\n"
+"[codeblock]\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Retourne \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Retourne \"ffffff\"\n"
+"/[codeblock]"
#: doc/classes/Color.xml
msgid ""
@@ -16915,7 +18318,7 @@ msgstr ""
"Godot.\n"
"[codeblock]\n"
"var color = Color(1, 0.5, 0.2)\n"
-"print(color.to_rgba32()) # Imprime 4281565439\n"
+"print(color.to_rgba32()) # Affiche 4281565439\n"
"[/codeblock]"
#: doc/classes/Color.xml
@@ -16932,7 +18335,7 @@ msgstr ""
"Godot.\n"
"[codeblock]\n"
"var color = Color(1, 0.5, 0.2)\n"
-"print(color.to_rgba64()) # Imprime -140736629309441\n"
+"print(color.to_rgba64()) # Affiche -140736629309441\n"
"[/codeblock]"
#: doc/classes/Color.xml
@@ -16941,6 +18344,9 @@ msgid ""
"means that the color is fully transparent. A value of 1 means that the color "
"is fully opaque."
msgstr ""
+"Le composant alpha de la couleur, généralement de 0 à 1. Une valeur de 0 "
+"signifie que la couleur est entièrement transparente. Une valeur de 1 "
+"signifie que la couleur est entièrement opaque."
#: doc/classes/Color.xml
msgid "Wrapper for [member a] that uses the range 0 to 255 instead of 0 to 1."
@@ -16950,7 +18356,7 @@ msgstr ""
#: doc/classes/Color.xml
msgid "The color's blue component, typically on the range of 0 to 1."
-msgstr ""
+msgstr "Le composant bleu de la couleur, généralement de 0 à 1."
#: doc/classes/Color.xml
msgid "Wrapper for [member b] that uses the range 0 to 255 instead of 0 to 1."
@@ -16960,7 +18366,7 @@ msgstr ""
#: doc/classes/Color.xml
msgid "The color's green component, typically on the range of 0 to 1."
-msgstr ""
+msgstr "Le composant vert de la couleur, généralement de 0 à 1."
#: doc/classes/Color.xml
msgid "Wrapper for [member g] that uses the range 0 to 255 instead of 0 to 1."
@@ -16970,11 +18376,11 @@ msgstr ""
#: doc/classes/Color.xml
msgid "The HSV hue of this color, on the range 0 to 1."
-msgstr ""
+msgstr "La teinte HSV de cette couleur, dans l'intervalle de 0 à 1."
#: doc/classes/Color.xml
msgid "The color's red component, typically on the range of 0 to 1."
-msgstr ""
+msgstr "Le composant rouge de la couleur, généralement de 0 à 1."
#: doc/classes/Color.xml
msgid "Wrapper for [member r] that uses the range 0 to 255 instead of 0 to 1."
@@ -16984,7 +18390,7 @@ msgstr ""
#: doc/classes/Color.xml
msgid "The HSV saturation of this color, on the range 0 to 1."
-msgstr ""
+msgstr "La saturation HSV de cette couleur, dans l'intervalle de 0 à 1."
#: doc/classes/Color.xml
msgid "The HSV value (brightness) of this color, on the range 0 to 1."
@@ -18288,6 +19694,45 @@ msgid ""
"[method get_icon], [method get_stylebox], and the [code]add_*_override[/"
"code] methods provided by this class."
msgstr ""
+"La classe de base pour tous les nœuds liés à l'interface utilisateur. "
+"[Control] contient un rectangle englobant qui définit sa taille, une "
+"position d'ancrage par rapport au contrôle parent ou à la fenêtre "
+"d'affichage actuele, et des marges qui représentent un décalage par rapport "
+"à l'ancre. Les marges se mettent à jour automatiquement lorsque le nœud, "
+"l'un de ses parents ou la taille de l'écran changent.\n"
+"Pour plus d'informations sur le système d'interface utilisateur, les ancres, "
+"les marges et les conteneurs, voir les tutoriels correspondants dans la "
+"documentation. Pour construire des interfaces flexibles, vous avez besoin "
+"d'un ensemble d'éléments de l'interface utilisateur héritant de [Control] et "
+"de [Container].\n"
+"[b]Nœuds d'interface utilisateur et les événements[/b]\n"
+"Godot envoie d'abord des événements d'entrée au nœud racine de la scène, en "
+"appelant [method Node._input]. [method Node._input] fait suivre les "
+"événements vers le bas de l'arborescence sous le curseur de la souris, ou "
+"suivant le focus du clavier. Pour cela, Godot appelle [method MainLoop."
+"_input_event]. Appelez [méthode accept_event] pour qu'aucun autre nœud ne "
+"puisse recevoir cet événement. Une fois que vous acceptez un événement "
+"d'entrée, elle est modifiée pour qu'aucune méthode [method Node."
+"_unhandled_input] ne la reçoive.\n"
+"Un seul nœud [Control] peut avoir le focus du clavier. Et seulement ce nœud "
+"recevra des événements de clavier. Pour obtenir le focus, appelez [method "
+"grab_focus]. Les nœuds [Controle] perdent de le focus quand un autre nœud le "
+"prend, ou si vous désactivez ce nœud pour qu'il ne puisse plus obtenir le "
+"focus.\n"
+"Mettez [member souris_filter] à [constant MOUSE_FILTER_IGNORE] pour "
+"signifier qu' un nœud [Control] doit ignorer les événements de souris ou du "
+"clavier. Vous en avez besoin si vous placez une icône par dessus un bouton.\n"
+"Les ressources [Theme] ressources changent l'aspect des Control. Si vous "
+"changez le [Thème] sur un nœud [Control], cela affectera aussi tous ses "
+"enfants. Pour remplacer certains paramètres du thème, appelez l'une des "
+"méthodes [code]add_*_override[/code], comme [method add_font_override]. Vous "
+"pouvez surcharger le thème depuis l'inspecteur.\n"
+"[b]Note :[/b] Les objets des thèmes sont des propriétés et [i]non pas[/i] "
+"des [Object]. Cela signifie que vous ne pouvez pas enregistrer leurs valeurs "
+"en utilisant les méthodes [method Object.get] et [method Object.set]. Au "
+"lieu de cela, utilisez les méthodes [method get_color], [method "
+"get_constant], [method get_font], [method get_icon], [method get_stylebox], "
+"et [code]add_*_override[/code] fournies par cette classe."
#: doc/classes/Control.xml
msgid "GUI tutorial index"
@@ -18355,6 +19800,27 @@ msgid ""
"[member rect_clip_content] or [method _clips_input] enabled.\n"
"[b]Note:[/b] Event position is relative to the control origin."
msgstr ""
+"La méthode virtuelle à surcharger par l'utilisateur. Utilisez cette méthode "
+"pour traiter et accepter les entrées sur les éléments d'interface "
+"utilisateur. Voir [method accept_event].\n"
+"Exemple : cliquer sur un contrôle.\n"
+"[codeblock]\n"
+"func _gui_input(event):\n"
+" if event is InputEventMouseButton:\n"
+" if event.button_index == BUTTON_LEFT and event.pressed:\n"
+" print(\"J'ai cliqué !\")\n"
+"/[codeblock]\n"
+"L'événement ne sera pas déclenché si :\n"
+"* le clic est en dehors du contrôle (voir [method has_point)] ;\n"
+"* le contrôle a [member mouse_filter] à [constant MOUSE_FILTER_IGNORE] ;\n"
+"* le contrôle est recouvert par un autre [Control], si celui-ci n'a pas "
+"[member mouse_filter] à [constant MOUSE_FILTER_IGNORE] ;\n"
+"* le parent de ce contrôle a [member mouse_filter] à [constant "
+"MOUSE_FILTER_STOP] ou a accepté cet événement ;\n"
+"* le clic est en dehors du rectangle du parent et ce parent a soit [member "
+"rect_clip_content] ou [method _clips_input] d'activé.\n"
+"[b]Note :[/b] La position de l'événement est relative à l'origine du "
+"contrôle."
#: doc/classes/Control.xml
msgid ""
@@ -18484,6 +19950,13 @@ msgid ""
"remove_font_override] instead.\n"
"See also [method get_font]."
msgstr ""
+"Crée une surcharge locale pour la police [Font] du thème nommée [code]name[/"
+"code]. Les surcharges locales ont toujours la priorité lors de la "
+"récupération des éléments d'un contrôle.\n"
+"[b]Note :[/b] Une surcharge peut être supprimée en lui assignant la valeur "
+"[code]null[/code]. Ce comportement est obsolète et sera retiré dans 4.0, "
+"utilisez plutôt [method remove_font_override].\n"
+"Voir aussi [method get_font]."
#: doc/classes/Control.xml
msgid ""
@@ -18495,6 +19968,13 @@ msgid ""
"remove_icon_override] instead.\n"
"See also [method get_icon]."
msgstr ""
+"Crée une surcharge locale pour l'icône du thème nommée [code]name[/code]. "
+"Les surcharges locales ont toujours la priorité lors de la récupération des "
+"éléments d'un contrôle.\n"
+"[b]Note :[/b] Une surcharge peut être supprimée en lui assignant la valeur "
+"[code]null[/code]. Ce comportement est obsolète et sera retiré dans 4.0, "
+"utilisez plutôt [method remove_icon_override].\n"
+"Voir aussi [method get_icon]."
#: doc/classes/Control.xml
msgid ""
@@ -18505,6 +19985,12 @@ msgid ""
"value. This behavior is deprecated and will be removed in 4.0, use [method "
"remove_shader_override] instead."
msgstr ""
+"Crée une surcharge locale pour le shader du thème nommé [code]name[/code]. "
+"Les surcharges locales ont toujours la priorité lors de la récupération des "
+"éléments d'un contrôle.\n"
+"[b]Note :[/b] Une surcharge peut être supprimée en lui assignant la valeur "
+"[code]null[/code]. Ce comportement est obsolète et sera retiré dans 4.0, "
+"utilisez plutôt [method remove_shader_override]."
#: doc/classes/Control.xml
msgid ""
@@ -18697,6 +20183,21 @@ msgid ""
" return mydata\n"
"[/codeblock]"
msgstr ""
+"Godot appelle cette méthode pour obtenir des données qui peuvent être "
+"déposées et glissées sur les contrôles qui gère le déposé-glissé. Retournez "
+"[code]null[/code] s'il n'y a pas de données à glisser. Les contrôles qui "
+"veulent recevoir les déposé-glissé doivent implémenter [method "
+"can_drop_data] et [method drop_data]. [code]position[/code] est local à ce "
+"contrôle. Le déposé-glissé peut être forcé avec [method force_drag].\n"
+"Un aperçu affiché à côté de la souris représentant les données peut être "
+"défini avec [methode set_drag_preview]. L'appel à cette méthode est un bon "
+"moment définir cet aperçu.\n"
+"[codeblock]\n"
+"func get_drag_data(position):\n"
+" var mydata = make_data()\n"
+" set_drag_preview(make_preview(mydata))\n"
+" return mydata\n"
+"[/codeblock]"
#: doc/classes/Control.xml
msgid "Returns [member margin_right] and [member margin_bottom]."
@@ -19008,6 +20509,18 @@ msgid ""
"[code]push_opposite_anchor[/code] was [code]false[/code], the left anchor "
"would get value 0.5."
msgstr ""
+"Définit l'ancre identifiée par la constante [code]margin[/code] de "
+"l'énumération [enum Margin] avec [code]anchor[/code]. C'est une méthode de "
+"setter pour [member anchor_bottom], [member anchor_left], [member "
+"anchor_right] et [member anchor_top].\n"
+"Si [code]keep_margin[/code] est [code]true[/code], les marges ne seront pas "
+"mises à jour après cette opération.\n"
+"Si [code]push_opposite_anchor[/code] est [code]true[/code] et que l'ancre "
+"opposée recouvre cette ancre, l'ancre opposée aura sa valeur surchargée. Par "
+"exemple, lorsque l'ancre gauche est fixée à 1 et que l'ancre droite a une "
+"valeur de 0,5, l'ancre droite aura également une valeur de 1. Si "
+"[code]push_opposite_anchor[/code] est [code]false[/code], l'ancre gauche a "
+"alors la valeur 0.5"
#: doc/classes/Control.xml
msgid ""
@@ -19155,6 +20668,10 @@ msgid ""
"If [code]keep_margins[/code] is [code]true[/code], control's anchors will be "
"updated instead of margins."
msgstr ""
+"Définit le [member rect_global_position] à la [code]position[/code] "
+"spécifiée.\n"
+"Si [code]keep_margins[/code] est [code]true[/code], les ancrages de contrôle "
+"seront changés à la place des marges."
#: doc/classes/Control.xml
msgid ""
@@ -19341,6 +20858,27 @@ msgid ""
"theme.set_color(\"font_color\", \"TooltipLabel\", Color(0, 1, 1))\n"
"[/codeblock]"
msgstr ""
+"Change le texte de l'infobulle. Cette infobulle apparaît lorsque le curseur "
+"de la souris reste sur ce contrôle durant quelques instants, à condition que "
+"la propriété [member mouse_filter] ne soit pas [constant "
+"MOUSE_FILTER_IGNORE]. Vous pouvez modifier le temps nécessaire avant que "
+"l'infobulle n'apparaisse avec [code]gui/timers/tooltip_delay_sec[/code] dans "
+"les réglages du projet.\n"
+"Le panneau de l'infobulle utilisera soit l'implémentation par défaut, soit "
+"une que vous pouvez personnaliser avec [method make_custom_tooltip]. "
+"L'infobulle par défaut comprend un [PopupPanel] et un [Label] dont les "
+"propriétés thématiques peuvent être personnalisées en utilisant un [Thème] "
+"pour le panneau [code]\"TooltipPanel\"[/code] et le label "
+"[code]\"TooltipLabel\"[/code] respectivement. Par exemple :\n"
+"[codeblock]\n"
+"var style_box = StyleBoxFlat.new()\n"
+"style_box.set_bg_color(Color(1, 1, 0))\n"
+"style_box.set_border_width_all(2)\n"
+"# On part du principe ici que la propriété `theme` a déjà été assignée avec "
+"un Theme personnalisé.\n"
+"theme.set_stylebox(\"panel\", \"TooltipPanel\", style_box)\n"
+"theme.set_color(\"font_color\", \"TooltipLabel\", Color(0, 1, 1))\n"
+"/[codeblock]"
#: doc/classes/Control.xml
msgid ""
@@ -19358,6 +20896,12 @@ msgid ""
"you should not modify them manually if your node is a direct child of a "
"[Container]. Margins update automatically when you move or resize the node."
msgstr ""
+"La distance entre le bord du bas du nœud et son contrôle parent, basé sur "
+"[member anchor_bottom].\n"
+"Les marges sont souvent contrôlées par un ou plusieurs nœuds [Container] "
+"parents, de sorte que vous ne devriez pas les modifier manuellement si votre "
+"nœud est un enfant direct d'un [Container]. Les marges se mettent à jour "
+"automatiquement lorsque vous déplacez ou redimensionnez le nœud."
#: doc/classes/Control.xml
msgid ""
@@ -19367,6 +20911,12 @@ msgid ""
"you should not modify them manually if your node is a direct child of a "
"[Container]. Margins update automatically when you move or resize the node."
msgstr ""
+"La distance entre le bord gauche du nœud et son contrôle parent, basé sur "
+"[member anchor_bottom].\n"
+"Les marges sont souvent contrôlées par un ou plusieurs nœuds [Container] "
+"parents, de sorte que vous ne devriez pas les modifier manuellement si votre "
+"nœud est un enfant direct d'un [Container]. Les marges se mettent à jour "
+"automatiquement lorsque vous déplacez ou redimensionnez le nœud."
#: doc/classes/Control.xml
msgid ""
@@ -19376,6 +20926,12 @@ msgid ""
"you should not modify them manually if your node is a direct child of a "
"[Container]. Margins update automatically when you move or resize the node."
msgstr ""
+"La distance entre le bord droit du nœud et son contrôle parent, basé sur "
+"[member anchor_bottom].\n"
+"Les marges sont souvent contrôlées par un ou plusieurs nœuds [Container] "
+"parents, de sorte que vous ne devriez pas les modifier manuellement si votre "
+"nœud est un enfant direct d'un [Container]. Les marges se mettent à jour "
+"automatiquement lorsque vous déplacez ou redimensionnez le nœud."
#: doc/classes/Control.xml
msgid ""
@@ -19385,6 +20941,12 @@ msgid ""
"you should not modify them manually if your node is a direct child of a "
"[Container]. Margins update automatically when you move or resize the node."
msgstr ""
+"La distance entre le bord du bas du nœud et son contrôle parent, basé sur "
+"[member anchor_bottom].\n"
+"Les marges sont souvent contrôlées par un ou plusieurs nœuds [Container] "
+"parents, de sorte que vous ne devriez pas les modifier manuellement si votre "
+"nœud est un enfant direct d'un [Container]. Les marges se mettent à jour "
+"automatiquement lorsque vous déplacez ou redimensionnez le nœud."
#: doc/classes/Control.xml
msgid ""
@@ -19515,6 +21077,24 @@ msgid ""
"The earliest match against any type/class name is returned. The project-"
"level Theme and the default Theme are checked last."
msgstr ""
+"Le nom d'une variation de type d'un thème utilisée par ce [Control] pour "
+"examiner ses propres éléments thématiques. Lorsqu'il est vide, le nom de "
+"classe du nœud est utilisé (par exemple [code]Button[/code] pour le contrôle "
+"[Button]), ainsi que les noms de classe de toutes les classes parentes (dans "
+"l'ordre d'héritage).\n"
+"Lorsqu'elle est définie, cette propriété donne la plus haute priorité pour "
+"le type de nom qui est spécifié. Ce type peut ensuite étendre un autre type, "
+"formant une chaîne de dépendance. Voir [method Theme.set_type_variation]. Si "
+"l'élément de thème n'est pas trouvé en utilisant ce type ou ces types de "
+"base, la recherche revient alors sur les noms de classe.\n"
+"[b]Note :[/b] Pour rechercher les éléments d'un [Control], utilisez les "
+"méthodes [code]get_*[/code] sans spécifier de [code]theme_type[/code].\n"
+"[b]Note :[/b] Les objets de thème sont recherchés dans l'ordre de "
+"l'arborescence, depuis le contrôle jusqu'à la racine, où chaque nœud "
+"[Control] est vérifié suivant sa propriété [member theme]. Le premier "
+"résultat trouvé de la recherche sur n'importe quel type ou classe est "
+"retourné. Le thème du projet et celui par défaut est utilisé en dernier "
+"recours."
#: doc/classes/Control.xml
msgid "Emitted when the node gains keyboard focus."
@@ -19899,6 +21479,10 @@ msgid ""
"expand size flags. Use with [member size_flags_horizontal] and [member "
"size_flags_vertical]."
msgstr ""
+"Précise au [Container] parent de centrer le nœud en son milieu. Il centre le "
+"contrôle basé sur sont rectangle englobant, donc ça ne fonctionne pas avec "
+"les drapeaux de remplissage ou d'extension. Utilisez avec [membre "
+"size_flags_horizontal] et [membre size_flags_vertical]."
#: doc/classes/Control.xml
msgid ""
@@ -19907,6 +21491,10 @@ msgid ""
"flags. Use with [member size_flags_horizontal] and [member "
"size_flags_vertical]."
msgstr ""
+"Précise au [Container] parent d'aligner le nœud sur la fin, soit en bas, "
+"soit sur bord droit. Il ne fonctionne pas avec les drapeaux de remplissage "
+"ou d'extension. Utilisez avec [membre size_flags_horizontal] et [membre "
+"size_flags_vertical]."
#: doc/classes/Control.xml
msgid ""
@@ -19916,6 +21504,12 @@ msgid ""
"automatically marked as handled, and they will not propagate further to "
"other controls. This also results in blocking signals in other controls."
msgstr ""
+"Le contrôle recevra les événements d'entrée de la souris via [method "
+"gui_input] si vous cliquez dessus. Et le contrôle recevra les signaux "
+"[signal mouse_entered] et [signal mouse_exited]. Ces événements sont "
+"automatiquement marqués comme traités, et ils ne se propagent pas vers les "
+"autres contrôles. Cela permet également de bloquer la propagation de ces "
+"signaux à partir d'autres contrôles."
#: doc/classes/Control.xml
msgid ""
@@ -19928,6 +21522,14 @@ msgid ""
"all, the event will still be handled automatically, so unhandled input will "
"not be fired."
msgstr ""
+"La contrôle recevra les événements d'entrée de la souris via [method "
+"gui_input] si vous cliquez dessus. Et le contrôle recevra les signaux "
+"[signal mouse_entered] et [signal mouse_exited]. Si ce contrôle ne traite "
+"pas l'événement, cet événement sera envoyé au contrôle parent (s'il existe), "
+"et ainsi de suite jusqu'à ce qu'il n'y ait plus de contrôle parent pour le "
+"traiter. Cela permet également aux signaux d'être émis dans d'autres "
+"contrôles. Même si aucun contrôle ne l'a traité, l'événement sera toujours "
+"traité automatiquement, alors les entrées non traitées ne seront pas émises."
#: doc/classes/Control.xml
msgid ""
@@ -19937,24 +21539,35 @@ msgid ""
"receiving these events or firing the signals. Ignored events will not be "
"handled automatically."
msgstr ""
+"Le contrôle ne recevra pas d'événements d'entrée de la souris via [méthode "
+"gui_input]. Le contrôle ne recevra pas non plus les signaux [signal "
+"mouse_entered] et [signal mouse_exited]. Cela ne bloquera pas d'autres "
+"contrôles de recevoir ces événements et n'émettra pas les signaux. Les "
+"événements ignorés ne seront pas traités automatiquement."
#: doc/classes/Control.xml
msgid ""
"The control will grow to the left or top to make up if its minimum size is "
"changed to be greater than its current size on the respective axis."
msgstr ""
+"Le contrôle va croître à gauche ou en haut pour compenser si sa taille "
+"minimale est plus grande que sa taille actuelle selon l'axe correspondant."
#: doc/classes/Control.xml
msgid ""
"The control will grow to the right or bottom to make up if its minimum size "
"is changed to be greater than its current size on the respective axis."
msgstr ""
+"Le contrôle va croître à droite ou en bas pour compenser si sa taille "
+"minimale est plus grande que sa taille actuelle selon l'axe correspondant."
#: doc/classes/Control.xml
msgid ""
"The control will grow in both directions equally to make up if its minimum "
"size is changed to be greater than its current size."
msgstr ""
+"Le contrôle va croître dans les deux directions de façon égale pour "
+"compenser si sa taille minimale est plus grande que sa taille actuelle."
#: doc/classes/Control.xml
msgid ""
@@ -20867,6 +22480,10 @@ msgid ""
"[b]Note:[/b] The maximum size of accepted ciphertext is limited by the key "
"size."
msgstr ""
+"Décrypte le texte crypté [code]ciphertext[/code] donné avec le clé publique "
+"[code]key[/code] fournie.\n"
+"[b]Note :[/b] La taille maximale pour le texte est limitée par la taille de "
+"la clé."
#: doc/classes/Crypto.xml
msgid ""
@@ -20875,6 +22492,10 @@ msgid ""
"[b]Note:[/b] The maximum size of accepted plaintext is limited by the key "
"size."
msgstr ""
+"Crypte le texte [code]plaintext[/code] donné avec le clé publique [code]key[/"
+"code] fournie.\n"
+"[b]Note :[/b] La taille maximale pour le texte est limitée par la taille de "
+"la clé."
#: doc/classes/Crypto.xml
msgid ""
@@ -20909,6 +22530,24 @@ msgid ""
"Game Company,C=IT\")\n"
"[/codeblock]"
msgstr ""
+"Génère un [X509Certificate] auto-signé avec la clé [CryptoKey] et le nom "
+"[code]issuer_name[/code]. La date de validité du certificat est définie par "
+"[code]not_before[/code] et [code]not_after[/code] (la date de début et de "
+"fin de validité). Le nom [code]issuer_name[/code] doit contenir au moins "
+"\"CN=\" (le nom commun, par exemple le nom de domaine), "
+"\"O=\" (l'organisation, par exemple le nom de votre entreprise) et "
+"\"C=\" (le pays, un code ISO-3166 à deux lettres du pays où l'entreprise est "
+"située).\n"
+"Un court exemple pour générer une clé RSA avec un certificat X509 auto-"
+"signé.\n"
+"[codeblock]\n"
+"var crypto = Crypto.new()\n"
+"# Générer un clé RSA 4096 bits.\n"
+"var key = crypto.generate_rsa(4096)\n"
+"# Générer un certificat auto-signé à partir de la clé donnée.\n"
+"var cert = crypto.generate_self_signed_certificate(key, \"CN=example.com,"
+"O=Mon Studio de Jeux,C=FR\")\n"
+"[/codeblock]"
#: doc/classes/Crypto.xml
msgid ""
@@ -21385,6 +23024,17 @@ msgid ""
"masks]Collision layers and masks[/url] in the documentation for more "
"information."
msgstr ""
+"Le calque physique de cette zone.\n"
+"Les objets de collision peuvent exister dans l'un des 32 calques "
+"différentes. Ces calques fonctionnent comme un système de marquage, et ne "
+"sont pas visuels. Un objet de collision peut utiliser ces calques pour "
+"sélectionner avec quels objets il peut entrer en collision, en utilisant la "
+"propriété [member collision_mask].\n"
+"Un contact est détecté si l'objet A est dans l'un des calques que l'objet B "
+"observe, ou si l'objet B est dans tous les calques observés par l'objet A. "
+"Voir [url=$DOCS_URL/tutorials/physics/physics_introduction.html#collision-"
+"layers-and-masks]Calques et masques de collision[/url] dans la documentation "
+"pour plus d'informations."
#: modules/csg/doc_classes/CSGShape.xml
msgid ""
@@ -21554,6 +23204,8 @@ msgid ""
"Returns an [Image] for a side of the [CubeMap] using one of the [enum Side] "
"constants."
msgstr ""
+"Retourne une [Image] pour le côté du [CubeMap] correspondant à l'une des "
+"constantes [enum Side]."
#: doc/classes/CubeMap.xml
#, fuzzy
@@ -21565,6 +23217,8 @@ msgid ""
"Sets an [Image] for a side of the [CubeMap] using one of the [enum Side] "
"constants."
msgstr ""
+"Définit une [Image] pour le côté du [CubeMap] correspondant à l'une des "
+"constantes [enum Side]."
#: doc/classes/CubeMap.xml
msgid ""
@@ -21579,6 +23233,8 @@ msgid ""
"The lossy storage quality of the [CubeMap] if the storage mode is set to "
"[constant STORAGE_COMPRESS_LOSSY]."
msgstr ""
+"La qualité de stockage avec perte du [CubeMap] si le mode de stockage est "
+"défini à [constant STORAGE_COMPRESS_LOSSY]."
#: doc/classes/CubeMap.xml
#, fuzzy
@@ -21638,10 +23294,14 @@ msgstr "Répète (plutôt que s'arrête aux bords)."
#: doc/classes/CubeMap.xml
msgid "Turn on magnifying filter, to enable smooth zooming in of the texture."
msgstr ""
+"Active le filtre grossissant pour permettre un agrandissement plus lisse de "
+"la texture."
#: doc/classes/CubeMap.xml
msgid "Default flags. Generate mipmaps, repeat, and filter are enabled."
msgstr ""
+"Les drapeaux par défaut. Cela génère les mipmaps, et active la répétition et "
+"le filtrage de la texture."
#: doc/classes/CubeMesh.xml
msgid "Generate an axis-aligned cuboid [PrimitiveMesh]."
@@ -22084,6 +23744,19 @@ msgid ""
"segment may deviate from the real curve, before the segment has to be "
"subdivided."
msgstr ""
+"Retourne une liste de points le long de la courbe, avec une densité de point "
+"contrôlée par sa courbure. C'est-à-dire que les virages de la courbe auront "
+"plus de points que les segments bien droits.\n"
+"Cette approximation génère des segments droits entre chaque point, puis "
+"divise ces segments jusqu'à ce que la nouvelle forme soit assez proche.\n"
+"L'argument [code]max_stages[/code] contrôle le nombre de divisions qu'un "
+"segment de courbe peut avoir avant qu'il soit considéré comme assez proche. "
+"Chaque division découpe le segment en deux, de sorte que les 5 étapes par "
+"défaut peuvent atteindre 32 divisions par segment de la courbe. Soyez donc "
+"prudent si vous augmentez cette valeur !\n"
+"L'argument [code]tolerance_degrees[/code] contrôle de quel angle, en degrés, "
+"le point du milieu d'un segment peut s'éloigné de la courbe avant que ce "
+"segment ne soit divisé."
#: doc/classes/Curve2D.xml
msgid ""
@@ -22093,6 +23766,11 @@ msgid ""
"smaller the distance, the more points in the cache and the more memory it "
"will consume, so use with care."
msgstr ""
+"La distance en pixels entre deux points du cache qui sont voisins. Le "
+"changement recalcule le cache des points la fois suivante où [method "
+"get_baked_points] ou [method get_baked_length] sera appelée. Plus la "
+"distance est petite, plus il y a de points dans ce cache, et donc plus il "
+"consommera de mémoire, à utiliser donc avec soin."
#: doc/classes/Curve3D.xml
msgid "Describes a Bézier curve in 3D space."
@@ -22245,12 +23923,16 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
+#, fuzzy
+msgid "The [Curve] that is rendered onto the texture."
msgstr "La [code]curve[/code] rendue sur la texture."
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
-msgstr "La largeur de la texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
+msgstr ""
#: doc/classes/CylinderMesh.xml
msgid "Class representing a cylindrical [PrimitiveMesh]."
@@ -22351,7 +24033,6 @@ msgid "Dictionary type."
msgstr "Le type dictionnaire."
#: doc/classes/Dictionary.xml
-#, fuzzy
msgid ""
"Dictionary type. Associative container which contains values referenced by "
"unique keys. Dictionaries are composed of pairs of keys (which must be "
@@ -22678,6 +24359,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr "Retourne la liste des clés dans le [Dictionary]."
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
msgid "Returns the number of keys in the dictionary."
msgstr "Retourne le nombre de clés dans le dictionnaire."
@@ -22861,6 +24549,13 @@ msgid ""
"code] or [code]res://somedir/newdir[/code]).\n"
"Returns one of the [enum Error] code constants ([code]OK[/code] on success)."
msgstr ""
+"Change le dossier actuellement ouvert par celui donné en argument. "
+"L'argument peut être relatif au répertoire actuel (par exemple "
+"[code]nouveau_dossier[/code] ou [code]./dossier[ /code,)] ou être un chemin "
+"absolu (par exemple [code]/tmp/dossier[/code] ou [code]res://parent/"
+"dossier[ /code)].\n"
+"Retourne une des constantes de code [enum Error] (et [code]OK[/code] en cas "
+"de succès)."
#: doc/classes/Directory.xml
msgid ""
@@ -22883,6 +24578,10 @@ msgid ""
"call is a directory ([code].[/code] and [code]..[/code] are considered "
"directories)."
msgstr ""
+"Retourne si l'élément actuellement traité lors du dernier appel à [method "
+"get_next] est un dossier (le dossier actuel [code].[/code] et le dossier "
+"parent [code]..[/code] comptent aussi des dossiers ordinaires pour cette "
+"méthode)."
#: doc/classes/Directory.xml
msgid ""
@@ -22913,6 +24612,8 @@ msgid ""
"Returns the currently opened directory's drive index. See [method get_drive] "
"to convert returned index to the name of the drive."
msgstr ""
+"Retourne l'index du disque du dossier actuellement ouvert. Voir [method "
+"get_drive] pour convertir cet index retourné en nom du disque."
#: doc/classes/Directory.xml
msgid ""
@@ -22924,6 +24625,14 @@ msgid ""
"On other platforms, or if the requested drive does not exist, the method "
"returns an empty String."
msgstr ""
+"Sur Windows, retourne le nom du disque (du moins la partition) passé en "
+"argument (par exemple [code]C:[/code)].\n"
+"Sur macOS, retourne le chemin vers le volume monté qui est passé en "
+"argument.\n"
+"Sur Linux, retourne le chemin vers le volume monté, ou le favoris GTK 3, "
+"passé en argument.\n"
+"Pour les autres plates-formes, ou si le disque demandé n'existe pas, la "
+"méthode retourne une chaîne vide."
#: doc/classes/Directory.xml
msgid ""
@@ -22933,6 +24642,12 @@ msgid ""
"On Linux, returns the number of mounted volumes and GTK 3 bookmarks.\n"
"On other platforms, the method returns 0."
msgstr ""
+"Sur Windows, retourne le nombre de disque (de partitions) montés sur le "
+"système de fichiers actuel.\n"
+"Sur macOS, retourne le nombre de volumes montés.\n"
+"Sur Linux, retourne le nombre de volumes montés, ainsi que les favoris GTK "
+"3.\n"
+"Pour les autres plates-formes, la méthode retourne 0."
#: doc/classes/Directory.xml
msgid ""
@@ -22944,6 +24659,14 @@ msgid ""
"closes the stream automatically (i.e. [method list_dir_end] would not be "
"mandatory in such a case)."
msgstr ""
+"Retourne l'élément suivant (un fichier ou un dossier) dans le dossier actuel "
+"(y compris [code].[/code] et [code].[/code], sauf si "
+"[code]skip_navigational[/code] a été passé lors de l'appel [method "
+"list_dir_begin)].\n"
+"Le nom du fichier ou du dossier est retourné (et non pas son chemin "
+"complet). Une fois que le flux a été entièrement traité, la méthode retourne "
+"une String vide et ferme automatiquement ce flux (dans ce cas, l'appel à "
+"[méthod list_dir_end] n'était pas obligatoire)."
#: doc/classes/Directory.xml
msgid ""
@@ -22980,6 +24703,8 @@ msgid ""
"Closes the current stream opened with [method list_dir_begin] (whether it "
"has been fully processed with [method get_next] does not matter)."
msgstr ""
+"Ferme le flux ouvert actuel avec [method list_dir_begin] (qu'il ait été "
+"entièrement traité avec [method get_next] n'a pas d'importance)."
#: doc/classes/Directory.xml
msgid ""
@@ -22989,6 +24714,11 @@ msgid ""
"make_dir_recursive]).\n"
"Returns one of the [enum Error] code constants ([code]OK[/code] on success)."
msgstr ""
+"Crée un dossier. L'argument peut être un chemin relatif au dossier actuel, "
+"ou un chemin absolu. Le dossier cible doit être placé dans un dossier déjà "
+"existant (pour créer les dossiers intermédiaires, voir [méthod "
+"make_dir_recursive)].\n"
+"Retourne un des code [enum Error] ([code]OK[/code] en cas de succès)."
#: doc/classes/Directory.xml
msgid ""
@@ -22997,6 +24727,10 @@ msgid ""
"to the current directory, or an absolute path.\n"
"Returns one of the [enum Error] code constants ([code]OK[/code] on success)."
msgstr ""
+"Crée un dossier cible et ainsi que tous les dossiers intermédiaires "
+"nécessaires, en appelant [method make_dir] de façon récursive. L'argument "
+"peut être un chemin relatif au dossier actuel, ou un chemin absolu.\n"
+"Retourne un des code [enum Error] ([code]OK[/code] en cas de succès)."
#: doc/classes/Directory.xml
msgid ""
@@ -23023,6 +24757,12 @@ msgid ""
"move_to_trash] instead.\n"
"Returns one of the [enum Error] code constants ([code]OK[/code] on success)."
msgstr ""
+"Supprime définitivement le fichier cible ou un répertoire s'il est vide. "
+"L'argument peut être un chemin relatif au dossier actuel, ou un chemin "
+"absolu. Si le répertoire cible n'est pas vide, l'opération échouera.\n"
+"Si vous ne voulez pas supprimer définitivement le fichier ou le dossier, "
+"utilisez plutôt [method OS.move_to_trash].\n"
+"Retourne un des codes [enum Error] (et [code]OK[/code] en cas de succès)."
#: doc/classes/Directory.xml
msgid ""
@@ -23032,6 +24772,12 @@ msgid ""
"is not access-protected, it will be overwritten.\n"
"Returns one of the [enum Error] code constants ([code]OK[/code] on success)."
msgstr ""
+"Renomme (déplace) le fichier ou le dossier [code]from[/code] vers la "
+"destination [code]to[/code]. Les deux arguments devraient être des chemins "
+"vers des fichiers ou des dossiers, soit relatifs ou absolus. Si le fichier "
+"ou le dossier de destination existe et que son accès n'est pas protégé en "
+"écriture, il sera écrasé.\n"
+"Retourne un des code [enum Error] ([code]OK[/code] en cas de succès)."
#: doc/classes/DTLSServer.xml
msgid "Helper class to implement a DTLS server."
@@ -23171,6 +24917,10 @@ msgid ""
"[code]chain[/code] parameter to provide additional CA chain information "
"along with the certificate."
msgstr ""
+"Configure le serveur DTLS pour utiliser la clé privée [code]private_key[/"
+"code] et fourni le certificat [code]certificate[/code] aux clients. Vous "
+"pouvez passer le paramètre facultatif [code]chain[/code] pour fournir des "
+"informations supplémentaires sur la chaîne \"CA\" en plus du certificat."
#: doc/classes/DTLSServer.xml
msgid ""
@@ -23181,6 +24931,12 @@ msgid ""
"[constant PacketPeerDTLS.STATUS_HANDSHAKING], as it is normal that 50% of "
"the new connections will be invalid due to cookie exchange."
msgstr ""
+"Essaye de débuter une poignée de main DTLS avec le pair [code]udp_peer[/"
+"code] qui doit être connecté au préalable (voir [method PacketPeerUDP."
+"connect_to_host)]\n"
+"[b]Note :[/b] Vous devez vérifier que le status du PacketPeerUDP est "
+"[constant PacketPeerDTLS.STATUS_HANDSHAKING], car il est commun que 50% des "
+"nouvelles connexions deviennent invalides en raison de l'échange de cookies."
#: doc/classes/DynamicFont.xml
msgid "DynamicFont renders vector font files at runtime."
@@ -23213,6 +24969,33 @@ msgid ""
"In FontForge, use [b]File > Generate Fonts[/b], click [b]Options[/b], choose "
"the desired features then generate the font."
msgstr ""
+"DynamicFont fait le rendu d'un fichier de police vectorielle dynamiquement "
+"au lancement du jeu plutôt que d'utiliser une texture de pré-rendu comme "
+"[BitmapFont]. La lenteur de chargement par rapport à [BitmapFont] est "
+"compensée par la possibilité de modifier les paramètres de la police comme "
+"sa taille ou son espacement à partir du lancement. [DynamicFontData] est "
+"utilisée pour le chemin du fichier de police. DynamicFont permet aussi de "
+"définir une ou plusieurs polices de repli, qui seront utilisée pour "
+"l'affichage de tout caractère qui n'est pas présent dans la police "
+"principale.\n"
+"DynamicFont utilise la bibliothèque [url=https://www.freetype.org/]FreeType[/"
+"url] pour la rasterization. Les formats supportés sont TrueType ([code].ttf[/"
+"code]), OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/"
+"code]), et Web Open Font Format 2 ([code].woff2[/code]).\n"
+"[codeblock]\n"
+"var dynamic_font = DynamicFont.new()\n"
+"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
+"dynamic_font.size = 64\n"
+"$\"Label\".set(\"custom_fonts/font\", dynamic_font)\n"
+"[/codeblock]\n"
+"[b]Note :[/b] DynamicFont ne supporte par certaines fonctionnalités comme le "
+"kerning, l'écriture de droite à gauche, les ligatures, les formes de texte, "
+"les tailles variable et d'autres fonctionnalités pour le moment. Si vous "
+"souhaitez faire un pré-rendu de certaines fonctionnalités dans le fichier de "
+"police TTF, vous pouvez utiliser [url=https://fontforge.org/]FontForge[/url] "
+"pour cela. Dans FontForge, utilisez [b]Fichier > Polices Générales[/b], "
+"cliquez sur [b]Options[/b], puis choisissez la fonctionnalité voulue lors de "
+"la génération de la police"
#: doc/classes/DynamicFont.xml
msgid "Adds a fallback font."
@@ -23392,6 +25175,13 @@ msgid ""
"To use [EditorExportPlugin], register it using the [method EditorPlugin."
"add_export_plugin] method first."
msgstr ""
+"Les [EditorExportPlugin] sont automatiquement invoqués lorsque l'utilisateur "
+"exporte le projet. Ils sont plus le souvent utilisés de déterminer quels "
+"fichiers doivent être inclus dans le projet exporté. Pour chaque greffon, "
+"[method export_begin] est appelé au début du processus d'exportation, et "
+"[method export_file] est appelé pour chaque fichier exporté.\n"
+"Pour utiliser [EditorExportPlugin], enregistrez-le d'abord avec la méthode "
+"[method EditorPlugin.add_export_greffon]."
#: doc/classes/EditorExportPlugin.xml
msgid ""
@@ -23402,12 +25192,22 @@ msgid ""
"exported project. [code]flags[/code] is only used when running a runnable "
"profile, e.g. when using native run on Android."
msgstr ""
+"La méthode virtuelle à surcharger par l'utilisateur. Il est appelé lorsque "
+"l'exportation commence et fournit toutes les informations sur cette "
+"exportation. [code]features[/code] est la liste des fonctionnalités de "
+"l'exportation, [code]is_debug[/code] est [code]true[/code] pour les exports "
+"avec l'option de débogage, et [code]path[/code] est le chemin cible pour "
+"l'export du projet. [code]flags[/code] est seulement utilisé pour les "
+"profils de lancement, par exemple lorsque vous utilisez le lancement natif "
+"sur Android."
#: doc/classes/EditorExportPlugin.xml
msgid ""
"Virtual method to be overridden by the user. Called when the export is "
"finished."
msgstr ""
+"Une méthode virtuelle à surcharger par l'utilisateur. Elle est appelée "
+"lorsque l'exportation est terminée."
#: doc/classes/EditorExportPlugin.xml
msgid ""
@@ -23419,6 +25219,14 @@ msgid ""
"Calling [method skip] inside this callback will make the file not included "
"in the export."
msgstr ""
+"Une méthode virtuelle à surcharger par l'utilisateur. Elle est appelée pour "
+"chaque fichier exporté, passant des arguments qui permettent d'identifier le "
+"fichier exporté. [code]path[/code] est le chemin du fichier, [code]type[/"
+"code] est la [Resource] représentée par ce fichier (par exemple "
+"[PackedScene]) et [code]features[/code] est la liste des fonctionnalités de "
+"cette exportation.\n"
+"Appeler [method skip] dans cette méthode surchargée pour ne pas exporter ce "
+"fichier."
#: doc/classes/EditorExportPlugin.xml
msgid ""
@@ -23427,6 +25235,11 @@ msgid ""
"the file. If [code]remap[/code] is [code]true[/code], file will not be "
"exported, but instead remapped to the given [code]path[/code]."
msgstr ""
+"Ajoute un fichier personnalisé à exporter. [code]path[/code] est le chemin "
+"virtuel qui peut être utilisé pour charger le fichier, [code]file[/code] "
+"représente les données binaires du fichier. Si [code]remap[/code] est "
+"[code]true[/code], le fichier ne sera pas exporté, mais sera remplacé par "
+"une référence au chemin [code]path[/code]."
#: doc/classes/EditorExportPlugin.xml
msgid ""
@@ -23439,6 +25252,8 @@ msgid ""
"Adds a C++ code to the iOS export. The final code is created from the code "
"appended by each active export plugin."
msgstr ""
+"Ajoute un code C++ à l'exportation iOS. Le code final est créé à partir de "
+"ce code ajouté à chaque greffon d'exportation actif."
#: doc/classes/EditorExportPlugin.xml
msgid ""
@@ -23592,48 +25407,68 @@ msgid ""
"specified in [code]feature[/code]. When a feature is disabled, it will "
"disappear from the editor entirely."
msgstr ""
+"Si [code]disable[/code] est [code]true[/code], désactive la fonction "
+"d'éditeur spécifiée dans [code]feature[/code]. Lorsqu'une fonction est "
+"désactivée, elle disparaîtra entièrement de l'éditeur."
#: doc/classes/EditorFeatureProfile.xml
msgid ""
"The 3D editor. If this feature is disabled, the 3D editor won't display but "
"3D nodes will still display in the Create New Node dialog."
msgstr ""
+"L'éditeur 3D. Si cette fonctionnalité est désactivée, l'éditeur 3D ne sera "
+"pas affiché mais les nœuds 3D seront toujours affichés dans le dialogue "
+"\"Créer un nouveau nœud\"."
#: doc/classes/EditorFeatureProfile.xml
msgid ""
"The Script tab, which contains the script editor and class reference "
"browser. If this feature is disabled, the Script tab won't display."
msgstr ""
+"L'onglet \"Script\", qui contient l'éditeur de script et le navigateur de "
+"documentation des classes. Si cette fonctionnalité est désactivée, "
+"l'affichage de l'onglet \"Script\" ne sera pas affiché."
#: doc/classes/EditorFeatureProfile.xml
msgid ""
"The AssetLib tab. If this feature is disabled, the AssetLib tab won't "
"display."
msgstr ""
+"L'onglet AssetLib. Si cette caractéristique est désactivée, l'onglet "
+"AssetLib ne sera pas affiché."
#: doc/classes/EditorFeatureProfile.xml
msgid ""
"Scene tree editing. If this feature is disabled, the Scene tree dock will "
"still be visible but will be read-only."
msgstr ""
+"L'éditeur de l'arborescence de la scène. Si cette caractéristique est "
+"désactivée, le dock de l'arborescence de la scène sera toujours visible, "
+"mais ne pourra pas être modifié."
#: doc/classes/EditorFeatureProfile.xml
msgid ""
"The Node dock. If this feature is disabled, signals and groups won't be "
"visible and modifiable from the editor."
msgstr ""
+"Le dock des Nœuds. Si cette caractéristique est désactivée, les signaux et "
+"les groupes ne seront pas affichés ni modifiables dans l'éditeur."
#: doc/classes/EditorFeatureProfile.xml
msgid ""
"The FileSystem dock. If this feature is disabled, the FileSystem dock won't "
"be visible."
msgstr ""
+"Le dock de système de fichiers. Si cette caractéristique est désactivée, le "
+"dock de système de fichiers ne sera pas visible."
#: doc/classes/EditorFeatureProfile.xml
msgid ""
"The Import dock. If this feature is disabled, the Import dock won't be "
"visible."
msgstr ""
+"Le dock d'importation. Si cette caractéristique est désactivée, le dock "
+"d'importation ne sera pas visible."
#: doc/classes/EditorFeatureProfile.xml doc/classes/SpatialMaterial.xml
msgid "Represents the size of the [enum Feature] enum."
@@ -24113,6 +25948,20 @@ msgid ""
"[/codeblock]\n"
"Return [code]true[/code] to make all options always visible."
msgstr ""
+"Cette méthode peut être surchargée pour masquer certaines options "
+"d'importation si des conditions sont réunies. C'est principalement utile "
+"pour masquer des options qui dépendre d'autres options. Par exemple :\n"
+"[codeblock]\n"
+"func get_option_visibility(option, options):\n"
+" # N'afficher que le réglage de qualité de perte (\"lossy\") si le mode "
+"de compression est à \"Lossy\".\n"
+" if option == \"compress/lossy_quality\" and options.has(\"compress/"
+"mode\"):\n"
+" return int(options[\"compress/mode\"]) == COMPRESS_LOSSY\n"
+"\n"
+" return true\n"
+"[/codeblock]\n"
+"Retourne [code]true[/code] pour toujours rendre toutes les options visibles."
#: doc/classes/EditorImportPlugin.xml
msgid ""
@@ -24270,6 +26119,19 @@ msgid ""
"To use [EditorInspectorPlugin], register it using the [method EditorPlugin."
"add_inspector_plugin] method first."
msgstr ""
+"[EditorInspectorPlugin] permet d'ajouter des éditeurs de propriétés "
+"personnalisés dans [EditorInspector].\n"
+"Lorsqu'un objet est modifié, la fonction [method can_handle] est appelée et "
+"doit retourner [code]true[/code] si ce type d'objet est supporté.\n"
+"Si supporté, la fonction [method parse_begin] sera appelée, permettant de "
+"placer des contrôles personnalisés au début de la classe.\n"
+"Puis, les méthodes [méthod parse_category] et [method parse_property] seront "
+"appelées pour chaque catégorie et chaque propriété. Elles offrent la "
+"possibilité d'ajouter d'autres contrôles personnalisés à l'inspecteur.\n"
+"Enfin, la méthode [method parse_end] sera appelée.\n"
+"Sur chacun de ces appels, les methodes \"add\" peuvent être appelées.\n"
+"Pour utiliser votre [EditorInspectorPlugin], commencez par l'enregistrer "
+"avec la méthode [method EditorPlugin.add_inspector_greffon]."
#: doc/classes/EditorInspectorPlugin.xml
msgid "Inspector plugins"
@@ -24553,6 +26415,8 @@ msgstr ""
msgid ""
"Adds a script at [code]path[/code] to the Autoload list as [code]name[/code]."
msgstr ""
+"Ajoute un script à [code]path[/code] à la liste des scripts chargés "
+"automatiquement sous le nom [code]name[/code]."
#: doc/classes/EditorPlugin.xml
msgid ""
@@ -24562,6 +26426,12 @@ msgid ""
"your custom control with [method remove_control_from_bottom_panel] and free "
"it with [method Node.queue_free]."
msgstr ""
+"Ajoute un contrôle au panneau du bus (avec \"Sortie\", \"Deboggage\", "
+"\"Animation\", etc.). Retourne une référence au bouton ajouté. Il revient à "
+"vous de masquer le bouton si besoin. Lorsque votre greffon est désactivé, "
+"assurez-vous de supprimer votre contrôle personnalisé avec [method "
+"remove_control_from_bottom_panel] et de le libérer avec [method Node."
+"queue_free]"
#: doc/classes/EditorPlugin.xml
msgid ""
@@ -24574,6 +26444,15 @@ msgid ""
"with [method remove_control_from_container] and free it with [method Node."
"queue_free]."
msgstr ""
+"Ajoute un contrôle personnalisé à un conteneur (voir [enum "
+"CustomControlContainer)]. Il existe de nombreux emplacements où des "
+"contrôles personnalisés peuvent être ajoutés dans l'interface utilisateur de "
+"l'éditeur.\n"
+"N'oubliez pas que vous devez gérer la visibilité de vos contrôles "
+"personnalisés vous-même (et probablement le cacher après l'avoir ajouté).\n"
+"Lorsque votre greffon est désactivé, assurez-vous de supprimer votre "
+"contrôle personnalisé avec [method remove_control_from_container] et de le "
+"libérer avec [method Node.queue_free]"
#: doc/classes/EditorPlugin.xml
msgid ""
@@ -24584,6 +26463,13 @@ msgid ""
"with [method remove_control_from_docks] and free it with [method Node."
"queue_free]."
msgstr ""
+"Ajoute le contrôle à un emplacement spécifique du dock (voir [enum DockSlot] "
+"pour les options).\n"
+"Si le dock est repositionné et aussi longtemps que le greffon est actif, "
+"l'éditeur enregistrera la position du dock pour d'autres sessions.\n"
+"Lorsque votre greffon est désactivé, assurez-vous de supprimer votre "
+"contrôle personnalisé avec [method remove_control_from_container] et de le "
+"libérer avec [method Node.queue_free]"
#: doc/classes/EditorPlugin.xml
msgid ""
@@ -24598,6 +26484,16 @@ msgid ""
"During run-time, this will be a simple object with a script so this function "
"does not need to be called then."
msgstr ""
+"Ajoute un type personnalisé qui apparaîtra dans la liste des nœuds ou des "
+"ressources. Une icône peut être spécifiée en option.\n"
+"Lorsque le nœud ou la ressource est sélectionné, le type de base sera "
+"instancié (c'est-à-dire \"Spatial, \"Control\", \"Resource\"), puis le "
+"script sera chargé et défini pour cet objet.\n"
+"Vous pouvez utiliser la méthode virtuelle [method handles] pour vérifier si "
+"votre objet personnalisé est édité en vérifiant le script ou en utilisant le "
+"mot-clé [code]is[/code].\n"
+"Pendant l'exécution, ce sera un objet simple avec un script de sorte que "
+"cette fonction n'a pas besoin d'être appelée à ce moment."
#: doc/classes/EditorPlugin.xml
msgid ""
@@ -24605,6 +26501,10 @@ msgid ""
"tasks when the project is being exported.\n"
"See [method add_inspector_plugin] for an example of how to register a plugin."
msgstr ""
+"Enregistre un nouveau [EditorExportPlugin]. Les greffons d'exportation sont "
+"utilisés pour effectuer des tâches lorsque le projet est exporté.\n"
+"Voir [method add_inspector_plugin] pour un exemple sur comment enregistrer "
+"un greffon."
#: doc/classes/EditorPlugin.xml
msgid ""
@@ -24614,6 +26514,13 @@ msgid ""
"add_scene_import_plugin] instead.\n"
"See [method add_inspector_plugin] for an example of how to register a plugin."
msgstr ""
+"Enregistre un nouveau [EditorImportPlugin]. Les greffons d'importation sont "
+"utilisés pour importer des éléments personnalisés et non reconnus comme un "
+"type personnalisé [Resource].\n"
+"[b]Note :[/b] Si vous voulez importer des formats d'éléments 3D "
+"personnalisés, utilisez plutôt [method add_scene_import_plugin].\n"
+"Voir [method add_inspector_plugin] pour un exemple sur comment enregistrer "
+"un greffon."
#: doc/classes/EditorPlugin.xml
msgid ""
@@ -24635,6 +26542,24 @@ msgid ""
" remove_inspector_plugin(inspector_plugin)\n"
"[/codeblock]"
msgstr ""
+"Enregistre un nouveau [EditorInspectorPlugin]. Les greffons de l'inspecteur "
+"sont utilisés pour étendre [EditorInspector] et fournir des outils de "
+"configuration personnalisés pour les propriétés de votre objet.\n"
+"[b]Note :[/b] Utilisez toujours [method remove_inspector_plugin] pour "
+"supprimer l'enregistrement de votre [EditorInspectorPlugin] lorsque votre "
+"[EditorPlugin] est désactivé pour empêcher les fuites de mémoire et un "
+"comportement inattendu.\n"
+"[codeblock]\n"
+"const MyInspectorPlugin = preload(\"res://addons/votre_greffon/le/chemin/"
+"vers/votre/script.gd\")\n"
+"var inspector_plugin = MyInspectorPlugin.new()\n"
+"\n"
+"func _enter_tree():\n"
+" add_inspector_plugin(inspector_plugin)\n"
+"\n"
+"func _exit_tree():\n"
+" remove_inspector_plugin(inspector_plugin)\n"
+"[/codeblock]"
#: doc/classes/EditorPlugin.xml
msgid ""
@@ -24900,6 +26825,8 @@ msgid ""
"Returns the [EditorInterface] object that gives you control over Godot "
"editor's window and its functionalities."
msgstr ""
+"Retourne l'objet [EditorInterface] qui vous donne le contrôle sur la fenêtre "
+"de l'éditeur Godot et de ses fonctionnalités."
#: doc/classes/EditorPlugin.xml
msgid ""
@@ -24918,6 +26845,20 @@ msgid ""
"\"EditorIcons\")\n"
"[/codeblock]"
msgstr ""
+"Surchargez cette méthode dans votre greffon pour retourner une [Texture] "
+"afin de lui donner une icône.\n"
+"Pour les greffons d'écran principal, cela apparaît en haut de l'écran, à "
+"droite des boutons \"2D\", \"3D\", \"Script\" et \"AssetLib\".\n"
+"Idéalement, l'icône de greffon doit être blanche avec un fond transparent et "
+"16x16 pixels en taille.\n"
+"[codeblock]\n"
+"func get_greffon_icon():\n"
+" # Vous pouvez utiliser une icône personnalisée :\n"
+" return preload(\"res://addons/mon_greffon/icone_de_mon_greffon.svg\")\n"
+" # Ou utilisez une icône intégrée :\n"
+" return get_editor_interface().get_base_control().get_icon(\"Node\", "
+"\"EditorIcons\")\n"
+"[/codeblock]"
#: doc/classes/EditorPlugin.xml
msgid ""
@@ -24926,20 +26867,42 @@ msgid ""
"For main screen plugins, this appears at the top of the screen, to the right "
"of the \"2D\", \"3D\", \"Script\", and \"AssetLib\" buttons."
msgstr ""
+"Surchargez cette méthode dans votre greffon pour fournir le nom du greffon "
+"lorsque affiché dans l'éditeur Godot.\n"
+"Pour les greffons d'écran principal, cela apparaît en haut de l'écran, à "
+"droite des boutons \"2D\", \"3D\", \"Script\" et \"AssetLib\"."
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
msgstr ""
+"Obtient le dialogue de l'éditeur utilisé pour faire des scripts.\n"
+"[b]Note :[/b] Les utilisateurs peuvent le configurer avant d'utiliser.\n"
+"[b]Attention :[/b] Supprimer et libérer ce nœud rend une partie de l'éditeur "
+"inutile et peut causer un accident."
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -24947,12 +26910,24 @@ msgid ""
"Gets the undo/redo object. Most actions in the editor can be undoable, so "
"use this object to make sure this happens when it's worth it."
msgstr ""
+"Obtient l'objet annuler/refaire. La plupart des actions de l'éditeur peuvent "
+"être inutilisables, alors utilisez cet objet pour s'assurer que cela se "
+"produit quand ça en vaut la peine."
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -24964,6 +26939,12 @@ msgid ""
"forward_canvas_gui_input] and [method forward_spatial_gui_input] these will "
"be called too."
msgstr ""
+"Implémentez cette fonction si votre greffon modifie un type spécifique "
+"d'objet (Resource ou Node). Si vous retournez [code]true[/code], alors vous "
+"obtiendrez les fonctions [method edit] et [method make_visible] appelé "
+"lorsque l'éditeur les demande. Si vous avez déclaré les méthodes [method "
+"forward_canvas_gui_input] et [method forward_spatial_gui_input] ceux-ci "
+"seront également appelés."
#: doc/classes/EditorPlugin.xml
msgid ""
@@ -24971,6 +26952,9 @@ msgid ""
"the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and "
"[b]AssetLib[/b])."
msgstr ""
+"Retourne [code]true[/code] si c'est ce greffon de l'éditeur concerne l'écran "
+"principal (qui va dans le sélecteur d'espace de travail à côté de [b]2D[/b], "
+"[b]3D[/b], [b]Script[/b] et [b]AssetLib[/b)]."
#: doc/classes/EditorPlugin.xml
msgid "Minimizes the bottom panel."
@@ -25076,11 +27060,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
-msgstr "Restaurer l’état enregistré par [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
+msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -25376,6 +27379,17 @@ msgid ""
"[code]receiver_func[/code] will still be called, but the preview will be "
"null."
msgstr ""
+"Met la [code]resource[/code] modifiée en attente pour être prévisualisée. "
+"Une fois la prévisualisation prête, la méthode [code]receiver_func[/code] du "
+"[code]receiver[/code] sera appelée. Le [code]receiver_func[/code] doit "
+"prendre les quatre arguments suivants : le chemin (\"path\") [String], la "
+"[Texture] de l'aperçu (\"preview\"), la [Texture] de la vignette "
+"(\"thumbnail_preview\") et les données personnées (\"userdata\") sous forme "
+"de [Variant]. [code]userdata[/code] peut continir n'importe quel type de "
+"données, et sera retourné quand [code]receiver_func[/code] sera appelé.\n"
+"[b]Note :[/b] S'il n'était pas possible de créer la prévisualisation, "
+"[code]receiver_func[/code] sera toujours appelé, mais la prévisualisation "
+"sera \"null\"."
#: doc/classes/EditorResourcePreview.xml
msgid ""
@@ -25389,6 +27403,18 @@ msgid ""
"[code]receiver_func[/code] will still be called, but the preview will be "
"null."
msgstr ""
+"Met le fichier de ressource situé à [code]path[/code] en attente pour être "
+"prévisualisé. Une fois la prévisualisation prête, la méthode "
+"[code]receiver_func[/code] du [code]receiver[/code] sera appelée. Le "
+"[code]receiver_func[/code] doit prendre les quatre arguments suivants : le "
+"chemin (\"path\") [String], la [Texture] de l'aperçu (\"preview\"), la "
+"[Texture] de la vignette (\"thumbnail_preview\") et les données personnées "
+"(\"userdata\") sous forme de [Variant]. [code]userdata[/code] peut continir "
+"n'importe quel type de données, et sera retourné quand [code]receiver_func[/"
+"code] sera appelé.\n"
+"[b]Note :[/b] S'il n'était pas possible de créer la prévisualisation, "
+"[code]receiver_func[/code] sera toujours appelé, mais la prévisualisation "
+"sera \"null\"."
#: doc/classes/EditorResourcePreview.xml
msgid "Removes a custom preview generator."
@@ -25664,10 +27690,19 @@ msgid ""
"[b]Note:[/b] You must set the [member script_owner] for the custom context "
"menu items to work."
msgstr ""
+"Similaire à [EditorResourcePicker], ce nœud [Control] est utilisé dans le "
+"dock d'inspecteur de l'éditeur, mais seulement pour modifier la propriété "
+"[code]script[/code] d'un [Node]. Les options par défaut pour créer de "
+"nouvelles ressources de tous les sous-types possibles sont remplacées par "
+"des boutons dédiés qui ouvrent le dialogue \"Attaché un Script\". Peut être "
+"utilisé avec [EditorInspectorPlugin] pour recréer le même comportement.\n"
+"[b]Note :[/b] Vous devez définir le [member script_owner] pour les éléments "
+"de menu contextuel personnalisés fonctionnent."
#: doc/classes/EditorScriptPicker.xml
msgid "The owner [Node] of the script property that holds the edited resource."
msgstr ""
+"Le [Node] propriétaire de la propriété Script qui a la ressource modifiée."
#: doc/classes/EditorSelection.xml
msgid "Manages the SceneTree selection in the editor."
@@ -25738,6 +27773,28 @@ msgid ""
"[b]Note:[/b] This class shouldn't be instantiated directly. Instead, access "
"the singleton using [method EditorInterface.get_editor_settings]."
msgstr ""
+"L'objet qui détient les paramètres de l'éditeur indépendant du projet. Ces "
+"paramètres sont généralement visibles dans le menu [b]Éditeur > Paramètres "
+"de l'éditeur[/b].\n"
+"Les noms de propriété utilisent des délimiteurs avec des barres obliques (\"/"
+"\") pour distinguer les sections. Les valeurs de réglage peuvent être de "
+"tout type [Variant]. Il est recommandé d'utiliser la casse [code]snake_case[/"
+"code] pour que les paramètres de l'éditeur soient compatibles avec l'éditeur "
+"Godot lui-même.\n"
+"L'accès aux paramètres peut être fait en utilisant les méthodes suivantes :\n"
+"[codeblock]\n"
+"# `settings.set(\"une/propriete\", value)` fonctionne aussi puisque cette "
+"classe surcharge `_set()` en interne.\n"
+"settings.set_setting(\"une/propriete\",value)\n"
+"\n"
+"# `settings.get(\"une/propriete\", value)` fonctionne aussi puisque cette "
+"classe surcharge `_get()` en interne.\n"
+"settings.get_setting(\"une/propriete\")\n"
+"\n"
+"var list_of_settings = settings.get_property_list()\n"
+"[/codeblock]\n"
+"[b]Note :[/b] Cette classe ne devrait être pas instanciée. Accédez plutôt au "
+"singleton [method EditorInterface.get_editor_settings]"
#: doc/classes/EditorSettings.xml
msgid ""
@@ -25760,10 +27817,29 @@ msgid ""
"editor_settings.add_property_info(property_info)\n"
"[/codeblock]"
msgstr ""
+"Ajoute une info de propriété personnalisée à une propriété. Le dictionnaire "
+"doit contenir :\n"
+"- [code]name[/code]: [String] (le nom de la propriété)\n"
+"- [code]type[/code]: [int] (voir [enum Variant.Type])\n"
+"- en option [code]hint[/code]: [int] (voir [enum PropertyHint]) et "
+"[code]hint_string[/code]: [String]\n"
+"[b]Exemple :[/b]\n"
+"[codeblock]\n"
+"editor_settings.set(\"category/property_name\", 0)\n"
+"\n"
+"var property_info = {\n"
+" \"name\": \"category/property_name\",\n"
+" \"type\": TYPE_INT,\n"
+" \"hint\": PROPERTY_HINT_ENUM,\n"
+" \"hint_string\": \"un,deux,trois\"\n"
+"}\n"
+"\n"
+"editor_settings.add_property_info(property_info)\n"
+"[/codeblock]"
#: doc/classes/EditorSettings.xml
msgid "Erases the setting whose name is specified by [code]property[/code]."
-msgstr ""
+msgstr "Efface le réglage nommé [code]property[/code]."
#: doc/classes/EditorSettings.xml
msgid "Returns the list of favorite files and directories for this project."
@@ -25782,12 +27858,17 @@ msgid ""
"subdirectory inside the settings path where project-specific settings are "
"saved."
msgstr ""
+"Retourne le chemin des paramètres spécifiques à ce projet. Les projets ont "
+"tous un sous-dossier unique où les paramètres spécifiques au projet sont "
+"sauvegardés."
#: doc/classes/EditorSettings.xml
msgid ""
"Returns the list of recently visited folders in the file dialog for this "
"project."
msgstr ""
+"Retourne la liste des dossiers récemment visités dans le dialogue des "
+"fichiers de ce projet."
#: doc/classes/EditorSettings.xml
msgid ""
@@ -25802,6 +27883,11 @@ msgid ""
"[code]settings/tmp[/code] - Used for temporary storage of files\n"
"[code]settings/templates[/code] - Where export templates are located"
msgstr ""
+"Retourne le chemin des réglages généraux du moteur. Dans ce chemin, vous "
+"pouvez trouver des chemins standards tels que :\n"
+"[code]settings/tmp[/code] - L'emplacement où sont stockés les fichiers "
+"temporaires\n"
+"[code]settings/templates[/code] - L'emplacement où sont stockés les modèles"
#: doc/classes/EditorSettings.xml
msgid ""
@@ -26171,6 +28257,14 @@ msgid ""
"plug-n-play experience. A custom VCS plugin is supposed to inherit from "
"[EditorVCSInterface] and override these virtual functions."
msgstr ""
+"Définit l'API que l'éditeur utilise pour extraire des informations du VCS "
+"utilisé. La mise en œuvre de cette API est incluse dans les greffons VCS, "
+"qui sont des scripts qui héritent de [EditorVCSInterface] et sont liés (à la "
+"demande) à au singleton de [EditorVCSInterface]. Plutôt qu'accomplir la "
+"tâche elle-même, toutes les fonctions virtuelles énumérées ci-dessous "
+"appellent les fonctions surchargées internes dans les greffons VCS pour "
+"fournir un fonctionnement automatique. Un greffon VCS personnalisé devrait "
+"hériter de [EditorVCSInterface] et surcharger ces fonctions virtuelles."
#: doc/classes/EditorVCSInterface.xml
#, fuzzy
@@ -26345,6 +28439,16 @@ msgid ""
"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
"recorded from the system timezone where the commit was created."
msgstr ""
+"Une fonction d'aide pour créer un [Dictionnaire] des données d'un commit. "
+"[code]msg[/code] est le message de commit. [code]author[/code] est une "
+"simple chaîne intelligible contenant tous les détails de l'auteur, par "
+"exemple son e-mail et le nom comme configurés dans le VCS. [code]id[/code] "
+"est le code de hachage du commit, dans lequel votre VCS peut fournir un "
+"identifiant unique pour chaque commit. [code]unix_timestamp[/code] est "
+"l'horodatage Unix basé sur UTC de la date de création de la commit. "
+"[code]offset_minutes[/code] is le décalage horaire par rapport à UTC, in "
+"minutes, enregistré depuis la zone horaire du système lors de la création du "
+"commit."
#: doc/classes/EditorVCSInterface.xml
msgid ""
@@ -26459,6 +28563,15 @@ msgid ""
"[code]project_managers[/code] - Array of Strings, project manager names\n"
"[code]developers[/code] - Array of Strings, developer names"
msgstr ""
+"Retourne les informations des auteurs du moteur dans un dictionnaire.\n"
+"[code]lead_developers[/code] - Un tableau de String, avec le nom de "
+"développeurs principaux\n"
+"[code]fondateurs[/code] - Un tableau de String, le nom des "
+"fondateurs\n"
+"[code]project_managers[/code] - Un tableau de String, le nom des chefs de "
+"projet\n"
+"[code]developers[/code] - Un tableau de String, le nom de "
+"développeurs"
#: doc/classes/Engine.xml
msgid ""
@@ -26468,6 +28581,11 @@ msgid ""
"[code]copyright[/code], [code]license[/code]} describing subsections of the "
"component"
msgstr ""
+"Retourne un Array d'information sur le copyright dans un dictionnaire.\n"
+"[code]name[/code] - String, le nom du composant\n"
+"[code]parts[/code] - Un table de Dictionary {[code]files[/code], "
+"[code]copyright[/code], [code]license[/code]} décrivant chaque paragraphe de "
+"la licence du composant"
#: doc/classes/Engine.xml
msgid ""
@@ -26477,6 +28595,11 @@ msgid ""
"[code]mini_sponsors[/code], [code]gold_donors[/code], [code]silver_donors[/"
"code], [code]bronze_donors[/code]}"
msgstr ""
+"Retourne un Dictionnaire des Arrays de noms des donateurs.\n"
+"{[code]platinum_sponsors[/code], [code]gold_sponsors[/code], "
+"[code]silver_sponsors[/code], [code]bronze_sponsors[/code], "
+"[code]mini_sponsors[/code], [code]gold_donors[/code], [code]silver_donors[/"
+"code], [code]bronze_donors[/code]}"
#: doc/classes/Engine.xml
msgid ""
@@ -27461,15 +29584,15 @@ msgstr ""
"rapide)."
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
-"La qualité la plus basse pour l'effet d’occlusion ambiante dans l’espace de "
+"La qualité moyenne pour l'effet d’occlusion ambiante dans l’espace de "
"l’écran."
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
-"La qualité la plus basse de l’occlusion ambiante d’espace d’écran (la plus "
+"La qualité la plus haute de l’occlusion ambiante d’espace d’écran (la plus "
"lente)."
#: doc/classes/Expression.xml
@@ -27736,9 +29859,10 @@ msgstr ""
"Le texte est interprété comme étant encodé en UTF-8."
#: doc/classes/File.xml
-#, fuzzy
msgid "Returns next [code]len[/code] bytes of the file as a [PoolByteArray]."
-msgstr "Retourne [code]true[/code] (vrai) si la chaîne de caractères est vide."
+msgstr ""
+"Retourne les [code]len[/code] prochains octets du fichier sous forme de "
+"[PoolByteArray]."
#: doc/classes/File.xml
msgid ""
@@ -27762,6 +29886,28 @@ msgid ""
"[code]\"\"[/code] for each quotation mark that needs to be interpreted as "
"such instead of the end of a text value."
msgstr ""
+"Retourne la prochaine valeur du fichier au format CSV (\"Comma-Separated "
+"Values\"). Vous pouvez utiliser un autre délimiteur [code]delim[/code] à la "
+"place de la virgule [code]\",\"[/code] (\"comma\") par défaut. Ce délimiteur "
+"doit ne faire qu'un seul caractère de long, et ne peut pas être des "
+"guillemets (\").\n"
+"Le texte est interprété comme étant encodé en UTF-8. Les textes doivent être "
+"entourés de guillemets si elles contiennent une caractère délimiteur. Les "
+"guillemets dans un texte doivent être doublées pour être échappées "
+"correctement.\n"
+"Par exemple, les lignes CSV suivantes sont valides et sont correctement "
+"interprétées comme deux textes pour chaque ligne :\n"
+"[codeblock]\n"
+"Alice,\"Salut, Bob !\"\n"
+"Bob,Alice! Quelle Surprise !\n"
+"Alice,\"Je pensais que tu me répondrais \"\"Salut, Monde !\"\".\"\n"
+"[/codeblock]\n"
+"Notez que les guillemets ne sont pas nécessaires pour la deuxième ligne "
+"puisque le délimiteur (\",\") n'est pas présent dans les deux textes. Mais "
+"il est aussi bien [i]possible[/i] d'ajouter des guillemets autour chaque "
+"texte, ça n'était qu'un exemple pour montrer les possibilités. Le deuxième "
+"texte de la troisième ligne doit être entourée de guillemets [code]\"\"[/"
+"code] pour échapper les guillemets présentes dans le texte."
#: doc/classes/File.xml
msgid "Returns the next 64 bits from the file as a floating-point number."
@@ -28072,13 +30218,12 @@ msgstr ""
"du fichier."
#: doc/classes/File.xml
-#, fuzzy
msgid ""
"Opens the file for write operations. The file is created if it does not "
"exist, and truncated if it does."
msgstr ""
-"Ouvre le fichier pour les opérations d’écriture. Créez-le si le fichier "
-"n’existe pas et tronquer s’il existe."
+"Ouvre le fichier en écriture. Crée le fichier s'il n’existe pas, et le "
+"tronque s’il existe déjà."
#: doc/classes/File.xml
msgid ""
@@ -30166,7 +32311,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -30191,7 +32337,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -31047,6 +33194,15 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+#, fuzzy
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+"Si [code]true[/code], met à jour les animations en réponse aux notifications "
+"liées au processus."
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
"Si [code]true[/code], les éléments de la grille sont centrés sur l'axe X."
@@ -31102,6 +33258,10 @@ msgid "The assigned [MeshLibrary]."
msgstr "La [MeshLibrary] assignée."
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -31152,7 +33312,6 @@ msgstr ""
"itérations."
#: doc/classes/HashingContext.xml
-#, fuzzy
msgid ""
"The HashingContext class provides an interface for computing cryptographic "
"hashes over multiple iterations. This is useful for example when computing "
@@ -31209,8 +33368,7 @@ msgstr ""
" var res = ctx.finish()\n"
" # Afficher le résultat sous forme hexadécimal et en tableau.\n"
" printt(res.hex_encode(), Array(res))\n"
-"[/codeblock]\n"
-"[b]Note :[/b] N'est pas disponible pour les exports HTML5."
+"[/codeblock]"
#: doc/classes/HashingContext.xml
msgid "Closes the current context, and return the computed hash."
@@ -33894,7 +36052,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -34051,11 +36209,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-"Retourne le mode de la souris. Voir les constantes pour plus d'informations."
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -34251,25 +36404,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-"Définit le mode de la souris. Voir les constantes pour plus d'informations."
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -34305,6 +36439,26 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+#, fuzzy
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+"Définit le mode de la souris. Voir les constantes pour plus d'informations."
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr "Émis quand un contrôleur a été connecté ou déconnecté."
@@ -34657,8 +36811,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -34800,6 +36954,9 @@ msgid ""
"the controller number, otherwise this is zero. Controllers include devices "
"such as pedals and levers."
msgstr ""
+"Si le message est [code]MIDI_MESSAGE_CONTROL_CHANGE[/code], ça indique le "
+"numéro du contrôleur, sinon c'est zéro. Les contrôleurs inclus les appareils "
+"comme les pédales et les leviers."
#: doc/classes/InputEventMIDI.xml
msgid ""
@@ -34807,6 +36964,9 @@ msgid ""
"the controller value, otherwise this is zero. Controllers include devices "
"such as pedals and levers."
msgstr ""
+"Si le message est [code]MIDI_MESSAGE_CONTROL_CHANGE[/code], ça indique la "
+"valeur du contrôleur, sinon c'est zéro. Les contrôleurs inclus les appareils "
+"comme les pédales et les leviers."
#: doc/classes/InputEventMIDI.xml
msgid ""
@@ -34848,6 +37008,8 @@ msgid ""
"The pressure of the MIDI signal. This value ranges from 0 to 127. For many "
"devices, this value is always zero."
msgstr ""
+"La pression du signal MIDI. Cette valeur va de 0 à 127. Pour plusieurs "
+"périphériques, cette valeur est toujours 0."
#: doc/classes/InputEventMIDI.xml
msgid ""
@@ -34934,9 +37096,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -38203,6 +40365,9 @@ msgid ""
"If [code]true[/code], the [LineEdit] will show a clear button if [code]text[/"
"code] is not empty, which can be used to clear the text quickly."
msgstr ""
+"Si [code]true[/code], le [LineEdit] affichera un bouton effacer si le "
+"[code]text[/code] n'est pas vide, ce qui permet d'effacer rapidement le "
+"texte."
#: doc/classes/LineEdit.xml
msgid "If [code]true[/code], the context menu will appear when right-clicked."
@@ -38252,6 +40417,24 @@ msgid ""
"# `text_change_rejected` is emitted with \"bye\" as parameter.\n"
"[/codeblock]"
msgstr ""
+"La quantité maximale de caractères qui peuvent être entré dans ce "
+"[LineEdit]. Si [code]0[/code], il n'y a aucune limite.\n"
+"Quand une limite est définie, le texte est tronqué aux [member max_length] "
+"premiers caractères. Ça arrive pour le [member text] existant lorsque la "
+"longueur maximale est définie, ou quand un nouveau texte est inséré dans le "
+"[LineEdit], en étant par exemple collé. Si le texte est tronqué, le signal "
+"[signal text_change_rejected] est émis avec le reste du texte tronqué passé "
+"en paramètre.\n"
+"[b]Example:[/b]\n"
+"[codeblock]\n"
+"text = \"Salut le monde\"\n"
+"max_length = 5\n"
+"# `text` est tronqué à \"Salut\".\n"
+"max_length = 11\n"
+"text += \" l'univers\"\n"
+"# `text` becomes \"Salut l'uni\".\n"
+"# `text_change_rejected` est émis avec \"vers\" passé en paramètre.\n"
+"[/codeblock]"
#: doc/classes/LineEdit.xml doc/classes/TextEdit.xml
msgid ""
@@ -39793,9 +41976,10 @@ msgstr "Un nœud utilisé pour afficher des [Mesh] en 2D."
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -40639,6 +42823,11 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+#, fuzzy
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr "Retourne le [RID] de la énième forme d'une zone."
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -40661,10 +42850,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -40699,21 +42900,36 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
#, fuzzy
msgid "Server interface for low-level 2D navigation access."
msgstr "Interface de serveur pour l'accès audio de bas niveau."
#: doc/classes/Navigation2DServer.xml
+#, fuzzy
msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -40762,7 +42978,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr "Renvoie [code]true[/code] si le chemin donné est filtré."
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -40829,6 +43055,13 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+#, fuzzy
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+"Retourne l'actuelle ligne du fichier interprété (actuellement non "
+"implémenté)."
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Returns the map cell size."
msgstr "Retourne la taille des cellules de la carte."
@@ -40854,9 +43087,11 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-#, fuzzy
-msgid "Returns the navigation path to reach the destination from the origin."
-msgstr "Renvoie le traqueur de position à l'identification donnée."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
+msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
@@ -40873,6 +43108,13 @@ msgstr "Retourne [code]true[/code] si l'[AABB] est vide."
msgid "Sets the map active."
msgstr "Définit la carte comme active."
+#: doc/classes/Navigation2DServer.xml
+#, fuzzy
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr "Définit le polygone de navigation de la tuile."
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Set the map cell size used to weld the navigation mesh polygons."
@@ -40889,15 +43131,63 @@ msgstr "Crée une nouvelle région."
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr "Retourne [code]true[/code] si le [code]signal[/code] donné existe."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
+msgid "Returns the region's navigation layers."
+msgstr "Retourne le maillage de navigation de l'élément."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr "Retourne [code]true[/code] si le [code]signal[/code] donné existe."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr ""
+"Définit la [code]position[/code] du point avec l'identifiant [code]id[/code] "
+"spécifié."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
msgid "Sets the map for the region."
msgstr "Retourne la hauteur du contenu."
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Sets the navigation mesh for the region."
@@ -40908,6 +43198,13 @@ msgstr "Définit le polygone de navigation de la tuile."
msgid "Sets the global transformation for the region."
msgstr "Retourne la matrice de transformation globale de cet élément."
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr ""
+"Définit la [code]position[/code] du point avec l'identifiant [code]id[/code] "
+"spécifié."
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr "Un agent 3D utilisé dans les navigations pour esquiver les collisions."
@@ -40917,9 +43214,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -40937,9 +43241,16 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-#, fuzzy
-msgid "Returns the path from start to finish in global coordinates."
-msgstr "Le point de collision, dans les coordonnées globales."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
+msgstr ""
#: doc/classes/NavigationAgent.xml
msgid ""
@@ -40953,11 +43264,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -41003,6 +43327,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -41015,7 +43345,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -41044,6 +43380,13 @@ msgstr "La valeur de luminance maximale pour l'exposition automatique."
msgid "The maximum speed that an agent can move."
msgstr "Rotation maximale à travers la charnière."
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
#, fuzzy
msgid "The distance to search for other agents."
@@ -41108,9 +43451,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -41126,13 +43476,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
#, fuzzy
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr "Retourne le [RID] de la énième forme d'une zone."
@@ -41153,6 +43496,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -41185,8 +43535,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
#, fuzzy
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr "Retourne si la [code]class[/code] spécifiée est disponible ou non."
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -41211,12 +43561,17 @@ msgstr ""
"créé."
#: doc/classes/NavigationMesh.xml
+#, fuzzy
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
+"Si [code]value[/code] est [code]true[/code]], définit le [code]bit[/code] "
+"spécifié dans le masque [nom collision_mask].\n"
+"Si [code]value[/code] est [code]false[/code], rétablit le [code]bit[/code] "
+"spécifié dans le masque [nom collision_mask]."
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
msgid ""
@@ -41229,14 +43584,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -41249,7 +43604,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -41277,13 +43632,7 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
-msgstr ""
-
-#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -41294,13 +43643,22 @@ msgstr "Si [code]true[/code], les titres des colonnes sont visibles."
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"is within [member agent_max_climb] of a walkable neighbor."
msgstr ""
#: doc/classes/NavigationMesh.xml
+#, fuzzy
+msgid ""
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
+msgstr ""
+"Si [code]true[/code], les particules sera émise une seule fois puis "
+"arrêtées. Équivalent à [member Particles.one_shot]."
+
+#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -41319,7 +43677,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -41384,7 +43742,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -41407,13 +43765,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -41463,8 +43821,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -41482,8 +43840,21 @@ msgstr "Une instance de [NavigationMesh]."
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -41512,10 +43883,34 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr "Détermine si le [NavigationMeshInstance] est actif ou non."
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "The [NavigationMesh] resource to use."
msgstr "La ressource [NavigationMesh] à utiliser."
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
#, fuzzy
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr "Avertit quand une animation commence à jouer."
@@ -41533,7 +43928,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -41573,7 +43970,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -41653,6 +44052,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -41689,6 +44096,31 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+#, fuzzy
+msgid "A region of the 2D navigation map."
+msgstr "Prépare le maillage de navigation."
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -41696,21 +44128,44 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+#, fuzzy
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr "Détermine si le [NavigationMeshInstance] est actif ou non."
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+#, fuzzy
+msgid "The [NavigationPolygon] resource to use."
+msgstr "La ressource [NavigationMesh] à utiliser."
+
#: doc/classes/NavigationServer.xml
#, fuzzy
msgid "Server interface for low-level 3D navigation access."
msgstr "Interface de serveur pour l'accès audio de bas niveau."
#: doc/classes/NavigationServer.xml
+#, fuzzy
msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -41793,6 +44248,12 @@ msgid "Bakes the navigation mesh."
msgstr "Prépare le maillage de navigation."
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr "Contrôle l'activation de ce serveur."
@@ -43680,10 +46141,14 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr "La rotation en degrés, relative au parent de ce nœud."
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
-"La mise à l'échelle du nœud. La valeur sans mise à l'échelle est [code](1, 1)"
-"[/code]."
#: doc/classes/Node2D.xml
msgid "Local [Transform2D]."
@@ -43874,7 +46339,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -43883,7 +46348,7 @@ msgid ""
"[/codeblock]"
msgstr ""
"Retourne le nom du nœud à l'index [code]idx[/code] (la valeur est entre 0 et "
-"[method get_name_count]).\n"
+"[method get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -44204,6 +46669,16 @@ msgid ""
"where you should use the same convention as in the C# source (typically "
"PascalCase)."
msgstr ""
+"Appelle la [code]method[/code] sur l'objet pendant un temps de repos. Cette "
+"méthode supporte un nombre variable d'arguments, ces paramètres étant passés "
+"dans une liste séparé par une virgule. Exemple :\n"
+"[codeblock]\n"
+"call_deferred(\"set\", \"position\", Vector2(42.0, 0.0))\n"
+"[/codeblock]\n"
+"[b]Note :[/b] En C#, le nom de la méthode doit être spécifiée en snake_case "
+"si c'est une méthode définie par les nœuds Godot. Ça ne s'applique pas aux "
+"méthodes définies par l'utilisateur qui devraient toujours utiliser la même "
+"convention du langage C# (typiquement en PascalCase)."
#: doc/classes/Object.xml
msgid ""
@@ -46116,8 +48591,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -46326,6 +48808,7 @@ msgstr ""
"Windows."
#: doc/classes/OS.xml
+#, fuzzy
msgid ""
"Requests the OS to open a resource with the most appropriate program. For "
"example:\n"
@@ -46335,9 +48818,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -50069,7 +52552,6 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-#, fuzzy
msgid ""
"The strength with which the pinned objects try to stay in velocity relation "
"to each other.\n"
@@ -50749,7 +53231,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -50761,12 +53243,35 @@ msgid ""
"print(array) # [[123]] (PoolByteArray with 1 element inside an Array)\n"
"[/codeblock]"
msgstr ""
+"Un tableau spécialement prévu pour contenir des octets. Optimisé pour la "
+"mémoire, il ne se fragmente pas.\n"
+"[b]Note :[/b] Ce type est passé par valeur et non par référence. Ça veut "
+"dire que lors des [i]modifications[/i] d'un [PoolByteArray] ou d'un "
+"[PoolByteArray] dans un [Array] ou [Dictionary], ces modifications seront "
+"perdues :\n"
+"[codeblock]\n"
+"var array = [PoolByteArray()]\n"
+"array[0].push_back(123) # Accède à une copie du PoolByteArray\n"
+"print(array) # [[]] (Un PoolByteArray vide dans un Array)\n"
+"[/codeblock]\n"
+"Au lieu de ça, le [PoolByteArray] en entier doit être [i]réassigné[/i] avec "
+"[code]=[/code] pour que sa modification soit prise en compte :\n"
+"[codeblock]\n"
+"var array = [PoolByteArray()]\n"
+"var pool_array = array[0] # Crée une copie du PoolByteArray, puis assigne "
+"cette copie\n"
+"pool_array.push_back(123)\n"
+"array[0] = pool_array\n"
+"print(array) # [[123]] (Un PoolByteArray avec 1 élément dans un Array)\n"
+"[/codeblock]"
#: doc/classes/PoolByteArray.xml
msgid ""
"Constructs a new [PoolByteArray]. Optionally, you can pass in a generic "
"[Array] that will be converted."
msgstr ""
+"Construit un nouvel [PoolByteArray]. En option, vous pouvez passer un "
+"[Array] générique qui sera converti."
#: doc/classes/PoolByteArray.xml
msgid "Appends a [PoolByteArray] at the end of this array."
@@ -50908,7 +53413,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -50921,12 +53426,37 @@ msgid ""
"inside an Array)\n"
"[/codeblock]"
msgstr ""
+"Un tableau spécialement prévu pour contenir des [Color]. Optimisé pour la "
+"mémoire, il ne se fragmente pas.\n"
+"[b]Note :[/b] Ce type est passé par valeur et non par référence. Ça veut "
+"dire que lors des [i]modifications[/i] d'un [PoolColorArray] ou d'un "
+"[PoolColorArray] dans un [Array] ou [Dictionary], ces modifications seront "
+"perdues :\n"
+"[codeblock]\n"
+"var array = [PoolColorArray()]\n"
+"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4)) # Accède à une copie du "
+"PoolColorArray\n"
+"print(array) # [[]] (Un PoolColorArray vide dans un Array)\n"
+"[/codeblock]\n"
+"Au lieu de ça, le [PoolColorArray] en entier doit être [i]réassigné[/i] avec "
+"[code]=[/code] pour que sa modification soit prise en compte :\n"
+"[codeblock]\n"
+"var array = [PoolColorArray()]\n"
+"var pool_array = array[0] # Crée une copie du PoolColorArray, puis assigne "
+"cette copie\n"
+"pool_array.push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
+"array[0] = pool_array\n"
+"print(array) # [[(0.1, 0.2, 0.3, 0.4)]] (Un PoolColorArray avec 1 élément "
+"dans un Array)\n"
+"[/codeblock]"
#: doc/classes/PoolColorArray.xml
msgid ""
"Constructs a new [PoolColorArray]. Optionally, you can pass in a generic "
"[Array] that will be converted."
msgstr ""
+"Construit un nouvel [PoolColorArray]. En option, vous pouvez passer un "
+"[Array] générique qui sera converti."
#: doc/classes/PoolColorArray.xml
msgid "Appends a [PoolColorArray] at the end of this array."
@@ -50963,7 +53493,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -50980,14 +53510,40 @@ msgid ""
"around. In comparison, [int] uses signed 64-bit integers which can hold much "
"larger values."
msgstr ""
+"Un tableau spécialement prévu pour contenir des entier ([int]). Optimisé "
+"pour la mémoire, il ne se fragmente pas.\n"
+"[b]Note :[/b] Ce type est passé par valeur et non par référence. Ça veut "
+"dire que lors des [i]modifications[/i] d'un [PoolIntArray] ou d'un "
+"[PoolIntArray] dans un [Array] ou [Dictionary], ces modifications seront "
+"perdues :\n"
+"[codeblock]\n"
+"var array = [PoolIntArray()]\n"
+"array[0].push_back(1234) # Accède à une copie du PoolIntArray\n"
+"print(array) # [[]] (Un PoolIntArray vide dans un Array)\n"
+"[/codeblock]\n"
+"Au lieu de ça, le [PoolIntArray] en entier doit être [i]réassigné[/i] avec "
+"[code]=[/code] pour que sa modification soit prise en compte :\n"
+"[codeblock]\n"
+"var array = [PoolIntArray()]\n"
+"var pool_array = array[0] # Crée une copie du PoolIntArray, puis assigne "
+"cette copie\n"
+"pool_array.push_back(1234)\n"
+"array[0] = pool_array\n"
+"print(array) # [[1234]] (Un PoolIntArray avec 1 élément dans un Array)\n"
+"[/codeblock]\n"
+"[b]Note :[/b] Ce type est limité aux entiers signés de 32 bit, ce qui peut "
+"dire que l'intervalle des valeurs possibles est [code][-2^31, 2^31 - 1][/"
+"code], soit [code][-2147483648, 2147483647][/code]. Tout dépassement "
+"bouclera. En comparaison, un tableau générique [int] utilise des entiers de "
+"64 bit qui peuvent donc contenir des valeurs bien plus grandes."
#: doc/classes/PoolIntArray.xml
msgid ""
"Constructs a new [PoolIntArray]. Optionally, you can pass in a generic "
"[Array] that will be converted."
msgstr ""
-"Construit un nouvel [PoolIntArray]. En option, il est possible de passer un "
-"[Array] générique qui sera converti."
+"Construit un nouvel [PoolIntArray]. En option, vous pouvez passer un [Array] "
+"générique qui sera converti."
#: doc/classes/PoolIntArray.xml
msgid "Appends a [PoolIntArray] at the end of this array."
@@ -51022,7 +53578,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -51041,13 +53597,42 @@ msgid ""
"store [float]s will use roughly 6 times more memory compared to a "
"[PoolRealArray]."
msgstr ""
+"Un tableau spécialement prévu pour contenir des flottants. Optimisé pour la "
+"mémoire, il ne se fragmente pas.\n"
+"[b]Note :[/b] Ce type est passé par valeur et non par référence. Ça veut "
+"dire que lors des [i]modifications[/i] d'un [PoolRealArray] ou d'un "
+"[PoolRealArray] dans un [Array] ou [Dictionary], ces modifications seront "
+"perdues :\n"
+"[codeblock]\n"
+"var array = [PoolRealArray()]\n"
+"array[0].push_back(12.34) # Accède à une copie du PoolRealArray\n"
+"print(array) # [[]] (Un PoolRealArray vide dans un Array)\n"
+"[/codeblock]\n"
+"Au lieu de ça, le [PoolRealArray] en entier doit être [i]réassigné[/i] avec "
+"[code]=[/code] pour que sa modification soit prise en compte :\n"
+"[codeblock]\n"
+"var array = [PoolRealArray()]\n"
+"var pool_array = array[0] # Crée une copie du PoolRealArray, puis assigne "
+"cette copie\n"
+"pool_array.push_back(12.34)\n"
+"array[0] = pool_array\n"
+"print(array) # [[12.34]] (Un PoolRealArray avec 1 élément dans un Array)\n"
+"[/codeblock]\n"
+"[b]Note :[/b] Contrairement aux [float] qui sont en 64 bits, les nombres "
+"enregistrés dans les [PoolRealArray] ne sont que en 32 bits. Ça veut donc "
+"dire que les flottants dans les [PoolRealArray] ont une précision plus "
+"faible que les [float]. Si vous avez besoin d'enregistrer des flottants en "
+"64 bits dans un tableau, utilisez un [Array] standard avec des éléments "
+"[float] qui seront bien en 64 bits. En comparaison, un [Array] avec des "
+"[float] consomme approximativement 6 fois plus de mémoire qu'un "
+"[PoolRealArray]."
#: doc/classes/PoolRealArray.xml
msgid ""
"Constructs a new [PoolRealArray]. Optionally, you can pass in a generic "
"[Array] that will be converted."
msgstr ""
-"Construit un nouvel [PoolRealArray]. En option, il est possible de passer un "
+"Construit un nouvel [PoolRealArray]. En option, vous pouvez passer un "
"[Array] générique qui sera converti."
#: doc/classes/PoolRealArray.xml
@@ -51074,7 +53659,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -51086,6 +53671,28 @@ msgid ""
"print(array) # [[hello]] (PoolStringArray with 1 element inside an Array)\n"
"[/codeblock]"
msgstr ""
+"Un tableau spécialement prévu pour contenir des [String]. Optimisé pour la "
+"mémoire, il ne se fragmente pas.\n"
+"[b]Note :[/b] Ce type est passé par valeur et non par référence. Ça veut "
+"dire que lors des [i]modifications[/i] d'un [PoolRealArray] ou d'un "
+"[PoolRealArray] dans un [Array] ou [Dictionary], ces modifications seront "
+"perdues :\n"
+"[codeblock]\n"
+"var array = [PoolStringArray()]\n"
+"array[0].push_back(\"hello\") # Accède à une copie du PoolStringArray\n"
+"print(array) # [[]] (Un PoolStringArray vide dans un Array)\n"
+"[/codeblock]\n"
+"Au lieu de ça, le [PoolStringArray] en entier doit être [i]réassigné[/i] "
+"avec [code]=[/code] pour que sa modification soit prise en compte :\n"
+"[codeblock]\n"
+"var array = [PoolStringArray()]\n"
+"var pool_array = array[0] # Crée une copie du PoolStringArray, puis assigne "
+"cette copie\n"
+"pool_array.push_back(\"hello\")\n"
+"array[0] = pool_array\n"
+"print(array) # [[\"hello\"]] (Un PoolStringArray avec 1 élément dans un "
+"Array)\n"
+"[/codeblock]"
#: doc/classes/PoolStringArray.xml
msgid ""
@@ -51131,7 +53738,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -51144,6 +53751,29 @@ msgid ""
"Array)\n"
"[/codeblock]"
msgstr ""
+"Un tableau spécialement prévu pour contenir des [Vector2]. Optimisé pour la "
+"mémoire, il ne se fragmente pas.\n"
+"[b]Note :[/b] Ce type est passé par valeur et non par référence. Ça veut "
+"dire que lors des [i]modifications[/i] d'un [PoolVector2Array] ou d'un "
+"[PoolVector2Array] dans un [Array] ou [Dictionary], ces modifications seront "
+"perdues :\n"
+"[codeblock]\n"
+"var array = [PoolVector2Array()]\n"
+"array[0].push_back(Vector2(12, 34)) # Accède à une copie du "
+"PoolVector2Array\n"
+"print(array) # [[]] (Un PoolVector2Array vide dans un Array)\n"
+"[/codeblock]\n"
+"Au lieu de ça, le [PoolVector2Array] en entier doit être [i]réassigné[/i] "
+"avec [code]=[/code] pour que sa modification soit prise en compte :\n"
+"[codeblock]\n"
+"var array = [PoolVector2Array()]\n"
+"var pool_array = array[0] # Crée une copie du PoolVector2Array, puis assigne "
+"cette copie\n"
+"pool_array.push_back(Vector2(12, 34))\n"
+"array[0] = pool_array\n"
+"print(array) # [[(12, 34)]] (Un PoolVector2Array avec 1 élément dans un "
+"Array)\n"
+"[/codeblock]"
#: doc/classes/PoolVector2Array.xml doc/classes/TileMap.xml
#: doc/classes/TileSet.xml
@@ -51155,8 +53785,8 @@ msgid ""
"Constructs a new [PoolVector2Array]. Optionally, you can pass in a generic "
"[Array] that will be converted."
msgstr ""
-"Construit un nouvel [PoolVector2Array]. En option, il est possible de passer "
-"un [Array] générique qui sera converti."
+"Construit un nouvel [PoolVector2Array]. En option, vous pouvez passer un "
+"[Array] générique qui sera converti."
#: doc/classes/PoolVector2Array.xml
msgid "Appends a [PoolVector2Array] at the end of this array."
@@ -51175,6 +53805,7 @@ msgid "A pooled array of [Vector3]."
msgstr "Un tableau compacté de [Vector3]."
#: doc/classes/PoolVector3Array.xml
+#, fuzzy
msgid ""
"An array specifically designed to hold [Vector3]. Optimized for memory "
"usage, does not fragment the memory.\n"
@@ -51185,7 +53816,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -51198,14 +53829,37 @@ msgid ""
"Array)\n"
"[/codeblock]"
msgstr ""
+"Un tableau spécialement prévu pour contenir des [Vector3]. Optimisé pour la "
+"mémoire, il ne se fragmente pas.\n"
+"[b]Note :[/b] Ce type est passé par valeur et non par référence. Ça veut "
+"dire que lors des [i]modifications[/i] d'un [PoolVector3Array] ou d'un "
+"[PoolVector3Array] dans un [Array] ou [Dictionary], ces modifications seront "
+"perdues :\n"
+"[codeblock]\n"
+"var array = [PoolVector3Array()]\n"
+"array[0].push_back(Vector3(12, 34, 56)) # Accède à une copie du "
+"PoolColorArray\n"
+"print(array) # [[]] (Un PoolVector3Array vide dans un Array vide)\n"
+"[/codeblock]\n"
+"Au lieu de ça, le [PoolVector3Array] en entier doit être [i]réassigné[/i] "
+"avec [code]=[/code] pour que sa modification soit prise en compte :\n"
+"[codeblock]\n"
+"var array = [PoolVector3Array()]\n"
+"var pool_array = array[0] # Crée une copie du PoolVector3Array, puis assigne "
+"cette copie\n"
+"pool_array.push_back(Vector3(12, 34, 56))\n"
+"array[0] = pool_array\n"
+"print(array) # [[(12, 34, 56)]] (Un PoolVector3Array avec 1 élément dans un "
+"Array)\n"
+"[/codeblock]"
#: doc/classes/PoolVector3Array.xml
msgid ""
"Constructs a new [PoolVector3Array]. Optionally, you can pass in a generic "
"[Array] that will be converted."
msgstr ""
-"Construit un nouvel [PoolVector3Array]. En option, il est possible de passer "
-"un [Array] générique qui sera converti."
+"Construit un nouvel [PoolVector3Array]. En option, vous pouvez passer un "
+"[Array] générique qui sera converti."
#: doc/classes/PoolVector3Array.xml
msgid "Appends a [PoolVector3Array] at the end of this array."
@@ -52981,8 +55635,17 @@ msgstr ""
"résultat d'une fonction qui retourne [code]void[/code] à une variable."
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
-msgstr "Le message à afficher avant les détails de crash du moteur."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
+msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
@@ -53234,6 +55897,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -53510,6 +56185,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr "Le nom facultatif pour le claque 1 de physique 2D."
@@ -53718,6 +56585,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr "Le nom facultatif pour le claque 9 de rendu 2D."
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr "Le nom facultatif pour le claque 1 de physique 3D."
@@ -53992,6 +57051,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -55533,7 +58635,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -55693,15 +58794,14 @@ msgid "Returns the inverse of the quaternion."
msgstr "Retourne l'inverse du quaternion."
#: doc/classes/Quat.xml
-#, fuzzy
msgid ""
"Returns [code]true[/code] if this quaternion and [code]quat[/code] are "
"approximately equal, by running [method @GDScript.is_equal_approx] on each "
"component."
msgstr ""
-"Retourne [code]true[/code] si cette couleur et [code]color[/code] sont "
-"approximativement égales, en exécutant [method @GDScript.is_equal_approx] "
-"sur chaque composant."
+"Retourne [code]true[/code] si ce quaternion et [code]quat[/code] sont "
+"approximativement égaux, en exécutant [method @GDScript.is_equal_approx] sur "
+"chaque composant."
#: doc/classes/Quat.xml
msgid "Returns whether the quaternion is normalized or not."
@@ -55958,10 +59058,12 @@ msgid "Abstract base class for range-based controls."
msgstr "Classe de base abstraite pour les contrôles basés sur la portée."
#: doc/classes/Range.xml
+#, fuzzy
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
"Range est une classe de base des nœuds [Control] qui change une [code]value[/"
"code] flottante entre le [code]minimum[/code] et le [code]maximum[/code], "
@@ -57913,6 +61015,26 @@ msgid "Makes text fill width."
msgstr "Rempli le texte en largeur."
#: doc/classes/RichTextLabel.xml
+#, fuzzy
+msgid "Aligns top of the inline image to the top of the text."
+msgstr "La hauteur de la boite mesuré depuis son centre."
+
+#: doc/classes/RichTextLabel.xml
+#, fuzzy
+msgid "Aligns center of the inline image to the center of the text."
+msgstr "Aligne les enfants avec le centre du conteneur."
+
+#: doc/classes/RichTextLabel.xml
+#, fuzzy
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr "La hauteur de la boite mesuré depuis son centre."
+
+#: doc/classes/RichTextLabel.xml
+#, fuzzy
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr "Aligne les enfants avec le centre du conteneur."
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr "Chaque élément de la liste à un chiffre comme marqueur."
@@ -58133,12 +61255,17 @@ msgid "Locks the specified linear or rotational axis."
msgstr "Verrouille l'axe linéaire et de rotation spécifié."
#: doc/classes/RigidBody.xml
+#, fuzzy
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
+"La vitesse à laquelle les objets arrêtent de tourner dans cette zone. "
+"Représente la vitesse angulaire perdue par seconde.\n"
+"Voir [membre ProjectSettings.physics/2d/default_angular_damp] pour plus de "
+"détails sur l'amortissement."
#: doc/classes/RigidBody.xml
msgid "Lock the body's rotation in the X axis."
@@ -59722,6 +62849,7 @@ msgid "One-shot timer."
msgstr "Minuteur à un coup."
#: doc/classes/SceneTreeTimer.xml
+#, fuzzy
msgid ""
"A one-shot timer managed by the scene tree, which emits [signal timeout] on "
"completion. See also [method SceneTree.create_timer].\n"
@@ -59733,8 +62861,21 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
+"Un minuteur à un coup géré par l'arborescence, qui émet le signal [signal "
+"timeout] quand il se termine. Voir aussi [method SceneTree.create_timer].\n"
+"Contrairement aux [Timer], il ne nécessaire pas d'instancier un nœud. Il "
+"n'est souvent utilisé pour créer des minuteurs uniques comme dans l'exemple "
+"suivant :\n"
+"[codeblock]\n"
+"func some_function():\n"
+" print(\"Lancement du minuteur.\")\n"
+" yield(get_tree().create_timer(1.0), \"timeout\")\n"
+" print(\"Minuteur terminé.\")\n"
+"[/codeblock]\n"
+"Le minuteur sera automatiquement une fois terminé."
#: doc/classes/SceneTreeTimer.xml
msgid "The time remaining (in seconds)."
@@ -59824,6 +62965,82 @@ msgid ""
"prevent a [SceneTreeTween] from autostarting, you can call [method stop] "
"immediately after it was created."
msgstr ""
+"[SceneTreeTween] est un tween géré par l'arborescence. Contrairement à un "
+"[Tween], il ne nécessite pas la création d'un nœud.\n"
+"Les [SceneTreeTween] sont plus légers que les [AnimationPlayer], et sont "
+"donc plus adaptés pour les simples animations et les tâches générales qui ne "
+"nécessitent pas d'ajustements visuels depuis l'éditeur. Ils peuvent être "
+"utilisés de manière ponctuelles pour certaines logiques qui serait "
+"normalement faites par le code. Par exemple vous pouvez faire qu'un objet "
+"tire régulièrement avec une boucle qui crée un [CallbackTweener] avec le "
+"délai nécessaire.\n"
+"Un [SceneTreeTween] peut être créer soit avec [method SceneTree."
+"create_tween] ou [method Node.create_tween]. Les [SceneTreeTween] créés "
+"manuellement (avec [code]Tween.new()[/code]) sont invalides. Ils ne peuvent "
+"être utilisés pour interpoler les valeurs, sauf manuellement avec [method "
+"interpolate_value].\n"
+"Une animation de [SceneTreeTween] est composée d'une séquence de [Tweener], "
+"qui par défaut sont exécutés l'un après l'autre. Vous pouvez créer une "
+"séquence en ajoutant des [Tweener] au [SceneTreeTween]. Un exemple de "
+"séquence de [Tweener] peut être comme suit :\n"
+"[codeblock]\n"
+"var tween = get_tree().create_tween()\n"
+"tween.tween_property($Sprite, \"modulate\", Color.red, 1)\n"
+"tween.tween_property($Sprite, \"scale\", Vector2(), 1)\n"
+"tween.tween_callback($Sprite, \"queue_free\")\n"
+"[/codeblock]\n"
+"Cette séquence changera [code]$Sprite[/code] en rouge, puis le réduira "
+"jusqu'à le faire disparaitre et enfin [method Node.queue_free] sera appelée "
+"pour supprimer le nœud. Voir les méthodes [method tween_property], [method "
+"tween_interval], [method tween_callback] et [method tween_method] pour plus "
+"d'informations.\n"
+"Quand un [Tweener] est créé avec une des méthodes [code]tween_*[/code], une "
+"méthode peut être enchainée pour ajuster les propriétés de ce [Tweener]. Par "
+"exemple, si vous souhaitez définir un autre type de transition dans "
+"l'exemple précédent, vous pouvez faire :\n"
+"[codeblock]\n"
+"var tween = get_tree().create_tween()\n"
+"tween.tween_property($Sprite, \"modulate\", Color.red, 1).set_trans(Tween."
+"TRANS_SINE)\n"
+"tween.tween_property($Sprite, \"scale\", Vector2(), 1).set_trans(Tween."
+"TRANS_BOUNCE)\n"
+"tween.tween_callback($Sprite, \"queue_free\")\n"
+"[/codeblock]\n"
+"La plupart des méthodes [SceneTreeTween] peuvent être enchainées de cette "
+"façon. Dans cet exemple, le [SceneTreeTween] est lié et aura donc une "
+"transition par défaut :\n"
+"[codeblock]\n"
+"var tween = get_tree().create_tween().bind_node(self).set_trans(Tween."
+"TRANS_ELASTIC)\n"
+"tween.tween_property($Sprite, \"modulate\", Color.red, 1)\n"
+"tween.tween_property($Sprite, \"scale\", Vector2(), 1)\n"
+"tween.tween_callback($Sprite, \"queue_free\")\n"
+"[/codeblock]\n"
+"Un autre usage intéressant des [SceneTreeTween] est l'animation d'un "
+"ensemble arbitraire d'objets :\n"
+"[codeblock]\n"
+"var tween = create_tween()\n"
+"for sprite in get_children():\n"
+" tween.tween_property(sprite, \"position\", Vector2(), 1)\n"
+"[/codeblock]\n"
+"Dans l'exemple au-dessus, tous les enfants d'un nœud sont déplacés à leur "
+"tour à la position (0, 0).\n"
+"Certains [Tweener] utilisent des transitions et ralentissements. Les "
+"transitions fonctionnent avec les constantes de [enum Tween.TransitionType], "
+"et définissent la courbe de temps de l'animation (voir [url=https://easings."
+"net/]easings.net[/url] pour quelques exemples). Les ralentissements "
+"fonctionnent avec les constantes de [enum Tween.EaseType], et contrôle comme "
+"la transition [code]trans_type[/code] varie durant le temps écoulé de "
+"l'animation (au début, à la fin, ou les deux). Si vous ne savez pas quel "
+"comportement choisir, vous pouvez essayer différentes valeurs de [enum Tween."
+"TransitionType] avec [constant Tween.EASE_IN_OUT], et utilisez celle qui "
+"vous semble la meilleure.\n"
+"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/"
+"tween_cheatsheet.png]Antisèche des types de transitions et de ralentissement "
+"des Tween[/url]\n"
+"[b]Note :[/b] Tous les [SceneTreeTween] seront automatiquement démarrés par "
+"défaut. Pour éviter qu'un [SceneTreeTween] démarre automatiquement, vous "
+"pouvez appeler [method stop] immédiatement après sa création."
#: doc/classes/SceneTreeTween.xml
msgid ""
@@ -59849,6 +63066,15 @@ msgid ""
"tween.chain().tween_property(...) # Will run after two above are finished.\n"
"[/codeblock]"
msgstr ""
+"Utiliser pour ajouter deux [Tweener] après que [method set_parallel] est "
+"appelé avec [code]true[/code].\n"
+"[codeblock]\n"
+"var tween = create_tween().set_parallel(true)\n"
+"tween.tween_property(...)\n"
+"tween.tween_property(...) # Sera lancé en parallèle avec l'appel au-dessus.\n"
+"tween.chain().tween_property(...) # Sera lancé que quand les deux appels au-"
+"dessus seront terminés.\n"
+"[/codeblock]"
#: doc/classes/SceneTreeTween.xml
msgid ""
@@ -61606,7 +64832,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -62938,6 +66169,25 @@ msgid ""
"[LineEdit], you can use [method Control.set_drag_forwarding] on the node "
"returned by [method get_line_edit]."
msgstr ""
+"SpinBox est un champs de texte pour les valeurs numériques. Il permet "
+"d'entrer des valeurs entières ou à virgule.\n"
+"[b]Exemple :[/b]\n"
+"[codeblock]\n"
+"var spin_box = SpinBox.new()\n"
+"add_child(spin_box)\n"
+"var line_edit = spin_box.get_line_edit()\n"
+"line_edit.context_menu_enabled = false\n"
+"spin_box.align = LineEdit.ALIGN_RIGHT\n"
+"[/codeblock]\n"
+"Le code ci-dessus créera un [SpinBox], désactivant son menu contextuel "
+"désactivé et alignant le text sur la droite.\n"
+"Voir la classe [Range] pour plus d'options pour les [SpinBox].\n"
+"[b]Note :[/b] [SpinBox] utilise en interne un nœud [LineEdit]. Pour changer "
+"le thème de l'arrière-plan d'un [SpinBox], ajoutez un élément de thème à "
+"personnaliser pour les [LineEdit].\n"
+"[b]Note :[/b] Si vous souhaitez implémenter le déposé-glissé sur le "
+"[LineEdit] utilisé, vous pouvez utiliser [method Control."
+"set_drag_forwarding] sur le nœud retourné par [method get_line_edit]."
#: doc/classes/SpinBox.xml
msgid "Applies the current value of this [SpinBox]."
@@ -62951,6 +66201,11 @@ msgid ""
"may cause a crash. If you wish to hide it or any of its children, use their "
"[member CanvasItem.visible] property."
msgstr ""
+"Retourne l'instance [LineEdit] utilisé pour ce [SpinBox]. Vous pouvez "
+"l'utiliser pour accéder au propriétés et méthodes de ce [LineEdit].\n"
+"[b]Avertissement :[/b] Cette instance est nécessaire en interne, la retirer "
+"ou la libérer peut provoquer un crash. Si vous voulez la masquer elle ou ses "
+"enfants, préférez leur propriété [member CanvasItem.visible]."
#: doc/classes/SpinBox.xml
msgid "Sets the text alignment of the [SpinBox]."
@@ -62983,6 +66238,8 @@ msgstr ""
#: doc/classes/SpinBox.xml
msgid "Sets a custom [Texture] for up and down arrows of the [SpinBox]."
msgstr ""
+"Définir une [Texture] personnalisée pour les flèches haut et bas de ce "
+"[SpinBox]."
#: doc/classes/SplitContainer.xml
msgid "Container for splitting and adjusting."
@@ -63482,6 +66739,13 @@ msgid ""
"static body, so even if it doesn't move, it affects other bodies as if it "
"was moving (this is useful for simulating conveyor belts or conveyor wheels)."
msgstr ""
+"Un corps statique pour la physique 3D. Un corps statique est un simple corps "
+"qui n'est pas prévu pour être déplacé. Contrairement au [RigidBody], ils ne "
+"consomment aucune ressource du CPU tant qu'ils ne sont pas déplacés.\n"
+"De plus, une vitesse linéaire ou angulaire constante peut être définie pour "
+"ce corps statique, de sorte que même s'il ne bouge pas, il affecte d'autres "
+"corps comme s'il se déplaçait (c'est utile pour simuler les tapis ou des "
+"roues roulants)."
#: doc/classes/StaticBody.xml
msgid ""
@@ -63501,6 +66765,9 @@ msgid ""
"Deprecated, use [member PhysicsMaterial.friction] instead via [member "
"physics_material_override]."
msgstr ""
+"Le frottement du corps, de 0 (sans frottement) à 1 (frottement complet).\n"
+"Obsolète, utilisez plutôt [membre PhysicsMaterial.friction] via [membre "
+"physique_material_override]."
#: doc/classes/StaticBody2D.xml
msgid "Static body for 2D physics."
@@ -63515,6 +66782,12 @@ msgid ""
"static body, which will affect colliding bodies as if it were moving (for "
"example, a conveyor belt)."
msgstr ""
+"Un corps statique pour la physique 2D. Un StaticBody2D est un corps qui "
+"n'est pas prévu pour être déplacé. C'est idéal pour implémenter des objets "
+"dans un environnement, quand des murs ou des plateformes.\n"
+"De plus, une vitesse linéaire ou angulaire constante peut être définie pour "
+"ce corps statique, de sorte que même s'il ne bouge pas, il affecte d'autres "
+"corps comme s'il se déplaçait (par exemple pour simuler des tapis roulants)."
#: doc/classes/StaticBody2D.xml
msgid ""
@@ -63927,20 +67200,15 @@ msgstr ""
#: doc/classes/String.xml
msgid "Constructs a new String from the given [bool]."
-msgstr ""
-"Construit une nouvelle chaîne de caractères à partir du [bool] (booléen) "
-"donné."
+msgstr "Construit une nouvelle chaîne de caractères à partir du [bool] donné."
#: doc/classes/String.xml
msgid "Constructs a new String from the given [int]."
-msgstr ""
-"Construit une nouvelle chaîne de caractères à partir du [int] (entier) donné."
+msgstr "Construit une nouvelle chaîne de caractères à partir du [int] donné."
#: doc/classes/String.xml
msgid "Constructs a new String from the given [float]."
-msgstr ""
-"Construit une nouvelle chaîne de caractères à partir du [float] (flottant) "
-"donné."
+msgstr "Construit une nouvelle chaîne de caractères à partir du [float] donné."
#: doc/classes/String.xml
msgid "Constructs a new String from the given [Vector2]."
@@ -63959,7 +67227,8 @@ msgstr ""
#: doc/classes/String.xml
msgid "Constructs a new String from the given [Transform2D]."
msgstr ""
-"Construit une nouvelle chaîne de caractères à partir du [Transform2D] donné."
+"Construit une nouvelle chaîne de caractères à partir de la [Transform2D] "
+"donnée."
#: doc/classes/String.xml
msgid "Constructs a new String from the given [Plane]."
@@ -63975,7 +67244,8 @@ msgstr "Construit une nouvelle chaîne de caractères à partir du [AABB] donné
#: doc/classes/String.xml
msgid "Constructs a new String from the given [Basis]."
-msgstr "Construit une nouvelle chaîne de caractères à partir du [Basis] donné."
+msgstr ""
+"Construit une nouvelle chaîne de caractères à partir de la [Basis] donnée."
#: doc/classes/String.xml
msgid "Constructs a new String from the given [Transform]."
@@ -63986,14 +67256,12 @@ msgstr ""
#: doc/classes/String.xml
msgid "Constructs a new String from the given [Color]."
msgstr ""
-"Construit une nouvelle chaîne de caractères à partir de la [Color] (couleur) "
-"donnée."
+"Construit une nouvelle chaîne de caractères à partir de la [Color] donnée."
#: doc/classes/String.xml
msgid "Constructs a new String from the given [NodePath]."
msgstr ""
-"Construit une nouvelle chaîne de caractères à partir du [NodePath] (chemin "
-"du nœud) donné."
+"Construit une nouvelle chaîne de caractères à partir du [NodePath] donné."
#: doc/classes/String.xml
msgid "Constructs a new String from the given [RID]."
@@ -64002,8 +67270,7 @@ msgstr "Construit une nouvelle chaîne de caractères à partir du [RID] donné.
#: doc/classes/String.xml
msgid "Constructs a new String from the given [Dictionary]."
msgstr ""
-"Construit une nouvelle chaîne de caractères à partir du [Dictionary]"
-"(dictionaire) donné."
+"Construit une nouvelle chaîne de caractères à partir du [Dictionary] donné."
#: doc/classes/String.xml
msgid "Constructs a new String from the given [Array]."
@@ -64135,13 +67402,13 @@ msgid ""
msgstr ""
#: doc/classes/String.xml
-#, fuzzy
msgid ""
"Returns a copy of the string with indentation (leading tabs and spaces) "
"removed. See also [method indent] to add indentation."
msgstr ""
-"Retourne une copie de la chaîne de caractères avec indentation (tabulations "
-"et espaces antéposés)."
+"Retourne une copie de la chaîne de caractères avec l'indentation (les "
+"tabulations et les espaces) retirée. Voir aussi [method indent] pour ajouter "
+"une indentation."
#: doc/classes/String.xml
msgid ""
@@ -65065,12 +68332,35 @@ msgid ""
"corner_radius_bottom_left: 20\n"
"[/codeblock]"
msgstr ""
+"Cette [StyleBox] peut être utilisée pour afficher différents rendus sans "
+"avoir besoin d'une texture. Les propriétés suivantes peuvent être "
+"personnalisées :\n"
+"- La couleur\n"
+"- La largueur de la bordure (pour chaque bordure séparément)\n"
+"- L'arrondi des coins (un rayon différent pour chaque coin)\n"
+"- L'ombre (la rayon et le décalage)\n"
+"Utiliser un grand rayon pour les coins est permis. Dès que les coins "
+"enchevêtrerons, la stylebox passera à une mesure relative. Par exemple :\n"
+"[codeblock]\n"
+"height = 30\n"
+"corner_radius_top_left = 50\n"
+"corner_radius_bottom_left = 100\n"
+"[/codeblock]\n"
+"La mesure relative donnera un ratio de 1:2 pour les deux coins gauches pour "
+"calculer l'actuelle largeur des coins. Ces deux coins ajoutés ne seront "
+"[b]jamais[/b] plus grands que la hauteur. Voici le résultat :\n"
+"[codeblock]\n"
+"corner_radius_top_left: 10\n"
+"corner_radius_bottom_left: 20\n"
+"[/codeblock]"
#: doc/classes/StyleBoxFlat.xml
msgid ""
"Returns the given [code]margin[/code]'s border width. See [enum Margin] for "
"possible values."
msgstr ""
+"Retourne la taille de la largueur de la bordure de la marge [code]margin[/"
+"code]. Voir [enum Margin] pour les valeurs possibles."
#: doc/classes/StyleBoxFlat.xml
msgid "Returns the smallest border width out of all four borders."
@@ -65089,6 +68379,8 @@ msgid ""
"Returns the size of the given [code]margin[/code]'s expand margin. See [enum "
"Margin] for possible values."
msgstr ""
+"Retourne la taille de la marge d'expansion de la marge [code]margin[/code]. "
+"Voir [enum Margin] pour les valeurs possibles."
#: doc/classes/StyleBoxFlat.xml
msgid ""
@@ -65254,6 +68546,14 @@ msgid ""
"user may try to click an area of the StyleBox that cannot actually receive "
"clicks."
msgstr ""
+"Étend la boite en dehors du rectangle du contrôle pour la bordure du bas. "
+"Utile avec [member border_width_bottom] pour afficher une bordure en dehors "
+"du rectangle du contrôle.\n"
+"[b]Note :[/b] Contrairement à [member StyleBox.content_margin_bottom], "
+"[member expand_margin_bottom] n'étend [i]pas[/i] la taille de la zone qui "
+"peut être cliquée du [Control]. Ça peut avoir un impact négatif sur "
+"l’accessibilité si c'est mal réglé, puisque l'utilisateur peut vouloir "
+"cliquer sur cette zone de la boite qui ne reçoit pas les clics."
#: doc/classes/StyleBoxFlat.xml
msgid ""
@@ -65266,6 +68566,14 @@ msgid ""
"user may try to click an area of the StyleBox that cannot actually receive "
"clicks."
msgstr ""
+"Étend la boite en dehors du rectangle du contrôle pour la bordure de gauche. "
+"Utile avec [member border_width_left] pour afficher une bordure en dehors du "
+"rectangle du contrôle.\n"
+"[b]Note :[/b] Contrairement à [member StyleBox.content_margin_left], [member "
+"expand_margin_left] n'étend [i]pas[/i] la taille de la zone qui peut être "
+"cliquée du [Control]. Ça peut avoir un impact négatif sur l’accessibilité si "
+"c'est mal réglé, puisque l'utilisateur peut vouloir cliquer sur cette zone "
+"de la boite qui ne reçoit pas les clics."
#: doc/classes/StyleBoxFlat.xml
msgid ""
@@ -65278,6 +68586,14 @@ msgid ""
"user may try to click an area of the StyleBox that cannot actually receive "
"clicks."
msgstr ""
+"Étend la boite en dehors du rectangle du contrôle pour la bordure de droite. "
+"Utile avec [member border_width_right] pour afficher une bordure en dehors "
+"du rectangle du contrôle.\n"
+"[b]Note :[/b] Contrairement à [member StyleBox.content_margin_right], "
+"[member expand_margin_right] n'étend [i]pas[/i] la taille de la zone qui "
+"peut être cliquée du [Control]. Ça peut avoir un impact négatif sur "
+"l’accessibilité si c'est mal réglé, puisque l'utilisateur peut vouloir "
+"cliquer sur cette zone de la boite qui ne reçoit pas les clics."
#: doc/classes/StyleBoxFlat.xml
msgid ""
@@ -65289,6 +68605,14 @@ msgid ""
"[Control]s. This can negatively impact usability if used wrong, as the user "
"may try to click an area of the StyleBox that cannot actually receive clicks."
msgstr ""
+"Étend la boite en dehors du rectangle du contrôle pour la bordure du haut. "
+"Utile avec [member border_width_top] pour afficher une bordure en dehors du "
+"rectangle du contrôle.\n"
+"[b]Note :[/b] Contrairement à [member StyleBox.content_margin_top], [member "
+"expand_margin_top] n'étend [i]pas[/i] la taille de la zone qui peut être "
+"cliquée du [Control]. Ça peut avoir un impact négatif sur l’accessibilité si "
+"c'est mal réglé, puisque l'utilisateur peut vouloir cliquer sur cette zone "
+"de la boite qui ne reçoit pas les clics."
#: doc/classes/StyleBoxFlat.xml
msgid ""
@@ -65824,12 +69148,12 @@ msgstr ""
"Retourne [code]true[/code] si la piste à l'index [code]idx[/code] est active."
#: doc/classes/TabContainer.xml doc/classes/Tabs.xml
-#, fuzzy
msgid ""
"Returns the [Texture] for the tab at index [code]tab_idx[/code] or "
"[code]null[/code] if the tab has no [Texture]."
msgstr ""
-"Retourne [code]true[/code] si la piste à l'index [code]idx[/code] est active."
+"Retourne la [Texture] pour l'onglet à l'index [code]tab_idx[/code] ou "
+"[code]null[/code] si l'onglet n'a pas de [Texture]."
#: doc/classes/TabContainer.xml
msgid ""
@@ -67895,14 +71219,14 @@ msgstr ""
"Retourne l'index de l'élément avec l'identifiant [code]id[/code] spécifié."
#: doc/classes/Theme.xml
-#, fuzzy
msgid ""
"Returns [code]true[/code] if [Color] with [code]name[/code] is in "
"[code]node_type[/code].\n"
"Returns [code]false[/code] if the theme does not have [code]node_type[/code]."
msgstr ""
-"Retourne [code]true[/code] si le paramètre spécifié par [code]name[/code] "
-"existe, [code]false[/code] autrement."
+"Retourne [code]true[/code] si la [Color] nommée [code]name[/code] est dans "
+"[code]node_type[/code].\n"
+"Retourne [code]false[/code] si le thème n'a pas de [code]node_type[/code]."
#: doc/classes/Theme.xml
msgid ""
@@ -67921,14 +71245,14 @@ msgstr ""
"la chaîne égale à [code]0[/code])."
#: doc/classes/Theme.xml
-#, fuzzy
msgid ""
"Returns [code]true[/code] if [Font] with [code]name[/code] is in "
"[code]node_type[/code].\n"
"Returns [code]false[/code] if the theme does not have [code]node_type[/code]."
msgstr ""
-"Retourne [code]true[/code] si le paramètre spécifié par [code]name[/code] "
-"existe, [code]false[/code] autrement."
+"Retourne [code]true[/code] si la [Font] nommée [code]name[/code] est dans "
+"[code]node_type[/code].\n"
+"Retourne [code]false[/code] si le thème n'a pas de [code]node_type[/code]."
#: doc/classes/Theme.xml
msgid ""
@@ -68378,6 +71702,11 @@ msgstr ""
#: doc/classes/TileMap.xml
#, fuzzy
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr "Si [code]true[/code], l'animation nommée existe."
+
+#: doc/classes/TileMap.xml
+#, fuzzy
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr "Si [code]true[/code], les UV de la cellule seront limités."
@@ -68493,6 +71822,10 @@ msgstr ""
"possibles."
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -69710,10 +73043,13 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
-"Retourne une copie de la transformation mise à jour l'échelle par le facteur "
-"[code]scale[/code] spécifié, en utilisant la multiplication matricielle."
#: doc/classes/Transform2D.xml
msgid ""
@@ -72136,10 +75472,11 @@ msgid "3Blue1Brown Essence of Linear Algebra"
msgstr "3Blue1Brown Essence of Linear Algebra"
#: doc/classes/Vector2.xml
-#, fuzzy
msgid ""
"Constructs a new Vector2 from the given [code]x[/code] and [code]y[/code]."
-msgstr "Construit une nouvelle chaîne de caractères à partir du [Plane] donné."
+msgstr ""
+"Construit un nouvel Vector2 à partir des [code]x[/code] et [code]y[/code] "
+"donnés."
#: doc/classes/Vector2.xml doc/classes/Vector3.xml
msgid ""
@@ -73325,9 +76662,10 @@ msgid ""
msgstr ""
#: doc/classes/Viewport.xml
+#, fuzzy
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
"Si [code]true[/code], la fenêtre d'affichage utilisera le [World] défini par "
"la propriété [code]world[/code]."
@@ -73796,11 +77134,14 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr "Cet activateur arrêtera les nœuds [Particles2D]."
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+#, fuzzy
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr "Cet activateur arrêtera la fonction _process du parent."
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+#, fuzzy
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr "Cet activateur arrêtera la fonction _physics_process du parent."
#: doc/classes/VisibilityEnabler2D.xml
@@ -73845,6 +77186,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr "Le rectangle du VisibilityNotifier."
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
#, fuzzy
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -77559,6 +80910,9 @@ msgid ""
"Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles."
"draw_pass_3], and [member Particles.draw_pass_4]."
msgstr ""
+"Définit le maillage à utiliser pour les passes d'affichages spécifiées. "
+"Équivalent à [member Particles.draw_pass_1], [member Particles.draw_pass_2], "
+"[member Particles.draw_pass_3], et [member Particles.draw_pass_4]."
#: doc/classes/VisualServer.xml
msgid ""
@@ -78144,6 +81498,7 @@ msgid "Sets a viewport's canvas."
msgstr "Définit le canevas de la fenêtre d'affichage."
#: doc/classes/VisualServer.xml
+#, fuzzy
msgid ""
"Copies viewport to a region of the screen specified by [code]rect[/code]. If "
"[member Viewport.render_direct_to_screen] is [code]true[/code], then "
@@ -78161,7 +81516,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
"Copie la fenêtre d'affichage dans une région de l'écran spécifiée par "
@@ -79103,6 +82458,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr "Le nombre de shaders reconnectés dans cette trame."
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr "Le nombre de changements de surface dans la trame."
@@ -82650,8 +86015,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -82666,11 +86031,17 @@ msgstr "L'[Environment] du World."
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
+msgstr "Retourne le [RID] de la énième forme d'une zone."
+
+#: doc/classes/World.xml
msgid "The World's visual scenario."
msgstr "Le scénario visuel du World."
@@ -82685,8 +86056,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -82703,6 +86074,12 @@ msgid ""
msgstr ""
#: doc/classes/World2D.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr "Retourne le [RID] de la énième forme d'une zone."
+
+#: doc/classes/World2D.xml
msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
diff --git a/doc/translations/gl.po b/doc/translations/gl.po
index 03df6b11aa..92ad8f3f22 100644
--- a/doc/translations/gl.po
+++ b/doc/translations/gl.po
@@ -348,7 +348,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3380,6 +3380,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -3392,6 +3398,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -8367,7 +8379,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -8566,7 +8578,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -8583,10 +8598,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -8771,7 +8782,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -12357,7 +12370,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -13614,7 +13627,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -14082,7 +14095,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -14120,9 +14133,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -14141,8 +14154,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -14158,8 +14171,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -14250,9 +14263,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -19089,11 +19102,14 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
+msgid "The [Curve] that is rendered onto the texture."
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -19379,6 +19395,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
msgid "Returns the number of keys in the dictionary."
msgstr ""
@@ -21309,7 +21332,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -21317,9 +21340,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21330,9 +21367,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21445,11 +21491,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -23618,11 +23683,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -26084,7 +26149,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -26106,7 +26172,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -26912,6 +26979,12 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -26962,6 +27035,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -29352,7 +29429,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -29501,10 +29578,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -29698,24 +29771,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -29751,6 +29806,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -30058,8 +30131,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -30322,9 +30395,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -34630,9 +34703,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -35430,6 +35504,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr ""
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -35452,10 +35530,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -35490,6 +35580,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -35499,11 +35595,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -35531,7 +35635,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35595,6 +35709,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Returns the map cell size."
msgstr ""
@@ -35618,7 +35736,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35635,6 +35756,12 @@ msgstr ""
msgid "Sets the map active."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -35650,14 +35777,56 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the region's navigation layers."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the map for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the navigation mesh for the region."
msgstr ""
@@ -35666,6 +35835,10 @@ msgstr ""
msgid "Sets the global transformation for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -35675,9 +35848,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -35695,7 +35875,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35710,11 +35898,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35755,6 +35956,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -35767,7 +35974,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35794,6 +36007,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -35856,9 +36076,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -35874,13 +36101,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr ""
@@ -35900,6 +36120,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -35930,8 +36157,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -35953,9 +36180,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -35969,14 +36196,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -35988,7 +36215,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36016,29 +36243,29 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
+msgid ""
+"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
+"is within [member agent_max_climb] of a walkable neighbor."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -36057,7 +36284,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -36120,7 +36347,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36141,13 +36368,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36197,8 +36424,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -36215,8 +36442,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -36245,10 +36485,34 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "The [NavigationMesh] resource to use."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -36265,7 +36529,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -36305,7 +36571,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -36385,6 +36653,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -36421,6 +36697,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -36428,6 +36728,22 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "The [NavigationPolygon] resource to use."
+msgstr ""
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -36437,11 +36753,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36499,6 +36819,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -38262,7 +38588,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -38386,7 +38718,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -40355,8 +40687,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -40539,9 +40878,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -44651,7 +44990,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44805,7 +45144,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44860,7 +45199,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44913,7 +45252,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44962,7 +45301,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45014,7 +45353,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45066,7 +45405,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -46702,7 +47041,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -46947,6 +47295,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -47172,6 +47532,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -47380,6 +47932,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -47647,6 +48391,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -49149,7 +49936,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -49501,8 +50287,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -51295,6 +52082,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -51504,8 +52307,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -53032,7 +53835,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -54753,7 +55557,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -60854,6 +61663,10 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -60960,6 +61773,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -62091,7 +62908,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -65324,8 +66146,8 @@ msgstr ""
#: doc/classes/Viewport.xml
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
#: doc/classes/Viewport.xml
@@ -65762,11 +66584,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -65806,6 +66629,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -69683,7 +70516,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -70551,6 +71384,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -73747,8 +74590,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -73763,8 +74606,13 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
+msgstr ""
+
+#: doc/classes/World.xml
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
msgstr ""
#: doc/classes/World.xml
@@ -73782,8 +74630,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -73801,6 +74649,11 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr ""
+
+#: doc/classes/World2D.xml
+msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
msgstr ""
diff --git a/doc/translations/hi.po b/doc/translations/hi.po
index edf5814da1..147b3b4099 100644
--- a/doc/translations/hi.po
+++ b/doc/translations/hi.po
@@ -347,7 +347,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3379,6 +3379,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -3391,6 +3397,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -8366,7 +8378,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -8565,7 +8577,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -8582,10 +8597,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -8770,7 +8781,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -12356,7 +12369,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -13613,7 +13626,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -14081,7 +14094,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -14119,9 +14132,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -14140,8 +14153,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -14157,8 +14170,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -14249,9 +14262,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -19088,11 +19101,14 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
+msgid "The [Curve] that is rendered onto the texture."
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -19378,6 +19394,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
msgid "Returns the number of keys in the dictionary."
msgstr ""
@@ -21308,7 +21331,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -21316,9 +21339,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21329,9 +21366,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21444,11 +21490,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -23617,11 +23682,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -26083,7 +26148,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -26105,7 +26171,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -26911,6 +26978,12 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -26961,6 +27034,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -29351,7 +29428,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -29500,10 +29577,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -29697,24 +29770,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -29750,6 +29805,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -30057,8 +30130,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -30321,9 +30394,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -34629,9 +34702,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -35429,6 +35503,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr ""
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -35451,10 +35529,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -35489,6 +35579,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -35498,11 +35594,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -35530,7 +35634,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35594,6 +35708,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Returns the map cell size."
msgstr ""
@@ -35617,7 +35735,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35634,6 +35755,12 @@ msgstr ""
msgid "Sets the map active."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -35649,14 +35776,56 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the region's navigation layers."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the map for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the navigation mesh for the region."
msgstr ""
@@ -35665,6 +35834,10 @@ msgstr ""
msgid "Sets the global transformation for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -35674,9 +35847,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -35694,7 +35874,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35709,11 +35897,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35754,6 +35955,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -35766,7 +35973,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35793,6 +36006,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -35855,9 +36075,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -35873,13 +36100,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr ""
@@ -35899,6 +36119,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -35929,8 +36156,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -35952,9 +36179,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -35968,14 +36195,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -35987,7 +36214,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36015,29 +36242,29 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
+msgid ""
+"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
+"is within [member agent_max_climb] of a walkable neighbor."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -36056,7 +36283,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -36119,7 +36346,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36140,13 +36367,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36196,8 +36423,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -36214,8 +36441,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -36244,10 +36484,34 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "The [NavigationMesh] resource to use."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -36264,7 +36528,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -36304,7 +36570,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -36384,6 +36652,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -36420,6 +36696,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -36427,6 +36727,22 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "The [NavigationPolygon] resource to use."
+msgstr ""
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -36436,11 +36752,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36498,6 +36818,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -38261,7 +38587,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -38385,7 +38717,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -40354,8 +40686,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -40538,9 +40877,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -44650,7 +44989,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44804,7 +45143,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44859,7 +45198,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44912,7 +45251,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44961,7 +45300,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45013,7 +45352,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45065,7 +45404,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -46701,7 +47040,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -46946,6 +47294,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -47171,6 +47531,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -47379,6 +47931,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -47646,6 +48390,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -49148,7 +49935,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -49500,8 +50286,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -51294,6 +52081,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -51503,8 +52306,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -53031,7 +53834,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -54752,7 +55556,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -60853,6 +61662,10 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -60959,6 +61772,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -62090,7 +62907,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -65323,8 +66145,8 @@ msgstr ""
#: doc/classes/Viewport.xml
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
#: doc/classes/Viewport.xml
@@ -65761,11 +66583,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -65805,6 +66628,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -69682,7 +70515,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -70550,6 +71383,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -73746,8 +74589,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -73762,8 +74605,13 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
+msgstr ""
+
+#: doc/classes/World.xml
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
msgstr ""
#: doc/classes/World.xml
@@ -73781,8 +74629,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -73800,6 +74648,11 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr ""
+
+#: doc/classes/World2D.xml
+msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
msgstr ""
diff --git a/doc/translations/hu.po b/doc/translations/hu.po
index 6e6aea6e84..cda670b22d 100644
--- a/doc/translations/hu.po
+++ b/doc/translations/hu.po
@@ -10,12 +10,13 @@
# balintmaci <balintmaci@gmail.com>, 2021.
# Balázs Püspök-Kiss <pkblazsak@gmail.com>, 2021.
# Szevin <kevingeiger25@gmail.com>, 2022.
+# 6Leoo6 <leo.takacs@yahoo.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine class reference\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2022-01-26 23:53+0000\n"
-"Last-Translator: Szevin <kevingeiger25@gmail.com>\n"
+"PO-Revision-Date: 2022-06-19 11:54+0000\n"
+"Last-Translator: 6Leoo6 <leo.takacs@yahoo.com>\n"
"Language-Team: Hungarian <https://hosted.weblate.org/projects/godot-engine/"
"godot-class-reference/hu/>\n"
"Language: hu\n"
@@ -23,7 +24,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.11-dev\n"
+"X-Generator: Weblate 4.13.1-dev\n"
#: doc/tools/make_rst.py
msgid "Description"
@@ -47,7 +48,7 @@ msgstr "Téma Tulajdonságai"
#: doc/tools/make_rst.py
msgid "Signals"
-msgstr "Jelzések"
+msgstr "jelek"
#: doc/tools/make_rst.py
msgid "Enumerations"
@@ -365,7 +366,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3397,6 +3398,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -3409,6 +3416,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -8384,7 +8397,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -8583,7 +8596,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -8600,10 +8616,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -8788,7 +8800,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -12374,7 +12388,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -13631,7 +13645,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -14099,7 +14113,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -14137,9 +14151,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -14158,8 +14172,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -14175,8 +14189,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -14267,9 +14281,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -19106,11 +19120,14 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
+msgid "The [Curve] that is rendered onto the texture."
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -19396,6 +19413,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
msgid "Returns the number of keys in the dictionary."
msgstr ""
@@ -21326,7 +21350,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -21334,9 +21358,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21347,9 +21385,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21462,11 +21509,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -23635,11 +23701,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -26101,7 +26167,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -26123,7 +26190,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -26929,6 +26997,12 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -26979,6 +27053,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -29369,7 +29447,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -29518,10 +29596,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -29715,24 +29789,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -29768,6 +29824,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -30075,8 +30149,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -30339,9 +30413,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -34647,9 +34721,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -35447,6 +35522,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr ""
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -35469,10 +35548,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -35507,6 +35598,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -35516,11 +35613,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -35548,7 +35653,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35612,6 +35727,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Returns the map cell size."
msgstr ""
@@ -35635,7 +35754,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35652,6 +35774,12 @@ msgstr ""
msgid "Sets the map active."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -35667,14 +35795,56 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the region's navigation layers."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the map for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the navigation mesh for the region."
msgstr ""
@@ -35683,6 +35853,10 @@ msgstr ""
msgid "Sets the global transformation for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -35692,9 +35866,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -35712,7 +35893,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35727,11 +35916,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35772,6 +35974,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -35784,7 +35992,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35811,6 +36025,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -35873,9 +36094,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -35891,13 +36119,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr ""
@@ -35917,6 +36138,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -35947,8 +36175,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -35970,9 +36198,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -35986,14 +36214,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36005,7 +36233,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36033,29 +36261,29 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
+msgid ""
+"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
+"is within [member agent_max_climb] of a walkable neighbor."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -36074,7 +36302,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -36137,7 +36365,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36158,13 +36386,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36214,8 +36442,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -36232,8 +36460,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -36262,10 +36503,34 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "The [NavigationMesh] resource to use."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -36282,7 +36547,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -36322,7 +36589,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -36402,6 +36671,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -36438,6 +36715,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -36445,6 +36746,22 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "The [NavigationPolygon] resource to use."
+msgstr ""
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -36454,11 +36771,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36516,6 +36837,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -38279,7 +38606,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -38403,7 +38736,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -40372,8 +40705,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -40556,9 +40896,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -44668,7 +45008,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44822,7 +45162,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44877,7 +45217,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44930,7 +45270,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44979,7 +45319,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45031,7 +45371,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45083,7 +45423,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -46719,7 +47059,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -46964,6 +47313,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -47189,6 +47550,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -47397,6 +47950,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -47664,6 +48409,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -49166,7 +49954,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -49518,8 +50305,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -51312,6 +52100,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -51521,8 +52325,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -53049,7 +53853,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -54770,7 +55575,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -60871,6 +61681,10 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -60977,6 +61791,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -62108,7 +62926,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -65341,8 +66164,8 @@ msgstr ""
#: doc/classes/Viewport.xml
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
#: doc/classes/Viewport.xml
@@ -65779,11 +66602,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -65823,6 +66647,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -69700,7 +70534,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -70568,6 +71402,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -73764,8 +74608,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -73780,8 +74624,13 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
+msgstr ""
+
+#: doc/classes/World.xml
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
msgstr ""
#: doc/classes/World.xml
@@ -73799,8 +74648,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -73818,6 +74667,11 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr ""
+
+#: doc/classes/World2D.xml
+msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
msgstr ""
diff --git a/doc/translations/id.po b/doc/translations/id.po
index 73baa1212c..da727b40e7 100644
--- a/doc/translations/id.po
+++ b/doc/translations/id.po
@@ -502,7 +502,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3790,6 +3790,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -3802,6 +3808,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -8778,7 +8790,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -8977,7 +8989,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -8994,10 +9009,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -9182,7 +9193,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -12769,7 +12782,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -14026,7 +14039,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -14494,7 +14507,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -14532,9 +14545,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -14553,8 +14566,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -14570,8 +14583,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -14662,9 +14675,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -19501,11 +19514,15 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
-msgstr ""
+#, fuzzy
+msgid "The [Curve] that is rendered onto the texture."
+msgstr "Mengembalikan nilai hiperbolik tangen dari parameter."
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -19791,6 +19808,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
msgid "Returns the number of keys in the dictionary."
msgstr ""
@@ -21721,7 +21745,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -21729,9 +21753,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21742,9 +21780,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21857,11 +21904,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -24034,11 +24100,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -26506,7 +26572,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -26528,7 +26595,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -27335,6 +27403,12 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -27385,6 +27459,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -29775,7 +29853,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -29924,10 +30002,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -30121,24 +30195,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -30174,6 +30230,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -30481,8 +30555,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -30745,9 +30819,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -35053,9 +35127,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -35859,6 +35934,11 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+#, fuzzy
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr "Mengembalikan nilai hiperbolik tangen dari parameter."
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -35881,10 +35961,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -35919,6 +36011,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -35928,11 +36026,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -35960,7 +36066,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -36027,6 +36143,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Returns the map cell size."
@@ -36051,7 +36171,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -36068,6 +36191,12 @@ msgstr ""
msgid "Sets the map active."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -36083,15 +36212,61 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr "Mengembalikan nilai hiperbolik tangen dari parameter."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
+msgid "Returns the region's navigation layers."
+msgstr "Mengembalikan nilai hiperbolik tangen dari parameter."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr "Mengembalikan nilai hiperbolik tangen dari parameter."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr "Mengembalikan nilai hiperbolik tangen dari parameter."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
msgid "Sets the map for the region."
msgstr "Mengembalikan nilai hiperbolik tangen dari parameter."
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Sets the navigation mesh for the region."
@@ -36101,6 +36276,11 @@ msgstr "Mengembalikan nilai hiperbolik tangen dari parameter."
msgid "Sets the global transformation for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr "Mengembalikan nilai hiperbolik tangen dari parameter."
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -36110,9 +36290,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -36130,7 +36317,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -36145,11 +36340,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -36191,6 +36399,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -36203,7 +36417,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -36230,6 +36450,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -36292,9 +36519,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -36310,13 +36544,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
#, fuzzy
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr "Mengembalikan nilai hiperbolik tangen dari parameter."
@@ -36337,6 +36564,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -36367,8 +36601,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36390,9 +36624,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36406,14 +36640,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36425,7 +36659,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36453,29 +36687,29 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
+msgid ""
+"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
+"is within [member agent_max_climb] of a walkable neighbor."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -36494,7 +36728,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -36557,7 +36791,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36578,13 +36812,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36634,8 +36868,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -36652,8 +36886,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -36682,10 +36929,34 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "The [NavigationMesh] resource to use."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -36702,7 +36973,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -36742,7 +37015,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -36822,6 +37097,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -36858,6 +37141,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -36865,6 +37172,22 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "The [NavigationPolygon] resource to use."
+msgstr ""
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -36874,11 +37197,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36938,6 +37265,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -38701,7 +39034,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -38825,7 +39164,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -40797,8 +41136,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -40981,9 +41327,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -45108,7 +45454,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45262,7 +45608,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45317,7 +45663,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45370,7 +45716,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45419,7 +45765,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45471,7 +45817,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45523,7 +45869,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -47161,7 +47507,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -47406,6 +47761,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -47631,6 +47998,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -47839,6 +48398,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -48106,6 +48857,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -49608,7 +50402,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -49960,8 +50753,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -51755,6 +52549,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -51964,8 +52774,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -53492,7 +54302,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -55213,7 +56024,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -61320,6 +62136,10 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -61426,6 +62246,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -62557,7 +63381,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -65791,8 +66620,8 @@ msgstr ""
#: doc/classes/Viewport.xml
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
#: doc/classes/Viewport.xml
@@ -66229,11 +67058,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -66273,6 +67103,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -70155,7 +70995,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -71023,6 +71863,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -74220,8 +75070,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -74236,11 +75086,17 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
+msgstr "Mengembalikan nilai hiperbolik tangen dari parameter."
+
+#: doc/classes/World.xml
msgid "The World's visual scenario."
msgstr ""
@@ -74255,8 +75111,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -74273,6 +75129,12 @@ msgid ""
msgstr ""
#: doc/classes/World2D.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr "Mengembalikan nilai hiperbolik tangen dari parameter."
+
+#: doc/classes/World2D.xml
msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
diff --git a/doc/translations/is.po b/doc/translations/is.po
index 7346554061..ec65de5cfb 100644
--- a/doc/translations/is.po
+++ b/doc/translations/is.po
@@ -347,7 +347,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3379,6 +3379,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -3391,6 +3397,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -8366,7 +8378,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -8565,7 +8577,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -8582,10 +8597,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -8770,7 +8781,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -12356,7 +12369,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -13613,7 +13626,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -14081,7 +14094,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -14119,9 +14132,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -14140,8 +14153,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -14157,8 +14170,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -14249,9 +14262,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -19088,11 +19101,14 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
+msgid "The [Curve] that is rendered onto the texture."
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -19378,6 +19394,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
msgid "Returns the number of keys in the dictionary."
msgstr ""
@@ -21308,7 +21331,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -21316,9 +21339,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21329,9 +21366,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21444,11 +21490,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -23617,11 +23682,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -26083,7 +26148,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -26105,7 +26171,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -26911,6 +26978,12 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -26961,6 +27034,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -29351,7 +29428,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -29500,10 +29577,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -29697,24 +29770,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -29750,6 +29805,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -30057,8 +30130,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -30321,9 +30394,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -34629,9 +34702,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -35429,6 +35503,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr ""
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -35451,10 +35529,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -35489,6 +35579,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -35498,11 +35594,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -35530,7 +35634,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35594,6 +35708,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Returns the map cell size."
msgstr ""
@@ -35617,7 +35735,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35634,6 +35755,12 @@ msgstr ""
msgid "Sets the map active."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -35649,14 +35776,56 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the region's navigation layers."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the map for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the navigation mesh for the region."
msgstr ""
@@ -35665,6 +35834,10 @@ msgstr ""
msgid "Sets the global transformation for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -35674,9 +35847,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -35694,7 +35874,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35709,11 +35897,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35754,6 +35955,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -35766,7 +35973,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35793,6 +36006,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -35855,9 +36075,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -35873,13 +36100,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr ""
@@ -35899,6 +36119,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -35929,8 +36156,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -35952,9 +36179,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -35968,14 +36195,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -35987,7 +36214,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36015,29 +36242,29 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
+msgid ""
+"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
+"is within [member agent_max_climb] of a walkable neighbor."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -36056,7 +36283,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -36119,7 +36346,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36140,13 +36367,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36196,8 +36423,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -36214,8 +36441,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -36244,10 +36484,34 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "The [NavigationMesh] resource to use."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -36264,7 +36528,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -36304,7 +36570,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -36384,6 +36652,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -36420,6 +36696,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -36427,6 +36727,22 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "The [NavigationPolygon] resource to use."
+msgstr ""
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -36436,11 +36752,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36498,6 +36818,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -38261,7 +38587,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -38385,7 +38717,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -40354,8 +40686,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -40538,9 +40877,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -44650,7 +44989,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44804,7 +45143,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44859,7 +45198,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44912,7 +45251,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44961,7 +45300,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45013,7 +45352,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45065,7 +45404,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -46701,7 +47040,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -46946,6 +47294,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -47171,6 +47531,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -47379,6 +47931,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -47646,6 +48390,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -49148,7 +49935,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -49500,8 +50286,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -51294,6 +52081,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -51503,8 +52306,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -53031,7 +53834,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -54752,7 +55556,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -60853,6 +61662,10 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -60959,6 +61772,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -62090,7 +62907,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -65323,8 +66145,8 @@ msgstr ""
#: doc/classes/Viewport.xml
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
#: doc/classes/Viewport.xml
@@ -65761,11 +66583,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -65805,6 +66628,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -69682,7 +70515,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -70550,6 +71383,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -73746,8 +74589,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -73762,8 +74605,13 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
+msgstr ""
+
+#: doc/classes/World.xml
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
msgstr ""
#: doc/classes/World.xml
@@ -73781,8 +74629,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -73800,6 +74648,11 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr ""
+
+#: doc/classes/World2D.xml
+msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
msgstr ""
diff --git a/doc/translations/it.po b/doc/translations/it.po
index 3b4e6090e9..f1a35b0de3 100644
--- a/doc/translations/it.po
+++ b/doc/translations/it.po
@@ -515,9 +515,10 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
+#, fuzzy
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -4372,6 +4373,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -4384,6 +4391,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -9384,7 +9397,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -9583,7 +9596,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -9600,10 +9616,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -9788,7 +9800,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -13393,7 +13407,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -14652,7 +14666,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -15122,7 +15136,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -15160,9 +15174,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -15181,8 +15195,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -15198,8 +15212,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -15290,9 +15304,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -20223,11 +20237,15 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
-msgstr ""
+#, fuzzy
+msgid "The [Curve] that is rendered onto the texture."
+msgstr "Restituisce il seno del parametro."
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -20514,6 +20532,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
#, fuzzy
msgid "Returns the number of keys in the dictionary."
msgstr "Restituisce il resto dei due vettori."
@@ -22448,7 +22473,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -22456,9 +22481,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -22469,9 +22508,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -22584,11 +22632,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -24768,11 +24835,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -27251,7 +27318,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -27273,7 +27341,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -28092,6 +28161,13 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+#, fuzzy
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr "Ritorna [code]true[/code] se [code]s[/code] è zero o quasi zero."
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -28142,6 +28218,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -30537,7 +30617,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -30686,10 +30766,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -30884,24 +30960,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -30937,6 +30995,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -31244,8 +31320,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -31509,9 +31585,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -35841,9 +35917,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -36649,6 +36726,11 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+#, fuzzy
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr "Restituisce il seno del parametro."
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -36671,10 +36753,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -36709,6 +36803,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -36718,11 +36818,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36751,7 +36859,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr "Ritorna [code]true[/code] se [Rect2i] contiene un punto."
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -36821,6 +36939,11 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+#, fuzzy
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr "Prende la linea corrente nel file analizzato (non ancora implementato)"
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Returns the map cell size."
@@ -36845,7 +36968,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -36864,6 +36990,12 @@ msgstr "Ritorna [code]true[/code] se [Rect2i] è piano o vuoto."
msgid "Sets the map active."
msgstr "Restituisce l'arco-seno del parametro."
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -36879,15 +37011,61 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr "Ritorna [code]true[/code] se [code]s[/code] è zero o quasi zero."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
+msgid "Returns the region's navigation layers."
+msgstr "Restituisce il seno del parametro."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr "Ritorna [code]true[/code] se [code]s[/code] è zero o quasi zero."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr "Ritorna [code]true[/code] se [code]s[/code] è zero o quasi zero."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
msgid "Sets the map for the region."
msgstr "Restituisce il seno del parametro."
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Sets the navigation mesh for the region."
@@ -36898,6 +37076,11 @@ msgstr "Restituisce il valore opposto del parametro."
msgid "Sets the global transformation for the region."
msgstr "Calcola il prodotto vettoriale di questo vettore e [code]b[/code]."
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr "Ritorna [code]true[/code] se [code]s[/code] è zero o quasi zero."
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -36907,9 +37090,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -36927,7 +37117,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -36943,11 +37141,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -36992,6 +37203,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -37004,7 +37221,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -37031,6 +37254,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -37093,9 +37323,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -37112,13 +37349,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
#, fuzzy
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr "Restituisce il seno del parametro."
@@ -37139,6 +37369,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -37168,10 +37405,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationMesh.xml
+#, fuzzy
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
+"Ritorna [code]true[/code] se l'impostazione specificata da [code]name[/code] "
+"esiste, [code]false[/code] altrimenti."
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
msgid ""
@@ -37193,9 +37433,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -37209,14 +37449,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -37228,7 +37468,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -37256,13 +37496,7 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
-msgstr ""
-
-#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -37275,13 +37509,19 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"is within [member agent_max_climb] of a walkable neighbor."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml
+msgid ""
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -37300,7 +37540,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -37363,7 +37603,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -37385,13 +37625,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -37441,8 +37681,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -37460,8 +37700,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -37490,11 +37743,35 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
#, fuzzy
msgid "The [NavigationMesh] resource to use."
msgstr "Il singleton [EditorNavigationMeshGenerator]."
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -37511,7 +37788,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -37552,7 +37831,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -37633,6 +37914,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -37669,6 +37958,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -37676,6 +37989,23 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+#, fuzzy
+msgid "The [NavigationPolygon] resource to use."
+msgstr "Il singleton [EditorNavigationMeshGenerator]."
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -37685,11 +38015,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -37751,6 +38085,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -39518,7 +39858,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -39643,7 +39989,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -41630,8 +41976,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -41814,9 +42167,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -45956,7 +46309,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -46111,7 +46464,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -46166,7 +46519,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -46219,7 +46572,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -46268,7 +46621,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -46321,7 +46674,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -46373,7 +46726,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -48013,7 +48366,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -48258,6 +48620,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -48483,6 +48857,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -48691,6 +49257,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -48958,6 +49716,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -50460,7 +51261,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -50815,8 +51615,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -52615,6 +53416,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -52824,8 +53641,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -54354,7 +55171,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -56077,7 +56895,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -62231,6 +63054,13 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+#, fuzzy
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr ""
+"Se [code] vero [/code], i nodi figli sono ordinati, altrimenti l'ordinamento "
+"è disabilitato."
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -62337,6 +63167,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -63472,7 +64306,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -66746,8 +67585,8 @@ msgstr ""
#: doc/classes/Viewport.xml
#, fuzzy
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr "Ritorna [code]true[/code] se [code]s[/code] è zero o quasi zero."
#: doc/classes/Viewport.xml
@@ -67187,11 +68026,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -67231,6 +68071,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -71138,7 +71988,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -72015,6 +72865,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -75221,8 +76081,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -75237,11 +76097,17 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
+msgstr "Restituisce il seno del parametro."
+
+#: doc/classes/World.xml
msgid "The World's visual scenario."
msgstr ""
@@ -75256,8 +76122,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -75274,6 +76140,12 @@ msgid ""
msgstr ""
#: doc/classes/World2D.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr "Restituisce il seno del parametro."
+
+#: doc/classes/World2D.xml
msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
diff --git a/doc/translations/ja.po b/doc/translations/ja.po
index edea8834b6..8bb3d16322 100644
--- a/doc/translations/ja.po
+++ b/doc/translations/ja.po
@@ -486,9 +486,10 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
+#, fuzzy
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -4324,6 +4325,15 @@ msgstr ""
"クã§ã‚ã‚‹ã“ã¨ã®ãƒ’ント。"
#: doc/classes/@GlobalScope.xml
+#, fuzzy
+msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+"整数プロパティãŒã€ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã§æŒ‡å®šã•れ㟠2D レンダー レイヤーを使用ã—ãŸãƒ“ット"
+"マスクã§ã‚ã‚‹ã“ã¨ã®ãƒ’ント。"
+
+#: doc/classes/@GlobalScope.xml
msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
@@ -4340,6 +4350,15 @@ msgstr ""
"クã§ã‚ã‚‹ã“ã¨ã®ãƒ’ント。"
#: doc/classes/@GlobalScope.xml
+#, fuzzy
+msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+"整数プロパティãŒã€ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã§æŒ‡å®šã•れ㟠2D レンダー レイヤーを使用ã—ãŸãƒ“ット"
+"マスクã§ã‚ã‚‹ã“ã¨ã®ãƒ’ント。"
+
+#: doc/classes/@GlobalScope.xml
msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
@@ -10657,7 +10676,7 @@ msgstr ""
"astar.connect_points(1, 2, false)\n"
"[/codeblock]"
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -10942,8 +10961,15 @@ msgstr ""
"ケールãŒä¸Žãˆã‚‰ã‚ŒãŸå€¤ã«æ›´æ–°ã•れã¾ã™ã€‚"
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
-msgstr "指定ã—ãŸ2点ã®é–“ã«æŽ¥ç¶š / セグメントãŒã‚ã‚‹ã‹ã©ã†ã‹ã‚’è¿”ã—ã¾ã™ã€‚"
+#, fuzzy
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
+msgstr ""
+"与ãˆã‚‰ã‚ŒãŸ2点ãŒã‚»ã‚°ãƒ¡ãƒ³ãƒˆã§ç›´æŽ¥æŽ¥ç¶šã•れã¦ã„ã‚‹ã‹ã©ã†ã‹ã‚’è¿”ã—ã¾ã™ã€‚"
+"[code]bidirectional[/code]ãŒ[code]false[/code]ã®å ´åˆã€[code]id[/code]ã‹ã‚‰"
+"[code]to_id[/code]ã¾ã§ã“ã®ã‚»ã‚°ãƒ¡ãƒ³ãƒˆã‚’通ã£ã¦ç§»å‹•ã§ãã‚‹ã‹ã©ã†ã‹ã‚’è¿”ã—ã¾ã™ã€‚"
#: doc/classes/AStar2D.xml
msgid ""
@@ -10968,10 +10994,6 @@ msgstr ""
"[/codeblock]"
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr "指定ã•れãŸ2点ã®é–“ã«ã‚るセグメントを削除ã—ã¾ã™ã€‚"
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -11223,7 +11245,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -15323,7 +15347,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -16616,7 +16640,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -17115,7 +17139,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -17153,9 +17177,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -17174,8 +17198,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -17191,8 +17215,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -17283,9 +17307,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -22211,11 +22235,15 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
-msgstr ""
+#, fuzzy
+msgid "The [Curve] that is rendered onto the texture."
+msgstr "円柱ã®ãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°ã«ä½¿ã†ãƒžãƒ†ãƒªã‚¢ãƒ«ã€‚"
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -22502,6 +22530,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
#, fuzzy
msgid "Returns the number of keys in the dictionary."
msgstr "é…列ã®è¦ç´ æ•°ã‚’è¿”ã—ã¾ã™ã€‚"
@@ -24444,7 +24479,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -24452,9 +24487,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -24465,9 +24514,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -24580,11 +24638,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -26781,12 +26858,14 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
-msgstr ""
+#, fuzzy
+msgid "Medium quality for the screen-space ambient occlusion effect."
+msgstr "ピクセルå˜ä½ã§ã‚¢ãƒ³ãƒ“エントオクルージョン値を指定ã™ã‚‹ãƒ†ã‚¯ã‚¹ãƒãƒ£ã§ã™ã€‚"
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
-msgstr ""
+#, fuzzy
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
+msgstr "ピクセルå˜ä½ã§ã‚¢ãƒ³ãƒ“エントオクルージョン値を指定ã™ã‚‹ãƒ†ã‚¯ã‚¹ãƒãƒ£ã§ã™ã€‚"
#: doc/classes/Expression.xml
msgid "A class that stores an expression you can execute."
@@ -29276,7 +29355,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -29298,7 +29378,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -30130,6 +30211,15 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+#, fuzzy
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+"[code]true[/code] ã®å ´åˆã€ãƒ—ロセス関連ã®é€šçŸ¥ã«å¿œã˜ã¦ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ã‚’æ›´æ–°ã—ã¾"
+"ã™ã€‚"
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -30180,6 +30270,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -32580,7 +32674,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -32729,10 +32823,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -32929,24 +33019,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -32982,6 +33054,27 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+#, fuzzy
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+"テクスãƒãƒ£ç”¨ã®ãƒ•ィルタフラグ。オプション㯠[enum TextureFilter] ã‚’å‚ç…§ã—ã¦ã"
+"ã ã•ã„。"
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -33289,8 +33382,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -33553,9 +33646,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -37940,9 +38033,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -38755,6 +38849,11 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+#, fuzzy
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr "アニメーションã®ãƒˆãƒ©ãƒƒã‚¯æ•°ã‚’è¿”ã—ã¾ã™ã€‚"
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -38778,10 +38877,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -38817,6 +38928,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr "メソッド呼ã³å‡ºã—トラックã§ä½¿ã†ã€å‘¼ã³å‡ºã—モード。"
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
#, fuzzy
msgid "Server interface for low-level 2D navigation access."
@@ -38827,11 +38944,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -38864,7 +38989,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr "与ãˆã‚‰ã‚ŒãŸãƒŽãƒ¼ãƒ‰ã‚’å«ã‚€ã‚°ãƒ©ãƒ•ã®å ´åˆã€[code]true[/code] ã‚’è¿”ã—ã¾ã™ã€‚"
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -38935,6 +39070,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Returns the map cell size."
@@ -38962,7 +39101,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -38981,6 +39123,12 @@ msgstr "é…列ãŒç©ºã®å ´åˆã¯[code]true[/code]ã‚’è¿”ã—ã¾ã™ã€‚"
msgid "Sets the map active."
msgstr "ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªã‚’åœæ­¢ã—ã¾ã™ã€‚"
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -38996,15 +39144,64 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr "点 [code]point[/code] ã‹ã‚‰å¹³é¢ä¸Šã®ç‚¹ã¸ã®ç›´äº¤æŠ•影を返ã—ã¾ã™ã€‚"
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr ""
+"é…列㫠[code]value[/code] ãŒå«ã¾ã‚Œã¦ã„れ㰠[code]true[/code] ã‚’è¿”ã—ã¾ã™ã€‚"
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
+msgid "Returns the region's navigation layers."
+msgstr "ã‚°ãƒ©ãƒ•å†…ã®æŽ¥ç¶šæ•°ã‚’è¿”ã—ã¾ã™ã€‚"
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr "è«–ç†ORæ¼”ç®—å­ ([code]or[/code] ã¾ãŸã¯ [code]||[/code])。"
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr ""
+"与ãˆã‚‰ã‚ŒãŸ[code]id[/code]ã‚’æŒã¤ç‚¹ã®ä½ç½®[code]position[/code]を設定ã—ã¾ã™ã€‚"
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
msgid "Sets the map for the region."
msgstr "行列ã®é€†è¡Œåˆ—ã‚’è¿”ã—ã¾ã™ã€‚"
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Sets the navigation mesh for the region."
@@ -39015,6 +39212,12 @@ msgstr "指定ã•れãŸåå‰ã®ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ãƒŽãƒ¼ãƒ‰ã‚’è¿”ã—ã¾ã™ã€‚
msgid "Sets the global transformation for the region."
msgstr "行列ã®è»¢ç½®ã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’è¿”ã—ã¾ã™ã€‚"
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr ""
+"与ãˆã‚‰ã‚ŒãŸ[code]id[/code]ã‚’æŒã¤ç‚¹ã®ä½ç½®[code]position[/code]を設定ã—ã¾ã™ã€‚"
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -39024,9 +39227,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -39044,7 +39254,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -39061,11 +39279,24 @@ msgid ""
"system."
msgstr "指定ã•れãŸåå‰ã®ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ãƒŽãƒ¼ãƒ‰ã‚’è¿”ã—ã¾ã™ã€‚"
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -39112,6 +39343,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -39124,7 +39361,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -39151,6 +39394,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -39215,9 +39465,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -39235,13 +39492,6 @@ msgid ""
msgstr "指定ã•れãŸåå‰ã®ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ãƒŽãƒ¼ãƒ‰ã‚’è¿”ã—ã¾ã™ã€‚"
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
#, fuzzy
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr "アニメーションã®ãƒˆãƒ©ãƒƒã‚¯æ•°ã‚’è¿”ã—ã¾ã™ã€‚"
@@ -39262,6 +39512,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -39291,10 +39548,11 @@ msgid ""
msgstr ""
#: doc/classes/NavigationMesh.xml
+#, fuzzy
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
-msgstr ""
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
+msgstr "録画中ã‹ã©ã†ã‹ã‚’è¿”ã—ã¾ã™ã€‚"
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
msgid ""
@@ -39316,9 +39574,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -39332,14 +39590,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -39351,7 +39609,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -39380,13 +39638,7 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
-msgstr ""
-
-#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -39397,13 +39649,22 @@ msgstr "[code]true[/code]ã®å ´åˆã€æ³•ç·šãƒžãƒƒãƒ”ãƒ³ã‚°ãŒæœ‰åйã«ãªã‚Šã¾ã
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"is within [member agent_max_climb] of a walkable neighbor."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml
+#, fuzzy
+msgid ""
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
+"[code]true[/code]ã®å ´åˆã€ãƒœãƒ‡ã‚£ã®é€æ˜Žåº¦ã‚’有効ã«ã—ã¾ã™ã€‚[member blend_mode] ã‚‚"
+"å‚ç…§ã—ã¦ãã ã•ã„。"
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -39422,7 +39683,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -39486,7 +39747,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -39508,13 +39769,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -39565,8 +39826,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -39584,8 +39845,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -39614,11 +39888,35 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
#, fuzzy
msgid "The [NavigationMesh] resource to use."
msgstr "[NavigationMeshGenerator] シングルトン。"
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
#, fuzzy
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr "アニメーションã®å†ç”ŸãŒé–‹å§‹ã—ãŸã¨ãã«é€šçŸ¥ã—ã¾ã™ã€‚"
@@ -39637,7 +39935,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -39679,7 +39979,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -39760,6 +40062,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -39796,6 +40106,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -39803,6 +40137,23 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+#, fuzzy
+msgid "The [NavigationPolygon] resource to use."
+msgstr "[NavigationMeshGenerator] シングルトン。"
+
#: doc/classes/NavigationServer.xml
#, fuzzy
msgid "Server interface for low-level 3D navigation access."
@@ -39813,11 +40164,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -39880,6 +40235,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -41646,7 +42007,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -41770,7 +42137,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -43774,8 +44141,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -43958,9 +44332,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -48108,7 +48482,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -48265,7 +48639,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -48321,7 +48695,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -48379,7 +48753,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -48429,7 +48803,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -48483,7 +48857,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -48536,7 +48910,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -50202,7 +50576,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -50447,6 +50830,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -50672,6 +51067,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -50880,6 +51467,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -51147,6 +51926,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -52651,7 +53473,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -53007,8 +53828,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -54826,6 +55648,26 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+#, fuzzy
+msgid "Aligns top of the inline image to the top of the text."
+msgstr "ボックスã®ä¸­å¿ƒã‹ã‚‰æ¸¬ã£ãŸãƒœãƒƒã‚¯ã‚¹ã®é«˜ã•。"
+
+#: doc/classes/RichTextLabel.xml
+#, fuzzy
+msgid "Aligns center of the inline image to the center of the text."
+msgstr "å­ã‚’コンテナã®ä¸­å¤®ã«æ•´åˆ—ã•ã›ã¾ã™ã€‚"
+
+#: doc/classes/RichTextLabel.xml
+#, fuzzy
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr "ボックスã®ä¸­å¿ƒã‹ã‚‰æ¸¬ã£ãŸãƒœãƒƒã‚¯ã‚¹ã®é«˜ã•。"
+
+#: doc/classes/RichTextLabel.xml
+#, fuzzy
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr "å­ã‚’ã‚³ãƒ³ãƒ†ãƒŠã®æœ€å¾Œã«æ•´åˆ—ã•ã›ã¾ã™ã€‚"
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -55036,8 +55878,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
#, fuzzy
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -56579,7 +57421,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -58310,7 +59153,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -64789,6 +65637,11 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+#, fuzzy
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr "ã‚‚ã— [code]true[/code] ã§ã‚れã°ã€ãƒ•ã‚£ãƒ«ã‚¿ãƒªãƒ³ã‚°ã¯æœ‰åйã«ãªã‚Šã¾ã™ã€‚"
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -64898,6 +65751,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -66038,7 +66895,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -69324,8 +70186,8 @@ msgstr ""
#: doc/classes/Viewport.xml
#, fuzzy
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
"[code]true[/code] ã®å ´åˆã€ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ [code]bus_idx[/code] ã®ãƒã‚¹ã‚’ミュート"
"ã—ã¾ã™ã€‚"
@@ -69769,12 +70631,16 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+#, fuzzy
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
+"アニメーションã¯ç‰©ç†ãƒ•レーム中ã«é€²è¡Œã—ã¾ã™ (ã™ãªã‚ã¡ [method Node."
+"_physics_process])。"
#: doc/classes/VisibilityEnabler2D.xml
msgid "This enabler will stop [AnimatedSprite] nodes animations."
@@ -69813,6 +70679,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -73784,7 +74660,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -74657,6 +75533,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -77868,8 +78754,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -77884,11 +78770,17 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
+msgstr "アニメーションã®ãƒˆãƒ©ãƒƒã‚¯æ•°ã‚’è¿”ã—ã¾ã™ã€‚"
+
+#: doc/classes/World.xml
msgid "The World's visual scenario."
msgstr ""
@@ -77903,8 +78795,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -77921,6 +78813,12 @@ msgid ""
msgstr ""
#: doc/classes/World2D.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr "アニメーションã®ãƒˆãƒ©ãƒƒã‚¯æ•°ã‚’è¿”ã—ã¾ã™ã€‚"
+
+#: doc/classes/World2D.xml
msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
diff --git a/doc/translations/ko.po b/doc/translations/ko.po
index af8e0e7503..e3dd797c36 100644
--- a/doc/translations/ko.po
+++ b/doc/translations/ko.po
@@ -14,12 +14,13 @@
# ì‹ ë™ê·œ <rlsl0422@gmail.com>, 2021.
# whatthesamuel <alex01763@gmail.com>, 2021.
# 한수현 <shh1473@ajou.ac.kr>, 2022.
+# vrSono <global.sonogong@gmail.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine class reference\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2022-05-31 22:35+0000\n"
-"Last-Translator: Myeongjin Lee <aranet100@gmail.com>\n"
+"PO-Revision-Date: 2022-06-13 03:39+0000\n"
+"Last-Translator: vrSono <global.sonogong@gmail.com>\n"
"Language-Team: Korean <https://hosted.weblate.org/projects/godot-engine/"
"godot-class-reference/ko/>\n"
"Language: ko\n"
@@ -70,21 +71,20 @@ msgid "Method Descriptions"
msgstr "메서드 설명"
#: doc/tools/make_rst.py
-#, fuzzy
msgid "Theme Property Descriptions"
-msgstr "ì†ì„± 설명"
+msgstr "테마 ì†ì„± 설명"
#: doc/tools/make_rst.py
msgid "Inherits:"
-msgstr ""
+msgstr "ìƒì†:"
#: doc/tools/make_rst.py
msgid "Inherited By:"
-msgstr ""
+msgstr "파ìƒ:"
#: doc/tools/make_rst.py
msgid "(overrides %s)"
-msgstr ""
+msgstr "(%s를 ë®ì–´ì”€)"
#: doc/tools/make_rst.py
msgid "Default"
@@ -105,34 +105,38 @@ msgstr "Getter"
#: doc/tools/make_rst.py
msgid ""
"This method should typically be overridden by the user to have any effect."
-msgstr ""
+msgstr "ì´ ë©”ì„œë“œëŠ” ì¼ë°˜ì ìœ¼ë¡œ 사용ìžê°€ 재정ì˜í•´ì•¼ ì˜í–¥ì„ 미칩니다."
#: doc/tools/make_rst.py
msgid ""
"This method has no side effects. It doesn't modify any of the instance's "
"member variables."
-msgstr ""
+msgstr "ì´ ë©”ì„œë“œëŠ” ì¸ìŠ¤í„´ìŠ¤ì˜ ë©¤ë²„ë³€ìˆ˜ë¥¼ 수정하지 않습니다."
#: doc/tools/make_rst.py
msgid ""
"This method accepts any number of arguments after the ones described here."
msgstr ""
+"ì´ ë©”ì„œë“œëŠ” 여기 ì„¤ëª…ëœ ì¸ìˆ˜ ë’¤ì— ì–¼ë§ˆë“ ì§€ ë§Žì€ ì¸ìˆ˜ë¥¼ ë°›ì„ ìˆ˜ 있습니다."
#: doc/tools/make_rst.py
msgid "This method is used to construct a type."
-msgstr ""
+msgstr "ì´ ë©”ì„œë“œëŠ” íƒ€ìž…ì„ ë§Œë“œëŠ” ë° ì‚¬ìš©ë©ë‹ˆë‹¤."
#: doc/tools/make_rst.py
msgid ""
"This method doesn't need an instance to be called, so it can be called "
"directly using the class name."
msgstr ""
+"ì´ ë©”ì„œë“œì˜ í˜¸ì¶œì—는 ì¸ìŠ¤í„´ìŠ¤ê°€ í•„ìš” 없기 ë•Œë¬¸ì— í´ëž˜ìФ ì´ë¦„ì„ í†µí•´ ì§ì ‘ 호출"
+"ë  ìˆ˜ 있습니다."
#: doc/tools/make_rst.py
msgid ""
"This method describes a valid operator to use with this type as left-hand "
"operand."
msgstr ""
+"ì´ ë©”ì„œë“œëŠ” ì´ íƒ€ìž…ì„ ì™¼ìª½ 피연산ìžë¡œ 사용하는 유효한 ì—°ì‚°ìžë¥¼ 알려ì¤ë‹ˆë‹¤."
#: modules/gdscript/doc_classes/@GDScript.xml
msgid "Built-in GDScript functions."
@@ -187,7 +191,6 @@ msgstr ""
"ì§€ì›í•˜ëŠ” 색 ì´ë¦„ì€ [Color]ì—서 ì •ì˜í•œ ìƒìˆ˜ì™€ 같다."
#: modules/gdscript/doc_classes/@GDScript.xml
-#, fuzzy
msgid ""
"Returns the absolute value of parameter [code]s[/code] (i.e. positive "
"value).\n"
@@ -195,13 +198,12 @@ msgid ""
"a = abs(-1) # a is 1\n"
"[/codeblock]"
msgstr ""
-"[code]s[/code] ë§¤ê°œë³€ìˆ˜ì˜ ì ˆëŒ€ê°’ì„ ë¦¬í„´í•œë‹¤(즉, 양수 ê°’)\n"
+"매개변수 [code]s[/code]ì˜ ì ˆëŒ€ê°’ì„ ë¦¬í„´í•œë‹¤(즉, 양수 ê°’)\n"
"[codeblock]\n"
"a = abs(-1) # a 는 1\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
-#, fuzzy
msgid ""
"Returns the arc cosine of [code]s[/code] in radians. Use to get the angle of "
"cosine [code]s[/code]. [code]s[/code] must be between [code]-1.0[/code] and "
@@ -212,15 +214,16 @@ msgid ""
"c = acos(0.866025)\n"
"[/codeblock]"
msgstr ""
-"[code]s[/code]ì˜ arc cosine ê°’ì„ ëž˜ë””ì–¸ìœ¼ë¡œ 리턴한다. [code]s[/code]ì˜ ì½”ì‚¬"
-"ì¸ ê°ë„를 얻고 싶으면 다ìŒê³¼ ê°™ì´ ì‚¬ìš©í•œë‹¤.\n"
+"[code]s[/code]ì˜ arc cosine ê°’ì„ ë¼ë””안으로 반환한다. 코사ì¸[code]s[/code]ì˜ "
+"ê°ë„를 얻기 위해 사용한다. [code]s[/code]는 [code]-1.0[/code] ì´ìƒ "
+"[code]1.0[/code] ì´í•˜ì´ì–´ì•¼ 한다. 그렇지 않으면 [method acos]는 [constance "
+"NAN]ì„ ë°˜í™˜í•œë‹¤.\n"
"[codeblock]\n"
"# c 는 0.523599 ë˜ëŠ” rad2deg(s) ì„ ì‚¬ìš©í•˜ì—¬ 변환하면 30 ë„\n"
"c = acos(0.866025)\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
-#, fuzzy
msgid ""
"Returns the arc sine of [code]s[/code] in radians. Use to get the angle of "
"sine [code]s[/code]. [code]s[/code] must be between [code]-1.0[/code] and "
@@ -231,15 +234,16 @@ msgid ""
"s = asin(0.5)\n"
"[/codeblock]"
msgstr ""
-"[code]s[/code]ì˜ arc sine ê°’ì„ ëž˜ë””ì–¸ìœ¼ë¡œ 리턴한다. [code]s[/code]ì˜ ì½”ì‚¬ì¸ "
-"ê°ë„를 얻고 싶으면 다ìŒê³¼ ê°™ì´ ì‚¬ìš©í•œë‹¤.\n"
+"[code]s[/code]ì˜ arc sine ê°’ì„ ë¼ë””안으로 반환한다. 사ì¸[code]s[/code]ì˜ ê°ë„"
+"를 얻기 위해 사용한다. [code]s[/code]는 [code]-1.0[/code]ì´ìƒ [code]1.0[/"
+"code]ì´í•˜ ì´ì–´ì•¼ 한다. 그렇지 않으면 [method asin]ì€ [constant NAN]ì„ ë°˜í™˜í•œ"
+"다.\n"
"[codeblock]\n"
"# s 는 0.523599 ë˜ëŠ” rad2deg(s) ì„ ì‚¬ìš©í•˜ì—¬ 변환하면 30 ë„\n"
"a = acos(0.5)\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
-#, fuzzy
msgid ""
"Asserts that the [code]condition[/code] is [code]true[/code]. If the "
"[code]condition[/code] is [code]false[/code], an error is generated. When "
@@ -266,13 +270,17 @@ msgid ""
"[/codeblock]"
msgstr ""
"[code]condition[/code] ì´ [code]true[/code] ì¸ì§€ 확ì¸í•œë‹¤. [code]condition[/"
-"code] ì´ [code]false[/code] ì´ë©´, 오류가 ë°œìƒí•˜ê³  사용ìžê°€ 다시 시작할 때까"
-"ì§€ í”„ë¡œê·¸ëž¨ì´ ì •ì§€ëœë‹¤. 디버그 빌드나 ì—디터ì—서 ê²Œìž„ì´ ì‹¤í–‰ë  ë•Œë§Œ 실행ëœ"
-"다. 디버깅 목ì ìœ¼ë¡œë§Œ 사용하고, 개발 ì¤‘ì— ìƒíƒœê°€ [code]true[/code] ì¸ì§€ 확ì¸"
-"할 수 있게 한다.\n"
-"옵션으로 [code]message[/code] ì¸ìˆ˜ë¥¼ 넣으면 \"Assertion failed\" 메시지를 ë³´"
-"여준다. assertionì´ ì‹¤íŒ¨í•œ ì›ì¸ì— 대한 추가ì ì¸ ìƒì„¸ 정보를 제공하려면 ì´ê²ƒ"
-"ì„ ì‚¬ìš©í•˜ë©´ ëœë‹¤.\n"
+"code] ì´ [code]false[/code] ì´ë©´ 오류가 ë°œìƒí•œë‹¤. ì—디터ì—서 실행한 경우, 실"
+"í–‰ ì¤‘ì¸ í”„ë¡œì íŠ¸ëŠ” 사용ìžê°€ 재개할 때까지 ì •ì§€ëœë‹¤. ì´ê²ƒì€ 프로ì íЏ 개발ìžë‚˜ "
+"애드온 사용ìžì—게 [method push_error]보다 ë” ê°•í•œ ë°©ì‹ìœ¼ë¡œ 오류를 알리는 ë° "
+"ì‚¬ìš©ë  ìˆ˜ 있다. \n"
+"[b]주ì˜:[/b] ì„±ëŠ¥ì„ ìœ„í•´, [method assert]ì˜ ì½”ë“œëŠ” 디버그 빌드나 프로ì íŠ¸ë¥¼ "
+"ì—디터ì—서 실행한 경우ì—ë§Œ 수행ëœë‹¤. [method assert] í˜¸ì¶œì— ë”°ë¼ ìž‘ì—… ë‚´ìš©ì´ "
+"달ë¼ì§€ëŠ” 코드를 작성해서는 안 ëœë‹¤. 그렇지 않으면, 릴리즈 모드로 내보낸 프로"
+"ì íŠ¸ê°€ 다르게 ìž‘ë™í•  것ì´ë‹¤.\n"
+"옵션으로 [code]message[/code] ì¸ìˆ˜ë¥¼ 넣으면, 기본 \"Assertion failed\" 메시지"
+"ì— ì¶”ê°€ë¡œ 표시ëœë‹¤. assertionì´ ì‹¤íŒ¨í•œ ì›ì¸ì— 대한 추가ì ì¸ ìƒì„¸ 정보를 제공"
+"하려면 ì´ê²ƒì„ 사용하면 ëœë‹¤.\n"
"[codeblock]\n"
"# í•­ìƒ ì†ë„ê°€ 0ì—서 20 사ì´ì´ê¸¸ ì›í•œë‹¤ë©´\n"
"speed = -10\n"
@@ -355,6 +363,13 @@ msgid ""
"[/codeblock]\n"
"See also [method floor], [method round], [method stepify], and [int]."
msgstr ""
+"[code]s[/code]를 올림하여, [code]s[/code]보다 작지 ì•Šì€ ê°€ìž¥ ìž‘ì€ ì •ìˆ˜ë¥¼ ë°˜"
+"환.\n"
+"[codeblock]\n"
+"a = ceil(1.45) # a 는 2.0\n"
+"a = ceil(1.001) # a 는 2.0\n"
+"[/codeblock]\n"
+"관련 정보 [method floor], [method round], [method stepify], [int]."
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
@@ -367,6 +382,13 @@ msgid ""
"[/codeblock]\n"
"This is the inverse of [method ord]."
msgstr ""
+"유니코드 ê°’(ASCII코드와 호환ë¨)ì— í•´ë‹¹í•˜ëŠ” 문ìžë¥¼ String으로 반환.\n"
+"[codeblock]\n"
+"a = char(65) # a 는 \"A\"\n"
+"a = char(65 + 32) # a 는 \"a\"\n"
+"a = char(8364) # a 는 \"€\"\n"
+"[/codeblock]\n"
+"[method ord]와 ë°˜ëŒ€ì˜ ê¸°ëŠ¥ì„ í•˜ëŠ” 함수ì´ë‹¤."
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
@@ -378,6 +400,13 @@ msgid ""
"a = clamp(15, 1, 20) # a is 15\n"
"[/codeblock]"
msgstr ""
+"[code]value[/code]ì˜ ë²”ìœ„ë¥¼ 제한하여 [code]min[/code]보다 작지 않고, "
+"[code]max[/code]보다 í¬ì§€ ì•Šì€ ê°’ì„ ë°˜í™˜.\n"
+"[codeblock]\n"
+"a = clamp(1000, 1, 20) # a 는 20\n"
+"a = clamp(-10, 1, 20) # a 는 1\n"
+"a = clamp(15, 1, 20) # a 는 15\n"
+"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
@@ -392,9 +421,18 @@ msgid ""
"print(a.length())\n"
"[/codeblock]"
msgstr ""
+"íƒ€ìž…ì„ ë³€í™˜í•˜ëŠ” 함수. [code]type[/code] 매개변수는 [enum Variant.Type] ì˜ ê°’"
+"ì„ ë°›ìŒ.\n"
+"[codeblock]\n"
+"a = Vector2(1, 0)\n"
+"# 1ì´ ì¶œë ¥ë¨\n"
+"print(a.length())\n"
+"a = convert(a, TYPE_STRING)\n"
+"# \"(1, 0)\"문ìžì—´ì˜ 길ì´ê°€ 6ì´ê¸° ë•Œë¬¸ì— 6ì´ ì¶œë ¥ë¨\n"
+"print(a.length())\n"
+"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
-#, fuzzy
msgid ""
"Returns the cosine of angle [code]s[/code] in radians.\n"
"[codeblock]\n"
@@ -402,34 +440,31 @@ msgid ""
"a = cos(PI) # a is -1.0\n"
"[/codeblock]"
msgstr ""
-"[code]s[/code] ë§¤ê°œë³€ìˆ˜ì˜ ì ˆëŒ€ê°’ì„ ë¦¬í„´í•œë‹¤(즉, 양수 ê°’)\n"
+"ë¼ë””안 ê°ë„ [code]s[/code] ì˜ ì½”ì‚¬ì¸ì„ 반환.\n"
"[codeblock]\n"
-"# a 는 1\n"
-"a = abs(-1)\n"
+"a = cos(TAU) # a 는 1.0\n"
+"a = cos(PI) # a 는 -1.0\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
-#, fuzzy
msgid ""
"Returns the hyperbolic cosine of [code]s[/code] in radians.\n"
"[codeblock]\n"
"print(cosh(1)) # Prints 1.543081\n"
"[/codeblock]"
msgstr ""
-"[code]s[/code] ë§¤ê°œë³€ìˆ˜ì˜ ì ˆëŒ€ê°’ì„ ë¦¬í„´í•œë‹¤(즉, 양수 ê°’)\n"
+"ë¼ë””안 ê°ë„ [code]s[/code]ì˜ ìŒê³¡ì½”사ì¸(hyperbolic cosine)ì„ ë°˜í™˜.\n"
"[codeblock]\n"
-"# a 는 1\n"
-"a = abs(-1)\n"
+"print(cosh(1)) # 1.543081ì´ ì¶œë ¥ë¨\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
-#, fuzzy
msgid "Converts from decibels to linear energy (audio)."
msgstr "ë°ì‹œë²¨ì—서 선형 ì—너지(오디오)로 변환합니다."
#: modules/gdscript/doc_classes/@GDScript.xml
msgid "Deprecated alias for [method step_decimals]."
-msgstr ""
+msgstr "[method step_decimals]ì˜ ë” ì´ìƒ 사용ë˜ì§€ 않는 별칭."
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
@@ -441,11 +476,19 @@ msgid ""
"a = dectime(60, 10, 0.1)) # a is 59.0\n"
"[/codeblock]"
msgstr ""
+"[b]주ì˜:[/b] [code]dectime[/code] 는 ë” ì´ìƒ 사용ë˜ì§€ 않으며 Godot 4.0ì—서 ì‚­"
+"ì œë  ê²ƒ 입니다. 대신, [method move_toward]를 사용하세요.\n"
+"\n"
+"[code]value[/code]ì—서 [code]step[/code] * [code]amount[/code]를 뺀 ê°’ì„ ë°˜"
+"환.\n"
+"[codeblock]\n"
+"a = dectime(60, 10, 0.1)) # a 는 59.0\n"
+"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3507,6 +3550,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -3519,6 +3568,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -8497,7 +8552,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -8696,7 +8751,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -8713,10 +8771,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -8901,7 +8955,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -12494,7 +12550,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -13751,7 +13807,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -14220,7 +14276,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
"기존 색ìƒì—서 ì‚¬ìš©ìž ì§€ì • 알파 값으로 색ìƒì„ ìƒì„±í•œë‹¤.\n"
@@ -14274,9 +14330,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -14297,14 +14353,19 @@ msgstr ""
"[/codeblock]"
#: doc/classes/Color.xml
+#, fuzzy
msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
+"기존 색ìƒì—서 ì‚¬ìš©ìž ì§€ì • 알파 값으로 색ìƒì„ ìƒì„±í•œë‹¤.\n"
+"[codeblock]\n"
+"var red = Color(Color.red, 0.5) # 50% 투명한 빨간색.\n"
+"[/codeblock]"
#: doc/classes/Color.xml
msgid ""
@@ -14318,8 +14379,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -14416,9 +14477,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -19264,11 +19325,15 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
-msgstr ""
+#, fuzzy
+msgid "The [Curve] that is rendered onto the texture."
+msgstr "ë§¤ê°œë³€ìˆ˜ì˜ ì‚¬ì¸ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -19554,6 +19619,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
#, fuzzy
msgid "Returns the number of keys in the dictionary."
msgstr "ë‘ ë²¡í„°ì˜ ë‚˜ë¨¸ì§€ë¥¼ 반환합니다."
@@ -21547,7 +21619,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -21555,9 +21627,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21568,9 +21654,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21683,11 +21778,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -23861,11 +23975,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -26334,7 +26448,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -26356,7 +26471,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -27164,6 +27280,12 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -27214,6 +27336,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -29612,7 +29738,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -29761,10 +29887,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -29958,24 +30080,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -30011,6 +30115,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -30318,8 +30440,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -30582,9 +30704,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -34896,9 +35018,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -35703,6 +35826,11 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+#, fuzzy
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr "ë§¤ê°œë³€ìˆ˜ì˜ ì‚¬ì¸ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -35725,10 +35853,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -35763,6 +35903,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -35772,11 +35918,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -35804,7 +35958,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35874,6 +36038,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Returns the map cell size."
@@ -35898,7 +36066,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35917,6 +36088,12 @@ msgstr "ë§¤ê°œë³€ìˆ˜ì˜ ì½”ì‚¬ì¸ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
msgid "Sets the map active."
msgstr "ë§¤ê°œë³€ìˆ˜ì˜ ì•„í¬ì‚¬ì¸ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -35932,15 +36109,61 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr "ë‘ ë²¡í„°ì˜ ë‚˜ë¨¸ì§€ë¥¼ 반환합니다."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
+msgid "Returns the region's navigation layers."
+msgstr "ë§¤ê°œë³€ìˆ˜ì˜ ì‚¬ì¸ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr "ë§¤ê°œë³€ìˆ˜ì˜ ì‚¬ì¸ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr "ë§¤ê°œë³€ìˆ˜ì˜ ì‚¬ì¸ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
msgid "Sets the map for the region."
msgstr "ë§¤ê°œë³€ìˆ˜ì˜ ì‚¬ì¸ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Sets the navigation mesh for the region."
@@ -35950,6 +36173,11 @@ msgstr "ë§¤ê°œë³€ìˆ˜ì˜ ë°˜ëŒ€ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
msgid "Sets the global transformation for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr "ë§¤ê°œë³€ìˆ˜ì˜ ì‚¬ì¸ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -35959,9 +36187,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -35979,7 +36214,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35995,11 +36238,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -36041,6 +36297,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -36053,7 +36315,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -36080,6 +36348,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -36142,9 +36417,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -36161,13 +36443,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
#, fuzzy
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr "ë§¤ê°œë³€ìˆ˜ì˜ ì‚¬ì¸ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
@@ -36188,6 +36463,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -36218,8 +36500,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36242,9 +36524,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36258,14 +36540,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36277,7 +36559,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36305,29 +36587,29 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
+msgid ""
+"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
+"is within [member agent_max_climb] of a walkable neighbor."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -36346,7 +36628,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -36409,7 +36691,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36431,13 +36713,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36487,8 +36769,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -36506,8 +36788,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -36536,10 +36831,34 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "The [NavigationMesh] resource to use."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -36556,7 +36875,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -36597,7 +36918,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -36678,6 +37001,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -36714,6 +37045,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -36721,6 +37076,22 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "The [NavigationPolygon] resource to use."
+msgstr ""
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -36730,11 +37101,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36796,6 +37171,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -38684,7 +39065,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -38808,7 +39195,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -40786,8 +41173,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -40970,9 +41364,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -45100,7 +45494,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45254,7 +45648,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45309,7 +45703,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45362,7 +45756,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45411,7 +45805,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45463,7 +45857,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45515,7 +45909,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -47154,7 +47548,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -47399,6 +47802,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -47624,6 +48039,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -47832,6 +48439,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -48099,6 +48898,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -49601,7 +50443,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -49953,8 +50794,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -51749,6 +52591,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -51958,8 +52816,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -53486,7 +54344,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -55207,7 +56066,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -61319,6 +62183,11 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+#, fuzzy
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr "ë§¤ê°œë³€ìˆ˜ì˜ ì½”ì‚¬ì¸ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -61425,6 +62294,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -62556,7 +63429,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -65813,8 +66691,8 @@ msgstr ""
#: doc/classes/Viewport.xml
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
#: doc/classes/Viewport.xml
@@ -66251,11 +67129,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -66295,6 +67174,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -70189,7 +71078,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -71057,6 +71946,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -74257,8 +75156,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -74273,11 +75172,17 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
+msgstr "ë§¤ê°œë³€ìˆ˜ì˜ ì‚¬ì¸ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
+
+#: doc/classes/World.xml
msgid "The World's visual scenario."
msgstr ""
@@ -74292,8 +75197,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -74310,6 +75215,12 @@ msgid ""
msgstr ""
#: doc/classes/World2D.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr "ë§¤ê°œë³€ìˆ˜ì˜ ì‚¬ì¸ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
+
+#: doc/classes/World2D.xml
msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
@@ -74522,4 +75433,4 @@ msgstr ""
#: doc/classes/YSort.xml
msgid ""
"If [code]true[/code], child nodes are sorted, otherwise sorting is disabled."
-msgstr ""
+msgstr "[code]"
diff --git a/doc/translations/lt.po b/doc/translations/lt.po
index ea25f328bf..fc686e4bb2 100644
--- a/doc/translations/lt.po
+++ b/doc/translations/lt.po
@@ -357,7 +357,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3389,6 +3389,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -3401,6 +3407,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -8376,7 +8388,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -8575,7 +8587,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -8592,10 +8607,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -8780,7 +8791,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -12366,7 +12379,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -13623,7 +13636,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -14091,7 +14104,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -14129,9 +14142,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -14150,8 +14163,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -14167,8 +14180,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -14259,9 +14272,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -19098,11 +19111,14 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
+msgid "The [Curve] that is rendered onto the texture."
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -19388,6 +19404,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
msgid "Returns the number of keys in the dictionary."
msgstr ""
@@ -21318,7 +21341,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -21326,9 +21349,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21339,9 +21376,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21454,11 +21500,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -23627,11 +23692,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -26093,7 +26158,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -26115,7 +26181,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -26921,6 +26988,12 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -26971,6 +27044,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -29361,7 +29438,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -29510,10 +29587,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -29707,24 +29780,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -29760,6 +29815,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -30067,8 +30140,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -30331,9 +30404,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -34639,9 +34712,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -35439,6 +35513,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr ""
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -35461,10 +35539,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -35499,6 +35589,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -35508,11 +35604,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -35540,7 +35644,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35604,6 +35718,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Returns the map cell size."
msgstr ""
@@ -35627,7 +35745,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35644,6 +35765,12 @@ msgstr ""
msgid "Sets the map active."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -35659,14 +35786,56 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the region's navigation layers."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the map for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the navigation mesh for the region."
msgstr ""
@@ -35675,6 +35844,10 @@ msgstr ""
msgid "Sets the global transformation for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -35684,9 +35857,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -35704,7 +35884,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35719,11 +35907,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35764,6 +35965,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -35776,7 +35983,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35803,6 +36016,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -35865,9 +36085,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -35883,13 +36110,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr ""
@@ -35909,6 +36129,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -35939,8 +36166,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -35962,9 +36189,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -35978,14 +36205,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -35997,7 +36224,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36025,29 +36252,29 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
+msgid ""
+"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
+"is within [member agent_max_climb] of a walkable neighbor."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -36066,7 +36293,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -36129,7 +36356,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36150,13 +36377,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36206,8 +36433,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -36224,8 +36451,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -36254,10 +36494,34 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "The [NavigationMesh] resource to use."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -36274,7 +36538,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -36314,7 +36580,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -36394,6 +36662,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -36430,6 +36706,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -36437,6 +36737,22 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "The [NavigationPolygon] resource to use."
+msgstr ""
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -36446,11 +36762,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36508,6 +36828,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -38271,7 +38597,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -38395,7 +38727,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -40364,8 +40696,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -40548,9 +40887,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -44660,7 +44999,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44814,7 +45153,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44869,7 +45208,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44922,7 +45261,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44971,7 +45310,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45023,7 +45362,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45075,7 +45414,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -46711,7 +47050,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -46956,6 +47304,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -47181,6 +47541,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -47389,6 +47941,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -47656,6 +48400,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -49158,7 +49945,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -49510,8 +50296,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -51304,6 +52091,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -51513,8 +52316,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -53041,7 +53844,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -54762,7 +55566,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -60863,6 +61672,10 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -60969,6 +61782,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -62100,7 +62917,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -65333,8 +66155,8 @@ msgstr ""
#: doc/classes/Viewport.xml
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
#: doc/classes/Viewport.xml
@@ -65771,11 +66593,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -65815,6 +66638,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -69692,7 +70525,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -70560,6 +71393,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -73756,8 +74599,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -73772,8 +74615,13 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
+msgstr ""
+
+#: doc/classes/World.xml
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
msgstr ""
#: doc/classes/World.xml
@@ -73791,8 +74639,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -73810,6 +74658,11 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr ""
+
+#: doc/classes/World2D.xml
+msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
msgstr ""
diff --git a/doc/translations/lv.po b/doc/translations/lv.po
index fec1aa6082..27ebbed1af 100644
--- a/doc/translations/lv.po
+++ b/doc/translations/lv.po
@@ -362,7 +362,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3394,6 +3394,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -3406,6 +3412,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -8381,7 +8393,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -8580,7 +8592,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -8597,10 +8612,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -8785,7 +8796,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -12371,7 +12384,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -13628,7 +13641,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -14096,7 +14109,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -14134,9 +14147,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -14155,8 +14168,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -14172,8 +14185,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -14264,9 +14277,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -19103,11 +19116,14 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
+msgid "The [Curve] that is rendered onto the texture."
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -19393,6 +19409,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
msgid "Returns the number of keys in the dictionary."
msgstr ""
@@ -21323,7 +21346,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -21331,9 +21354,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21344,9 +21381,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21459,11 +21505,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -23635,11 +23700,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -26101,7 +26166,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -26123,7 +26189,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -26929,6 +26996,12 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -26979,6 +27052,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -29369,7 +29446,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -29518,10 +29595,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -29715,24 +29788,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -29768,6 +29823,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -30075,8 +30148,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -30339,9 +30412,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -34647,9 +34720,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -35447,6 +35521,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr ""
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -35469,10 +35547,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -35507,6 +35597,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -35516,11 +35612,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -35548,7 +35652,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35612,6 +35726,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Returns the map cell size."
msgstr ""
@@ -35635,7 +35753,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35652,6 +35773,12 @@ msgstr ""
msgid "Sets the map active."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -35667,14 +35794,56 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the region's navigation layers."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the map for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the navigation mesh for the region."
msgstr ""
@@ -35683,6 +35852,10 @@ msgstr ""
msgid "Sets the global transformation for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -35692,9 +35865,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -35712,7 +35892,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35727,11 +35915,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35772,6 +35973,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -35784,7 +35991,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35811,6 +36024,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -35873,9 +36093,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -35891,13 +36118,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr ""
@@ -35917,6 +36137,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -35947,8 +36174,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -35970,9 +36197,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -35986,14 +36213,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36005,7 +36232,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36033,29 +36260,29 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
+msgid ""
+"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
+"is within [member agent_max_climb] of a walkable neighbor."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -36074,7 +36301,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -36137,7 +36364,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36158,13 +36385,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36214,8 +36441,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -36232,8 +36459,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -36262,10 +36502,34 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "The [NavigationMesh] resource to use."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -36282,7 +36546,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -36322,7 +36588,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -36402,6 +36670,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -36438,6 +36714,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -36445,6 +36745,22 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "The [NavigationPolygon] resource to use."
+msgstr ""
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -36454,11 +36770,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36516,6 +36836,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -38279,7 +38605,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -38403,7 +38735,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -40372,8 +40704,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -40556,9 +40895,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -44668,7 +45007,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44822,7 +45161,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44877,7 +45216,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44930,7 +45269,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44979,7 +45318,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45031,7 +45370,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45083,7 +45422,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -46719,7 +47058,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -46964,6 +47312,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -47189,6 +47549,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -47397,6 +47949,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -47664,6 +48408,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -49166,7 +49953,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -49518,8 +50304,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -51312,6 +52099,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -51521,8 +52324,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -53049,7 +53852,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -54770,7 +55574,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -60871,6 +61680,10 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -60977,6 +61790,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -62108,7 +62925,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -65341,8 +66163,8 @@ msgstr ""
#: doc/classes/Viewport.xml
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
#: doc/classes/Viewport.xml
@@ -65779,11 +66601,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -65823,6 +66646,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -69700,7 +70533,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -70568,6 +71401,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -73764,8 +74607,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -73780,8 +74623,13 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
+msgstr ""
+
+#: doc/classes/World.xml
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
msgstr ""
#: doc/classes/World.xml
@@ -73799,8 +74647,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -73818,6 +74666,11 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr ""
+
+#: doc/classes/World2D.xml
+msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
msgstr ""
diff --git a/doc/translations/mr.po b/doc/translations/mr.po
index 3e7d519563..caaec0b107 100644
--- a/doc/translations/mr.po
+++ b/doc/translations/mr.po
@@ -345,7 +345,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3377,6 +3377,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -3389,6 +3395,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -8364,7 +8376,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -8563,7 +8575,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -8580,10 +8595,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -8768,7 +8779,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -12354,7 +12367,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -13611,7 +13624,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -14079,7 +14092,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -14117,9 +14130,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -14138,8 +14151,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -14155,8 +14168,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -14247,9 +14260,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -19086,11 +19099,14 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
+msgid "The [Curve] that is rendered onto the texture."
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -19376,6 +19392,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
msgid "Returns the number of keys in the dictionary."
msgstr ""
@@ -21306,7 +21329,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -21314,9 +21337,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21327,9 +21364,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21442,11 +21488,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -23615,11 +23680,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -26081,7 +26146,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -26103,7 +26169,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -26909,6 +26976,12 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -26959,6 +27032,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -29349,7 +29426,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -29498,10 +29575,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -29695,24 +29768,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -29748,6 +29803,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -30055,8 +30128,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -30319,9 +30392,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -34627,9 +34700,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -35427,6 +35501,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr ""
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -35449,10 +35527,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -35487,6 +35577,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -35496,11 +35592,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -35528,7 +35632,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35592,6 +35706,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Returns the map cell size."
msgstr ""
@@ -35615,7 +35733,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35632,6 +35753,12 @@ msgstr ""
msgid "Sets the map active."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -35647,14 +35774,56 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the region's navigation layers."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the map for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the navigation mesh for the region."
msgstr ""
@@ -35663,6 +35832,10 @@ msgstr ""
msgid "Sets the global transformation for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -35672,9 +35845,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -35692,7 +35872,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35707,11 +35895,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35752,6 +35953,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -35764,7 +35971,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35791,6 +36004,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -35853,9 +36073,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -35871,13 +36098,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr ""
@@ -35897,6 +36117,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -35927,8 +36154,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -35950,9 +36177,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -35966,14 +36193,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -35985,7 +36212,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36013,29 +36240,29 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
+msgid ""
+"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
+"is within [member agent_max_climb] of a walkable neighbor."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -36054,7 +36281,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -36117,7 +36344,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36138,13 +36365,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36194,8 +36421,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -36212,8 +36439,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -36242,10 +36482,34 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "The [NavigationMesh] resource to use."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -36262,7 +36526,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -36302,7 +36568,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -36382,6 +36650,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -36418,6 +36694,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -36425,6 +36725,22 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "The [NavigationPolygon] resource to use."
+msgstr ""
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -36434,11 +36750,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36496,6 +36816,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -38259,7 +38585,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -38383,7 +38715,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -40352,8 +40684,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -40536,9 +40875,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -44648,7 +44987,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44802,7 +45141,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44857,7 +45196,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44910,7 +45249,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44959,7 +45298,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45011,7 +45350,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45063,7 +45402,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -46699,7 +47038,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -46944,6 +47292,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -47169,6 +47529,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -47377,6 +47929,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -47644,6 +48388,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -49146,7 +49933,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -49498,8 +50284,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -51292,6 +52079,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -51501,8 +52304,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -53029,7 +53832,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -54750,7 +55554,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -60851,6 +61660,10 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -60957,6 +61770,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -62088,7 +62905,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -65321,8 +66143,8 @@ msgstr ""
#: doc/classes/Viewport.xml
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
#: doc/classes/Viewport.xml
@@ -65759,11 +66581,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -65803,6 +66626,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -69680,7 +70513,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -70548,6 +71381,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -73744,8 +74587,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -73760,8 +74603,13 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
+msgstr ""
+
+#: doc/classes/World.xml
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
msgstr ""
#: doc/classes/World.xml
@@ -73779,8 +74627,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -73798,6 +74646,11 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr ""
+
+#: doc/classes/World2D.xml
+msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
msgstr ""
diff --git a/doc/translations/nb.po b/doc/translations/nb.po
index 31c31b2ce0..6bdd8e4b1e 100644
--- a/doc/translations/nb.po
+++ b/doc/translations/nb.po
@@ -357,7 +357,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3389,6 +3389,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -3401,6 +3407,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -8376,7 +8388,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -8575,7 +8587,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -8592,10 +8607,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -8780,7 +8791,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -12366,7 +12379,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -13623,7 +13636,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -14091,7 +14104,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -14129,9 +14142,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -14150,8 +14163,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -14167,8 +14180,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -14259,9 +14272,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -19098,11 +19111,14 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
+msgid "The [Curve] that is rendered onto the texture."
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -19388,6 +19404,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
msgid "Returns the number of keys in the dictionary."
msgstr ""
@@ -21318,7 +21341,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -21326,9 +21349,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21339,9 +21376,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21454,11 +21500,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -23627,11 +23692,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -26093,7 +26158,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -26115,7 +26181,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -26921,6 +26988,12 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -26971,6 +27044,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -29361,7 +29438,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -29510,10 +29587,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -29707,24 +29780,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -29760,6 +29815,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -30067,8 +30140,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -30331,9 +30404,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -34639,9 +34712,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -35439,6 +35513,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr ""
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -35461,10 +35539,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -35499,6 +35589,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -35508,11 +35604,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -35540,7 +35644,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35604,6 +35718,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Returns the map cell size."
msgstr ""
@@ -35627,7 +35745,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35644,6 +35765,12 @@ msgstr ""
msgid "Sets the map active."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -35659,14 +35786,56 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the region's navigation layers."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the map for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the navigation mesh for the region."
msgstr ""
@@ -35675,6 +35844,10 @@ msgstr ""
msgid "Sets the global transformation for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -35684,9 +35857,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -35704,7 +35884,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35719,11 +35907,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35764,6 +35965,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -35776,7 +35983,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35803,6 +36016,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -35865,9 +36085,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -35883,13 +36110,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr ""
@@ -35909,6 +36129,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -35939,8 +36166,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -35962,9 +36189,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -35978,14 +36205,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -35997,7 +36224,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36025,29 +36252,29 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
+msgid ""
+"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
+"is within [member agent_max_climb] of a walkable neighbor."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -36066,7 +36293,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -36129,7 +36356,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36150,13 +36377,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36206,8 +36433,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -36224,8 +36451,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -36254,10 +36494,34 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "The [NavigationMesh] resource to use."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -36274,7 +36538,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -36314,7 +36580,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -36394,6 +36662,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -36430,6 +36706,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -36437,6 +36737,22 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "The [NavigationPolygon] resource to use."
+msgstr ""
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -36446,11 +36762,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36508,6 +36828,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -38271,7 +38597,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -38395,7 +38727,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -40364,8 +40696,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -40548,9 +40887,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -44660,7 +44999,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44814,7 +45153,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44869,7 +45208,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44922,7 +45261,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44971,7 +45310,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45023,7 +45362,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45075,7 +45414,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -46711,7 +47050,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -46956,6 +47304,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -47181,6 +47541,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -47389,6 +47941,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -47656,6 +48400,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -49158,7 +49945,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -49510,8 +50296,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -51304,6 +52091,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -51513,8 +52316,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -53041,7 +53844,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -54762,7 +55566,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -60863,6 +61672,10 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -60969,6 +61782,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -62100,7 +62917,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -65333,8 +66155,8 @@ msgstr ""
#: doc/classes/Viewport.xml
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
#: doc/classes/Viewport.xml
@@ -65771,11 +66593,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -65815,6 +66638,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -69692,7 +70525,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -70560,6 +71393,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -73756,8 +74599,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -73772,8 +74615,13 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
+msgstr ""
+
+#: doc/classes/World.xml
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
msgstr ""
#: doc/classes/World.xml
@@ -73791,8 +74639,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -73810,6 +74658,11 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr ""
+
+#: doc/classes/World2D.xml
+msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
msgstr ""
diff --git a/doc/translations/ne.po b/doc/translations/ne.po
index 4b1cc1dfec..d7f2a9f0cb 100644
--- a/doc/translations/ne.po
+++ b/doc/translations/ne.po
@@ -345,7 +345,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3377,6 +3377,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -3389,6 +3395,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -8364,7 +8376,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -8563,7 +8575,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -8580,10 +8595,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -8768,7 +8779,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -12354,7 +12367,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -13611,7 +13624,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -14079,7 +14092,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -14117,9 +14130,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -14138,8 +14151,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -14155,8 +14168,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -14247,9 +14260,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -19086,11 +19099,14 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
+msgid "The [Curve] that is rendered onto the texture."
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -19376,6 +19392,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
msgid "Returns the number of keys in the dictionary."
msgstr ""
@@ -21306,7 +21329,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -21314,9 +21337,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21327,9 +21364,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21442,11 +21488,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -23615,11 +23680,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -26081,7 +26146,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -26103,7 +26169,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -26909,6 +26976,12 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -26959,6 +27032,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -29349,7 +29426,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -29498,10 +29575,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -29695,24 +29768,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -29748,6 +29803,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -30055,8 +30128,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -30319,9 +30392,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -34627,9 +34700,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -35427,6 +35501,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr ""
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -35449,10 +35527,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -35487,6 +35577,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -35496,11 +35592,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -35528,7 +35632,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35592,6 +35706,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Returns the map cell size."
msgstr ""
@@ -35615,7 +35733,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35632,6 +35753,12 @@ msgstr ""
msgid "Sets the map active."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -35647,14 +35774,56 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the region's navigation layers."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the map for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the navigation mesh for the region."
msgstr ""
@@ -35663,6 +35832,10 @@ msgstr ""
msgid "Sets the global transformation for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -35672,9 +35845,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -35692,7 +35872,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35707,11 +35895,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35752,6 +35953,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -35764,7 +35971,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35791,6 +36004,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -35853,9 +36073,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -35871,13 +36098,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr ""
@@ -35897,6 +36117,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -35927,8 +36154,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -35950,9 +36177,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -35966,14 +36193,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -35985,7 +36212,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36013,29 +36240,29 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
+msgid ""
+"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
+"is within [member agent_max_climb] of a walkable neighbor."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -36054,7 +36281,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -36117,7 +36344,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36138,13 +36365,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36194,8 +36421,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -36212,8 +36439,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -36242,10 +36482,34 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "The [NavigationMesh] resource to use."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -36262,7 +36526,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -36302,7 +36568,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -36382,6 +36650,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -36418,6 +36694,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -36425,6 +36725,22 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "The [NavigationPolygon] resource to use."
+msgstr ""
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -36434,11 +36750,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36496,6 +36816,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -38259,7 +38585,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -38383,7 +38715,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -40352,8 +40684,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -40536,9 +40875,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -44648,7 +44987,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44802,7 +45141,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44857,7 +45196,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44910,7 +45249,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44959,7 +45298,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45011,7 +45350,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45063,7 +45402,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -46699,7 +47038,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -46944,6 +47292,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -47169,6 +47529,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -47377,6 +47929,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -47644,6 +48388,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -49146,7 +49933,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -49498,8 +50284,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -51292,6 +52079,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -51501,8 +52304,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -53029,7 +53832,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -54750,7 +55554,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -60851,6 +61660,10 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -60957,6 +61770,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -62088,7 +62905,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -65321,8 +66143,8 @@ msgstr ""
#: doc/classes/Viewport.xml
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
#: doc/classes/Viewport.xml
@@ -65759,11 +66581,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -65803,6 +66626,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -69680,7 +70513,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -70548,6 +71381,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -73744,8 +74587,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -73760,8 +74603,13 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
+msgstr ""
+
+#: doc/classes/World.xml
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
msgstr ""
#: doc/classes/World.xml
@@ -73779,8 +74627,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -73798,6 +74646,11 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr ""
+
+#: doc/classes/World2D.xml
+msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
msgstr ""
diff --git a/doc/translations/nl.po b/doc/translations/nl.po
index c44c11d582..71605513cd 100644
--- a/doc/translations/nl.po
+++ b/doc/translations/nl.po
@@ -406,7 +406,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3446,6 +3446,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -3458,6 +3464,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -8433,7 +8445,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -8632,7 +8644,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -8649,10 +8664,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -8837,7 +8848,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -12423,7 +12436,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -13680,7 +13693,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -14148,7 +14161,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -14186,9 +14199,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -14207,8 +14220,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -14224,8 +14237,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -14316,9 +14329,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -19155,11 +19168,14 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
+msgid "The [Curve] that is rendered onto the texture."
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -19445,6 +19461,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
msgid "Returns the number of keys in the dictionary."
msgstr ""
@@ -21375,7 +21398,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -21383,9 +21406,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21396,9 +21433,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21511,11 +21557,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -23687,11 +23752,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -26153,7 +26218,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -26175,7 +26241,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -26981,6 +27048,12 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -27031,6 +27104,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -29421,7 +29498,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -29570,10 +29647,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -29767,24 +29840,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -29820,6 +29875,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -30127,8 +30200,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -30391,9 +30464,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -34699,9 +34772,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -35499,6 +35573,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr ""
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -35521,10 +35599,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -35559,6 +35649,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -35568,11 +35664,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -35600,7 +35704,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35664,6 +35778,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Returns the map cell size."
msgstr ""
@@ -35687,7 +35805,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35704,6 +35825,12 @@ msgstr ""
msgid "Sets the map active."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -35719,14 +35846,56 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the region's navigation layers."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the map for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the navigation mesh for the region."
msgstr ""
@@ -35735,6 +35904,10 @@ msgstr ""
msgid "Sets the global transformation for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -35744,9 +35917,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -35764,7 +35944,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35779,11 +35967,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35824,6 +36025,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -35836,7 +36043,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35863,6 +36076,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -35925,9 +36145,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -35943,13 +36170,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr ""
@@ -35969,6 +36189,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -35999,8 +36226,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36022,9 +36249,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36038,14 +36265,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36057,7 +36284,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36085,29 +36312,29 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
+msgid ""
+"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
+"is within [member agent_max_climb] of a walkable neighbor."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -36126,7 +36353,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -36189,7 +36416,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36210,13 +36437,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36266,8 +36493,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -36284,8 +36511,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -36314,10 +36554,34 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "The [NavigationMesh] resource to use."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -36334,7 +36598,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -36374,7 +36640,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -36454,6 +36722,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -36490,6 +36766,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -36497,6 +36797,22 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "The [NavigationPolygon] resource to use."
+msgstr ""
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -36506,11 +36822,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36568,6 +36888,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -38331,7 +38657,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -38455,7 +38787,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -40424,8 +40756,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -40608,9 +40947,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -44720,7 +45059,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44874,7 +45213,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44929,7 +45268,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44982,7 +45321,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45031,7 +45370,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45083,7 +45422,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45135,7 +45474,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -46771,7 +47110,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -47016,6 +47364,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -47241,6 +47601,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -47449,6 +48001,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -47716,6 +48460,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -49218,7 +50005,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -49570,8 +50356,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -51365,6 +52152,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -51574,8 +52377,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -53102,7 +53905,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -54823,7 +55627,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -60924,6 +61733,10 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -61030,6 +61843,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -62161,7 +62978,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -65394,8 +66216,8 @@ msgstr ""
#: doc/classes/Viewport.xml
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
#: doc/classes/Viewport.xml
@@ -65832,11 +66654,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -65876,6 +66699,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -69753,7 +70586,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -70621,6 +71454,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -73817,8 +74660,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -73833,8 +74676,13 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
+msgstr ""
+
+#: doc/classes/World.xml
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
msgstr ""
#: doc/classes/World.xml
@@ -73852,8 +74700,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -73871,6 +74719,11 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr ""
+
+#: doc/classes/World2D.xml
+msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
msgstr ""
diff --git a/doc/translations/pl.po b/doc/translations/pl.po
index e3f01e9b86..6e5324af99 100644
--- a/doc/translations/pl.po
+++ b/doc/translations/pl.po
@@ -500,9 +500,10 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
+#, fuzzy
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3873,6 +3874,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -3885,6 +3892,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -8870,7 +8883,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -9069,7 +9082,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -9086,10 +9102,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -9274,7 +9286,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -12875,7 +12889,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -14132,7 +14146,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -14601,7 +14615,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -14639,9 +14653,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -14660,8 +14674,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -14677,8 +14691,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -14769,9 +14783,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -19621,11 +19635,15 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
-msgstr ""
+#, fuzzy
+msgid "The [Curve] that is rendered onto the texture."
+msgstr "Zwraca sinus parametru."
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -19914,6 +19932,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
#, fuzzy
msgid "Returns the number of keys in the dictionary."
msgstr "Zwraca resztę z dwóch wektorów."
@@ -21848,7 +21873,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -21856,9 +21881,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21869,9 +21908,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21984,11 +22032,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -24167,11 +24234,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -26643,7 +26710,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -26665,7 +26733,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -27482,6 +27551,15 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+#, fuzzy
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+"Jeśli [code]true[/code], potomne węzły są sortowane. W innym przypadku jest "
+"wyłączone."
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -27532,6 +27610,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -29925,7 +30007,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -30074,10 +30156,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -30271,24 +30349,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -30324,6 +30384,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -30631,8 +30709,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -30895,9 +30973,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -35234,9 +35312,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -36042,6 +36121,11 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+#, fuzzy
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr "Zwraca sinus parametru."
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -36064,10 +36148,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -36102,6 +36198,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -36111,11 +36213,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36146,7 +36256,17 @@ msgstr ""
"skrypcie ,podczas wywołania [method move_and_slide]."
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -36216,6 +36336,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Returns the map cell size."
@@ -36240,7 +36364,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -36261,6 +36388,12 @@ msgstr ""
msgid "Sets the map active."
msgstr "Zwraca arcus sinus parametru."
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -36276,15 +36409,61 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr "Liczy iloczyn wektorowy tego wektora oraz [code]with[/code]."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
+msgid "Returns the region's navigation layers."
+msgstr "Zwraca sinus parametru."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr "Operator logiczny OR ([code]or[/code] or [code]||[/code])."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr "Operator logiczny OR ([code]or[/code] or [code]||[/code])."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
msgid "Sets the map for the region."
msgstr "Zwraca sinus parametru."
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Sets the navigation mesh for the region."
@@ -36295,6 +36474,11 @@ msgstr "Singleton [NavigationMeshGenerator]."
msgid "Sets the global transformation for the region."
msgstr "Liczy iloczyn wektorowy tego wektora oraz [code]b[/code]."
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr "Operator logiczny OR ([code]or[/code] or [code]||[/code])."
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -36304,9 +36488,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -36324,7 +36515,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -36340,11 +36539,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -36392,6 +36604,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -36404,7 +36622,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -36431,6 +36655,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -36493,9 +36724,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -36512,13 +36750,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
#, fuzzy
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr "Zwraca sinus parametru."
@@ -36539,6 +36770,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -36569,8 +36807,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36593,9 +36831,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36609,14 +36847,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36628,7 +36866,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36656,13 +36894,7 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
-msgstr ""
-
-#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36675,13 +36907,19 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"is within [member agent_max_climb] of a walkable neighbor."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml
+msgid ""
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -36700,7 +36938,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -36763,7 +37001,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36785,13 +37023,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36841,8 +37079,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -36860,8 +37098,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -36890,11 +37141,35 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
#, fuzzy
msgid "The [NavigationMesh] resource to use."
msgstr "Singleton [NavigationMeshGenerator]."
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -36911,7 +37186,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -36952,7 +37229,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -37033,6 +37312,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -37069,6 +37356,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -37076,6 +37387,23 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+#, fuzzy
+msgid "The [NavigationPolygon] resource to use."
+msgstr "Singleton [NavigationMeshGenerator]."
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -37085,11 +37413,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -37151,6 +37483,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -38914,7 +39252,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -39038,7 +39382,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -41026,8 +41370,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -41210,9 +41561,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -45351,7 +45702,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45505,7 +45856,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45560,7 +45911,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45613,7 +45964,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45662,7 +46013,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45714,7 +46065,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45766,7 +46117,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -47405,7 +47756,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -47650,6 +48010,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -47875,6 +48247,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -48083,6 +48647,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -48350,6 +49106,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -49852,7 +50651,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -50209,8 +51007,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -52008,6 +52807,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -52217,8 +53032,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -53748,7 +54563,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -55470,7 +56286,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -61596,6 +62417,13 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+#, fuzzy
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr ""
+"Jeśli [code]true[/code], potomne węzły są sortowane. W innym przypadku jest "
+"wyłączone."
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -61702,6 +62530,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -62833,7 +63665,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -66083,10 +66920,13 @@ msgid ""
msgstr ""
#: doc/classes/Viewport.xml
+#, fuzzy
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
+"Jeśli [code]true[/code], potomne węzły są sortowane. W innym przypadku jest "
+"wyłączone."
#: doc/classes/Viewport.xml
msgid ""
@@ -66525,11 +67365,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -66569,6 +67410,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -70467,7 +71318,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -71344,6 +72195,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -74546,8 +75407,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -74562,11 +75423,17 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
+msgstr "Zwraca sinus parametru."
+
+#: doc/classes/World.xml
msgid "The World's visual scenario."
msgstr ""
@@ -74581,8 +75448,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -74599,6 +75466,12 @@ msgid ""
msgstr ""
#: doc/classes/World2D.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr "Zwraca sinus parametru."
+
+#: doc/classes/World2D.xml
msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
diff --git a/doc/translations/pt.po b/doc/translations/pt.po
index 01ab730cd0..6b214ae81a 100644
--- a/doc/translations/pt.po
+++ b/doc/translations/pt.po
@@ -8,12 +8,13 @@
# Felipe SiFa <felipe@logus.digital>, 2022.
# Renu <ifpilucas@gmail.com>, 2022.
# Diogo Gomes <dgomes@graphnode.com>, 2022.
+# El_ExpertPlayer <xpertnathan37@gmail.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine class reference\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2022-04-29 02:54+0000\n"
-"Last-Translator: Diogo Gomes <dgomes@graphnode.com>\n"
+"PO-Revision-Date: 2022-06-13 03:39+0000\n"
+"Last-Translator: El_ExpertPlayer <xpertnathan37@gmail.com>\n"
"Language-Team: Portuguese <https://hosted.weblate.org/projects/godot-engine/"
"godot-class-reference/pt/>\n"
"Language: pt\n"
@@ -21,7 +22,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 4.12.1-dev\n"
+"X-Generator: Weblate 4.13-dev\n"
#: doc/tools/make_rst.py
msgid "Description"
@@ -64,9 +65,8 @@ msgid "Method Descriptions"
msgstr "Descrições de Métodos"
#: doc/tools/make_rst.py
-#, fuzzy
msgid "Theme Property Descriptions"
-msgstr "Descrições de propriedades"
+msgstr "Descrições de Propriedades do Tema"
#: doc/tools/make_rst.py
msgid "Inherits:"
@@ -82,35 +82,40 @@ msgstr ""
#: doc/tools/make_rst.py
msgid "Default"
-msgstr ""
+msgstr "Padrão"
#: doc/tools/make_rst.py
msgid "Setter"
-msgstr ""
+msgstr "Definidor"
#: doc/tools/make_rst.py
msgid "value"
-msgstr ""
+msgstr "valor"
#: doc/tools/make_rst.py
msgid "Getter"
-msgstr ""
+msgstr "Buscador"
#: doc/tools/make_rst.py
msgid ""
"This method should typically be overridden by the user to have any effect."
msgstr ""
+"Este método normalmente deve ser substituído pelo usuário para ter algum "
+"efeito."
#: doc/tools/make_rst.py
msgid ""
"This method has no side effects. It doesn't modify any of the instance's "
"member variables."
msgstr ""
+"Este método não tem efeito colateral. Não modifica nenhuma variável membro "
+"da instancia."
#: doc/tools/make_rst.py
msgid ""
"This method accepts any number of arguments after the ones described here."
msgstr ""
+"Este método aceita qualquer número de argumentos após os descritos aqui."
#: doc/tools/make_rst.py
msgid "This method is used to construct a type."
@@ -129,6 +134,8 @@ msgid ""
"This method describes a valid operator to use with this type as left-hand "
"operand."
msgstr ""
+"Este método descreve um operador válido para usar com este tipo como "
+"operando à esquerda."
#: modules/gdscript/doc_classes/@GDScript.xml
msgid "Built-in GDScript functions."
@@ -488,7 +495,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -813,6 +820,22 @@ msgid ""
"[/codeblock]\n"
"See also [method lerp] which performs the reverse of this operation."
msgstr ""
+"Returna um fator de interpolação ou extrapolação considerando o alcance "
+"especifico em [code]from[/code] e [code]to[/code], e o valor interpolado "
+"especificado em [code]weight[/code]. O valor retornado será entre [code]0.0[/"
+"code] e [code]1.0[/code] se [code]weight[/code] é entre [code]from[/code] e "
+"[code]to[/code] (inclusivo). Se [code]weight[/code] é localizado fora desse "
+"alcance, então um fator de extrapolação será retornado (retorna valor menor "
+"que [code]0.0[/code] ou maior que [code]1.0[/code]).\n"
+"[codeblock]\n"
+"# O raio de interpolação na chamada de `lerp()` abaixo é 0.75.\n"
+"var centro = lerp(20, 30, 0.75)\n"
+"# `centro` agora é 27.5.\n"
+"# Agora, pretendemos ter esquecido o raio original e queremos de volta.\n"
+"var raio = inverse_lerp(20, 30, 27.5)\n"
+"# `raio` agora é 0.75.\n"
+"[/codeblock]\n"
+"Veja também [method lerp] que realiza o inverso desta operação."
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
@@ -4147,6 +4170,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -4159,6 +4188,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -9155,7 +9190,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -9354,7 +9389,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -9371,10 +9409,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -9559,7 +9593,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -13153,7 +13189,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -14433,7 +14469,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr "Retorna o [RID] do objeto."
@@ -14902,7 +14938,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -14948,9 +14984,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -14969,8 +15005,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -14986,8 +15022,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -15078,9 +15114,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -19931,12 +19967,16 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
-msgstr ""
+#, fuzzy
+msgid "The [Curve] that is rendered onto the texture."
+msgstr "A largura de uma textura."
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
-msgstr "A largura de uma textura."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
+msgstr ""
#: doc/classes/CylinderMesh.xml
msgid "Class representing a cylindrical [PrimitiveMesh]."
@@ -20221,6 +20261,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
msgid "Returns the number of keys in the dictionary."
msgstr ""
@@ -22152,7 +22199,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -22160,9 +22207,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -22173,9 +22234,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -22288,11 +22358,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -24470,11 +24559,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -26942,7 +27031,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -26964,7 +27054,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -27771,6 +27862,12 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -27821,6 +27918,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -30211,7 +30312,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -30360,10 +30461,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -30557,24 +30654,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -30610,6 +30689,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -30917,8 +31014,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -31181,9 +31278,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -35507,9 +35604,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -36307,6 +36405,11 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+#, fuzzy
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr "Retorna o RID do ecrã usada por essa camada."
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -36329,10 +36432,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -36367,6 +36482,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -36376,11 +36497,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36410,7 +36539,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr "Retorna [code]true[/code] se o script pode ser instanciado."
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -36480,6 +36619,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Returns the map cell size."
@@ -36504,7 +36647,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -36523,6 +36669,12 @@ msgstr "Retorna [code]true[/code] se o script pode ser instanciado."
msgid "Sets the map active."
msgstr "Retorna a câmara 3D ativa."
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -36538,15 +36690,62 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr "Retorna o produto cruzado deste vetor e [code]b[/code]."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
+msgid "Returns the region's navigation layers."
+msgstr "Retorna a rotação (em radianos)."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr "Retorna o produto cruzado deste vetor e [code]b[/code]."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr ""
+"Limpa o ícone em [code]name[/code] se o tema tiver [code]node_type[/code]."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
msgid "Sets the map for the region."
msgstr "Define a cor da borda."
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the navigation mesh for the region."
msgstr ""
@@ -36556,6 +36755,12 @@ msgstr ""
msgid "Sets the global transformation for the region."
msgstr "Retorna a posição global do mouse."
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr ""
+"Limpa o ícone em [code]name[/code] se o tema tiver [code]node_type[/code]."
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -36565,9 +36770,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -36585,9 +36797,16 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-#, fuzzy
-msgid "Returns the path from start to finish in global coordinates."
-msgstr "Retorna a rotação (em radianos)."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
+msgstr ""
#: doc/classes/NavigationAgent.xml
msgid ""
@@ -36601,11 +36820,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -36648,6 +36880,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -36660,7 +36898,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -36687,6 +36931,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -36751,9 +37002,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -36769,13 +37027,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
#, fuzzy
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr "Retorna o RID do ecrã usada por essa camada."
@@ -36796,6 +37047,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -36826,8 +37084,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36849,9 +37107,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36865,14 +37123,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36884,7 +37142,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36912,29 +37170,29 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
+msgid ""
+"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
+"is within [member agent_max_climb] of a walkable neighbor."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -36953,7 +37211,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -37016,7 +37274,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -37037,13 +37295,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -37093,8 +37351,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -37112,8 +37370,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -37142,10 +37413,34 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "The [NavigationMesh] resource to use."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
#, fuzzy
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr "Notifica quando uma animação começa a reproduzir."
@@ -37164,7 +37459,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -37205,7 +37502,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -37286,6 +37585,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -37322,6 +37629,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -37329,6 +37660,23 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+#, fuzzy
+msgid "The [NavigationPolygon] resource to use."
+msgstr "O singleton [TranslationServer]."
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -37338,11 +37686,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -37403,6 +37755,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -39166,7 +39524,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -39290,7 +39654,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -41264,8 +41628,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -41448,9 +41819,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -45560,7 +45931,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45714,7 +46085,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45769,7 +46140,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45822,7 +46193,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45871,7 +46242,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45923,7 +46294,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45975,7 +46346,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -47614,7 +47985,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -47859,6 +48239,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -48084,6 +48476,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr "Nome opcional para a camada 1 da física 2D."
@@ -48292,6 +48876,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr "Nome opcional para a camada 9 da renderização 2D."
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -48560,6 +49336,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -50062,7 +50881,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -50414,8 +51232,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -52209,6 +53028,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -52418,8 +53253,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -53948,7 +54783,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -55671,7 +56507,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -61802,6 +62643,11 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+#, fuzzy
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr "Se [code]true[/code], o objeto é desenhado por trás do pai dele."
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -61908,6 +62754,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -63039,7 +63889,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -66285,8 +67140,8 @@ msgstr ""
#: doc/classes/Viewport.xml
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
#: doc/classes/Viewport.xml
@@ -66723,11 +67578,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -66767,6 +67623,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -70647,7 +71513,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -71515,6 +72381,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -74716,8 +75592,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -74732,11 +75608,17 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
+msgstr "Retorna o RID do ecrã usada por essa camada."
+
+#: doc/classes/World.xml
msgid "The World's visual scenario."
msgstr ""
@@ -74751,8 +75633,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -74769,6 +75651,12 @@ msgid ""
msgstr ""
#: doc/classes/World2D.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr "Retorna o RID do ecrã usada por essa camada."
+
+#: doc/classes/World2D.xml
msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
diff --git a/doc/translations/pt_BR.po b/doc/translations/pt_BR.po
index 1b0664fac2..16779b76ff 100644
--- a/doc/translations/pt_BR.po
+++ b/doc/translations/pt_BR.po
@@ -40,12 +40,13 @@
# Douglas S. Elias <douglassantoselias@gmail.com>, 2022.
# Fabio Moura de Oliveira <ccmaismais@yahoo.com>, 2022.
# Daniel Abrante <danielabrante@protonmail.com>, 2022.
+# lucas rossy brasil coelho <lucasrossy270@gmail.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine class reference\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2022-04-29 02:54+0000\n"
-"Last-Translator: Daniel Abrante <danielabrante@protonmail.com>\n"
+"PO-Revision-Date: 2022-06-16 18:58+0000\n"
+"Last-Translator: lucas rossy brasil coelho <lucasrossy270@gmail.com>\n"
"Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/"
"godot-engine/godot-class-reference/pt_BR/>\n"
"Language: pt_BR\n"
@@ -53,7 +54,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 4.12.1-dev\n"
+"X-Generator: Weblate 4.13-dev\n"
#: doc/tools/make_rst.py
msgid "Description"
@@ -101,7 +102,7 @@ msgstr "Descrições da Propriedade do Tema"
#: doc/tools/make_rst.py
msgid "Inherits:"
-msgstr "Herda de:"
+msgstr "Herda:"
#: doc/tools/make_rst.py
msgid "Inherited By:"
@@ -117,7 +118,7 @@ msgstr "Padrão"
#: doc/tools/make_rst.py
msgid "Setter"
-msgstr "setter"
+msgstr "setters"
#: doc/tools/make_rst.py
msgid "value"
@@ -165,8 +166,8 @@ msgid ""
"This method describes a valid operator to use with this type as left-hand "
"operand."
msgstr ""
-"Este método descreve um operador válido pra utilizar com este tipo como "
-"operando do lado esquerdo."
+"Este método descreve um operador válido para usar com este tipo como "
+"operando à esquerda."
#: modules/gdscript/doc_classes/@GDScript.xml
msgid "Built-in GDScript functions."
@@ -503,7 +504,7 @@ msgstr "Converte de decibéis para energia linear (áudio)."
#: modules/gdscript/doc_classes/@GDScript.xml
msgid "Deprecated alias for [method step_decimals]."
-msgstr "Apelido descontinuado para [method step_decimals]."
+msgstr "Apelido em desuso para [method step_decimals]."
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
@@ -524,9 +525,10 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
+#, fuzzy
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -547,17 +549,17 @@ msgstr ""
"`Array` ou `Dicionário` até o seu nível mais profundo.\n"
"Isso se compara a [code]==[/code] de várias maneiras:\n"
"- Para [code]null[/code], [code]int[/code], [code]float[/code], "
-"[code]String[/code], [code]Objeto[/code] e [code]RID[/code] tanto "
+"[code]String[/code], [code]Object[/code] e [code]RID[/code] tanto "
"[code]deep_equal[/code] quanto [code]==[/code] funcionam da mesma maneira.\n"
-"- Para [code]Dicionário[/code], [code]==[code] considera igualdade se, e "
-"somente se, ambas as variáveis apontarem para o mesmo [code]Dicionário[/"
+"- Para [code]Dictionary[/code], [code]==[code] considera igualdade se, e "
+"somente se, ambas as variáveis apontarem para o mesmo [code]Dictionary[/"
"code], sem nenhuma recorrência ou consciência do conteúdo.\n"
"- Para [code]Array[/code], [code]==[/code] considera igualdade se, e somente "
"se, cada item no primeiro [code]Array[/code] for igual a sua contraparte no "
"segundo [code]Array[/code], como diz o próprio [code]==[/code]. Isso implica "
-"que [code]==[/code] recursa para [code]Array[/code], mas não para "
-"[code]Dicionário[/code].\n"
-"Em resumo, sempre que um [code]Dicionário[/code] estiver potencialmente "
+"que [code]==[/code] recursiva para [code]Array[/code], mas não para "
+"[code]Dictionary[/code].\n"
+"Em resumo, sempre que um [code]Dictionary[/code] estiver potencialmente "
"envolvido, se você quiser uma verdadeira comparação consciente do conteúdo, "
"você tem que usar [code]deep_equal[/code]."
@@ -869,6 +871,8 @@ msgid ""
"[/codeblock]\n"
"See also [method lerp] which performs the reverse of this operation."
msgstr ""
+"Retornar a interpolação ou extrapolação do fator considerando o ranger "
+"específico [code ]para[/code]"
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
@@ -939,7 +943,6 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
-#, fuzzy
msgid ""
"Linearly interpolates between two values by the factor defined in "
"[code]weight[/code]. To perform interpolation, [code]weight[/code] should be "
@@ -959,17 +962,23 @@ msgid ""
"To perform eased interpolation with [method lerp], combine it with [method "
"ease] or [method smoothstep]."
msgstr ""
-"Interpola linearmente entre dois valores através de um valor normalizado. "
-"Este método é o oposto do método [method inverse_lerp].\n"
+"Interpola linearmente entre dois valores pelo fator definido em "
+"[code]weight[/code]. Para realizar a interpolação, [code]weight[/code] deve "
+"estar entre [code]0.0[/code] e [code]1.0[/code] (inclusive). No entanto, "
+"valores fora desse intervalo são permitidos e podem ser usados para realizar "
+"[i]extrapolação[/i].\n"
"Se os argumentos [code]from[/code] e [code]to[/code] forem do tipo [int] ou "
-"[float], o retorno é um valor do tipo [float].\n"
-"Se ambos são vetores de mesmo tipo ([Vector2], [Vector3] ou [Color]), o "
-"valor retornado será do mesmo tipo ([code]lerp[/code] então chamará o método "
-"[code]lerp[/code] do tipo de vetor em questão).\n"
+"[float], o valor de retorno será um [float].\n"
+"Se ambos forem do mesmo tipo de vetor ([Vector2], [Vector3] ou [Color]), o "
+"valor de retorno será do mesmo tipo([code]lerp[/code] então chama o método "
+"[code]linear_interpolate[/code] do tipo de vetor).\n"
"[codeblock]\n"
-"lerp(0, 4, 0.75) # Retorna 3.0\n"
-"lerp(Vector2(1, 5), Vector2(3, 2), 0.5) # Retorna Vector2(2, 3.5)\n"
-"[/codeblock]"
+"lerp(0, 4, 0,75) # Retorna 3,0\n"
+"lerp(Vetor2(1, 5), Vetor2(3, 2), 0.5) # Retorna Vetor2(2, 3.5)\n"
+"[/codeblock]\n"
+"Veja também [method inverse_lerp] que realiza o inverso desta operação. Para "
+"realizar a interpolação facilitada com [method lerp], combine-o com [method "
+"ease] ou [method smoothstep]."
#: modules/gdscript/doc_classes/@GDScript.xml
#, fuzzy
@@ -1757,7 +1766,6 @@ msgstr ""
"smoothstep() e ease(x, -1.6521)[/url]"
#: modules/gdscript/doc_classes/@GDScript.xml
-#, fuzzy
msgid ""
"Returns the square root of [code]s[/code], where [code]s[/code] is a non-"
"negative number.\n"
@@ -1773,8 +1781,7 @@ msgstr ""
"sqrt(9) # Retorna 3\n"
"[/codeblock]\n"
"[b]Nota:[/b] Valores negativos de [code]s[/code] retornam NaN. Se você "
-"precisar de valores de entrada negativos, use [code]System.Numerics.Complex[/"
-"code] no C#."
+"precisa de valores negativos, use [code]System.Numerics.Complex[/code] em C#."
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
@@ -1788,8 +1795,8 @@ msgid ""
"[/codeblock]"
msgstr ""
"Retorna a posição do primeiro dígito não zero, após o ponto decimal. Note "
-"que o valor máximo de retorno é 10, o que foi uma decisão de design feita "
-"durante a implementação.\n"
+"que o valor máximo de retorno é 10, o que é uma decisão de design na "
+"implementação.\n"
"[codeblock]\n"
"n = step_decimals(5) # n é 0\n"
"n = step_decimals(1.0005) # n é 4\n"
@@ -2198,8 +2205,8 @@ msgid ""
"Constant that represents how many times the diameter of a circle fits around "
"its perimeter. This is equivalent to [code]TAU / 2[/code]."
msgstr ""
-"Constante que representa quantas vezes o diâmetro de um círculo se encaixa "
-"em torno de seu perímetro. Isto equivale a [code]TAU / 2[/code]."
+"Constante que representa quantas vezes o diâmetro de um círculo cabe em seu "
+"perímetro. É equivalente a [code]TAU / 2[/code]."
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
@@ -4046,19 +4053,19 @@ msgid ""
" print(\"Still failing!\")\n"
"[/codeblock]"
msgstr ""
-"Métodos que retornam [enum Error] returnam [constant OK] quando não ocorreu "
-"nenhum erro. Note que muitas funções não retornam um código de erro, mas "
-"imprimem mensagens de erro para a saída padrão.\n"
-"Já que [constant OK] tem valor 0 e todos os outros códigos de falha são "
-"valores inteiros positivos, ele também pode ser usado em verificações "
-"booleanas, por exemplo.:\n"
+"Método que retorna [enum Error] return [constant OK] quando nenhum erro "
+"ocorre. Note que muitas funções não retornan um código de erro mas irá "
+"imprimir uma mensagem de erro para a saída padrão.\n"
+"Já que [constant OK] tem o valor 0, e todas os outros códigos de falha são "
+"positivos inteiros, isso pode ser usado para verificação com booleanos, por "
+"exemplo:\n"
"[codeblock]\n"
-"var err = método_que_retorna_erro()\n"
+"var err = method_that_returns_error()\n"
"if err != OK:\n"
-" print(\"Falha!\")\n"
+" print(\"Erro!\")\n"
"# Ou, equivalente:\n"
"if err:\n"
-" print(\"Ainda falhando!\")\n"
+" print(\"Continua falhando!\")\n"
"[/codeblock]"
#: doc/classes/@GlobalScope.xml
@@ -4107,7 +4114,7 @@ msgstr "Arquivo: Erro arquivo já em uso."
#: doc/classes/@GlobalScope.xml
msgid "File: Can't open error."
-msgstr "Arquivo: não se pode abrir erro."
+msgstr "Arquivo: erro não é possível abrir."
#: doc/classes/@GlobalScope.xml
msgid "File: Can't write error."
@@ -4350,6 +4357,15 @@ msgstr ""
"2D opcionalmente nomeadas."
#: doc/classes/@GlobalScope.xml
+#, fuzzy
+msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+"Indica que uma propriedade integer é uma bitmask usando as camadas de "
+"renderização 2D nomeadas opcionalmente."
+
+#: doc/classes/@GlobalScope.xml
msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
@@ -4366,6 +4382,15 @@ msgstr ""
"3D opcionalmente nomeadas."
#: doc/classes/@GlobalScope.xml
+#, fuzzy
+msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+"Indica que uma propriedade integer é uma bitmask usando as camadas de "
+"renderização 2D nomeadas opcionalmente."
+
+#: doc/classes/@GlobalScope.xml
msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
@@ -4481,11 +4506,11 @@ msgstr "Usado para agrupar propriedade no editor."
#: doc/classes/@GlobalScope.xml
msgid "Used to categorize properties together in the editor."
-msgstr ""
+msgstr "Utilizado para categorizar propriedades juntas ao editor."
#: doc/classes/@GlobalScope.xml
msgid "The property does not save its state in [PackedScene]."
-msgstr ""
+msgstr "A propriedade não salva seu estado em [PackedScene]."
#: doc/classes/@GlobalScope.xml
msgid "Editing the property prompts the user for restarting the editor."
@@ -9409,7 +9434,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -9608,7 +9633,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -9625,10 +9653,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -9813,7 +9837,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -13417,7 +13443,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -14697,7 +14723,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr "Retorna o [RID] do objeto."
@@ -15183,7 +15209,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
"Constrói uma cor a partir de um inteiro 32-bit no formato RGBA (cada byte "
@@ -15246,9 +15272,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -15263,14 +15289,20 @@ msgid ""
msgstr ""
#: doc/classes/Color.xml
+#, fuzzy
msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
+"Constrói uma cor a partir de um perfil RGB usando valores de 0 a 1. O valor "
+"Alfa sempre será 1.\n"
+"[codeblock]\n"
+"var c = Color(0.2, 1.0, 0.7) # Equivalente a RGBA(51, 255, 178, 255)\n"
+"[/codeblock]"
#: doc/classes/Color.xml
msgid ""
@@ -15284,8 +15316,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -15376,9 +15408,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -20232,12 +20264,16 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
-msgstr ""
+#, fuzzy
+msgid "The [Curve] that is rendered onto the texture."
+msgstr "A largura de uma textura."
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
-msgstr "A largura de uma textura."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
+msgstr ""
#: doc/classes/CylinderMesh.xml
msgid "Class representing a cylindrical [PrimitiveMesh]."
@@ -20523,6 +20559,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
#, fuzzy
msgid "Returns the number of keys in the dictionary."
msgstr "Retorna o número de nós nesta [SceneTree]."
@@ -22455,7 +22498,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -22463,9 +22506,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -22476,9 +22533,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -22591,11 +22657,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -24780,11 +24865,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -27258,7 +27343,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -27280,7 +27366,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -28107,6 +28194,13 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+#, fuzzy
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr "Retorna [code]true[/code] se o script pode ser instanciado."
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -28157,6 +28251,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -30551,7 +30649,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -30700,10 +30798,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -30898,24 +30992,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -30951,6 +31027,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -31258,8 +31352,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -31522,9 +31616,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -35861,9 +35955,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -36669,6 +36764,11 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+#, fuzzy
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr "Retorna o número de nós nesta [SceneTree]."
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -36691,10 +36791,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -36729,6 +36841,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -36738,11 +36856,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36772,7 +36898,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr "Retorna [code]true[/code] se o script pode ser instanciado."
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -36843,6 +36979,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Returns the map cell size."
@@ -36867,7 +37007,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -36886,6 +37029,12 @@ msgstr "Retorna [code]true[/code] se o script pode ser instanciado."
msgid "Sets the map active."
msgstr "Retorna a câmera 3D ativa."
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -36901,15 +37050,64 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr ""
+"Retorna a [Cor] em [code]name[/code] se o tema tiver [code]node_type[/code]."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
+msgid "Returns the region's navigation layers."
+msgstr "Retorna o número de nós nesta [SceneTree]."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr ""
+"Retorna a [Cor] em [code]name[/code] se o tema tiver [code]node_type[/code]."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr ""
+"Limpa o ícone em [code]name[/code] se o tema tiver [code]node_type[/code]."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
msgid "Sets the map for the region."
msgstr "Define a cor da borda."
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Sets the navigation mesh for the region."
@@ -36920,6 +37118,11 @@ msgstr "O singleton [NavigationMeshGenerator]."
msgid "Sets the global transformation for the region."
msgstr "Retorna a posição global do mouse."
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr "Retorna o tipo do nó em at [code]idx[/code]."
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -36929,9 +37132,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -36949,9 +37159,16 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-#, fuzzy
-msgid "Returns the path from start to finish in global coordinates."
-msgstr "Retorna a rotação (em radianos)."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
+msgstr ""
#: doc/classes/NavigationAgent.xml
#, fuzzy
@@ -36966,11 +37183,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -37014,6 +37244,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -37026,7 +37262,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -37053,6 +37295,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -37117,9 +37366,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -37136,13 +37392,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
#, fuzzy
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr "Retorna o número de nós nesta [SceneTree]."
@@ -37163,6 +37412,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -37192,10 +37448,11 @@ msgid ""
msgstr ""
#: doc/classes/NavigationMesh.xml
+#, fuzzy
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
-msgstr ""
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
+msgstr "Retorna [code]true[/code] se o script pode ser instanciado."
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
msgid ""
@@ -37217,9 +37474,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -37233,14 +37490,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -37252,7 +37509,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -37280,13 +37537,7 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
-msgstr ""
-
-#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -37299,13 +37550,19 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"is within [member agent_max_climb] of a walkable neighbor."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml
+msgid ""
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -37324,7 +37581,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -37387,7 +37644,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -37409,13 +37666,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -37465,8 +37722,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -37484,8 +37741,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -37514,11 +37784,35 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
#, fuzzy
msgid "The [NavigationMesh] resource to use."
msgstr "O singleton [NavigationMeshGenerator]."
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
#, fuzzy
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr "Notifica quando uma animação começa a reproduzir."
@@ -37537,7 +37831,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -37578,7 +37874,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -37659,6 +37957,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -37695,6 +38001,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -37702,6 +38032,23 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+#, fuzzy
+msgid "The [NavigationPolygon] resource to use."
+msgstr "O singleton [NavigationMeshGenerator]."
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -37711,11 +38058,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -37777,6 +38128,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -39540,7 +39897,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -39664,7 +40027,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -41648,8 +42011,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -41832,9 +42202,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -45979,7 +46349,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -46133,7 +46503,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -46188,7 +46558,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -46241,7 +46611,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -46290,7 +46660,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -46342,7 +46712,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -46394,7 +46764,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -48036,7 +48406,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -48281,6 +48660,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -48506,6 +48897,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr "Nome opcional para a camada 1 da física 2D."
@@ -48714,6 +49297,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr "Nome opcional para a camada 9 da renderização 2D."
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -48982,6 +49757,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -50484,7 +51302,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -50840,8 +51657,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -52639,6 +53457,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -52848,8 +53682,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -54379,7 +55213,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -56105,7 +56940,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -62262,6 +63102,13 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+#, fuzzy
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr ""
+"Se [code]true[/code], os nós filhos são organizados, do contrário, a "
+"organização é desabilitada."
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -62368,6 +63215,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -63499,7 +64350,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -66755,10 +67611,13 @@ msgid ""
msgstr ""
#: doc/classes/Viewport.xml
+#, fuzzy
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
+"Se [code]true[/code], os nós filhos são organizados, do contrário, a "
+"organização é desabilitada."
#: doc/classes/Viewport.xml
msgid ""
@@ -67197,11 +68056,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -67241,6 +68101,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -71142,7 +72012,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -72019,6 +72889,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -75223,8 +76103,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -75239,11 +76119,17 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
+msgstr "Retorna o número de nós nesta [SceneTree]."
+
+#: doc/classes/World.xml
msgid "The World's visual scenario."
msgstr ""
@@ -75258,8 +76144,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -75276,6 +76162,12 @@ msgid ""
msgstr ""
#: doc/classes/World2D.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr "Retorna o número de nós nesta [SceneTree]."
+
+#: doc/classes/World2D.xml
msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
diff --git a/doc/translations/ro.po b/doc/translations/ro.po
index fb527767a3..dbc5017a08 100644
--- a/doc/translations/ro.po
+++ b/doc/translations/ro.po
@@ -373,7 +373,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3409,6 +3409,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -3421,6 +3427,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -8396,7 +8408,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -8595,7 +8607,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -8612,10 +8627,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -8800,7 +8811,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -12386,7 +12399,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -13643,7 +13656,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -14111,7 +14124,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -14149,9 +14162,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -14170,8 +14183,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -14187,8 +14200,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -14279,9 +14292,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -19118,11 +19131,14 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
+msgid "The [Curve] that is rendered onto the texture."
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -19408,6 +19424,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
msgid "Returns the number of keys in the dictionary."
msgstr ""
@@ -21338,7 +21361,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -21346,9 +21369,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21359,9 +21396,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21474,11 +21520,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -23650,11 +23715,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -26116,7 +26181,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -26138,7 +26204,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -26944,6 +27011,12 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -26994,6 +27067,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -29384,7 +29461,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -29533,10 +29610,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -29730,24 +29803,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -29783,6 +29838,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -30090,8 +30163,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -30354,9 +30427,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -34662,9 +34735,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -35462,6 +35536,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr ""
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -35484,10 +35562,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -35522,6 +35612,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -35531,11 +35627,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -35563,7 +35667,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35627,6 +35741,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Returns the map cell size."
msgstr ""
@@ -35650,7 +35768,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35667,6 +35788,12 @@ msgstr ""
msgid "Sets the map active."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -35682,14 +35809,56 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the region's navigation layers."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the map for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the navigation mesh for the region."
msgstr ""
@@ -35698,6 +35867,10 @@ msgstr ""
msgid "Sets the global transformation for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -35707,9 +35880,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -35727,7 +35907,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35742,11 +35930,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35787,6 +35988,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -35799,7 +36006,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35826,6 +36039,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -35888,9 +36108,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -35906,13 +36133,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr ""
@@ -35932,6 +36152,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -35962,8 +36189,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -35985,9 +36212,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36001,14 +36228,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36020,7 +36247,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36048,29 +36275,29 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
+msgid ""
+"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
+"is within [member agent_max_climb] of a walkable neighbor."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -36089,7 +36316,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -36152,7 +36379,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36173,13 +36400,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36229,8 +36456,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -36247,8 +36474,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -36277,10 +36517,34 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "The [NavigationMesh] resource to use."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -36297,7 +36561,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -36337,7 +36603,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -36417,6 +36685,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -36453,6 +36729,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -36460,6 +36760,23 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+#, fuzzy
+msgid "The [NavigationPolygon] resource to use."
+msgstr "Singletonul [AudioServer]."
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -36469,11 +36786,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36531,6 +36852,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -38294,7 +38621,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -38418,7 +38751,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -40387,8 +40720,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -40571,9 +40911,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -44683,7 +45023,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44837,7 +45177,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44892,7 +45232,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44945,7 +45285,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44994,7 +45334,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45046,7 +45386,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45098,7 +45438,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -46734,7 +47074,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -46979,6 +47328,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -47204,6 +47565,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -47412,6 +47965,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -47679,6 +48424,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -49181,7 +49969,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -49533,8 +50320,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -51327,6 +52115,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -51536,8 +52340,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -53064,7 +53868,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -54785,7 +55590,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -60886,6 +61696,10 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -60992,6 +61806,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -62123,7 +62941,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -65356,8 +66179,8 @@ msgstr ""
#: doc/classes/Viewport.xml
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
#: doc/classes/Viewport.xml
@@ -65794,11 +66617,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -65838,6 +66662,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -69715,7 +70549,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -70583,6 +71417,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -73779,8 +74623,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -73795,8 +74639,13 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
+msgstr ""
+
+#: doc/classes/World.xml
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
msgstr ""
#: doc/classes/World.xml
@@ -73814,8 +74663,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -73833,6 +74682,11 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr ""
+
+#: doc/classes/World2D.xml
+msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
msgstr ""
diff --git a/doc/translations/ru.po b/doc/translations/ru.po
index eba76dd6d2..ec2940636f 100644
--- a/doc/translations/ru.po
+++ b/doc/translations/ru.po
@@ -47,11 +47,12 @@
# Smadjavul <o1985af@gmail.com>, 2022.
# Bozhko Artyom Dmitrievich <jek_sun@mail.ru>, 2022.
# FuzzMix <fmwolfiechad@gmail.com>, 2022.
+# МÐÐ69К <weblate@mah69k.net>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine class reference\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2022-05-29 02:36+0000\n"
+"PO-Revision-Date: 2022-06-08 06:47+0000\n"
"Last-Translator: FuzzMix <fmwolfiechad@gmail.com>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/godot-engine/"
"godot-class-reference/ru/>\n"
@@ -310,24 +311,25 @@ msgid ""
"[/codeblock]"
msgstr ""
"ПроверÑет, что [code]condition[/code] равно [code]true[/code]. ЕÑли "
-"[code]condition[/code] равно [code]false[/code], будет Ñгенерирована ошибка "
-"и программа приоÑтановитÑÑ, пока вы не продолжите её. Эта Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ "
-"выполнÑетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ в отладочных Ñборках, или когда игра запуÑкаетÑÑ Ð² "
-"редакторе. ИÑпользуйте её Ð´Ð»Ñ Ñ†ÐµÐ»ÐµÐ¹ отладки, чтобы убедитьÑÑ, что выражение "
-"оÑтаётÑÑ [code]true[/code] в течение разработки.\n"
+"[code]condition[/code] равно [code]false[/code], будет Ñгенерирована ошибка. "
+"ЕÑли запущено из редактора, запущенный проект приоÑтановитÑÑ, пока вы не "
+"продолжите его. Это может быть иÑпользовано как более ÑÐ¸Ð»ÑŒÐ½Ð°Ñ Ñ„Ð¾Ñ€Ð¼Ð° [method "
+"push_error] Ð´Ð»Ñ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ð± ошибках разработчикам проекта или пользователÑм "
+"дополнений.\n"
"[b]Примечание:[/b] Ð’ целÑÑ… оптимизации код внутри [method assert] "
-"иÑполнÑетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ в debug-Ñборках или при запуÑке из редактора. Ðе "
+"иÑполнÑетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ в отладочных Ñборках или при запуÑке из редактора. Ðе "
"добавлÑйте дополнительную логику в вызов [method assert]. Ð’ противном Ñлучае "
"Ñ€ÐµÐ»Ð¸Ð·Ð½Ð°Ñ Ñборка будет иметь иное поведение.\n"
"ЕÑли задан необÑзательный аргумент [code]message[/code], то он будет показан "
-"в дополнении к Ñообщению \"Assertion failed\". Ð’ нём вы можете предоÑтавить "
-"дополнительные ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ том, почему проверка была неудачной.\n"
+"в дополнении к Ñообщению \"Assertion failed\". Ð’Ñ‹ можете иÑпользовать его "
+"Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´Ð¾ÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ñ… Ñведений о том, почему проверка была "
+"неудачной.\n"
"[codeblock]\n"
-"# Предположим, что вы хотите, чтобы ÑкороÑть (speed) была между 0 и 20\n"
+"# Предположим, что вы хотите, чтобы ÑкороÑть (speed) была между 0 и 20.\n"
"speed = -10\n"
"assert(speed < 20) # True, программа продолжит выполнение\n"
"assert(speed >= 0) # False, программа будет оÑтановлена\n"
-"assert(speed >= 0 && speed < 20) # Ð’Ñ‹ можете комбинировать два уÑловных "
+"assert(speed >= 0 and speed < 20) # Ð’Ñ‹ можете комбинировать два уÑловных "
"Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² одной проверке\n"
"assert(speed < 20, \"speed = %f, но лимит ÑкороÑти равен 20\" % speed) # "
"Показывает Ñообщение Ñ ÑƒÑ‚Ð¾Ñ‡Ð½Ñющими деталÑми\n"
@@ -531,9 +533,10 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
+#, fuzzy
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -1483,7 +1486,6 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
-#, fuzzy
msgid ""
"Pushes an error message to Godot's built-in debugger and to the OS "
"terminal.\n"
@@ -1499,7 +1501,11 @@ msgstr ""
"[codeblock].\n"
"push_error(\"test error\") # Выводит \"test error\" в отладчик и терминал "
"как вызов ошибки\n"
-"[/codeblock]"
+"[/codeblock]\n"
+"[b]Примечание:[/b] Ошибки выведенные таким ÑпоÑобом не приоÑтанавливают "
+"выполнение проекта. Что бы вывеÑти Ñообщение об ошибке и приоÑтановить "
+"выполнение проекта в отладочных Ñборках - иÑпользуйте [code]assert(false, "
+"\"test error\")[/code]."
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
@@ -1531,7 +1537,6 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
-#, fuzzy
msgid ""
"Returns a random floating point value between [code]from[/code] and "
"[code]to[/code] (both endpoints inclusive).\n"
@@ -1540,12 +1545,14 @@ msgid ""
"[/codeblock]\n"
"[b]Note:[/b] This is equivalent to [code]randf() * (to - from) + from[/code]."
msgstr ""
-"Случайное значение Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ запÑтой между [code]from[/code] и [code]to[/"
-"code].\n"
+"Возвращает Ñлучайное значение Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ запÑтой между [code]from[/code] и "
+"[code]to[/code] (включительно).\n"
"[codeblock]\n"
-"prints(rand_range(0, 1), rand_range(0, 1)) # Выведет, напр., 0.135591 "
+"prints(rand_range(0, 1), rand_range(0, 1)) # Выведет, например, 0.135591 "
"0.405263\n"
-"[/codeblock]"
+"[/codeblock]\n"
+"[b]Примечание:[/b] Это Ñквивалентно [code]randf() * (to - from) + from[/"
+"code]."
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
@@ -4455,6 +4462,15 @@ msgstr ""
"иÑпользованием (опционально) именованных 2D-Ñлоев физики."
#: doc/classes/@GlobalScope.xml
+#, fuzzy
+msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+"Указывает, что целочиÑленное ÑвойÑтво ÑвлÑетÑÑ Ð±Ð¸Ñ‚Ð¾Ð²Ð¾Ð¹ маÑкой Ñ "
+"иÑпользованием (опционально) именованных 2D-Ñлоев рендеринга."
+
+#: doc/classes/@GlobalScope.xml
msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
@@ -4471,6 +4487,15 @@ msgstr ""
"иÑпользованием (опционально) именованных 3D-Ñлоев физики."
#: doc/classes/@GlobalScope.xml
+#, fuzzy
+msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+"Указывает, что целочиÑленное ÑвойÑтво ÑвлÑетÑÑ Ð±Ð¸Ñ‚Ð¾Ð²Ð¾Ð¹ маÑкой Ñ "
+"иÑпользованием (опционально) именованных 2D-Ñлоев рендеринга."
+
+#: doc/classes/@GlobalScope.xml
msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
@@ -9983,7 +10008,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -10182,7 +10207,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -10199,10 +10227,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -10387,7 +10411,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -10643,17 +10669,19 @@ msgstr ""
#: doc/classes/AudioEffectDistortion.xml
msgid "Distortion power. Value can range from 0 to 1."
-msgstr ""
+msgstr "Сила иÑкажениÑ. Значение может варьироватьÑÑ Ð¾Ñ‚ 0 до 1."
#: doc/classes/AudioEffectDistortion.xml
msgid ""
"High-pass filter, in Hz. Frequencies higher than this value will not be "
"affected by the distortion. Value can range from 1 to 20000."
msgstr ""
+"Фильтр выÑоких чаÑтот, в Гц. ЧаÑтоты выше Ñтого Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð½Ðµ будут подвержены "
+"иÑкажением. Значение может варьироватьÑÑ Ð¾Ñ‚ 1 до 20000."
#: doc/classes/AudioEffectDistortion.xml
msgid "Distortion type."
-msgstr ""
+msgstr "Тип иÑкажениÑ."
#: doc/classes/AudioEffectDistortion.xml
msgid ""
@@ -14007,7 +14035,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -15280,7 +15308,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -15750,7 +15778,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -15788,9 +15816,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -15809,8 +15837,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -15826,8 +15854,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -15918,9 +15946,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -20872,11 +20900,15 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
-msgstr ""
+#, fuzzy
+msgid "The [Curve] that is rendered onto the texture."
+msgstr "Цвет Ñффекта отражениÑ."
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -21167,6 +21199,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
#, fuzzy
msgid "Returns the number of keys in the dictionary."
msgstr "Возвращает чиÑло Ñлементов в маÑÑиве."
@@ -23105,7 +23144,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -23113,9 +23152,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -23126,9 +23179,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -23241,11 +23303,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -25432,11 +25513,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -27911,7 +27992,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -27933,7 +28015,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -28750,6 +28833,15 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+#, fuzzy
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+"ЕÑли [code]true[/code], Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ñ [member animation] воÑпроизводитÑÑ Ð² данный "
+"момент."
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -28800,6 +28892,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -31196,7 +31292,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -31345,10 +31441,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -31542,24 +31634,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -31595,6 +31669,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -31902,8 +31994,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -32166,9 +32258,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -36520,9 +36612,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -37328,6 +37421,11 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+#, fuzzy
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr "Возвращает количеÑтво дорожек в анимации."
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -37350,10 +37448,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -37388,6 +37498,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
#, fuzzy
msgid "Server interface for low-level 2D navigation access."
@@ -37398,11 +37514,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -37431,7 +37555,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr "Возвращает [code]true[/code] еÑли маÑÑив пуÑтой."
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -37501,6 +37635,13 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+#, fuzzy
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+"Получает текущую Ñтроку в проанализированном файле (в наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ Ð½Ðµ "
+"реализовано)."
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Returns the map cell size."
@@ -37528,7 +37669,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -37547,6 +37691,12 @@ msgstr "Возвращает [code]true[/code] еÑли маÑÑив пуÑтоÐ
msgid "Sets the map active."
msgstr "Возвращает значение задержки данного кадра."
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -37562,15 +37712,61 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr "Возвращает [code]true[/code] еÑли маÑÑив Ñодержит [code]value[/code]."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
+msgid "Returns the region's navigation layers."
+msgstr "Возвращает чиÑло Ñлементов в маÑÑиве."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr "ЛогичеÑкий оператор ИЛИ ([code]or[/code] или [code]||[/code])."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr "ЛогичеÑкий оператор ИЛИ ([code]or[/code] или [code]||[/code])."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
msgid "Sets the map for the region."
msgstr "Возвращает ÑÐ¸Ð½ÑƒÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°."
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Sets the navigation mesh for the region."
@@ -37581,6 +37777,11 @@ msgstr "ОÑтанавливает текущую анимацию (не ÑбрÐ
msgid "Sets the global transformation for the region."
msgstr "Возвращает раÑÑтоÑние до [code]b[/code]."
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr "ЛогичеÑкий оператор ИЛИ ([code]or[/code] или [code]||[/code])."
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -37590,9 +37791,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -37610,7 +37818,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -37626,11 +37842,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -37675,6 +37904,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -37687,7 +37922,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -37714,6 +37955,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -37777,9 +38025,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -37796,13 +38051,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
#, fuzzy
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr "Возвращает количеÑтво дорожек в анимации."
@@ -37823,6 +38071,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -37852,10 +38107,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationMesh.xml
+#, fuzzy
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
+"Возвращает [code]true[/code] еÑли [code]a[/code] и [code]b[/code] "
+"приблизительно равны друг другу."
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
msgid ""
@@ -37877,9 +38135,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -37893,14 +38151,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -37912,7 +38170,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -37940,13 +38198,7 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
-msgstr ""
-
-#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -37957,13 +38209,19 @@ msgstr "ЕÑли [code]true[/code], текÑтура отражена по гоÑ
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"is within [member agent_max_climb] of a walkable neighbor."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml
+msgid ""
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -37982,7 +38240,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -38046,7 +38304,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -38068,13 +38326,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -38125,8 +38383,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -38144,8 +38402,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -38174,11 +38445,35 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
#, fuzzy
msgid "The [NavigationMesh] resource to use."
msgstr "Синглтон [NavigationMeshGenerator]."
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -38195,7 +38490,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -38236,7 +38533,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -38317,6 +38616,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -38353,6 +38660,31 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+#, fuzzy
+msgid "A region of the 2D navigation map."
+msgstr "Выпекает навигационную Ñетку."
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -38360,6 +38692,23 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+#, fuzzy
+msgid "The [NavigationPolygon] resource to use."
+msgstr "Синглтон [NavigationMeshGenerator]."
+
#: doc/classes/NavigationServer.xml
#, fuzzy
msgid "Server interface for low-level 3D navigation access."
@@ -38370,11 +38719,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -38447,6 +38800,12 @@ msgid "Bakes the navigation mesh."
msgstr "Выпекает навигационную Ñетку."
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
#, fuzzy
msgid "Control activation of this server."
msgstr "Управление активацией данного Ñервера."
@@ -40283,7 +40642,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -40407,7 +40772,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -42401,8 +42766,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -42585,9 +42957,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -46733,7 +47105,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -46892,7 +47264,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -46948,7 +47320,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -47006,7 +47378,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -47057,7 +47429,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -47112,7 +47484,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -47165,7 +47537,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -48827,7 +49199,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -49072,6 +49453,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -49297,6 +49690,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -49505,6 +50090,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -49772,6 +50549,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -51274,7 +52094,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -51673,8 +52492,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -53479,6 +54299,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -53688,8 +54524,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -55217,7 +56053,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -56945,7 +57782,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -63132,6 +63974,11 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+#, fuzzy
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr "ЕÑли [code]true[/code], текÑтура отражена по вертикали."
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -63238,6 +64085,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -64378,7 +65229,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -67763,10 +68619,11 @@ msgid ""
msgstr ""
#: doc/classes/Viewport.xml
+#, fuzzy
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
-msgstr ""
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
+msgstr "ЕÑли [code]true[/code], текÑтура будет центрирована."
#: doc/classes/Viewport.xml
msgid ""
@@ -68207,11 +69064,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -68251,6 +69109,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -72170,7 +73038,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -73042,6 +73910,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -76251,8 +77129,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -76267,11 +77145,17 @@ msgstr "[Environment] мира."
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
+msgstr "Возвращает количеÑтво дорожек в анимации."
+
+#: doc/classes/World.xml
msgid "The World's visual scenario."
msgstr ""
@@ -76286,8 +77170,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -76304,6 +77188,12 @@ msgid ""
msgstr ""
#: doc/classes/World2D.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr "Возвращает количеÑтво дорожек в анимации."
+
+#: doc/classes/World2D.xml
msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
@@ -76314,6 +77204,8 @@ msgid ""
"Default environment properties for the entire scene (post-processing "
"effects, lighting and background settings)."
msgstr ""
+"СвойÑтва Ñреды по умолчанию Ð´Ð»Ñ Ð²Ñей Ñцены (Ñффекты поÑтобработки, наÑтройки "
+"оÑÐ²ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¸ фона)."
#: doc/classes/WorldEnvironment.xml
msgid ""
@@ -76334,10 +77226,12 @@ msgid ""
"The [Environment] resource used by this [WorldEnvironment], defining the "
"default properties."
msgstr ""
+"РеÑÑƒÑ€Ñ [Environment], иÑпользуемый Ñтим [WorldEnvironment], определÑющий "
+"ÑвойÑтва по умолчанию."
#: doc/classes/X509Certificate.xml
msgid "An X509 certificate (e.g. for SSL)."
-msgstr ""
+msgstr "Сертификат X509 (например, Ð´Ð»Ñ SSL)."
#: doc/classes/X509Certificate.xml
msgid ""
@@ -76351,19 +77245,23 @@ msgstr ""
#: doc/classes/X509Certificate.xml
msgid "Loads a certificate from [code]path[/code] (\"*.crt\" file)."
-msgstr ""
+msgstr "Загружает Ñертификат из [code]пути[/code] (файл \"*.crt\")."
#: doc/classes/X509Certificate.xml
msgid ""
"Saves a certificate to the given [code]path[/code] (should be a \"*.crt\" "
"file)."
msgstr ""
+"СохранÑет Ñертификат по заданному [code]пути[/code] (должно быть \"*.crt\" "
+"файлом)."
#: doc/classes/XMLParser.xml
msgid ""
"Low-level class for creating parsers for [url=https://en.wikipedia.org/wiki/"
"XML]XML[/url] files."
msgstr ""
+"Ðизкоуровневый клаÑÑ Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ð°Ñ€Ñеров Ð´Ð»Ñ [url=https://ru.wikipedia.org/"
+"wiki/XML]XML[/url] файлов."
#: doc/classes/XMLParser.xml
msgid ""
@@ -76391,24 +77289,32 @@ msgstr ""
#: doc/classes/XMLParser.xml
msgid "Gets the current line in the parsed file (currently not implemented)."
msgstr ""
+"Получает текущую Ñтроку в проанализированном файле (в наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ Ð½Ðµ "
+"реализовано)."
#: doc/classes/XMLParser.xml
msgid ""
"Gets the value of a certain attribute of the current element by name. This "
"will raise an error if the element has no such attribute."
msgstr ""
+"Получает значение определенного атрибута текущего Ñлемента по имени. Это "
+"приведет к ошибке, еÑли Ñлемент не имеет такого атрибута."
#: doc/classes/XMLParser.xml
msgid ""
"Gets the value of a certain attribute of the current element by name. This "
"will return an empty [String] if the attribute is not found."
msgstr ""
+"Получает значение определенного атрибута текущего Ñлемента по имени. Это "
+"вернет пуÑтой [String], еÑли атрибут не найден."
#: doc/classes/XMLParser.xml
msgid ""
"Gets the contents of a text node. This will raise an error in any other type "
"of node."
msgstr ""
+"Получает Ñодержимое из текÑтового узла. Это вызовет ошибку в любом другом "
+"типе узла."
#: doc/classes/XMLParser.xml
msgid ""
@@ -76430,13 +77336,15 @@ msgstr ""
#: doc/classes/XMLParser.xml
msgid "Check whether the current element has a certain attribute."
-msgstr ""
+msgstr "ПроверÑет, имеет ли текущий Ñлемент определенный атрибут."
#: doc/classes/XMLParser.xml
msgid ""
"Check whether the current element is empty (this only works for completely "
"empty tags, e.g. [code]<element \\>[/code])."
msgstr ""
+"ПроверÑет, ÑвлÑетÑÑ Ð»Ð¸ текущий Ñлемент пуÑтым (Ñто работает только Ð´Ð»Ñ "
+"полноÑтью пуÑтых тегов, например, [code]<element \\>[/code])."
#: doc/classes/XMLParser.xml
msgid "Opens an XML file for parsing. This returns an error code."
diff --git a/doc/translations/sk.po b/doc/translations/sk.po
index 08756b79d0..20caeea6c2 100644
--- a/doc/translations/sk.po
+++ b/doc/translations/sk.po
@@ -348,7 +348,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3380,6 +3380,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -3392,6 +3398,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -8367,7 +8379,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -8566,7 +8578,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -8583,10 +8598,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -8771,7 +8782,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -12357,7 +12370,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -13614,7 +13627,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -14082,7 +14095,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -14120,9 +14133,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -14141,8 +14154,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -14158,8 +14171,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -14250,9 +14263,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -19089,11 +19102,14 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
+msgid "The [Curve] that is rendered onto the texture."
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -19379,6 +19395,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
msgid "Returns the number of keys in the dictionary."
msgstr ""
@@ -21309,7 +21332,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -21317,9 +21340,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21330,9 +21367,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21445,11 +21491,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -23621,11 +23686,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -26087,7 +26152,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -26109,7 +26175,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -26915,6 +26982,12 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -26965,6 +27038,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -29355,7 +29432,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -29504,10 +29581,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -29701,24 +29774,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -29754,6 +29809,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -30061,8 +30134,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -30325,9 +30398,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -34633,9 +34706,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -35433,6 +35507,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr ""
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -35455,10 +35533,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -35493,6 +35583,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -35502,11 +35598,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -35534,7 +35638,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35598,6 +35712,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Returns the map cell size."
msgstr ""
@@ -35621,7 +35739,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35638,6 +35759,12 @@ msgstr ""
msgid "Sets the map active."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -35653,14 +35780,56 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the region's navigation layers."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the map for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the navigation mesh for the region."
msgstr ""
@@ -35669,6 +35838,10 @@ msgstr ""
msgid "Sets the global transformation for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -35678,9 +35851,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -35698,7 +35878,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35713,11 +35901,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35758,6 +35959,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -35770,7 +35977,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35797,6 +36010,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -35859,9 +36079,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -35877,13 +36104,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr ""
@@ -35903,6 +36123,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -35933,8 +36160,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -35956,9 +36183,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -35972,14 +36199,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -35991,7 +36218,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36019,29 +36246,29 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
+msgid ""
+"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
+"is within [member agent_max_climb] of a walkable neighbor."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -36060,7 +36287,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -36123,7 +36350,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36144,13 +36371,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36200,8 +36427,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -36218,8 +36445,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -36248,10 +36488,34 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "The [NavigationMesh] resource to use."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -36268,7 +36532,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -36308,7 +36574,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -36388,6 +36656,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -36424,6 +36700,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -36431,6 +36731,22 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "The [NavigationPolygon] resource to use."
+msgstr ""
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -36440,11 +36756,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36502,6 +36822,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -38265,7 +38591,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -38389,7 +38721,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -40358,8 +40690,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -40542,9 +40881,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -44654,7 +44993,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44808,7 +45147,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44863,7 +45202,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44916,7 +45255,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44965,7 +45304,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45017,7 +45356,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45069,7 +45408,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -46705,7 +47044,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -46950,6 +47298,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -47175,6 +47535,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -47383,6 +47935,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -47650,6 +48394,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -49152,7 +49939,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -49504,8 +50290,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -51298,6 +52085,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -51507,8 +52310,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -53035,7 +53838,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -54756,7 +55560,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -60857,6 +61666,10 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -60963,6 +61776,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -62094,7 +62911,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -65327,8 +66149,8 @@ msgstr ""
#: doc/classes/Viewport.xml
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
#: doc/classes/Viewport.xml
@@ -65765,11 +66587,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -65809,6 +66632,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -69686,7 +70519,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -70554,6 +71387,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -73750,8 +74593,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -73766,8 +74609,13 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
+msgstr ""
+
+#: doc/classes/World.xml
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
msgstr ""
#: doc/classes/World.xml
@@ -73785,8 +74633,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -73804,6 +74652,11 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr ""
+
+#: doc/classes/World2D.xml
+msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
msgstr ""
diff --git a/doc/translations/sr_Cyrl.po b/doc/translations/sr_Cyrl.po
index d5e188a57f..4d48a80e07 100644
--- a/doc/translations/sr_Cyrl.po
+++ b/doc/translations/sr_Cyrl.po
@@ -359,7 +359,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3391,6 +3391,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -3403,6 +3409,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -8378,7 +8390,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -8577,7 +8589,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -8594,10 +8609,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -8782,7 +8793,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -12368,7 +12381,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -13625,7 +13638,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -14093,7 +14106,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -14131,9 +14144,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -14152,8 +14165,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -14169,8 +14182,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -14261,9 +14274,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -19100,11 +19113,14 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
+msgid "The [Curve] that is rendered onto the texture."
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -19390,6 +19406,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
msgid "Returns the number of keys in the dictionary."
msgstr ""
@@ -21320,7 +21343,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -21328,9 +21351,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21341,9 +21378,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21456,11 +21502,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -23632,11 +23697,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -26098,7 +26163,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -26120,7 +26186,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -26926,6 +26993,12 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -26976,6 +27049,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -29366,7 +29443,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -29515,10 +29592,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -29712,24 +29785,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -29765,6 +29820,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -30072,8 +30145,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -30336,9 +30409,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -34644,9 +34717,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -35444,6 +35518,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr ""
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -35466,10 +35544,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -35504,6 +35594,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -35513,11 +35609,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -35545,7 +35649,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35609,6 +35723,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Returns the map cell size."
msgstr ""
@@ -35632,7 +35750,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35649,6 +35770,12 @@ msgstr ""
msgid "Sets the map active."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -35664,14 +35791,56 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the region's navigation layers."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the map for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the navigation mesh for the region."
msgstr ""
@@ -35680,6 +35849,10 @@ msgstr ""
msgid "Sets the global transformation for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -35689,9 +35862,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -35709,7 +35889,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35724,11 +35912,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35769,6 +35970,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -35781,7 +35988,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35808,6 +36021,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -35870,9 +36090,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -35888,13 +36115,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr ""
@@ -35914,6 +36134,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -35944,8 +36171,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -35967,9 +36194,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -35983,14 +36210,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36002,7 +36229,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36030,29 +36257,29 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
+msgid ""
+"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
+"is within [member agent_max_climb] of a walkable neighbor."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -36071,7 +36298,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -36134,7 +36361,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36155,13 +36382,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36211,8 +36438,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -36229,8 +36456,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -36259,10 +36499,34 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "The [NavigationMesh] resource to use."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -36279,7 +36543,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -36319,7 +36585,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -36399,6 +36667,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -36435,6 +36711,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -36442,6 +36742,22 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "The [NavigationPolygon] resource to use."
+msgstr ""
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -36451,11 +36767,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36513,6 +36833,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -38276,7 +38602,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -38400,7 +38732,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -40369,8 +40701,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -40553,9 +40892,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -44665,7 +45004,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44819,7 +45158,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44874,7 +45213,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44927,7 +45266,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44976,7 +45315,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45028,7 +45367,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45080,7 +45419,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -46716,7 +47055,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -46961,6 +47309,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -47186,6 +47546,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -47394,6 +47946,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -47661,6 +48405,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -49163,7 +49950,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -49515,8 +50301,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -51309,6 +52096,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -51518,8 +52321,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -53046,7 +53849,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -54767,7 +55571,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -60868,6 +61677,10 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -60974,6 +61787,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -62105,7 +62922,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -65338,8 +66160,8 @@ msgstr ""
#: doc/classes/Viewport.xml
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
#: doc/classes/Viewport.xml
@@ -65776,11 +66598,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -65820,6 +66643,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -69697,7 +70530,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -70565,6 +71398,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -73761,8 +74604,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -73777,8 +74620,13 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
+msgstr ""
+
+#: doc/classes/World.xml
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
msgstr ""
#: doc/classes/World.xml
@@ -73796,8 +74644,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -73815,6 +74663,11 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr ""
+
+#: doc/classes/World2D.xml
+msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
msgstr ""
diff --git a/doc/translations/sv.po b/doc/translations/sv.po
index e44a073cde..4836ca862f 100644
--- a/doc/translations/sv.po
+++ b/doc/translations/sv.po
@@ -348,7 +348,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3380,6 +3380,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -3392,6 +3398,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -8367,7 +8379,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -8566,7 +8578,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -8583,10 +8598,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -8771,7 +8782,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -12357,7 +12370,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -13614,7 +13627,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -14082,7 +14095,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -14120,9 +14133,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -14141,8 +14154,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -14158,8 +14171,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -14250,9 +14263,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -19089,11 +19102,14 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
+msgid "The [Curve] that is rendered onto the texture."
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -19379,6 +19395,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
msgid "Returns the number of keys in the dictionary."
msgstr ""
@@ -21309,7 +21332,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -21317,9 +21340,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21330,9 +21367,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21445,11 +21491,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -23618,11 +23683,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -26084,7 +26149,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -26106,7 +26172,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -26912,6 +26979,12 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -26962,6 +27035,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -29352,7 +29429,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -29501,10 +29578,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -29698,24 +29771,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -29751,6 +29806,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -30058,8 +30131,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -30322,9 +30395,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -34630,9 +34703,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -35430,6 +35504,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr ""
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -35452,10 +35530,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -35490,6 +35580,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -35499,11 +35595,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -35531,7 +35635,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35595,6 +35709,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Returns the map cell size."
msgstr ""
@@ -35618,7 +35736,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35635,6 +35756,12 @@ msgstr ""
msgid "Sets the map active."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -35650,14 +35777,56 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the region's navigation layers."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the map for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the navigation mesh for the region."
msgstr ""
@@ -35666,6 +35835,10 @@ msgstr ""
msgid "Sets the global transformation for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -35675,9 +35848,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -35695,7 +35875,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35710,11 +35898,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35755,6 +35956,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -35767,7 +35974,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35794,6 +36007,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -35856,9 +36076,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -35874,13 +36101,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr ""
@@ -35900,6 +36120,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -35930,8 +36157,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -35953,9 +36180,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -35969,14 +36196,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -35988,7 +36215,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36016,29 +36243,29 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
+msgid ""
+"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
+"is within [member agent_max_climb] of a walkable neighbor."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -36057,7 +36284,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -36120,7 +36347,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36141,13 +36368,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36197,8 +36424,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -36215,8 +36442,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -36245,10 +36485,34 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "The [NavigationMesh] resource to use."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -36265,7 +36529,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -36305,7 +36571,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -36385,6 +36653,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -36421,6 +36697,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -36428,6 +36728,22 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "The [NavigationPolygon] resource to use."
+msgstr ""
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -36437,11 +36753,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36499,6 +36819,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -38262,7 +38588,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -38386,7 +38718,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -40355,8 +40687,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -40539,9 +40878,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -44651,7 +44990,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44805,7 +45144,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44860,7 +45199,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44913,7 +45252,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44962,7 +45301,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45014,7 +45353,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45066,7 +45405,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -46702,7 +47041,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -46947,6 +47295,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -47172,6 +47532,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -47380,6 +47932,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -47647,6 +48391,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -49149,7 +49936,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -49501,8 +50287,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -51295,6 +52082,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -51504,8 +52307,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -53032,7 +53835,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -54753,7 +55557,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -60854,6 +61663,10 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -60960,6 +61773,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -62091,7 +62908,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -65324,8 +66146,8 @@ msgstr ""
#: doc/classes/Viewport.xml
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
#: doc/classes/Viewport.xml
@@ -65762,11 +66584,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -65806,6 +66629,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -69683,7 +70516,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -70551,6 +71384,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -73747,8 +74590,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -73763,8 +74606,13 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
+msgstr ""
+
+#: doc/classes/World.xml
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
msgstr ""
#: doc/classes/World.xml
@@ -73782,8 +74630,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -73801,6 +74649,11 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr ""
+
+#: doc/classes/World2D.xml
+msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
msgstr ""
diff --git a/doc/translations/th.po b/doc/translations/th.po
index 11607b058a..0bdffafffa 100644
--- a/doc/translations/th.po
+++ b/doc/translations/th.po
@@ -426,7 +426,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3474,6 +3474,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -3486,6 +3492,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -8472,7 +8484,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -8671,7 +8683,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -8688,10 +8703,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -8876,7 +8887,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -12465,7 +12478,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -13722,7 +13735,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -14190,7 +14203,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -14228,9 +14241,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -14249,8 +14262,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -14266,8 +14279,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -14358,9 +14371,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -19198,11 +19211,15 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
-msgstr ""
+#, fuzzy
+msgid "The [Curve] that is rendered onto the texture."
+msgstr "คืนค่า arc tanh ของพารามิเตอร์"
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -19488,6 +19505,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
msgid "Returns the number of keys in the dictionary."
msgstr ""
@@ -21418,7 +21442,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -21426,9 +21450,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21439,9 +21477,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21554,11 +21601,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -23731,11 +23797,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -26201,7 +26267,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -26223,7 +26290,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -27030,6 +27098,12 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -27080,6 +27154,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -29472,7 +29550,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -29629,10 +29707,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -29838,24 +29912,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -29891,6 +29947,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -30214,8 +30288,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -30478,9 +30552,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -34802,9 +34876,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -35602,6 +35677,11 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+#, fuzzy
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr "คืนค่าผà¸à¸œà¸±à¸™à¸£à¸¹à¸—สองของพารามิเตอร์"
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -35624,10 +35704,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -35662,6 +35754,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -35671,11 +35769,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -35703,7 +35809,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35770,6 +35886,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Returns the map cell size."
@@ -35794,7 +35914,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35812,6 +35935,12 @@ msgstr ""
msgid "Sets the map active."
msgstr "คืนค่าà¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ค่าของลำโพง"
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -35827,15 +35956,61 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr "คืนค่าà¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ค่าของลำโพง"
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
+msgid "Returns the region's navigation layers."
+msgstr "คืนค่าà¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ค่าของลำโพง"
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr "คืนค่าà¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ค่าของลำโพง"
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr "คืนค่าà¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ค่าของลำโพง"
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
msgid "Sets the map for the region."
msgstr "คืนค่าà¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ค่าของลำโพง"
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Sets the navigation mesh for the region."
@@ -35845,6 +36020,11 @@ msgstr "คืนค่าผà¸à¸œà¸±à¸™à¸£à¸¹à¸—สองของพารา
msgid "Sets the global transformation for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr "คืนค่าà¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ค่าของลำโพง"
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -35854,9 +36034,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -35874,7 +36061,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35889,11 +36084,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35935,6 +36143,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -35947,7 +36161,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35974,6 +36194,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -36036,9 +36263,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -36054,13 +36288,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
#, fuzzy
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr "คืนค่าผà¸à¸œà¸±à¸™à¸£à¸¹à¸—สองของพารามิเตอร์"
@@ -36081,6 +36308,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -36111,8 +36345,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36134,9 +36368,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36150,14 +36384,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36169,7 +36403,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36197,29 +36431,29 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
+msgid ""
+"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
+"is within [member agent_max_climb] of a walkable neighbor."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -36238,7 +36472,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -36301,7 +36535,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36322,13 +36556,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36378,8 +36612,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -36396,8 +36630,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -36426,10 +36673,34 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "The [NavigationMesh] resource to use."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -36446,7 +36717,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -36486,7 +36759,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -36566,6 +36841,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -36602,6 +36885,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -36609,6 +36916,22 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "The [NavigationPolygon] resource to use."
+msgstr ""
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -36618,11 +36941,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36683,6 +37010,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -38496,7 +38829,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -38620,7 +38959,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -40593,8 +40932,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -40777,9 +41123,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -44894,7 +45240,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45048,7 +45394,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45103,7 +45449,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45156,7 +45502,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45205,7 +45551,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45257,7 +45603,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45309,7 +45655,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -46947,7 +47293,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -47192,6 +47547,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -47422,6 +47789,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -47630,6 +48189,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -47897,6 +48648,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -49400,7 +50194,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -49752,8 +50545,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -51548,6 +52342,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -51757,8 +52567,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -53285,7 +54095,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -55006,7 +55817,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -61114,6 +61930,10 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -61220,6 +62040,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -62351,7 +63175,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -65597,8 +66426,8 @@ msgstr ""
#: doc/classes/Viewport.xml
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
#: doc/classes/Viewport.xml
@@ -66035,11 +66864,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -66079,6 +66909,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -69960,7 +70800,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -70828,6 +71668,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -74027,8 +74877,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -74043,11 +74893,17 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
+msgstr "คืนค่าผà¸à¸œà¸±à¸™à¸£à¸¹à¸—สองของพารามิเตอร์"
+
+#: doc/classes/World.xml
msgid "The World's visual scenario."
msgstr ""
@@ -74062,8 +74918,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -74080,6 +74936,12 @@ msgid ""
msgstr ""
#: doc/classes/World2D.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr "คืนค่าผà¸à¸œà¸±à¸™à¸£à¸¹à¸—สองของพารามิเตอร์"
+
+#: doc/classes/World2D.xml
msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
diff --git a/doc/translations/tl.po b/doc/translations/tl.po
index 311ce61df8..5ced19938d 100644
--- a/doc/translations/tl.po
+++ b/doc/translations/tl.po
@@ -387,7 +387,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3456,6 +3456,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -3468,6 +3474,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -8443,7 +8455,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -8642,7 +8654,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -8659,10 +8674,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -8847,7 +8858,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -12440,7 +12453,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -13697,7 +13710,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -14165,7 +14178,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -14203,9 +14216,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -14224,8 +14237,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -14241,8 +14254,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -14333,9 +14346,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -19172,11 +19185,14 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
+msgid "The [Curve] that is rendered onto the texture."
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -19462,6 +19478,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
msgid "Returns the number of keys in the dictionary."
msgstr ""
@@ -21395,7 +21418,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -21403,9 +21426,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21416,9 +21453,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21531,11 +21577,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -23707,11 +23772,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -26173,7 +26238,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -26195,7 +26261,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -27001,6 +27068,12 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -27051,6 +27124,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -29441,7 +29518,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -29590,10 +29667,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -29787,24 +29860,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -29840,6 +29895,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -30147,8 +30220,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -30411,9 +30484,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -34731,9 +34804,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -35531,6 +35605,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr ""
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -35553,10 +35631,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -35591,6 +35681,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -35600,11 +35696,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -35635,7 +35739,17 @@ msgstr ""
"so-sort ay hindi pinapagana."
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35699,6 +35813,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Returns the map cell size."
msgstr ""
@@ -35722,7 +35840,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35742,6 +35863,12 @@ msgstr ""
msgid "Sets the map active."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -35757,14 +35884,62 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr ""
+"Kung [code]true[/code], ang mga child nodes ay inaayos, kung hindi ang pag-"
+"so-sort ay hindi pinapagana."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the region's navigation layers."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr ""
+"Kung [code]true[/code], ang mga child nodes ay inaayos, kung hindi ang pag-"
+"so-sort ay hindi pinapagana."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the map for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the navigation mesh for the region."
msgstr ""
@@ -35773,6 +35948,10 @@ msgstr ""
msgid "Sets the global transformation for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -35782,9 +35961,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -35802,7 +35988,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35817,11 +36011,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35862,6 +36069,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -35874,7 +36087,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35901,6 +36120,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -35963,9 +36189,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -35981,13 +36214,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr ""
@@ -36007,6 +36233,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -36037,8 +36270,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36060,9 +36293,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36076,14 +36309,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36095,7 +36328,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36123,29 +36356,29 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
+msgid ""
+"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
+"is within [member agent_max_climb] of a walkable neighbor."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -36164,7 +36397,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -36227,7 +36460,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36248,13 +36481,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36304,8 +36537,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -36322,8 +36555,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -36352,10 +36598,34 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "The [NavigationMesh] resource to use."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -36372,7 +36642,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -36412,7 +36684,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -36492,6 +36766,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -36528,6 +36810,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -36535,6 +36841,22 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "The [NavigationPolygon] resource to use."
+msgstr ""
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -36544,11 +36866,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36606,6 +36932,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -38369,7 +38701,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -38493,7 +38831,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -40465,8 +40803,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -40649,9 +40994,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -44761,7 +45106,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44915,7 +45260,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -44970,7 +45315,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45023,7 +45368,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45072,7 +45417,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45124,7 +45469,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45176,7 +45521,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -46812,7 +47157,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -47057,6 +47411,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -47282,6 +47648,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -47490,6 +48048,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -47757,6 +48507,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -49259,7 +50052,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -49611,8 +50403,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -51405,6 +52198,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -51614,8 +52423,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -53142,7 +53951,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -54863,7 +55673,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -60967,6 +61782,13 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+#, fuzzy
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr ""
+"Kung [code]true[/code], ang mga child nodes ay inaayos, kung hindi ang pag-"
+"so-sort ay hindi pinapagana."
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -61073,6 +61895,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -62204,7 +63030,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -65440,8 +66271,8 @@ msgstr ""
#: doc/classes/Viewport.xml
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
#: doc/classes/Viewport.xml
@@ -65878,11 +66709,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -65922,6 +66754,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -69799,7 +70641,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -70667,6 +71509,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -73863,8 +74715,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -73879,8 +74731,13 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
+msgstr ""
+
+#: doc/classes/World.xml
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
msgstr ""
#: doc/classes/World.xml
@@ -73898,8 +74755,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -73917,6 +74774,11 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr ""
+
+#: doc/classes/World2D.xml
+msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
msgstr ""
diff --git a/doc/translations/tr.po b/doc/translations/tr.po
index 6934fd1940..d7cc5bd8df 100644
--- a/doc/translations/tr.po
+++ b/doc/translations/tr.po
@@ -17,12 +17,13 @@
# ali aydın <alimxaydin@gmail.com>, 2021.
# yigithan <yigithanermet38@gmail.com>, 2021.
# Yusuf Yavuzyigit <yusufyavuzyigit25@gmail.com>, 2021, 2022.
+# Ramazan Aslan <legendraslan@gmail.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine class reference\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2022-04-03 08:10+0000\n"
-"Last-Translator: Yusuf Yavuzyigit <yusufyavuzyigit25@gmail.com>\n"
+"PO-Revision-Date: 2022-06-13 03:39+0000\n"
+"Last-Translator: Ramazan Aslan <legendraslan@gmail.com>\n"
"Language-Team: Turkish <https://hosted.weblate.org/projects/godot-engine/"
"godot-class-reference/tr/>\n"
"Language: tr\n"
@@ -30,7 +31,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.12-dev\n"
+"X-Generator: Weblate 4.13-dev\n"
#: doc/tools/make_rst.py
msgid "Description"
@@ -73,13 +74,12 @@ msgid "Method Descriptions"
msgstr "Yöntem Açıklamaları"
#: doc/tools/make_rst.py
-#, fuzzy
msgid "Theme Property Descriptions"
-msgstr "Özellik Açıklamaları"
+msgstr "Tema Özellik Açıklamaları"
#: doc/tools/make_rst.py
msgid "Inherits:"
-msgstr ""
+msgstr "Miras:"
#: doc/tools/make_rst.py
msgid "Inherited By:"
@@ -99,7 +99,7 @@ msgstr ""
#: doc/tools/make_rst.py
msgid "value"
-msgstr ""
+msgstr "deÄŸer"
#: doc/tools/make_rst.py
msgid "Getter"
@@ -109,17 +109,23 @@ msgstr ""
msgid ""
"This method should typically be overridden by the user to have any effect."
msgstr ""
+"Bu yöntemin herhangi bir etkiye sahip olması için genellikle kullanıcı "
+"tarafından geçersiz kılınması gerekir."
#: doc/tools/make_rst.py
msgid ""
"This method has no side effects. It doesn't modify any of the instance's "
"member variables."
msgstr ""
+"Bu yöntemin hiçbir yan etkisi yoktur. Örneğin üye değişkenlerinden hiçbirini "
+"deÄŸiÅŸtirmez."
#: doc/tools/make_rst.py
msgid ""
"This method accepts any number of arguments after the ones described here."
msgstr ""
+"Bu yöntem, burada açıklananlardan sonra herhangi bir sayıda argüman kabul "
+"edebilir."
#: doc/tools/make_rst.py
msgid "This method is used to construct a type."
@@ -492,7 +498,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -4152,6 +4158,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -4164,6 +4176,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -9141,7 +9159,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -9340,7 +9358,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -9357,10 +9378,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -9545,7 +9562,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -13145,7 +13164,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -14402,7 +14421,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -14870,7 +14889,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -14908,9 +14927,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -14929,8 +14948,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -14946,8 +14965,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -15038,9 +15057,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -19888,11 +19907,15 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
-msgstr ""
+#, fuzzy
+msgid "The [Curve] that is rendered onto the texture."
+msgstr "Verilen değerin sinüsünü döndürür."
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -20178,6 +20201,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
#, fuzzy
msgid "Returns the number of keys in the dictionary."
msgstr "İki vektörün kalanını döndürür."
@@ -22111,7 +22141,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -22119,9 +22149,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -22132,9 +22176,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -22247,11 +22300,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -24428,11 +24500,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -26906,7 +26978,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -26928,7 +27001,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -27738,6 +27812,14 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+#, fuzzy
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+"Eğer [code]true[/code] ise düğümler sıraya sokulur, yoksa sıraya sokulmaz."
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -27788,6 +27870,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -30180,7 +30266,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -30329,10 +30415,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -30526,24 +30608,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -30579,6 +30643,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -30886,8 +30968,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -31150,9 +31232,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -35474,9 +35556,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -36281,6 +36364,11 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+#, fuzzy
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr "Verilen değerin sinüsünü döndürür."
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -36303,10 +36391,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -36341,6 +36441,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -36350,11 +36456,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36384,7 +36498,17 @@ msgstr ""
"Eğer [code]true[/code] ise düğümler sıraya sokulur, yoksa sıraya sokulmaz."
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -36454,6 +36578,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Returns the map cell size."
@@ -36478,7 +36606,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -36498,6 +36629,12 @@ msgstr ""
msgid "Sets the map active."
msgstr "Verilen bir değerin ark-sinüsünü döndürür."
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -36513,15 +36650,61 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr "İki vektörün kalanını döndürür."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
+msgid "Returns the region's navigation layers."
+msgstr "Verilen değerin sinüsünü döndürür."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr "Verilen değerin sinüsünü döndürür."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr "Verilen değerin sinüsünü döndürür."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
msgid "Sets the map for the region."
msgstr "Verilen değerin sinüsünü döndürür."
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Sets the navigation mesh for the region."
@@ -36531,6 +36714,11 @@ msgstr "[NavigationMeshGenerator] tekil nesnesi."
msgid "Sets the global transformation for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr "Verilen değerin sinüsünü döndürür."
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -36540,9 +36728,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -36560,7 +36755,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -36576,11 +36779,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -36622,6 +36838,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -36634,7 +36856,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -36661,6 +36889,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -36723,9 +36958,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -36742,13 +36984,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
#, fuzzy
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr "Verilen değerin sinüsünü döndürür."
@@ -36769,6 +37004,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -36799,8 +37041,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36823,9 +37065,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36839,14 +37081,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36858,7 +37100,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36886,13 +37128,7 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
-msgstr ""
-
-#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36904,13 +37140,19 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"is within [member agent_max_climb] of a walkable neighbor."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml
+msgid ""
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -36929,7 +37171,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -36992,7 +37234,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -37014,13 +37256,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -37070,8 +37312,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -37089,8 +37331,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -37119,11 +37374,35 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
#, fuzzy
msgid "The [NavigationMesh] resource to use."
msgstr "[NavigationMeshGenerator] tekil nesnesi."
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -37140,7 +37419,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -37181,7 +37462,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -37262,6 +37545,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -37298,6 +37589,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -37305,6 +37620,23 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+#, fuzzy
+msgid "The [NavigationPolygon] resource to use."
+msgstr "[NavigationMeshGenerator] tekil nesnesi."
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -37314,11 +37646,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -37380,6 +37716,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -39143,7 +39485,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -39267,7 +39615,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -41245,8 +41593,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -41429,9 +41784,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -45569,7 +45924,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45723,7 +46078,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45778,7 +46133,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45831,7 +46186,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45880,7 +46235,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45932,7 +46287,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45984,7 +46339,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -47623,7 +47978,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -47868,6 +48232,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -48093,6 +48469,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -48301,6 +48869,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -48568,6 +49328,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -50070,7 +50873,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -50427,8 +51229,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -52225,6 +53028,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -52434,8 +53253,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -53962,7 +54781,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -55683,7 +56503,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -61799,6 +62624,12 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+#, fuzzy
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr ""
+"Eğer [code]true[/code] ise düğümler sıraya sokulur, yoksa sıraya sokulmaz."
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -61905,6 +62736,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -63036,7 +63871,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -66281,10 +67121,12 @@ msgid ""
msgstr ""
#: doc/classes/Viewport.xml
+#, fuzzy
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
+"Eğer [code]true[/code] ise düğümler sıraya sokulur, yoksa sıraya sokulmaz."
#: doc/classes/Viewport.xml
msgid ""
@@ -66722,11 +67564,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -66766,6 +67609,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -70660,7 +71513,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -71534,6 +72387,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -74735,8 +75598,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -74751,11 +75614,17 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
+msgstr "Verilen değerin sinüsünü döndürür."
+
+#: doc/classes/World.xml
msgid "The World's visual scenario."
msgstr ""
@@ -74770,8 +75639,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -74788,6 +75657,12 @@ msgid ""
msgstr ""
#: doc/classes/World2D.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr "Verilen değerin sinüsünü döndürür."
+
+#: doc/classes/World2D.xml
msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
diff --git a/doc/translations/uk.po b/doc/translations/uk.po
index 6fe0b45ed0..22271dc2ea 100644
--- a/doc/translations/uk.po
+++ b/doc/translations/uk.po
@@ -17,7 +17,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine class reference\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2022-05-29 02:36+0000\n"
+"PO-Revision-Date: 2022-06-14 15:48+0000\n"
"Last-Translator: МироÑлав <hlopukmyroslav@gmail.com>\n"
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/godot-engine/"
"godot-class-reference/uk/>\n"
@@ -477,7 +477,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3530,6 +3530,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -3542,6 +3548,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -3926,7 +3938,7 @@ msgstr ""
#: doc/classes/AABB.xml doc/classes/Rect2.xml doc/classes/Vector2.xml
#: doc/classes/Vector3.xml
msgid "Vector math"
-msgstr ""
+msgstr "Векторна математика"
#: doc/classes/AABB.xml doc/classes/Rect2.xml doc/classes/Vector2.xml
#: doc/classes/Vector3.xml
@@ -8525,7 +8537,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -8724,7 +8736,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -8741,10 +8756,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -8929,7 +8940,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -12524,7 +12537,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -13781,7 +13794,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -14250,7 +14263,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -14288,9 +14301,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -14309,8 +14322,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -14326,8 +14339,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -14418,9 +14431,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -19266,11 +19279,15 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
-msgstr ""
+#, fuzzy
+msgid "The [Curve] that is rendered onto the texture."
+msgstr "Повертає ÑÐ¸Ð½ÑƒÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°."
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -19556,6 +19573,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
#, fuzzy
msgid "Returns the number of keys in the dictionary."
msgstr "Повертає лишок за двома векторами."
@@ -21488,7 +21512,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -21496,9 +21520,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21509,9 +21547,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21624,11 +21671,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -23799,11 +23865,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -26272,7 +26338,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -26294,7 +26361,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -27108,6 +27176,12 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -27158,6 +27232,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -29550,7 +29628,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -29699,10 +29777,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -29896,24 +29970,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -29949,6 +30005,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -30256,8 +30330,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -30520,9 +30594,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -30530,7 +30604,7 @@ msgstr ""
#: doc/classes/InputEventMouseMotion.xml
msgid "Mouse and input coordinates"
-msgstr ""
+msgstr "Мишка Ñ– координати введеннÑ"
#: doc/classes/InputEventMouseMotion.xml
msgid ""
@@ -34834,9 +34908,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -35642,6 +35717,11 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+#, fuzzy
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr "Повертає ÑÐ¸Ð½ÑƒÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°."
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -35664,10 +35744,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -35702,6 +35794,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -35711,11 +35809,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -35743,7 +35849,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35813,6 +35929,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Returns the map cell size."
@@ -35837,7 +35957,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35856,6 +35979,12 @@ msgstr "Повертає коÑÐ¸Ð½ÑƒÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°."
msgid "Sets the map active."
msgstr "Повертає аркÑÐ¸Ð½ÑƒÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°."
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -35871,15 +36000,61 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr "ОбчиÑлює векторний добуток двох векторів та [code]with[/code]."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
+msgid "Returns the region's navigation layers."
+msgstr "Повертає ÑÐ¸Ð½ÑƒÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr "ОбчиÑлює векторний добуток двох векторів та [code]with[/code]."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr "ОбчиÑлює векторний добуток цього вектора Ñ– [code]b[/code]."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
msgid "Sets the map for the region."
msgstr "Повертає ÑÐ¸Ð½ÑƒÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°."
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Sets the navigation mesh for the region."
@@ -35890,6 +36065,11 @@ msgstr "Повертає значеннÑ, Ñке Ñ” протилежним до
msgid "Sets the global transformation for the region."
msgstr "ОбчиÑлює векторний добуток цього вектора Ñ– [code]b[/code]."
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr "ОбчиÑлює векторний добуток цього вектора Ñ– [code]b[/code]."
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -35899,9 +36079,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -35919,7 +36106,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35935,11 +36130,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35981,6 +36189,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -35993,7 +36207,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -36020,6 +36240,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -36082,9 +36309,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -36101,13 +36335,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
#, fuzzy
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr "Повертає ÑÐ¸Ð½ÑƒÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°."
@@ -36128,6 +36355,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -36158,8 +36392,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36182,9 +36416,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36198,14 +36432,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36217,7 +36451,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36245,29 +36479,29 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
+msgid ""
+"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
+"is within [member agent_max_climb] of a walkable neighbor."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -36286,7 +36520,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -36349,7 +36583,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36371,13 +36605,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36427,8 +36661,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -36446,8 +36680,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -36476,10 +36723,34 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "The [NavigationMesh] resource to use."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -36496,7 +36767,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -36537,7 +36810,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -36618,6 +36893,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -36654,6 +36937,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -36661,6 +36968,22 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "The [NavigationPolygon] resource to use."
+msgstr ""
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -36670,11 +36993,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36736,6 +37063,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -36998,7 +37331,7 @@ msgstr ""
#: doc/classes/NetworkedMultiplayerPeer.xml
msgid "High-level multiplayer"
-msgstr ""
+msgstr "Мультиплеєр виÑокого рівнÑ"
#: doc/classes/NetworkedMultiplayerPeer.xml
msgid "WebRTC Signaling Demo"
@@ -38499,7 +38832,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -38623,7 +38962,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -40600,8 +40939,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -40784,9 +41130,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -44916,7 +45262,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45070,7 +45416,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45125,7 +45471,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45178,7 +45524,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45227,7 +45573,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45279,7 +45625,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45331,7 +45677,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -46970,7 +47316,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -47215,6 +47570,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -47440,6 +47807,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -47648,6 +48207,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -47915,6 +48666,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -49417,7 +50211,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -49685,7 +50478,7 @@ msgstr ""
#: doc/classes/RandomNumberGenerator.xml
msgid "Random number generation"
-msgstr ""
+msgstr "Ð“ÐµÐ½ÐµÑ€Ð°Ñ†Ñ–Ñ Ð²Ð¸Ð¿Ð°Ð´ÐºÐ¾Ð²Ð¸Ñ… чиÑел"
#: doc/classes/RandomNumberGenerator.xml
msgid ""
@@ -49769,8 +50562,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -51565,6 +52359,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -51774,8 +52584,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -53302,7 +54112,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -55024,7 +55835,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -60902,7 +61718,7 @@ msgstr ""
#: doc/classes/Thread.xml
msgid "Using multiple threads"
-msgstr ""
+msgstr "ВикориÑÑ‚Ð°Ð½Ð½Ñ ÐºÑ–Ð»ÑŒÐºÐ¾Ñ… потоків"
#: doc/classes/Thread.xml
msgid "Thread-safe APIs"
@@ -61140,6 +61956,11 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+#, fuzzy
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr "Повертає коÑÐ¸Ð½ÑƒÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°."
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -61246,6 +62067,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -62377,7 +63202,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -65623,8 +66453,8 @@ msgstr ""
#: doc/classes/Viewport.xml
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
#: doc/classes/Viewport.xml
@@ -66061,11 +66891,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -66105,6 +66936,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -70001,7 +70842,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -70869,6 +71710,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -74072,8 +74923,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -74088,11 +74939,17 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
+msgstr "Повертає ÑÐ¸Ð½ÑƒÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°."
+
+#: doc/classes/World.xml
msgid "The World's visual scenario."
msgstr ""
@@ -74107,8 +74964,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -74125,6 +74982,12 @@ msgid ""
msgstr ""
#: doc/classes/World2D.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr "Повертає ÑÐ¸Ð½ÑƒÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°."
+
+#: doc/classes/World2D.xml
msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
diff --git a/doc/translations/vi.po b/doc/translations/vi.po
index 2a636437bd..b813d4a4a5 100644
--- a/doc/translations/vi.po
+++ b/doc/translations/vi.po
@@ -477,7 +477,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3807,6 +3807,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -3819,6 +3825,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -8820,7 +8832,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -9019,7 +9031,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -9036,10 +9051,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -9224,7 +9235,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -12820,7 +12833,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -14078,7 +14091,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -14546,7 +14559,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -14584,9 +14597,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -14605,8 +14618,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -14622,8 +14635,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -14714,9 +14727,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -19565,11 +19578,15 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
-msgstr ""
+#, fuzzy
+msgid "The [Curve] that is rendered onto the texture."
+msgstr "Trả vỠsin của tham số."
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -19855,6 +19872,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
#, fuzzy
msgid "Returns the number of keys in the dictionary."
msgstr "Trả vỠphần dư của hai vector."
@@ -21787,7 +21811,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -21795,9 +21819,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21808,9 +21846,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21923,11 +21970,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -24101,11 +24167,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -26573,7 +26639,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -26595,7 +26662,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -27404,6 +27472,13 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+#, fuzzy
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr "Nếu [code]true[/code], há»a tiết sẽ được căn ở trung tâm."
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -27454,6 +27529,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -29847,7 +29926,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -29996,10 +30075,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -30193,24 +30268,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -30246,6 +30303,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -30553,8 +30628,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -30817,9 +30892,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -35134,9 +35209,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -35941,6 +36017,11 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+#, fuzzy
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr "Trả vỠsin của tham số."
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -35963,10 +36044,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -36001,6 +36094,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -36010,11 +36109,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36043,7 +36150,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr "Nếu [code]true[/code], há»a tiết sẽ được căn ở trung tâm."
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -36113,6 +36230,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Returns the map cell size."
@@ -36137,7 +36258,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -36156,6 +36280,12 @@ msgstr "Nếu [code]true[/code], há»a tiết sẽ được căn ở trung tâm.
msgid "Sets the map active."
msgstr "Trả vỠ[Texture2D] của khung hình được cho."
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -36171,15 +36301,61 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr "Trả vỠphần dư của hai vector."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
+msgid "Returns the region's navigation layers."
+msgstr "Trả vỠsin của tham số."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr "Trả vỠsin của tham số."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr "Trả vỠsin của tham số."
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
msgid "Sets the map for the region."
msgstr "Trả vỠsin của tham số."
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Sets the navigation mesh for the region."
@@ -36189,6 +36365,11 @@ msgstr "ÄÆ¡n Nhất [NavigationMeshGenerator]."
msgid "Sets the global transformation for the region."
msgstr ""
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr "Trả vỠsin của tham số."
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -36198,9 +36379,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -36218,7 +36406,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -36234,11 +36430,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -36281,6 +36490,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -36293,7 +36508,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -36320,6 +36541,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -36382,9 +36610,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -36401,13 +36636,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
#, fuzzy
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr "Trả vỠsin của tham số."
@@ -36428,6 +36656,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -36458,8 +36693,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36482,9 +36717,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36498,14 +36733,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36517,7 +36752,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36545,13 +36780,7 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
-msgstr ""
-
-#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36562,13 +36791,19 @@ msgstr "Nếu [code]true[/code] thì lật ngang há»a tiết."
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"is within [member agent_max_climb] of a walkable neighbor."
+msgstr ""
+
+#: doc/classes/NavigationMesh.xml
+msgid ""
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -36587,7 +36822,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -36650,7 +36885,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36672,13 +36907,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36728,8 +36963,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -36747,8 +36982,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -36777,11 +37025,35 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
#, fuzzy
msgid "The [NavigationMesh] resource to use."
msgstr "ÄÆ¡n Nhất [NavigationMeshGenerator]."
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -36798,7 +37070,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -36839,7 +37113,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -36920,6 +37196,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -36956,6 +37240,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -36963,6 +37271,23 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+#, fuzzy
+msgid "The [NavigationPolygon] resource to use."
+msgstr "ÄÆ¡n Nhất [NavigationMeshGenerator]."
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -36972,11 +37297,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -37038,6 +37367,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -38801,7 +39136,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -38925,7 +39266,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -40902,8 +41243,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -41086,9 +41434,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -45226,7 +45574,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45380,7 +45728,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45435,7 +45783,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45488,7 +45836,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45537,7 +45885,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45589,7 +45937,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45641,7 +45989,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -47284,7 +47632,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -47529,6 +47886,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -47754,6 +48123,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -47962,6 +48523,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -48229,6 +48982,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -49731,7 +50527,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -50086,8 +50881,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -51884,6 +52680,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -52093,8 +52905,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -53621,7 +54433,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -55344,7 +56157,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -61460,6 +62278,11 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+#, fuzzy
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr "Nếu [code]true[/code] thì lật dá»c há»a tiết."
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -61566,6 +62389,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -62697,7 +63524,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -65947,10 +66779,11 @@ msgid ""
msgstr ""
#: doc/classes/Viewport.xml
+#, fuzzy
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
-msgstr ""
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
+msgstr "Nếu [code]true[/code], há»a tiết sẽ được căn ở trung tâm."
#: doc/classes/Viewport.xml
msgid ""
@@ -66391,11 +67224,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -66435,6 +67269,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -70332,7 +71176,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -71203,6 +72047,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -74410,8 +75264,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -74426,11 +75280,17 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
+msgstr "Trả vỠsin của tham số."
+
+#: doc/classes/World.xml
msgid "The World's visual scenario."
msgstr ""
@@ -74445,8 +75305,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -74463,6 +75323,12 @@ msgid ""
msgstr ""
#: doc/classes/World2D.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr "Trả vỠsin của tham số."
+
+#: doc/classes/World2D.xml
msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
diff --git a/doc/translations/zh_CN.po b/doc/translations/zh_CN.po
index af21d97dab..aed2ffbe21 100644
--- a/doc/translations/zh_CN.po
+++ b/doc/translations/zh_CN.po
@@ -38,7 +38,7 @@
# SimonChang <simon_chang@foxmail.com>, 2021.
# zeng haochen <m18621006730@163.com>, 2021.
# suplife <2634557184@qq.com>, 2021.
-# Magian <magian1127@gmail.com>, 2021.
+# Magian <magian1127@gmail.com>, 2021, 2022.
# ji233 <27987772@qq.com>, 2021.
# 沈士超 <shenshichao920@hotmail.com>, 2021.
# MisakaRua <1150235785@qq.com>, 2021.
@@ -62,7 +62,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine class reference\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2022-05-24 13:02+0000\n"
+"PO-Revision-Date: 2022-06-19 11:54+0000\n"
"Last-Translator: Haoyu Qiu <timothyqiu32@gmail.com>\n"
"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
"godot-engine/godot-class-reference/zh_Hans/>\n"
@@ -71,7 +71,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Weblate 4.13-dev\n"
+"X-Generator: Weblate 4.13.1-dev\n"
#: doc/tools/make_rst.py
msgid "Description"
@@ -516,9 +516,10 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
+#, fuzzy
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -4247,6 +4248,12 @@ msgstr "æç¤ºä¸€ä¸ªæ•´æ•°å±žæ€§æ˜¯ä¸€ä¸ªæŽ©ç ï¼Œä½¿ç”¨ç€å…·å¤‡æˆ–ä¸å…·å¤‡å‘½
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr "æç¤ºä¸€ä¸ªæ•´æ•°å±žæ€§æ˜¯ä¸€ä¸ªæŽ©ç ï¼Œä½¿ç”¨ç€å…·å或ä¸å…·åçš„ 2D 导航层。"
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr "æç¤ºä¸€ä¸ªæ•´æ•°å±žæ€§æ˜¯ä¸€ä¸ªæŽ©ç ï¼Œä½¿ç”¨ç€å…·å¤‡æˆ–ä¸å…·å¤‡å‘½åçš„3D渲染层。"
@@ -4258,6 +4265,13 @@ msgid ""
msgstr "æç¤ºä¸€ä¸ªæ•´æ•°å±žæ€§æ˜¯ä¸€ä¸ªæŽ©ç ï¼Œä½¿ç”¨ç€å…·å¤‡æˆ–ä¸å…·å¤‡å‘½åçš„3D物ç†å±‚。"
#: doc/classes/@GlobalScope.xml
+#, fuzzy
+msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr "æç¤ºä¸€ä¸ªæ•´æ•°å±žæ€§æ˜¯ä¸€ä¸ªæŽ©ç ï¼Œä½¿ç”¨ç€å…·å或ä¸å…·åçš„ 2D 导航层。"
+
+#: doc/classes/@GlobalScope.xml
msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
@@ -10392,7 +10406,7 @@ msgstr ""
"astar.connect_points(1, 2, false)\n"
"[/codeblock]"
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -10663,8 +10677,14 @@ msgstr ""
"如果已ç»å­˜åœ¨ä¸€ä¸ªç»™å®š [code]id[/code] 的点,它的ä½ç½®å’Œæƒé‡å°†è¢«æ›´æ–°ä¸ºç»™å®šå€¼ã€‚"
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
-msgstr "è¿”å›žç»™å®šç‚¹ä¹‹é—´æ˜¯å¦æœ‰è¿žæŽ¥/分割。"
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
+msgstr ""
+"返回两个给定点之间是å¦å­˜åœ¨è¿žæŽ¥/线段。如果 [code]bidirectional[/code] 为 "
+"[code]false[/code],则返回是å¦å¯ä»¥é€šè¿‡æ­¤æ®µä»Ž [code]id[/code] 到 [code]to_id[/"
+"code] 进行移动。"
#: doc/classes/AStar2D.xml
msgid ""
@@ -10681,7 +10701,7 @@ msgstr ""
"在给定的点之间创建一个分段。如果 [code]bidirectional[/code] 为 [code]false[/"
"code],则åªå…许从 [code]id[/code] 到 [code]to_id[/code] 之间的移动,ä¸å…许å"
"æ–¹å‘移动。\n"
-"(codeblock)\n"
+"[codeblock]\n"
"var astar = AStar2D.new()\n"
"astar.add_point(1, Vector2(1, 1))\n"
"astar.add_point(2, Vector2(0, 5))\n"
@@ -10689,10 +10709,6 @@ msgstr ""
"[/codeblock]"
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr "删除给定点之间的线段。"
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -10944,12 +10960,15 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
-"音频效果æ•获是一ç§éŸ³é¢‘效果,å¯å°†æ‰€é™„音频效果总线的所有音频帧å¤åˆ¶åˆ°å…¶å†…部环缓"
-"冲器中。\n"
-"应用程åºä»£ç åº”使用 [method get_buffer]从该环缓冲器中消耗这些音频帧,并根æ®éœ€"
-"è¦è¿›è¡Œå¤„ç†ï¼Œä¾‹å¦‚从麦克风æ•获数æ®ã€å®žçŽ°åº”ç”¨ç¨‹åºå®šä¹‰çš„æ•ˆæžœæˆ–通过网络传输音频。"
+"AudioEffectCapture æ˜¯ä¸€ç§ AudioEffect,å¯å°†æ‰€é™„音频效果总线的所有音频帧å¤åˆ¶åˆ°"
+"其内部的环形缓冲器中。\n"
+"应用程åºä»£ç åº”使用 [method get_buffer] 从该环形缓冲器中消耗这些音频帧,并根æ®"
+"需è¦è¿›è¡Œå¤„ç†ï¼Œä¾‹å¦‚从麦克风æ•获数æ®ã€å®žçŽ°åº”ç”¨ç¨‹åºå®šä¹‰çš„æ•ˆæžœæˆ–通过网络传输音"
+"频。从麦克风æ•èŽ·éŸ³é¢‘æ•°æ®æ—¶ï¼Œæ ·æœ¬çš„æ ¼å¼ä¸ºç«‹ä½“声 32 使µ®ç‚¹æ•° PCM。"
#: doc/classes/AudioEffectCapture.xml
msgid ""
@@ -15270,7 +15289,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -15278,7 +15297,7 @@ msgid ""
"create an AntialiasedRegularPolygon2D node. That node relies on a texture "
"with custom mipmaps to perform antialiasing."
msgstr ""
-"绘制未填充的彩色圆形。å¦è¯·å‚阅 [method draw_arc]ã€[method draw_polyline]ã€"
+"绘制填充的彩色圆形。å¦è¯·å‚阅 [method draw_arc]ã€[method draw_polyline]ã€"
"[method draw_polygon]。\n"
"[b]注æ„:[/b]ç”±äºŽå®žçŽ°çš„åŽŸå› ï¼Œå†…ç½®çš„æŠ—é”¯é½¿æ— æ³•åœ¨é€æ˜Žå¤šè¾¹å½¢ä¸Šå¾—到正确的效果,并"
"且å¯èƒ½æ— æ³•在æŸäº›å¹³å°ä¸Šæ­£å¸¸å·¥ä½œã€‚作为替代方案,请安装[url=https://github.com/"
@@ -16799,7 +16818,7 @@ msgstr ""
"返回是å¦è®¾ç½®äº†ç¢°æ’žæŽ©ç  [member collision_mask] 的指定ä½[code]bit[/code]。"
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr "返回对象的 [RID]。"
@@ -17382,12 +17401,12 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
"从 RGBA æ ¼å¼çš„ 32 使•´æ•°æž„造颜色,æ¯ä¸ªå­—节代表一个颜色通é“。\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # 类似 Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
#: doc/classes/Color.xml
@@ -17440,16 +17459,15 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
"返回对比度最高的颜色。\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # 等价于 RGBA(204, 229, 102, 255)\n"
"[/codeblock]"
#: doc/classes/Color.xml
@@ -17472,15 +17490,15 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
-"从 HSV é…置文件中构建一个颜色。[code]h[/code]ã€[code]s[/code]å’Œ[code]v[/code]"
-"是0和1之间的值。\n"
+"从 HSV é…置文件中构建一个颜色。[code]h[/code]ã€[code]s[/code] å’Œ [code]v[/"
+"code] 是 0 和 1 之间的值。\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # 等价于 HSV(210, 50, 79, "
+"0.8) 或 Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
#: doc/classes/Color.xml
@@ -17497,15 +17515,15 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
"返回颜色的ç°åº¦è¡¨ç¤ºã€‚\n"
"ç°åº¦å€¼è®¡ç®—为 [code](r + g + b) / 3[/code]。\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # 值为 0.466667\n"
"[/codeblock]"
#: doc/classes/Color.xml
@@ -17638,18 +17656,18 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
"返回 ARGB æ ¼å¼çš„ HTML å六进制颜色字符串(例如:[code]ff34f822[/code])。\n"
"å°† [code]with_alpha[/code] 设置为 [code]false[/code] å°†å六进制字符串中的 "
"Alpha 排除在外。\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # 返回 \"7fffffff\"\n"
-"var s2 = c.to_html(false) # 返回 \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # 返回 \"7fffffff\"\n"
+"var s2 = color.to_html(false) # 返回 \"ffffff\"\n"
"[/codeblock]"
#: doc/classes/Color.xml
@@ -17739,7 +17757,7 @@ msgstr "爱丽ä¸è“。"
#: doc/classes/Color.xml
msgid "Antique white color."
-msgstr "å¤è‰²å¤é¦™çš„白色。"
+msgstr "å¤è‘£ç™½ã€‚"
#: doc/classes/Color.xml
msgid "Aqua color."
@@ -17787,7 +17805,7 @@ msgstr "癭木色。"
#: doc/classes/Color.xml
msgid "Cadet blue color."
-msgstr "军校学生的è“色。"
+msgstr "军æœè“。"
#: doc/classes/Color.xml
msgid "Chartreuse color."
@@ -18111,7 +18129,7 @@ msgstr "鹿皮鞋颜色。"
#: doc/classes/Color.xml
msgid "Navajo white color."
-msgstr "那瓦伙æ—人白。"
+msgstr "纳瓦白。"
#: doc/classes/Color.xml
msgid "Navy blue color."
@@ -18119,7 +18137,7 @@ msgstr "è—é’色。"
#: doc/classes/Color.xml
msgid "Old lace color."
-msgstr "旧蕾ä¸é¢œè‰²ã€‚"
+msgstr "旧蕾ä¸è‰²ã€‚"
#: doc/classes/Color.xml
msgid "Olive color."
@@ -22156,7 +22174,6 @@ msgid "A cryptographic key (RSA)."
msgstr "加密密钥(RSA)。"
#: doc/classes/CryptoKey.xml
-#, fuzzy
msgid ""
"The CryptoKey class represents a cryptographic key. Keys can be loaded and "
"saved like any other [Resource].\n"
@@ -22164,11 +22181,11 @@ msgid ""
"Crypto.generate_self_signed_certificate] and as private key in [method "
"StreamPeerSSL.accept_stream] along with the appropriate certificate."
msgstr ""
-"CryptoKey类表示加密密钥。å¯ä»¥åƒå…¶ä»–任何[Resource]一样加载和ä¿å­˜é”®ã€‚\n"
-"它们å¯ç”¨äºŽé€šè¿‡[method Crypto.generate_self_signed_certificate]生æˆè‡ªç­¾å"
-"[X509Certificate],并å¯ä½œä¸º[method StreamPeerSSL.accept_stream]中的ç§é’¥ä»¥åŠç›¸"
-"应的è¯ä¹¦ã€‚\n"
-"[b]注æ„:[/b]在HTML5导出中ä¸å¯ç”¨ã€‚"
+"CryptoKey 类表示加密密钥。密钥å¯ä»¥åƒå…¶ä»–任何 [Resource] 一样进行加载和ä¿"
+"存。\n"
+"密钥å¯ä»¥é€šè¿‡ [method Crypto.generate_self_signed_certificate] 生æˆè‡ªç­¾å "
+"[X509Certificate],并å¯ä½œä¸º [method StreamPeerSSL.accept_stream] 中的ç§é’¥ä»¥åŠ"
+"相应的è¯ä¹¦ã€‚"
#: doc/classes/CryptoKey.xml
msgid ""
@@ -23717,12 +23734,17 @@ msgid ""
msgstr "渲染æä¾›ç»™å®ƒçš„[Curve]。简化了绘制曲线和/或ä¿å­˜ä¸ºå›¾åƒæ–‡ä»¶çš„任务。"
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
-msgstr "渲染到纹ç†ä¸Šçš„[code]curve[/code]。"
+msgid "The [Curve] that is rendered onto the texture."
+msgstr "渲染到纹ç†ä¸Šçš„ [Curve]。"
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
-msgstr "纹ç†çš„宽度。"
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
+msgstr ""
+"纹ç†å®½åº¦ï¼ˆå•ä½ä¸ºåƒç´ ï¼‰ã€‚较大的值能够更好地表示高频数æ®ï¼ˆä¾‹å¦‚æ–¹å‘çš„çªå˜ï¼‰ï¼Œä½†"
+"ä¼šå¢žåŠ ç”Ÿæˆæ—¶é—´å’Œå†…å­˜å ç”¨ã€‚"
#: doc/classes/CylinderMesh.xml
msgid "Class representing a cylindrical [PrimitiveMesh]."
@@ -23840,7 +23862,6 @@ msgid "Dictionary type."
msgstr "字典类型。"
#: doc/classes/Dictionary.xml
-#, fuzzy
msgid ""
"Dictionary type. Associative container which contains values referenced by "
"unique keys. Dictionaries are composed of pairs of keys (which must be "
@@ -24142,6 +24163,15 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr "返回[Dictionary]中的键列表。"
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+"å°† [code]dictionary[/code] 中的元素添加到这个 [Dictionary] 中。默认情况下,ä¸"
+"会å¤åˆ¶é‡å¤çš„é”®ï¼Œé™¤éž [code]overwrite[/code] 为 [code]true[/code]。"
+
+#: doc/classes/Dictionary.xml
msgid "Returns the number of keys in the dictionary."
msgstr "返回字典中键的数é‡ã€‚"
@@ -26729,7 +26759,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -26740,12 +26770,38 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
-"èŽ·å–æ’件编辑器的状æ€ã€‚这用于ä¿å­˜åœºæ™¯æ—¶ï¼ˆä»Žè€Œå†æ¬¡æ‰“开时,它的状æ€è¢«ä¿æŒï¼‰å’Œåˆ‡"
-"æ¢æ ‡ç­¾ï¼ˆä»Žè€Œçжæ€èƒ½å¤Ÿå½“拉片返回æ¢å¤ï¼‰æ—¶ä½¿ç”¨ã€‚"
+"覆盖这个方法å¯ç”¨äºŽæä¾›æƒ³è¦ä¿å­˜çš„çŠ¶æ€æ•°æ®ï¼Œç±»ä¼¼è§†å›¾ä½ç½®ã€ç½‘æ ¼è®¾ç½®ã€æŠ˜å æƒ…况"
+"等。会在ä¿å­˜åœºæ™¯ï¼ˆå†æ¬¡æ‰“开时ä¿ç•™çжæ€ï¼‰å’Œåˆ‡æ¢æ ‡ç­¾é¡µï¼ˆåˆ‡å›žæ ‡ç­¾é¡µæ—¶æ¢å¤çжæ€ï¼‰æ—¶"
+"用到。这些数æ®ä¼šè‡ªåЍä¿å­˜åˆ°ç¼–è¾‘å™¨å…ƒæ•°æ®æ–‡ä»¶å¤¹ä¸­å„个场景的 [code]editstate[/"
+"code] 文件中。如果你想è¦ä¸ºæ’ä»¶ä¿å­˜å…¨å±€ï¼ˆä¸Žåœºæ™¯æ— å…³ï¼‰çš„编辑器数æ®ï¼Œä½ å¯ä»¥æ¢æˆ "
+"[method get_window_layout]。\n"
+"请使用 [method set_state] æ¢å¤ä¿å­˜çš„状æ€ã€‚\n"
+"[b]注æ„:[/b]é‡è¦çš„设置应该和项目一起进行æŒä¹…化,ä¸åº”该用这个方法æ¥ä¿å­˜ã€‚\n"
+"[b]注æ„:[/b]ä½ åªæœ‰å…ˆå®žçް [method get_plugin_name]ï¼ŒçŠ¶æ€æ‰èƒ½å¤Ÿè¿›è¡Œæ­£ç¡®çš„ä¿å­˜"
+"å’Œæ¢å¤ã€‚\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
#: doc/classes/EditorPlugin.xml
msgid ""
@@ -26757,12 +26813,30 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
-"èŽ·å–æ’ä»¶çš„GUI布局。当调用[method queue_save_layout]更改了编辑器布局(例如,更"
-"改åœé ç‚¹çš„ä½ç½®ï¼‰æ—¶æˆ–ä¿å­˜é¡¹ç›®çš„编辑器布局。"
+"覆盖这个方法å¯ç”¨äºŽæä¾›è¯¥æ’ä»¶çš„ GUI 布局或者任何其他你想è¦ä¿å­˜çš„æ•°æ®ã€‚会在调"
+"用 [method queue_save_layout] ä¿å­˜é¡¹ç›®çš„编辑器布局或者编辑器布局å‘生改å˜ï¼ˆä¾‹"
+"如修改åœé é¢æ¿çš„ä½ç½®ï¼‰æ—¶ç”¨åˆ°ã€‚æ•°æ®ä¼šä¿å­˜åˆ°ç¼–辑器元数æ®ç›®å½•çš„ "
+"[code]editor_layout.cfg[/code] 文件中。\n"
+"请使用 [method set_window_layout] æ¢å¤ä¿å­˜çš„布局。\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
#: doc/classes/EditorPlugin.xml
msgid ""
@@ -26890,12 +26964,50 @@ msgstr ""
"用。"
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
-msgstr "æ¢å¤[method get_state]ä¿å­˜çš„状æ€ã€‚"
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
+msgstr ""
+"æ¢å¤ç”¨ [method get_state] ä¿å­˜çš„状æ€ã€‚这个方法会在编辑器的当å‰åœºæ™¯æ ‡ç­¾é¡µå‘生"
+"æ”¹å˜æ—¶è°ƒç”¨ã€‚\n"
+"[b]注æ„:[/b]ä½ çš„æ’件必须实现 [method get_plugin_name],å¦åˆ™æ— æ³•被识别,这个"
+"方法也ä¸ä¼šè¢«è°ƒç”¨ã€‚\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
-msgstr "æ¢å¤[method get_window_layout]ä¿å­˜çš„æ’ä»¶GUI布局。"
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
+msgstr ""
+"æ¢å¤ç”¨ [method get_window_layout] ä¿å­˜çš„æ’ä»¶ GUI 布局和数æ®ã€‚编辑器å¯åŠ¨æ—¶ä¼šè°ƒ"
+"用æ¯ä¸€ä¸ªæ’件的这个方法。请使用æä¾›çš„ [code]configuration[/code] 文件读å–ä½ ä¿"
+"存的数æ®ã€‚\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
#: doc/classes/EditorPlugin.xml
msgid ""
@@ -28813,7 +28925,7 @@ msgstr ""
"[b]警告:[/b]如果你在项目的任æ„ä½ç½®å°†å…¶è®¾ç½®ä¸º [code]false[/code],é‡è¦çš„错误"
"ä¿¡æ¯å¯èƒ½ä¼šè¢«éšè—,å³ä½¿å®ƒä»¬æ˜¯ç”±å…¶ä»–脚本触å‘。如果在 [code]tool[/code] 脚本中把"
"这个设置为 [code]false[/code],这也会影å“到编辑器本身。在确ä¿é”™è¯¯ä¿¡æ¯è¢«å¯ç”¨ä¹‹"
-"å‰ï¼Œ[i]ä¸[/i]报告错误(默认情况下)。\n"
+"å‰ï¼Œ[i]请勿[/i]报告错误(因为默认情况下是会的)。\n"
"[b]注æ„:[/b]当从编辑器è¿è¡Œä¸€ä¸ªé¡¹ç›®æ—¶ï¼Œè¿™ä¸ªå±žæ€§ä¸å½±å“编辑器的错误选项å¡ã€‚"
#: doc/classes/Engine.xml
@@ -29666,12 +29778,12 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr "低质é‡çš„å±å¹•ç©ºé—´çŽ¯å¢ƒé®æŒ¡æ•ˆæžœï¼ˆæœ€å¿«ï¼‰ã€‚"
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
-msgstr "低质é‡çš„å±å¹•ç©ºé—´çŽ¯å¢ƒé®æŒ¡æ•ˆæžœã€‚"
+msgid "Medium quality for the screen-space ambient occlusion effect."
+msgstr "中等质é‡çš„å±å¹•ç©ºé—´çŽ¯å¢ƒé®æŒ¡æ•ˆæžœã€‚"
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
-msgstr "低质é‡çš„å±å¹•ç©ºé—´çŽ¯å¢ƒé®æŒ¡æ•ˆæžœï¼ˆæœ€æ…¢ï¼‰ã€‚"
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
+msgstr "高质é‡çš„å±å¹•ç©ºé—´çŽ¯å¢ƒé®æŒ¡æ•ˆæžœï¼ˆæœ€æ…¢ï¼‰ã€‚"
#: doc/classes/Expression.xml
msgid "A class that stores an expression you can execute."
@@ -30999,13 +31111,14 @@ msgid ""
"set_script] extends an existing object, if that object's class matches one "
"of the script's base classes."
msgstr ""
-"用GDScript编程语言实现的脚本。该脚本扩展了实例化该对象åŽå…¶æ‰€æœ‰å¯¹è±¡çš„功能。\n"
+"用 GDScript 编程语言实现的脚本。该脚本扩展了实例化该对象åŽå…¶æ‰€æœ‰å¯¹è±¡çš„功"
+"能。\n"
"[method new] 创建脚本的新实例。如果一个对象的类与脚本的基类之一匹é…,则 "
"[method Object.set_script] 会扩展该对象。"
#: modules/gdscript/doc_classes/GDScript.xml
msgid "Returns byte code for the script source code."
-msgstr "返回脚本æºä»£ç çš„字节(byte)ç ã€‚"
+msgstr "返回脚本æºä»£ç çš„字节ç ã€‚"
#: modules/gdscript/doc_classes/GDScript.xml
msgid ""
@@ -31051,10 +31164,10 @@ msgid ""
"script have survived up to that point."
msgstr ""
"检查函数调用是å¦å¯ä»¥è¢«æ¢å¤ã€‚如果函数状æ€å·²ç»è¢«æ¢å¤ï¼Œåˆ™ä¸å­˜åœ¨è¿™ç§æƒ…况。\n"
-"如果[code]extended_check[/code]被å¯ç”¨ï¼Œå®ƒè¿˜ä¼šæ£€æŸ¥ç›¸å…³çš„脚本和对象是å¦ä»ç„¶å­˜"
-"在。扩展检查是在调试模å¼ä¸‹ä½œä¸º[method GDScriptFunctionState.resume]的一部分进"
-"行的,但是如果你知é“ä½ å¯èƒ½åœ¨ä¸ç¡®å®šå¯¹è±¡å’Œ/或脚本已ç»å­˜æ´»åˆ°é‚£ä¸ªç‚¹çš„æƒ…况下å°è¯•æ¢"
-"å¤ï¼Œä½ å¯ä»¥ä½¿ç”¨è¿™ä¸ªã€‚"
+"如果 [code]extended_check[/code] 被å¯ç”¨ï¼Œå®ƒè¿˜ä¼šæ£€æŸ¥ç›¸å…³çš„脚本和对象是å¦ä»ç„¶å­˜"
+"在。扩展检查是在调试模å¼ä¸‹ä½œä¸º [method GDScriptFunctionState.resume] 的一部分"
+"进行的,但是如果你知é“ä½ å¯èƒ½åœ¨ä¸ç¡®å®šå¯¹è±¡å’Œ/或脚本已ç»å­˜æ´»åˆ°é‚£ä¸ªç‚¹çš„æƒ…况下å°è¯•"
+"æ¢å¤ï¼Œä½ å¯ä»¥ä½¿ç”¨è¿™ä¸ªã€‚"
#: modules/gdscript/doc_classes/GDScriptFunctionState.xml
msgid ""
@@ -31092,7 +31205,7 @@ msgid ""
"The lower, the longer an impulse from one side takes to travel to the other "
"side."
msgstr ""
-"X轴上的旋转阻尼é‡ã€‚\n"
+"X 轴上的旋转阻尼é‡ã€‚\n"
"越低,æ¥è‡ªä¸€ä¾§çš„冲力到达å¦ä¸€ä¾§çš„æ—¶é—´è¶Šé•¿ã€‚"
#: doc/classes/Generic6DOFJoint.xml
@@ -31110,35 +31223,35 @@ msgstr ""
#: doc/classes/Generic6DOFJoint.xml
msgid ""
"The maximum amount of force that can occur, when rotating around the X axis."
-msgstr "绕X轴旋转时所能产生的最大力。"
+msgstr "绕 X 轴旋转时所能产生的最大力。"
#: doc/classes/Generic6DOFJoint.xml
msgid ""
"The minimum rotation in negative direction to break loose and rotate around "
"the X axis."
-msgstr "è´Ÿæ–¹å‘çš„æœ€å°æ—‹è½¬ï¼Œä»¥æŒ£è„±å¹¶å›´ç»•X轴旋转。"
+msgstr "è´Ÿæ–¹å‘çš„æœ€å°æ—‹è½¬ï¼Œä»¥æŒ£è„±å¹¶å›´ç»• X 轴旋转。"
#: doc/classes/Generic6DOFJoint.xml
msgid ""
"The amount of rotational restitution across the X axis. The lower, the more "
"restitution occurs."
-msgstr "X轴上的旋转æ¢å¤é‡ã€‚值越低,æ¢å¤é‡è¶Šå¤§ã€‚"
+msgstr "X 轴上的旋转æ¢å¤é‡ã€‚值越低,æ¢å¤é‡è¶Šå¤§ã€‚"
#: doc/classes/Generic6DOFJoint.xml
msgid "The speed of all rotations across the X axis."
-msgstr "跨越X轴的所有旋转的速度。"
+msgstr "跨越 X 轴的所有旋转的速度。"
#: doc/classes/Generic6DOFJoint.xml
msgid ""
"The minimum rotation in positive direction to break loose and rotate around "
"the X axis."
-msgstr "正方å‘çš„æœ€å°æ—‹è½¬ï¼Œä»¥æŒ£è„±å¹¶ç»•X轴旋转。"
+msgstr "正方å‘çš„æœ€å°æ—‹è½¬ï¼Œä»¥æŒ£è„±å¹¶ç»• X 轴旋转。"
#: doc/classes/Generic6DOFJoint.xml
msgid ""
"The amount of rotational damping across the Y axis. The lower, the more "
"dampening occurs."
-msgstr "Y轴上的旋转阻尼é‡ã€‚值越低,旋转的阻尼就越大。"
+msgstr "Y 轴上的旋转阻尼é‡ã€‚值越低,旋转的阻尼就越大。"
#: doc/classes/Generic6DOFJoint.xml
msgid "If [code]true[/code], rotation across the Y axis is limited."
@@ -31149,41 +31262,41 @@ msgid ""
"When rotating across the Y axis, this error tolerance factor defines how "
"much the correction gets slowed down. The lower, the slower."
msgstr ""
-"当在Y轴上旋转时,这个误差容é™ç³»æ•°å®šä¹‰äº†ä¿®æ­£çš„é€Ÿåº¦è¢«å‡æ…¢çš„程度。值越低,旋转越"
-"慢。"
+"当在 Y 轴上旋转时,这个误差容é™ç³»æ•°å®šä¹‰äº†ä¿®æ­£çš„é€Ÿåº¦è¢«å‡æ…¢çš„程度。值越低,旋转"
+"越慢。"
#: doc/classes/Generic6DOFJoint.xml
msgid ""
"The maximum amount of force that can occur, when rotating around the Y axis."
-msgstr "围绕Y轴旋转时,å¯èƒ½å‘生的最大力。"
+msgstr "围绕 Y 轴旋转时,å¯èƒ½å‘生的最大力。"
#: doc/classes/Generic6DOFJoint.xml
msgid ""
"The minimum rotation in negative direction to break loose and rotate around "
"the Y axis."
-msgstr "è´Ÿæ–¹å‘çš„æœ€å°æ—‹è½¬ï¼Œä»¥æŒ£è„±å¹¶å›´ç»•Y轴旋转。"
+msgstr "è´Ÿæ–¹å‘çš„æœ€å°æ—‹è½¬ï¼Œä»¥æŒ£è„±å¹¶å›´ç»• Y 轴旋转。"
#: doc/classes/Generic6DOFJoint.xml
msgid ""
"The amount of rotational restitution across the Y axis. The lower, the more "
"restitution occurs."
-msgstr "跨越Y轴的旋转æ¢å¤é‡ã€‚越低,å‘生的æ¢å¤é‡è¶Šå¤§ã€‚"
+msgstr "跨越 Y 轴的旋转æ¢å¤é‡ã€‚越低,å‘生的æ¢å¤é‡è¶Šå¤§ã€‚"
#: doc/classes/Generic6DOFJoint.xml
msgid "The speed of all rotations across the Y axis."
-msgstr "跨越Y轴的所有旋转的速度。"
+msgstr "跨越 Y 轴的所有旋转的速度。"
#: doc/classes/Generic6DOFJoint.xml
msgid ""
"The minimum rotation in positive direction to break loose and rotate around "
"the Y axis."
-msgstr "正方å‘çš„æœ€å°æ—‹è½¬ï¼Œä»¥æŒ£è„±å¹¶ç»•Y轴旋转。"
+msgstr "正方å‘çš„æœ€å°æ—‹è½¬ï¼Œä»¥æŒ£è„±å¹¶ç»• Y 轴旋转。"
#: doc/classes/Generic6DOFJoint.xml
msgid ""
"The amount of rotational damping across the Z axis. The lower, the more "
"dampening occurs."
-msgstr "跨越Z轴的旋转阻尼é‡ã€‚值越低,阻尼就越多。"
+msgstr "跨越 Z 轴的旋转阻尼é‡ã€‚值越低,阻尼就越多。"
#: doc/classes/Generic6DOFJoint.xml
msgid "If [code]true[/code], rotation across the Z axis is limited."
@@ -31194,35 +31307,35 @@ msgid ""
"When rotating across the Z axis, this error tolerance factor defines how "
"much the correction gets slowed down. The lower, the slower."
msgstr ""
-"当在Z轴上旋转时,这个误差容é™ç³»æ•°å®šä¹‰äº†ä¿®æ­£çš„é€Ÿåº¦è¢«å‡æ…¢çš„程度。值越低,旋转越"
-"慢。"
+"当在 Z 轴上旋转时,这个误差容é™ç³»æ•°å®šä¹‰äº†ä¿®æ­£çš„é€Ÿåº¦è¢«å‡æ…¢çš„程度。值越低,旋转"
+"越慢。"
#: doc/classes/Generic6DOFJoint.xml
msgid ""
"The maximum amount of force that can occur, when rotating around the Z axis."
-msgstr "围绕Z轴旋转时,å¯èƒ½å‘生的最角度。"
+msgstr "围绕 Z 轴旋转时,å¯èƒ½å‘生的最角度。"
#: doc/classes/Generic6DOFJoint.xml
msgid ""
"The minimum rotation in negative direction to break loose and rotate around "
"the Z axis."
-msgstr "è´Ÿæ–¹å‘çš„æœ€å°æ—‹è½¬ï¼Œä»¥æŒ£è„±å¹¶å›´ç»•Z轴旋转。"
+msgstr "è´Ÿæ–¹å‘çš„æœ€å°æ—‹è½¬ï¼Œä»¥æŒ£è„±å¹¶å›´ç»• Z 轴旋转。"
#: doc/classes/Generic6DOFJoint.xml
msgid ""
"The amount of rotational restitution across the Z axis. The lower, the more "
"restitution occurs."
-msgstr "跨越Z轴的旋转æ¢å¤é‡ã€‚越低,å‘生的æ¢å¤é‡è¶Šå¤§ã€‚"
+msgstr "跨越 Z 轴的旋转æ¢å¤é‡ã€‚越低,å‘生的æ¢å¤é‡è¶Šå¤§ã€‚"
#: doc/classes/Generic6DOFJoint.xml
msgid "The speed of all rotations across the Z axis."
-msgstr "跨越Z轴的所有旋转的速度。"
+msgstr "跨越 Z 轴的所有旋转的速度。"
#: doc/classes/Generic6DOFJoint.xml
msgid ""
"The minimum rotation in positive direction to break loose and rotate around "
"the Z axis."
-msgstr "正方å‘çš„æœ€å°æ—‹è½¬ï¼Œå¹¶ç»•Z轴旋转。"
+msgstr "正方å‘çš„æœ€å°æ—‹è½¬ï¼Œå¹¶ç»• Z 轴旋转。"
#: doc/classes/Generic6DOFJoint.xml
msgid "If [code]true[/code], a rotating motor at the X axis is enabled."
@@ -31230,11 +31343,11 @@ msgstr "如果为 [code]true[/code],则å¯ç”¨ X 轴的旋转马达。"
#: doc/classes/Generic6DOFJoint.xml
msgid "Maximum acceleration for the motor at the X axis."
-msgstr "在X轴旋转的最大加速度。"
+msgstr "在 X 轴旋转的最大加速度。"
#: doc/classes/Generic6DOFJoint.xml
msgid "Target speed for the motor at the X axis."
-msgstr "X轴上电机的目标速度。"
+msgstr "X 轴上电机的目标速度。"
#: doc/classes/Generic6DOFJoint.xml
msgid "If [code]true[/code], a rotating motor at the Y axis is enabled."
@@ -31242,11 +31355,11 @@ msgstr "如果为 [code]true[/code],则å¯ç”¨ Y 轴的旋转马达。"
#: doc/classes/Generic6DOFJoint.xml
msgid "Maximum acceleration for the motor at the Y axis."
-msgstr "电机在X轴的最大加速度。"
+msgstr "电机在 X 轴的最大加速度。"
#: doc/classes/Generic6DOFJoint.xml
msgid "Target speed for the motor at the Y axis."
-msgstr "电机在Y轴的目标速度。"
+msgstr "电机在 Y 轴的目标速度。"
#: doc/classes/Generic6DOFJoint.xml
msgid "If [code]true[/code], a rotating motor at the Z axis is enabled."
@@ -31254,15 +31367,15 @@ msgstr "如果为 [code]true[/code],则å¯ç”¨ Z 轴的旋转马达。"
#: doc/classes/Generic6DOFJoint.xml
msgid "Maximum acceleration for the motor at the Z axis."
-msgstr "电机在Z轴的最大加速度。"
+msgstr "电机在 Z 轴的最大加速度。"
#: doc/classes/Generic6DOFJoint.xml
msgid "Target speed for the motor at the Z axis."
-msgstr "Z轴上电机的目标速度。"
+msgstr "Z 轴上电机的目标速度。"
#: doc/classes/Generic6DOFJoint.xml
msgid "The amount of damping that happens at the X motion."
-msgstr "å‘生在Xè¿åŠ¨çš„é˜»å°¼é‡ã€‚"
+msgstr "å‘生在 X è¿åŠ¨çš„é˜»å°¼é‡ã€‚"
#: doc/classes/Generic6DOFJoint.xml
msgid "If [code]true[/code], the linear motion across the X axis is limited."
@@ -31276,13 +31389,13 @@ msgstr "轴心点的 X 轴之间的最å°å·®å¼‚。"
msgid ""
"The amount of restitution on the X axis movement. The lower, the more "
"momentum gets lost."
-msgstr "Xè½´è¿åŠ¨çš„æ¢å¤é‡ã€‚è¶Šä½Žï¼ŒåŠ¨é‡æŸå¤±è¶Šå¤§ã€‚"
+msgstr "X è½´è¿åŠ¨çš„æ¢å¤é‡ã€‚è¶Šä½Žï¼ŒåŠ¨é‡æŸå¤±è¶Šå¤§ã€‚"
#: doc/classes/Generic6DOFJoint.xml
msgid ""
"A factor applied to the movement across the X axis. The lower, the slower "
"the movement."
-msgstr "应用于X轴上移动的一个系数。值越低,移动的就越慢。"
+msgstr "应用于 X 轴上移动的一个系数。值越低,移动的就越慢。"
#: doc/classes/Generic6DOFJoint.xml
msgid "The maximum difference between the pivot points' X axis."
@@ -31290,7 +31403,7 @@ msgstr "轴心点的 X 轴之间的最大差异。"
#: doc/classes/Generic6DOFJoint.xml
msgid "The amount of damping that happens at the Y motion."
-msgstr "å‘生在Yè¿åŠ¨çš„é˜»å°¼é‡ã€‚"
+msgstr "å‘生在 Y è¿åŠ¨çš„é˜»å°¼é‡ã€‚"
#: doc/classes/Generic6DOFJoint.xml
msgid "If [code]true[/code], the linear motion across the Y axis is limited."
@@ -31304,13 +31417,13 @@ msgstr "轴心点的 Y 轴之间的最å°å·®å¼‚。"
msgid ""
"The amount of restitution on the Y axis movement. The lower, the more "
"momentum gets lost."
-msgstr "Yè½´è¿åŠ¨çš„æ¢å¤é‡ã€‚å€¼è¶Šä½Žï¼ŒåŠ¨é‡æŸå¤±è¶Šå¤§ã€‚"
+msgstr "Y è½´è¿åŠ¨çš„æ¢å¤é‡ã€‚å€¼è¶Šä½Žï¼ŒåŠ¨é‡æŸå¤±è¶Šå¤§ã€‚"
#: doc/classes/Generic6DOFJoint.xml
msgid ""
"A factor applied to the movement across the Y axis. The lower, the slower "
"the movement."
-msgstr "应用于Y轴上移动的一个系数。值越低,移动的就越慢。"
+msgstr "应用于 Y 轴上移动的一个系数。值越低,移动的就越慢。"
#: doc/classes/Generic6DOFJoint.xml
msgid "The maximum difference between the pivot points' Y axis."
@@ -31318,7 +31431,7 @@ msgstr "轴心点的 Y 轴之间的最大差异。"
#: doc/classes/Generic6DOFJoint.xml
msgid "The amount of damping that happens at the Z motion."
-msgstr "å‘生在Zè¿åŠ¨çš„é˜»å°¼é‡ã€‚"
+msgstr "å‘生在 Z è¿åŠ¨çš„é˜»å°¼é‡ã€‚"
#: doc/classes/Generic6DOFJoint.xml
msgid "If [code]true[/code], the linear motion across the Z axis is limited."
@@ -31332,13 +31445,13 @@ msgstr "轴心点的 Z 轴之间的最å°å·®å¼‚。"
msgid ""
"The amount of restitution on the Z axis movement. The lower, the more "
"momentum gets lost."
-msgstr "Yè½´è¿åŠ¨çš„æ¢å¤é‡ã€‚è¶Šä½Žï¼ŒåŠ¨é‡æŸå¤±è¶Šå¤§ã€‚"
+msgstr "Y è½´è¿åŠ¨çš„æ¢å¤é‡ã€‚è¶Šä½Žï¼ŒåŠ¨é‡æŸå¤±è¶Šå¤§ã€‚"
#: doc/classes/Generic6DOFJoint.xml
msgid ""
"A factor applied to the movement across the Z axis. The lower, the slower "
"the movement."
-msgstr "适用于跨Z轴移动的一个系数。值越低,移动的就越慢。"
+msgstr "适用于跨 Z 轴移动的一个系数。值越低,移动的就越慢。"
#: doc/classes/Generic6DOFJoint.xml
msgid "The maximum difference between the pivot points' Z axis."
@@ -31356,11 +31469,11 @@ msgstr ""
msgid ""
"The maximum force the linear motor can apply on the X axis while trying to "
"reach the target velocity."
-msgstr "当å°è¯•达到目标速度时,线性马达å¯ä»¥åœ¨X轴上应用的最大力。"
+msgstr "当å°è¯•达到目标速度时,线性马达å¯ä»¥åœ¨ X 轴上应用的最大力。"
#: doc/classes/Generic6DOFJoint.xml
msgid "The speed that the linear motor will attempt to reach on the X axis."
-msgstr "线性马达在X轴上å°è¯•达到的速度。"
+msgstr "线性马达在 X 轴上å°è¯•达到的速度。"
#: doc/classes/Generic6DOFJoint.xml
msgid ""
@@ -31374,11 +31487,11 @@ msgstr ""
msgid ""
"The maximum force the linear motor can apply on the Y axis while trying to "
"reach the target velocity."
-msgstr "ç›´çº¿ç”µæœºåœ¨è¯•å›¾è¾¾åˆ°ç›®æ ‡é€Ÿåº¦æ—¶å¯æ–½åŠ åœ¨Y轴上的最大力。"
+msgstr "ç›´çº¿ç”µæœºåœ¨è¯•å›¾è¾¾åˆ°ç›®æ ‡é€Ÿåº¦æ—¶å¯æ–½åŠ åœ¨ Y 轴上的最大力。"
#: doc/classes/Generic6DOFJoint.xml
msgid "The speed that the linear motor will attempt to reach on the Y axis."
-msgstr "线性马达在Y轴上将会达到的速度。"
+msgstr "线性马达在 Y 轴上将会达到的速度。"
#: doc/classes/Generic6DOFJoint.xml
msgid ""
@@ -31392,11 +31505,11 @@ msgstr ""
msgid ""
"The maximum force the linear motor can apply on the Z axis while trying to "
"reach the target velocity."
-msgstr "当试图达到目标速度时,线性马达å¯ä»¥åœ¨X轴上应用的最大力。"
+msgstr "当试图达到目标速度时,线性马达å¯ä»¥åœ¨ X 轴上应用的最大力。"
#: doc/classes/Generic6DOFJoint.xml
msgid "The speed that the linear motor will attempt to reach on the Z axis."
-msgstr "线性马达在Z轴上试图达到的速度。"
+msgstr "线性马达在 Z 轴上试图达到的速度。"
#: doc/classes/Generic6DOFJoint.xml doc/classes/PhysicsServer.xml
msgid "The minimum difference between the pivot points' axes."
@@ -31453,7 +31566,7 @@ msgstr "所有跨轴旋转的速度。"
msgid ""
"The amount of rotational damping across the axes. The lower, the more "
"dampening occurs."
-msgstr "跨越Z轴的旋转阻尼é‡ã€‚值越低,å‘生的阻尼就越多。"
+msgstr "跨越 Z 轴的旋转阻尼é‡ã€‚值越低,å‘生的阻尼就越多。"
#: doc/classes/Generic6DOFJoint.xml doc/classes/PhysicsServer.xml
msgid ""
@@ -31464,7 +31577,7 @@ msgstr "在å„轴上的旋转æ¢å¤é‡ã€‚值越低,å‘生的æ¢å¤é‡è¶Šå¤§ã€‚
#: doc/classes/Generic6DOFJoint.xml doc/classes/PhysicsServer.xml
msgid ""
"The maximum amount of force that can occur, when rotating around the axes."
-msgstr "围绕Z轴旋转时,å¯èƒ½å‘生的最大力。"
+msgstr "围绕 Z 轴旋转时,å¯èƒ½å‘生的最大力。"
#: doc/classes/Generic6DOFJoint.xml
msgid ""
@@ -31500,7 +31613,7 @@ msgstr "如果å¯ç”¨ï¼Œåˆ™å­˜åœ¨è·¨è¿™äº›è½´çš„线性马达。"
#: doc/classes/Generic6DOFJoint.xml doc/classes/HingeJoint.xml
msgid "Represents the size of the [enum Flag] enum."
-msgstr "表示[enum Flag]枚举的大å°ã€‚"
+msgstr "表示 [enum Flag] 枚举的大å°ã€‚"
#: doc/classes/Geometry.xml
msgid "Helper node to calculate generic geometry operations."
@@ -31738,7 +31851,6 @@ msgstr ""
"code],å¦åˆ™è¿”回 [code]false[/code]。"
#: doc/classes/Geometry.xml
-#, fuzzy
msgid ""
"Checks if the two lines ([code]from_a[/code], [code]dir_a[/code]) and "
"([code]from_b[/code], [code]dir_b[/code]) intersect. If yes, return the "
@@ -31746,10 +31858,10 @@ msgid ""
"[code]null[/code].\n"
"[b]Note:[/b] The lines are specified using direction vectors, not end points."
msgstr ""
-"检查两行([code]from_a[/code],[code]dir_a[/code])和([code]from_b[/code],"
-"[code]dir_b[/code])是å¦ç›¸äº¤ã€‚如果是,则将相交点返回为[Vector2]。如果没有交"
-"å‰ï¼Œåˆ™è¿”回一个空的[Variant]。\n"
-"[b]注æ„:[/b]线是使用方å‘å‘é‡è€Œä¸æ˜¯ç»ˆç‚¹æŒ‡å®šçš„。"
+"检查两æ¡ç›´çº¿([code]from_a[/code], [code]dir_a[/code]) å’Œ ([code]from_b[/"
+"code], [code]dir_b[/code]) 是å¦ç›¸äº¤ã€‚如果相交,则返回 [Vector2] å½¢å¼çš„相交"
+"点。如果ä¸ç›¸äº¤ï¼Œåˆ™è¿”回 [code]null[/code]。\n"
+"[b]注æ„:[/b]直线是使用方å‘å‘é‡è€Œä¸æ˜¯ç»ˆç‚¹æŒ‡å®šçš„。"
#: doc/classes/Geometry.xml
msgid ""
@@ -31906,16 +32018,15 @@ msgstr ""
"交点的法线。"
#: doc/classes/Geometry.xml
-#, fuzzy
msgid ""
"Checks if the two segments ([code]from_a[/code], [code]to_a[/code]) and "
"([code]from_b[/code], [code]to_b[/code]) intersect. If yes, return the point "
"of intersection as [Vector2]. If no intersection takes place, returns "
"[code]null[/code]."
msgstr ""
-"检查两段([code]from_a[/code], [code]to_a[/code])和([code]from_b[/code], "
-"[code]to_b[/code])是å¦ç›¸äº¤ã€‚如果是,返回相交点为[Vector2]。如果没有å‘生相"
-"交,返回一个空的[Variant]。"
+"检查两æ¡çº¿æ®µ ([code]from_a[/code], [code]to_a[/code]) å’Œ ([code]from_b[/"
+"code], [code]to_b[/code]) 是å¦ç›¸äº¤ã€‚如果相交,则返回 [Vector2] å½¢å¼çš„相交点。"
+"如果ä¸ç›¸äº¤ï¼Œåˆ™è¿”回 [code]null[/code]。"
#: doc/classes/Geometry.xml
msgid ""
@@ -32763,11 +32874,13 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
-"GradientTexture使用[Gradient]æ¥å¡«å……çº¹ç†æ•°æ®ã€‚æ¸å˜å°†ä½¿ç”¨ä»Žä¸­èŽ·å¾—çš„é¢œè‰²ä»Žå·¦åˆ°å³"
-"填充。这æ„味ç€çº¹ç†ä¸ä¸€å®šä»£è¡¨æ¸å˜çš„精确副本,而是以固定的步长从æ¸å˜ä¸­èŽ·å¾—çš„æ ·"
-"本的æ’值,è§[member width]。"
+"GradientTexture 使用 [Gradient] æ¥å¡«å……çº¹ç†æ•°æ®ã€‚æ¸å˜å°†ä½¿ç”¨ä»Žä¸­èŽ·å¾—çš„é¢œè‰²ä»Žå·¦"
+"到å³å¡«å……。这æ„味ç€çº¹ç†ä¸ä¸€å®šä»£è¡¨æ¸å˜çš„精确副本,而是以固定的步长从æ¸å˜ä¸­èŽ·å¾—"
+"的样本的æ’å€¼ï¼ˆè§ [member width])。å¦è¯·å‚阅 [GradientTexture2D] å’Œ "
+"[CurveTexture]。"
#: doc/classes/GradientTexture.xml
msgid "The [Gradient] that will be used to fill the texture."
@@ -32788,12 +32901,13 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
"该纹ç†ä½¿ç”¨ [Gradient] æ¸å˜æ¥å¡«å…… 2D ç©ºé—´çº¹ç†æ•°æ®ã€‚æ¸å˜ä¼šæ ¹æ® [member fill] "
"å’Œ [member repeat] 类型,使用从æ¸å˜ä¸­èŽ·å–çš„é¢œè‰²è¿›è¡Œå¡«å……ã€‚è¯¥çº¹ç†æœªå¿…精确表示该"
-"æ¸å˜ï¼Œå¯ä»¥æ˜¯ä»Žè¯¥æ¸å˜ä¸ŠæŒ‰ç…§å›ºå®šæ­¥é•¿è¿›è¡Œé‡‡æ ·åŽå†è¿›è¡Œæ’值(请å‚阅 [member "
-"width] 和 [member height])。"
+"æ¸å˜ï¼Œå¯ä»¥æ˜¯ä»Žè¯¥æ¸å˜ä¸ŠæŒ‰ç…§å›ºå®šæ­¥é•¿è¿›è¡Œé‡‡æ ·åŽå†è¿›è¡Œæ’å€¼ï¼ˆè§ [member width] å’Œ "
+"[member height])。å¦è¯·å‚阅 [GradientTexture] å’Œ [CurveTexture]。"
#: doc/classes/GradientTexture2D.xml
msgid ""
@@ -33727,6 +33841,14 @@ msgstr ""
"[code]pos[/code] 应该使用 GridMap çš„æœ¬åœ°åæ ‡ç©ºé—´ã€‚"
#: modules/gridmap/doc_classes/GridMap.xml
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+"为 [code]true[/code] 时,这个 GridMap 会使用å•å…ƒæ ¼çš„å¯¼èˆªç½‘æ ¼èµ„æºæ¥åˆ›å»ºå¯¼èˆªåœ°"
+"区。"
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr "如果为 [code]true[/code],则网格项以 X 轴为中心。"
@@ -33788,6 +33910,10 @@ msgid "The assigned [MeshLibrary]."
msgstr "指定的 [MeshLibrary]。"
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr "GridMap 生æˆå¯¼èˆªåœ°åŒºçš„导航层。"
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -33841,7 +33967,6 @@ msgid "Context to compute cryptographic hashes over multiple iterations."
msgstr "在多次迭代中计算加密哈希的上下文。"
#: doc/classes/HashingContext.xml
-#, fuzzy
msgid ""
"The HashingContext class provides an interface for computing cryptographic "
"hashes over multiple iterations. This is useful for example when computing "
@@ -33894,8 +34019,7 @@ msgstr ""
" var res = ctx.finish()\n"
" # 以åå…­è¿›åˆ¶å­—ç¬¦ä¸²å’Œæ•°ç»„çš„å½¢å¼æ‰“å°ç»“果。\n"
" printt(res.hex_encode(), Array(res))\n"
-"[/codeblock]\n"
-"[b]注æ„:[/b]这在导出为 HTML5 时是ä¸å¯ç”¨çš„。"
+"[/codeblock]"
#: doc/classes/HashingContext.xml
msgid "Closes the current context, and return the computed hash."
@@ -36914,16 +37038,15 @@ msgstr "在映射数æ®åº“中添加新的映射æ¡ç›®ï¼ˆSDL2 æ ¼å¼ï¼‰ã€‚å¯é€‰æ
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
"want precise control over the timing of event handling."
msgstr ""
"将当å‰ç¼“冲区内的所有输入事件å‘é€ç»™æ¸¸æˆå¾ªçŽ¯ã€‚è¿™äº›äº‹ä»¶å¯èƒ½æ˜¯ç”±äºŽç´¯ç§¯è¾“å…¥"
-"([method set_use_accumulated_input]ï¼‰æˆ–æ•æ·è¾“入刷新([member "
-"ProjectSettings.input_devices/buffering/agile_event_flushing])而被缓冲的结"
-"果。\n"
+"([member use_accumulated_input]ï¼‰æˆ–æ•æ·è¾“入刷新([member ProjectSettings."
+"input_devices/buffering/agile_event_flushing])而被缓冲的结果。\n"
"引擎已ç»ä¼šåœ¨å…³é”®çš„æ‰§è¡Œç‚¹æ‰§è¡Œæ­¤æ“作,至少æ¯å¸§ä¸€æ¬¡ã€‚然而,在你想è¦ç²¾ç¡®æŽ§åˆ¶äº‹ä»¶"
"å¤„ç†æ—¶é—´çš„高级情况下,这å¯èƒ½æ˜¯æœ‰ç”¨çš„。"
@@ -37110,10 +37233,6 @@ msgstr ""
"起。"
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr "返回鼠标模å¼ã€‚有关更多信æ¯ï¼Œè¯·å‚阅常é‡ã€‚"
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -37396,30 +37515,6 @@ msgstr ""
"[b]注æ„:[/b]在 Android å’Œ iOS 上,这个值å¯ç«‹å³è¢«ç¡¬ä»¶ä¼ æ„Ÿå™¨çš„值所覆盖。"
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr "设置鼠标模å¼ã€‚有关更多信æ¯ï¼Œè¯·å‚阅常é‡ã€‚"
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-"å¯ç”¨æˆ–ç¦ç”¨æ“作系统å‘é€çš„类似输入事件的累积。当å¯ç”¨è¾“入累积时,在一帧中产生的"
-"所有输入事件将被åˆå¹¶ï¼Œå¹¶åœ¨è¯¥å¸§å®Œæˆæ¸²æŸ“æ—¶å‘出。因此,这é™åˆ¶äº†æ¯ç§’的输入方法调"
-"用次数,使之与渲染FPS相一致。\n"
-"输入累加在默认情况下是å¯ç”¨çš„。它å¯ä»¥è¢«ç¦ç”¨ï¼Œå°†ä»¥å¢žåŠ CPU使用率为代价,获得ç¨å¾®"
-"æ›´ç²¾ç¡®åŠæ›´çµæ•的输入。在需è¦è‡ªç”±ç»˜åˆ¶çº¿æ¡çš„åº”ç”¨ä¸­ï¼Œä¸€èˆ¬åº”ç”¨åœ¨ç”¨æˆ·ç»˜åˆ¶çº¿æ¡æ—¶ç¦"
-"用输入累加,以获得紧跟实际输入的结果。"
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -37469,6 +37564,30 @@ msgstr ""
"MOUSE_MODE_CONFINED] 时则是é™åˆ¶åœ¨æ¸¸æˆçª—å£å†…。"
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr "控制鼠标模å¼ã€‚详情请å‚阅 [enum MouseMode]。"
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+"如果为 [code]true[/code],会对æ“作系统å‘é€çš„类似输入事件进行累积。当å¯ç”¨è¾“å…¥"
+"累积时,在一帧中产生的所有输入事件将被åˆå¹¶ï¼Œå¹¶åœ¨è¯¥å¸§å®Œæˆæ¸²æŸ“æ—¶å‘出。因此,这"
+"é™åˆ¶äº†æ¯ç§’的输入方法调用次数,使之与渲染FPS相一致。\n"
+"输入累加在默认情况下是å¯ç”¨çš„。它å¯ä»¥è¢«ç¦ç”¨ï¼Œå°†ä»¥å¢žåŠ CPU使用率为代价,获得ç¨å¾®"
+"æ›´ç²¾ç¡®åŠæ›´çµæ•的输入。在需è¦è‡ªç”±ç»˜åˆ¶çº¿æ¡çš„åº”ç”¨ä¸­ï¼Œä¸€èˆ¬åº”ç”¨åœ¨ç”¨æˆ·ç»˜åˆ¶çº¿æ¡æ—¶ç¦"
+"用输入累加,以获得紧跟实际输入的结果。"
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr "è¿žæŽ¥æˆ–æ–­å¼€æ¸¸æˆæ‰‹æŸ„设备时触å‘。"
@@ -37855,9 +37974,10 @@ msgstr ""
"被释放。"
#: doc/classes/InputEventJoypadButton.xml
+#, fuzzy
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
"如果控制器支æŒï¼Œåˆ™è¡¨ç¤ºç”¨æˆ·ç”¨æ‰‹æŒ‡åœ¨æŒ‰é’®ä¸Šæ–½åŠ çš„åŽ‹åŠ›ã€‚èŒƒå›´ä»Ž [code]0[/code] 到 "
"[code]1[/code]。"
@@ -38195,9 +38315,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -38205,11 +38325,11 @@ msgstr ""
"包å«é¼ æ ‡å’Œç¬”çš„è¿åŠ¨ä¿¡æ¯ã€‚支æŒç›¸å¯¹ã€ç»å¯¹ä½ç½®å’Œé€Ÿåº¦ã€‚请å‚阅 [method Node."
"_input]。\n"
"[b]注æ„:[/b]默认情况下,这个事件最多åªèƒ½åœ¨æ¯ä¸€å¸§æ¸²æŸ“中å‘å‡ºä¸€æ¬¡ã€‚å¦‚æžœä½ éœ€è¦æ›´"
-"精确的输入报告,请用 [code]false[/code] 调用 [method Input."
-"set_use_accumulated_input] æ¥ä½¿äº‹ä»¶å°½å¯èƒ½é¢‘ç¹åœ°å‘射。如果你使用 "
-"InputEventMouseMotion æ¥ç”»çº¿ï¼Œè¯·è€ƒè™‘åŒæ—¶å®žçް [url=https://en.wikipedia.org/"
-"wiki/Bresenham%27s_line_algorithm]Bresenham 的线æ¡ç®—法[/url],以é¿å…在用户快"
-"速移动鼠标时出现å¯è§çš„线æ¡ç©ºéš™ã€‚"
+"精确的输入报告,请将 [member Input.use_accumulated_input] 设为 [code]false[/"
+"code],让事件尽å¯èƒ½é¢‘ç¹åœ°å‘射。如果你使用 InputEventMouseMotion æ¥ç”»çº¿ï¼Œè¯·è€ƒ"
+"è™‘åŒæ—¶å®žçް [url=https://en.wikipedia.org/wiki/"
+"Bresenham%27s_line_algorithm]Bresenham 的线æ¡ç®—法[/url],以é¿å…在用户快速移动"
+"鼠标时出现å¯è§çš„线æ¡ç©ºéš™ã€‚"
#: doc/classes/InputEventMouseMotion.xml
msgid "Mouse and input coordinates"
@@ -43485,13 +43605,14 @@ msgstr "用于在2D中显示[Mesh]的节点。"
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
-"用于在2D中显示[Mesh]的节点。å¯ä»¥é€šè¿‡ç¼–辑器工具æ ä¸Šçš„工具从现有的[Sprite]æž„"
-"建。选择 \"Sprite\",然åŽé€‰æ‹© \"转æ¢ä¸ºMesh2D\",在弹出的窗å£ä¸­é€‰æ‹©è®¾ç½®å¹¶æŒ‰ä¸‹ "
-"\"创建Mesh2D\"。"
+"用于在 2D 中显示 [Mesh] 的节点。å¯ä»¥é€šè¿‡ç¼–辑器工具æ ä¸Šçš„工具从现有的 "
+"[Sprite] 构建。选中 [Sprite] 节点,然åŽåœ¨ 2D 编辑器视区顶部选择[b]ç²¾çµ > 转æ¢"
+"为 MeshInstance2D[/b]。"
#: doc/classes/MeshInstance2D.xml
msgid "The [Mesh] that will be drawn by the [MeshInstance2D]."
@@ -44489,6 +44610,10 @@ msgstr ""
"导航网格之间的交点。如果找到多个交点,则返回最接近线段起点的交点。"
#: doc/classes/Navigation.xml
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr "返回这个导航地图在 [NavigationServer] 上的 [RID]。"
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -44514,12 +44639,26 @@ msgstr "该值用于检测相近的边界,连接兼容的地区。"
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+"ä½åŸŸï¼Œç”¨äºŽå†³å®šåœ¨ä½¿ç”¨ [method Navigation.get_simple_path] 进行路径请求时,导航"
+"所能用到的导航地图层。"
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
"定义了å‘上的方å‘。默认情况下,这是[code](0,1,0)[/code],这是世界的“å‘ä¸Šâ€æ–¹"
"å‘。"
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr "当导航地图更新时ã€åœ°åŒºç§»åŠ¨æˆ–è¢«ä¿®æ”¹æ—¶å‘出。"
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr "2D 导航和寻路节点。"
@@ -44561,6 +44700,14 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr "用于字段的 XZ å¹³é¢å•元尺寸。"
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+"ä½åŸŸï¼Œç”¨äºŽå†³å®šåœ¨ä½¿ç”¨ [method Navigation2D.get_simple_path] 进行路径请求时,导"
+"航所能用到的导航地图层。"
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr "访问底层 2D 导航的æœåŠ¡å™¨æŽ¥å£ã€‚"
@@ -44570,11 +44717,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -44589,9 +44744,16 @@ msgstr ""
"Navigation2DServer 是负责所有 2D 导航的æœåŠ¡å™¨ï¼Œå¤„ç†çš„对象有地图(map)ã€åœ°åŒº"
"(region)ã€ä»£ç†ï¼ˆagent)。\n"
"地图是由地区组æˆçš„,地区åˆç”±å¯¼èˆªå¤šè¾¹å½¢ç»„æˆã€‚å®ƒä»¬ä¸€åŒæž„æˆäº† 2D 世界中的å¯å¯¼èˆª"
-"区域。两个地区必须共有一æ¡ç›¸ä¼¼çš„边界(edge)æ‰èƒ½ç›¸è¿žã€‚如果一æ¡è¾¹ç•Œçš„两个顶点"
-"(vertex)与å¦ä¸€æ¡è¾¹ç•Œçš„对应顶点的è·ç¦»å°äºŽ [member Navigation."
-"edge_connection_margin],则认为这两æ¡è¾¹ç•Œç›¸è¿žã€‚\n"
+"区域。\n"
+"[b]注æ„:[/b]NavigationServer 的大多数修改都è¦åœ¨ä¸‹ä¸€ä¸ªç‰©ç†å¸§ä¹‹åŽç”Ÿæ•ˆï¼Œä¸æ˜¯ç«‹"
+"å³ç”Ÿæ•ˆçš„。SceneTree 中导航相关的节点对地图ã€åœ°åŒºã€ä»£ç†ä½œå‡ºçš„修改也是如此,通"
+"过脚本作出的修改亦然。\n"
+"两个地区必须共有一æ¡ç›¸ä¼¼çš„边界(edge)æ‰èƒ½ç›¸è¿žã€‚如果一æ¡è¾¹ç•Œçš„两个顶点"
+"(vertex)与å¦ä¸€æ¡è¾¹ç•Œçš„对应顶点的è·ç¦»å°äºŽ [code]edge_connection_margin[/"
+"code],则认为这两æ¡è¾¹ç•Œç›¸è¿žã€‚\n"
+"ä½ å¯ä»¥é€šè¿‡ [method Navigation2DServer.region_set_navigation_layers] 为地区设"
+"置导航层,使用 [method Navigation2DServer.map_get_path] 请求路径时会对导航层"
+"进行检查。这样就能够对 2D 对象å¯ç”¨æˆ–ç¦ç”¨æŸäº›åŒºåŸŸã€‚\n"
"è¦ä½¿ç”¨é˜²æ’žç³»ç»Ÿï¼Œå¯ä»¥ä½¿ç”¨ä»£ç†ã€‚ä½ å¯ä»¥è®¾ç½®ä»£ç†çš„目标速度,æœåŠ¡å™¨å°±ä¼šä½¿ç”¨ä¿®æ­£åŽ"
"的速度触å‘回调。\n"
"[b]注æ„:[/b]防撞系统会忽略地区。直接使用修正åŽçš„速度å¯èƒ½ä¼šå°†ä»£ç†æŽ¨åˆ°å¯å¯¼èˆªåŒº"
@@ -44614,8 +44776,24 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr "如果地图在上一帧å‘生了改å˜ï¼Œåˆ™è¿”回 [code]true[/code]。"
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
-msgstr "在 RVO å¤„ç†æœ«å°¾è°ƒç”¨çš„回调。"
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
+msgstr ""
+"在 RVO å¤„ç†æœ«å°¾è°ƒç”¨çš„回调。如果手动创建了回调,并且代ç†ä½äºŽå¯¼èˆªåœ°å›¾ä¸Šï¼Œå°±ä¼šä¸º"
+"该代ç†è®¡ç®—é¿éšœï¼Œå¹¶å°†è®¡ç®—出的安全速度 [code]safe_velocity[/code] 通过信å·å‘é€"
+"ç»™ [code]receiver[/code] 对象上å为 [code]method[/code] 的方法。\n"
+"[b]注æ„:[/b]åªè¦ä»£ç†è¿˜åœ¨å¯¼èˆªåœ°å›¾ä¸Šä¸”未被释放,创建的回调就始终会进行处ç†ï¼Œæ— "
+"论 SceneTree 的状æ€å¦‚何。è¦ç¦ç”¨æŸä¸ªä»£ç†çš„回调分å‘ï¼Œè¯·å†æ¬¡ä½¿ç”¨ [method "
+"agent_set_callback],为 [code]receiver[/code] 设置为 [code]null[/code]。"
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Puts the agent in the map."
@@ -44685,6 +44863,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr "返回所有与请求的导航地图 [code]map[/code] å…³è”的导航代ç†çš„ [RID]。"
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr "返回地图å•元格高度。[b]注æ„:[/b]尚未实现。"
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Returns the map cell size."
msgstr "返回地图的å•元格大å°ã€‚"
@@ -44708,8 +44890,13 @@ msgid ""
msgstr "返回地图的边界连接边è·ã€‚è¾¹ç•Œè¿žæŽ¥è¾¹è·æ˜¯ç”¨äºŽè¿žæŽ¥ä¸¤ä¸ªåœ°åŒºçš„è·ç¦»ã€‚"
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
-msgstr "返回从原点到终点的导航路径。"
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
+msgstr ""
+"返回从起点到达终点的导航路径。[code]navigation_layers[/code] 是å…许在路径中出"
+"çŽ°çš„æ‰€æœ‰åœ°åŒºå±‚çš„ä½æŽ©ç ã€‚"
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
@@ -44725,6 +44912,12 @@ msgstr "如果地图处于活动状æ€ï¼Œåˆ™è¿”回 [code]true[/code]。"
msgid "Sets the map active."
msgstr "设置地图的激活æ€ã€‚"
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr "设置用于焊接导航网格多边形的地图å•元格高度。[b]注æ„:[/b]尚未实现。"
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr "设置用于焊接导航网格多边形的地图å•元格大å°ã€‚"
@@ -44740,14 +44933,62 @@ msgstr "创建一个新的地区。"
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+"返回连接门的终点。[code]connection[/code] 是 0 和 [method "
+"region_get_connections_count] 返回值之间的索引å·ã€‚"
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+"返回连接门的起点。[code]connection[/code] 是 0 和 [method "
+"region_get_connections_count] 返回值之间的索引å·ã€‚"
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr "返回 [code]region[/code] 地区与其他地区在地图上有多少连接。"
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr "返回 [code]region[/code] 地区的进入消耗 [code]enter_cost[/code]。"
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr "返回请求的导航地区 [code]region[/code] 所关è”的导航地图的 [RID]。"
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the region's navigation layers."
+msgstr "返回该地区的导航层。"
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr "返回 [code]region[/code] 地区的移动消耗 [code]travel_cost[/code]。"
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr "设置 [code]region[/code] 地区的进入消耗 [code]enter_cost[/code]。"
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the map for the region."
msgstr "设置该地区的地图。"
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+"设置该地区的导航层。å¯ç”¨äºŽï¼ˆä½¿ç”¨ [method Navigation2DServer.map_get_path])请"
+"求路径时对地区进行选择。"
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the navigation mesh for the region."
msgstr "设置该地图的导航网格。"
@@ -44756,6 +44997,10 @@ msgstr "设置该地图的导航网格。"
msgid "Sets the global transformation for the region."
msgstr "è®¾ç½®è¯¥åœ°åŒºçš„å…¨å±€å˜æ¢ã€‚"
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr "设置 [code]region[/code] 地区的移动消耗 [code]travel_cost[/code]。"
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr "在导航中用于防撞的 3D 代ç†ã€‚"
@@ -44765,14 +45010,26 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
"导航中使用的 3D 代ç†ï¼Œå¯ä»¥åœ¨å‰å¾€æŸä¸ªä½ç½®æ—¶èº²é¿é™æ€å’ŒåЍæ€éšœç¢ç‰©ã€‚躲é¿åЍæ€éšœç¢"
"物使用的是 RVO(Reciprocal Velocity Obstacles,相对速度障ç¢ç‰©ï¼‰é˜²æ’žç®—法。代ç†"
-"需è¦å¯¼èˆªæ•°æ®æ‰èƒ½æ­£ç¡®å·¥ä½œã€‚å¯ä»¥é€šè¿‡è®©ä»£ç†æˆä¸º [Navigation] 节点的å­é¡¹å®žçŽ°ï¼Œä¹Ÿ"
-"å¯ä»¥ä½¿ç”¨ [method set_navigation]。[NavigationAgent] 是物ç†å®‰å…¨çš„。"
+"需è¦å¯¼èˆªæ•°æ®æ‰èƒ½æ­£ç¡®å·¥ä½œã€‚默认情况下,这个节点会在默认的 [World] 导航地图中进"
+"行注册。如果这个节点是 [Navigation] 节点的å­é¡¹ï¼Œé‚£ä¹ˆå°±ä¼šåœ¨è¿™ä¸ªå¯¼èˆªèŠ‚ç‚¹çš„å¯¼èˆª"
+"地图中进行注册,也å¯ä»¥ä½¿ç”¨ [method set_navigation] 函数直接设置导航节点。"
+"[NavigationAgent] 是物ç†å®‰å…¨çš„。\n"
+"[b]注æ„:[/b]使用 [method set_target_location] 之åŽï¼Œå¿…须在æ¯ä¸ªç‰©ç†å¸§ä½¿ç”¨ä¸€"
+"次 [method get_next_location] å‡½æ•°æ¥æ›´æ–° NavigationAgent 的内部路径逻辑。这个"
+"函数返回的å‘é‡ä½ç½®åº”该用作该代ç†çš„父节点的下一次移动ä½ç½®ã€‚"
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
@@ -44793,8 +45050,21 @@ msgstr ""
"å¯èƒ½å‘生å˜åŒ–。因此,最好æ¯ä¸€å¸§éƒ½æ£€æŸ¥ä¸€ä¸‹ã€‚"
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
-msgstr "è¿”å›žä»Žèµ·ç‚¹åˆ°ç»ˆç‚¹çš„è·¯å¾„ï¼Œä½¿ç”¨å…¨å±€åæ ‡ã€‚"
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
+msgstr ""
+"返回这个代ç†ä»Žèµ·ç‚¹åˆ°ç»ˆç‚¹çš„当å‰è·¯å¾„ï¼Œä½¿ç”¨å…¨å±€åæ ‡ã€‚该路径åªä¼šåœ¨ç›®æ ‡ä½ç½®å‘生å˜"
+"化,或者代ç†è¦æ±‚釿–°è®¡ç®—路径时更新。路径数组ä¸åº”ç›´æŽ¥ç”¨ä½œç§»åŠ¨è·¯å¾„ï¼Œä»£ç†æœ‰å…¶å†…"
+"部的路径逻辑,手动修改路径数组å¯èƒ½ä¼šé€ æˆç ´å。请在æ¯ä¸€ä¸ªç‰©ç†å¸§ä¸­è°ƒç”¨ä¸€æ¬¡ "
+"[method get_next_location] 获å–该代ç†çš„下一个路径点,这个函数会更新其内部的路"
+"径逻辑。"
#: doc/classes/NavigationAgent.xml
msgid ""
@@ -44808,14 +45078,33 @@ msgid ""
"system."
msgstr "返回该代ç†çš„导航系统所使用的 [Navigation] 节点。"
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+"返回这个 NavigationAgent 节点的导航地图的 [RID]。这个函数返回的始终是在 "
+"NavigationAgent ä¸Šè®¾ç½®çš„åœ°å›¾ï¼Œä¸æ˜¯ NavigationServer ä¸Šçš„æŠ½è±¡ä»£ç†æ‰€ä½¿ç”¨çš„地"
+"图。如果通过 NavigationServer API 修改了代ç†çš„地图,该 NavigationAgent 节点是"
+"ä¸ä¼šæ„ŸçŸ¥åˆ°åœ°å›¾çš„å˜åŒ–的。请使用 [method set_navigation_map] 修改该 "
+"NavigationAgent çš„å¯¼èˆªåœ°å›¾ï¼Œèƒ½å¤ŸåŒæ—¶åœ¨ NavigationServer 上的代ç†ã€‚"
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
-"返回å¯ä»¥ç§»åŠ¨è‡³çš„ [Vector3] 免局忠‡ï¼Œç¡®ä¿ä¸­é€”æ²¡æœ‰é™æ€ç‰©ä½“é˜»æŒ¡ã€‚å¦‚æžœä»£ç†æ²¡æœ‰å¯¼"
-"航路径,则会返回代ç†çˆ¶èŠ‚ç‚¹çš„åŽŸç‚¹ã€‚"
+"返回å¯ä»¥ç§»åŠ¨è‡³çš„ä¸‹ä¸€ä¸ªä½ç½®ï¼Œä½¿ç”¨å…¨å±€å标,确ä¿ä¸­é€”æ²¡æœ‰é™æ€ç‰©ä½“阻挡。如果代ç†"
+"没有导航路径,则会返回代ç†çˆ¶èŠ‚ç‚¹çš„ä½ç½®ã€‚必须在æ¯ä¸ªç‰©ç†å¸§éƒ½è°ƒç”¨ä¸€æ¬¡è¿™ä¸ªå‡½æ•°ï¼Œ"
+"更新 NavigationAgent 内部的路径逻辑。"
#: doc/classes/NavigationAgent.xml
msgid "Returns the [RID] of this agent on the [NavigationServer]."
@@ -44862,6 +45151,14 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+"设置这个 NavigationAgent 节点所应使用的导航地图的 [RID]ï¼ŒåŒæ—¶è¿˜ä¼šæ›´æ–° "
+"NavigationServer ä¸Šçš„ä»£ç† [code]agent[/code]。"
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr "设置用户期望的终点ä½ç½®ã€‚会将当å‰å¯¼èˆªè·¯å¾„清空。"
@@ -44876,8 +45173,18 @@ msgstr ""
"ä¼šè§¦å‘ [signal velocity_computed] ä¿¡å·ã€‚"
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
-msgstr "代ç†çš„高度åç§»é‡ï¼Œç”¨äºŽåŒ¹é…导航网格的高度。"
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
+msgstr ""
+"这个 NavigationAgent 的任何å‘é‡ä½ç½®çš„ Y åæ ‡å€¼éƒ½ä¼šå‡åŽ» NavigationAgent 的高度"
+"åç§»é‡ã€‚NavigationAgent 的高度åç§»é‡ä¸ä¼šå‘生改å˜ï¼Œä¹Ÿä¸ä¼šå½±å“导航网格和寻路结"
+"果。如果其他导航地图使用了带有导航网格的地区,开å‘者使用åˆé€‚的代ç†åŠå¾„或高度"
+"对其进行了烘焙,那么就必须支æŒä¸åŒå¤§å°çš„代ç†ã€‚"
#: doc/classes/NavigationAgent.xml
msgid ""
@@ -44908,6 +45215,15 @@ msgstr "ä»£ç†æ‰€éœ€è€ƒè™‘的最大邻居数。"
msgid "The maximum speed that an agent can move."
msgstr "ä»£ç†æ‰€èƒ½è¾¾åˆ°çš„æœ€å¤§ç§»åŠ¨é€Ÿåº¦ã€‚"
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+"ä½åŸŸï¼Œç”¨äºŽå†³å®šè¯¥ [NavigationAgent] 所属的导航地图层。请求路径时,代ç†ä¼šå¿½ç•¥æ²¡"
+"有任何匹é…层的导航网格。"
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr "æœç´¢å…¶ä»–代ç†çš„è·ç¦»ã€‚"
@@ -44978,14 +45294,26 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
"导航中使用的 2D 代ç†ï¼Œå¯ä»¥åœ¨å‰å¾€æŸä¸ªä½ç½®æ—¶èº²é¿é™æ€å’ŒåЍæ€éšœç¢ç‰©ã€‚躲é¿åЍæ€éšœç¢"
"物使用的是 RVO(Reciprocal Velocity Obstacles,相对速度障ç¢ç‰©ï¼‰é˜²æ’žç®—法。代ç†"
-"需è¦å¯¼èˆªæ•°æ®æ‰èƒ½æ­£ç¡®å·¥ä½œã€‚å¯ä»¥é€šè¿‡è®©ä»£ç†æˆä¸º [Navigation2D] 节点的å­é¡¹å®žçŽ°ï¼Œ"
-"也å¯ä»¥ä½¿ç”¨ [method set_navigation]。[NavigationAgent2D] 是物ç†å®‰å…¨çš„。"
+"需è¦å¯¼èˆªæ•°æ®æ‰èƒ½æ­£ç¡®å·¥ä½œã€‚默认情况下,这个节点会在默认的 [World2D] 导航地图中"
+"进行注册。如果这个节点是 [Navigation2D] 节点的å­é¡¹ï¼Œé‚£ä¹ˆå°±ä¼šåœ¨è¿™ä¸ªå¯¼èˆªèŠ‚ç‚¹çš„"
+"导航地图中进行注册,也å¯ä»¥ä½¿ç”¨ [method set_navigation] 函数直接设置导航节点。"
+"[NavigationAgent2D] 是物ç†å®‰å…¨çš„。\n"
+"[b]注æ„:[/b]使用 [method set_target_location] 之åŽï¼Œå¿…须在æ¯ä¸ªç‰©ç†å¸§ä½¿ç”¨ä¸€"
+"次 [method get_next_location] å‡½æ•°æ¥æ›´æ–° NavigationAgent 的内部路径逻辑。这个"
+"函数返回的å‘é‡ä½ç½®åº”该用作该代ç†çš„父节点的下一次移动ä½ç½®ã€‚"
#: doc/classes/NavigationAgent2D.xml
msgid ""
@@ -45000,15 +45328,6 @@ msgid ""
msgstr "返回该代ç†çš„导航系统所使用的 [Navigation2D] 节点。"
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-"返回å¯ä»¥ç§»åŠ¨è‡³çš„ [Vector2] 免局忠‡ï¼Œç¡®ä¿ä¸­é€”æ²¡æœ‰é™æ€ç‰©ä½“é˜»æŒ¡ã€‚å¦‚æžœä»£ç†æ²¡æœ‰å¯¼"
-"航路径,则会返回代ç†çˆ¶èŠ‚ç‚¹çš„åŽŸç‚¹ã€‚"
-
-#: doc/classes/NavigationAgent2D.xml
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr "返回这个代ç†åœ¨ [Navigation2DServer] 上的 [RID]。"
@@ -45035,6 +45354,15 @@ msgstr ""
"code]。为é¿éšœå¤„ç†æ³¨å†Œå¤§é‡ä»£ç†ä¼šå¯¹æ€§èƒ½æœ‰æ˜¾è‘—å½±å“,应该åªåœ¨å½“剿œ‰éœ€è¦çš„代ç†ä¸Šå¯"
"用。"
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+"ä½åŸŸï¼Œç”¨äºŽå†³å®šè¯¥ [NavigationAgent2D] 所属的导航地图层。请求路径时,代ç†ä¼šå¿½ç•¥"
+"没有任何匹é…层的导航网格。"
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr "ç”¨äºŽæ¨¡æ‹Ÿå¯æ­¥è¡ŒåŒºåŸŸå’Œéšœç¢ç‰©çš„网格。"
@@ -45067,9 +45395,10 @@ msgstr "é€šè¿‡æ ¹æ® [Mesh] 设置顶点和索引æ¥åˆå§‹åŒ–导航网格。"
#: doc/classes/NavigationMesh.xml
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
-msgstr "返回[member geometry/collision_mask]的指定[code]bit[/code]是å¦è¢«è®¾ç½®ã€‚"
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
+msgstr ""
+"返回 [member geometry_collision_mask] 上指定的 [code]bit[/code] 是å¦å·²è®¾ç½®ã€‚"
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
msgid ""
@@ -45090,14 +45419,14 @@ msgstr "返回包å«ç”¨äºŽåˆ›å»ºå¤šè¾¹å½¢çš„æ‰€æœ‰é¡¶ç‚¹çš„[PoolVector3Array]。
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
-"如果 [code]value[/code] 为 [code]true[/code],则在 [member geometry/"
-"collision_mask] 中设置指定的 [code]bit[/code]。\n"
-"如果 [code]value[/code] 为 [code]false[/code],则在 [member geometry/"
-"collision_mask] 中清除指定的 [code]bit[/code]。"
+"如果 [code]value[/code] 为 [code]true[/code],则在 [member "
+"geometry_collision_mask] 中设置指定的 [code]bit[/code]。\n"
+"如果 [code]value[/code] 为 [code]false[/code],则在 [member "
+"geometry_collision_mask] 中清除指定的 [code]bit[/code]。"
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
msgid ""
@@ -45110,19 +45439,19 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
"地æ¿åˆ°å¤©èбæ¿çš„æœ€å°é«˜åº¦ï¼Œä»ç„¶å…许被认为是å¯è¡Œèµ°çš„地æ¿ã€‚\n"
-"[b]注æ„:[/b]烘焙时,这个值会å‘ä¸Šå–æ•´åˆ°æœ€æŽ¥è¿‘çš„ [member cell/height] çš„å€æ•°ã€‚"
+"[b]注æ„:[/b]烘焙时,这个值会å‘ä¸Šå–æ•´åˆ°æœ€æŽ¥è¿‘çš„ [member cell_height] çš„å€æ•°ã€‚"
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
"被认为ä»å¯ç©¿è¶Šçš„æœ€å°å¢™å£é«˜åº¦ã€‚\n"
-"[b]注æ„:[/b]烘焙时,该值将å‘下èˆå…¥åˆ°æœ€æŽ¥è¿‘çš„ [member cell/height] çš„å€æ•°ã€‚"
+"[b]注æ„:[/b]烘焙时,该值将å‘下èˆå…¥åˆ°æœ€æŽ¥è¿‘çš„ [member cell_height] çš„å€æ•°ã€‚"
#: doc/classes/NavigationMesh.xml
msgid "The maximum slope that is considered walkable, in degrees."
@@ -45133,10 +45462,10 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
"侵蚀/缩å°è¿œç¦»éšœç¢ç‰©çš„高度场的å¯è¡Œèµ°åŒºåŸŸè·ç¦»ã€‚\n"
-"[b]注æ„:[/b]烘焙时,这个值会å‘ä¸Šå–æ•´åˆ°æœ€æŽ¥è¿‘çš„ [member cell/size] çš„å€æ•°ã€‚"
+"[b]注æ„:[/b]烘焙时,这个值会å‘ä¸Šå–æ•´åˆ°æœ€æŽ¥è¿‘çš„ [member cell_size] çš„å€æ•°ã€‚"
#: doc/classes/NavigationMesh.xml
msgid "The Y axis cell size to use for fields."
@@ -45163,18 +45492,10 @@ msgstr "简化轮廓的边界边缘应å离原始原始轮廓的最大è·ç¦»ã€‚
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
"沿网格边界的轮廓的最大å…许长度。\n"
-"[b]注æ„:[/b]烘焙时,这个值会å‘ä¸Šå–æ•´åˆ°æœ€æŽ¥è¿‘çš„[member cell/size]çš„å€æ•°ã€‚"
-
-#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
-msgstr ""
-"如果为 [code]true[/code],如果跨度上方的间隙å°äºŽ [member agent/height],则将"
-"å¯è¡Œèµ°èŒƒå›´æ ‡è®°ä¸ºä¸å¯è¡Œèµ°ã€‚"
+"[b]注æ„:[/b]烘焙时,这个值会å‘ä¸Šå–æ•´åˆ°æœ€æŽ¥è¿‘çš„[member cell_size]çš„å€æ•°ã€‚"
#: doc/classes/NavigationMesh.xml
msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
@@ -45183,19 +45504,27 @@ msgstr "如果为 [code]true[/code],则标记边缘间的跨度为ä¸å¯è¡Œèµ°
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"is within [member agent_max_climb] of a walkable neighbor."
msgstr ""
-"如果为 [code]true[/code],如果它们的最大值在å¯è¡Œèµ°é‚»åŸŸçš„ [member agent/"
-"max_climb] 内,则将ä¸å¯è¡Œèµ°èŒƒå›´æ ‡è®°ä¸ºå¯è¡Œèµ°ã€‚"
+"如果为 [code]true[/code],如果它们的最大值在å¯è¡Œèµ°é‚»åŸŸçš„ [member "
+"agent_max_climb] 内,则将ä¸å¯è¡Œèµ°èŒƒå›´æ ‡è®°ä¸ºå¯è¡Œèµ°ã€‚"
+
+#: doc/classes/NavigationMesh.xml
+msgid ""
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
+msgstr ""
+"如果为 [code]true[/code],如果跨度上方的间隙å°äºŽ [member agent_height],则将"
+"å¯è¡Œèµ°èŒƒå›´æ ‡è®°ä¸ºä¸å¯è¡Œèµ°ã€‚"
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
"用于扫æé™æ€ç¢°æ’žçš„物ç†å±‚。\n"
-"仅在 [member geometry/parsed_geometry_type]是[constant "
+"仅在 [member geometry_parsed_geometry_type] 是 [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] 或 [constant PARSED_GEOMETRY_BOTH] æ—¶æ‰ä½¿"
"用。"
@@ -45214,12 +45543,12 @@ msgstr "烘焙时使用的几何体的æºã€‚å‚阅 [enum SourceGeometryMode]。"
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
"è¦æ‰«æçš„几何体组的å称。\n"
-"åªæœ‰å½“ [member geometry/source_geometry_mode]是[constant "
+"åªæœ‰å½“ [member geometry_source_geometry_mode] 是 [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] 或 [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT] æ—¶æ‰ä½¿ç”¨ã€‚"
@@ -45290,10 +45619,10 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
-"å°† [StaticBody] 碰撞器解æžä¸ºå‡ ä½•体。碰撞器应ä½äºŽ [member geometry/"
-"collision_mask] 指定的任何层中。"
+"å°† [StaticBody] 碰撞器解æžä¸ºå‡ ä½•体。碰撞器应ä½äºŽ [member "
+"geometry_collision_mask] 指定的任何层中。"
#: doc/classes/NavigationMesh.xml
msgid ""
@@ -45315,17 +45644,17 @@ msgstr "递归扫æ [NavigationMeshInstance] çš„å­èŠ‚ç‚¹ä»¥èŽ·å–几何体。"
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
-"ä»¥é€’å½’æ–¹å¼æ‰«æç»„中的节点åŠå…¶å­èŠ‚ç‚¹ä»¥èŽ·å–几何图形。该组由 [member geometry/"
-"source_group_name] 指定。"
+"ä»¥é€’å½’æ–¹å¼æ‰«æç»„中的节点åŠå…¶å­èŠ‚ç‚¹ä»¥èŽ·å–几何图形。该组由 [member "
+"geometry_source_group_name] 指定。"
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
-"使用一个组中的节点进行几何è¿ç®—。该组由 [member geometry/source_group_name] 指"
+"使用一个组中的节点进行几何è¿ç®—。该组由 [member geometry_source_group_name] 指"
"定。"
#: doc/classes/NavigationMesh.xml
@@ -45386,7 +45715,7 @@ msgstr ""
"æŸ“çš„åœæ»žã€‚一般而言,å¯è§£æžå¯¹è±¡çš„æ€»æ•°ä¸Žå®ƒä»¬å„自的大å°å’Œå¤æ‚度之间应该达到平"
"衡,防止出现帧率问题和超长的烘焙时间。åˆå¹¶åŽçš„网格åŽç»­ä¼šè¢«äº¤ç»™ Recast 导航对"
"è±¡ï¼Œé€šè¿‡åœ¨ç½‘æ ¼çš„åŒ…å›´åŒºåŸŸå‘¨è¾¹åˆ›å»ºä½“ç´ ä¸–ç•Œï¼Œæ¥æ£€æŸ¥åŽŸå§‹å‡ ä½•ä½“ä¸­é€‚åˆ "
-"[Navigationmesh] 代ç†è¡Œèµ°çš„地形。\n"
+"[NavigationMesh] 代ç†è¡Œèµ°çš„地形。\n"
"ç„¶åŽå°±ä¼šè¿”回最终的导航网格,ä¿å­˜åœ¨ [NavigationMesh] 中,å³å¯äº¤ä»˜ "
"[NavigationMeshInstance] 使用。"
@@ -45395,14 +45724,14 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
"将导航数æ®çƒ˜ç„™è‡³æä¾›çš„ [code]nav_mesh[/code] 中。解æžçš„æ˜¯æä¾›çš„æ ¹èŠ‚ç‚¹ "
"[code]root_node[/code] çš„å­èŠ‚ç‚¹ï¼Œæˆ–å¯èƒ½åŒ…å«åŽŸå§‹å‡ ä½•ä½“çš„åˆ†ç»„ã€‚è§£æžè¡Œä¸ºå¯ä»¥é€š"
-"过 [NavigationMesh] 的 [member NavigationMesh.geometry/parsed_geometry_type] "
-"和 [member NavigationMesh.geometry/source_geometry_mode] 属性控制。"
+"过 [NavigationMesh] 的 [member NavigationMesh.geometry_parsed_geometry_type] "
+"和 [member NavigationMesh.geometry_source_geometry_mode] 属性控制。"
#: doc/classes/NavigationMeshGenerator.xml
msgid ""
@@ -45417,11 +45746,34 @@ msgstr "[NavigationMesh] 的一个实例。"
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
-msgstr ""
-"[NavigationMesh] çš„ä¸€ä¸ªå®žä¾‹ã€‚å®ƒä¼šæ ¹æ® [NavigationMesh] 资æºï¼Œå‘ŠçŸ¥ "
-"[Navigation] 节点什么å¯ä»¥å¯¼èˆªã€ä»€ä¹ˆä¸å¯ä»¥ã€‚应该是 [Navigation] 节点的å­èŠ‚ç‚¹ã€‚"
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
+msgstr ""
+"[NavigationMesh] 的实例。[Navigation] 节点根æ®å®ƒçš„ [NavigationMesh] èµ„æºæ¥ç¡®"
+"定哪些å¯ä»¥è¿›è¡Œå¯¼èˆªã€å“ªäº›ä¸èƒ½ã€‚\n"
+"默认情况下,这个节点会在默认的 [World] 导航地图中进行注册。如果这个节点是 "
+"[Navigation] 节点的å­é¡¹ï¼Œå°±ä¼šåœ¨è¯¥å¯¼èˆªèŠ‚ç‚¹çš„å¯¼èˆªåœ°å›¾ä¸­è¿›è¡Œæ³¨å†Œã€‚\n"
+"如果两个地图共享类似的边界,就å¯ä»¥ç›¸äº’连接。你å¯ä»¥é€šè¿‡ [method "
+"NavigationServer.map_set_edge_connection_margin] 设置两个顶点连接两æ¡è¾¹ç•Œæ‰€éœ€"
+"的最å°è·ç¦»ã€‚\n"
+"[b]注æ„:[/b]将两个地区的导航网格相互é‡å å¹¶ä¸è¶³ä»¥å°†å…¶ç›¸è¿žã€‚它们必须共享类似的"
+"边界。\n"
+"从å¦ä¸€ä¸ªåœ°åŒºè¿›å…¥è¿™ä¸ªåœ°å›¾çš„æ¶ˆè€—å¯ä»¥é€šè¿‡ [member enter_cost] 进行控制。\n"
+"[b]注æ„:[/b]如果起点已ç»ä½äºŽè¿™ä¸ªåœ°åŒºä¹‹ä¸­ï¼Œè¿™ä¸ªå€¼ä¸ä¼šåŠ å…¥åˆ°è·¯å¾„æ¶ˆè€—ä¹‹ä¸­ã€‚\n"
+"在这个地区中移动所需的消耗å¯ä»¥é€šè¿‡ [member travel_cost] 系数进行控制。"
#: doc/classes/NavigationMeshInstance.xml
msgid ""
@@ -45458,10 +45810,43 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr "决定该 [NavigationMeshInstance] å·²å¯ç”¨è¿˜æ˜¯å·²ç¦ç”¨ã€‚"
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+#, fuzzy
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+"当从å¦ä¸€ä¸ªå¯¼èˆªåœ°åŒºçš„网格进入这个地区的导航网格进行寻路时,会将进入消耗 "
+"[code]enter_cost[/code] 加入路径长度,从而确定最短路径。"
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+"ä½åŸŸï¼Œç”¨äºŽå†³å®šè¯¥ [NavigationMesh] 所属的导航地图层。使用 [method "
+"NavigationServer.map_get_path] 请求路径时会忽略没有任何匹é…层的导航网格,导航"
+"地图åªä¼šå°†æ‹¥æœ‰åŒ¹é…层的导航网格进行近似åˆå¹¶ã€‚"
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "The [NavigationMesh] resource to use."
msgstr "使用的 [NavigationMesh] 资æºã€‚"
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+#, fuzzy
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+"当在这个地区的导航网格中进行寻路时,会将已移动的è·ç¦»ä¹˜ä¸Šç§»åŠ¨æ¶ˆè€— "
+"[code]travel_cost[/code],从而确定最短路径。"
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr "导航网格烘焙æ“ä½œå®Œæˆæ—¶å‘出通知。"
@@ -45478,11 +45863,15 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
"导航中用于防撞的 3D éšœç¢ç‰©ã€‚éšœç¢ç‰©éœ€è¦å¯¼èˆªæ•°æ®æ‰èƒ½æ­£ç¡®å·¥ä½œã€‚å¯ä»¥é€šè¿‡è®©éšœç¢ç‰©"
"æˆä¸º [Navigation] 节点的å­é¡¹å®žçŽ°ï¼Œä¹Ÿå¯ä»¥ä½¿ç”¨ [method set_navigation]。"
-"[NavigationObstacle] 是物ç†å®‰å…¨çš„。"
+"[NavigationObstacle] 是物ç†å®‰å…¨çš„。\n"
+"[b]注æ„:[/b]éšœç¢ç‰©åº”ä½œä¸ºå¤„ç†æŒç»­ç§»åŠ¨çš„ç‰©ä½“çš„æœ€åŽæ‰‹æ®µï¼Œæ— æ³•è¿›è¡Œé«˜æ•ˆçš„ï¼ˆé‡æ–°ï¼‰"
+"烘焙。"
#: doc/classes/NavigationObstacle.xml
msgid ""
@@ -45524,11 +45913,15 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
"导航中用于防撞的 2D éšœç¢ç‰©ã€‚éšœç¢ç‰©éœ€è¦å¯¼èˆªæ•°æ®æ‰èƒ½æ­£ç¡®å·¥ä½œã€‚å¯ä»¥é€šè¿‡è®©éšœç¢ç‰©"
"æˆä¸º [Navigation2D] 节点的å­é¡¹å®žçŽ°ï¼Œä¹Ÿå¯ä»¥ä½¿ç”¨ [method set_navigation]。"
-"[NavigationObstacle2D] 是物ç†å®‰å…¨çš„。"
+"[NavigationObstacle2D] 是物ç†å®‰å…¨çš„。\n"
+"[b]注æ„:[/b]éšœç¢ç‰©åº”ä½œä¸ºå¤„ç†æŒç»­ç§»åŠ¨çš„ç‰©ä½“çš„æœ€åŽæ‰‹æ®µï¼Œè¿™äº›ç‰©ä½“无法进行高效的"
+"ï¼ˆé‡æ–°ï¼‰çƒ˜ç„™ã€‚"
#: doc/classes/NavigationObstacle2D.xml
msgid ""
@@ -45635,6 +46028,17 @@ msgstr "æ¸…é™¤å¤šè¾¹å½¢æ•°ç»„ï¼Œä½†ä¸æ¸…除轮廓和顶点数组。"
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+"返回这个导航多边形的 [NavigationMesh]。这个导航网格å¯ç”¨äºŽä½¿ç”¨ [method "
+"NavigationServer.region_set_navmesh] API 直接更新æŸä¸ªåœ°åŒºçš„导航网格(2D 在底"
+"层使用的是 3D æœåŠ¡å™¨ï¼‰ã€‚"
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr "返回[PoolVector2Array],包å«åœ¨ç¼–辑器中或通过脚本创建的轮廓的顶点。"
@@ -45675,6 +46079,42 @@ msgstr ""
"make_polygons_from_outlines] æ¥æ›´æ–°å¤šè¾¹å½¢ã€‚"
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr "2D 导航地图上的一个地区。"
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+"导航地图上的地区。[Navigation2DServer] æ ¹æ®å®ƒçš„ [NavigationPolygon] èµ„æºæ¥ç¡®"
+"定哪些å¯ä»¥è¿›è¡Œå¯¼èˆªã€å“ªäº›ä¸èƒ½ã€‚\n"
+"默认情况下,这个节点会在默认的 [World2D] 导航地图中进行注册。如果这个节点是 "
+"[Navigation2D] 节点的å­é¡¹ï¼Œå°±ä¼šåœ¨è¯¥å¯¼èˆªèŠ‚ç‚¹çš„å¯¼èˆªåœ°å›¾ä¸­è¿›è¡Œæ³¨å†Œã€‚\n"
+"如果两个地图共享类似的边界,就å¯ä»¥ç›¸äº’连接。你å¯ä»¥é€šè¿‡ [method "
+"Navigation2DServer.map_set_edge_connection_margin] 设置两个顶点连接两æ¡è¾¹ç•Œæ‰€"
+"需的最å°è·ç¦»ã€‚\n"
+"[b]注æ„:[/b]将两个地区的导航网格相互é‡å å¹¶ä¸è¶³ä»¥å°†å…¶ç›¸è¿žã€‚它们必须共享类似的"
+"边界。\n"
+"从å¦ä¸€ä¸ªåœ°åŒºè¿›å…¥è¿™ä¸ªåœ°å›¾çš„寻路消耗å¯ä»¥é€šè¿‡ [member enter_cost] 进行控制。\n"
+"[b]注æ„:[/b]如果起点已ç»ä½äºŽè¿™ä¸ªåœ°åŒºä¹‹ä¸­ï¼Œè¿™ä¸ªå€¼ä¸ä¼šåŠ å…¥åˆ°è·¯å¾„æ¶ˆè€—ä¹‹ä¸­ã€‚\n"
+"在这个地区中移动所需的寻路消耗å¯ä»¥é€šè¿‡ [member travel_cost] 系数进行控制。"
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -45685,6 +46125,25 @@ msgstr ""
"Navigation2DServer.map_get_closest_point_owner] 组åˆä½¿ç”¨ï¼ŒèŽ·å–åˆå¹¶åŽçš„导航图"
"中与æŸä¸ªç‚¹æœ€æŽ¥è¿‘çš„ [NavigationPolygonInstance]。"
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr "决定该 [NavigationPolygonInstance] å·²å¯ç”¨è¿˜æ˜¯å·²ç¦ç”¨ã€‚"
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+"ä½åŸŸï¼Œç”¨äºŽå†³å®šè¯¥ [NavigationPolygon] 所属的导航地图层。使用 [method "
+"Navigation2DServer.map_get_path] 请求路径时会忽略没有任何匹é…层的导航网格,导"
+"航地图åªä¼šå°†æ‹¥æœ‰åŒ¹é…层的导航网格进行近似åˆå¹¶ã€‚"
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "The [NavigationPolygon] resource to use."
+msgstr "使用的 [NavigationPolygon] 资æºã€‚"
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr "访问底层 3D 导航的æœåŠ¡å™¨æŽ¥å£ã€‚"
@@ -45694,11 +46153,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -45713,7 +46176,11 @@ msgstr ""
"NavigationServer 是负责所有 3D 导航的æœåŠ¡å™¨ï¼Œå¤„ç†çš„对象有地图(map)ã€åœ°åŒº"
"(region)ã€ä»£ç†ï¼ˆagent)。\n"
"地图是由地区组æˆçš„,地区åˆç”±å¯¼èˆªç½‘格组æˆã€‚å®ƒä»¬ä¸€åŒæž„æˆäº† 3D 世界中的å¯å¯¼èˆªåŒº"
-"域。两个地区必须共有一æ¡ç›¸ä¼¼çš„边界(edge)æ‰èƒ½ç›¸è¿žã€‚如果一æ¡è¾¹ç•Œçš„两个顶点"
+"域。\n"
+"[b]注æ„:[/b]NavigationServer 的大多数修改都è¦åœ¨ä¸‹ä¸€ä¸ªç‰©ç†å¸§ä¹‹åŽç”Ÿæ•ˆï¼Œä¸æ˜¯ç«‹"
+"å³ç”Ÿæ•ˆçš„。SceneTree 中导航相关的节点对地图ã€åœ°åŒºã€ä»£ç†ä½œå‡ºçš„修改也是如此,通"
+"过脚本作出的修改亦然。\n"
+"两个地区必须共有一æ¡ç›¸ä¼¼çš„边界(edge)æ‰èƒ½ç›¸è¿žã€‚如果一æ¡è¾¹ç•Œçš„两个顶点"
"(vertex)与å¦ä¸€æ¡è¾¹ç•Œçš„对应顶点的è·ç¦»å°äºŽ [member Navigation."
"edge_connection_margin],则认为这两æ¡è¾¹ç•Œç›¸è¿žã€‚\n"
"è¦ä½¿ç”¨é˜²æ’žç³»ç»Ÿï¼Œå¯ä»¥ä½¿ç”¨ä»£ç†ã€‚ä½ å¯ä»¥è®¾ç½®ä»£ç†çš„目标速度,æœåŠ¡å™¨å°±ä¼šä½¿ç”¨ä¿®æ­£åŽ"
@@ -45772,6 +46239,14 @@ msgid "Bakes the navigation mesh."
msgstr "烘焙导航网格。"
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+"设置该地区的导航层。å¯ä»¥åœ¨ï¼ˆä½¿ç”¨ [method NavigationServer.map_get_path])进行"
+"路径请求时选择地区。"
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr "控制这个æœåŠ¡å™¨æ˜¯å¦æ¿€æ´»ã€‚"
@@ -47163,7 +47638,7 @@ msgid ""
"[b]and[/b] physics interpolation is enabled within the [SceneTree]. This can "
"be tested using [method is_physics_interpolated_and_enabled]."
msgstr ""
-"如果这个 Node è®¾ç½®äº†ç‰©ç†æ’值标志,则返回 [code]true[/code]ï¼ˆè§ [method "
+"如果这个 Node è®¾ç½®äº†ç‰©ç†æ’值标志,则返回 [code]true[/code]ï¼ˆè§ [member "
"physics_interpolation_mode])。\n"
"[b]注æ„:[/b]åªæœ‰åœ¨è®¾ç½®äº†æ ‡å¿—[b]并且[/b]该 [SceneTree] å¯ç”¨äº†ç‰©ç†æ’值时,æ‰ä¼š"
"å¯ç”¨æ’值。å¯ä»¥ä½¿ç”¨ [method is_physics_interpolated_and_enabled] 进行检查。"
@@ -47177,7 +47652,7 @@ msgid ""
"See [member SceneTree.physics_interpolation] and [member ProjectSettings."
"physics/common/physics_interpolation]."
msgstr ""
-"如果å¯ç”¨äº†ç‰©ç†æ’å€¼ï¼ˆè§ [method physics_interpolation_mode])[b]并且[/b]该 "
+"如果å¯ç”¨äº†ç‰©ç†æ’å€¼ï¼ˆè§ [member physics_interpolation_mode])[b]并且[/b]该 "
"[SceneTree] 也å¯ç”¨äº†ç‰©ç†æ’值,则返回 [code]true[/code]。\n"
"这是 [method is_physics_interpolated] 的简便版本,还会检查是å¦å…¨å±€å¯ç”¨äº†ç‰©ç†"
"æ’值。\n"
@@ -47445,7 +47920,6 @@ msgstr ""
"[b]注æ„:[/b]这个函数应该在移动节点[b]之åŽ[/b]è°ƒç”¨ï¼Œè€Œä¸æ˜¯ä¹‹å‰ã€‚"
#: doc/classes/Node.xml
-#, fuzzy
msgid ""
"Sends a remote procedure call request for the given [code]method[/code] to "
"peers on the network (and locally), optionally sending all additional "
@@ -47465,7 +47939,7 @@ msgstr ""
"å¯é€‰æ‹©å°†æ‰€æœ‰é™„åŠ å‚æ•°ä½œä¸ºå‚æ•°å‘é€ç»™ RPC 调用的方法。调用请求将åªè¢«å…·æœ‰ç›¸åŒ "
"[NodePath] 的节点接收,包括完全相åŒçš„节点å称。行为å–决于给定方法的 RPC é…"
"ç½®ï¼Œè§ [method rpc_config]。方法在默认情况下ä¸ä¼šæš´éœ²ç»™ RPC。å‚阅 [method "
-"rset] 和[method rset_config] 的属性。返回一个空的 [Variant]。\n"
+"rset] 和[method rset_config] 的属性。返回 [code]null[/code]。\n"
"[b]注æ„:[/b]åªæœ‰åœ¨ä½ ä»Ž [SceneTree] 收到 [code]connected_to_server[/code] ä¿¡"
"å·ä¹‹åŽï¼Œä½ æ‰èƒ½å®‰å…¨åœ°åœ¨å®¢æˆ·ç«¯ä½¿ç”¨ RPC。你还需è¦è·Ÿè¸ªè¿žæŽ¥çжæ€ï¼Œå¯ä»¥é€šè¿‡ "
"[code]server_disconnected[/code] ç­‰ [SceneTree] ä¿¡å·æˆ–者检查 [code]SceneTree."
@@ -47489,31 +47963,28 @@ msgstr ""
"rset_config] 的属性。"
#: doc/classes/Node.xml
-#, fuzzy
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns [code]null[/"
"code]."
msgstr ""
-"å‘ç”±[code]peer_id[/code]确定的特定peerå‘é€ä¸€ä¸ª[method rpc](è§[method "
-"NetworkedMultiplayerPeer.set_target_peer])。返回一个空的[Variant]。"
+"å‘ç”± [code]peer_id[/code] 确定的特定对等体å‘é€ä¸€ä¸ª [method rpc]ï¼ˆè§ [method "
+"NetworkedMultiplayerPeer.set_target_peer])。返回 [code]null[/code]。"
#: doc/classes/Node.xml
-#, fuzzy
msgid ""
"Sends a [method rpc] using an unreliable protocol. Returns [code]null[/code]."
-msgstr "使用一个ä¸å¯é çš„åè®®å‘é€ä¸€ä¸ª[method rpc]。返回一个空的[Variant]。"
+msgstr "使用ä¸å¯é çš„åè®®å‘é€ä¸€ä¸ª [method rpc]。返回 [code]null[/code]。"
#: doc/classes/Node.xml
-#, fuzzy
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"using an unreliable protocol (see [method NetworkedMultiplayerPeer."
"set_target_peer]). Returns [code]null[/code]."
msgstr ""
-"使用ä¸å¯é çš„å议(è§[method NetworkedMultiplayerPeer.set_target_peer])å‘ç”±"
-"[code]peer_id[/code]标识的特定peerå‘é€ä¸€ä¸ª[method rpc]。返回一个空的"
-"[Variant]。"
+"使用ä¸å¯é çš„åè®®ï¼ˆè§ [method NetworkedMultiplayerPeer.set_target_peer])å‘ç”± "
+"[code]peer_id[/code] 标识的特定对等体å‘é€ä¸€ä¸ª [method rpc]。返回 [code]null[/"
+"code]。"
#: doc/classes/Node.xml
msgid ""
@@ -48156,8 +48627,18 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr "旋转角度,相对于父节点。"
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
-msgstr "节点的缩放。未缩放时为:[code](1, 1)[/code]。"
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
+msgstr ""
+"该节点的缩放。未缩放值:[code](1, 1)[/code]。\n"
+"[b]注æ„:[/b]2D ä¸­ï¼Œå˜æ¢çŸ©é˜µæ˜¯æ— æ³•分解出负数的 X 缩放的。由于 Godot 中使用å˜"
+"æ¢çŸ©é˜µæ¥è¡¨ç¤ºç¼©æ”¾ï¼ŒX 轴上的负数缩放在分解åŽä¼šå˜ä¸º Y 轴的负数缩放和一次 180 度"
+"的旋转。"
#: doc/classes/Node2D.xml
msgid "Local [Transform2D]."
@@ -48347,7 +48828,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -48355,7 +48836,7 @@ msgid ""
"print(node_path.get_name(2)) # Sprite\n"
"[/codeblock]"
msgstr ""
-"获å–ç”± [code]idx[/code](0 到 [method get_name_count])指示的节点å称。\n"
+"获å–ç”± [code]idx[/code](0 到 [method get_name_count] - 1)指示的节点å称。\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -51018,11 +51499,25 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
-"将文件或目录移动到系统的回收站。å¦è¯·å‚阅 [method Directory.remove]。\n"
-"[b]注æ„:[/b]如果用户ç¦ç”¨äº†ç³»ç»Ÿçš„回收站,那么这个文件就会被永久删除。"
+"将文件或目录移动到系统的回收站。å¦è¯·å‚阅 [method Directory.remove].\n"
+"该方法仅支æŒå…¨å±€è·¯å¾„,所以你å¯èƒ½éœ€è¦ä½¿ç”¨ [method ProjectSettings."
+"globalize_path]。请勿将其用于 [code]res://[/code] 中的文件,因为在导出åŽçš„项"
+"目中是无法正常工作的。\n"
+"[b]注æ„:[/b]如果用户在系统中ç¦ç”¨äº†å›žæ”¶ç«™ï¼Œé‚£ä¹ˆè¯¥æ–‡ä»¶ä¼šè¢«æ°¸ä¹…删除。\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
#: doc/classes/OS.xml
msgid ""
@@ -51139,11 +51634,12 @@ msgid ""
"[b]Note:[/b] Double-check the casing of [code]variable[/code]. Environment "
"variable names are case-sensitive on all platforms except Windows."
msgstr ""
-"将环境å˜é‡[code]variable[/code]的值设置为[code]value[/code]。在è¿è¡Œ[method "
-"set_environment]åŽï¼ŒçŽ¯å¢ƒå˜é‡å°†è¢«è®¾ç½®ä¸ºGodot进程和任何用[method execute]执行的"
-"进程。环境å˜é‡å°†[i]ä¸[/i]æŒç»­å­˜åœ¨äºŽGodot进程终止åŽè¿è¡Œçš„进程中。\n"
-"[b]注æ„:[/b]仔细检查[code]variable[/code]的大å°å†™ã€‚除Windows外,环境å˜é‡åç§°"
-"在所有平å°ä¸Šéƒ½æ˜¯åŒºåˆ†å¤§å°å†™çš„。"
+"将环境å˜é‡ [code]variable[/code] 的值设置为 [code]value[/code]。在è¿è¡Œ "
+"[method set_environment] åŽï¼ŒçŽ¯å¢ƒå˜é‡å°†è¢«è®¾ç½®ä¸º Godot 进程和任何用 [method "
+"execute] 执行的进程。环境å˜é‡[i]ä¸ä¼š[/i]æŒç»­å­˜åœ¨äºŽ Godot 进程终止åŽè¿è¡Œçš„进程"
+"中。\n"
+"[b]注æ„:[/b]仔细检查 [code]variable[/code] 的大å°å†™ã€‚除 Windows 外,环境å˜é‡"
+"å称在所有平å°ä¸Šéƒ½æ˜¯åŒºåˆ†å¤§å°å†™çš„。"
#: doc/classes/OS.xml
msgid ""
@@ -51270,9 +51766,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -51285,8 +51781,8 @@ msgstr ""
"器打开 Godot 官方网站。\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] 会打开默认电å­é‚®"
"件客户端并将“收件人â€å­—段设置为 [code]example@example.com[/code]。其他支æŒè‡ªå®š"
-"ä¹‰çš„å­—æ®µè§ [url=https://blog.escapecreative.com/customizing-mailto-links/]自"
-"定义 [code]mailto:[/code] 链接[/url] 。\n"
+"ä¹‰çš„å­—æ®µè§ [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - "
+"[code]mailto[/code] URL 方案[/url]。\n"
"å¯ä»¥ä½¿ç”¨ [method ProjectSettings.globalize_path] å°† [code]res://[/code] å’Œ "
"[code]user://[/code] 路径转æ¢ä¸ºæœ¬æ–¹æ³•所使用的系统路径。\n"
"[b]注æ„:[/b]本方法在 Androidã€iOSã€HTML5ã€Linuxã€macOSã€ä»¥åŠ Windows 上实"
@@ -56186,7 +56682,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -56198,6 +56694,24 @@ msgid ""
"print(array) # [[123]] (PoolByteArray with 1 element inside an Array)\n"
"[/codeblock]"
msgstr ""
+"专门为存储字节设计的数组。针对内存使用进行了优化,ä¸ä¼šäº§ç”Ÿå†…存碎片。\n"
+"[b]注æ„:[/b]这个类型是按值传递的,ä¸ä¼šæŒ‰å¼•用传递。也就是说,如果对æŸä¸ªç±»çš„ "
+"[PoolByteArray] 类型的属性进行了[i]修改[/i],或者对 [Array] 或 [Dictionary] "
+"中的 [PoolByteArray] 进行了修改,那么这些修改就会丢失:\n"
+"[codeblock]\n"
+"var array = [PoolByteArray()]\n"
+"array[0].push_back(123)\n"
+"print(array) # [[]](Array 中包å«äº†ç©ºçš„ PoolByteArray)\n"
+"[/codeblock]\n"
+"整个 [PoolByteArray] 属性必须使用 [code]=[/code] 进行[i]釿–°èµ‹å€¼[/i],æ‰ä¼šå‘"
+"生å˜åŒ–:\n"
+"[codeblock]\n"
+"var array = [PoolByteArray()]\n"
+"var pool_array = array[0]\n"
+"pool_array.push_back(123)\n"
+"array[0] = pool_array\n"
+"print(array) # [[123]](Array 中包å«äº†å«æœ‰ 1 个元素的 PoolByteArray)\n"
+"[/codeblock]"
#: doc/classes/PoolByteArray.xml
msgid ""
@@ -56362,7 +56876,6 @@ msgstr ""
"负的索引都被认为是从数组的末端开始的。"
#: doc/classes/PoolColorArray.xml
-#, fuzzy
msgid "A pooled array of [Color]s."
msgstr "[Color] 池数组。"
@@ -56377,7 +56890,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -56390,6 +56903,25 @@ msgid ""
"inside an Array)\n"
"[/codeblock]"
msgstr ""
+"专门为存储 [Color] 设计的数组。针对内存使用进行了优化,ä¸ä¼šäº§ç”Ÿå†…存碎片。\n"
+"[b]注æ„:[/b]这个类型是按值传递的,ä¸ä¼šæŒ‰å¼•用传递。也就是说,如果对æŸä¸ªç±»çš„ "
+"[PoolColorArray] 类型的属性进行了[i]修改[/i],或者对 [Array] 或 [Dictionary] "
+"中的 [PoolColorArray] 进行了修改,那么这些修改就会丢失:\n"
+"[codeblock]\n"
+"var array = [PoolColorArray()]\n"
+"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
+"print(array) # [[]](Array 中包å«äº†ç©ºçš„ PoolColorArray)\n"
+"[/codeblock]\n"
+"整个 [PoolColorArray] 属性必须使用 [code]=[/code] 进行[i]釿–°èµ‹å€¼[/i],æ‰ä¼šå‘"
+"生å˜åŒ–:\n"
+"[codeblock]\n"
+"var array = [PoolColorArray()]\n"
+"var pool_array = array[0]\n"
+"pool_array.push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
+"array[0] = pool_array\n"
+"print(array) # [[(0.1, 0.2, 0.3, 0.4)]](Array 中包å«äº†å«æœ‰ 1 个元素的 "
+"PoolColorArray)\n"
+"[/codeblock]"
#: doc/classes/PoolColorArray.xml
msgid ""
@@ -56425,7 +56957,6 @@ msgid "A pooled array of integers ([int])."
msgstr "整数([int])池数组。"
#: doc/classes/PoolIntArray.xml
-#, fuzzy
msgid ""
"An array specifically designed to hold integer values ([int]). Optimized for "
"memory usage, does not fragment the memory.\n"
@@ -56436,7 +56967,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -56453,9 +56984,25 @@ msgid ""
"around. In comparison, [int] uses signed 64-bit integers which can hold much "
"larger values."
msgstr ""
-"专门用于ä¿å­˜æ•´æ•°å€¼ï¼ˆ[int])的数组。对内存的使用进行了优化,ä¸ä¼šä½¿å†…存碎片"
-"化。\n"
-"[b]注æ„:[/b]è¿™ç§ç±»åž‹æ˜¯é€šè¿‡å€¼ä¼ é€’çš„ï¼Œè€Œä¸æ˜¯å¼•用。\n"
+"专门为存储整数([int])设计的数组。针对内存使用进行了优化,ä¸ä¼šäº§ç”Ÿå†…存碎"
+"片。\n"
+"[b]注æ„:[/b]这个类型是按值传递的,ä¸ä¼šæŒ‰å¼•用传递。也就是说,如果对æŸä¸ªç±»çš„ "
+"[PoolIntArray] 类型的属性进行了[i]修改[/i],或者对 [Array] 或 [Dictionary] 中"
+"的 [PoolIntArray] 进行了修改,那么这些修改就会丢失:\n"
+"[codeblock]\n"
+"var array = [PoolIntArray()]\n"
+"array[0].push_back(1234)\n"
+"print(array) # [[]](Array 中包å«äº†ç©ºçš„ PoolIntArray)\n"
+"[/codeblock]\n"
+"整个 [PoolIntArray] 属性必须使用 [code]=[/code] 进行[i]釿–°èµ‹å€¼[/i],æ‰ä¼šå‘生"
+"å˜åŒ–:\n"
+"[codeblock]\n"
+"var array = [PoolIntArray()]\n"
+"var pool_array = array[0]\n"
+"pool_array.push_back(1234)\n"
+"array[0] = pool_array\n"
+"print(array) # [[1234]](Array 中包å«äº†å«æœ‰ 1 个元素的 PoolIntArray)\n"
+"[/codeblock]\n"
"[b]注æ„:[/b]这个类型仅é™äºŽæœ‰ç¬¦å·çš„ 32 使•´æ•°ï¼Œè¿™æ„味ç€å®ƒåªèƒ½åœ¨ [code]"
"[-2^31, 2^31 - 1][/code] 的区间å–å€¼ï¼Œå³ [code][-2147483648, 2147483647][/"
"code]。超过这些界é™å°±ä¼šè¢«åŒ…èµ·æ¥ã€‚相比之下,[int] 使用有符å·çš„ 64 使•´æ•°ï¼Œå¯ä»¥"
@@ -56484,12 +57031,10 @@ msgid "Changes the int at the given index."
msgstr "更改给定索引处的 int。"
#: doc/classes/PoolRealArray.xml
-#, fuzzy
msgid "A pooled array of real numbers ([float])."
msgstr "实数([float])池数组。"
#: doc/classes/PoolRealArray.xml
-#, fuzzy
msgid ""
"An array specifically designed to hold floating-point values. Optimized for "
"memory usage, does not fragment the memory.\n"
@@ -56500,7 +57045,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -56519,8 +57064,24 @@ msgid ""
"store [float]s will use roughly 6 times more memory compared to a "
"[PoolRealArray]."
msgstr ""
-"专门设计用于ä¿å­˜æµ®ç‚¹å€¼çš„æ•°ç»„。针对内存使用进行了优化,ä¸ä¼šé€ æˆå†…存碎片。\n"
-"[b]注æ„:[/b]è¿™ç§ç±»åž‹æ˜¯æŒ‰å€¼ä¼ é€’è€Œä¸æ˜¯æŒ‰å¼•用传递。\n"
+"专门为存储浮点数设计的数组。针对内存使用进行了优化,ä¸ä¼šäº§ç”Ÿå†…存碎片。\n"
+"[b]注æ„:[/b]这个类型是按值传递的,ä¸ä¼šæŒ‰å¼•用传递。也就是说,如果对æŸä¸ªç±»çš„ "
+"[PoolRealArray] 类型的属性进行了[i]修改[/i],或者对 [Array] 或 [Dictionary] "
+"中的 [PoolRealArray] 进行了修改,那么这些修改就会丢失:\n"
+"[codeblock]\n"
+"var array = [PoolIntArray()]\n"
+"array[0].push_back(12.34)\n"
+"print(array) # [[]](Array 中包å«äº†ç©ºçš„ PoolRealArray)\n"
+"[/codeblock]\n"
+"整个 [PoolRealArray] 属性必须使用 [code]=[/code] 进行[i]釿–°èµ‹å€¼[/i],æ‰ä¼šå‘"
+"生å˜åŒ–:\n"
+"[codeblock]\n"
+"var array = [PoolRealArray()]\n"
+"var pool_array = array[0]\n"
+"pool_array.push_back(12.34)\n"
+"array[0] = pool_array\n"
+"print(array) # [[12.34]](Array 中包å«äº†å«æœ‰ 1 个元素的 PoolRealArray)\n"
+"[/codeblock]\n"
"[b]注æ„:[/b]与 64 ä½åŽŸå§‹ [float] ä¸åŒï¼Œå­˜å‚¨åœ¨ [PoolRealArray] 中的数字是 32 "
"使µ®ç‚¹æ•°ã€‚è¿™æ„味ç€ä¸ŽåŽŸå§‹ [float] 相比,存储在 [PoolRealArray] 中的值具有较低"
"的精度。如果您需è¦åœ¨æ•°ç»„中存储 64 使µ®ç‚¹æ•°ï¼Œè¯·ä½¿ç”¨å…·æœ‰ [float] 元素的通用 "
@@ -56542,7 +57103,6 @@ msgid "Changes the float at the given index."
msgstr "更改给定索引处的浮点数。"
#: doc/classes/PoolStringArray.xml
-#, fuzzy
msgid "A pooled array of [String]s."
msgstr "[String] 池数组。"
@@ -56557,7 +57117,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -56569,6 +57129,24 @@ msgid ""
"print(array) # [[hello]] (PoolStringArray with 1 element inside an Array)\n"
"[/codeblock]"
msgstr ""
+"专门为存储 [String] 设计的数组。针对内存使用进行了优化,ä¸ä¼šäº§ç”Ÿå†…存碎片。\n"
+"[b]注æ„:[/b]这个类型是按值传递的,ä¸ä¼šæŒ‰å¼•用传递。也就是说,如果对æŸä¸ªç±»çš„ "
+"[PoolStringArray] 类型的属性进行了[i]修改[/i],或者对 [Array] 或 "
+"[Dictionary] 中的 [PoolStringArray] 进行了修改,那么这些修改就会丢失:\n"
+"[codeblock]\n"
+"var array = [PoolStringArray()]\n"
+"array[0].push_back(\"hello\")\n"
+"print(array) # [[]](Array 中包å«äº†ç©ºçš„ PoolStringArray)\n"
+"[/codeblock]\n"
+"整个 [PoolStringArray] 属性必须使用 [code]=[/code] 进行[i]釿–°èµ‹å€¼[/i],æ‰ä¼š"
+"å‘生å˜åŒ–:\n"
+"[codeblock]\n"
+"var array = [PoolStringArray()]\n"
+"var pool_array = array[0]\n"
+"pool_array.push_back(\"hello\")\n"
+"array[0] = pool_array\n"
+"print(array) # [[hello]](Array 中包å«äº†å«æœ‰ 1 个元素的 PoolStringArray)\n"
+"[/codeblock]"
#: doc/classes/PoolStringArray.xml
msgid ""
@@ -56597,7 +57175,6 @@ msgid "Changes the [String] at the given index."
msgstr "更改给定索引处的[String]。"
#: doc/classes/PoolVector2Array.xml
-#, fuzzy
msgid "A pooled array of [Vector2]s."
msgstr "[Vector2] 池数组。"
@@ -56612,7 +57189,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -56625,6 +57202,25 @@ msgid ""
"Array)\n"
"[/codeblock]"
msgstr ""
+"专门为存储 [Vector2] 设计的数组。针对内存使用进行了优化,ä¸ä¼šäº§ç”Ÿå†…存碎片。\n"
+"[b]注æ„:[/b]这个类型是按值传递的,ä¸ä¼šæŒ‰å¼•用传递。也就是说,如果对æŸä¸ªç±»çš„ "
+"[PoolVector2Array] 类型的属性进行了[i]修改[/i],或者对 [Array] 或 "
+"[Dictionary] 中的 [PoolVector2Array] 进行了修改,那么这些修改就会丢失:\n"
+"[codeblock]\n"
+"var array = [PoolVector2Array()]\n"
+"array[0].push_back(Vector2(12, 34))\n"
+"print(array) # [[]](Array 中包å«äº†ç©ºçš„ PoolVector2Array)\n"
+"[/codeblock]\n"
+"整个 [PoolVector2Array] 属性必须使用 [code]=[/code] 进行[i]釿–°èµ‹å€¼[/i],æ‰ä¼š"
+"å‘生å˜åŒ–:\n"
+"[codeblock]\n"
+"var array = [PoolVector2Array()]\n"
+"var pool_array = array[0]\n"
+"pool_array.push_back(Vector2(12, 34))\n"
+"array[0] = pool_array\n"
+"print(array) # [[(12, 34)]](Array 中包å«äº†å«æœ‰ 1 个元素的 "
+"PoolVector2Array)\n"
+"[/codeblock]"
#: doc/classes/PoolVector2Array.xml doc/classes/TileMap.xml
#: doc/classes/TileSet.xml
@@ -56665,7 +57261,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -56678,6 +57274,25 @@ msgid ""
"Array)\n"
"[/codeblock]"
msgstr ""
+"专门为存储 [Vector3] 设计的数组。针对内存使用进行了优化,ä¸ä¼šäº§ç”Ÿå†…存碎片。\n"
+"[b]注æ„:[/b]这个类型是按值传递的,ä¸ä¼šæŒ‰å¼•用传递。也就是说,如果对æŸä¸ªç±»çš„ "
+"[PoolVector3Array] 类型的属性进行了[i]修改[/i],或者对 [Array] 或 "
+"[Dictionary] 中的 [PoolVector3Array] 进行了修改,那么这些修改就会丢失:\n"
+"[codeblock]\n"
+"var array = [PoolVector3Array()]\n"
+"array[0].push_back(Vector3(12, 34, 56))\n"
+"print(array) # [[]](Array 中包å«äº†ç©ºçš„ PoolVector3Array)\n"
+"[/codeblock]\n"
+"整个 [PoolVector3Array] 属性必须使用 [code]=[/code] 进行[i]釿–°èµ‹å€¼[/i],æ‰ä¼š"
+"å‘生å˜åŒ–:\n"
+"[codeblock]\n"
+"var array = [PoolVector3Array()]\n"
+"var pool_array = array[0]\n"
+"pool_array.push_back(Vector3(12, 34, 56))\n"
+"array[0] = pool_array\n"
+"print(array) # [[(12, 34, 56)]](Array 中包å«äº†å«æœ‰ 1 个元素的 "
+"PoolVector3Array)\n"
+"[/codeblock]"
#: doc/classes/PoolVector3Array.xml
msgid ""
@@ -58196,8 +58811,8 @@ msgid ""
"[b]Note:[/b] Regardless of this setting's value, [code]res://override.cfg[/"
"code] will still be read to override the project settings."
msgstr ""
-"指定一个文件æ¥è¦†ç›–项目设置。比如说。[code]user://custom_settings.cfg[/code]。"
-"å‚è§ [ProjectSettings] 顶部类æè¿°ä¸­çš„“Overridingâ€ä»¥èŽ·å–æ›´å¤šä¿¡æ¯ã€‚\n"
+"指定一个文件æ¥è¦†ç›–项目设置。例如:[code]user://custom_settings.cfg[/code]。å‚"
+"è§ [ProjectSettings] 顶部类æè¿°ä¸­çš„“Overridingâ€ä»¥èŽ·å–æ›´å¤šä¿¡æ¯ã€‚\n"
"[b]注æ„:[/b]ä¸ç®¡è¿™ä¸ªè®¾ç½®çš„值如何,[code]res://override.cfg[/code] ä»ç„¶ä¼šè¢«è¯»"
"å–æ¥è¦†ç›–项目设置。"
@@ -58243,8 +58858,8 @@ msgid ""
"Icon set in [code].ico[/code] format used on Windows to set the game's icon. "
"This is done automatically on start by calling [method OS.set_native_icon]."
msgstr ""
-"以[code].ico[/code]æ ¼å¼è®¾ç½®çš„图标,在Windows上用于设置游æˆçš„图标。这在å¯åŠ¨æ—¶"
-"通过调用[method OS.set_native_icon]自动完æˆã€‚"
+"以 [code].ico[/code] æ ¼å¼è®¾ç½®çš„图标,在 Windows 上用于设置游æˆçš„图标。这在å¯"
+"动时通过调用 [method OS.set_native_icon] 自动完æˆã€‚"
#: doc/classes/ProjectSettings.xml
msgid ""
@@ -58739,8 +59354,21 @@ msgstr ""
"用警告。"
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
-msgstr "å½“å¼•æ“Žå´©æºƒæ—¶ï¼Œåœ¨å›žæº¯ä¹‹å‰æ˜¾ç¤ºçš„æ¶ˆæ¯ã€‚"
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+"å¼•æ“Žå´©æºƒæ—¶ï¼Œåœ¨è°ƒç”¨ç«™å›žæº¯å‰æ˜¾ç¤ºçš„æ¶ˆæ¯ã€‚默认情况下,这个消æ¯åªä¼šåœ¨å¯¼å‡ºåŽçš„项目"
+"中使用,因为编辑器会对这个设置进行覆盖。"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
+msgstr ""
+"仅用于编辑器的 [member debug/settings/crash_handler/message] 覆盖项。ä¸ä¼šå½±å“"
+"用调试或å‘布模å¼å¯¼å‡ºçš„项目。"
#: doc/classes/ProjectSettings.xml
msgid ""
@@ -59053,6 +59681,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -59348,6 +59988,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr "触摸事件的默认延迟(å•ä½ä¸ºç§’ï¼‰ã€‚ä»…å½±å“ iOS 设备。"
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr "2D 导航层 1 çš„å¯é€‰å称。留空则会显示为“层 1â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr "2D 导航层 10 çš„å¯é€‰å称。留空则会显示为“层 10â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr "2D 导航层 11 çš„å¯é€‰å称。留空则会显示为“层 11â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr "2D 导航层 12 çš„å¯é€‰å称。留空则会显示为“层 12â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr "2D 导航层 13 çš„å¯é€‰å称。留空则会显示为“层 13â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr "2D 导航层 14 çš„å¯é€‰å称。留空则会显示为“层 14â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr "2D 导航层 15 çš„å¯é€‰å称。留空则会显示为“层 15â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr "2D 导航层 16 çš„å¯é€‰å称。留空则会显示为“层 16â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr "2D 导航层 17 çš„å¯é€‰å称。留空则会显示为“层 17â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr "2D 导航层 18 çš„å¯é€‰å称。留空则会显示为“层 18â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr "2D 导航层 19 çš„å¯é€‰å称。留空则会显示为“层 19â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr "2D 导航层 2 çš„å¯é€‰å称。留空则会显示为“层 2â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr "2D 导航层 20 çš„å¯é€‰å称。留空则会显示为“层 20â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr "2D 导航层 21 çš„å¯é€‰å称。留空则会显示为“层 21â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr "2D 导航层 22 çš„å¯é€‰å称。留空则会显示为“层 22â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr "2D 导航层 23 çš„å¯é€‰å称。留空则会显示为“层 23â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr "2D 导航层 24 çš„å¯é€‰å称。留空则会显示为“层 24â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr "2D 导航层 25 çš„å¯é€‰å称。留空则会显示为“层 25â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr "2D 导航层 26 çš„å¯é€‰å称。留空则会显示为“层 26â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr "2D 导航层 27 çš„å¯é€‰å称。留空则会显示为“层 27â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr "2D 导航层 28 çš„å¯é€‰å称。留空则会显示为“层 28â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr "2D 导航层 29 çš„å¯é€‰å称。留空则会显示为“层 29â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr "2D 导航层 3 çš„å¯é€‰å称。留空则会显示为“层 3â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr "2D 导航层 30 çš„å¯é€‰å称。留空则会显示为“层 30â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr "2D 导航层 31 çš„å¯é€‰å称。留空则会显示为“层 31â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr "2D 导航层 32 çš„å¯é€‰å称。留空则会显示为“层 32â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr "2D 导航层 4 çš„å¯é€‰å称。留空则会显示为“层 4â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr "2D 导航层 5 çš„å¯é€‰å称。留空则会显示为“层 5â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr "2D 导航层 6 çš„å¯é€‰å称。留空则会显示为“层 6â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr "2D 导航层 7 çš„å¯é€‰å称。留空则会显示为“层 7â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr "2D 导航层 8 çš„å¯é€‰å称。留空则会显示为“层 8â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr "2D 导航层 9 çš„å¯é€‰å称。留空则会显示为“层 9â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr "2D 物ç†å±‚ 1 çš„å¯é€‰å称。"
@@ -59556,6 +60388,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr "2D 渲染层 9 çš„å¯é€‰å称。"
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr "3D 导航层 1 çš„å¯é€‰å称。留空则会显示为“层 1â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr "3D 导航层 10 çš„å¯é€‰å称。留空则会显示为“层 10â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr "3D 导航层 11 çš„å¯é€‰å称。留空则会显示为“层 11â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr "3D 导航层 12 çš„å¯é€‰å称。留空则会显示为“层 12â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr "3D 导航层 13 çš„å¯é€‰å称。留空则会显示为“层 13â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr "3D 导航层 14 çš„å¯é€‰å称。留空则会显示为“层 14â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr "3D 导航层 15 çš„å¯é€‰å称。留空则会显示为“层 15â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr "3D 导航层 16 çš„å¯é€‰å称。留空则会显示为“层 16â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr "3D 导航层 17 çš„å¯é€‰å称。留空则会显示为“层 17â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr "3D 导航层 18 çš„å¯é€‰å称。留空则会显示为“层 18â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr "3D 导航层 19 çš„å¯é€‰å称。留空则会显示为“层 19â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr "3D 导航层 2 çš„å¯é€‰å称。留空则会显示为“层 2â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr "3D 导航层 20 çš„å¯é€‰å称。留空则会显示为“层 20â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr "3D 导航层 21 çš„å¯é€‰å称。留空则会显示为“层 21â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr "3D 导航层 22 çš„å¯é€‰å称。留空则会显示为“层 22â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr "3D 导航层 23 çš„å¯é€‰å称。留空则会显示为“层 23â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr "3D 导航层 24 çš„å¯é€‰å称。留空则会显示为“层 24â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr "3D 导航层 25 çš„å¯é€‰å称。留空则会显示为“层 25â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr "3D 导航层 26 çš„å¯é€‰å称。留空则会显示为“层 26â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr "3D 导航层 27 çš„å¯é€‰å称。留空则会显示为“层 27â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr "3D 导航层 28 çš„å¯é€‰å称。留空则会显示为“层 28â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr "3D 导航层 29 çš„å¯é€‰å称。留空则会显示为“层 29â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr "3D 导航层 3 çš„å¯é€‰å称。留空则会显示为“层 3â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr "3D 导航层 30 çš„å¯é€‰å称。留空则会显示为“层 30â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr "3D 导航层 31 çš„å¯é€‰å称。留空则会显示为“层 31â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr "3D 导航层 32 çš„å¯é€‰å称。留空则会显示为“层 32â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr "3D 导航层 4 çš„å¯é€‰å称。留空则会显示为“层 4â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr "3D 导航层 5 çš„å¯é€‰å称。留空则会显示为“层 5â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr "3D 导航层 6 çš„å¯é€‰å称。留空则会显示为“层 6â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr "3D 导航层 7 çš„å¯é€‰å称。留空则会显示为“层 7â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr "3D 导航层 8 çš„å¯é€‰å称。留空则会显示为“层 8â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr "3D 导航层 9 çš„å¯é€‰å称。留空则会显示为“层 9â€ã€‚"
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr "3D 物ç†å±‚ 1 çš„å¯é€‰å称。"
@@ -59837,6 +60861,61 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+"2D 导航地图的默认å•å…ƒæ ¼é«˜åº¦ã€‚è§ [method Navigation2DServer."
+"map_set_cell_height]。\n"
+"[b]注æ„:[/b]尚未实现。"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+"2D 导航地图的默认å•元格大å°ã€‚è§ [method Navigation2DServer."
+"map_set_cell_size]。"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+"2D 导航地图的默认边界连接边è·ã€‚è§ [method Navigation2DServer."
+"map_set_edge_connection_margin]。"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+"3D 导航地图的默认å•å…ƒæ ¼é«˜åº¦ã€‚è§ [method NavigationServer."
+"map_set_cell_height]。"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+"3D 导航地图的默认å•元格大å°ã€‚è§ [method NavigationServer.map_set_cell_size]。"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+"3D 导航地图的默认边界连接边è·ã€‚è§ [method NavigationServer."
+"map_set_edge_connection_margin]。"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr "3D 导航地图的默认地图上å‘é‡ã€‚è§ [method NavigationServer.map_set_up]。"
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -61654,8 +62733,8 @@ msgid ""
msgstr ""
"如果为 [code]true[/code],纹ç†å¯¼å…¥å™¨å°†ä½¿ç”¨ BPTC 算法导入 VRAM 压缩的纹ç†ã€‚æ­¤"
"纹ç†åŽ‹ç¼©ç®—æ³•ä»…åœ¨æ¡Œé¢å¹³å°å¾—到支æŒï¼Œå¹¶ä¸”仅在使用 GLES3 渲染器时æ‰å—支æŒã€‚\n"
-"[b]注æ„:[/b]更改此设置ä¸ä¼š[i]ä¸[/i]å½±å“之å‰å·²ç»å¯¼å…¥çš„纹ç†ã€‚è¦å°†æ­¤è®¾ç½®åº”用于"
-"已导入的纹ç†ï¼Œè¯·é€€å‡ºç¼–辑器,删除ä½äºŽé¡¹ç›®æ–‡ä»¶å¤¹å†…çš„ [code].import/[/code] 文件"
+"[b]注æ„:[/b]更改此设置[i]ä¸ä¼š[/i]å½±å“之å‰å·²ç»å¯¼å…¥çš„纹ç†ã€‚è¦å°†æ­¤è®¾ç½®åº”用于已"
+"导入的纹ç†ï¼Œè¯·é€€å‡ºç¼–辑器,删除ä½äºŽé¡¹ç›®æ–‡ä»¶å¤¹å†…çš„ [code].import/[/code] 文件"
"夹,然åŽé‡æ–°å¯åŠ¨ç¼–è¾‘å™¨ï¼ˆå‚阅 [member application/config/"
"use_hidden_project_data_directory])。"
@@ -61885,7 +62964,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -61935,7 +63013,6 @@ msgstr ""
"- 如果你的 [member grid_radius] 比 [code]Vector3(1, 1, 1)[/code] å°ï¼Œå°±ä¼šè¢«èˆ"
"入到 [code]Vector3(1, 1, 1)[/code]。因此,较å°çš„网格åŠå¾„å¯èƒ½ä¼šå¯¼è‡´æ„外的分"
"组。\n"
-"[/codeblock]\n"
"[b]注æ„:[/b]Godot 4.0 会移除 [ProximityGroup],使用更高效ã€å¿«é€Ÿçš„ "
"[VisibilityNotifier] 功能。对于大多数情况,[method Vector3.distance_to] 和 "
"[method Vector3.distance_squared_to] 都足够快了,尤其是在使用 [Timer] 节点å‡"
@@ -62342,17 +63419,17 @@ msgid ""
msgstr ""
"æ ¹æ®ç»™å®šçš„ç§å­å€¼åˆå§‹åŒ–éšæœºæ•°ç”Ÿæˆå™¨çжæ€ã€‚给定的ç§å­å°†æä¾›å¯é‡å¤çš„ä¼ªéšæœºæ•°åº"
"列。\n"
-"[b]注:[/b] RNG 没有雪崩效应,å¯ä»¥è¾“å‡ºç›¸ä¼¼çš„éšæœºæµç»™å®šç›¸ä¼¼çš„ç§å­ã€‚如果ç§å­æ¥"
+"[b]注æ„:[/b]RNG 没有雪崩效应,å¯ä»¥è¾“å‡ºç›¸ä¼¼çš„éšæœºæµç»™å®šç›¸ä¼¼çš„ç§å­ã€‚如果ç§å­æ¥"
"è‡ªå¤–éƒ¨ï¼Œè¯·è€ƒè™‘ä½¿ç”¨å“ˆå¸Œå‡½æ•°æ¥æé«˜ç§å­è´¨é‡ã€‚\n"
-"[b]注:[/b]设置这个属性会产生改å˜å†…部[member state]的副作用,所以一定è¦åœ¨ä¿®æ”¹"
-"[member state][i]之å‰[/i]åˆå§‹åŒ–ç§å­ï¼š\n"
+"[b]注æ„:[/b]设置这个属性会产生改å˜å†…部 [member state] 的副作用,所以一定è¦åœ¨"
+"修改 [member state] [i]之å‰[/i]åˆå§‹åŒ–ç§å­ï¼š\n"
"[codeblock]\n"
"var rng = RandomNumberGenerator.new()\n"
"rng.seed = hash(\"Godot\")\n"
-"rng.state = 100 # Restore to some previously saved state.\n"
+"rng.state = 100 # æ¢å¤ä¹‹å‰ä¿å­˜çš„æŸä¸ªçŠ¶æ€ã€‚\n"
"[/codeblock]\n"
-"[b]警告:[/b]该属性的getter返回之å‰çš„[member state]ï¼Œè€Œä¸æ˜¯åˆå§‹ç§å­å€¼ï¼Œè¿™å°†åœ¨"
-"Godot 4.0中修å¤ã€‚"
+"[b]警告:[/b]该属性的 getter 返回之å‰çš„ [member state]ï¼Œè€Œä¸æ˜¯åˆå§‹ç§å­å€¼ï¼Œè¿™"
+"将在 Godot 4.0 中修å¤ã€‚"
#: doc/classes/RandomNumberGenerator.xml
msgid ""
@@ -62392,11 +63469,14 @@ msgstr "基于范围的控件的抽象基类。"
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
-"Range是一个用于[Control]节点的基类,它在[i]最å°å€¼[/i]å’Œ[i]最大值[/i]之间改å˜"
-"一个浮点[i]值[/i],用于[i]步进[/i]å’Œ[i]页é¢[/i],例如[ScrollBar]。"
+"Range 是一些 [Control] 节点的基类,这些节点能够将浮点值 [member value] 在最å°"
+"值 [member min_value] 和最大值 [member max_value] 之间进行调整,并且能够对步"
+"é•¿ [member step] å’Œåˆ†é¡µå¤§å° [member page] 进行设置。使用 Range 的更高级节点示"
+"例请å‚考 [ScrollBar] å’Œ [Slider]。"
#: doc/classes/Range.xml
msgid ""
@@ -64702,6 +65782,22 @@ msgid "Makes text fill width."
msgstr "使文本填充宽度。"
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr "将内è”图åƒçš„顶部与文本的顶部对é½ã€‚"
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr "将内è”图åƒçš„中心与文本的中心对é½ã€‚"
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr "将内è”图åƒçš„底部与文本的基线对é½ã€‚"
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr "将内è”图åƒçš„底部与文本的底部对é½ã€‚"
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr "æ¯ä¸ªåˆ—表项都有一个数字标记。"
@@ -64945,41 +66041,40 @@ msgid "Locks the specified linear or rotational axis."
msgstr "é”定指定的线性或旋转轴。"
#: doc/classes/RigidBody.xml
-#, fuzzy
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
-"实体的线性阻尼。ä¸èƒ½å°äºŽ-1.0。如果这个值与-1.0ä¸åŒï¼Œä»»ä½•从世界或区域派生的线"
-"性阻尼将被覆盖。\n"
-"关于阻尼的更多细节,请å‚阅[member ProjectSettings.physics/3d/"
-"default_linear_damp]。"
+"对该实体的旋转力进行阻尼è¿ç®—。如果这个值与 -1.0 ä¸åŒï¼Œå°†ä¼šè¿½åŠ åˆ°ä»»ä½•ä»Žä¸–ç•Œæˆ–"
+"区域派生的角度阻尼中。\n"
+"关于阻尼的更多细节,请å‚阅 [member ProjectSettings.physics/3d/"
+"default_angular_damp]。"
#: doc/classes/RigidBody.xml
msgid "Lock the body's rotation in the X axis."
-msgstr "é”定实体在X轴上的旋转。"
+msgstr "é”定实体在 X 轴上的旋转。"
#: doc/classes/RigidBody.xml
msgid "Lock the body's rotation in the Y axis."
-msgstr "é”定实体在Y轴上的旋转。"
+msgstr "é”定实体在 Y 轴上的旋转。"
#: doc/classes/RigidBody.xml
msgid "Lock the body's rotation in the Z axis."
-msgstr "é”定实体在Z轴上的旋转。"
+msgstr "é”定实体在 Z 轴上的旋转。"
#: doc/classes/RigidBody.xml
msgid "Lock the body's movement in the X axis."
-msgstr "é”定实体在X轴上的移动。"
+msgstr "é”定实体在 X 轴上的移动。"
#: doc/classes/RigidBody.xml
msgid "Lock the body's movement in the Y axis."
-msgstr "é”定实体在Y轴上的移动。"
+msgstr "é”定实体在 Y 轴上的移动。"
#: doc/classes/RigidBody.xml
msgid "Lock the body's movement in the Z axis."
-msgstr "é”定实体在Z轴上的移动。"
+msgstr "é”定实体在 Z 轴上的移动。"
#: doc/classes/RigidBody.xml doc/classes/RigidBody2D.xml
#: doc/classes/StaticBody.xml doc/classes/StaticBody2D.xml
@@ -65061,7 +66156,7 @@ msgid ""
"Deprecated, use [member PhysicsMaterial.friction] instead via [member "
"physics_material_override]."
msgstr ""
-"实体的摩擦力,从 0(无摩擦)到 1(最大摩擦)。\n"
+"该实体的摩擦力,从 0(无摩擦)到 1(最大摩擦)。\n"
"已废弃,请通过 [member physics_material_override] 使用 [member "
"PhysicsMaterial.friction] 代替。"
@@ -65072,12 +66167,11 @@ msgid ""
"example, a value of 1 will be normal gravity, 2 will apply double gravity, "
"and 0.5 will apply half gravity to this object."
msgstr ""
-"这与在[b]项目 > 项目设置 > Physics > 3d[/b] 中找到的全局 3D é‡åŠ›è®¾ç½®ç›¸ä¹˜ï¼Œäº§"
-"生 RigidBody çš„é‡åŠ›ã€‚ä¾‹å¦‚ï¼Œ1 的值将是正常的é‡åŠ›ï¼Œ2 将应用åŒå€çš„é‡åŠ›ï¼Œ0.5 将对"
-"这个物体应用一åŠçš„é‡åŠ›ã€‚"
+"这与在[b]项目 > 项目设置 > ç‰©ç† > 3D[/b] 中找到的全局 3D é‡åŠ›è®¾ç½®ç›¸ä¹˜ï¼Œäº§ç”Ÿ "
+"RigidBody çš„é‡åŠ›ã€‚ä¾‹å¦‚ï¼Œ1 的值将是正常的é‡åŠ›ï¼Œ2 将应用åŒå€çš„é‡åŠ›ï¼Œ0.5 将对这"
+"个物体应用一åŠçš„é‡åŠ›ã€‚"
#: doc/classes/RigidBody.xml
-#, fuzzy
msgid ""
"The body's linear damp. Cannot be less than -1.0. If this value is different "
"from -1.0 it will be added to any linear damp derived from the world or "
@@ -65085,9 +66179,9 @@ msgid ""
"See [member ProjectSettings.physics/3d/default_linear_damp] for more details "
"about damping."
msgstr ""
-"实体的线性阻尼。ä¸èƒ½å°äºŽ-1.0。如果这个值与-1.0ä¸åŒï¼Œä»»ä½•从世界或区域派生的线"
-"性阻尼将被覆盖。\n"
-"关于阻尼的更多细节,请å‚阅[member ProjectSettings.physics/3d/"
+"该实体的线性阻尼。ä¸èƒ½å°äºŽ -1.0。如果这个值与 -1.0 ä¸åŒï¼Œå°†ä¼šè¿½åŠ åˆ°ä»»ä½•ä»Žä¸–ç•Œ"
+"或区域派生的线性阻尼中。\n"
+"关于阻尼的更多细节,请å‚阅 [member ProjectSettings.physics/3d/"
"default_linear_damp]。"
#: doc/classes/RigidBody.xml
@@ -65385,7 +66479,6 @@ msgstr ""
"è¯ï¼‰ã€‚"
#: doc/classes/RigidBody2D.xml
-#, fuzzy
msgid ""
"Damps the body's [member angular_velocity]. If [code]-1[/code], the body "
"will use the [b]Default Angular Damp[/b] defined in [b]Project > Project "
@@ -65394,8 +66487,9 @@ msgid ""
"See [member ProjectSettings.physics/2d/default_angular_damp] for more "
"details about damping."
msgstr ""
-"对物体的 [member angular_velocity] 进行阻尼è¿ç®—。如果为 [code]-1[/code],物体"
-"将使用[b]项目 > 项目设置 > ç‰©ç† > 2D[/b] 中定义的[b]默认角度阻尼[/b]。\n"
+"对该实体的 [member angular_velocity] 进行阻尼è¿ç®—。如果为 [code]-1[/code],物"
+"体将使用[b]项目 > 项目设置 > ç‰©ç† > 2D[/b] 中定义的[b]默认角度阻尼[/b]。如果"
+"大于 [code]-1[/code],会加入到项目默认值之上。\n"
"有关阻尼的更多详细信æ¯ï¼Œè¯·å‚阅 [member ProjectSettings.physics/2d/"
"default_angular_damp]。"
@@ -65494,12 +66588,11 @@ msgid ""
"this function allows you to set a custom value. Set 0 inertia to return to "
"automatically computing it."
msgstr ""
-"物体的惯性力矩。这就åƒè´¨é‡ï¼Œä½†å¯¹äºŽæ—‹è½¬æ¥è¯´ï¼šå®ƒå†³å®šäº†æ—‹è½¬ç‰©ä½“需è¦å¤šå¤§çš„力矩。"
-"惯性力矩通常是由质é‡å’Œå½¢çŠ¶è‡ªåŠ¨è®¡ç®—å‡ºæ¥çš„,但是这个函数å…许你设置一个自定义"
-"值。设置0惯性会切æ¢å›žè‡ªåŠ¨è®¡ç®—ã€‚"
+"该实体的惯性力矩。类似于质é‡ï¼Œä½†æ˜¯é’ˆå¯¹æ—‹è½¬çš„:它决定了旋转物体需è¦å¤šå¤§çš„力"
+"矩。惯性力矩通常是由质é‡å’Œå½¢çŠ¶è‡ªåŠ¨è®¡ç®—å‡ºæ¥çš„,但是这个函数å…许你设置一个自定"
+"义值。设置 0 惯性会切æ¢å›žè‡ªåŠ¨è®¡ç®—ã€‚"
#: doc/classes/RigidBody2D.xml
-#, fuzzy
msgid ""
"Damps the body's [member linear_velocity]. If [code]-1[/code], the body will "
"use the [b]Default Linear Damp[/b] in [b]Project > Project Settings > "
@@ -65508,9 +66601,9 @@ msgid ""
"See [member ProjectSettings.physics/2d/default_linear_damp] for more details "
"about damping."
msgstr ""
-"对物体的[member linear_velocity]进行阻尼è¿ç®—。如果[code]-1[/code],物体将使用"
-"[b]项目 > 项目设置 > Physics > 2d[/b] 中的 [b]Default Linear Damp[/b](默认线"
-"性阻尼)。\n"
+"对该实体的 [member linear_velocity] 进行阻尼è¿ç®—。如果为 [code]-1[/code],物"
+"体将使用[b]项目 > 项目设置 > ç‰©ç† > 2D[/b] 中的[b]默认线性阻尼[/b]。如果大于 "
+"[code]-1[/code],会加入到项目默认值之上。\n"
"有关阻尼的更多详细信æ¯ï¼Œè¯·å‚阅 [member ProjectSettings.physics/2d/"
"default_linear_damp]。"
@@ -65521,21 +66614,21 @@ msgid ""
"thread and runs at a different granularity. Use [method _integrate_forces] "
"as your process loop for precise control of the body state."
msgstr ""
-"物体的线速度,å•ä½ä¸ºåƒç´ æ¯ç§’。å¯ä»¥å¶å°”使用,但是[b]ä¸è¦æ¯ä¸€å¸§éƒ½è®¾ç½®å®ƒ[/b],因"
-"为物ç†å¯èƒ½åœ¨å¦ä¸€ä¸ªçº¿ç¨‹ä¸­è¿è¡Œï¼Œå¹¶ä¸”以ä¸åŒçš„间隔。使用 [method "
+"该实体的线速度,å•ä½ä¸ºåƒç´ æ¯ç§’。å¯ä»¥å¶å°”使用,但是[b]ä¸è¦æ¯ä¸€å¸§éƒ½è®¾ç½®å®ƒ[/b],"
+"因为物ç†å¯èƒ½åœ¨å¦ä¸€ä¸ªçº¿ç¨‹ä¸­è¿è¡Œï¼Œå¹¶ä¸”以ä¸åŒçš„间隔。使用 [method "
"_integrate_forces] 作为你的进程循环,以精确控制物体状æ€ã€‚"
#: doc/classes/RigidBody2D.xml
msgid "The body's mode. See [enum Mode] for possible values."
-msgstr "物体的模å¼ã€‚å¯èƒ½çš„值è§[enum Mode]。"
+msgstr "该实体的模å¼ã€‚å¯èƒ½çš„å–å€¼è§ [enum Mode]。"
#: doc/classes/RigidBody2D.xml
msgid ""
"The body's weight based on its mass and the [b]Default Gravity[/b] value in "
"[b]Project > Project Settings > Physics > 2d[/b]."
msgstr ""
-"物体的é‡é‡åŸºäºŽå…¶è´¨é‡å’Œ[b]项目 > 项目设置 > Physics > 2d[/b] 中的 [b]Default "
-"Gravity[/b](默认é‡åŠ›ï¼‰å€¼ã€‚"
+"该实体的é‡é‡ï¼ŒåŸºäºŽå…¶è´¨é‡å’Œ[b]项目 > 项目设置 > ç‰©ç† > 2D[/b] 中的[b]默认é‡åŠ›"
+"[/b]值。"
#: doc/classes/RigidBody2D.xml
msgid ""
@@ -67006,7 +68099,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
"由场景树管ç†çš„ä¸€æ¬¡æ€§å®šæ—¶å™¨ï¼Œå®ƒåœ¨å®Œæˆæ—¶å‘[signal timeout] ä¿¡å·ã€‚请å‚阅 "
"[method SceneTree.create_timer]。\n"
@@ -67018,7 +68112,8 @@ msgstr ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"计时器结æŸã€‚\")\n"
"[/codeblock]\n"
-"时间结æŸåŽï¼Œè¯¥è®¡æ—¶å™¨å°†è¢«è‡ªåŠ¨é‡Šæ”¾ã€‚"
+"时间结æŸåŽï¼Œå¯¹è¯¥è®¡æ—¶å™¨çš„引用将被自动释放。è¦ä¿ç•™è¯¥è®¡æ—¶å™¨ï¼Œä½ å¯ä»¥ä¿æŒå¯¹å®ƒçš„引"
+"ç”¨ã€‚è§ [Reference]。"
#: doc/classes/SceneTreeTimer.xml
msgid "The time remaining (in seconds)."
@@ -69261,8 +70356,16 @@ msgid ""
msgstr "æ—‹è½¬éƒ¨åˆ†å±€éƒ¨å˜æ¢ä¸ºåº¦ï¼ŒæŒ‰YXZ-Eulerè§’æ ¼å¼æŒ‡å®š(Xè§’ã€Yè§’ã€Zè§’)。"
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
-msgstr "å±€éƒ¨å˜æ¢çš„缩放部分。"
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
+msgstr ""
+"æœ¬åœ°å˜æ¢ä¸­çš„缩放。\n"
+"[b]注æ„:[/b]3D ä¸­ï¼Œå˜æ¢çŸ©é˜µæ˜¯æ— æ³•分解出正负混åˆçš„缩放的。由于 Godot 中使用å˜"
+"æ¢çŸ©é˜µæ¥è¡¨ç¤ºç¼©æ”¾ï¼Œå¾—到的缩放值è¦ä¹ˆå…¨æ­£ã€è¦ä¹ˆå…¨è´Ÿã€‚"
#: doc/classes/Spatial.xml
msgid "Local space [Transform] of this node, with respect to the parent node."
@@ -76764,6 +77867,10 @@ msgstr ""
"[/codeblock]"
#: doc/classes/TileMap.xml
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr "如果为 [code]true[/code],这个 TileMap 会烘焙导航地区。"
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr "如果[code]true[/code],å•元格的UV将被剪è£ã€‚"
@@ -76896,6 +78003,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr "图å—åœ°å›¾çš„æ–¹å‘æ¨¡å¼ã€‚有关å¯èƒ½çš„值,å‚阅[enum Mode]。"
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr "TileMap 生æˆå…¶å¯¼èˆªåœ°åŒºçš„导航层。"
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -78248,10 +79359,17 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
-msgstr ""
-"è¿”å›žè¯¥å˜æ¢çš„副本,使用矩阵乘法将其用给定的缩放系数 [code]scale[/code] 进行缩"
-"放。"
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
+msgstr ""
+"è¿”å›žè¯¥å˜æ¢åœ¨ä½¿ç”¨ç»™å®šçš„ [code]scale[/code] 缩放系统进行矩阵乘法åŽçš„副本。\n"
+"[b]注æ„:[/b]2D ä¸­ï¼Œå˜æ¢çŸ©é˜µæ˜¯æ— æ³•分解出负数的 X 缩放的。由于 Godot 中使用å˜"
+"æ¢çŸ©é˜µæ¥è¡¨ç¤ºç¼©æ”¾ï¼ŒX 轴上的负数缩放在分解åŽä¼šå˜ä¸º Y 轴的负数缩放和一次 180 度"
+"的旋转。"
#: doc/classes/Transform2D.xml
msgid ""
@@ -79636,14 +80754,13 @@ msgid "Stops animation and removes all tweens."
msgstr "åœæ­¢åŠ¨ç”»ï¼Œå¹¶åˆ é™¤æ‰€æœ‰è¡¥é—´ã€‚"
#: doc/classes/Tween.xml
-#, fuzzy
msgid ""
"Resets a tween to its initial value (the one given, not the one before the "
"tween), given its object and property/method pair. By default, all tweens "
"are reset, unless [code]key[/code] is specified."
msgstr ""
"将补间é‡ç½®åˆ°å®ƒçš„åˆå§‹å€¼ï¼Œå³ç»™å®šçš„å€¼ï¼Œè€Œä¸æ˜¯è¡¥é—´ä¹‹å‰çš„值,指定其对象和属性或方"
-"æ³•çš„å¯¹ã€‚é»˜è®¤æƒ…å†µä¸‹ï¼Œé™¤éžæŒ‡å®šäº†[code]key[/code],å¦åˆ™æ‰€æœ‰çš„补间都被移除。"
+"æ³•çš„å¯¹ã€‚é»˜è®¤æƒ…å†µä¸‹ï¼Œé™¤éžæŒ‡å®šäº†[code]key[/code],å¦åˆ™æ‰€æœ‰çš„补间都会被é‡ç½®ã€‚"
#: doc/classes/Tween.xml
msgid ""
@@ -82287,11 +83404,11 @@ msgstr ""
#: doc/classes/Viewport.xml
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
-"如果为 [code]true[/code],该视窗将使用 [code]world[/code] 属性中定义的 "
-"[World]。"
+"如果为 [code]true[/code],该视窗将使用 [member world] 中定义的 [World] 的唯一"
+"副本。"
#: doc/classes/Viewport.xml
msgid ""
@@ -82383,13 +83500,13 @@ msgstr ""
#: doc/classes/Viewport.xml
msgid "If [code]true[/code], the size override affects stretch as well."
-msgstr "如果[code]true[/code],尺寸é‡å†™ä¹Ÿä¼šå½±å“拉伸。"
+msgstr "如果为 [code]true[/code],尺寸é‡å†™ä¹Ÿä¼šå½±å“拉伸。"
#: doc/classes/Viewport.xml
msgid ""
"If [code]true[/code], the viewport should render its background as "
"transparent."
-msgstr "如果 [code]true[/code]ï¼Œè§†çª—åº”ä½¿å…¶èƒŒæ™¯æ¸²æŸ“ä¸ºé€æ˜Žã€‚"
+msgstr "如果为 [code]true[/code]ï¼Œè¯¥è§†çª—åº”ä½¿å…¶èƒŒæ™¯æ¸²æŸ“ä¸ºé€æ˜Žã€‚"
#: doc/classes/Viewport.xml
msgid "The rendering mode of viewport."
@@ -82415,11 +83532,11 @@ msgstr ""
#: doc/classes/Viewport.xml
msgid "The custom [World] which can be used as 3D environment source."
-msgstr "自定义的[World],å¯ä»¥ä½œä¸º3D环境æºã€‚"
+msgstr "自定义的 [World],å¯ä»¥ä½œä¸º 3D 环境æºã€‚"
#: doc/classes/Viewport.xml
msgid "The custom [World2D] which can be used as 2D environment source."
-msgstr "自定义的[World2D],å¯ä»¥ä½œä¸º2D环境æºã€‚"
+msgstr "自定义的 [World2D],å¯ä»¥ä½œä¸º 2D 环境æºã€‚"
#: doc/classes/Viewport.xml
msgid "Emitted when a Control node grabs keyboard focus."
@@ -82788,23 +83905,26 @@ msgstr "如果[code]true[/code],父级的[method Node._process]å°†è¢«åœæ­¢ã€‚
#: doc/classes/VisibilityEnabler2D.xml
msgid "This enabler will freeze [RigidBody2D] nodes."
-msgstr "这个å¯ç”¨ç¨‹åºå°†å†»ç»“[RigidBody2D]节点。"
+msgstr "这个å¯ç”¨ç¨‹åºå°†å†»ç»“ [RigidBody2D] 节点。"
#: doc/classes/VisibilityEnabler2D.xml
msgid "This enabler will stop [Particles2D] nodes."
-msgstr "这个å¯ç”¨ç¨‹åºå°†åœæ­¢[Particles2D]节点。"
+msgstr "这个å¯ç”¨ç¨‹åºå°†åœæ­¢ [Particles2D] 节点。"
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
-msgstr "这个å¯ç”¨ç¨‹åºå°†åœæ­¢çˆ¶ç±»çš„_process函数。"
+#, fuzzy
+msgid "This enabler will stop the parent's [method Node._process] function."
+msgstr "这个å¯ç”¨ç¨‹åºå°†åœæ­¢çˆ¶ç±»çš„ _process 函数。"
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
-msgstr "这个å¯ç”¨ç¨‹åºå°†åœæ­¢çˆ¶ç±»çš„_physics_process函数。"
+#, fuzzy
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
+msgstr "这个å¯ç”¨ç¨‹åºå°†åœæ­¢çˆ¶ç±»çš„ _physics_process 函数。"
#: doc/classes/VisibilityEnabler2D.xml
msgid "This enabler will stop [AnimatedSprite] nodes animations."
-msgstr "这个å¯ç”¨ç¨‹åºå°†åœæ­¢[AnimatedSprite]节点的动画。"
+msgstr "这个å¯ç”¨ç¨‹åºå°†åœæ­¢ [AnimatedSprite] 节点的动画。"
#: doc/classes/VisibilityNotifier.xml doc/classes/VisibilityNotifier2D.xml
msgid "Detects approximately when the node is visible on screen."
@@ -82849,6 +83969,20 @@ msgid "The VisibilityNotifier's bounding box."
msgstr "VisibilityNotifier的边界框。"
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+"除了检查节点是å¦åœ¨å±å¹•内或在 [Camera] 的视野内,VisibilityNotifier 还å¯ä»¥åœ¨ä½¿"
+"用é€è§†æŠ•影的 [Camera] 时对节点是å¦åœ¨æŒ‡å®šçš„æœ€å¤§è·ç¦»å†…进行检测。å¯ç”¨äºŽé™åˆ¶è¿œè·"
+"离节点的性能需求。\n"
+"[b]注æ„:[/b]如果设为 0.0 则会ç¦ç”¨è¿™ä¸ªç‰¹æ€§ã€‚"
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr "当VisibilityNotifier进入[Camera]的视图时触å‘。"
@@ -86399,11 +87533,10 @@ msgid "Returns the value of a certain material's parameter."
msgstr "返回特定æè´¨çš„傿•°å€¼ã€‚"
#: doc/classes/VisualServer.xml
-#, fuzzy
msgid ""
"Returns the default value for the param if available. Returns [code]null[/"
"code] otherwise."
-msgstr "如果å¯ç”¨ï¼Œè¿”å›žå‚æ•°çš„默认值。å¦åˆ™è¿”回一个空的 [Variant]。"
+msgstr "如果å¯ç”¨ï¼Œè¿”å›žå‚æ•°çš„默认值。å¦åˆ™è¿”回 [code]null[/code]。"
#: doc/classes/VisualServer.xml
msgid ""
@@ -87385,13 +88518,13 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
-"将视窗å¤åˆ¶åˆ°å±å¹•上由[code]rect[/code]指定的区域。如果[member Viewport."
-"render_direct_to_screen]是[code]true[/code],那么视窗就ä¸ä¼šä½¿ç”¨å¸§ç¼“冲器,视窗"
+"将视窗å¤åˆ¶åˆ°å±å¹•上由 [code]rect[/code] 指定的区域。如果 [member Viewport."
+"render_direct_to_screen] 为 [code]true[/code],那么视窗就ä¸ä¼šä½¿ç”¨å¸§ç¼“冲,视窗"
"的内容会直接渲染到å±å¹•上。然而,请注æ„,根视窗是最åŽç»˜åˆ¶çš„,因此它将在å±å¹•上"
-"绘制。因此,你必须将根视窗设置为一个ä¸è¦†ç›–你所附加的这个视窗的区域。\n"
+"绘制。相应地,你就必须将根视窗设置为一个ä¸è¦†ç›–你所附加的这个视窗的区域。\n"
"例如,你å¯ä»¥ç”¨ä»¥ä¸‹ä»£ç å°†æ ¹è§†çª—è®¾ç½®ä¸ºå®Œå…¨ä¸æ¸²æŸ“。\n"
"[codeblock]\n"
"func _ready():\n"
@@ -87399,7 +88532,7 @@ msgstr ""
" $Viewport.set_attach_to_screen_rect(Rect2(0, 0, 600, 600))\n"
"[/codeblock]\n"
"使用这个方法å¯ä»¥å¸¦æ¥æ˜Žæ˜¾çš„优化,特别是在低端设备上。然而,它的代价是必须手动"
-"管ç†ä½ çš„视窗。对于进一步的优化,请看,[method "
+"管ç†ä½ çš„视窗。进一步的优化请å‚阅 [method "
"viewport_set_render_direct_to_screen]。"
#: doc/classes/VisualServer.xml
@@ -88316,6 +89449,21 @@ msgid "The amount of shader rebinds in the frame."
msgstr "叧䏭釿–°ç»‘定的ç€è‰²å™¨æ•°é‡ã€‚"
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+"在该帧中,处于编译状æ€çš„ç€è‰²å™¨æ•°é‡å³°å€¼ã€‚\n"
+"å¯ç”¨äºŽæ£€æŸ¥å±å¹•上当å‰ç€è‰²å™¨çš„异步编译是å¦å®Œæˆã€‚\n"
+"[b]注æ„:[/b]è¦çœŸæ­£ç¡®å®šå®Œæˆï¼Œè¯·åœ¨è¿™ä¸ªå€¼è‡³å°‘连续两帧都为零时æ‰è®¤ä¸ºæ²¡æœ‰å…¶ä»–东西"
+"需è¦ç¼–译。\n"
+"GLES2 渲染åŽç«¯ä¸­å°šæœªå®žçŽ°ï¼Œå§‹ç»ˆè¿”å›ž 0。"
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr "å¸§ä¸­çš„è¡¨é¢æ›´æ”¹é‡ã€‚"
@@ -91577,8 +92725,9 @@ msgid ""
"can set this to a valid [X509Certificate] to be provided as additional CA "
"chain information during the SSL handshake."
msgstr ""
-"当使用SSL时,你å¯ä»¥å°†å…¶è®¾ç½®ä¸ºä¸€ä¸ªæœ‰æ•ˆçš„[X509Certificate],作为SSLæ¡æ‰‹è¿‡ç¨‹ä¸­é¢"
-"外的CAé“¾ä¿¡æ¯æä¾›ã€‚å‚阅[member private_key]å’Œ[member ssl_certificate]。"
+"当使用 SSL 时,你å¯ä»¥å°†å…¶è®¾ç½®ä¸ºä¸€ä¸ªæœ‰æ•ˆçš„ [X509Certificate],作为 SSL æ¡æ‰‹è¿‡"
+"程中é¢å¤–çš„ CA é“¾ä¿¡æ¯æä¾›ã€‚è¯·å‚阅 [member private_key] å’Œ [member "
+"ssl_certificate]。"
#: modules/websocket/doc_classes/WebSocketServer.xml
msgid ""
@@ -91613,23 +92762,23 @@ msgid ""
"to achieve the clean close. See [method WebSocketPeer.close] for more "
"details."
msgstr ""
-"å½“ä¸€ä¸ªå®¢æˆ·ç«¯è¦æ±‚彻底关闭时触å‘。你应该继续轮询,直到你得到一个具有相åŒ"
-"[code]id[/code]çš„[signal client_disconnected]ä¿¡å·ï¼Œä»¥å®žçŽ°å½»åº•å…³é—­ã€‚è¯·å‚阅"
-"[method WebSocketPeer.close]以了解更多细节。"
+"å½“ä¸€ä¸ªå®¢æˆ·ç«¯è¦æ±‚彻底关闭时触å‘ã€‚ä½ åº”è¯¥ç»§ç»­è½®è¯¢ï¼Œç›´åˆ°ä½ å¾—åˆ°ä¸€ä¸ªå…·æœ‰ç›¸åŒ "
+"[code]id[/code] çš„ [signal client_disconnected] ä¿¡å·ï¼Œä»¥å®žçŽ°å½»åº•å…³é—­ã€‚æ›´å¤šç»†"
+"节请å‚阅 [method WebSocketPeer.close]。"
#: modules/websocket/doc_classes/WebSocketServer.xml
msgid ""
"Emitted when a new client connects. \"protocol\" will be the sub-protocol "
"agreed with the client."
-msgstr "当新的客户端连接时触å‘。\"åè®®\" 将是与客户端达æˆçš„å­å议。"
+msgstr "当新的客户端连接时触å‘。“protocolâ€å°†æ˜¯ä¸Žå®¢æˆ·ç«¯è¾¾æˆçš„å­å议。"
#: modules/websocket/doc_classes/WebSocketServer.xml
msgid ""
"Emitted when a client disconnects. [code]was_clean_close[/code] will be "
"[code]true[/code] if the connection was shutdown cleanly."
msgstr ""
-"当客户端断开连接时触å‘。如果连接被彻底关闭[code]was_clean_close[/code] 将是"
-"[code]true[/code] 。"
+"当客户端断开连接时触å‘。如果连接被彻底关闭,[code]was_clean_close[/code] å°†"
+"是 [code]true[/code] 。"
#: modules/websocket/doc_classes/WebSocketServer.xml
msgid ""
@@ -91638,7 +92787,7 @@ msgid ""
"multiplayer peer."
msgstr ""
"å½“æ”¶åˆ°ä¸€ä¸ªæ–°æ¶ˆæ¯æ—¶è§¦å‘。\n"
-"[b]注æ„:[/b]这个信å·åœ¨ç”¨ä½œé«˜çº§å¤šäººå¯¹ç­‰çš„æ—¶å€™ï¼Œ[i]ä¸[/i]触å‘。"
+"[b]注æ„:[/b]这个信å·åœ¨ç”¨ä½œé«˜çº§å¤šäººå¯¹ç­‰çš„æ—¶å€™ï¼Œ[i]ä¸ä¼š[/i]触å‘。"
#: modules/webxr/doc_classes/WebXRInterface.xml
msgid "AR/VR interface using WebXR."
@@ -91819,7 +92968,7 @@ msgstr ""
"\n"
"func _on_Button_pressed():\n"
" if not vr_supported:\n"
-" OS.alert(\"Your browser doesn't support VR\")\n"
+" OS.alert(\"ä½ çš„æµè§ˆå™¨ä¸æ”¯æŒ VR\")\n"
" return\n"
"\n"
" # 获得沉浸å¼çš„VRä½“éªŒï¼Œè€Œä¸æ˜¯AR('immersive-ar')\n"
@@ -91844,12 +92993,12 @@ msgstr ""
" # _webxr_session_started()或_webxr_session_failed()方法被调用时,æ‰çŸ¥é“它"
"是å¦çœŸçš„æˆåŠŸæˆ–å¤±è´¥ã€‚\n"
" if not webxr_interface.initialize():\n"
-" OS.alert(\"Failed to initialize\")\n"
+" OS.alert(\"åˆå§‹åŒ–失败\")\n"
" return\n"
"\n"
"func _webxr_session_started():\n"
" $Button.visible = false\n"
-" # 这告诉Godot开始进行渲染。\n"
+" # 让 Godot 开始进行渲染。\n"
" get_viewport().arvr = true\n"
" # 这将是您从上é¢è¯·æ±‚的类型中最终得到的引用空间类型。\n"
" # 如果你想让游æˆåœ¨'bounded-floor'å’Œ 'local-floor' 中有一点ä¸åŒï¼Œ\n"
@@ -91864,7 +93013,7 @@ msgstr ""
" get_viewport().arvr = false\n"
"\n"
"func _webxr_session_failed(message):\n"
-" OS.alert(\"Failed to initialize: \" + message)\n"
+" OS.alert(\"åˆå§‹åŒ–失败:\" + message)\n"
"[/codeblock]\n"
"æœ‰å‡ ç§æ–¹æ³•æ¥å¤„ç†â€œcontrollerâ€æŽ§åˆ¶å™¨çš„è¾“å…¥ã€‚\n"
"- 使用 [ARVRController] 节点和它们的 [signal ARVRController.button_pressed] "
@@ -92301,11 +93450,11 @@ msgstr "拥有与世界相关的一切的类。"
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
-"拥有与世界相关的一切的类。物ç†ç©ºé—´ã€è§†è§‰åœºæ™¯å’Œå£°éŸ³ç©ºé—´ã€‚ç©ºé—´èŠ‚ç‚¹å°†å…¶èµ„æºæ³¨å†Œ"
-"到当å‰ä¸–界中。"
+"拥有与世界相关的一切的类。物ç†ç©ºé—´ã€è§†è§‰åœºæ™¯ã€å¯¼èˆªåœ°å›¾å’Œå£°éŸ³ç©ºé—´ã€‚空间节点将"
+"å…¶èµ„æºæ³¨å†Œåˆ°å½“å‰ä¸–界中。"
#: doc/classes/World.xml
msgid ""
@@ -92318,14 +93467,20 @@ msgid "The World's [Environment]."
msgstr "World的[Environment]环境。"
#: doc/classes/World.xml
+#, fuzzy
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
"如果 World 的 [Environment] 失败或丢失,将使用 World 的 "
"fallback_environment。"
#: doc/classes/World.xml
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
+msgstr "这个世界的导航地图的 [RID]。会被 [NavigationServer] 使用。"
+
+#: doc/classes/World.xml
msgid "The World's visual scenario."
msgstr "世界的视觉场景。"
@@ -92340,11 +93495,11 @@ msgstr "拥有与 2D 世界有关的所有内容的类。"
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
-"拥有与 2D 世界有关一切的类。一个物ç†ç©ºé—´ã€ä¸€ä¸ªå¯è§†åŒ–场景和一个声音空间。2D 节"
-"ç‚¹å°†å…¶èµ„æºæ³¨å†Œåˆ°å½“å‰çš„ 2D 世界中。"
+"拥有与 2D 世界有关一切的类。物ç†ç©ºé—´ã€è§†è§‰åœºæ™¯ã€å¯¼èˆªåœ°å›¾å’Œå£°éŸ³ç©ºé—´ã€‚2D 节点将"
+"å…¶èµ„æºæ³¨å†Œåˆ°å½“å‰çš„ 2D 世界中。"
#: doc/classes/World2D.xml
msgid ""
@@ -92363,6 +93518,11 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr "这个世界的导航地图的 [RID]。会被 [Navigation2DServer] 使用。"
+
+#: doc/classes/World2D.xml
+msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
msgstr ""
@@ -92408,7 +93568,6 @@ msgid "An X509 certificate (e.g. for SSL)."
msgstr "X509 è¯ä¹¦ï¼ˆä¾‹å¦‚用于 SSL)。"
#: doc/classes/X509Certificate.xml
-#, fuzzy
msgid ""
"The X509Certificate class represents an X509 certificate. Certificates can "
"be loaded and saved like any other [Resource].\n"
@@ -92421,8 +93580,7 @@ msgstr ""
"加载和ä¿å­˜ã€‚\n"
"它们å¯ä»¥ä½œä¸º [method StreamPeerSSL.accept_stream] 中的æœåС噍è¯ä¹¦ï¼Œä¸Žé€‚当的 "
"[CryptoKey] 一起使用,并指定通过 [method StreamPeerSSL.connect_to_stream] 连"
-"接到 SSL æœåŠ¡å™¨æ—¶åº”è¯¥æŽ¥å—的唯一è¯ä¹¦ã€‚\n"
-"[b]注æ„:[/b]在 HTML5 导出中ä¸å¯ç”¨ã€‚"
+"接到 SSL æœåŠ¡å™¨æ—¶åº”è¯¥æŽ¥å—的唯一è¯ä¹¦ã€‚"
#: doc/classes/X509Certificate.xml
msgid "Loads a certificate from [code]path[/code] (\"*.crt\" file)."
diff --git a/doc/translations/zh_TW.po b/doc/translations/zh_TW.po
index 82786a4963..ba40f5ee74 100644
--- a/doc/translations/zh_TW.po
+++ b/doc/translations/zh_TW.po
@@ -428,7 +428,7 @@ msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Compares two values by checking their actual contents, recursing into any "
-"`Array` or `Dictionary` up to its deepest level.\n"
+"[Array] or [Dictionary] up to its deepest level.\n"
"This compares to [code]==[/code] in a number of ways:\n"
"- For [code]null[/code], [code]int[/code], [code]float[/code], [code]String[/"
"code], [code]Object[/code] and [code]RID[/code] both [code]deep_equal[/code] "
@@ -3488,6 +3488,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 2D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that an integer property is a bitmask using the optionally named 3D "
"render layers."
msgstr ""
@@ -3500,6 +3506,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
msgid ""
+"Hints that an integer property is a bitmask using the optionally named 3D "
+"navigation layers."
+msgstr ""
+
+#: doc/classes/@GlobalScope.xml
+msgid ""
"Hints that a string property is a path to a file. Editing it will show a "
"file dialog for picking the path. The hint string can be a set of filters "
"with wildcards like [code]\"*.png,*.jpg\"[/code]."
@@ -8480,7 +8492,7 @@ msgid ""
"[/codeblock]"
msgstr ""
-#: doc/classes/AStar.xml
+#: doc/classes/AStar.xml doc/classes/AStar2D.xml
msgid ""
"Deletes the segment between the given points. If [code]bidirectional[/code] "
"is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/"
@@ -8679,7 +8691,10 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Returns whether there is a connection/segment between the given points."
+msgid ""
+"Returns whether there is a connection/segment between the given points. If "
+"[code]bidirectional[/code] is [code]false[/code], returns whether movement "
+"from [code]id[/code] to [code]to_id[/code] is possible through this segment."
msgstr ""
#: doc/classes/AStar2D.xml
@@ -8696,10 +8711,6 @@ msgid ""
msgstr ""
#: doc/classes/AStar2D.xml
-msgid "Deletes the segment between the given points."
-msgstr ""
-
-#: doc/classes/AStar2D.xml
msgid ""
"Returns the closest position to [code]to_position[/code] that resides inside "
"a segment between two connected points.\n"
@@ -8884,7 +8895,9 @@ msgid ""
"Application code should consume these audio frames from this ring buffer "
"using [method get_buffer] and process it as needed, for example to capture "
"data from a microphone, implement application defined effects, or to "
-"transmit audio over the network."
+"transmit audio over the network. When capturing audio data from a "
+"microphone, the format of the samples will be stereo 32-bit floating point "
+"PCM."
msgstr ""
#: doc/classes/AudioEffectCapture.xml
@@ -12479,7 +12492,7 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"Draws a colored, unfilled circle. See also [method draw_arc], [method "
+"Draws a colored, filled circle. See also [method draw_arc], [method "
"draw_polyline] and [method draw_polygon].\n"
"[b]Note:[/b] Built-in antialiasing is not provided for [method draw_circle]. "
"As a workaround, install the [url=https://github.com/godot-extended-"
@@ -13736,7 +13749,7 @@ msgid ""
msgstr ""
#: doc/classes/CollisionObject.xml doc/classes/CollisionObject2D.xml
-#: doc/classes/Navigation.xml doc/classes/Navigation2D.xml
+#: doc/classes/Navigation2D.xml
msgid "Returns the object's [RID]."
msgstr ""
@@ -14205,7 +14218,7 @@ msgid ""
"Constructs a color from a 32-bit integer in RGBA format (each byte "
"represents a color channel).\n"
"[codeblock]\n"
-"var c = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
+"var color = Color(274) # Similar to Color(0.0, 0.0, 0.004, 0.07)\n"
"[/codeblock]"
msgstr ""
@@ -14243,9 +14256,9 @@ msgstr ""
msgid ""
"Returns the most contrasting color.\n"
"[codeblock]\n"
-"var c = Color(0.3, 0.4, 0.9)\n"
-"var contrasted_color = c.contrasted() # Equivalent to RGBA(204, 229, 102, "
-"255)\n"
+"var color = Color(0.3, 0.4, 0.9)\n"
+"var contrasted_color = color.contrasted() # Equivalent to RGBA(204, 229, "
+"102, 255)\n"
"[/codeblock]"
msgstr ""
@@ -14264,8 +14277,8 @@ msgid ""
"Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and "
"[code]v[/code] are values between 0 and 1.\n"
"[codeblock]\n"
-"var c = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, 50, "
-"79, 0.8) or Color8(100, 151, 201, 0.8)\n"
+"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8) # Equivalent to HSV(210, "
+"50, 79, 0.8) or Color8(100, 151, 201, 0.8)\n"
"[/codeblock]"
msgstr ""
@@ -14281,8 +14294,8 @@ msgid ""
"Returns the color's grayscale representation.\n"
"The gray value is calculated as [code](r + g + b) / 3[/code].\n"
"[codeblock]\n"
-"var c = Color(0.2, 0.45, 0.82)\n"
-"var gray = c.gray() # A value of 0.466667\n"
+"var color = Color(0.2, 0.45, 0.82)\n"
+"var gray = color.gray() # A value of 0.466667\n"
"[/codeblock]"
msgstr ""
@@ -14373,9 +14386,9 @@ msgid ""
"Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from "
"the hexadecimal string.\n"
"[codeblock]\n"
-"var c = Color(1, 1, 1, 0.5)\n"
-"var s1 = c.to_html() # Returns \"7fffffff\"\n"
-"var s2 = c.to_html(false) # Returns \"ffffff\"\n"
+"var color = Color(1, 1, 1, 0.5)\n"
+"var s1 = color.to_html() # Returns \"7fffffff\"\n"
+"var s2 = color.to_html(false) # Returns \"ffffff\"\n"
"[/codeblock]"
msgstr ""
@@ -19221,11 +19234,15 @@ msgid ""
msgstr ""
#: doc/classes/CurveTexture.xml
-msgid "The [code]curve[/code] rendered onto the texture."
-msgstr ""
+#, fuzzy
+msgid "The [Curve] that is rendered onto the texture."
+msgstr "å›žå‚³åƒæ•¸çš„æ­£å¼¦å€¼ã€‚"
#: doc/classes/CurveTexture.xml
-msgid "The width of the texture."
+msgid ""
+"The width of the texture (in pixels). Higher values make it possible to "
+"represent high-frequency data better (such as sudden direction changes), at "
+"the cost of increased generation time and memory usage."
msgstr ""
#: doc/classes/CylinderMesh.xml
@@ -19511,6 +19528,13 @@ msgid "Returns the list of keys in the [Dictionary]."
msgstr ""
#: doc/classes/Dictionary.xml
+msgid ""
+"Adds elements from [code]dictionary[/code] to this [Dictionary]. By default, "
+"duplicate keys will not be copied over, unless [code]overwrite[/code] is "
+"[code]true[/code]."
+msgstr ""
+
+#: doc/classes/Dictionary.xml
#, fuzzy
msgid "Returns the number of keys in the dictionary."
msgstr "å›žå‚³åƒæ•¸çš„æ­£å¼¦å€¼ã€‚"
@@ -21443,7 +21467,7 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the Editor's dialogue used for making scripts.\n"
+"Gets the Editor's dialog used for making scripts.\n"
"[b]Note:[/b] Users can configure it before use.\n"
"[b]Warning:[/b] Removing and freeing this node will render a part of the "
"editor useless and may cause a crash."
@@ -21451,9 +21475,23 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the state of your plugin editor. This is used when saving the scene (so "
-"state is kept when opening it again) and for switching tabs (so state can be "
-"restored when the tab returns)."
+"Override this method to provide a state data you want to be saved, like view "
+"position, grid settings, folding, etc. This is used when saving the scene "
+"(so state is kept when opening it again) and for switching tabs (so state "
+"can be restored when the tab returns). This data is automatically saved for "
+"each scene in an [code]editstate[/code] file in the editor metadata folder. "
+"If you want to store global (scene-independent) editor data for your plugin, "
+"you can use [method get_window_layout] instead.\n"
+"Use [method set_state] to restore your saved state.\n"
+"[b]Note:[/b] This method should not be used to save important settings that "
+"should persist with the project.\n"
+"[b]Note:[/b] You must implement [method get_plugin_name] for the state to be "
+"stored and restored correctly.\n"
+"[codeblock]\n"
+"func get_state():\n"
+" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n"
+" return state\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21464,9 +21502,18 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid ""
-"Gets the GUI layout of the plugin. This is used to save the project's editor "
-"layout when [method queue_save_layout] is called or the editor layout was "
-"changed(For example changing the position of a dock)."
+"Override this method to provide the GUI layout of the plugin or any other "
+"data you want to be stored. This is used to save the project's editor layout "
+"when [method queue_save_layout] is called or the editor layout was changed "
+"(for example changing the position of a dock). The data is stored in the "
+"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n"
+"Use [method set_window_layout] to restore your saved layout.\n"
+"[codeblock]\n"
+"func get_window_layout(configuration):\n"
+" configuration.set_value(\"MyPlugin\", \"window_position\", $Window."
+"position)\n"
+" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -21579,11 +21626,30 @@ msgid ""
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the state saved by [method get_state]."
+msgid ""
+"Restore the state saved by [method get_state]. This method is called when "
+"the current scene tab is changed in the editor.\n"
+"[b]Note:[/b] Your plugin must implement [method get_plugin_name], otherwise "
+"it will not be recognized and this method will not be called.\n"
+"[codeblock]\n"
+"func set_state(data):\n"
+" zoom = data.get(\"zoom\", 1.0)\n"
+" preferred_color = data.get(\"my_color\", Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
-msgid "Restore the plugin GUI layout saved by [method get_window_layout]."
+msgid ""
+"Restore the plugin GUI layout and data saved by [method get_window_layout]. "
+"This method is called for every plugin on editor startup. Use the provided "
+"[code]configuration[/code] file to read your saved data.\n"
+"[codeblock]\n"
+"func set_window_layout(configuration):\n"
+" $Window.position = configuration.get_value(\"MyPlugin\", "
+"\"window_position\", Vector2())\n"
+" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", "
+"Color.white)\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/EditorPlugin.xml
@@ -23757,11 +23823,11 @@ msgid "Low quality for the screen-space ambient occlusion effect (fastest)."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect."
+msgid "Medium quality for the screen-space ambient occlusion effect."
msgstr ""
#: doc/classes/Environment.xml
-msgid "Low quality for the screen-space ambient occlusion effect (slowest)."
+msgid "High quality for the screen-space ambient occlusion effect (slowest)."
msgstr ""
#: doc/classes/Expression.xml
@@ -26230,7 +26296,8 @@ msgid ""
"will be filled from left to right using colors obtained from the gradient. "
"This means the texture does not necessarily represent an exact copy of the "
"gradient, but instead an interpolation of samples obtained from the gradient "
-"at fixed steps (see [member width])."
+"at fixed steps (see [member width]). See also [GradientTexture2D] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture.xml
@@ -26252,7 +26319,8 @@ msgid ""
"repeat] types using colors obtained from the gradient. The texture does not "
"necessarily represent an exact copy of the gradient, but instead an "
"interpolation of samples obtained from the gradient at fixed steps (see "
-"[member width] and [member height])."
+"[member width] and [member height]). See also [GradientTexture] and "
+"[CurveTexture]."
msgstr ""
#: doc/classes/GradientTexture2D.xml
@@ -27066,6 +27134,12 @@ msgid ""
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid ""
+"If [code]true[/code], this GridMap uses cell navmesh resources to create "
+"navigation regions."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid "If [code]true[/code], grid items are centered on the X axis."
msgstr ""
@@ -27116,6 +27190,10 @@ msgid "The assigned [MeshLibrary]."
msgstr ""
#: modules/gridmap/doc_classes/GridMap.xml
+msgid "The navigation layers the GridMap generates its navigation regions in."
+msgstr ""
+
+#: modules/gridmap/doc_classes/GridMap.xml
msgid ""
"Overrides the default friction and bounce physics properties for the whole "
"[GridMap]."
@@ -29508,7 +29586,7 @@ msgstr ""
msgid ""
"Sends all input events which are in the current buffer to the game loop. "
"These events may have been buffered as a result of accumulated input "
-"([method set_use_accumulated_input]) or agile input flushing ([member "
+"([member use_accumulated_input]) or agile input flushing ([member "
"ProjectSettings.input_devices/buffering/agile_event_flushing]).\n"
"The engine will already do this itself at key execution points (at least "
"once per frame). However, this can be useful in advanced cases where you "
@@ -29657,10 +29735,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Returns the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Gets an input vector by specifying four actions for the positive and "
"negative X and Y axes.\n"
@@ -29854,24 +29928,6 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
-msgid "Sets the mouse mode. See the constants for more information."
-msgstr ""
-
-#: doc/classes/Input.xml
-msgid ""
-"Enables or disables the accumulation of similar input events sent by the "
-"operating system. When input accumulation is enabled, all input events "
-"generated during a frame will be merged and emitted when the frame is done "
-"rendering. Therefore, this limits the number of input method calls per "
-"second to the rendering FPS.\n"
-"Input accumulation is enabled by default. It can be disabled to get slightly "
-"more precise/reactive input at the cost of increased CPU usage. In "
-"applications where drawing freehand lines is required, input accumulation "
-"should generally be disabled while the user is drawing the line to get "
-"results that closely follow the actual input."
-msgstr ""
-
-#: doc/classes/Input.xml
msgid ""
"Starts to vibrate the joypad. Joypads usually come with two rumble motors, a "
"strong and a weak one. [code]weak_magnitude[/code] is the strength of the "
@@ -29907,6 +29963,24 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+msgid "Controls the mouse mode. See [enum MouseMode] for more information."
+msgstr ""
+
+#: doc/classes/Input.xml
+msgid ""
+"If [code]true[/code], similar input events sent by the operating system are "
+"accumulated. When input accumulation is enabled, all input events generated "
+"during a frame will be merged and emitted when the frame is done rendering. "
+"Therefore, this limits the number of input method calls per second to the "
+"rendering FPS.\n"
+"Input accumulation can be disabled to get slightly more precise/reactive "
+"input at the cost of increased CPU usage. In applications where drawing "
+"freehand lines is required, input accumulation should generally be disabled "
+"while the user is drawing the line to get results that closely follow the "
+"actual input."
+msgstr ""
+
+#: doc/classes/Input.xml
msgid "Emitted when a joypad device has been connected or disconnected."
msgstr ""
@@ -30214,8 +30288,8 @@ msgstr ""
#: doc/classes/InputEventJoypadButton.xml
msgid ""
-"Represents the pressure the user puts on the button with his finger, if the "
-"controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
+"Represents the pressure the user puts on the button with their finger, if "
+"the controller supports it. Ranges from [code]0[/code] to [code]1[/code]."
msgstr ""
#: doc/classes/InputEventJoypadMotion.xml
@@ -30478,9 +30552,9 @@ msgid ""
"Contains mouse and pen motion information. Supports relative, absolute "
"positions and speed. See [method Node._input].\n"
"[b]Note:[/b] By default, this event is only emitted once per frame rendered "
-"at most. If you need more precise input reporting, call [method Input."
-"set_use_accumulated_input] with [code]false[/code] to make events emitted as "
-"often as possible. If you use InputEventMouseMotion to draw lines, consider "
+"at most. If you need more precise input reporting, set [member Input."
+"use_accumulated_input] to [code]false[/code] to make events emitted as often "
+"as possible. If you use InputEventMouseMotion to draw lines, consider "
"implementing [url=https://en.wikipedia.org/wiki/"
"Bresenham%27s_line_algorithm]Bresenham's line algorithm[/url] as well to "
"avoid visible gaps in lines if the user is moving the mouse quickly."
@@ -34792,9 +34866,10 @@ msgstr ""
#: doc/classes/MeshInstance2D.xml
msgid ""
-"Node used for displaying a [Mesh] in 2D. Can be constructed from an existing "
-"[Sprite] via a tool in the editor toolbar. Select \"Sprite\" then \"Convert "
-"to Mesh2D\", select settings in popup and press \"Create Mesh2D\"."
+"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be "
+"automatically created from an existing [Sprite] via a tool in the editor "
+"toolbar. Select the [Sprite] node, then choose [b]Sprite > Convert to "
+"MeshInstance2D[/b] at the top of the 2D editor viewport."
msgstr ""
#: doc/classes/MeshInstance2D.xml
@@ -35599,6 +35674,11 @@ msgid ""
msgstr ""
#: doc/classes/Navigation.xml
+#, fuzzy
+msgid "Returns the [RID] of the navigation map on the [NavigationServer]."
+msgstr "å›žå‚³åƒæ•¸çš„æ­£å¼¦å€¼ã€‚"
+
+#: doc/classes/Navigation.xml
msgid ""
"Returns the path between two given points. Points are in local coordinate "
"space. If [code]optimize[/code] is [code]true[/code] (the default), the "
@@ -35621,10 +35701,22 @@ msgstr ""
#: doc/classes/Navigation.xml
msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation.get_simple_path] path query."
+msgstr ""
+
+#: doc/classes/Navigation.xml
+msgid ""
"Defines which direction is up. By default, this is [code](0, 1, 0)[/code], "
"which is the world's \"up\" direction."
msgstr ""
+#: doc/classes/Navigation.xml doc/classes/Navigation2DServer.xml
+#: doc/classes/NavigationServer.xml
+msgid ""
+"Emitted when a navigation map is updated, when a region moves or is modified."
+msgstr ""
+
#: doc/classes/Navigation2D.xml
msgid "2D navigation and pathfinding node."
msgstr ""
@@ -35659,6 +35751,12 @@ msgstr ""
msgid "The XY plane cell size to use for fields."
msgstr ""
+#: doc/classes/Navigation2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the navigation can use on a "
+"[method Navigation2D.get_simple_path] path query."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml
msgid "Server interface for low-level 2D navigation access."
msgstr ""
@@ -35668,11 +35766,19 @@ msgid ""
"Navigation2DServer is the server responsible for all 2D navigation. It "
"handles several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation polygons. "
-"Together, they define the navigable areas in the 2D world. For two regions "
-"to be connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"Together, they define the navigable areas in the 2D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than navigation map [code]edge_connection_margin[/"
+"code] to the respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method Navigation2DServer."
+"region_set_navigation_layers], which then can be checked upon when "
+"requesting a path with [method Navigation2DServer.map_get_path]. This allows "
+"allowing or forbidding some areas to 2D objects.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -35700,7 +35806,17 @@ msgid "Returns [code]true[/code] if the map got changed the previous frame."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Callback called at the end of the RVO process."
+msgid ""
+"Callback called at the end of the RVO process. If a callback is created "
+"manually and the agent is placed on a navigation map it will calculate "
+"avoidance for the agent and dispatch the calculated [code]safe_velocity[/"
+"code] to the [code]receiver[/code] object with a signal to the chosen "
+"[code]method[/code] name.\n"
+"[b]Note:[/b] Created callbacks are always processed independently of the "
+"SceneTree state as long as the agent is on a navigation map and not freed. "
+"To disable the dispatch of a callback from an agent use [method "
+"agent_set_callback] again with a [code]null[/code] object as the "
+"[code]receiver[/code]."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35770,6 +35886,10 @@ msgid ""
"requested navigation [code]map[/code]."
msgstr ""
+#: doc/classes/Navigation2DServer.xml
+msgid "Returns the map cell height. [b]Note:[/b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Returns the map cell size."
@@ -35794,7 +35914,10 @@ msgid ""
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-msgid "Returns the navigation path to reach the destination from the origin."
+msgid ""
+"Returns the navigation path to reach the destination from the origin. "
+"[code]navigation_layers[/code] is a bitmask of all region layers that are "
+"allowed to be in the path."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
@@ -35813,6 +35936,12 @@ msgstr "å›žå‚³åƒæ•¸çš„餘弦值。"
msgid "Sets the map active."
msgstr "å›žå‚³åƒæ•¸çš„åæ­£å¼¦å€¼ã€‚"
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the map cell height used to weld the navigation mesh polygons. [b]Note:[/"
+"b] Currently not implemented."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Set the map cell size used to weld the navigation mesh polygons."
msgstr ""
@@ -35828,15 +35957,61 @@ msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
+"Returns the ending point of a connection door. [code]connection[/code] is an "
+"index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns the starting point of a connection door. [code]connection[/code] is "
+"an index between 0 and the return value of [method "
+"region_get_connections_count]."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
+"Returns how many connections this [code]region[/code] has with other regions "
+"in the map."
+msgstr ""
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]enter_cost[/code] of this [code]region[/code]."
+msgstr "計算兩個å‘é‡çš„外ç©ã€‚"
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+msgid ""
"Returns the navigation map [RID] the requested [code]region[/code] is "
"currently assigned to."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
+msgid "Returns the region's navigation layers."
+msgstr "å›žå‚³åƒæ•¸çš„æ­£å¼¦å€¼ã€‚"
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Returns the [code]travel_cost[/code] of this [code]region[/code]."
+msgstr "計算兩個å‘é‡çš„外ç©ã€‚"
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]enter_cost[/code] for this [code]region[/code]."
+msgstr "計算兩個å‘é‡çš„外ç©ã€‚"
+
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
msgid "Sets the map for the region."
msgstr "å›žå‚³åƒæ•¸çš„æ­£å¼¦å€¼ã€‚"
+#: doc/classes/Navigation2DServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method Navigation2DServer.map_get_path])."
+msgstr ""
+
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
#, fuzzy
msgid "Sets the navigation mesh for the region."
@@ -35847,6 +36022,11 @@ msgstr "å›žå‚³åƒæ•¸çš„相å值。"
msgid "Sets the global transformation for the region."
msgstr "計算兩個å‘é‡çš„外ç©ã€‚"
+#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
+#, fuzzy
+msgid "Sets the [code]travel_cost[/code] for this [code]region[/code]."
+msgstr "計算兩個å‘é‡çš„外ç©ã€‚"
+
#: doc/classes/NavigationAgent.xml
msgid "3D agent used in navigation for collision avoidance."
msgstr ""
@@ -35856,9 +36036,16 @@ msgid ""
"3D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationAgent] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World] navigation map. If this node is a child of a [Navigation] "
+"node it will register to the navigation map of the navigation node or the "
+"function [method set_navigation] can be used to set the navigation node "
+"directly. [NavigationAgent] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
@@ -35876,7 +36063,15 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
-msgid "Returns the path from start to finish in global coordinates."
+msgid ""
+"Returns this agent's current path from start to finish in global "
+"coordinates. The path only updates when the target location is changed or "
+"the agent requires a repath. The path array is not intended to be used in "
+"direct path movement as the agent has its own internal path logic that would "
+"get corrupted by changing the path array manually. Use the intended [method "
+"get_next_location] once every physics frame to receive the next path point "
+"for the agents movement as this function also updates the internal path "
+"logic."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35892,11 +36087,24 @@ msgid ""
"system."
msgstr ""
-#: doc/classes/NavigationAgent.xml
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
+"Returns the [RID] of the navigation map for this NavigationAgent node. This "
+"function returns always the map set on the NavigationAgent node and not the "
+"map of the abstract agent on the NavigationServer. If the agent map is "
+"changed directly with the NavigationServer API the NavigationAgent node will "
+"not be aware of the map change. Use [method set_navigation_map] to change "
+"the navigation map for the NavigationAgent and also update the agent on the "
+"NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
-"Returns a [Vector3] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the origin of the agent's parent."
+"Returns the next location in global coordinates that can be moved to, making "
+"sure that there are no static objects in the way. If the agent does not have "
+"a navigation path, it will return the position of the agent's parent. The "
+"use of this function once every physics frame is required to update the "
+"internal path logic of the NavigationAgent."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35938,6 +36146,12 @@ msgstr ""
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid ""
+"Sets the [RID] of the navigation map this NavigationAgent node should use "
+"and also updates the [code]agent[/code] on the NavigationServer."
+msgstr ""
+
+#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
+msgid ""
"Sets the user desired final location. This will clear the current navigation "
"path."
msgstr ""
@@ -35950,7 +36164,13 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent.xml
-msgid "The agent height offset to match the navigation mesh height."
+msgid ""
+"The NavigationAgent height offset is subtracted from the y-axis value of any "
+"vector path position for this NavigationAgent. The NavigationAgent height "
+"offset does not change or influence the navigation mesh or pathfinding query "
+"result. Additional navigation maps that use regions with navigation meshes "
+"that the developer baked with appropriate agent radius or height values are "
+"required to support different-sized agents."
msgstr ""
#: doc/classes/NavigationAgent.xml
@@ -35977,6 +36197,13 @@ msgstr ""
msgid "The maximum speed that an agent can move."
msgstr ""
+#: doc/classes/NavigationAgent.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationAgent.xml doc/classes/NavigationAgent2D.xml
msgid "The distance to search for other agents."
msgstr ""
@@ -36039,9 +36266,16 @@ msgid ""
"2D agent that is used in navigation to reach a location while avoiding "
"static and dynamic obstacles. The dynamic obstacles are avoided using RVO "
"(Reciprocal Velocity Obstacles) collision avoidance. The agent needs "
-"navigation data to work correctly. This can be done by having the agent as a "
-"child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationAgent2D] is physics safe."
+"navigation data to work correctly. By default this node will register to the "
+"default [World2D] navigation map. If this node is a child of a "
+"[Navigation2D] node it will register to the navigation map of the navigation "
+"node or the function [method set_navigation] can be used to set the "
+"navigation node directly. [NavigationAgent2D] is physics safe.\n"
+"[b]Note:[/b] After [method set_target_location] is used it is required to "
+"use the [method get_next_location] function once every physics frame to "
+"update the internal path logic of the NavigationAgent. The returned vector "
+"position from this function should be used as the next movement position for "
+"the agent's parent Node."
msgstr ""
#: doc/classes/NavigationAgent2D.xml
@@ -36058,13 +36292,6 @@ msgid ""
msgstr ""
#: doc/classes/NavigationAgent2D.xml
-msgid ""
-"Returns a [Vector2] in global coordinates, that can be moved to, making sure "
-"that there are no static objects in the way. If the agent does not have a "
-"navigation path, it will return the position of the agent's parent."
-msgstr ""
-
-#: doc/classes/NavigationAgent2D.xml
#, fuzzy
msgid "Returns the [RID] of this agent on the [Navigation2DServer]."
msgstr "å›žå‚³åƒæ•¸çš„æ­£å¼¦å€¼ã€‚"
@@ -36085,6 +36312,13 @@ msgid ""
"only be enabled on agents that currently require it."
msgstr ""
+#: doc/classes/NavigationAgent2D.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationAgent2D] "
+"belongs to. On path requests the agent will ignore navmeshes without at "
+"least one matching layer."
+msgstr ""
+
#: doc/classes/NavigationMesh.xml
msgid "A mesh to approximate the walkable areas and obstacles."
msgstr ""
@@ -36115,8 +36349,8 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"Returns whether the specified [code]bit[/code] of the [member geometry/"
-"collision_mask] is set."
+"Returns whether the specified [code]bit[/code] of the [member "
+"geometry_collision_mask] is set."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36139,9 +36373,9 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/"
-"code] in the [member geometry/collision_mask].\n"
+"code] in the [member geometry_collision_mask].\n"
"If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/"
-"code] in the [member geometry/collision_mask]."
+"code] in the [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml doc/classes/NavigationPolygon.xml
@@ -36155,14 +36389,14 @@ msgid ""
"The minimum floor to ceiling height that will still allow the floor area to "
"be considered walkable.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The minimum ledge height that is considered to still be traversable.\n"
"[b]Note:[/b] While baking, this value will be rounded down to the nearest "
-"multiple of [member cell/height]."
+"multiple of [member cell_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36174,7 +36408,7 @@ msgid ""
"The distance to erode/shrink the walkable area of the heightfield away from "
"obstructions.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36202,29 +36436,29 @@ msgstr ""
msgid ""
"The maximum allowed length for contour edges along the border of the mesh.\n"
"[b]Note:[/b] While baking, this value will be rounded up to the nearest "
-"multiple of [member cell/size]."
+"multiple of [member cell_size]."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid ""
-"If [code]true[/code], marks walkable spans as not walkable if the clearance "
-"above the span is less than [member agent/height]."
+msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
msgstr ""
#: doc/classes/NavigationMesh.xml
-msgid "If [code]true[/code], marks spans that are ledges as non-walkable."
+msgid ""
+"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
+"is within [member agent_max_climb] of a walkable neighbor."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
-"If [code]true[/code], marks non-walkable spans as walkable if their maximum "
-"is within [member agent/max_climb] of a walkable neighbor."
+"If [code]true[/code], marks walkable spans as not walkable if the clearance "
+"above the span is less than [member agent_height]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The physics layers to scan for static colliders.\n"
-"Only used when [member geometry/parsed_geometry_type] is [constant "
+"Only used when [member geometry_parsed_geometry_type] is [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS] or [constant PARSED_GEOMETRY_BOTH]."
msgstr ""
@@ -36243,7 +36477,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"The name of the group to scan for geometry.\n"
-"Only used when [member geometry/source_geometry_mode] is [constant "
+"Only used when [member geometry_source_geometry_mode] is [constant "
"SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] or [constant "
"SOURCE_GEOMETRY_GROUPS_EXPLICIT]."
msgstr ""
@@ -36306,7 +36540,7 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Parses [StaticBody] colliders as geometry. The collider should be in any of "
-"the layers specified by [member geometry/collision_mask]."
+"the layers specified by [member geometry_collision_mask]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36328,13 +36562,13 @@ msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Scans nodes in a group and their child nodes recursively for geometry. The "
-"group is specified by [member geometry/source_group_name]."
+"group is specified by [member geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
msgid ""
"Uses nodes in a group for geometry. The group is specified by [member "
-"geometry/source_group_name]."
+"geometry_source_group_name]."
msgstr ""
#: doc/classes/NavigationMesh.xml
@@ -36384,8 +36618,8 @@ msgid ""
"Bakes navigation data to the provided [code]nav_mesh[/code] by parsing child "
"nodes under the provided [code]root_node[/code] or a specific group of nodes "
"for potential source geometry. The parse behavior can be controlled with the "
-"[member NavigationMesh.geometry/parsed_geometry_type] and [member "
-"NavigationMesh.geometry/source_geometry_mode] properties on the "
+"[member NavigationMesh.geometry_parsed_geometry_type] and [member "
+"NavigationMesh.geometry_source_geometry_mode] properties on the "
"[NavigationMesh] resource."
msgstr ""
@@ -36403,8 +36637,21 @@ msgstr ""
#: doc/classes/NavigationMeshInstance.xml
msgid ""
"An instance of a [NavigationMesh]. It tells the [Navigation] node what can "
-"be navigated and what cannot, based on the [NavigationMesh] resource. This "
-"should be a child of a [Navigation] node."
+"be navigated and what cannot, based on the [NavigationMesh] resource.\n"
+"By default this node will register to the default [World] navigation map. If "
+"this node is a child of a [Navigation] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method NavigationServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' navmeshes is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The cost of entering this region from another region can be controlled with "
+"the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The cost of traveling distances inside this region can be controlled with "
+"the [member travel_cost] multiplier."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
@@ -36433,10 +36680,34 @@ msgid "Determines if the [NavigationMeshInstance] is enabled or disabled."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding enters this region's navmesh from another regions navmesh "
+"the [code]enter_cost[/code] value is added to the path distance for "
+"determining the shortest path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationMesh] "
+"belongs to. On path requests with [method NavigationServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "The [NavigationMesh] resource to use."
msgstr ""
#: doc/classes/NavigationMeshInstance.xml
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"When pathfinding moves inside this region's navmesh the traveled distances "
+"are multiplied with [code]travel_cost[/code] for determining the shortest "
+"path."
+msgstr ""
+
+#: doc/classes/NavigationMeshInstance.xml
msgid "Notifies when the navigation mesh bake operation is completed."
msgstr ""
@@ -36453,7 +36724,9 @@ msgid ""
"3D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation] node, or using [method set_navigation]. "
-"[NavigationObstacle] is physics safe."
+"[NavigationObstacle] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle.xml
@@ -36494,7 +36767,9 @@ msgid ""
"2D obstacle used in navigation for collision avoidance. The obstacle needs "
"navigation data to work correctly. This can be done by having the obstacle "
"as a child of a [Navigation2D] node, or using [method set_navigation]. "
-"[NavigationObstacle2D] is physics safe."
+"[NavigationObstacle2D] is physics safe.\n"
+"[b]Note:[/b] Obstacles are intended as a last resort option for constantly "
+"moving objects that cannot be (re)baked to a navigation mesh efficiently."
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
@@ -36575,6 +36850,14 @@ msgstr ""
#: doc/classes/NavigationPolygon.xml
msgid ""
+"Returns the [NavigationMesh] resulting from this navigation polygon. This "
+"navmesh can be used to update the navmesh of a region with the [method "
+"NavigationServer.region_set_navmesh] API directly (as 2D uses the 3D server "
+"behind the scene)."
+msgstr ""
+
+#: doc/classes/NavigationPolygon.xml
+msgid ""
"Returns a [PoolVector2Array] containing the vertices of an outline that was "
"created in the editor or by script."
msgstr ""
@@ -36611,6 +36894,30 @@ msgid ""
msgstr ""
#: doc/classes/NavigationPolygonInstance.xml
+msgid "A region of the 2D navigation map."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A region of the navigation map. It tells the [Navigation2DServer] what can "
+"be navigated and what cannot, based on its [NavigationPolygon] resource.\n"
+"By default this node will register to the default [World2D] navigation map. "
+"If this node is a child of a [Navigation2D] node it will register to the "
+"navigation map of the navigation node.\n"
+"Two regions can be connected to each other if they share a similar edge. You "
+"can set the minimum distance between two vertices required to connect two "
+"edges by using [method Navigation2DServer.map_set_edge_connection_margin].\n"
+"[b]Note:[/b] Overlapping two regions' polygons is not enough for connecting "
+"two regions. They must share a similar edge.\n"
+"The pathfinding cost of entering this region from another region can be "
+"controlled with the [member enter_cost] value.\n"
+"[b]Note[/b]: This value is not added to the path cost when the start "
+"position is already inside this region.\n"
+"The pathfinding cost of traveling distances inside this region can be "
+"controlled with the [member travel_cost] multiplier."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
msgid ""
"Returns the [RID] of this region on the [Navigation2DServer]. Combined with "
"[method Navigation2DServer.map_get_closest_point_owner] can be used to "
@@ -36618,6 +36925,22 @@ msgid ""
"navigation map."
msgstr ""
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "Determines if the [NavigationPolygonInstance] is enabled or disabled."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid ""
+"A bitfield determining all navigation map layers the [NavigationPolygon] "
+"belongs to. On path requests with [method Navigation2DServer.map_get_path] "
+"navmeshes without matching layers will be ignored and the navigation map "
+"will only proximity merge different navmeshes with matching layers."
+msgstr ""
+
+#: doc/classes/NavigationPolygonInstance.xml
+msgid "The [NavigationPolygon] resource to use."
+msgstr ""
+
#: doc/classes/NavigationServer.xml
msgid "Server interface for low-level 3D navigation access."
msgstr ""
@@ -36627,11 +36950,15 @@ msgid ""
"NavigationServer is the server responsible for all 3D navigation. It handles "
"several objects, namely maps, regions and agents.\n"
"Maps are made up of regions, which are made of navigation meshes. Together, "
-"they define the navigable areas in the 3D world. For two regions to be "
-"connected to each other, they must share a similar edge. An edge is "
-"considered connected to another if both of its two vertices are at a "
-"distance less than [member Navigation.edge_connection_margin] to the "
-"respective other edge's vertex.\n"
+"they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most NavigationServer changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation related Nodes in the SceneTree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [member Navigation.edge_connection_margin] to "
+"the respective other edge's vertex.\n"
"To use the collision avoidance system, you may use agents. You can set an "
"agent's target velocity, then the servers will emit a callback with a "
"modified velocity.\n"
@@ -36693,6 +37020,12 @@ msgid "Bakes the navigation mesh."
msgstr ""
#: doc/classes/NavigationServer.xml
+msgid ""
+"Set the region's navigation layers. This allows selecting regions from a "
+"path request (when using [method NavigationServer.map_get_path])."
+msgstr ""
+
+#: doc/classes/NavigationServer.xml
msgid "Control activation of this server."
msgstr ""
@@ -38456,7 +38789,13 @@ msgid "Rotation in degrees, relative to the node's parent."
msgstr ""
#: doc/classes/Node2D.xml
-msgid "The node's scale. Unscaled value: [code](1, 1)[/code]."
+msgid ""
+"The node's scale. Unscaled value: [code](1, 1)[/code].\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Node2D.xml
@@ -38580,7 +38919,7 @@ msgstr ""
#: doc/classes/NodePath.xml
msgid ""
"Gets the node name indicated by [code]idx[/code] (0 to [method "
-"get_name_count]).\n"
+"get_name_count] - 1).\n"
"[codeblock]\n"
"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
"print(node_path.get_name(0)) # Path2D\n"
@@ -40557,8 +40896,15 @@ msgstr ""
msgid ""
"Moves the file or directory to the system's recycle bin. See also [method "
"Directory.remove].\n"
+"The method takes only global paths, so you may need to use [method "
+"ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/"
+"code] as it will not work in exported project.\n"
"[b]Note:[/b] If the user has disabled the recycle bin on their system, the "
-"file will be permanently deleted instead."
+"file will be permanently deleted instead.\n"
+"[codeblock]\n"
+"var file_to_remove = \"user://slot1.sav\"\n"
+"OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))\n"
+"[/codeblock]"
msgstr ""
#: doc/classes/OS.xml
@@ -40741,9 +41087,9 @@ msgid ""
"web browser on the official Godot website.\n"
"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the "
"default email client with the \"To\" field set to [code]example@example.com[/"
-"code]. See [url=https://blog.escapecreative.com/customizing-mailto-"
-"links/]Customizing [code]mailto:[/code] Links[/url] for a list of fields "
-"that can be added.\n"
+"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The "
+"[code]mailto[/code] URL scheme[/url] for a list of fields that can be "
+"added.\n"
"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] "
"or [code]user://[/code] path into a system path for use with this method.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
@@ -44871,7 +45217,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolByteArray()]\n"
"array[0].push_back(123)\n"
-"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolByteArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45025,7 +45371,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolColorArray()]\n"
"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
-"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolColorArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45080,7 +45426,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolIntArray()]\n"
"array[0].push_back(1234)\n"
-"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolIntArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45133,7 +45479,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolRealArray()]\n"
"array[0].push_back(12.34)\n"
-"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolRealArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
"[code]=[/code] for it to be changed:\n"
@@ -45182,7 +45528,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolStringArray()]\n"
"array[0].push_back(\"hello\")\n"
-"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"print(array) # [[]] (empty PoolStringArray within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45234,7 +45580,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector2Array()]\n"
"array[0].push_back(Vector2(12, 34))\n"
-"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector2Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -45286,7 +45632,7 @@ msgid ""
"[codeblock]\n"
"var array = [PoolVector3Array()]\n"
"array[0].push_back(Vector3(12, 34, 56))\n"
-"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"print(array) # [[]] (empty PoolVector3Array within an Array)\n"
"[/codeblock]\n"
"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
"with [code]=[/code] for it to be changed:\n"
@@ -46925,7 +47271,16 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-msgid "Message to be displayed before the backtrace when the engine crashes."
+msgid ""
+"Message to be displayed before the backtrace when the engine crashes. By "
+"default, this message is only used in exported projects due to the editor-"
+"only override applied to this setting."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Editor-only override for [member debug/settings/crash_handler/message]. Does "
+"not affect exported projects in debug or release mode."
msgstr ""
#: doc/classes/ProjectSettings.xml
@@ -47170,6 +47525,18 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default naming style for scene files to infer from their root nodes. "
+"Possible options are:\n"
+"- [code]0[/code] (Auto): Uses the scene root name as is without changing its "
+"casing.\n"
+"- [code]1[/code] (PascalCase): Converts the scene root name to PascalCase "
+"casing.\n"
+"- [code]2[/code] (snake_case): Converts the scene root name to snake_case "
+"casing."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Search path for project-specific script templates. Godot will search for "
"script templates both in the editor-specific path and in this project-"
"specific path."
@@ -47395,6 +47762,198 @@ msgid "Default delay for touch events. This only affects iOS devices."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 2D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 2D physics layer 1."
msgstr ""
@@ -47603,6 +48162,198 @@ msgid "Optional name for the 2D render layer 9."
msgstr ""
#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 1. If left empty, the layer will "
+"display as \"Layer 1\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 10. If left empty, the layer will "
+"display as \"Layer 10\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 11. If left empty, the layer will "
+"display as \"Layer 11\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 12. If left empty, the layer will "
+"display as \"Layer 12\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 13. If left empty, the layer will "
+"display as \"Layer 13\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 14. If left empty, the layer will "
+"display as \"Layer 14\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 15. If left empty, the layer will "
+"display as \"Layer 15\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 16. If left empty, the layer will "
+"display as \"Layer 16\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 17. If left empty, the layer will "
+"display as \"Layer 17\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 18. If left empty, the layer will "
+"display as \"Layer 18\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 19. If left empty, the layer will "
+"display as \"Layer 19\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 2. If left empty, the layer will "
+"display as \"Layer 2\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 20. If left empty, the layer will "
+"display as \"Layer 20\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 21. If left empty, the layer will "
+"display as \"Layer 21\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 22. If left empty, the layer will "
+"display as \"Layer 22\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 23. If left empty, the layer will "
+"display as \"Layer 23\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 24. If left empty, the layer will "
+"display as \"Layer 24\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 25. If left empty, the layer will "
+"display as \"Layer 25\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 26. If left empty, the layer will "
+"display as \"Layer 26\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 27. If left empty, the layer will "
+"display as \"Layer 27\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 28. If left empty, the layer will "
+"display as \"Layer 28\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 29. If left empty, the layer will "
+"display as \"Layer 29\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 3. If left empty, the layer will "
+"display as \"Layer 3\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 30. If left empty, the layer will "
+"display as \"Layer 30\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 31. If left empty, the layer will "
+"display as \"Layer 31\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 32. If left empty, the layer will "
+"display as \"Layer 32\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 4. If left empty, the layer will "
+"display as \"Layer 4\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 5. If left empty, the layer will "
+"display as \"Layer 5\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 6. If left empty, the layer will "
+"display as \"Layer 6\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 7. If left empty, the layer will "
+"display as \"Layer 7\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 8. If left empty, the layer will "
+"display as \"Layer 8\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Optional name for the 3D navigation layer 9. If left empty, the layer will "
+"display as \"Layer 9\"."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
msgid "Optional name for the 3D physics layer 1."
msgstr ""
@@ -47870,6 +48621,49 @@ msgstr ""
#: doc/classes/ProjectSettings.xml
msgid ""
+"Default cell height for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_height].\n"
+"[b]Note:[/b] Currently not implemented."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 2D navigation maps. See [method Navigation2DServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 2D navigation maps. See [method "
+"Navigation2DServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell height for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_height]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default cell size for 3D navigation maps. See [method NavigationServer."
+"map_set_cell_size]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default edge connection margin for 3D navigation maps. See [method "
+"NavigationServer.map_set_edge_connection_margin]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
+"Default map up vector for 3D navigation maps. See [method NavigationServer."
+"map_set_up]."
+msgstr ""
+
+#: doc/classes/ProjectSettings.xml
+msgid ""
"Maximum amount of characters allowed to send as output from the debugger. "
"Over this value, content is dropped. This helps not to stall the debugger "
"connection."
@@ -49372,7 +50166,6 @@ msgid ""
"- If your [member grid_radius] is smaller than [code]Vector3(1, 1, 1)[/"
"code], it will be rounded up to [code]Vector3(1, 1, 1)[/code]. Therefore, "
"small grid radius values may lead to unwanted groupings.\n"
-"[/codeblock]\n"
"[b]Note:[/b] [ProximityGroup] will be removed in Godot 4.0 in favor of more "
"effective and faster [VisibilityNotifier] functionality. For most use cases, "
"[method Vector3.distance_to] or [method Vector3.distance_squared_to] are "
@@ -49724,8 +50517,9 @@ msgstr ""
#: doc/classes/Range.xml
msgid ""
"Range is a base class for [Control] nodes that change a floating-point "
-"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
-"i] and [i]page[/i], for example a [ScrollBar]."
+"[member value] between a [member min_value] and [member max_value], using a "
+"configured [member step] and [member page] size. See e.g. [ScrollBar] and "
+"[Slider] for examples of higher level nodes using Range."
msgstr ""
#: doc/classes/Range.xml
@@ -51520,6 +52314,22 @@ msgid "Makes text fill width."
msgstr ""
#: doc/classes/RichTextLabel.xml
+msgid "Aligns top of the inline image to the top of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns center of the inline image to the center of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the baseline of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
+msgid "Aligns bottom of the inline image to the bottom of the text."
+msgstr ""
+
+#: doc/classes/RichTextLabel.xml
msgid "Each list item has a number marker."
msgstr ""
@@ -51729,8 +52539,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
-"will be added to any linear damp derived from the world or areas.\n"
+"Damps the body's rotational forces. If this value is different from -1.0 it "
+"will be added to any angular damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -53257,7 +54067,8 @@ msgid ""
" yield(get_tree().create_timer(1.0), \"timeout\")\n"
" print(\"Timer ended.\")\n"
"[/codeblock]\n"
-"The timer will be automatically freed after its time elapses."
+"The timer will be dereferenced after its time elapses. To preserve the "
+"timer, you can keep a reference to it. See [Reference]."
msgstr ""
#: doc/classes/SceneTreeTimer.xml
@@ -54979,7 +55790,12 @@ msgid ""
msgstr ""
#: doc/classes/Spatial.xml
-msgid "Scale part of the local transformation."
+msgid ""
+"Scale part of the local transformation.\n"
+"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, the scale values will either be all "
+"positive or all negative."
msgstr ""
#: doc/classes/Spatial.xml
@@ -61095,6 +61911,11 @@ msgid ""
msgstr ""
#: doc/classes/TileMap.xml
+#, fuzzy
+msgid "If [code]true[/code], this TileMap bakes a navigation region."
+msgstr "å›žå‚³åƒæ•¸çš„餘弦值。"
+
+#: doc/classes/TileMap.xml
msgid "If [code]true[/code], the cell's UVs will be clipped."
msgstr ""
@@ -61201,6 +62022,10 @@ msgid "The TileMap orientation mode. See [enum Mode] for possible values."
msgstr ""
#: doc/classes/TileMap.xml
+msgid "The navigation layers the TileMap generates its navigation regions in."
+msgstr ""
+
+#: doc/classes/TileMap.xml
msgid ""
"The light mask assigned to all light occluders in the TileMap. The TileSet's "
"light occluders will cast shadows only from Light2D(s) that have the same "
@@ -62332,7 +63157,12 @@ msgstr ""
#: doc/classes/Transform2D.xml
msgid ""
"Returns a copy of the transform scaled by the given [code]scale[/code] "
-"factor, using matrix multiplication."
+"factor, using matrix multiplication.\n"
+"[b]Note:[/b] Negative X scales in 2D are not decomposable from the "
+"transformation matrix. Due to the way scale is represented with "
+"transformation matrices in Godot, negative scales on the X axis will be "
+"changed to negative scales on the Y axis and a rotation of 180 degrees when "
+"decomposed."
msgstr ""
#: doc/classes/Transform2D.xml
@@ -65580,8 +66410,8 @@ msgstr ""
#: doc/classes/Viewport.xml
msgid ""
-"If [code]true[/code], the viewport will use [World] defined in [code]world[/"
-"code] property."
+"If [code]true[/code], the viewport will use a unique copy of the [World] "
+"defined in [member world]."
msgstr ""
#: doc/classes/Viewport.xml
@@ -66018,11 +66848,12 @@ msgid "This enabler will stop [Particles2D] nodes."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _process function."
+msgid "This enabler will stop the parent's [method Node._process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
-msgid "This enabler will stop the parent's _physics_process function."
+msgid ""
+"This enabler will stop the parent's [method Node._physics_process] function."
msgstr ""
#: doc/classes/VisibilityEnabler2D.xml
@@ -66062,6 +66893,16 @@ msgid "The VisibilityNotifier's bounding box."
msgstr ""
#: doc/classes/VisibilityNotifier.xml
+msgid ""
+"In addition to checking whether a node is on screen or within a [Camera]'s "
+"view, VisibilityNotifier can also optionally check whether a node is within "
+"a specified maximum distance when using a [Camera] with perspective "
+"projection. This is useful for throttling the performance requirements of "
+"nodes that are far away.\n"
+"[b]Note:[/b] This feature will be disabled if set to 0.0."
+msgstr ""
+
+#: doc/classes/VisibilityNotifier.xml
msgid "Emitted when the VisibilityNotifier enters a [Camera]'s view."
msgstr ""
@@ -69958,7 +70799,7 @@ msgid ""
"[/codeblock]\n"
"Using this can result in significant optimization, especially on lower-end "
"devices. However, it comes at the cost of having to manage your viewports "
-"manually. For a further optimization see, [method "
+"manually. For further optimization, see [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
@@ -70826,6 +71667,16 @@ msgid "The amount of shader rebinds in the frame."
msgstr ""
#: doc/classes/VisualServer.xml
+msgid ""
+"The peak amount of shaders that have been under compilation in the frame.\n"
+"This is useful to know when asynchronous shader compilation has finished for "
+"the current shaders on screen.\n"
+"[b]Note:[/b] For complete certainty, only assume there are no outstanding "
+"compilations when this value is zero for at least two frames in a row.\n"
+"Unimplemented in the GLES2 rendering backend, always returns 0."
+msgstr ""
+
+#: doc/classes/VisualServer.xml
msgid "The amount of surface changes in the frame."
msgstr ""
@@ -74023,8 +74874,8 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
"Class that has everything pertaining to a world. A physics space, a visual "
-"scenario and a sound space. Spatial nodes register their resources into the "
-"current world."
+"scenario, a navigation map and a sound space. Spatial nodes register their "
+"resources into the current world."
msgstr ""
#: doc/classes/World.xml
@@ -74039,11 +74890,17 @@ msgstr ""
#: doc/classes/World.xml
msgid ""
-"The World's fallback_environment will be used if the World's [Environment] "
-"fails or is missing."
+"The World's fallback environment will be used if [member environment] fails "
+"or is missing."
msgstr ""
#: doc/classes/World.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [NavigationServer]."
+msgstr "å›žå‚³åƒæ•¸çš„æ­£å¼¦å€¼ã€‚"
+
+#: doc/classes/World.xml
msgid "The World's visual scenario."
msgstr ""
@@ -74058,8 +74915,8 @@ msgstr ""
#: doc/classes/World2D.xml
msgid ""
"Class that has everything pertaining to a 2D world. A physics space, a "
-"visual scenario and a sound space. 2D nodes register their resources into "
-"the current 2D world."
+"visual scenario, a navigation map and a sound space. 2D nodes register their "
+"resources into the current 2D world."
msgstr ""
#: doc/classes/World2D.xml
@@ -74076,6 +74933,12 @@ msgid ""
msgstr ""
#: doc/classes/World2D.xml
+#, fuzzy
+msgid ""
+"The [RID] of this world's navigation map. Used by the [Navigation2DServer]."
+msgstr "å›žå‚³åƒæ•¸çš„æ­£å¼¦å€¼ã€‚"
+
+#: doc/classes/World2D.xml
msgid ""
"The [RID] of this world's physics space resource. Used by the "
"[Physics2DServer] for 2D physics, treating it as both a space and an area."
diff --git a/drivers/gles3/SCsub b/drivers/gles3/SCsub
index 5760fd714e..506312df80 100644
--- a/drivers/gles3/SCsub
+++ b/drivers/gles3/SCsub
@@ -7,3 +7,4 @@ env.add_source_files(env.drivers_sources, "*.cpp")
SConscript("shaders/SCsub")
SConscript("storage/SCsub")
SConscript("effects/SCsub")
+SConscript("environment/SCsub")
diff --git a/drivers/gles3/environment/SCsub b/drivers/gles3/environment/SCsub
new file mode 100644
index 0000000000..91e1140b75
--- /dev/null
+++ b/drivers/gles3/environment/SCsub
@@ -0,0 +1,5 @@
+#!/usr/bin/env python
+
+Import("env")
+
+env.add_source_files(env.drivers_sources, "*.cpp")
diff --git a/drivers/gles3/environment/gi.cpp b/drivers/gles3/environment/gi.cpp
new file mode 100644
index 0000000000..98d698b2ae
--- /dev/null
+++ b/drivers/gles3/environment/gi.cpp
@@ -0,0 +1,140 @@
+/*************************************************************************/
+/* gi.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifdef GLES3_ENABLED
+
+#include "gi.h"
+
+using namespace GLES3;
+
+/* VOXEL GI API */
+
+RID GI::voxel_gi_allocate() {
+ return RID();
+}
+
+void GI::voxel_gi_free(RID p_rid) {
+}
+
+void GI::voxel_gi_initialize(RID p_rid) {
+}
+
+void GI::voxel_gi_allocate_data(RID p_voxel_gi, const Transform3D &p_to_cell_xform, const AABB &p_aabb, const Vector3i &p_octree_size, const Vector<uint8_t> &p_octree_cells, const Vector<uint8_t> &p_data_cells, const Vector<uint8_t> &p_distance_field, const Vector<int> &p_level_counts) {
+}
+
+AABB GI::voxel_gi_get_bounds(RID p_voxel_gi) const {
+ return AABB();
+}
+
+Vector3i GI::voxel_gi_get_octree_size(RID p_voxel_gi) const {
+ return Vector3i();
+}
+
+Vector<uint8_t> GI::voxel_gi_get_octree_cells(RID p_voxel_gi) const {
+ return Vector<uint8_t>();
+}
+
+Vector<uint8_t> GI::voxel_gi_get_data_cells(RID p_voxel_gi) const {
+ return Vector<uint8_t>();
+}
+
+Vector<uint8_t> GI::voxel_gi_get_distance_field(RID p_voxel_gi) const {
+ return Vector<uint8_t>();
+}
+
+Vector<int> GI::voxel_gi_get_level_counts(RID p_voxel_gi) const {
+ return Vector<int>();
+}
+
+Transform3D GI::voxel_gi_get_to_cell_xform(RID p_voxel_gi) const {
+ return Transform3D();
+}
+
+void GI::voxel_gi_set_dynamic_range(RID p_voxel_gi, float p_range) {
+}
+
+float GI::voxel_gi_get_dynamic_range(RID p_voxel_gi) const {
+ return 0;
+}
+
+void GI::voxel_gi_set_propagation(RID p_voxel_gi, float p_range) {
+}
+
+float GI::voxel_gi_get_propagation(RID p_voxel_gi) const {
+ return 0;
+}
+
+void GI::voxel_gi_set_energy(RID p_voxel_gi, float p_range) {
+}
+
+float GI::voxel_gi_get_energy(RID p_voxel_gi) const {
+ return 0.0;
+}
+
+void GI::voxel_gi_set_bias(RID p_voxel_gi, float p_range) {
+}
+
+float GI::voxel_gi_get_bias(RID p_voxel_gi) const {
+ return 0.0;
+}
+
+void GI::voxel_gi_set_normal_bias(RID p_voxel_gi, float p_range) {
+}
+
+float GI::voxel_gi_get_normal_bias(RID p_voxel_gi) const {
+ return 0.0;
+}
+
+void GI::voxel_gi_set_interior(RID p_voxel_gi, bool p_enable) {
+}
+
+bool GI::voxel_gi_is_interior(RID p_voxel_gi) const {
+ return false;
+}
+
+void GI::voxel_gi_set_use_two_bounces(RID p_voxel_gi, bool p_enable) {
+}
+
+bool GI::voxel_gi_is_using_two_bounces(RID p_voxel_gi) const {
+ return false;
+}
+
+void GI::voxel_gi_set_anisotropy_strength(RID p_voxel_gi, float p_strength) {
+}
+
+float GI::voxel_gi_get_anisotropy_strength(RID p_voxel_gi) const {
+ return 0;
+}
+
+uint32_t GI::voxel_gi_get_version(RID p_voxel_gi) const {
+ return 0;
+}
+
+#endif // GLES3_ENABLED
diff --git a/drivers/gles3/environment/gi.h b/drivers/gles3/environment/gi.h
new file mode 100644
index 0000000000..bff482d7fa
--- /dev/null
+++ b/drivers/gles3/environment/gi.h
@@ -0,0 +1,99 @@
+/*************************************************************************/
+/* gi.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifndef GI_GLES3_H
+#define GI_GLES3_H
+
+#ifdef GLES3_ENABLED
+
+#include "core/templates/local_vector.h"
+#include "core/templates/rid_owner.h"
+#include "core/templates/self_list.h"
+#include "servers/rendering/environment/renderer_gi.h"
+
+#include "platform_config.h"
+#ifndef OPENGL_INCLUDE_H
+#include <GLES3/gl3.h>
+#else
+#include OPENGL_INCLUDE_H
+#endif
+
+namespace GLES3 {
+
+class GI : public RendererGI {
+public:
+ /* VOXEL GI API */
+
+ virtual RID voxel_gi_allocate() override;
+ virtual void voxel_gi_free(RID p_rid) override;
+ virtual void voxel_gi_initialize(RID p_rid) override;
+ virtual void voxel_gi_allocate_data(RID p_voxel_gi, const Transform3D &p_to_cell_xform, const AABB &p_aabb, const Vector3i &p_octree_size, const Vector<uint8_t> &p_octree_cells, const Vector<uint8_t> &p_data_cells, const Vector<uint8_t> &p_distance_field, const Vector<int> &p_level_counts) override;
+
+ virtual AABB voxel_gi_get_bounds(RID p_voxel_gi) const override;
+ virtual Vector3i voxel_gi_get_octree_size(RID p_voxel_gi) const override;
+ virtual Vector<uint8_t> voxel_gi_get_octree_cells(RID p_voxel_gi) const override;
+ virtual Vector<uint8_t> voxel_gi_get_data_cells(RID p_voxel_gi) const override;
+ virtual Vector<uint8_t> voxel_gi_get_distance_field(RID p_voxel_gi) const override;
+
+ virtual Vector<int> voxel_gi_get_level_counts(RID p_voxel_gi) const override;
+ virtual Transform3D voxel_gi_get_to_cell_xform(RID p_voxel_gi) const override;
+
+ virtual void voxel_gi_set_dynamic_range(RID p_voxel_gi, float p_range) override;
+ virtual float voxel_gi_get_dynamic_range(RID p_voxel_gi) const override;
+
+ virtual void voxel_gi_set_propagation(RID p_voxel_gi, float p_range) override;
+ virtual float voxel_gi_get_propagation(RID p_voxel_gi) const override;
+
+ virtual void voxel_gi_set_energy(RID p_voxel_gi, float p_range) override;
+ virtual float voxel_gi_get_energy(RID p_voxel_gi) const override;
+
+ virtual void voxel_gi_set_bias(RID p_voxel_gi, float p_range) override;
+ virtual float voxel_gi_get_bias(RID p_voxel_gi) const override;
+
+ virtual void voxel_gi_set_normal_bias(RID p_voxel_gi, float p_range) override;
+ virtual float voxel_gi_get_normal_bias(RID p_voxel_gi) const override;
+
+ virtual void voxel_gi_set_interior(RID p_voxel_gi, bool p_enable) override;
+ virtual bool voxel_gi_is_interior(RID p_voxel_gi) const override;
+
+ virtual void voxel_gi_set_use_two_bounces(RID p_voxel_gi, bool p_enable) override;
+ virtual bool voxel_gi_is_using_two_bounces(RID p_voxel_gi) const override;
+
+ virtual void voxel_gi_set_anisotropy_strength(RID p_voxel_gi, float p_strength) override;
+ virtual float voxel_gi_get_anisotropy_strength(RID p_voxel_gi) const override;
+
+ virtual uint32_t voxel_gi_get_version(RID p_voxel_gi) const override;
+};
+
+}; // namespace GLES3
+
+#endif // GLES3_ENABLED
+
+#endif // !GI_GLES3_H
diff --git a/drivers/gles3/rasterizer_canvas_gles3.cpp b/drivers/gles3/rasterizer_canvas_gles3.cpp
index 32d279a635..d41c844d1d 100644
--- a/drivers/gles3/rasterizer_canvas_gles3.cpp
+++ b/drivers/gles3/rasterizer_canvas_gles3.cpp
@@ -689,6 +689,10 @@ void RasterizerCanvasGLES3::_render_item(RID p_render_target, const Item *p_item
_bind_instance_data_buffer(1);
glBindVertexArray(pb->vertex_array);
+ if (pb->color_disabled) {
+ glVertexAttrib4f(RS::ARRAY_COLOR, pb->color.r, pb->color.g, pb->color.b, pb->color.a);
+ }
+
if (pb->index_buffer != 0) {
glDrawElements(prim[polygon->primitive], pb->count, GL_UNSIGNED_INT, nullptr);
} else {
@@ -698,6 +702,11 @@ void RasterizerCanvasGLES3::_render_item(RID p_render_target, const Item *p_item
state.fences[state.current_buffer] = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
state.current_buffer = (state.current_buffer + 1) % state.canvas_instance_data_buffers.size();
+
+ if (pb->color_disabled) {
+ // Reset so this doesn't pollute other draw calls.
+ glVertexAttrib4f(RS::ARRAY_COLOR, 1.0, 1.0, 1.0, 1.0);
+ }
} break;
case Item::Command::TYPE_PRIMITIVE: {
@@ -758,7 +767,6 @@ void RasterizerCanvasGLES3::_render_item(RID p_render_target, const Item *p_item
GLuint multimesh_buffer = 0;
uint32_t multimesh_stride = 0;
uint32_t multimesh_color_offset = 0;
- uint32_t multimesh_custom_data_offset = 0;
bool multimesh_uses_color = false;
bool multimesh_uses_custom_data = false;
@@ -788,7 +796,6 @@ void RasterizerCanvasGLES3::_render_item(RID p_render_target, const Item *p_item
multimesh_buffer = mesh_storage->multimesh_get_gl_buffer(multimesh);
multimesh_stride = mesh_storage->multimesh_get_stride(multimesh);
multimesh_color_offset = mesh_storage->multimesh_get_color_offset(multimesh);
- multimesh_custom_data_offset = mesh_storage->multimesh_get_custom_data_offset(multimesh);
multimesh_uses_color = mesh_storage->multimesh_uses_colors(multimesh);
multimesh_uses_custom_data = mesh_storage->multimesh_uses_custom_data(multimesh);
}
@@ -854,22 +861,17 @@ void RasterizerCanvasGLES3::_render_item(RID p_render_target, const Item *p_item
if (instance_count > 1) {
// Bind instance buffers.
glBindBuffer(GL_ARRAY_BUFFER, multimesh_buffer);
- glEnableVertexAttribArray(5);
- glVertexAttribPointer(5, 4, GL_FLOAT, GL_FALSE, multimesh_stride * sizeof(float), CAST_INT_TO_UCHAR_PTR(0));
- glVertexAttribDivisor(5, 1);
- glEnableVertexAttribArray(6);
- glVertexAttribPointer(6, 4, GL_FLOAT, GL_FALSE, multimesh_stride * sizeof(float), CAST_INT_TO_UCHAR_PTR(4 * 4));
- glVertexAttribDivisor(6, 1);
-
- if (multimesh_uses_color) {
- glEnableVertexAttribArray(7);
- glVertexAttribPointer(7, 4, GL_FLOAT, GL_FALSE, multimesh_stride * sizeof(float), CAST_INT_TO_UCHAR_PTR(multimesh_color_offset * sizeof(float)));
- glVertexAttribDivisor(7, 1);
- }
- if (multimesh_uses_custom_data) {
- glEnableVertexAttribArray(8);
- glVertexAttribPointer(8, 4, GL_FLOAT, GL_FALSE, multimesh_stride * sizeof(float), CAST_INT_TO_UCHAR_PTR(multimesh_custom_data_offset * sizeof(float)));
- glVertexAttribDivisor(8, 1);
+ glEnableVertexAttribArray(1);
+ glVertexAttribPointer(1, 4, GL_FLOAT, GL_FALSE, multimesh_stride * sizeof(float), CAST_INT_TO_UCHAR_PTR(0));
+ glVertexAttribDivisor(1, 1);
+ glEnableVertexAttribArray(2);
+ glVertexAttribPointer(2, 4, GL_FLOAT, GL_FALSE, multimesh_stride * sizeof(float), CAST_INT_TO_UCHAR_PTR(4 * 4));
+ glVertexAttribDivisor(2, 1);
+
+ if (multimesh_uses_color || multimesh_uses_custom_data) {
+ glEnableVertexAttribArray(5);
+ glVertexAttribIPointer(5, 4, GL_UNSIGNED_INT, multimesh_stride * sizeof(float), CAST_INT_TO_UCHAR_PTR(multimesh_color_offset * sizeof(float)));
+ glVertexAttribDivisor(5, 1);
}
}
@@ -1268,11 +1270,7 @@ RendererCanvasRender::PolygonID RasterizerCanvasGLES3::request_polygon(const Vec
}
// Next add colors
- if (p_colors.size() == 1) {
- glDisableVertexAttribArray(RS::ARRAY_COLOR);
- Color m = p_colors[0];
- glVertexAttrib4f(RS::ARRAY_COLOR, m.r, m.g, m.b, m.a);
- } else if ((uint32_t)p_colors.size() == vertex_count) {
+ if ((uint32_t)p_colors.size() == vertex_count) {
glEnableVertexAttribArray(RS::ARRAY_COLOR);
glVertexAttribPointer(RS::ARRAY_COLOR, 4, GL_FLOAT, GL_FALSE, stride * sizeof(float), CAST_INT_TO_UCHAR_PTR(base_offset * sizeof(float)));
@@ -1287,7 +1285,8 @@ RendererCanvasRender::PolygonID RasterizerCanvasGLES3::request_polygon(const Vec
base_offset += 4;
} else {
glDisableVertexAttribArray(RS::ARRAY_COLOR);
- glVertexAttrib4f(RS::ARRAY_COLOR, 1.0, 1.0, 1.0, 1.0);
+ pb.color_disabled = true;
+ pb.color = p_colors.size() == 1 ? p_colors[0] : Color(1.0, 1.0, 1.0, 1.0);
}
if ((uint32_t)p_uvs.size() == vertex_count) {
diff --git a/drivers/gles3/rasterizer_canvas_gles3.h b/drivers/gles3/rasterizer_canvas_gles3.h
index 31e82401f9..bf13c91e1c 100644
--- a/drivers/gles3/rasterizer_canvas_gles3.h
+++ b/drivers/gles3/rasterizer_canvas_gles3.h
@@ -238,6 +238,8 @@ public:
GLuint vertex_array;
GLuint index_buffer;
int count;
+ bool color_disabled = false;
+ Color color;
};
struct {
diff --git a/drivers/gles3/rasterizer_gles3.cpp b/drivers/gles3/rasterizer_gles3.cpp
index c8705dc8c8..78ffb42557 100644
--- a/drivers/gles3/rasterizer_gles3.cpp
+++ b/drivers/gles3/rasterizer_gles3.cpp
@@ -198,6 +198,8 @@ void RasterizerGLES3::finalize() {
memdelete(scene);
memdelete(canvas);
memdelete(storage);
+ memdelete(gi);
+ memdelete(copy_effects);
memdelete(light_storage);
memdelete(particles_storage);
memdelete(mesh_storage);
@@ -269,6 +271,7 @@ RasterizerGLES3::RasterizerGLES3() {
particles_storage = memnew(GLES3::ParticlesStorage);
light_storage = memnew(GLES3::LightStorage);
copy_effects = memnew(GLES3::CopyEffects);
+ gi = memnew(GLES3::GI);
storage = memnew(RasterizerStorageGLES3);
canvas = memnew(RasterizerCanvasGLES3(storage));
scene = memnew(RasterizerSceneGLES3(storage));
diff --git a/drivers/gles3/rasterizer_gles3.h b/drivers/gles3/rasterizer_gles3.h
index 5f1cbab849..c0322dc45b 100644
--- a/drivers/gles3/rasterizer_gles3.h
+++ b/drivers/gles3/rasterizer_gles3.h
@@ -34,6 +34,7 @@
#ifdef GLES3_ENABLED
#include "effects/copy_effects.h"
+#include "environment/gi.h"
#include "rasterizer_canvas_gles3.h"
#include "rasterizer_scene_gles3.h"
#include "rasterizer_storage_gles3.h"
@@ -59,6 +60,7 @@ protected:
GLES3::MeshStorage *mesh_storage = nullptr;
GLES3::ParticlesStorage *particles_storage = nullptr;
GLES3::LightStorage *light_storage = nullptr;
+ GLES3::GI *gi = nullptr;
GLES3::CopyEffects *copy_effects = nullptr;
RasterizerStorageGLES3 *storage = nullptr;
RasterizerCanvasGLES3 *canvas = nullptr;
@@ -72,6 +74,7 @@ public:
RendererMeshStorage *get_mesh_storage() { return mesh_storage; }
RendererParticlesStorage *get_particles_storage() { return particles_storage; }
RendererTextureStorage *get_texture_storage() { return texture_storage; }
+ RendererGI *get_gi() { return gi; }
RendererStorage *get_storage() { return storage; }
RendererCanvasRender *get_canvas() { return canvas; }
RendererSceneRender *get_scene() { return scene; }
diff --git a/drivers/gles3/rasterizer_scene_gles3.cpp b/drivers/gles3/rasterizer_scene_gles3.cpp
index 7ce1300d07..33c7b9bf32 100644
--- a/drivers/gles3/rasterizer_scene_gles3.cpp
+++ b/drivers/gles3/rasterizer_scene_gles3.cpp
@@ -491,7 +491,7 @@ void RasterizerSceneGLES3::_geometry_instance_update(GeometryInstance *p_geometr
}
}
- ginstance->instance_count = 1;
+ ginstance->instance_count = -1;
} break;
@@ -1902,7 +1902,7 @@ void RasterizerSceneGLES3::_setup_lights(const RenderDataGLES3 *p_render_data, b
glBindBuffer(GL_UNIFORM_BUFFER, 0);
}
-void RasterizerSceneGLES3::render_scene(RID p_render_buffers, const CameraData *p_camera_data, const PagedArray<GeometryInstance *> &p_instances, const PagedArray<RID> &p_lights, const PagedArray<RID> &p_reflection_probes, const PagedArray<RID> &p_voxel_gi_instances, const PagedArray<RID> &p_decals, const PagedArray<RID> &p_lightmaps, const PagedArray<RID> &p_fog_volumes, RID p_environment, RID p_camera_effects, RID p_shadow_atlas, RID p_occluder_debug_tex, RID p_reflection_atlas, RID p_reflection_probe, int p_reflection_probe_pass, float p_screen_mesh_lod_threshold, const RenderShadowData *p_render_shadows, int p_render_shadow_count, const RenderSDFGIData *p_render_sdfgi_regions, int p_render_sdfgi_region_count, const RenderSDFGIUpdateData *p_sdfgi_update_data, RendererScene::RenderInfo *r_render_info) {
+void RasterizerSceneGLES3::render_scene(RID p_render_buffers, const CameraData *p_camera_data, const CameraData *p_prev_camera_data, const PagedArray<GeometryInstance *> &p_instances, const PagedArray<RID> &p_lights, const PagedArray<RID> &p_reflection_probes, const PagedArray<RID> &p_voxel_gi_instances, const PagedArray<RID> &p_decals, const PagedArray<RID> &p_lightmaps, const PagedArray<RID> &p_fog_volumes, RID p_environment, RID p_camera_effects, RID p_shadow_atlas, RID p_occluder_debug_tex, RID p_reflection_atlas, RID p_reflection_probe, int p_reflection_probe_pass, float p_screen_mesh_lod_threshold, const RenderShadowData *p_render_shadows, int p_render_shadow_count, const RenderSDFGIData *p_render_sdfgi_regions, int p_render_sdfgi_region_count, const RenderSDFGIUpdateData *p_sdfgi_update_data, RendererScene::RenderInfo *r_render_info) {
GLES3::TextureStorage *texture_storage = GLES3::TextureStorage::get_singleton();
GLES3::Config *config = GLES3::Config::get_singleton();
RENDER_TIMESTAMP("Setup 3D Scene");
@@ -1923,11 +1923,11 @@ void RasterizerSceneGLES3::render_scene(RID p_render_buffers, const CameraData *
render_data.cam_transform = p_camera_data->main_transform;
render_data.inv_cam_transform = render_data.cam_transform.affine_inverse();
render_data.cam_projection = p_camera_data->main_projection;
- render_data.view_projection[0] = p_camera_data->main_projection;
render_data.cam_orthogonal = p_camera_data->is_orthogonal;
render_data.view_count = p_camera_data->view_count;
for (uint32_t v = 0; v < p_camera_data->view_count; v++) {
+ render_data.view_eye_offset[v] = p_camera_data->view_offset[v].origin;
render_data.view_projection[v] = p_camera_data->view_projection[v];
}
@@ -2200,6 +2200,7 @@ void RasterizerSceneGLES3::_render_list_template(RenderListParameters *p_params,
GLES3::SceneMaterialData *prev_material_data = nullptr;
GLES3::SceneShaderData *prev_shader = nullptr;
GeometryInstanceGLES3 *prev_inst = nullptr;
+ SceneShaderGLES3::ShaderVariant prev_variant = SceneShaderGLES3::ShaderVariant::MODE_COLOR;
SceneShaderGLES3::ShaderVariant shader_variant = SceneShaderGLES3::MODE_COLOR; // Assigned to silence wrong -Wmaybe-initialized.
@@ -2386,12 +2387,11 @@ void RasterizerSceneGLES3::_render_list_template(RenderListParameters *p_params,
prev_vertex_array_gl = vertex_array_gl;
}
- bool use_index_buffer = false;
+ bool use_index_buffer = index_array_gl != 0;
if (prev_index_array_gl != index_array_gl) {
if (index_array_gl != 0) {
// Bind index each time so we can use LODs
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, index_array_gl);
- use_index_buffer = true;
}
prev_index_array_gl = index_array_gl;
}
@@ -2406,8 +2406,13 @@ void RasterizerSceneGLES3::_render_list_template(RenderListParameters *p_params,
prev_material_data = material_data;
}
- if (prev_shader != shader) {
- material_storage->shaders.scene_shader.version_bind_shader(shader->version, shader_variant);
+ SceneShaderGLES3::ShaderVariant instance_variant = shader_variant;
+ if (inst->instance_count > 0) {
+ instance_variant = SceneShaderGLES3::ShaderVariant(1 + int(shader_variant));
+ }
+
+ if (prev_shader != shader || prev_variant != instance_variant) {
+ material_storage->shaders.scene_shader.version_bind_shader(shader->version, instance_variant);
float opaque_prepass_threshold = 0.0;
if (p_pass_mode == PASS_MODE_DEPTH) {
opaque_prepass_threshold = 0.99;
@@ -2415,33 +2420,69 @@ void RasterizerSceneGLES3::_render_list_template(RenderListParameters *p_params,
opaque_prepass_threshold = 0.1;
}
- material_storage->shaders.scene_shader.version_set_uniform(SceneShaderGLES3::OPAQUE_PREPASS_THRESHOLD, opaque_prepass_threshold, shader->version, shader_variant);
+ material_storage->shaders.scene_shader.version_set_uniform(SceneShaderGLES3::OPAQUE_PREPASS_THRESHOLD, opaque_prepass_threshold, shader->version, instance_variant);
prev_shader = shader;
+ prev_variant = instance_variant;
}
- if (prev_inst != inst) {
+ if (prev_inst != inst || prev_shader != shader || prev_variant != instance_variant) {
// Rebind the light indices.
- material_storage->shaders.scene_shader.version_set_uniform(SceneShaderGLES3::OMNI_LIGHT_COUNT, inst->omni_light_count, shader->version, shader_variant);
- material_storage->shaders.scene_shader.version_set_uniform(SceneShaderGLES3::SPOT_LIGHT_COUNT, inst->spot_light_count, shader->version, shader_variant);
+ material_storage->shaders.scene_shader.version_set_uniform(SceneShaderGLES3::OMNI_LIGHT_COUNT, inst->omni_light_count, shader->version, instance_variant);
+ material_storage->shaders.scene_shader.version_set_uniform(SceneShaderGLES3::SPOT_LIGHT_COUNT, inst->spot_light_count, shader->version, instance_variant);
if (inst->omni_light_count) {
- glUniform1uiv(material_storage->shaders.scene_shader.version_get_uniform(SceneShaderGLES3::OMNI_LIGHT_INDICES, shader->version, shader_variant), inst->omni_light_count, inst->omni_light_gl_cache.ptr());
+ glUniform1uiv(material_storage->shaders.scene_shader.version_get_uniform(SceneShaderGLES3::OMNI_LIGHT_INDICES, shader->version, instance_variant), inst->omni_light_count, inst->omni_light_gl_cache.ptr());
}
if (inst->spot_light_count) {
- glUniform1uiv(material_storage->shaders.scene_shader.version_get_uniform(SceneShaderGLES3::SPOT_LIGHT_INDICES, shader->version, shader_variant), inst->spot_light_count, inst->spot_light_gl_cache.ptr());
+ glUniform1uiv(material_storage->shaders.scene_shader.version_get_uniform(SceneShaderGLES3::SPOT_LIGHT_INDICES, shader->version, instance_variant), inst->spot_light_count, inst->spot_light_gl_cache.ptr());
}
prev_inst = inst;
}
- material_storage->shaders.scene_shader.version_set_uniform(SceneShaderGLES3::WORLD_TRANSFORM, world_transform, shader->version, shader_variant);
-
- if (use_index_buffer) {
- glDrawElements(primitive_gl, mesh_storage->mesh_surface_get_vertices_drawn_count(mesh_surface), mesh_storage->mesh_surface_get_index_type(mesh_surface), 0);
+ material_storage->shaders.scene_shader.version_set_uniform(SceneShaderGLES3::WORLD_TRANSFORM, world_transform, shader->version, instance_variant);
+ if (inst->instance_count > 0) {
+ // Using MultiMesh.
+ // Bind instance buffers.
+
+ GLuint multimesh_buffer = mesh_storage->multimesh_get_gl_buffer(inst->data->base);
+ glBindBuffer(GL_ARRAY_BUFFER, multimesh_buffer);
+ uint32_t multimesh_stride = mesh_storage->multimesh_get_stride(inst->data->base);
+ glEnableVertexAttribArray(12);
+ glVertexAttribPointer(12, 4, GL_FLOAT, GL_FALSE, multimesh_stride * sizeof(float), CAST_INT_TO_UCHAR_PTR(0));
+ glVertexAttribDivisor(12, 1);
+ glEnableVertexAttribArray(13);
+ glVertexAttribPointer(13, 4, GL_FLOAT, GL_FALSE, multimesh_stride * sizeof(float), CAST_INT_TO_UCHAR_PTR(4 * 4));
+ glVertexAttribDivisor(13, 1);
+ glEnableVertexAttribArray(14);
+ glVertexAttribPointer(14, 4, GL_FLOAT, GL_FALSE, multimesh_stride * sizeof(float), CAST_INT_TO_UCHAR_PTR(4 * 8));
+ glVertexAttribDivisor(14, 1);
+
+ if (mesh_storage->multimesh_uses_colors(inst->data->base) || mesh_storage->multimesh_uses_custom_data(inst->data->base)) {
+ glEnableVertexAttribArray(15);
+ glVertexAttribIPointer(15, 4, GL_UNSIGNED_INT, multimesh_stride * sizeof(float), CAST_INT_TO_UCHAR_PTR(mesh_storage->multimesh_get_color_offset(inst->data->base) * sizeof(float)));
+ glVertexAttribDivisor(15, 1);
+ }
+ if (use_index_buffer) {
+ glDrawElementsInstanced(primitive_gl, mesh_storage->mesh_surface_get_vertices_drawn_count(mesh_surface), mesh_storage->mesh_surface_get_index_type(mesh_surface), 0, inst->instance_count);
+ } else {
+ glDrawArraysInstanced(primitive_gl, 0, mesh_storage->mesh_surface_get_vertices_drawn_count(mesh_surface), inst->instance_count);
+ }
} else {
- glDrawArrays(primitive_gl, 0, mesh_storage->mesh_surface_get_vertices_drawn_count(mesh_surface));
+ // Using regular Mesh.
+ if (use_index_buffer) {
+ glDrawElements(primitive_gl, mesh_storage->mesh_surface_get_vertices_drawn_count(mesh_surface), mesh_storage->mesh_surface_get_index_type(mesh_surface), 0);
+ } else {
+ glDrawArrays(primitive_gl, 0, mesh_storage->mesh_surface_get_vertices_drawn_count(mesh_surface));
+ }
+ }
+ if (inst->instance_count > 0) {
+ glDisableVertexAttribArray(12);
+ glDisableVertexAttribArray(13);
+ glDisableVertexAttribArray(14);
+ glDisableVertexAttribArray(15);
}
}
}
@@ -2466,7 +2507,7 @@ RID RasterizerSceneGLES3::render_buffers_create() {
return render_buffers_owner.make_rid(rb);
}
-void RasterizerSceneGLES3::render_buffers_configure(RID p_render_buffers, RID p_render_target, int p_internal_width, int p_internal_height, int p_width, int p_height, float p_fsr_sharpness, float p_fsr_mipmap_bias, RS::ViewportMSAA p_msaa, RS::ViewportScreenSpaceAA p_screen_space_aa, bool p_use_debanding, uint32_t p_view_count) {
+void RasterizerSceneGLES3::render_buffers_configure(RID p_render_buffers, RID p_render_target, int p_internal_width, int p_internal_height, int p_width, int p_height, float p_fsr_sharpness, float p_fsr_mipmap_bias, RS::ViewportMSAA p_msaa, RS::ViewportScreenSpaceAA p_screen_space_aa, bool p_use_taa, bool p_use_debanding, uint32_t p_view_count) {
GLES3::TextureStorage *texture_storage = GLES3::TextureStorage::get_singleton();
RenderBuffers *rb = render_buffers_owner.get_or_null(p_render_buffers);
@@ -2811,6 +2852,9 @@ void sky() {
#ifdef GLES_OVER_GL
glEnable(_EXT_TEXTURE_CUBE_MAP_SEAMLESS);
#endif
+
+ // MultiMesh may read from color when color is disabled, so make sure that the color defaults to white instead of black;
+ glVertexAttrib4f(RS::ARRAY_COLOR, 1.0, 1.0, 1.0, 1.0);
}
RasterizerSceneGLES3::~RasterizerSceneGLES3() {
diff --git a/drivers/gles3/rasterizer_scene_gles3.h b/drivers/gles3/rasterizer_scene_gles3.h
index ea6145d2a8..4757a3f161 100644
--- a/drivers/gles3/rasterizer_scene_gles3.h
+++ b/drivers/gles3/rasterizer_scene_gles3.h
@@ -100,6 +100,7 @@ struct RenderDataGLES3 {
// For stereo rendering
uint32_t view_count = 1;
+ Vector3 view_eye_offset[RendererSceneRender::MAX_RENDER_VIEWS];
CameraMatrix view_projection[RendererSceneRender::MAX_RENDER_VIEWS];
float z_near = 0.0;
@@ -277,7 +278,7 @@ private:
int32_t shader_parameters_offset = -1;
uint32_t layer_mask = 1;
- uint32_t instance_count = 0;
+ int32_t instance_count = 0;
RID mesh_instance;
bool can_sdfgi = false;
@@ -904,7 +905,7 @@ public:
void voxel_gi_set_quality(RS::VoxelGIQuality) override;
- void render_scene(RID p_render_buffers, const CameraData *p_camera_data, const PagedArray<GeometryInstance *> &p_instances, const PagedArray<RID> &p_lights, const PagedArray<RID> &p_reflection_probes, const PagedArray<RID> &p_voxel_gi_instances, const PagedArray<RID> &p_decals, const PagedArray<RID> &p_lightmaps, const PagedArray<RID> &p_fog_volumes, RID p_environment, RID p_camera_effects, RID p_shadow_atlas, RID p_occluder_debug_tex, RID p_reflection_atlas, RID p_reflection_probe, int p_reflection_probe_pass, float p_screen_mesh_lod_threshold, const RenderShadowData *p_render_shadows, int p_render_shadow_count, const RenderSDFGIData *p_render_sdfgi_regions, int p_render_sdfgi_region_count, const RenderSDFGIUpdateData *p_sdfgi_update_data = nullptr, RendererScene::RenderInfo *r_render_info = nullptr) override;
+ void render_scene(RID p_render_buffers, const CameraData *p_camera_data, const CameraData *p_prev_camera_data, const PagedArray<GeometryInstance *> &p_instances, const PagedArray<RID> &p_lights, const PagedArray<RID> &p_reflection_probes, const PagedArray<RID> &p_voxel_gi_instances, const PagedArray<RID> &p_decals, const PagedArray<RID> &p_lightmaps, const PagedArray<RID> &p_fog_volumes, RID p_environment, RID p_camera_effects, RID p_shadow_atlas, RID p_occluder_debug_tex, RID p_reflection_atlas, RID p_reflection_probe, int p_reflection_probe_pass, float p_screen_mesh_lod_threshold, const RenderShadowData *p_render_shadows, int p_render_shadow_count, const RenderSDFGIData *p_render_sdfgi_regions, int p_render_sdfgi_region_count, const RenderSDFGIUpdateData *p_sdfgi_update_data = nullptr, RendererScene::RenderInfo *r_render_info = nullptr) override;
void render_material(const Transform3D &p_cam_transform, const CameraMatrix &p_cam_projection, bool p_cam_orthogonal, const PagedArray<GeometryInstance *> &p_instances, RID p_framebuffer, const Rect2i &p_region) override;
void render_particle_collider_heightfield(RID p_collider, const Transform3D &p_transform, const PagedArray<GeometryInstance *> &p_instances) override;
@@ -923,7 +924,7 @@ public:
}
RID render_buffers_create() override;
- void render_buffers_configure(RID p_render_buffers, RID p_render_target, int p_internal_width, int p_internal_height, int p_width, int p_height, float p_fsr_sharpness, float p_fsr_mipmap_bias, RS::ViewportMSAA p_msaa, RS::ViewportScreenSpaceAA p_screen_space_aa, bool p_use_debanding, uint32_t p_view_count) override;
+ void render_buffers_configure(RID p_render_buffers, RID p_render_target, int p_internal_width, int p_internal_height, int p_width, int p_height, float p_fsr_sharpness, float p_fsr_mipmap_bias, RS::ViewportMSAA p_msaa, RS::ViewportScreenSpaceAA p_screen_space_aa, bool p_use_taa, bool p_use_debanding, uint32_t p_view_count) override;
void gi_set_use_half_resolution(bool p_enable) override;
void screen_space_roughness_limiter_set_active(bool p_enable, float p_amount, float p_curve) override;
diff --git a/drivers/gles3/rasterizer_storage_gles3.cpp b/drivers/gles3/rasterizer_storage_gles3.cpp
index 012cda953c..3b80d88666 100644
--- a/drivers/gles3/rasterizer_storage_gles3.cpp
+++ b/drivers/gles3/rasterizer_storage_gles3.cpp
@@ -38,6 +38,8 @@
#include "rasterizer_scene_gles3.h"
#include "servers/rendering/shader_language.h"
+/* MISC */
+
void RasterizerStorageGLES3::base_update_dependency(RID p_base, DependencyTracker *p_instance) {
if (GLES3::MeshStorage::get_singleton()->owns_mesh(p_base)) {
GLES3::Mesh *mesh = GLES3::MeshStorage::get_singleton()->get_mesh(p_base);
@@ -54,104 +56,27 @@ void RasterizerStorageGLES3::base_update_dependency(RID p_base, DependencyTracke
}
}
-/* VOXEL GI API */
-
-RID RasterizerStorageGLES3::voxel_gi_allocate() {
- return RID();
-}
-
-void RasterizerStorageGLES3::voxel_gi_initialize(RID p_rid) {
-}
-
-void RasterizerStorageGLES3::voxel_gi_allocate_data(RID p_voxel_gi, const Transform3D &p_to_cell_xform, const AABB &p_aabb, const Vector3i &p_octree_size, const Vector<uint8_t> &p_octree_cells, const Vector<uint8_t> &p_data_cells, const Vector<uint8_t> &p_distance_field, const Vector<int> &p_level_counts) {
-}
-
-AABB RasterizerStorageGLES3::voxel_gi_get_bounds(RID p_voxel_gi) const {
- return AABB();
-}
-
-Vector3i RasterizerStorageGLES3::voxel_gi_get_octree_size(RID p_voxel_gi) const {
- return Vector3i();
-}
-
-Vector<uint8_t> RasterizerStorageGLES3::voxel_gi_get_octree_cells(RID p_voxel_gi) const {
- return Vector<uint8_t>();
-}
-
-Vector<uint8_t> RasterizerStorageGLES3::voxel_gi_get_data_cells(RID p_voxel_gi) const {
- return Vector<uint8_t>();
-}
-
-Vector<uint8_t> RasterizerStorageGLES3::voxel_gi_get_distance_field(RID p_voxel_gi) const {
- return Vector<uint8_t>();
-}
-
-Vector<int> RasterizerStorageGLES3::voxel_gi_get_level_counts(RID p_voxel_gi) const {
- return Vector<int>();
-}
-
-Transform3D RasterizerStorageGLES3::voxel_gi_get_to_cell_xform(RID p_voxel_gi) const {
- return Transform3D();
-}
-
-void RasterizerStorageGLES3::voxel_gi_set_dynamic_range(RID p_voxel_gi, float p_range) {
-}
-
-float RasterizerStorageGLES3::voxel_gi_get_dynamic_range(RID p_voxel_gi) const {
- return 0;
-}
-
-void RasterizerStorageGLES3::voxel_gi_set_propagation(RID p_voxel_gi, float p_range) {
-}
-
-float RasterizerStorageGLES3::voxel_gi_get_propagation(RID p_voxel_gi) const {
- return 0;
-}
-
-void RasterizerStorageGLES3::voxel_gi_set_energy(RID p_voxel_gi, float p_range) {
-}
-
-float RasterizerStorageGLES3::voxel_gi_get_energy(RID p_voxel_gi) const {
- return 0.0;
-}
-
-void RasterizerStorageGLES3::voxel_gi_set_bias(RID p_voxel_gi, float p_range) {
-}
-
-float RasterizerStorageGLES3::voxel_gi_get_bias(RID p_voxel_gi) const {
- return 0.0;
-}
-
-void RasterizerStorageGLES3::voxel_gi_set_normal_bias(RID p_voxel_gi, float p_range) {
-}
-
-float RasterizerStorageGLES3::voxel_gi_get_normal_bias(RID p_voxel_gi) const {
- return 0.0;
-}
-
-void RasterizerStorageGLES3::voxel_gi_set_interior(RID p_voxel_gi, bool p_enable) {
-}
-
-bool RasterizerStorageGLES3::voxel_gi_is_interior(RID p_voxel_gi) const {
- return false;
-}
+Vector<uint8_t> RasterizerStorageGLES3::buffer_get_data(GLenum p_target, GLuint p_buffer, uint32_t p_buffer_size) {
+ Vector<uint8_t> ret;
+ ret.resize(p_buffer_size);
+ glBindBuffer(p_target, p_buffer);
-void RasterizerStorageGLES3::voxel_gi_set_use_two_bounces(RID p_voxel_gi, bool p_enable) {
-}
-
-bool RasterizerStorageGLES3::voxel_gi_is_using_two_bounces(RID p_voxel_gi) const {
- return false;
-}
-
-void RasterizerStorageGLES3::voxel_gi_set_anisotropy_strength(RID p_voxel_gi, float p_strength) {
-}
-
-float RasterizerStorageGLES3::voxel_gi_get_anisotropy_strength(RID p_voxel_gi) const {
- return 0;
-}
-
-uint32_t RasterizerStorageGLES3::voxel_gi_get_version(RID p_voxel_gi) {
- return 0;
+#if defined(__EMSCRIPTEN__)
+ {
+ uint8_t *w = ret.ptrw();
+ glGetBufferSubData(p_target, 0, p_buffer_size, w);
+ }
+#else
+ void *data = glMapBufferRange(p_target, 0, p_buffer_size, GL_MAP_READ_BIT);
+ ERR_FAIL_NULL_V(data, Vector<uint8_t>());
+ {
+ uint8_t *w = ret.ptrw();
+ memcpy(w, data, p_buffer_size);
+ }
+ glUnmapBuffer(p_target);
+#endif
+ glBindBuffer(p_target, 0);
+ return ret;
}
/* OCCLUDER */
diff --git a/drivers/gles3/rasterizer_storage_gles3.h b/drivers/gles3/rasterizer_storage_gles3.h
index 7ac3db4537..c42efbce19 100644
--- a/drivers/gles3/rasterizer_storage_gles3.h
+++ b/drivers/gles3/rasterizer_storage_gles3.h
@@ -98,6 +98,9 @@ public:
}
}
+ // Buffer size is specified in bytes
+ static Vector<uint8_t> buffer_get_data(GLenum p_target, GLuint p_buffer, uint32_t p_buffer_size);
+
struct Resources {
GLuint mipmap_blur_fbo;
GLuint mipmap_blur_color;
@@ -151,47 +154,6 @@ public:
public:
virtual void base_update_dependency(RID p_base, DependencyTracker *p_instance) override;
- /* VOXEL GI API */
-
- RID voxel_gi_allocate() override;
- void voxel_gi_initialize(RID p_rid) override;
- void voxel_gi_allocate_data(RID p_voxel_gi, const Transform3D &p_to_cell_xform, const AABB &p_aabb, const Vector3i &p_octree_size, const Vector<uint8_t> &p_octree_cells, const Vector<uint8_t> &p_data_cells, const Vector<uint8_t> &p_distance_field, const Vector<int> &p_level_counts) override;
-
- AABB voxel_gi_get_bounds(RID p_voxel_gi) const override;
- Vector3i voxel_gi_get_octree_size(RID p_voxel_gi) const override;
- Vector<uint8_t> voxel_gi_get_octree_cells(RID p_voxel_gi) const override;
- Vector<uint8_t> voxel_gi_get_data_cells(RID p_voxel_gi) const override;
- Vector<uint8_t> voxel_gi_get_distance_field(RID p_voxel_gi) const override;
-
- Vector<int> voxel_gi_get_level_counts(RID p_voxel_gi) const override;
- Transform3D voxel_gi_get_to_cell_xform(RID p_voxel_gi) const override;
-
- void voxel_gi_set_dynamic_range(RID p_voxel_gi, float p_range) override;
- float voxel_gi_get_dynamic_range(RID p_voxel_gi) const override;
-
- void voxel_gi_set_propagation(RID p_voxel_gi, float p_range) override;
- float voxel_gi_get_propagation(RID p_voxel_gi) const override;
-
- void voxel_gi_set_energy(RID p_voxel_gi, float p_range) override;
- float voxel_gi_get_energy(RID p_voxel_gi) const override;
-
- void voxel_gi_set_bias(RID p_voxel_gi, float p_range) override;
- float voxel_gi_get_bias(RID p_voxel_gi) const override;
-
- void voxel_gi_set_normal_bias(RID p_voxel_gi, float p_range) override;
- float voxel_gi_get_normal_bias(RID p_voxel_gi) const override;
-
- void voxel_gi_set_interior(RID p_voxel_gi, bool p_enable) override;
- bool voxel_gi_is_interior(RID p_voxel_gi) const override;
-
- void voxel_gi_set_use_two_bounces(RID p_voxel_gi, bool p_enable) override;
- bool voxel_gi_is_using_two_bounces(RID p_voxel_gi) const override;
-
- void voxel_gi_set_anisotropy_strength(RID p_voxel_gi, float p_strength) override;
- float voxel_gi_get_anisotropy_strength(RID p_voxel_gi) const override;
-
- uint32_t voxel_gi_get_version(RID p_voxel_gi) override;
-
/* OCCLUDER */
void occluder_set_mesh(RID p_occluder, const PackedVector3Array &p_vertices, const PackedInt32Array &p_indices);
@@ -295,28 +257,10 @@ public:
return String();
}
- //bool validate_framebuffer(); // Validate currently bound framebuffer, does not touch global state
- String get_framebuffer_error(GLenum p_status);
-
RasterizerStorageGLES3();
~RasterizerStorageGLES3();
};
-inline String RasterizerStorageGLES3::get_framebuffer_error(GLenum p_status) {
-#if defined(DEBUG_ENABLED) && defined(GLES_OVER_GL)
- if (p_status == GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT) {
- return "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT";
- } else if (p_status == GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT) {
- return "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";
- } else if (p_status == GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER) {
- return "GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER";
- } else if (p_status == GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER) {
- return "GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER";
- }
-#endif
- return itos(p_status);
-}
-
#endif // GLES3_ENABLED
#endif // RASTERIZER_STORAGE_OPENGL_H
diff --git a/drivers/gles3/shaders/canvas.glsl b/drivers/gles3/shaders/canvas.glsl
index 9c426dd3ef..4df818cd4c 100644
--- a/drivers/gles3/shaders/canvas.glsl
+++ b/drivers/gles3/shaders/canvas.glsl
@@ -23,10 +23,9 @@ layout(location = 11) in vec4 weight_attrib;
#ifdef USE_INSTANCING
-layout(location = 5) in highp vec4 instance_xform0;
-layout(location = 6) in highp vec4 instance_xform1;
-layout(location = 7) in lowp vec4 instance_color;
-layout(location = 8) in highp vec4 instance_custom_data;
+layout(location = 1) in highp vec4 instance_xform0;
+layout(location = 2) in highp vec4 instance_xform1;
+layout(location = 5) in highp uvec4 instance_color_custom_data; // Color packed into xy, custom_data packed into zw for compatibility with 3D
#endif
@@ -98,8 +97,9 @@ void main() {
vec4 bone_weights = weight_attrib;
#ifdef USE_INSTANCING
+ vec4 instance_color = vec4(unpackHalf2x16(instance_color_custom_data.x), unpackHalf2x16(instance_color_custom_data.y));
color *= instance_color;
- instance_custom = instance_custom_data;
+ instance_custom = vec4(unpackHalf2x16(instance_color_custom_data.z), unpackHalf2x16(instance_color_custom_data.w));
#endif
#else
diff --git a/drivers/gles3/shaders/scene.glsl b/drivers/gles3/shaders/scene.glsl
index fbea4bdbe4..4f2be8bf60 100644
--- a/drivers/gles3/shaders/scene.glsl
+++ b/drivers/gles3/shaders/scene.glsl
@@ -2,8 +2,11 @@
#[modes]
mode_color = #define BASE_PASS
+mode_color_instancing = #define BASE_PASS \n#define USE_INSTANCING
mode_additive = #define USE_ADDITIVE_LIGHTING
+mode_additive_instancing = #define USE_ADDITIVE_LIGHTING \n#define USE_INSTANCING
mode_depth = #define MODE_RENDER_DEPTH
+mode_depth_instancing = #define MODE_RENDER_DEPTH \n#define USE_INSTANCING
#[specializations]
@@ -43,8 +46,6 @@ ARRAY_CUSTOM2 = 8,
ARRAY_CUSTOM3 = 9,
ARRAY_BONES = 10, // RGBA16UI (x2 if 8 weights)
ARRAY_WEIGHTS = 11, // RGBA16UNORM (x2 if 8 weights)
-ARRAY_INDEX = 12, // 16 or 32 bits depending on length > 0xFFFF.
-ARRAY_MAX = 13
*/
/* INPUT ATTRIBS */
@@ -96,6 +97,13 @@ layout(location = 10) in uvec4 bone_attrib;
layout(location = 11) in vec4 weight_attrib;
#endif
+#ifdef USE_INSTANCING
+layout(location = 12) in highp vec4 instance_xform0;
+layout(location = 13) in highp vec4 instance_xform1;
+layout(location = 14) in highp vec4 instance_xform2;
+layout(location = 15) in highp uvec4 instance_color_custom_data; // Color packed into xy, Custom data into zw.
+#endif
+
layout(std140) uniform GlobalVariableData { //ubo:1
vec4 global_variables[MAX_GLOBAL_VARIABLES];
};
@@ -195,6 +203,10 @@ void main() {
highp vec3 vertex = vertex_attrib;
highp mat4 model_matrix = world_transform;
+#ifdef USE_INSTANCING
+ highp mat4 m = mat4(instance_xform0, instance_xform1, instance_xform2, vec4(0.0, 0.0, 0.0, 1.0));
+ model_matrix = model_matrix * transpose(m);
+#endif
#ifdef NORMAL_USED
vec3 normal = normal_attrib * 2.0 - 1.0;
@@ -209,6 +221,10 @@ void main() {
#if defined(COLOR_USED)
color_interp = color_attrib;
+#ifdef USE_INSTANCING
+ vec4 instance_color = vec4(unpackHalf2x16(instance_color_custom_data.x), unpackHalf2x16(instance_color_custom_data.y));
+ color_interp *= instance_color;
+#endif
#endif
#if defined(UV_USED)
@@ -229,7 +245,11 @@ void main() {
highp mat4 projection_matrix = scene_data.projection_matrix;
highp mat4 inv_projection_matrix = scene_data.inv_projection_matrix;
+#ifdef USE_INSTANCING
+ vec4 instance_custom = vec4(unpackHalf2x16(instance_color_custom_data.z), unpackHalf2x16(instance_color_custom_data.w));
+#else
vec4 instance_custom = vec4(0.0);
+#endif
// Using world coordinates
#if !defined(SKIP_TRANSFORM_USED) && defined(VERTEX_WORLD_COORDS_USED)
diff --git a/drivers/gles3/storage/mesh_storage.cpp b/drivers/gles3/storage/mesh_storage.cpp
index 822be25337..5aa82bfcc1 100644
--- a/drivers/gles3/storage/mesh_storage.cpp
+++ b/drivers/gles3/storage/mesh_storage.cpp
@@ -31,6 +31,7 @@
#ifdef GLES3_ENABLED
#include "mesh_storage.h"
+#include "../rasterizer_storage_gles3.h"
#include "material_storage.h"
using namespace GLES3;
@@ -230,6 +231,7 @@ void MeshStorage::mesh_add_surface(RID p_mesh, const RS::SurfaceData &p_surface)
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); //unbind
s->lods[i].edge_length = p_surface.lods[i].edge_length;
s->lods[i].index_count = p_surface.lods[i].index_data.size() / (is_index_16 ? 2 : 4);
+ s->lods[i].index_buffer_size = p_surface.lods[i].index_data.size();
}
}
}
@@ -333,48 +335,10 @@ RS::SurfaceData MeshStorage::mesh_get_surface(RID p_mesh, int p_surface) const {
RS::SurfaceData sd;
sd.format = s.format;
- {
- Vector<uint8_t> ret;
- ret.resize(s.vertex_buffer_size);
- glBindBuffer(GL_ARRAY_BUFFER, s.vertex_buffer);
-
-#if defined(__EMSCRIPTEN__)
- {
- uint8_t *w = ret.ptrw();
- glGetBufferSubData(GL_ARRAY_BUFFER, 0, s.vertex_buffer_size, w);
- }
-#else
- void *data = glMapBufferRange(GL_ARRAY_BUFFER, 0, s.vertex_buffer_size, GL_MAP_READ_BIT);
- ERR_FAIL_NULL_V(data, RS::SurfaceData());
- {
- uint8_t *w = ret.ptrw();
- memcpy(w, data, s.vertex_buffer_size);
- }
- glUnmapBuffer(GL_ARRAY_BUFFER);
-#endif
- sd.vertex_data = ret;
- }
+ sd.vertex_data = RasterizerStorageGLES3::buffer_get_data(GL_ARRAY_BUFFER, s.vertex_buffer, s.vertex_buffer_size);
if (s.attribute_buffer != 0) {
- Vector<uint8_t> ret;
- ret.resize(s.attribute_buffer_size);
- glBindBuffer(GL_ARRAY_BUFFER, s.attribute_buffer);
-
-#if defined(__EMSCRIPTEN__)
- {
- uint8_t *w = ret.ptrw();
- glGetBufferSubData(GL_ARRAY_BUFFER, 0, s.attribute_buffer_size, w);
- }
-#else
- void *data = glMapBufferRange(GL_ARRAY_BUFFER, 0, s.attribute_buffer_size, GL_MAP_READ_BIT);
- ERR_FAIL_NULL_V(data, RS::SurfaceData());
- {
- uint8_t *w = ret.ptrw();
- memcpy(w, data, s.attribute_buffer_size);
- }
- glUnmapBuffer(GL_ARRAY_BUFFER);
-#endif
- sd.attribute_data = ret;
+ sd.attribute_data = RasterizerStorageGLES3::buffer_get_data(GL_ARRAY_BUFFER, s.attribute_buffer, s.attribute_buffer_size);
}
sd.vertex_count = s.vertex_count;
@@ -382,33 +346,14 @@ RS::SurfaceData MeshStorage::mesh_get_surface(RID p_mesh, int p_surface) const {
sd.primitive = s.primitive;
if (sd.index_count) {
- Vector<uint8_t> ret;
- ret.resize(s.index_buffer_size);
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, s.index_buffer);
-
-#if defined(__EMSCRIPTEN__)
- {
- uint8_t *w = ret.ptrw();
- glGetBufferSubData(GL_ELEMENT_ARRAY_BUFFER, 0, s.index_buffer_size, w);
- }
-#else
- void *data = glMapBufferRange(GL_ELEMENT_ARRAY_BUFFER, 0, s.index_buffer_size, GL_MAP_READ_BIT);
- ERR_FAIL_NULL_V(data, RS::SurfaceData());
- {
- uint8_t *w = ret.ptrw();
- memcpy(w, data, s.index_buffer_size);
- }
- glUnmapBuffer(GL_ELEMENT_ARRAY_BUFFER);
-#endif
- sd.index_data = ret;
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
+ sd.index_data = RasterizerStorageGLES3::buffer_get_data(GL_ELEMENT_ARRAY_BUFFER, s.index_buffer, s.index_buffer_size);
}
sd.aabb = s.aabb;
for (uint32_t i = 0; i < s.lod_count; i++) {
RS::SurfaceData::LOD lod;
lod.edge_length = s.lods[i].edge_length;
- //lod.index_data = RD::get_singleton()->buffer_get_data(s.lods[i].index_buffer);
+ lod.index_data = RasterizerStorageGLES3::buffer_get_data(GL_ELEMENT_ARRAY_BUFFER, s.lods[i].index_buffer, s.lods[i].index_buffer_size);
sd.lods.push_back(lod);
}
@@ -723,17 +668,6 @@ void MeshStorage::_mesh_surface_generate_version_for_input_mask(Mesh::Surface::V
for (int i = 0; i < RS::ARRAY_INDEX; i++) {
if (!attribs[i].enabled) {
glDisableVertexAttribArray(i);
- if (s->format & RS::ARRAY_FLAG_USE_2D_VERTICES) {
- if (i == RS::ARRAY_COLOR) {
- glVertexAttrib4f(i, 1, 1, 1, 1);
- } else if (i == RS::ARRAY_TEX_UV) {
- glVertexAttrib2f(i, 1, 1);
- } else if (i == RS::ARRAY_BONES) {
- glVertexAttrib4f(i, 1, 1, 1, 1);
- } else if (i == RS::ARRAY_WEIGHTS) {
- glVertexAttrib4f(i, 1, 1, 1, 1);
- }
- }
continue;
}
if (i <= RS::ARRAY_TANGENT) {
@@ -949,8 +883,8 @@ void MeshStorage::multimesh_allocate_data(RID p_multimesh, int p_instances, RS::
multimesh->uses_colors = p_use_colors;
multimesh->color_offset_cache = p_transform_format == RS::MULTIMESH_TRANSFORM_2D ? 8 : 12;
multimesh->uses_custom_data = p_use_custom_data;
- multimesh->custom_data_offset_cache = multimesh->color_offset_cache + (p_use_colors ? 4 : 0);
- multimesh->stride_cache = multimesh->custom_data_offset_cache + (p_use_custom_data ? 4 : 0);
+ multimesh->custom_data_offset_cache = multimesh->color_offset_cache + (p_use_colors ? 2 : 0);
+ multimesh->stride_cache = multimesh->custom_data_offset_cache + (p_use_custom_data ? 2 : 0);
multimesh->buffer_set = false;
multimesh->data_cache = Vector<float>();
@@ -977,7 +911,7 @@ int MeshStorage::multimesh_get_instance_count(RID p_multimesh) const {
void MeshStorage::multimesh_set_mesh(RID p_multimesh, RID p_mesh) {
MultiMesh *multimesh = multimesh_owner.get_or_null(p_multimesh);
ERR_FAIL_COND(!multimesh);
- if (multimesh->mesh == p_mesh) {
+ if (multimesh->mesh == p_mesh || p_mesh.is_null()) {
return;
}
multimesh->mesh = p_mesh;
@@ -990,13 +924,12 @@ void MeshStorage::multimesh_set_mesh(RID p_multimesh, RID p_mesh) {
//we have a data cache, just mark it dirty
_multimesh_mark_all_dirty(multimesh, false, true);
} else if (multimesh->instances) {
- //need to re-create AABB unfortunately, calling this has a penalty
+ // Need to re-create AABB. Unfortunately, calling this has a penalty.
if (multimesh->buffer_set) {
- // TODO add a function to RasterizerStorage to get data from a buffer
- //Vector<uint8_t> buffer = RD::get_singleton()->buffer_get_data(multimesh->buffer);
- //const uint8_t *r = buffer.ptr();
- //const float *data = (const float *)r;
- //_multimesh_re_create_aabb(multimesh, data, multimesh->instances);
+ Vector<uint8_t> buffer = RasterizerStorageGLES3::buffer_get_data(GL_ARRAY_BUFFER, multimesh->buffer, multimesh->instances * multimesh->stride_cache * sizeof(float));
+ const uint8_t *r = buffer.ptr();
+ const float *data = (const float *)r;
+ _multimesh_re_create_aabb(multimesh, data, multimesh->instances);
}
}
@@ -1017,10 +950,11 @@ void MeshStorage::_multimesh_make_local(MultiMesh *multimesh) const {
float *w = multimesh->data_cache.ptrw();
if (multimesh->buffer_set) {
- //Vector<uint8_t> buffer = RD::get_singleton()->buffer_get_data(multimesh->buffer);
+ Vector<uint8_t> buffer = RasterizerStorageGLES3::buffer_get_data(GL_ARRAY_BUFFER, multimesh->buffer, multimesh->instances * multimesh->stride_cache * sizeof(float));
+
{
- // const uint8_t *r = buffer.ptr();
- // memcpy(w, r, buffer.size());
+ const uint8_t *r = buffer.ptr();
+ memcpy(w, r, buffer.size());
}
} else {
memset(w, 0, (size_t)multimesh->instances * multimesh->stride_cache * sizeof(float));
@@ -1186,14 +1120,12 @@ void MeshStorage::multimesh_instance_set_color(RID p_multimesh, int p_index, con
_multimesh_make_local(multimesh);
{
+ // Colors are packed into 2 floats.
float *w = multimesh->data_cache.ptrw();
float *dataptr = w + p_index * multimesh->stride_cache + multimesh->color_offset_cache;
-
- dataptr[0] = p_color.r;
- dataptr[1] = p_color.g;
- dataptr[2] = p_color.b;
- dataptr[3] = p_color.a;
+ uint16_t val[4] = { Math::make_half_float(p_color.r), Math::make_half_float(p_color.g), Math::make_half_float(p_color.b), Math::make_half_float(p_color.a) };
+ memcpy(dataptr, val, 2 * 4);
}
_multimesh_mark_dirty(multimesh, p_index, false);
@@ -1211,11 +1143,8 @@ void MeshStorage::multimesh_instance_set_custom_data(RID p_multimesh, int p_inde
float *w = multimesh->data_cache.ptrw();
float *dataptr = w + p_index * multimesh->stride_cache + multimesh->custom_data_offset_cache;
-
- dataptr[0] = p_color.r;
- dataptr[1] = p_color.g;
- dataptr[2] = p_color.b;
- dataptr[3] = p_color.a;
+ uint16_t val[4] = { Math::make_half_float(p_color.r), Math::make_half_float(p_color.g), Math::make_half_float(p_color.b), Math::make_half_float(p_color.a) };
+ memcpy(dataptr, val, 2 * 4);
}
_multimesh_mark_dirty(multimesh, p_index, false);
@@ -1306,11 +1235,12 @@ Color MeshStorage::multimesh_instance_get_color(RID p_multimesh, int p_index) co
const float *r = multimesh->data_cache.ptr();
const float *dataptr = r + p_index * multimesh->stride_cache + multimesh->color_offset_cache;
-
- c.r = dataptr[0];
- c.g = dataptr[1];
- c.b = dataptr[2];
- c.a = dataptr[3];
+ uint16_t raw_data[4];
+ memcpy(raw_data, dataptr, 2 * 4);
+ c.r = Math::half_to_float(raw_data[0]);
+ c.g = Math::half_to_float(raw_data[1]);
+ c.b = Math::half_to_float(raw_data[2]);
+ c.a = Math::half_to_float(raw_data[3]);
}
return c;
@@ -1329,11 +1259,12 @@ Color MeshStorage::multimesh_instance_get_custom_data(RID p_multimesh, int p_ind
const float *r = multimesh->data_cache.ptr();
const float *dataptr = r + p_index * multimesh->stride_cache + multimesh->custom_data_offset_cache;
-
- c.r = dataptr[0];
- c.g = dataptr[1];
- c.b = dataptr[2];
- c.a = dataptr[3];
+ uint16_t raw_data[4];
+ memcpy(raw_data, dataptr, 2 * 4);
+ c.r = Math::half_to_float(raw_data[0]);
+ c.g = Math::half_to_float(raw_data[1]);
+ c.b = Math::half_to_float(raw_data[2]);
+ c.a = Math::half_to_float(raw_data[3]);
}
return c;
@@ -1342,19 +1273,66 @@ Color MeshStorage::multimesh_instance_get_custom_data(RID p_multimesh, int p_ind
void MeshStorage::multimesh_set_buffer(RID p_multimesh, const Vector<float> &p_buffer) {
MultiMesh *multimesh = multimesh_owner.get_or_null(p_multimesh);
ERR_FAIL_COND(!multimesh);
- ERR_FAIL_COND(p_buffer.size() != (multimesh->instances * (int)multimesh->stride_cache));
- {
+ if (multimesh->uses_colors || multimesh->uses_custom_data) {
+ // Color and custom need to be packed so copy buffer to data_cache and pack.
+
+ _multimesh_make_local(multimesh);
+ multimesh->data_cache = p_buffer;
+
+ float *w = multimesh->data_cache.ptrw();
+ uint32_t old_stride = multimesh->xform_format == RS::MULTIMESH_TRANSFORM_2D ? 8 : 12;
+ old_stride += multimesh->uses_colors ? 4 : 0;
+ old_stride += multimesh->uses_custom_data ? 4 : 0;
+ for (int i = 0; i < multimesh->instances; i++) {
+ {
+ float *dataptr = w + i * old_stride;
+ float *newptr = w + i * multimesh->stride_cache;
+ float vals[8] = { dataptr[0], dataptr[1], dataptr[2], dataptr[3], dataptr[4], dataptr[5], dataptr[6], dataptr[7] };
+ memcpy(newptr, vals, 8 * 4);
+ }
+
+ if (multimesh->xform_format == RS::MULTIMESH_TRANSFORM_3D) {
+ float *dataptr = w + i * old_stride + 8;
+ float *newptr = w + i * multimesh->stride_cache + 8;
+ float vals[8] = { dataptr[0], dataptr[1], dataptr[2], dataptr[3] };
+ memcpy(newptr, vals, 4 * 4);
+ }
+
+ if (multimesh->uses_colors) {
+ float *dataptr = w + i * old_stride + (multimesh->xform_format == RS::MULTIMESH_TRANSFORM_2D ? 8 : 12);
+ float *newptr = w + i * multimesh->stride_cache + multimesh->color_offset_cache;
+ uint16_t val[4] = { Math::make_half_float(dataptr[0]), Math::make_half_float(dataptr[1]), Math::make_half_float(dataptr[2]), Math::make_half_float(dataptr[3]) };
+ memcpy(newptr, val, 2 * 4);
+ }
+ if (multimesh->uses_custom_data) {
+ float *dataptr = w + i * old_stride + (multimesh->xform_format == RS::MULTIMESH_TRANSFORM_2D ? 8 : 12) + (multimesh->uses_colors ? 4 : 0);
+ float *newptr = w + i * multimesh->stride_cache + multimesh->custom_data_offset_cache;
+ uint16_t val[4] = { Math::make_half_float(dataptr[0]), Math::make_half_float(dataptr[1]), Math::make_half_float(dataptr[2]), Math::make_half_float(dataptr[3]) };
+ memcpy(newptr, val, 2 * 4);
+ }
+ }
+
+ multimesh->data_cache.resize(multimesh->instances * (int)multimesh->stride_cache);
+ const float *r = multimesh->data_cache.ptr();
+ glBindBuffer(GL_ARRAY_BUFFER, multimesh->buffer);
+ glBufferData(GL_ARRAY_BUFFER, multimesh->data_cache.size() * sizeof(float), r, GL_STATIC_DRAW);
+ glBindBuffer(GL_ARRAY_BUFFER, 0);
+
+ } else {
+ // Only Transform is being used, so we can upload directly.
+ ERR_FAIL_COND(p_buffer.size() != (multimesh->instances * (int)multimesh->stride_cache));
const float *r = p_buffer.ptr();
glBindBuffer(GL_ARRAY_BUFFER, multimesh->buffer);
glBufferData(GL_ARRAY_BUFFER, p_buffer.size() * sizeof(float), r, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
- multimesh->buffer_set = true;
}
- if (multimesh->data_cache.size()) {
+ multimesh->buffer_set = true;
+
+ if (multimesh->data_cache.size() || multimesh->uses_colors || multimesh->uses_custom_data) {
//if we have a data cache, just update it
- multimesh->data_cache = p_buffer;
+ multimesh->data_cache = multimesh->data_cache;
{
//clear dirty since nothing will be dirty anymore
uint32_t data_cache_dirty_region_count = (multimesh->instances - 1) / MULTIMESH_DIRTY_REGION_SIZE + 1;
@@ -1367,7 +1345,7 @@ void MeshStorage::multimesh_set_buffer(RID p_multimesh, const Vector<float> &p_b
_multimesh_mark_all_dirty(multimesh, false, true); //update AABB
} else if (multimesh->mesh.is_valid()) {
//if we have a mesh set, we need to re-generate the AABB from the new data
- const float *data = p_buffer.ptr();
+ const float *data = multimesh->data_cache.ptr();
_multimesh_re_create_aabb(multimesh, data, multimesh->instances);
multimesh->dependency.changed_notify(RendererStorage::DEPENDENCY_CHANGED_AABB);
@@ -1377,22 +1355,71 @@ void MeshStorage::multimesh_set_buffer(RID p_multimesh, const Vector<float> &p_b
Vector<float> MeshStorage::multimesh_get_buffer(RID p_multimesh) const {
MultiMesh *multimesh = multimesh_owner.get_or_null(p_multimesh);
ERR_FAIL_COND_V(!multimesh, Vector<float>());
+ Vector<float> ret;
if (multimesh->buffer == 0) {
return Vector<float>();
} else if (multimesh->data_cache.size()) {
- return multimesh->data_cache;
+ ret = multimesh->data_cache;
} else {
- //get from memory
+ // Buffer not cached, so fetch from GPU memory. This can be a stalling operation, avoid whenever possible.
- //Vector<uint8_t> buffer = RD::get_singleton()->buffer_get_data(multimesh->buffer);
- Vector<float> ret;
+ Vector<uint8_t> buffer = RasterizerStorageGLES3::buffer_get_data(GL_ARRAY_BUFFER, multimesh->buffer, multimesh->instances * multimesh->stride_cache * sizeof(float));
ret.resize(multimesh->instances * multimesh->stride_cache);
- //{
- // float *w = ret.ptrw();
- // const uint8_t *r = buffer.ptr();
- // memcpy(w, r, buffer.size());
- //}
+ {
+ float *w = ret.ptrw();
+ const uint8_t *r = buffer.ptr();
+ memcpy(w, r, buffer.size());
+ }
+ }
+ if (multimesh->uses_colors || multimesh->uses_custom_data) {
+ // Need to decompress buffer.
+ uint32_t new_stride = multimesh->xform_format == RS::MULTIMESH_TRANSFORM_2D ? 8 : 12;
+ new_stride += multimesh->uses_colors ? 4 : 0;
+ new_stride += multimesh->uses_custom_data ? 4 : 0;
+
+ Vector<float> decompressed;
+ decompressed.resize(multimesh->instances * (int)new_stride);
+ float *w = decompressed.ptrw();
+ const float *r = ret.ptr();
+ for (int i = 0; i < multimesh->instances; i++) {
+ {
+ float *newptr = w + i * new_stride;
+ const float *oldptr = r + i * multimesh->stride_cache;
+ float vals[8] = { oldptr[0], oldptr[1], oldptr[2], oldptr[3], oldptr[4], oldptr[5], oldptr[6], oldptr[7] };
+ memcpy(newptr, vals, 8 * 4);
+ }
+
+ if (multimesh->xform_format == RS::MULTIMESH_TRANSFORM_3D) {
+ float *newptr = w + i * new_stride + 8;
+ const float *oldptr = r + i * multimesh->stride_cache + 8;
+ float vals[8] = { oldptr[0], oldptr[1], oldptr[2], oldptr[3] };
+ memcpy(newptr, vals, 4 * 4);
+ }
+
+ if (multimesh->uses_colors) {
+ float *newptr = w + i * new_stride + (multimesh->xform_format == RS::MULTIMESH_TRANSFORM_2D ? 8 : 12);
+ const float *oldptr = r + i * multimesh->stride_cache + multimesh->color_offset_cache;
+ uint16_t raw_data[4];
+ memcpy(raw_data, oldptr, 2 * 4);
+ newptr[0] = Math::half_to_float(raw_data[0]);
+ newptr[1] = Math::half_to_float(raw_data[1]);
+ newptr[2] = Math::half_to_float(raw_data[2]);
+ newptr[3] = Math::half_to_float(raw_data[3]);
+ }
+ if (multimesh->uses_custom_data) {
+ float *newptr = w + i * new_stride + (multimesh->xform_format == RS::MULTIMESH_TRANSFORM_2D ? 8 : 12) + (multimesh->uses_colors ? 4 : 0);
+ const float *oldptr = r + i * multimesh->stride_cache + multimesh->custom_data_offset_cache;
+ uint16_t raw_data[4];
+ memcpy(raw_data, oldptr, 2 * 4);
+ newptr[0] = Math::half_to_float(raw_data[0]);
+ newptr[1] = Math::half_to_float(raw_data[1]);
+ newptr[2] = Math::half_to_float(raw_data[2]);
+ newptr[3] = Math::half_to_float(raw_data[3]);
+ }
+ }
+ return decompressed;
+ } else {
return ret;
}
}
@@ -1439,7 +1466,7 @@ void MeshStorage::_update_dirty_multimeshes() {
if (multimesh->data_cache_used_dirty_regions > 32 || multimesh->data_cache_used_dirty_regions > visible_region_count / 2) {
// If there too many dirty regions, or represent the majority of regions, just copy all, else transfer cost piles up too much
glBindBuffer(GL_ARRAY_BUFFER, multimesh->buffer);
- glBufferData(GL_ARRAY_BUFFER, MIN(visible_region_count * region_size, multimesh->instances * (uint32_t)multimesh->stride_cache * (uint32_t)sizeof(float)), data, GL_STATIC_DRAW);
+ glBufferData(GL_ARRAY_BUFFER, MIN(visible_region_count * region_size, multimesh->instances * multimesh->stride_cache * sizeof(float)), data, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
} else {
// Not that many regions? update them all
@@ -1463,8 +1490,7 @@ void MeshStorage::_update_dirty_multimeshes() {
multimesh->data_cache_used_dirty_regions = 0;
}
- if (multimesh->aabb_dirty) {
- //aabb is dirty..
+ if (multimesh->aabb_dirty && multimesh->mesh.is_valid()) {
_multimesh_re_create_aabb(multimesh, data, visible_instances);
multimesh->aabb_dirty = false;
multimesh->dependency.changed_notify(RendererStorage::DEPENDENCY_CHANGED_AABB);
diff --git a/drivers/gles3/storage/mesh_storage.h b/drivers/gles3/storage/mesh_storage.h
index 068aa2fe40..3bb7061413 100644
--- a/drivers/gles3/storage/mesh_storage.h
+++ b/drivers/gles3/storage/mesh_storage.h
@@ -90,6 +90,7 @@ struct Mesh {
struct LOD {
float edge_length = 0.0;
uint32_t index_count = 0;
+ uint32_t index_buffer_size = 0;
GLuint index_buffer;
};
diff --git a/drivers/vulkan/rendering_device_vulkan.cpp b/drivers/vulkan/rendering_device_vulkan.cpp
index 77aab72d40..99aa0e2442 100644
--- a/drivers/vulkan/rendering_device_vulkan.cpp
+++ b/drivers/vulkan/rendering_device_vulkan.cpp
@@ -2314,6 +2314,12 @@ RID RenderingDeviceVulkan::texture_create_shared_from_slice(const TextureView &p
image_view_create_info.viewType = VK_IMAGE_VIEW_TYPE_2D_ARRAY;
}
+ if (p_slice_type == TEXTURE_SLICE_2D) {
+ texture.type = TEXTURE_TYPE_2D;
+ } else if (p_slice_type == TEXTURE_SLICE_3D) {
+ texture.type = TEXTURE_TYPE_3D;
+ }
+
if (p_view.format_override == DATA_FORMAT_MAX || p_view.format_override == texture.format) {
image_view_create_info.format = vulkan_formats[texture.format];
} else {
diff --git a/drivers/vulkan/rendering_device_vulkan.h b/drivers/vulkan/rendering_device_vulkan.h
index 903a39b3d0..3b21ee67a1 100644
--- a/drivers/vulkan/rendering_device_vulkan.h
+++ b/drivers/vulkan/rendering_device_vulkan.h
@@ -457,17 +457,17 @@ class RenderingDeviceVulkan : public RenderingDevice {
uint32_t hash() const {
int vdc = vertex_formats.size();
- uint32_t h = hash_djb2_one_32(vdc);
+ uint32_t h = hash_murmur3_one_32(vdc);
const VertexAttribute *ptr = vertex_formats.ptr();
for (int i = 0; i < vdc; i++) {
const VertexAttribute &vd = ptr[i];
- h = hash_djb2_one_32(vd.location, h);
- h = hash_djb2_one_32(vd.offset, h);
- h = hash_djb2_one_32(vd.format, h);
- h = hash_djb2_one_32(vd.stride, h);
- h = hash_djb2_one_32(vd.frequency, h);
+ h = hash_murmur3_one_32(vd.location, h);
+ h = hash_murmur3_one_32(vd.offset, h);
+ h = hash_murmur3_one_32(vd.format, h);
+ h = hash_murmur3_one_32(vd.stride, h);
+ h = hash_murmur3_one_32(vd.frequency, h);
}
- return h;
+ return hash_fmix32(h);
}
};
diff --git a/editor/animation_track_editor.cpp b/editor/animation_track_editor.cpp
index e01e6e1811..e612130041 100644
--- a/editor/animation_track_editor.cpp
+++ b/editor/animation_track_editor.cpp
@@ -2619,34 +2619,33 @@ String AnimationTrackEdit::get_tooltip(const Point2 &p_pos) const {
}
if (key_idx != -1) {
- String text = TTR("Time (s): ") + rtos(animation->track_get_key_time(track, key_idx)) + "\n";
+ String text = TTR("Time (s):") + " " + rtos(animation->track_get_key_time(track, key_idx)) + "\n";
switch (animation->track_get_type(track)) {
case Animation::TYPE_POSITION_3D: {
Vector3 t = animation->track_get_key_value(track, key_idx);
- text += "Position: " + String(t) + "\n";
+ text += TTR("Position:") + " " + String(t) + "\n";
} break;
case Animation::TYPE_ROTATION_3D: {
Quaternion t = animation->track_get_key_value(track, key_idx);
- text += "Rotation: " + String(t) + "\n";
+ text += TTR("Rotation:") + " " + String(t) + "\n";
} break;
case Animation::TYPE_SCALE_3D: {
Vector3 t = animation->track_get_key_value(track, key_idx);
- text += "Scale: " + String(t) + "\n";
+ text += TTR("Scale:") + " " + String(t) + "\n";
} break;
case Animation::TYPE_BLEND_SHAPE: {
float t = animation->track_get_key_value(track, key_idx);
- text += "Blend Shape: " + itos(t) + "\n";
+ text += TTR("Blend Shape:") + " " + itos(t) + "\n";
} break;
case Animation::TYPE_VALUE: {
const Variant &v = animation->track_get_key_value(track, key_idx);
- text += "Type: " + Variant::get_type_name(v.get_type()) + "\n";
+ text += TTR("Type:") + " " + Variant::get_type_name(v.get_type()) + "\n";
Variant::Type valid_type = Variant::NIL;
+ text += TTR("Value:") + " " + String(v);
if (!_is_value_key_valid(v, valid_type)) {
- text += "Value: " + String(v) + " (Invalid, expected type: " + Variant::get_type_name(valid_type) + ")\n";
- } else {
- text += "Value: " + String(v) + "\n";
+ text += " " + vformat(TTR("(Invalid, expected type: %s)"), Variant::get_type_name(valid_type));
}
- text += "Easing: " + rtos(animation->track_get_key_transition(track, key_idx));
+ text += "\n" + TTR("Easing:") + " " + rtos(animation->track_get_key_transition(track, key_idx));
} break;
case Animation::TYPE_METHOD: {
@@ -2670,22 +2669,20 @@ String AnimationTrackEdit::get_tooltip(const Point2 &p_pos) const {
} break;
case Animation::TYPE_BEZIER: {
float h = animation->bezier_track_get_key_value(track, key_idx);
- text += "Value: " + rtos(h) + "\n";
+ text += TTR("Value:") + " " + rtos(h) + "\n";
Vector2 ih = animation->bezier_track_get_key_in_handle(track, key_idx);
- text += "In-Handle: " + ih + "\n";
+ text += TTR("In-Handle:") + " " + ih + "\n";
Vector2 oh = animation->bezier_track_get_key_out_handle(track, key_idx);
- text += "Out-Handle: " + oh + "\n";
+ text += TTR("Out-Handle:") + " " + oh + "\n";
int hm = animation->bezier_track_get_key_handle_mode(track, key_idx);
- text += "Handle mode: ";
switch (hm) {
case Animation::HANDLE_MODE_FREE: {
- text += "Free";
+ text += TTR("Handle mode: Free\n");
} break;
case Animation::HANDLE_MODE_BALANCED: {
- text += "Balanced";
+ text += TTR("Handle mode: Balanced\n");
} break;
}
- text += "\n";
} break;
case Animation::TYPE_AUDIO: {
String stream_name = "null";
@@ -2700,15 +2697,15 @@ String AnimationTrackEdit::get_tooltip(const Point2 &p_pos) const {
}
}
- text += "Stream: " + stream_name + "\n";
+ text += TTR("Stream:") + " " + stream_name + "\n";
float so = animation->audio_track_get_key_start_offset(track, key_idx);
- text += "Start (s): " + rtos(so) + "\n";
+ text += TTR("Start (s):") + " " + rtos(so) + "\n";
float eo = animation->audio_track_get_key_end_offset(track, key_idx);
- text += "End (s): " + rtos(eo) + "\n";
+ text += TTR("End (s):") + " " + rtos(eo) + "\n";
} break;
case Animation::TYPE_ANIMATION: {
String name = animation->animation_track_get_key_animation(track, key_idx);
- text += "Animation Clip: " + name + "\n";
+ text += TTR("Animation Clip:") + " " + name + "\n";
} break;
}
return text;
@@ -5073,7 +5070,7 @@ void AnimationTrackEditor::_add_method_key(const String &p_method) {
}
}
- EditorNode::get_singleton()->show_warning(TTR("Method not found in object: ") + p_method);
+ EditorNode::get_singleton()->show_warning(TTR("Method not found in object:") + " " + p_method);
}
void AnimationTrackEditor::_key_selected(int p_key, bool p_single, int p_track) {
@@ -6242,7 +6239,7 @@ AnimationTrackEditor::AnimationTrackEditor() {
info_message->set_text(TTR("Select an AnimationPlayer node to create and edit animations."));
info_message->set_vertical_alignment(VERTICAL_ALIGNMENT_CENTER);
info_message->set_horizontal_alignment(HORIZONTAL_ALIGNMENT_CENTER);
- info_message->set_autowrap_mode(Label::AUTOWRAP_WORD_SMART);
+ info_message->set_autowrap_mode(TextServer::AUTOWRAP_WORD_SMART);
info_message->set_custom_minimum_size(Size2(100 * EDSCALE, 0));
info_message->set_anchors_and_offsets_preset(PRESET_WIDE, PRESET_MODE_KEEP_SIZE, 8 * EDSCALE);
main_panel->add_child(info_message);
diff --git a/editor/debugger/debug_adapter/debug_adapter_types.h b/editor/debugger/debug_adapter/debug_adapter_types.h
index 4d77b6d51c..fd66905f9b 100644
--- a/editor/debugger/debug_adapter/debug_adapter_types.h
+++ b/editor/debugger/debug_adapter/debug_adapter_types.h
@@ -220,7 +220,7 @@ struct StackFrame {
int column;
static uint32_t hash(const StackFrame &p_frame) {
- return hash_djb2_one_32(p_frame.id);
+ return hash_murmur3_one_32(p_frame.id);
}
bool operator==(const StackFrame &p_other) const {
return id == p_other.id;
diff --git a/editor/debugger/editor_debugger_inspector.cpp b/editor/debugger/editor_debugger_inspector.cpp
index c5093494c6..0e3d424a4b 100644
--- a/editor/debugger/editor_debugger_inspector.cpp
+++ b/editor/debugger/editor_debugger_inspector.cpp
@@ -68,7 +68,7 @@ void EditorDebuggerRemoteObject::_get_property_list(List<PropertyInfo> *p_list)
String EditorDebuggerRemoteObject::get_title() {
if (remote_object_id.is_valid()) {
- return TTR("Remote ") + String(type_name) + ": " + itos(remote_object_id);
+ return vformat(TTR("Remote %s:"), String(type_name)) + " " + itos(remote_object_id);
} else {
return "<null>";
}
diff --git a/editor/debugger/editor_debugger_node.cpp b/editor/debugger/editor_debugger_node.cpp
index bc28b11a71..e13af59d69 100644
--- a/editor/debugger/editor_debugger_node.cpp
+++ b/editor/debugger/editor_debugger_node.cpp
@@ -103,6 +103,7 @@ ScriptEditorDebugger *EditorDebuggerNode::_add_debugger() {
node->connect("remote_object_updated", callable_mp(this, &EditorDebuggerNode::_remote_object_updated), varray(id));
node->connect("remote_object_property_updated", callable_mp(this, &EditorDebuggerNode::_remote_object_property_updated), varray(id));
node->connect("remote_object_requested", callable_mp(this, &EditorDebuggerNode::_remote_object_requested), varray(id));
+ node->connect("errors_cleared", callable_mp(this, &EditorDebuggerNode::_update_errors));
if (tabs->get_tab_count() > 0) {
get_debugger(0)->clear_style();
@@ -267,40 +268,7 @@ void EditorDebuggerNode::_notification(int p_what) {
}
server->poll();
- // Errors and warnings
- int error_count = 0;
- int warning_count = 0;
- _for_all(tabs, [&](ScriptEditorDebugger *dbg) {
- error_count += dbg->get_error_count();
- warning_count += dbg->get_warning_count();
- });
-
- if (error_count != last_error_count || warning_count != last_warning_count) {
- _for_all(tabs, [&](ScriptEditorDebugger *dbg) {
- dbg->update_tabs();
- });
-
- if (error_count == 0 && warning_count == 0) {
- debugger_button->set_text(TTR("Debugger"));
- debugger_button->remove_theme_color_override("font_color");
- debugger_button->set_icon(Ref<Texture2D>());
- } else {
- debugger_button->set_text(TTR("Debugger") + " (" + itos(error_count + warning_count) + ")");
- if (error_count >= 1 && warning_count >= 1) {
- debugger_button->set_icon(get_theme_icon(SNAME("ErrorWarning"), SNAME("EditorIcons")));
- // Use error color to represent the highest level of severity reported.
- debugger_button->add_theme_color_override("font_color", get_theme_color(SNAME("error_color"), SNAME("Editor")));
- } else if (error_count >= 1) {
- debugger_button->set_icon(get_theme_icon(SNAME("Error"), SNAME("EditorIcons")));
- debugger_button->add_theme_color_override("font_color", get_theme_color(SNAME("error_color"), SNAME("Editor")));
- } else {
- debugger_button->set_icon(get_theme_icon(SNAME("Warning"), SNAME("EditorIcons")));
- debugger_button->add_theme_color_override("font_color", get_theme_color(SNAME("warning_color"), SNAME("Editor")));
- }
- }
- last_error_count = error_count;
- last_warning_count = warning_count;
- }
+ _update_errors();
// Remote scene tree update
remote_scene_tree_timeout -= get_process_delta_time();
@@ -361,6 +329,42 @@ void EditorDebuggerNode::_notification(int p_what) {
}
}
+void EditorDebuggerNode::_update_errors() {
+ int error_count = 0;
+ int warning_count = 0;
+ _for_all(tabs, [&](ScriptEditorDebugger *dbg) {
+ error_count += dbg->get_error_count();
+ warning_count += dbg->get_warning_count();
+ });
+
+ if (error_count != last_error_count || warning_count != last_warning_count) {
+ _for_all(tabs, [&](ScriptEditorDebugger *dbg) {
+ dbg->update_tabs();
+ });
+
+ if (error_count == 0 && warning_count == 0) {
+ debugger_button->set_text(TTR("Debugger"));
+ debugger_button->remove_theme_color_override("font_color");
+ debugger_button->set_icon(Ref<Texture2D>());
+ } else {
+ debugger_button->set_text(TTR("Debugger") + " (" + itos(error_count + warning_count) + ")");
+ if (error_count >= 1 && warning_count >= 1) {
+ debugger_button->set_icon(get_theme_icon(SNAME("ErrorWarning"), SNAME("EditorIcons")));
+ // Use error color to represent the highest level of severity reported.
+ debugger_button->add_theme_color_override("font_color", get_theme_color(SNAME("error_color"), SNAME("Editor")));
+ } else if (error_count >= 1) {
+ debugger_button->set_icon(get_theme_icon(SNAME("Error"), SNAME("EditorIcons")));
+ debugger_button->add_theme_color_override("font_color", get_theme_color(SNAME("error_color"), SNAME("Editor")));
+ } else {
+ debugger_button->set_icon(get_theme_icon(SNAME("Warning"), SNAME("EditorIcons")));
+ debugger_button->add_theme_color_override("font_color", get_theme_color(SNAME("warning_color"), SNAME("Editor")));
+ }
+ }
+ last_error_count = error_count;
+ last_warning_count = warning_count;
+ }
+}
+
void EditorDebuggerNode::_debugger_stopped(int p_id) {
ScriptEditorDebugger *dbg = get_debugger(p_id);
ERR_FAIL_COND(!dbg);
diff --git a/editor/debugger/editor_debugger_node.h b/editor/debugger/editor_debugger_node.h
index 87457fc09a..d50cbec291 100644
--- a/editor/debugger/editor_debugger_node.h
+++ b/editor/debugger/editor_debugger_node.h
@@ -72,7 +72,7 @@ private:
static uint32_t hash(const Breakpoint &p_val) {
uint32_t h = HashMapHasherDefault::hash(p_val.source);
- return hash_djb2_one_32(p_val.line, h);
+ return hash_murmur3_one_32(p_val.line, h);
}
bool operator==(const Breakpoint &p_b) const {
return (line == p_b.line && source == p_b.source);
@@ -116,6 +116,7 @@ private:
ScriptEditorDebugger *_add_debugger();
EditorDebuggerRemoteObject *get_inspected_remote_object();
+ void _update_errors();
friend class DebuggerEditorPlugin;
friend class DebugAdapterParser;
diff --git a/editor/debugger/editor_performance_profiler.cpp b/editor/debugger/editor_performance_profiler.cpp
index ed451ed68e..764e842539 100644
--- a/editor/debugger/editor_performance_profiler.cpp
+++ b/editor/debugger/editor_performance_profiler.cpp
@@ -391,7 +391,7 @@ EditorPerformanceProfiler::EditorPerformanceProfiler() {
info_message->set_text(TTR("Pick one or more items from the list to display the graph."));
info_message->set_vertical_alignment(VERTICAL_ALIGNMENT_CENTER);
info_message->set_horizontal_alignment(HORIZONTAL_ALIGNMENT_CENTER);
- info_message->set_autowrap_mode(Label::AUTOWRAP_WORD_SMART);
+ info_message->set_autowrap_mode(TextServer::AUTOWRAP_WORD_SMART);
info_message->set_custom_minimum_size(Size2(100 * EDSCALE, 0));
info_message->set_anchors_and_offsets_preset(PRESET_WIDE, PRESET_MODE_KEEP_SIZE, 8 * EDSCALE);
monitor_draw->add_child(info_message);
diff --git a/editor/debugger/editor_profiler.cpp b/editor/debugger/editor_profiler.cpp
index f2bb63e528..1b1cdbd9ef 100644
--- a/editor/debugger/editor_profiler.cpp
+++ b/editor/debugger/editor_profiler.cpp
@@ -86,7 +86,7 @@ void EditorProfiler::add_frame_metric(const Metric &p_metric, bool p_final) {
void EditorProfiler::clear() {
int metric_size = EditorSettings::get_singleton()->get("debugger/profiler_frame_history_size");
- metric_size = CLAMP(metric_size, 60, 1024);
+ metric_size = CLAMP(metric_size, 60, 10000);
frame_metrics.clear();
frame_metrics.resize(metric_size);
total_metrics = 0;
@@ -660,7 +660,7 @@ EditorProfiler::EditorProfiler() {
h_split->add_child(graph);
graph->set_h_size_flags(SIZE_EXPAND_FILL);
- int metric_size = CLAMP(int(EDITOR_GET("debugger/profiler_frame_history_size")), 60, 1024);
+ int metric_size = CLAMP(int(EDITOR_GET("debugger/profiler_frame_history_size")), 60, 10000);
frame_metrics.resize(metric_size);
EDITOR_DEF("debugger/profiler_frame_max_functions", 64);
diff --git a/editor/debugger/editor_visual_profiler.cpp b/editor/debugger/editor_visual_profiler.cpp
index 503c03bafe..9def646f3f 100644
--- a/editor/debugger/editor_visual_profiler.cpp
+++ b/editor/debugger/editor_visual_profiler.cpp
@@ -93,7 +93,7 @@ void EditorVisualProfiler::add_frame_metric(const Metric &p_metric) {
void EditorVisualProfiler::clear() {
int metric_size = EditorSettings::get_singleton()->get("debugger/profiler_frame_history_size");
- metric_size = CLAMP(metric_size, 60, 1024);
+ metric_size = CLAMP(metric_size, 60, 10000);
frame_metrics.clear();
frame_metrics.resize(metric_size);
last_metric = -1;
@@ -789,7 +789,7 @@ EditorVisualProfiler::EditorVisualProfiler() {
h_split->add_child(graph);
graph->set_h_size_flags(SIZE_EXPAND_FILL);
- int metric_size = CLAMP(int(EDITOR_GET("debugger/profiler_frame_history_size")), 60, 1024);
+ int metric_size = CLAMP(int(EDITOR_GET("debugger/profiler_frame_history_size")), 60, 10000);
frame_metrics.resize(metric_size);
frame_delay = memnew(Timer);
diff --git a/editor/debugger/script_editor_debugger.cpp b/editor/debugger/script_editor_debugger.cpp
index 8cb984af1b..c209c67dcb 100644
--- a/editor/debugger/script_editor_debugger.cpp
+++ b/editor/debugger/script_editor_debugger.cpp
@@ -1465,6 +1465,7 @@ void ScriptEditorDebugger::_clear_errors_list() {
error_tree->clear();
error_count = 0;
warning_count = 0;
+ emit_signal(SNAME("errors_cleared"));
update_tabs();
expand_all_button->set_disabled(true);
@@ -1486,7 +1487,7 @@ void ScriptEditorDebugger::_breakpoints_item_rmb_selected(const Vector2 &p_pos,
breakpoints_menu->add_icon_item(get_theme_icon(SNAME("Remove"), SNAME("EditorIcons")), TTR("Delete Breakpoint"), ACTION_DELETE_BREAKPOINT);
file = selected->get_parent()->get_text(0);
}
- breakpoints_menu->add_icon_item(get_theme_icon(SNAME("Remove"), SNAME("EditorIcons")), TTR("Delete All Breakpoints in: ") + file, ACTION_DELETE_BREAKPOINTS_IN_FILE);
+ breakpoints_menu->add_icon_item(get_theme_icon(SNAME("Remove"), SNAME("EditorIcons")), TTR("Delete All Breakpoints in:") + " " + file, ACTION_DELETE_BREAKPOINTS_IN_FILE);
breakpoints_menu->add_icon_item(get_theme_icon(SNAME("Remove"), SNAME("EditorIcons")), TTR("Delete All Breakpoints"), ACTION_DELETE_ALL_BREAKPOINTS);
breakpoints_menu->set_position(breakpoints_tree->get_global_position() + p_pos);
@@ -1626,6 +1627,7 @@ void ScriptEditorDebugger::_bind_methods() {
ADD_SIGNAL(MethodInfo("debug_data", PropertyInfo(Variant::STRING, "msg"), PropertyInfo(Variant::ARRAY, "data")));
ADD_SIGNAL(MethodInfo("set_breakpoint", PropertyInfo("script"), PropertyInfo(Variant::INT, "line"), PropertyInfo(Variant::BOOL, "enabled")));
ADD_SIGNAL(MethodInfo("clear_breakpoints"));
+ ADD_SIGNAL(MethodInfo("errors_cleared"));
}
void ScriptEditorDebugger::add_debugger_plugin(const Ref<Script> &p_script) {
@@ -1684,7 +1686,7 @@ ScriptEditorDebugger::ScriptEditorDebugger() {
reason->set_text("");
hbc->add_child(reason);
reason->set_h_size_flags(SIZE_EXPAND_FILL);
- reason->set_autowrap_mode(Label::AUTOWRAP_WORD_SMART);
+ reason->set_autowrap_mode(TextServer::AUTOWRAP_WORD_SMART);
reason->set_max_lines_visible(3);
reason->set_mouse_filter(Control::MOUSE_FILTER_PASS);
diff --git a/editor/dependency_editor.cpp b/editor/dependency_editor.cpp
index 7b73a392b4..97699d0349 100644
--- a/editor/dependency_editor.cpp
+++ b/editor/dependency_editor.cpp
@@ -349,7 +349,7 @@ void DependencyEditorOwners::show(const String &p_path) {
_fill_owners(EditorFileSystem::get_singleton()->get_filesystem());
popup_centered_ratio(0.3);
- set_title(TTR("Owners Of:") + " " + p_path.get_file());
+ set_title(vformat(TTR("Owners of: %s (Total: %d)"), p_path.get_file(), owners->get_item_count()));
}
DependencyEditorOwners::DependencyEditorOwners() {
diff --git a/editor/editor_about.cpp b/editor/editor_about.cpp
index 6fafb2d91a..17aa67cd45 100644
--- a/editor/editor_about.cpp
+++ b/editor/editor_about.cpp
@@ -213,7 +213,7 @@ EditorAbout::EditorAbout() {
Label *tpl_label = memnew(Label);
tpl_label->set_h_size_flags(Control::SIZE_EXPAND_FILL);
- tpl_label->set_autowrap_mode(Label::AUTOWRAP_WORD_SMART);
+ tpl_label->set_autowrap_mode(TextServer::AUTOWRAP_WORD_SMART);
tpl_label->set_text(TTR("Godot Engine relies on a number of third-party free and open source libraries, all compatible with the terms of its MIT license. The following is an exhaustive list of all such third-party components with their respective copyright statements and license terms."));
tpl_label->set_size(Size2(630, 1) * EDSCALE);
license_thirdparty->add_child(tpl_label);
diff --git a/editor/editor_audio_buses.cpp b/editor/editor_audio_buses.cpp
index 083f7cdc6c..89dc106717 100644
--- a/editor/editor_audio_buses.cpp
+++ b/editor/editor_audio_buses.cpp
@@ -1215,7 +1215,7 @@ void EditorAudioBuses::_load_default_layout() {
}
edited_path = layout_path;
- file->set_text(String(TTR("Layout")) + ": " + layout_path.get_file());
+ file->set_text(String(TTR("Layout:")) + " " + layout_path.get_file());
AudioServer::get_singleton()->set_bus_layout(state);
_update_buses();
EditorNode::get_singleton()->get_undo_redo()->clear_history();
@@ -1231,7 +1231,7 @@ void EditorAudioBuses::_file_dialog_callback(const String &p_string) {
}
edited_path = p_string;
- file->set_text(String(TTR("Layout")) + ": " + p_string.get_file());
+ file->set_text(String(TTR("Layout:")) + " " + p_string.get_file());
AudioServer::get_singleton()->set_bus_layout(state);
_update_buses();
EditorNode::get_singleton()->get_undo_redo()->clear_history();
@@ -1252,7 +1252,7 @@ void EditorAudioBuses::_file_dialog_callback(const String &p_string) {
}
edited_path = p_string;
- file->set_text(String(TTR("Layout")) + ": " + p_string.get_file());
+ file->set_text(String(TTR("Layout:")) + " " + p_string.get_file());
_update_buses();
EditorNode::get_singleton()->get_undo_redo()->clear_history();
call_deferred(SNAME("_select_layout"));
@@ -1272,7 +1272,7 @@ EditorAudioBuses::EditorAudioBuses() {
file = memnew(Label);
String layout_path = ProjectSettings::get_singleton()->get("audio/buses/default_bus_layout");
- file->set_text(String(TTR("Layout")) + ": " + layout_path.get_file());
+ file->set_text(String(TTR("Layout:")) + " " + layout_path.get_file());
file->set_clip_text(true);
file->set_h_size_flags(SIZE_EXPAND_FILL);
top_hb->add_child(file);
diff --git a/editor/editor_export.cpp b/editor/editor_export.cpp
index f4a81521df..bb9d930cf5 100644
--- a/editor/editor_export.cpp
+++ b/editor/editor_export.cpp
@@ -46,6 +46,7 @@
#include "editor/editor_file_system.h"
#include "editor/editor_node.h"
#include "editor/editor_paths.h"
+#include "editor/editor_scale.h"
#include "editor/editor_settings.h"
#include "editor/plugins/script_editor_plugin.h"
#include "scene/resources/resource_format_text.h"
@@ -252,6 +253,83 @@ String EditorExportPreset::get_script_encryption_key() const {
///////////////////////////////////
+bool EditorExportPlatform::fill_log_messages(RichTextLabel *p_log, Error p_err) {
+ bool has_messages = false;
+
+ int msg_count = get_message_count();
+
+ p_log->add_text(TTR("Project export for platform:") + " ");
+ p_log->add_image(get_logo(), 16 * EDSCALE, 16 * EDSCALE, Color(1.0, 1.0, 1.0), INLINE_ALIGNMENT_CENTER);
+ p_log->add_text(" ");
+ p_log->add_text(get_name());
+ p_log->add_text(" - ");
+ if (p_err == OK) {
+ if (get_worst_message_type() >= EditorExportPlatform::EXPORT_MESSAGE_WARNING) {
+ p_log->add_image(EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("StatusWarning"), SNAME("EditorIcons")), 16 * EDSCALE, 16 * EDSCALE, Color(1.0, 1.0, 1.0), INLINE_ALIGNMENT_CENTER);
+ p_log->add_text(" ");
+ p_log->add_text(TTR("Completed with errors."));
+ has_messages = true;
+ } else {
+ p_log->add_image(EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("StatusSuccess"), SNAME("EditorIcons")), 16 * EDSCALE, 16 * EDSCALE, Color(1.0, 1.0, 1.0), INLINE_ALIGNMENT_CENTER);
+ p_log->add_text(" ");
+ p_log->add_text(TTR("Completed sucessfully."));
+ if (msg_count > 0) {
+ has_messages = true;
+ }
+ }
+ } else {
+ p_log->add_image(EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("StatusError"), SNAME("EditorIcons")), 16 * EDSCALE, 16 * EDSCALE, Color(1.0, 1.0, 1.0), INLINE_ALIGNMENT_CENTER);
+ p_log->add_text(" ");
+ p_log->add_text(TTR("Failed."));
+ has_messages = true;
+ }
+ p_log->add_newline();
+
+ if (msg_count) {
+ p_log->push_table(2);
+ p_log->set_table_column_expand(0, false);
+ p_log->set_table_column_expand(1, true);
+ for (int m = 0; m < msg_count; m++) {
+ EditorExportPlatform::ExportMessage msg = get_message(m);
+ Color color = EditorNode::get_singleton()->get_gui_base()->get_theme_color(SNAME("font_color"), SNAME("Label"));
+ Ref<Texture> icon;
+
+ switch (msg.msg_type) {
+ case EditorExportPlatform::EXPORT_MESSAGE_INFO: {
+ color = EditorNode::get_singleton()->get_gui_base()->get_theme_color(SNAME("font_color"), SNAME("Editor")) * Color(1, 1, 1, 0.6);
+ } break;
+ case EditorExportPlatform::EXPORT_MESSAGE_WARNING: {
+ icon = EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("Warning"), SNAME("EditorIcons"));
+ color = EditorNode::get_singleton()->get_gui_base()->get_theme_color(SNAME("warning_color"), SNAME("Editor"));
+ } break;
+ case EditorExportPlatform::EXPORT_MESSAGE_ERROR: {
+ icon = EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("Error"), SNAME("EditorIcons"));
+ color = EditorNode::get_singleton()->get_gui_base()->get_theme_color(SNAME("error_color"), SNAME("Editor"));
+ } break;
+ default:
+ break;
+ }
+
+ p_log->push_cell();
+ p_log->add_text("\t");
+ if (icon.is_valid()) {
+ p_log->add_image(icon);
+ }
+ p_log->pop();
+
+ p_log->push_cell();
+ p_log->push_color(color);
+ p_log->add_text(vformat("[%s]: %s", msg.category, msg.text));
+ p_log->pop();
+ p_log->pop();
+ }
+ p_log->pop();
+ p_log->add_newline();
+ }
+ p_log->add_newline();
+ return has_messages;
+}
+
void EditorExportPlatform::gen_debug_flags(Vector<String> &r_flags, int p_flags) {
String host = EditorSettings::get_singleton()->get("network/debug/remote_host");
int remote_port = (int)EditorSettings::get_singleton()->get("network/debug/remote_port");
@@ -1134,7 +1212,10 @@ Error EditorExportPlatform::save_pack(const Ref<EditorExportPreset> &p_preset, b
String tmppath = EditorPaths::get_singleton()->get_cache_dir().plus_file("packtmp");
Ref<FileAccess> ftmp = FileAccess::open(tmppath, FileAccess::WRITE);
- ERR_FAIL_COND_V_MSG(ftmp.is_null(), ERR_CANT_CREATE, "Cannot create file '" + tmppath + "'.");
+ if (ftmp.is_null()) {
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Save PCK"), vformat(TTR("Cannot create file \"%s\"."), tmppath));
+ return ERR_CANT_CREATE;
+ }
PackData pd;
pd.ep = &ep;
@@ -1149,7 +1230,7 @@ Error EditorExportPlatform::save_pack(const Ref<EditorExportPreset> &p_preset, b
if (err != OK) {
DirAccess::remove_file_or_error(tmppath);
- ERR_PRINT("Failed to export project files");
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Save PCK"), TTR("Failed to export project files."));
return err;
}
@@ -1162,14 +1243,16 @@ Error EditorExportPlatform::save_pack(const Ref<EditorExportPreset> &p_preset, b
f = FileAccess::open(p_path, FileAccess::WRITE);
if (f.is_null()) {
DirAccess::remove_file_or_error(tmppath);
- ERR_FAIL_V(ERR_CANT_CREATE);
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Save PCK"), vformat(TTR("Can't open file to read from path \"%s\"."), tmppath));
+ return ERR_CANT_CREATE;
}
} else {
// Append to executable
f = FileAccess::open(p_path, FileAccess::READ_WRITE);
if (f.is_null()) {
DirAccess::remove_file_or_error(tmppath);
- ERR_FAIL_V(ERR_FILE_CANT_OPEN);
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Save PCK"), vformat(TTR("Can't open executable file from path \"%s\"."), tmppath));
+ return ERR_FILE_CANT_OPEN;
}
f->seek_end();
@@ -1245,10 +1328,16 @@ Error EditorExportPlatform::save_pack(const Ref<EditorExportPreset> &p_preset, b
}
}
fae.instantiate();
- ERR_FAIL_COND_V(fae.is_null(), ERR_SKIP);
+ if (fae.is_null()) {
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Save PCK"), TTR("Can't create encrypted file."));
+ return ERR_CANT_CREATE;
+ }
err = fae->open_and_parse(f, key, FileAccessEncrypted::MODE_WRITE_AES256, false);
- ERR_FAIL_COND_V(err != OK, ERR_SKIP);
+ if (err != OK) {
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Save PCK"), TTR("Can't open encrypted file to write."));
+ return ERR_CANT_CREATE;
+ }
fhead = fae;
}
@@ -1293,7 +1382,8 @@ Error EditorExportPlatform::save_pack(const Ref<EditorExportPreset> &p_preset, b
ftmp = FileAccess::open(tmppath, FileAccess::READ);
if (ftmp.is_null()) {
DirAccess::remove_file_or_error(tmppath);
- ERR_FAIL_V_MSG(ERR_CANT_CREATE, "Can't open file to read from path '" + String(tmppath) + "'.");
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Save PCK"), vformat(TTR("Can't open file to read from path \"%s\"."), tmppath));
+ return ERR_CANT_CREATE;
}
const int bufsize = 16384;
@@ -1344,7 +1434,7 @@ Error EditorExportPlatform::save_zip(const Ref<EditorExportPreset> &p_preset, bo
Error err = export_project_files(p_preset, p_debug, _save_zip_file, &zd);
if (err != OK && err != ERR_SKIP) {
- ERR_PRINT("Failed to export project files");
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Save ZIP"), TTR("Failed to export project files."));
}
zipClose(zip, nullptr);
@@ -1835,6 +1925,7 @@ Error EditorExportPlatformPC::export_project(const Ref<EditorExportPreset> &p_pr
Error EditorExportPlatformPC::prepare_template(const Ref<EditorExportPreset> &p_preset, bool p_debug, const String &p_path, int p_flags) {
if (!DirAccess::exists(p_path.get_base_dir())) {
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Prepare Template"), TTR("The given export path doesn't exist."));
return ERR_FILE_BAD_PATH;
}
@@ -1850,13 +1941,16 @@ Error EditorExportPlatformPC::prepare_template(const Ref<EditorExportPreset> &p_
}
if (!template_path.is_empty() && !FileAccess::exists(template_path)) {
- EditorNode::get_singleton()->show_warning(TTR("Template file not found:") + "\n" + template_path);
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Prepare Template"), vformat(TTR("Template file not found: \"%s\"."), template_path));
return ERR_FILE_NOT_FOUND;
}
Ref<DirAccess> da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
da->make_dir_recursive(p_path.get_base_dir());
Error err = da->copy(template_path, p_path, get_chmod_flags());
+ if (err != OK) {
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Prepare Template"), TTR("Failed to copy export template."));
+ }
return err;
}
@@ -1876,7 +1970,7 @@ Error EditorExportPlatformPC::export_project_data(const Ref<EditorExportPreset>
Error err = save_pack(p_preset, p_debug, pck_path, &so_files, p_preset->get("binary_format/embed_pck"), &embedded_pos, &embedded_size);
if (err == OK && p_preset->get("binary_format/embed_pck")) {
if (embedded_size >= 0x100000000 && !p_preset->get("binary_format/64_bits")) {
- EditorNode::get_singleton()->show_warning(TTR("On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."));
+ add_message(EXPORT_MESSAGE_ERROR, TTR("PCK Embedding"), TTR("On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."));
return ERR_INVALID_PARAMETER;
}
diff --git a/editor/editor_export.h b/editor/editor_export.h
index daf6d8ef23..6f41736d2d 100644
--- a/editor/editor_export.h
+++ b/editor/editor_export.h
@@ -33,6 +33,7 @@
#include "core/io/dir_access.h"
#include "core/io/resource.h"
+#include "scene/gui/rich_text_label.h"
#include "scene/main/node.h"
#include "scene/main/timer.h"
#include "scene/resources/texture.h"
@@ -170,6 +171,19 @@ public:
typedef Error (*EditorExportSaveFunction)(void *p_userdata, const String &p_path, const Vector<uint8_t> &p_data, int p_file, int p_total, const Vector<String> &p_enc_in_filters, const Vector<String> &p_enc_ex_filters, const Vector<uint8_t> &p_key);
typedef Error (*EditorExportSaveSharedObject)(void *p_userdata, const SharedObject &p_so);
+ enum ExportMessageType {
+ EXPORT_MESSAGE_NONE,
+ EXPORT_MESSAGE_INFO,
+ EXPORT_MESSAGE_WARNING,
+ EXPORT_MESSAGE_ERROR,
+ };
+
+ struct ExportMessage {
+ ExportMessageType msg_type;
+ String category;
+ String text;
+ };
+
private:
struct SavedData {
uint64_t ofs = 0;
@@ -200,6 +214,8 @@ private:
Vector<String> features_pv;
};
+ Vector<ExportMessage> messages;
+
void _export_find_resources(EditorFileSystemDirectory *p_dir, HashSet<String> &p_paths);
void _export_find_dependencies(const String &p_path, HashSet<String> &p_paths);
@@ -240,6 +256,47 @@ public:
virtual Ref<EditorExportPreset> create_preset();
+ virtual void clear_messages() { messages.clear(); }
+ virtual void add_message(ExportMessageType p_type, const String &p_category, const String &p_message) {
+ ExportMessage msg;
+ msg.category = p_category;
+ msg.text = p_message;
+ msg.msg_type = p_type;
+ messages.push_back(msg);
+ switch (p_type) {
+ case EXPORT_MESSAGE_INFO: {
+ print_line(vformat("%s: %s\n", msg.category, msg.text));
+ } break;
+ case EXPORT_MESSAGE_WARNING: {
+ WARN_PRINT(vformat("%s: %s\n", msg.category, msg.text));
+ } break;
+ case EXPORT_MESSAGE_ERROR: {
+ ERR_PRINT(vformat("%s: %s\n", msg.category, msg.text));
+ } break;
+ default:
+ break;
+ }
+ }
+
+ virtual int get_message_count() const {
+ return messages.size();
+ }
+
+ virtual ExportMessage get_message(int p_index) const {
+ ERR_FAIL_INDEX_V(p_index, messages.size(), ExportMessage());
+ return messages[p_index];
+ }
+
+ virtual ExportMessageType get_worst_message_type() const {
+ ExportMessageType worst_type = EXPORT_MESSAGE_NONE;
+ for (int i = 0; i < messages.size(); i++) {
+ worst_type = MAX(worst_type, messages[i].msg_type);
+ }
+ return worst_type;
+ }
+
+ virtual bool fill_log_messages(RichTextLabel *p_log, Error p_err);
+
virtual void get_export_options(List<ExportOption> *r_options) = 0;
virtual bool should_update_export_options() { return false; }
virtual bool get_export_option_visibility(const String &p_option, const HashMap<StringName, Variant> &p_options) const { return true; }
@@ -459,7 +516,7 @@ public:
int get_chmod_flags() const;
void set_chmod_flags(int p_flags);
- virtual Error fixup_embedded_pck(const String &p_path, int64_t p_embedded_start, int64_t p_embedded_size) const {
+ virtual Error fixup_embedded_pck(const String &p_path, int64_t p_embedded_start, int64_t p_embedded_size) {
return Error::OK;
}
};
diff --git a/editor/editor_file_dialog.cpp b/editor/editor_file_dialog.cpp
index 13084e2aab..95f72476aa 100644
--- a/editor/editor_file_dialog.cpp
+++ b/editor/editor_file_dialog.cpp
@@ -756,7 +756,7 @@ void EditorFileDialog::update_file_list() {
item_list->set_icon_mode(ItemList::ICON_MODE_TOP);
item_list->set_fixed_column_width(thumbnail_size * 3 / 2);
item_list->set_max_text_lines(2);
- item_list->set_text_overrun_behavior(TextParagraph::OVERRUN_TRIM_ELLIPSIS);
+ item_list->set_text_overrun_behavior(TextServer::OVERRUN_TRIM_ELLIPSIS);
item_list->set_fixed_icon_size(Size2(thumbnail_size, thumbnail_size));
if (thumbnail_size < 64) {
diff --git a/editor/editor_inspector.cpp b/editor/editor_inspector.cpp
index 92ea162962..0f31e3e7bb 100644
--- a/editor/editor_inspector.cpp
+++ b/editor/editor_inspector.cpp
@@ -62,7 +62,7 @@ Size2 EditorProperty::get_minimum_size() const {
Size2 ms;
Ref<Font> font = get_theme_font(SNAME("font"), SNAME("Tree"));
int font_size = get_theme_font_size(SNAME("font_size"), SNAME("Tree"));
- ms.height = font->get_height(font_size);
+ ms.height = font->get_height(font_size) + 4 * EDSCALE;
for (int i = 0; i < get_child_count(); i++) {
Control *c = Object::cast_to<Control>(get_child(i));
@@ -132,7 +132,7 @@ void EditorProperty::_notification(int p_what) {
int child_room = size.width * (1.0 - split_ratio);
Ref<Font> font = get_theme_font(SNAME("font"), SNAME("Tree"));
int font_size = get_theme_font_size(SNAME("font_size"), SNAME("Tree"));
- int height = font->get_height(font_size);
+ int height = font->get_height(font_size) + 4 * EDSCALE;
bool no_children = true;
//compute room needed
@@ -236,30 +236,24 @@ void EditorProperty::_notification(int p_what) {
case NOTIFICATION_DRAW: {
Ref<Font> font = get_theme_font(SNAME("font"), SNAME("Tree"));
int font_size = get_theme_font_size(SNAME("font_size"), SNAME("Tree"));
- Color dark_color = get_theme_color(SNAME("dark_color_2"), SNAME("Editor"));
bool rtl = is_layout_rtl();
Size2 size = get_size();
if (bottom_editor) {
- size.height = bottom_editor->get_offset(SIDE_TOP);
+ size.height = bottom_editor->get_offset(SIDE_TOP) - get_theme_constant(SNAME("v_separation"));
} else if (label_reference) {
size.height = label_reference->get_size().height;
}
- Ref<StyleBox> sb;
- if (selected) {
- sb = get_theme_stylebox(SNAME("bg_selected"));
- } else {
- sb = get_theme_stylebox(SNAME("bg"));
- }
-
+ Ref<StyleBox> sb = get_theme_stylebox(selected ? SNAME("bg_selected") : SNAME("bg"));
draw_style_box(sb, Rect2(Vector2(), size));
+ Ref<StyleBox> bg_stylebox = get_theme_stylebox(SNAME("child_bg"));
if (draw_top_bg && right_child_rect != Rect2()) {
- draw_rect(right_child_rect, dark_color);
+ draw_style_box(bg_stylebox, right_child_rect);
}
if (bottom_child_rect != Rect2()) {
- draw_rect(bottom_child_rect, dark_color);
+ draw_style_box(bg_stylebox, bottom_child_rect);
}
Color color;
@@ -1075,7 +1069,7 @@ void EditorInspectorPlugin::_bind_methods() {
void EditorInspectorCategory::_notification(int p_what) {
switch (p_what) {
case NOTIFICATION_DRAW: {
- Ref<StyleBox> sb = get_theme_stylebox(SNAME("prop_category_style"), SNAME("Editor"));
+ Ref<StyleBox> sb = get_theme_stylebox(SNAME("bg"));
draw_style_box(sb, Rect2(Vector2(), get_size()));
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp
index c59c7de603..bcfc516849 100644
--- a/editor/editor_node.cpp
+++ b/editor/editor_node.cpp
@@ -553,6 +553,8 @@ void EditorNode::_update_from_settings() {
tree->set_debug_collision_contact_color(GLOBAL_GET("debug/shapes/collision/contact_color"));
tree->set_debug_navigation_color(GLOBAL_GET("debug/shapes/navigation/geometry_color"));
tree->set_debug_navigation_disabled_color(GLOBAL_GET("debug/shapes/navigation/disabled_geometry_color"));
+
+ _update_title();
}
void EditorNode::_select_default_main_screen_plugin() {
@@ -582,10 +584,7 @@ void EditorNode::_notification(int p_what) {
opening_prev = false;
}
- if (unsaved_cache != (saved_version != editor_data.get_undo_redo().get_version())) {
- unsaved_cache = (saved_version != editor_data.get_undo_redo().get_version());
- _update_title();
- }
+ unsaved_cache = saved_version != editor_data.get_undo_redo().get_version();
if (last_checked_version != editor_data.get_undo_redo().get_version()) {
_update_scene_tabs();
@@ -968,21 +967,14 @@ void EditorNode::_fs_changed() {
ERR_PRINT(vformat("Cannot export project with preset \"%s\" due to configuration errors:\n%s", preset_name, config_error));
err = missing_templates ? ERR_FILE_NOT_FOUND : ERR_UNCONFIGURED;
} else {
+ platform->clear_messages();
err = platform->export_project(export_preset, export_defer.debug, export_path);
}
}
- switch (err) {
- case OK:
- break;
- case ERR_FILE_NOT_FOUND:
- export_error = vformat("Project export failed for preset \"%s\". The export template appears to be missing.", preset_name);
- break;
- case ERR_FILE_BAD_PATH:
- export_error = vformat("Project export failed for preset \"%s\". The target path \"%s\" appears to be invalid.", preset_name, export_path);
- break;
- default:
- export_error = vformat("Project export failed with error code %d for preset \"%s\".", (int)err, preset_name);
- break;
+ if (err != OK) {
+ export_error = vformat("Project export for preset \"%s\" failed.", preset_name);
+ } else if (platform->get_worst_message_type() >= EditorExportPlatform::EXPORT_MESSAGE_WARNING) {
+ export_error = vformat("Project export for preset \"%s\" completed with errors.", preset_name);
}
}
}
@@ -1799,6 +1791,10 @@ void EditorNode::save_scene_list(Vector<String> p_scene_filenames) {
void EditorNode::restart_editor() {
exiting = true;
+ if (editor_run.get_status() != EditorRun::STATUS_STOP) {
+ editor_run.stop();
+ }
+
String to_reopen;
if (get_tree()->get_edited_scene_root()) {
to_reopen = get_tree()->get_edited_scene_root()->get_scene_file_path();
@@ -2345,6 +2341,20 @@ void EditorNode::_run(bool p_current, const String &p_custom) {
return;
}
+ String write_movie_file;
+ if (write_movie_button->is_pressed()) {
+ if (p_current && get_tree()->get_edited_scene_root() && get_tree()->get_edited_scene_root()->has_meta("movie_file")) {
+ // If the scene file has a movie_file metadata set, use this as file. Quick workaround if you want to have multiple scenes that write to multiple movies.
+ write_movie_file = get_tree()->get_edited_scene_root()->get_meta("movie_file");
+ } else {
+ write_movie_file = GLOBAL_GET("editor/movie_writer/movie_file");
+ }
+ if (write_movie_file == String()) {
+ show_accept(TTR("Movie Maker mode is enabled, but no movie file path has been specified.\nA default movie file path can be specified in the project settings under the 'Editor/Movie Writer' category.\nAlternatively, for running single scenes, a 'movie_path' metadata can be added to the root node,\nspecifying the path to a movie file that will be used when recording that scene."), TTR("OK"));
+ return;
+ }
+ }
+
play_button->set_pressed(false);
play_button->set_icon(gui_base->get_theme_icon(SNAME("MainPlay"), SNAME("EditorIcons")));
play_scene_button->set_pressed(false);
@@ -2408,7 +2418,7 @@ void EditorNode::_run(bool p_current, const String &p_custom) {
}
EditorDebuggerNode::get_singleton()->start();
- Error error = editor_run.run(run_filename);
+ Error error = editor_run.run(run_filename, write_movie_file);
if (error != OK) {
EditorDebuggerNode::get_singleton()->stop();
show_accept(TTR("Could not start subprocess(es)!"), TTR("OK"));
@@ -2791,6 +2801,9 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
case RUN_SETTINGS: {
project_settings_editor->popup_project_settings();
} break;
+ case RUN_WRITE_MOVIE: {
+ _update_write_movie_icon();
+ } break;
case FILE_INSTALL_ANDROID_SOURCE: {
if (p_confirmed) {
export_template_manager->install_android_template();
@@ -3306,33 +3319,39 @@ void EditorNode::_update_addon_config() {
}
void EditorNode::set_addon_plugin_enabled(const String &p_addon, bool p_enabled, bool p_config_changed) {
- ERR_FAIL_COND(p_enabled && addon_name_to_plugin.has(p_addon));
- ERR_FAIL_COND(!p_enabled && !addon_name_to_plugin.has(p_addon));
+ String addon_path = p_addon;
+
+ if (!addon_path.begins_with("res://")) {
+ addon_path = "res://addons/" + addon_path + "/plugin.cfg";
+ }
+
+ ERR_FAIL_COND(p_enabled && addon_name_to_plugin.has(addon_path));
+ ERR_FAIL_COND(!p_enabled && !addon_name_to_plugin.has(addon_path));
if (!p_enabled) {
- EditorPlugin *addon = addon_name_to_plugin[p_addon];
+ EditorPlugin *addon = addon_name_to_plugin[addon_path];
remove_editor_plugin(addon, p_config_changed);
memdelete(addon);
- addon_name_to_plugin.erase(p_addon);
+ addon_name_to_plugin.erase(addon_path);
_update_addon_config();
return;
}
Ref<ConfigFile> cf;
cf.instantiate();
- if (!DirAccess::exists(p_addon.get_base_dir())) {
- _remove_plugin_from_enabled(p_addon);
- WARN_PRINT("Addon '" + p_addon + "' failed to load. No directory found. Removing from enabled plugins.");
+ if (!DirAccess::exists(addon_path.get_base_dir())) {
+ _remove_plugin_from_enabled(addon_path);
+ WARN_PRINT("Addon '" + addon_path + "' failed to load. No directory found. Removing from enabled plugins.");
return;
}
- Error err = cf->load(p_addon);
+ Error err = cf->load(addon_path);
if (err != OK) {
- show_warning(vformat(TTR("Unable to enable addon plugin at: '%s' parsing of config failed."), p_addon));
+ show_warning(vformat(TTR("Unable to enable addon plugin at: '%s' parsing of config failed."), addon_path));
return;
}
if (!cf->has_section_key("plugin", "script")) {
- show_warning(vformat(TTR("Unable to find script field for addon plugin at: '%s'."), p_addon));
+ show_warning(vformat(TTR("Unable to find script field for addon plugin at: '%s'."), addon_path));
return;
}
@@ -3341,7 +3360,7 @@ void EditorNode::set_addon_plugin_enabled(const String &p_addon, bool p_enabled,
// Only try to load the script if it has a name. Else, the plugin has no init script.
if (script_path.length() > 0) {
- script_path = p_addon.get_base_dir().plus_file(script_path);
+ script_path = addon_path.get_base_dir().plus_file(script_path);
script = ResourceLoader::load(script_path);
if (script.is_null()) {
@@ -3351,8 +3370,8 @@ void EditorNode::set_addon_plugin_enabled(const String &p_addon, bool p_enabled,
// Errors in the script cause the base_type to be an empty StringName.
if (script->get_instance_base_type() == StringName()) {
- show_warning(vformat(TTR("Unable to load addon script from path: '%s'. This might be due to a code error in that script.\nDisabling the addon at '%s' to prevent further errors."), script_path, p_addon));
- _remove_plugin_from_enabled(p_addon);
+ show_warning(vformat(TTR("Unable to load addon script from path: '%s'. This might be due to a code error in that script.\nDisabling the addon at '%s' to prevent further errors."), script_path, addon_path));
+ _remove_plugin_from_enabled(addon_path);
return;
}
@@ -3370,14 +3389,18 @@ void EditorNode::set_addon_plugin_enabled(const String &p_addon, bool p_enabled,
EditorPlugin *ep = memnew(EditorPlugin);
ep->set_script(script);
- addon_name_to_plugin[p_addon] = ep;
+ addon_name_to_plugin[addon_path] = ep;
add_editor_plugin(ep, p_config_changed);
_update_addon_config();
}
bool EditorNode::is_addon_plugin_enabled(const String &p_addon) const {
- return addon_name_to_plugin.has(p_addon);
+ if (p_addon.begins_with("res://")) {
+ return addon_name_to_plugin.has(p_addon);
+ }
+
+ return addon_name_to_plugin.has("res://addons/" + p_addon + "/plugin.cfg");
}
void EditorNode::_remove_edited_scene(bool p_change_tab) {
@@ -4870,7 +4893,7 @@ bool EditorNode::has_scenes_in_session() {
bool EditorNode::ensure_main_scene(bool p_from_native) {
pick_main_scene->set_meta("from_native", p_from_native); // Whether from play button or native run.
- String main_scene = GLOBAL_DEF("application/run/main_scene", "");
+ String main_scene = GLOBAL_DEF_BASIC("application/run/main_scene", "");
if (main_scene.is_empty()) {
current_menu_option = -1;
@@ -4936,12 +4959,20 @@ bool EditorNode::is_run_playing() const {
String EditorNode::get_run_playing_scene() const {
String run_filename = editor_run.get_running_scene();
if (run_filename.is_empty() && is_run_playing()) {
- run_filename = GLOBAL_DEF("application/run/main_scene", ""); // Must be the main scene then.
+ run_filename = GLOBAL_DEF_BASIC("application/run/main_scene", ""); // Must be the main scene then.
}
return run_filename;
}
+void EditorNode::_update_write_movie_icon() {
+ if (write_movie_button->is_pressed()) {
+ write_movie_button->set_icon(gui_base->get_theme_icon(SNAME("MainMovieWriteEnabled"), SNAME("EditorIcons")));
+ } else {
+ write_movie_button->set_icon(gui_base->get_theme_icon(SNAME("MainMovieWrite"), SNAME("EditorIcons")));
+ }
+}
+
void EditorNode::_immediate_dialog_confirmed() {
immediate_dialog_confirmed = true;
}
@@ -6109,8 +6140,8 @@ EditorNode::EditorNode() {
EDITOR_DEF("interface/inspector/resources_to_open_in_new_inspector", "Script,MeshLibrary");
EDITOR_DEF("interface/inspector/default_color_picker_mode", 0);
EditorSettings::get_singleton()->add_property_hint(PropertyInfo(Variant::INT, "interface/inspector/default_color_picker_mode", PROPERTY_HINT_ENUM, "RGB,HSV,RAW", PROPERTY_USAGE_DEFAULT));
- EDITOR_DEF("interface/inspector/default_color_picker_shape", (int32_t)ColorPicker::SHAPE_VHS_CIRCLE);
- EditorSettings::get_singleton()->add_property_hint(PropertyInfo(Variant::INT, "interface/inspector/default_color_picker_shape", PROPERTY_HINT_ENUM, "HSV Rectangle,HSV Rectangle Wheel,VHS Circle", PROPERTY_USAGE_DEFAULT));
+ EDITOR_DEF("interface/inspector/default_color_picker_shape", (int32_t)ColorPicker::SHAPE_OKHSL_CIRCLE);
+ EditorSettings::get_singleton()->add_property_hint(PropertyInfo(Variant::INT, "interface/inspector/default_color_picker_shape", PROPERTY_HINT_ENUM, "HSV Rectangle,HSV Rectangle Wheel,VHS Circle,OKHSL Circle", PROPERTY_USAGE_DEFAULT));
ED_SHORTCUT("canvas_item_editor/pan_view", TTR("Pan View"), Key::SPACE);
@@ -6697,6 +6728,23 @@ EditorNode::EditorNode() {
ED_SHORTCUT_OVERRIDE("editor/play_custom_scene", "macos", KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::R);
play_custom_scene_button->set_shortcut(ED_GET_SHORTCUT("editor/play_custom_scene"));
+ write_movie_button = memnew(Button);
+ write_movie_button->set_flat(true);
+ write_movie_button->set_toggle_mode(true);
+ play_hb->add_child(write_movie_button);
+ write_movie_button->set_pressed(false);
+ write_movie_button->set_icon(gui_base->get_theme_icon(SNAME("MainMovieWrite"), SNAME("EditorIcons")));
+ write_movie_button->set_focus_mode(Control::FOCUS_NONE);
+ write_movie_button->connect("pressed", callable_mp(this, &EditorNode::_menu_option), make_binds(RUN_WRITE_MOVIE));
+ write_movie_button->set_tooltip(TTR("Enable Movie Maker mode.\nThe project will run at stable FPS and the visual and audio output will be recorded to a video file."));
+ // Restore these values to something more useful so it ignores the theme
+ write_movie_button->add_theme_color_override("icon_normal_color", Color(1, 1, 1, 0.4));
+ write_movie_button->add_theme_color_override("icon_pressed_color", Color(1, 1, 1, 1));
+ write_movie_button->add_theme_color_override("icon_hover_color", Color(1.2, 1.2, 1.2, 0.4));
+ write_movie_button->add_theme_color_override("icon_hover_pressed_color", Color(1.2, 1.2, 1.2, 1));
+ write_movie_button->add_theme_color_override("icon_focus_color", Color(1, 1, 1, 1));
+ write_movie_button->add_theme_color_override("icon_disabled_color", Color(1, 1, 1, 0.4));
+
HBoxContainer *right_menu_hb = memnew(HBoxContainer);
menu_hb->add_child(right_menu_hb);
@@ -7047,7 +7095,6 @@ EditorNode::EditorNode() {
add_editor_plugin(VersionControlEditorPlugin::get_singleton());
add_editor_plugin(memnew(ShaderEditorPlugin));
add_editor_plugin(memnew(ShaderFileEditorPlugin));
- add_editor_plugin(memnew(VisualShaderEditorPlugin));
add_editor_plugin(memnew(Camera3DEditorPlugin));
add_editor_plugin(memnew(ThemeEditorPlugin));
diff --git a/editor/editor_node.h b/editor/editor_node.h
index 48df767562..89f80baeb9 100644
--- a/editor/editor_node.h
+++ b/editor/editor_node.h
@@ -173,6 +173,7 @@ private:
RUN_PLAY_CUSTOM_SCENE,
RUN_SETTINGS,
RUN_USER_DATA_FOLDER,
+ RUN_WRITE_MOVIE,
RELOAD_CURRENT_PROJECT,
RUN_PROJECT_MANAGER,
RUN_VCS_METADATA,
@@ -333,6 +334,7 @@ private:
Button *play_scene_button = nullptr;
Button *play_custom_scene_button = nullptr;
Button *search_button = nullptr;
+ Button *write_movie_button = nullptr;
TextureProgressBar *audio_vu = nullptr;
Timer *screenshot_timer = nullptr;
@@ -667,7 +669,7 @@ private:
void _pick_main_scene_custom_action(const String &p_custom_action_name);
void _immediate_dialog_confirmed();
-
+ void _update_write_movie_icon();
void _select_default_main_screen_plugin();
void _bottom_panel_switch(bool p_enable, int p_idx);
diff --git a/editor/editor_path.cpp b/editor/editor_path.cpp
index 8747128962..6453db3b0b 100644
--- a/editor/editor_path.cpp
+++ b/editor/editor_path.cpp
@@ -72,7 +72,7 @@ void EditorPath::_add_children_to_popup(Object *p_obj, int p_depth) {
int index = sub_objects_menu->get_item_count();
sub_objects_menu->add_icon_item(icon, proper_name, objects.size());
- sub_objects_menu->set_item_h_offset(index, p_depth * 10 * EDSCALE);
+ sub_objects_menu->set_item_horizontal_offset(index, p_depth * 10 * EDSCALE);
objects.push_back(obj->get_instance_id());
_add_children_to_popup(obj, p_depth + 1);
diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp
index 196fba6e9b..61b434a240 100644
--- a/editor/editor_properties.cpp
+++ b/editor/editor_properties.cpp
@@ -173,6 +173,7 @@ void EditorPropertyMultilineText::_bind_methods() {
EditorPropertyMultilineText::EditorPropertyMultilineText() {
HBoxContainer *hb = memnew(HBoxContainer);
+ hb->add_theme_constant_override("separation", 0);
add_child(hb);
set_bottom_editor(hb);
text = memnew(TextEdit);
@@ -733,14 +734,12 @@ void EditorPropertyFlags::_set_read_only(bool p_read_only) {
}
};
-void EditorPropertyFlags::_flag_toggled() {
- uint32_t value = 0;
- for (int i = 0; i < flags.size(); i++) {
- if (flags[i]->is_pressed()) {
- uint32_t val = 1;
- val <<= flag_indices[i];
- value |= val;
- }
+void EditorPropertyFlags::_flag_toggled(int p_index) {
+ uint32_t value = get_edited_object()->get(get_edited_property());
+ if (flags[p_index]->is_pressed()) {
+ value |= flag_values[p_index];
+ } else {
+ value &= ~flag_values[p_index];
}
emit_changed(get_edited_property(), value);
@@ -750,13 +749,7 @@ void EditorPropertyFlags::update_property() {
uint32_t value = get_edited_object()->get(get_edited_property());
for (int i = 0; i < flags.size(); i++) {
- uint32_t val = 1;
- val <<= flag_indices[i];
- if (value & val) {
- flags[i]->set_pressed(true);
- } else {
- flags[i]->set_pressed(false);
- }
+ flags[i]->set_pressed((value & flag_values[i]) == flag_values[i]);
}
}
@@ -764,17 +757,24 @@ void EditorPropertyFlags::setup(const Vector<String> &p_options) {
ERR_FAIL_COND(flags.size());
bool first = true;
+ uint32_t current_val;
for (int i = 0; i < p_options.size(); i++) {
String option = p_options[i].strip_edges();
if (!option.is_empty()) {
CheckBox *cb = memnew(CheckBox);
cb->set_text(option);
cb->set_clip_text(true);
- cb->connect("pressed", callable_mp(this, &EditorPropertyFlags::_flag_toggled));
+ cb->connect("pressed", callable_mp(this, &EditorPropertyFlags::_flag_toggled), varray(i));
add_focusable(cb);
vbox->add_child(cb);
flags.push_back(cb);
- flag_indices.push_back(i);
+ Vector<String> text_split = p_options[i].split(":");
+ if (text_split.size() != 1) {
+ current_val = text_split[1].to_int();
+ } else {
+ current_val = 1 << i;
+ }
+ flag_values.push_back(current_val);
if (first) {
set_label_reference(cb);
first = false;
@@ -1259,12 +1259,13 @@ void EditorPropertyInteger::update_property() {
void EditorPropertyInteger::_bind_methods() {
}
-void EditorPropertyInteger::setup(int64_t p_min, int64_t p_max, int64_t p_step, bool p_allow_greater, bool p_allow_lesser) {
+void EditorPropertyInteger::setup(int64_t p_min, int64_t p_max, int64_t p_step, bool p_allow_greater, bool p_allow_lesser, const String &p_suffix) {
spin->set_min(p_min);
spin->set_max(p_max);
spin->set_step(p_step);
spin->set_allow_greater(p_allow_greater);
spin->set_allow_lesser(p_allow_lesser);
+ spin->set_suffix(p_suffix);
}
EditorPropertyInteger::EditorPropertyInteger() {
@@ -1596,6 +1597,18 @@ void EditorPropertyVector2::_value_changed(double val, const String &p_name) {
return;
}
+ if (linked->is_pressed()) {
+ setting = true;
+ if (p_name == "x") {
+ spin[1]->set_value(spin[0]->get_value() * ratio_yx);
+ }
+
+ if (p_name == "y") {
+ spin[0]->set_value(spin[1]->get_value() * ratio_xy);
+ }
+ setting = false;
+ }
+
Vector2 v2;
v2.x = spin[0]->get_value();
v2.y = spin[1]->get_value();
@@ -1608,12 +1621,28 @@ void EditorPropertyVector2::update_property() {
spin[0]->set_value(val.x);
spin[1]->set_value(val.y);
setting = false;
+ _update_ratio();
+}
+
+void EditorPropertyVector2::_update_ratio() {
+ linked->set_modulate(Color(1, 1, 1, linked->is_pressed() ? 1.0 : 0.5));
+
+ if (spin[0]->get_value() != 0 && spin[1]->get_value() != 0) {
+ ratio_xy = spin[0]->get_value() / spin[1]->get_value();
+ ratio_yx = spin[1]->get_value() / spin[0]->get_value();
+ } else {
+ ratio_xy = 1.0;
+ ratio_yx = 1.0;
+ }
}
void EditorPropertyVector2::_notification(int p_what) {
switch (p_what) {
case NOTIFICATION_ENTER_TREE:
case NOTIFICATION_THEME_CHANGED: {
+ linked->set_normal_texture(get_theme_icon(SNAME("Unlinked"), SNAME("EditorIcons")));
+ linked->set_pressed_texture(get_theme_icon(SNAME("Instance"), SNAME("EditorIcons")));
+
const Color *colors = _get_property_colors();
for (int i = 0; i < 2; i++) {
spin[i]->add_theme_color_override("label_color", colors[i]);
@@ -1622,10 +1651,7 @@ void EditorPropertyVector2::_notification(int p_what) {
}
}
-void EditorPropertyVector2::_bind_methods() {
-}
-
-void EditorPropertyVector2::setup(double p_min, double p_max, double p_step, bool p_no_slider, const String &p_suffix) {
+void EditorPropertyVector2::setup(double p_min, double p_max, double p_step, bool p_no_slider, bool p_link, const String &p_suffix) {
for (int i = 0; i < 2; i++) {
spin[i]->set_min(p_min);
spin[i]->set_max(p_max);
@@ -1635,24 +1661,34 @@ void EditorPropertyVector2::setup(double p_min, double p_max, double p_step, boo
spin[i]->set_allow_lesser(true);
spin[i]->set_suffix(p_suffix);
}
+
+ if (!p_link) {
+ linked->hide();
+ } else {
+ linked->set_pressed(true);
+ }
}
EditorPropertyVector2::EditorPropertyVector2(bool p_force_wide) {
bool horizontal = p_force_wide || bool(EDITOR_GET("interface/inspector/horizontal_vector2_editing"));
+ HBoxContainer *hb = memnew(HBoxContainer);
+ hb->set_h_size_flags(SIZE_EXPAND_FILL);
+
BoxContainer *bc;
if (p_force_wide) {
bc = memnew(HBoxContainer);
- add_child(bc);
+ hb->add_child(bc);
} else if (horizontal) {
bc = memnew(HBoxContainer);
- add_child(bc);
- set_bottom_editor(bc);
+ hb->add_child(bc);
+ set_bottom_editor(hb);
} else {
bc = memnew(VBoxContainer);
- add_child(bc);
+ hb->add_child(bc);
}
+ bc->set_h_size_flags(SIZE_EXPAND_FILL);
static const char *desc[2] = { "x", "y" };
for (int i = 0; i < 2; i++) {
@@ -1667,6 +1703,13 @@ EditorPropertyVector2::EditorPropertyVector2(bool p_force_wide) {
}
}
+ linked = memnew(TextureButton);
+ linked->set_toggle_mode(true);
+ linked->set_stretch_mode(TextureButton::STRETCH_KEEP_CENTERED);
+ linked->connect(SNAME("pressed"), callable_mp(this, &EditorPropertyVector2::_update_ratio));
+ hb->add_child(linked);
+
+ add_child(hb);
if (!horizontal) {
set_label_reference(spin[0]); //show text and buttons around this
}
@@ -1788,6 +1831,25 @@ void EditorPropertyVector3::_value_changed(double val, const String &p_name) {
return;
}
+ if (linked->is_pressed()) {
+ setting = true;
+ if (p_name == "x") {
+ spin[1]->set_value(spin[0]->get_value() * ratio_yx);
+ spin[2]->set_value(spin[0]->get_value() * ratio_zx);
+ }
+
+ if (p_name == "y") {
+ spin[0]->set_value(spin[1]->get_value() * ratio_xy);
+ spin[2]->set_value(spin[1]->get_value() * ratio_zy);
+ }
+
+ if (p_name == "z") {
+ spin[0]->set_value(spin[2]->get_value() * ratio_xz);
+ spin[1]->set_value(spin[2]->get_value() * ratio_yz);
+ }
+ setting = false;
+ }
+
Vector3 v3;
v3.x = spin[0]->get_value();
v3.y = spin[1]->get_value();
@@ -1802,6 +1864,27 @@ void EditorPropertyVector3::_value_changed(double val, const String &p_name) {
void EditorPropertyVector3::update_property() {
update_using_vector(get_edited_object()->get(get_edited_property()));
+ _update_ratio();
+}
+
+void EditorPropertyVector3::_update_ratio() {
+ linked->set_modulate(Color(1, 1, 1, linked->is_pressed() ? 1.0 : 0.5));
+
+ if (spin[0]->get_value() != 0 && spin[1]->get_value() != 0) {
+ ratio_yx = spin[1]->get_value() / spin[0]->get_value();
+ ratio_zx = spin[2]->get_value() / spin[0]->get_value();
+ ratio_xy = spin[0]->get_value() / spin[1]->get_value();
+ ratio_zy = spin[2]->get_value() / spin[1]->get_value();
+ ratio_xz = spin[0]->get_value() / spin[2]->get_value();
+ ratio_yz = spin[1]->get_value() / spin[2]->get_value();
+ } else {
+ ratio_yx = 1.0;
+ ratio_zx = 1.0;
+ ratio_xy = 1.0;
+ ratio_zy = 1.0;
+ ratio_xz = 1.0;
+ ratio_yz = 1.0;
+ }
}
void EditorPropertyVector3::update_using_vector(Vector3 p_vector) {
@@ -1835,6 +1918,9 @@ void EditorPropertyVector3::_notification(int p_what) {
switch (p_what) {
case NOTIFICATION_ENTER_TREE:
case NOTIFICATION_THEME_CHANGED: {
+ linked->set_normal_texture(get_theme_icon(SNAME("Unlinked"), SNAME("EditorIcons")));
+ linked->set_pressed_texture(get_theme_icon(SNAME("Instance"), SNAME("EditorIcons")));
+
const Color *colors = _get_property_colors();
for (int i = 0; i < 3; i++) {
spin[i]->add_theme_color_override("label_color", colors[i]);
@@ -1846,7 +1932,7 @@ void EditorPropertyVector3::_notification(int p_what) {
void EditorPropertyVector3::_bind_methods() {
}
-void EditorPropertyVector3::setup(double p_min, double p_max, double p_step, bool p_no_slider, const String &p_suffix, bool p_angle_in_radians) {
+void EditorPropertyVector3::setup(double p_min, double p_max, double p_step, bool p_no_slider, bool p_link, const String &p_suffix, bool p_angle_in_radians) {
angle_in_radians = p_angle_in_radians;
for (int i = 0; i < 3; i++) {
spin[i]->set_min(p_min);
@@ -1857,24 +1943,34 @@ void EditorPropertyVector3::setup(double p_min, double p_max, double p_step, boo
spin[i]->set_allow_lesser(true);
spin[i]->set_suffix(p_suffix);
}
+
+ if (!p_link) {
+ linked->hide();
+ } else {
+ linked->set_pressed(true);
+ }
}
EditorPropertyVector3::EditorPropertyVector3(bool p_force_wide) {
bool horizontal = p_force_wide || bool(EDITOR_GET("interface/inspector/horizontal_vector_types_editing"));
+ HBoxContainer *hb = memnew(HBoxContainer);
+ hb->set_h_size_flags(SIZE_EXPAND_FILL);
+
BoxContainer *bc;
if (p_force_wide) {
bc = memnew(HBoxContainer);
- add_child(bc);
+ hb->add_child(bc);
} else if (horizontal) {
bc = memnew(HBoxContainer);
- add_child(bc);
- set_bottom_editor(bc);
+ hb->add_child(bc);
+ set_bottom_editor(hb);
} else {
bc = memnew(VBoxContainer);
- add_child(bc);
+ hb->add_child(bc);
}
+ bc->set_h_size_flags(SIZE_EXPAND_FILL);
static const char *desc[3] = { "x", "y", "z" };
for (int i = 0; i < 3; i++) {
@@ -1889,6 +1985,13 @@ EditorPropertyVector3::EditorPropertyVector3(bool p_force_wide) {
}
}
+ linked = memnew(TextureButton);
+ linked->set_toggle_mode(true);
+ linked->set_stretch_mode(TextureButton::STRETCH_KEEP_CENTERED);
+ linked->connect(SNAME("pressed"), callable_mp(this, &EditorPropertyVector3::_update_ratio));
+ hb->add_child(linked);
+
+ add_child(hb);
if (!horizontal) {
set_label_reference(spin[0]); //show text and buttons around this
}
@@ -1907,6 +2010,18 @@ void EditorPropertyVector2i::_value_changed(double val, const String &p_name) {
return;
}
+ if (linked->is_pressed()) {
+ setting = true;
+ if (p_name == "x") {
+ spin[1]->set_value(spin[0]->get_value() * ratio_yx);
+ }
+
+ if (p_name == "y") {
+ spin[0]->set_value(spin[1]->get_value() * ratio_xy);
+ }
+ setting = false;
+ }
+
Vector2i v2;
v2.x = spin[0]->get_value();
v2.y = spin[1]->get_value();
@@ -1919,12 +2034,28 @@ void EditorPropertyVector2i::update_property() {
spin[0]->set_value(val.x);
spin[1]->set_value(val.y);
setting = false;
+ _update_ratio();
+}
+
+void EditorPropertyVector2i::_update_ratio() {
+ linked->set_modulate(Color(1, 1, 1, linked->is_pressed() ? 1.0 : 0.5));
+
+ if (spin[0]->get_value() != 0 && spin[1]->get_value() != 0) {
+ ratio_xy = spin[0]->get_value() / spin[1]->get_value();
+ ratio_yx = spin[1]->get_value() / spin[0]->get_value();
+ } else {
+ ratio_xy = 1.0;
+ ratio_yx = 1.0;
+ }
}
void EditorPropertyVector2i::_notification(int p_what) {
switch (p_what) {
case NOTIFICATION_ENTER_TREE:
case NOTIFICATION_THEME_CHANGED: {
+ linked->set_normal_texture(get_theme_icon(SNAME("Unlinked"), SNAME("EditorIcons")));
+ linked->set_pressed_texture(get_theme_icon(SNAME("Instance"), SNAME("EditorIcons")));
+
const Color *colors = _get_property_colors();
for (int i = 0; i < 2; i++) {
spin[i]->add_theme_color_override("label_color", colors[i]);
@@ -1933,10 +2064,7 @@ void EditorPropertyVector2i::_notification(int p_what) {
}
}
-void EditorPropertyVector2i::_bind_methods() {
-}
-
-void EditorPropertyVector2i::setup(int p_min, int p_max, bool p_no_slider, const String &p_suffix) {
+void EditorPropertyVector2i::setup(int p_min, int p_max, bool p_no_slider, bool p_link, const String &p_suffix) {
for (int i = 0; i < 2; i++) {
spin[i]->set_min(p_min);
spin[i]->set_max(p_max);
@@ -1946,24 +2074,34 @@ void EditorPropertyVector2i::setup(int p_min, int p_max, bool p_no_slider, const
spin[i]->set_allow_lesser(true);
spin[i]->set_suffix(p_suffix);
}
+
+ if (!p_link) {
+ linked->hide();
+ } else {
+ linked->set_pressed(true);
+ }
}
EditorPropertyVector2i::EditorPropertyVector2i(bool p_force_wide) {
bool horizontal = p_force_wide || bool(EDITOR_GET("interface/inspector/horizontal_vector2_editing"));
+ HBoxContainer *hb = memnew(HBoxContainer);
+ hb->set_h_size_flags(SIZE_EXPAND_FILL);
+
BoxContainer *bc;
if (p_force_wide) {
bc = memnew(HBoxContainer);
- add_child(bc);
+ hb->add_child(bc);
} else if (horizontal) {
bc = memnew(HBoxContainer);
- add_child(bc);
- set_bottom_editor(bc);
+ hb->add_child(bc);
+ set_bottom_editor(hb);
} else {
bc = memnew(VBoxContainer);
- add_child(bc);
+ hb->add_child(bc);
}
+ bc->set_h_size_flags(SIZE_EXPAND_FILL);
static const char *desc[2] = { "x", "y" };
for (int i = 0; i < 2; i++) {
@@ -1978,6 +2116,13 @@ EditorPropertyVector2i::EditorPropertyVector2i(bool p_force_wide) {
}
}
+ linked = memnew(TextureButton);
+ linked->set_toggle_mode(true);
+ linked->set_stretch_mode(TextureButton::STRETCH_KEEP_CENTERED);
+ linked->connect(SNAME("pressed"), callable_mp(this, &EditorPropertyVector2i::_update_ratio));
+ hb->add_child(linked);
+
+ add_child(hb);
if (!horizontal) {
set_label_reference(spin[0]); //show text and buttons around this
}
@@ -2099,6 +2244,25 @@ void EditorPropertyVector3i::_value_changed(double val, const String &p_name) {
return;
}
+ if (linked->is_pressed()) {
+ setting = true;
+ if (p_name == "x") {
+ spin[1]->set_value(spin[0]->get_value() * ratio_yx);
+ spin[2]->set_value(spin[0]->get_value() * ratio_zx);
+ }
+
+ if (p_name == "y") {
+ spin[0]->set_value(spin[1]->get_value() * ratio_xy);
+ spin[2]->set_value(spin[1]->get_value() * ratio_zy);
+ }
+
+ if (p_name == "z") {
+ spin[0]->set_value(spin[2]->get_value() * ratio_xz);
+ spin[1]->set_value(spin[2]->get_value() * ratio_yz);
+ }
+ setting = false;
+ }
+
Vector3i v3;
v3.x = spin[0]->get_value();
v3.y = spin[1]->get_value();
@@ -2113,12 +2277,36 @@ void EditorPropertyVector3i::update_property() {
spin[1]->set_value(val.y);
spin[2]->set_value(val.z);
setting = false;
+ _update_ratio();
+}
+
+void EditorPropertyVector3i::_update_ratio() {
+ linked->set_modulate(Color(1, 1, 1, linked->is_pressed() ? 1.0 : 0.5));
+
+ if (spin[0]->get_value() != 0 && spin[1]->get_value() != 0) {
+ ratio_yx = spin[1]->get_value() / spin[0]->get_value();
+ ratio_zx = spin[2]->get_value() / spin[0]->get_value();
+ ratio_xy = spin[0]->get_value() / spin[1]->get_value();
+ ratio_zy = spin[2]->get_value() / spin[1]->get_value();
+ ratio_xz = spin[0]->get_value() / spin[2]->get_value();
+ ratio_yz = spin[1]->get_value() / spin[2]->get_value();
+ } else {
+ ratio_yx = 1.0;
+ ratio_zx = 1.0;
+ ratio_xy = 1.0;
+ ratio_zy = 1.0;
+ ratio_xz = 1.0;
+ ratio_yz = 1.0;
+ }
}
void EditorPropertyVector3i::_notification(int p_what) {
switch (p_what) {
case NOTIFICATION_ENTER_TREE:
case NOTIFICATION_THEME_CHANGED: {
+ linked->set_normal_texture(get_theme_icon(SNAME("Unlinked"), SNAME("EditorIcons")));
+ linked->set_pressed_texture(get_theme_icon(SNAME("Instance"), SNAME("EditorIcons")));
+
const Color *colors = _get_property_colors();
for (int i = 0; i < 3; i++) {
spin[i]->add_theme_color_override("label_color", colors[i]);
@@ -2130,7 +2318,7 @@ void EditorPropertyVector3i::_notification(int p_what) {
void EditorPropertyVector3i::_bind_methods() {
}
-void EditorPropertyVector3i::setup(int p_min, int p_max, bool p_no_slider, const String &p_suffix) {
+void EditorPropertyVector3i::setup(int p_min, int p_max, bool p_no_slider, bool p_link, const String &p_suffix) {
for (int i = 0; i < 3; i++) {
spin[i]->set_min(p_min);
spin[i]->set_max(p_max);
@@ -2140,22 +2328,31 @@ void EditorPropertyVector3i::setup(int p_min, int p_max, bool p_no_slider, const
spin[i]->set_allow_lesser(true);
spin[i]->set_suffix(p_suffix);
}
+
+ if (!p_link) {
+ linked->hide();
+ } else {
+ linked->set_pressed(true);
+ }
}
EditorPropertyVector3i::EditorPropertyVector3i(bool p_force_wide) {
bool horizontal = p_force_wide || bool(EDITOR_GET("interface/inspector/horizontal_vector_types_editing"));
+ HBoxContainer *hb = memnew(HBoxContainer);
+ hb->set_h_size_flags(SIZE_EXPAND_FILL);
+
BoxContainer *bc;
if (p_force_wide) {
bc = memnew(HBoxContainer);
- add_child(bc);
+ hb->add_child(bc);
} else if (horizontal) {
bc = memnew(HBoxContainer);
- add_child(bc);
- set_bottom_editor(bc);
+ hb->add_child(bc);
+ set_bottom_editor(hb);
} else {
bc = memnew(VBoxContainer);
- add_child(bc);
+ hb->add_child(bc);
}
static const char *desc[3] = { "x", "y", "z" };
@@ -2170,7 +2367,15 @@ EditorPropertyVector3i::EditorPropertyVector3i(bool p_force_wide) {
spin[i]->set_h_size_flags(SIZE_EXPAND_FILL);
}
}
+ bc->set_h_size_flags(SIZE_EXPAND_FILL);
+
+ linked = memnew(TextureButton);
+ linked->set_toggle_mode(true);
+ linked->set_stretch_mode(TextureButton::STRETCH_KEEP_CENTERED);
+ linked->connect(SNAME("pressed"), callable_mp(this, &EditorPropertyVector3i::_update_ratio));
+ hb->add_child(linked);
+ add_child(hb);
if (!horizontal) {
set_label_reference(spin[0]); //show text and buttons around this
}
@@ -2949,6 +3154,7 @@ void EditorPropertyNodePath::_bind_methods() {
EditorPropertyNodePath::EditorPropertyNodePath() {
HBoxContainer *hbc = memnew(HBoxContainer);
+ hbc->add_theme_constant_override("separation", 0);
add_child(hbc);
assign = memnew(Button);
assign->set_flat(true);
@@ -3135,17 +3341,15 @@ void EditorPropertyResource::_update_property_bg() {
count_subinspectors = MIN(15, count_subinspectors);
add_theme_color_override("property_color", get_theme_color(SNAME("sub_inspector_property_color"), SNAME("Editor")));
- add_theme_style_override("bg_selected", get_theme_stylebox("sub_inspector_property_bg_selected" + itos(count_subinspectors), SNAME("Editor")));
+ add_theme_style_override("bg_selected", get_theme_stylebox("sub_inspector_property_bg" + itos(count_subinspectors), SNAME("Editor")));
add_theme_style_override("bg", get_theme_stylebox("sub_inspector_property_bg" + itos(count_subinspectors), SNAME("Editor")));
- add_theme_constant_override("font_offset", get_theme_constant(SNAME("sub_inspector_font_offset"), SNAME("Editor")));
add_theme_constant_override("v_separation", 0);
} else {
add_theme_color_override("property_color", get_theme_color(SNAME("property_color"), SNAME("EditorProperty")));
add_theme_style_override("bg_selected", get_theme_stylebox(SNAME("bg_selected"), SNAME("EditorProperty")));
add_theme_style_override("bg", get_theme_stylebox(SNAME("bg"), SNAME("EditorProperty")));
add_theme_constant_override("v_separation", get_theme_constant(SNAME("v_separation"), SNAME("EditorProperty")));
- add_theme_constant_override("font_offset", get_theme_constant(SNAME("font_offset"), SNAME("EditorProperty")));
}
updating_theme = false;
@@ -3493,7 +3697,7 @@ EditorProperty *EditorInspectorDefaultPlugin::get_editor_for_property(Object *p_
EditorPropertyInteger *editor = memnew(EditorPropertyInteger);
EditorPropertyRangeHint hint = _parse_range_hint(p_hint, p_hint_text, 1);
- editor->setup(hint.min, hint.max, hint.step, hint.greater, hint.lesser);
+ editor->setup(hint.min, hint.max, hint.step, hint.greater, hint.lesser, hint.suffix);
return editor;
}
@@ -3543,11 +3747,11 @@ EditorProperty *EditorInspectorDefaultPlugin::get_editor_for_property(Object *p_
EditorPropertyLocale *editor = memnew(EditorPropertyLocale);
editor->setup(p_hint_text);
return editor;
- } else if (p_hint == PROPERTY_HINT_DIR || p_hint == PROPERTY_HINT_FILE || p_hint == PROPERTY_HINT_SAVE_FILE || p_hint == PROPERTY_HINT_GLOBAL_DIR || p_hint == PROPERTY_HINT_GLOBAL_FILE) {
+ } else if (p_hint == PROPERTY_HINT_DIR || p_hint == PROPERTY_HINT_FILE || p_hint == PROPERTY_HINT_SAVE_FILE || p_hint == PROPERTY_HINT_GLOBAL_SAVE_FILE || p_hint == PROPERTY_HINT_GLOBAL_DIR || p_hint == PROPERTY_HINT_GLOBAL_FILE) {
Vector<String> extensions = p_hint_text.split(",");
- bool global = p_hint == PROPERTY_HINT_GLOBAL_DIR || p_hint == PROPERTY_HINT_GLOBAL_FILE;
+ bool global = p_hint == PROPERTY_HINT_GLOBAL_DIR || p_hint == PROPERTY_HINT_GLOBAL_FILE || p_hint == PROPERTY_HINT_GLOBAL_SAVE_FILE;
bool folder = p_hint == PROPERTY_HINT_DIR || p_hint == PROPERTY_HINT_GLOBAL_DIR;
- bool save = p_hint == PROPERTY_HINT_SAVE_FILE;
+ bool save = p_hint == PROPERTY_HINT_SAVE_FILE || p_hint == PROPERTY_HINT_GLOBAL_SAVE_FILE;
EditorPropertyPath *editor = memnew(EditorPropertyPath);
editor->setup(extensions, folder, global);
if (save) {
@@ -3608,14 +3812,14 @@ EditorProperty *EditorInspectorDefaultPlugin::get_editor_for_property(Object *p_
EditorPropertyVector2 *editor = memnew(EditorPropertyVector2(p_wide));
EditorPropertyRangeHint hint = _parse_range_hint(p_hint, p_hint_text, default_float_step);
- editor->setup(hint.min, hint.max, hint.step, hint.hide_slider, hint.suffix);
+ editor->setup(hint.min, hint.max, hint.step, hint.hide_slider, p_hint == PROPERTY_HINT_LINK, hint.suffix);
return editor;
} break;
case Variant::VECTOR2I: {
EditorPropertyVector2i *editor = memnew(EditorPropertyVector2i(p_wide));
EditorPropertyRangeHint hint = _parse_range_hint(p_hint, p_hint_text, 1);
- editor->setup(hint.min, hint.max, hint.hide_slider, hint.suffix);
+ editor->setup(hint.min, hint.max, hint.hide_slider, p_hint == PROPERTY_HINT_LINK, hint.suffix);
return editor;
} break;
@@ -3635,14 +3839,14 @@ EditorProperty *EditorInspectorDefaultPlugin::get_editor_for_property(Object *p_
case Variant::VECTOR3: {
EditorPropertyVector3 *editor = memnew(EditorPropertyVector3(p_wide));
EditorPropertyRangeHint hint = _parse_range_hint(p_hint, p_hint_text, default_float_step);
- editor->setup(hint.min, hint.max, hint.step, hint.hide_slider, hint.suffix, hint.radians);
+ editor->setup(hint.min, hint.max, hint.step, hint.hide_slider, p_hint == PROPERTY_HINT_LINK, hint.suffix, hint.radians);
return editor;
} break;
case Variant::VECTOR3I: {
EditorPropertyVector3i *editor = memnew(EditorPropertyVector3i(p_wide));
EditorPropertyRangeHint hint = _parse_range_hint(p_hint, p_hint_text, 1);
- editor->setup(hint.min, hint.max, hint.hide_slider, hint.suffix);
+ editor->setup(hint.min, hint.max, hint.hide_slider, p_hint == PROPERTY_HINT_LINK, hint.suffix);
return editor;
} break;
diff --git a/editor/editor_properties.h b/editor/editor_properties.h
index 5ee0ba1a6d..a3b98b7724 100644
--- a/editor/editor_properties.h
+++ b/editor/editor_properties.h
@@ -265,9 +265,9 @@ class EditorPropertyFlags : public EditorProperty {
GDCLASS(EditorPropertyFlags, EditorProperty);
VBoxContainer *vbox = nullptr;
Vector<CheckBox *> flags;
- Vector<int> flag_indices;
+ Vector<uint32_t> flag_values;
- void _flag_toggled();
+ void _flag_toggled(int p_index);
protected:
virtual void _set_read_only(bool p_read_only) override;
@@ -368,7 +368,7 @@ protected:
public:
virtual void update_property() override;
- void setup(int64_t p_min, int64_t p_max, int64_t p_step, bool p_allow_greater, bool p_allow_lesser);
+ void setup(int64_t p_min, int64_t p_max, int64_t p_step, bool p_allow_greater, bool p_allow_lesser, const String &p_suffix = String());
EditorPropertyInteger();
};
@@ -451,16 +451,19 @@ class EditorPropertyVector2 : public EditorProperty {
GDCLASS(EditorPropertyVector2, EditorProperty);
EditorSpinSlider *spin[2];
bool setting = false;
+ double ratio_xy = 1.0;
+ double ratio_yx = 1.0;
+ TextureButton *linked = nullptr;
+ void _update_ratio();
void _value_changed(double p_val, const String &p_name);
protected:
virtual void _set_read_only(bool p_read_only) override;
void _notification(int p_what);
- static void _bind_methods();
public:
virtual void update_property() override;
- void setup(double p_min, double p_max, double p_step, bool p_no_slider, const String &p_suffix = String());
+ void setup(double p_min, double p_max, double p_step, bool p_no_slider, bool p_link = false, const String &p_suffix = String());
EditorPropertyVector2(bool p_force_wide = false);
};
@@ -486,6 +489,14 @@ class EditorPropertyVector3 : public EditorProperty {
EditorSpinSlider *spin[3];
bool setting = false;
bool angle_in_radians = false;
+ double ratio_yx = 1.0;
+ double ratio_zx = 1.0;
+ double ratio_xy = 1.0;
+ double ratio_zy = 1.0;
+ double ratio_xz = 1.0;
+ double ratio_yz = 1.0;
+ TextureButton *linked = nullptr;
+ void _update_ratio();
void _value_changed(double p_val, const String &p_name);
protected:
@@ -497,7 +508,7 @@ public:
virtual void update_property() override;
virtual void update_using_vector(Vector3 p_vector);
virtual Vector3 get_vector();
- void setup(double p_min, double p_max, double p_step, bool p_no_slider, const String &p_suffix = String(), bool p_angle_in_radians = false);
+ void setup(double p_min, double p_max, double p_step, bool p_no_slider, bool p_link = false, const String &p_suffix = String(), bool p_angle_in_radians = false);
EditorPropertyVector3(bool p_force_wide = false);
};
@@ -505,16 +516,19 @@ class EditorPropertyVector2i : public EditorProperty {
GDCLASS(EditorPropertyVector2i, EditorProperty);
EditorSpinSlider *spin[2];
bool setting = false;
+ double ratio_xy = 1.0;
+ double ratio_yx = 1.0;
+ TextureButton *linked = nullptr;
+ void _update_ratio();
void _value_changed(double p_val, const String &p_name);
protected:
virtual void _set_read_only(bool p_read_only) override;
void _notification(int p_what);
- static void _bind_methods();
public:
virtual void update_property() override;
- void setup(int p_min, int p_max, bool p_no_slider, const String &p_suffix = String());
+ void setup(int p_min, int p_max, bool p_no_slider, bool p_link = false, const String &p_suffix = String());
EditorPropertyVector2i(bool p_force_wide = false);
};
@@ -539,6 +553,14 @@ class EditorPropertyVector3i : public EditorProperty {
GDCLASS(EditorPropertyVector3i, EditorProperty);
EditorSpinSlider *spin[3];
bool setting = false;
+ double ratio_yx = 1.0;
+ double ratio_zx = 1.0;
+ double ratio_xy = 1.0;
+ double ratio_zy = 1.0;
+ double ratio_xz = 1.0;
+ double ratio_yz = 1.0;
+ TextureButton *linked = nullptr;
+ void _update_ratio();
void _value_changed(double p_val, const String &p_name);
protected:
@@ -548,7 +570,7 @@ protected:
public:
virtual void update_property() override;
- void setup(int p_min, int p_max, bool p_no_slider, const String &p_suffix = String());
+ void setup(int p_min, int p_max, bool p_no_slider, bool p_link = false, const String &p_suffix = String());
EditorPropertyVector3i(bool p_force_wide = false);
};
diff --git a/editor/editor_properties_array_dict.cpp b/editor/editor_properties_array_dict.cpp
index cdbe2fa1d3..f1a3fe0c57 100644
--- a/editor/editor_properties_array_dict.cpp
+++ b/editor/editor_properties_array_dict.cpp
@@ -217,11 +217,11 @@ void EditorPropertyArray::update_property() {
if (array.get_type() == Variant::NIL) {
edit->set_text(vformat(TTR("(Nil) %s"), array_type_name));
edit->set_pressed(false);
- if (vbox) {
+ if (container) {
set_bottom_editor(nullptr);
- memdelete(vbox);
+ memdelete(container);
button_add_item = nullptr;
- vbox = nullptr;
+ container = nullptr;
}
return;
}
@@ -241,15 +241,19 @@ void EditorPropertyArray::update_property() {
if (unfolded) {
updating = true;
- if (!vbox) {
- vbox = memnew(VBoxContainer);
- add_child(vbox);
- set_bottom_editor(vbox);
+ if (!container) {
+ container = memnew(MarginContainer);
+ container->set_theme_type_variation("MarginContainer4px");
+ add_child(container);
+ set_bottom_editor(container);
+
+ VBoxContainer *vbox = memnew(VBoxContainer);
+ container->add_child(vbox);
HBoxContainer *hbox = memnew(HBoxContainer);
vbox->add_child(hbox);
- Label *label = memnew(Label(TTR("Size: ")));
+ Label *label = memnew(Label(TTR("Size:")));
label->set_h_size_flags(SIZE_EXPAND_FILL);
hbox->add_child(label);
@@ -343,6 +347,7 @@ void EditorPropertyArray::update_property() {
prop->set_object_and_property(object.ptr(), prop_name);
prop->set_label(itos(i + offset));
prop->set_selectable(false);
+ prop->set_use_folding(is_using_folding());
prop->connect("property_changed", callable_mp(this, &EditorPropertyArray::_property_changed));
prop->connect("object_id_selected", callable_mp(this, &EditorPropertyArray::_object_id_selected));
prop->set_h_size_flags(SIZE_EXPAND_FILL);
@@ -372,11 +377,11 @@ void EditorPropertyArray::update_property() {
updating = false;
} else {
- if (vbox) {
+ if (container) {
set_bottom_editor(nullptr);
- memdelete(vbox);
+ memdelete(container);
button_add_item = nullptr;
- vbox = nullptr;
+ container = nullptr;
}
}
}
@@ -687,7 +692,7 @@ EditorPropertyArray::EditorPropertyArray() {
add_child(edit);
add_focusable(edit);
- vbox = nullptr;
+ container = nullptr;
property_vbox = nullptr;
size_slider = nullptr;
button_add_item = nullptr;
@@ -791,11 +796,11 @@ void EditorPropertyDictionary::update_property() {
if (updated_val.get_type() == Variant::NIL) {
edit->set_text(TTR("Dictionary (Nil)")); // This provides symmetry with the array property.
edit->set_pressed(false);
- if (vbox) {
+ if (container) {
set_bottom_editor(nullptr);
- memdelete(vbox);
+ memdelete(container);
button_add_item = nullptr;
- vbox = nullptr;
+ container = nullptr;
}
return;
}
@@ -812,10 +817,14 @@ void EditorPropertyDictionary::update_property() {
if (unfolded) {
updating = true;
- if (!vbox) {
- vbox = memnew(VBoxContainer);
- add_child(vbox);
- set_bottom_editor(vbox);
+ if (!container) {
+ container = memnew(MarginContainer);
+ container->set_theme_type_variation("MarginContainer4px");
+ add_child(container);
+ set_bottom_editor(container);
+
+ VBoxContainer *vbox = memnew(VBoxContainer);
+ container->add_child(vbox);
property_vbox = memnew(VBoxContainer);
property_vbox->set_h_size_flags(SIZE_EXPAND_FILL);
@@ -998,6 +1007,7 @@ void EditorPropertyDictionary::update_property() {
} else {
EditorPropertyResource *editor = memnew(EditorPropertyResource);
editor->setup(object.ptr(), prop_name, "Resource");
+ editor->set_use_folding(is_using_folding());
prop = editor;
}
@@ -1116,11 +1126,11 @@ void EditorPropertyDictionary::update_property() {
updating = false;
} else {
- if (vbox) {
+ if (container) {
set_bottom_editor(nullptr);
- memdelete(vbox);
+ memdelete(container);
button_add_item = nullptr;
- vbox = nullptr;
+ container = nullptr;
}
}
}
@@ -1188,7 +1198,7 @@ EditorPropertyDictionary::EditorPropertyDictionary() {
add_child(edit);
add_focusable(edit);
- vbox = nullptr;
+ container = nullptr;
button_add_item = nullptr;
paginator = nullptr;
change_type = memnew(PopupMenu);
@@ -1250,11 +1260,11 @@ void EditorPropertyLocalizableString::update_property() {
if (updated_val.get_type() == Variant::NIL) {
edit->set_text(TTR("Localizable String (Nil)")); // This provides symmetry with the array property.
edit->set_pressed(false);
- if (vbox) {
+ if (container) {
set_bottom_editor(nullptr);
- memdelete(vbox);
+ memdelete(container);
button_add_item = nullptr;
- vbox = nullptr;
+ container = nullptr;
}
return;
}
@@ -1271,10 +1281,14 @@ void EditorPropertyLocalizableString::update_property() {
if (unfolded) {
updating = true;
- if (!vbox) {
- vbox = memnew(VBoxContainer);
- add_child(vbox);
- set_bottom_editor(vbox);
+ if (!container) {
+ container = memnew(MarginContainer);
+ container->set_theme_type_variation("MarginContainer4px");
+ add_child(container);
+ set_bottom_editor(container);
+
+ VBoxContainer *vbox = memnew(VBoxContainer);
+ container->add_child(vbox);
property_vbox = memnew(VBoxContainer);
property_vbox->set_h_size_flags(SIZE_EXPAND_FILL);
@@ -1351,11 +1365,11 @@ void EditorPropertyLocalizableString::update_property() {
updating = false;
} else {
- if (vbox) {
+ if (container) {
set_bottom_editor(nullptr);
- memdelete(vbox);
+ memdelete(container);
button_add_item = nullptr;
- vbox = nullptr;
+ container = nullptr;
}
}
}
@@ -1410,7 +1424,7 @@ EditorPropertyLocalizableString::EditorPropertyLocalizableString() {
add_child(edit);
add_focusable(edit);
- vbox = nullptr;
+ container = nullptr;
button_add_item = nullptr;
paginator = nullptr;
updating = false;
diff --git a/editor/editor_properties_array_dict.h b/editor/editor_properties_array_dict.h
index 070353c538..44623149d0 100644
--- a/editor/editor_properties_array_dict.h
+++ b/editor/editor_properties_array_dict.h
@@ -89,7 +89,7 @@ class EditorPropertyArray : public EditorProperty {
int page_index = 0;
int changing_type_index;
Button *edit = nullptr;
- VBoxContainer *vbox = nullptr;
+ MarginContainer *container = nullptr;
VBoxContainer *property_vbox = nullptr;
EditorSpinSlider *size_slider = nullptr;
Button *button_add_item = nullptr;
@@ -146,9 +146,9 @@ class EditorPropertyDictionary : public EditorProperty {
int page_index = 0;
int changing_type_index;
Button *edit = nullptr;
- VBoxContainer *vbox = nullptr;
+ MarginContainer *container = nullptr;
VBoxContainer *property_vbox = nullptr;
- EditorSpinSlider *size_slider = nullptr;
+ EditorSpinSlider *size_sliderv;
Button *button_add_item = nullptr;
EditorPaginator *paginator = nullptr;
@@ -181,7 +181,7 @@ class EditorPropertyLocalizableString : public EditorProperty {
int page_length = 20;
int page_index = 0;
Button *edit = nullptr;
- VBoxContainer *vbox = nullptr;
+ MarginContainer *container = nullptr;
VBoxContainer *property_vbox = nullptr;
EditorSpinSlider *size_slider = nullptr;
Button *button_add_item = nullptr;
diff --git a/editor/editor_property_name_processor.cpp b/editor/editor_property_name_processor.cpp
index 1e7638bf72..397afc0653 100644
--- a/editor/editor_property_name_processor.cpp
+++ b/editor/editor_property_name_processor.cpp
@@ -213,6 +213,7 @@ EditorPropertyNameProcessor::EditorPropertyNameProcessor() {
capitalize_string_remaps["stdout"] = "stdout";
capitalize_string_remaps["sv"] = "SV";
capitalize_string_remaps["svg"] = "SVG";
+ capitalize_string_remaps["taa"] = "TAA";
capitalize_string_remaps["tcp"] = "TCP";
capitalize_string_remaps["ui"] = "UI";
capitalize_string_remaps["url"] = "URL";
diff --git a/editor/editor_resource_picker.cpp b/editor/editor_resource_picker.cpp
index 34aa7217fa..4d53ddb344 100644
--- a/editor/editor_resource_picker.cpp
+++ b/editor/editor_resource_picker.cpp
@@ -903,6 +903,8 @@ EditorResourcePicker::EditorResourcePicker() {
edit_button->connect("pressed", callable_mp(this, &EditorResourcePicker::_update_menu));
add_child(edit_button);
edit_button->connect("gui_input", callable_mp(this, &EditorResourcePicker::_button_input));
+
+ add_theme_constant_override("separation", 0);
}
// EditorScriptPicker
diff --git a/editor/editor_run.cpp b/editor/editor_run.cpp
index 6a2ff50ee0..04a3bf2915 100644
--- a/editor/editor_run.cpp
+++ b/editor/editor_run.cpp
@@ -43,7 +43,7 @@ String EditorRun::get_running_scene() const {
return running_scene;
}
-Error EditorRun::run(const String &p_scene) {
+Error EditorRun::run(const String &p_scene, const String &p_write_movie) {
List<String> args;
String resource_path = ProjectSettings::get_singleton()->get_resource_path();
@@ -68,6 +68,16 @@ Error EditorRun::run(const String &p_scene) {
args.push_back("--debug-navigation");
}
+ if (p_write_movie != "") {
+ args.push_back("--write-movie");
+ args.push_back(p_write_movie);
+ args.push_back("--fixed-fps");
+ args.push_back(itos(GLOBAL_GET("editor/movie_writer/fps")));
+ if (bool(GLOBAL_GET("editor/movie_writer/disable_vsync"))) {
+ args.push_back("--disable-vsync");
+ }
+ }
+
int screen = EditorSettings::get_singleton()->get("run/window_placement/screen");
if (screen == 0) {
// Same as editor
diff --git a/editor/editor_run.h b/editor/editor_run.h
index 50604ff032..4cbc6838e4 100644
--- a/editor/editor_run.h
+++ b/editor/editor_run.h
@@ -50,7 +50,7 @@ private:
public:
Status get_status() const;
String get_running_scene() const;
- Error run(const String &p_scene);
+ Error run(const String &p_scene, const String &p_write_movie = "");
void run_native_notify() { status = STATUS_PLAY; }
void stop();
diff --git a/editor/editor_run_native.cpp b/editor/editor_run_native.cpp
index 5db7b8673f..6ce9e5fa6f 100644
--- a/editor/editor_run_native.cpp
+++ b/editor/editor_run_native.cpp
@@ -151,7 +151,13 @@ Error EditorRunNative::run_native(int p_idx, int p_platform) {
flags |= EditorExportPlatform::DEBUG_FLAG_VIEW_NAVIGATION;
}
- return eep->run(preset, p_idx, flags);
+ eep->clear_messages();
+ Error err = eep->run(preset, p_idx, flags);
+ result_dialog_log->clear();
+ if (eep->fill_log_messages(result_dialog_log, err)) {
+ result_dialog->popup_centered_ratio(0.5);
+ }
+ return err;
}
void EditorRunNative::resume_run_native() {
@@ -167,6 +173,15 @@ bool EditorRunNative::is_deploy_debug_remote_enabled() const {
}
EditorRunNative::EditorRunNative() {
+ result_dialog = memnew(AcceptDialog);
+ result_dialog->set_title(TTR("Project Run"));
+ result_dialog_log = memnew(RichTextLabel);
+ result_dialog_log->set_custom_minimum_size(Size2(300, 80) * EDSCALE);
+ result_dialog->add_child(result_dialog_log);
+
+ add_child(result_dialog);
+ result_dialog->hide();
+
set_process(true);
resume_idx = 0;
resume_platform = 0;
diff --git a/editor/editor_run_native.h b/editor/editor_run_native.h
index 798a0371a4..66d9b0402a 100644
--- a/editor/editor_run_native.h
+++ b/editor/editor_run_native.h
@@ -32,11 +32,16 @@
#define EDITOR_RUN_NATIVE_H
#include "scene/gui/box_container.h"
+#include "scene/gui/dialogs.h"
#include "scene/gui/menu_button.h"
+#include "scene/gui/rich_text_label.h"
class EditorRunNative : public HBoxContainer {
GDCLASS(EditorRunNative, HBoxContainer);
+ RichTextLabel *result_dialog_log = nullptr;
+ AcceptDialog *result_dialog = nullptr;
+
HashMap<int, MenuButton *> menus;
bool first = true;
diff --git a/editor/editor_sectioned_inspector.cpp b/editor/editor_sectioned_inspector.cpp
index b7073665a8..801a1a4641 100644
--- a/editor/editor_sectioned_inspector.cpp
+++ b/editor/editor_sectioned_inspector.cpp
@@ -250,11 +250,6 @@ void SectionedInspector::update_category_list() {
continue;
}
- // Filter out unnecessary ProjectSettings sections, as they already have their dedicated tabs.
- if (pi.name.begins_with("autoload") || pi.name.begins_with("editor_plugins") || pi.name.begins_with("shader_globals")) {
- continue;
- }
-
if (!filter.is_empty() && !_property_path_matches(pi.name, filter, name_style)) {
continue;
}
diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp
index 504e09aa36..db9193db06 100644
--- a/editor/editor_settings.cpp
+++ b/editor/editor_settings.cpp
@@ -715,7 +715,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
EDITOR_SETTING_USAGE(Variant::STRING, PROPERTY_HINT_GLOBAL_FILE, "network/ssl/editor_ssl_certificates", _SYSTEM_CERTS_PATH, "*.crt,*.pem", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED);
// Profiler
- _initial_set("debugger/profiler_frame_history_size", 600);
+ EDITOR_SETTING(Variant::INT, PROPERTY_HINT_RANGE, "debugger/profiler_frame_history_size", 3600, "60,10000,1")
// HTTP Proxy
_initial_set("network/http_proxy/host", "");
@@ -723,6 +723,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
/* Extra config */
+ // TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
EDITOR_SETTING(Variant::INT, PROPERTY_HINT_ENUM, "project_manager/sorting_order", 0, "Last Edited,Name,Path")
if (p_extra_config.is_valid()) {
diff --git a/editor/editor_spin_slider.cpp b/editor/editor_spin_slider.cpp
index 09e407de57..a0c818ba84 100644
--- a/editor/editor_spin_slider.cpp
+++ b/editor/editor_spin_slider.cpp
@@ -303,11 +303,11 @@ void EditorSpinSlider::_draw_spin_slider() {
Color lc = get_theme_color(is_read_only() ? SNAME("read_only_label_color") : SNAME("label_color"));
if (flat && !label.is_empty()) {
- Color label_bg_color = get_theme_color(SNAME("dark_color_3"), SNAME("Editor"));
+ Ref<StyleBox> label_bg = get_theme_stylebox(SNAME("label_bg"), SNAME("EditorSpinSlider"));
if (rtl) {
- draw_rect(Rect2(Vector2(size.width - (sb->get_offset().x * 2 + label_width), 0), Vector2(sb->get_offset().x * 2 + label_width, size.height)), label_bg_color);
+ draw_style_box(label_bg, Rect2(Vector2(size.width - (sb->get_offset().x * 2 + label_width), 0), Vector2(sb->get_offset().x * 2 + label_width, size.height)));
} else {
- draw_rect(Rect2(Vector2(), Vector2(sb->get_offset().x * 2 + label_width, size.height)), label_bg_color);
+ draw_style_box(label_bg, Rect2(Vector2(), Vector2(sb->get_offset().x * 2 + label_width, size.height)));
}
}
@@ -448,6 +448,7 @@ void EditorSpinSlider::_notification(int p_what) {
if (grabbing_spinner) {
grabber->hide();
Input::get_singleton()->set_mouse_mode(Input::MOUSE_MODE_VISIBLE);
+ Input::get_singleton()->warp_mouse(grabbing_spinner_mouse_pos);
grabbing_spinner = false;
grabbing_spinner_attempt = false;
}
diff --git a/editor/editor_themes.cpp b/editor/editor_themes.cpp
index c53c04af4e..7a80cf36a8 100644
--- a/editor/editor_themes.cpp
+++ b/editor/editor_themes.cpp
@@ -72,11 +72,13 @@ static Ref<StyleBoxFlat> make_flat_stylebox(Color p_color, float p_margin_left =
style->set_bg_color(p_color);
// Adjust level of detail based on the corners' effective sizes.
style->set_corner_detail(Math::ceil(1.5 * p_corner_width * EDSCALE));
- style->set_corner_radius_all(p_corner_width);
+ style->set_corner_radius_all(p_corner_width * EDSCALE);
style->set_default_margin(SIDE_LEFT, p_margin_left * EDSCALE);
style->set_default_margin(SIDE_RIGHT, p_margin_right * EDSCALE);
style->set_default_margin(SIDE_BOTTOM, p_margin_bottom * EDSCALE);
style->set_default_margin(SIDE_TOP, p_margin_top * EDSCALE);
+ // Work around issue about antialiased edges being blurrier (GH-35279).
+ style->set_anti_aliased(false);
return style;
}
@@ -564,8 +566,6 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
// Styleboxes
// This is the most commonly used stylebox, variations should be made as duplicate of this
Ref<StyleBoxFlat> style_default = make_flat_stylebox(base_color, default_margin_size, default_margin_size, default_margin_size, default_margin_size, corner_width);
- // Work around issue about antialiased edges being blurrier (GH-35279).
- style_default->set_anti_aliased(false);
style_default->set_border_width_all(border_width);
style_default->set_border_color(base_color);
style_default->set_draw_center(true);
@@ -692,6 +692,21 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
style_canvas_editor_info->set_expand_margin_size_all(4 * EDSCALE);
theme->set_stylebox("CanvasItemInfoOverlay", "EditorStyles", style_canvas_editor_info);
+ // 2D and 3D contextual toolbar.
+ // Use a custom stylebox to make contextual menu items stand out from the rest.
+ // This helps with editor usability as contextual menu items change when selecting nodes,
+ // even though it may not be immediately obvious at first.
+ Ref<StyleBoxFlat> toolbar_stylebox = memnew(StyleBoxFlat);
+ toolbar_stylebox->set_bg_color(accent_color * Color(1, 1, 1, 0.1));
+ toolbar_stylebox->set_corner_radius(CORNER_TOP_LEFT, corner_radius * EDSCALE);
+ toolbar_stylebox->set_corner_radius(CORNER_TOP_RIGHT, corner_radius * EDSCALE);
+ toolbar_stylebox->set_anti_aliased(false);
+ // Add an underline to the StyleBox, but prevent its minimum vertical size from changing.
+ toolbar_stylebox->set_border_color(accent_color);
+ toolbar_stylebox->set_border_width(SIDE_BOTTOM, Math::round(2 * EDSCALE));
+ toolbar_stylebox->set_default_margin(SIDE_BOTTOM, 0);
+ theme->set_stylebox("ContextualToolbar", "EditorStyles", toolbar_stylebox);
+
// Script Editor
theme->set_stylebox("ScriptEditorPanel", "EditorStyles", make_empty_stylebox(default_margin_size, 0, default_margin_size, default_margin_size));
theme->set_stylebox("ScriptEditor", "EditorStyles", make_empty_stylebox(0, 0, 0, 0));
@@ -910,6 +925,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
theme->set_constant("item_start_padding", "PopupMenu", popup_menu_margin_size * EDSCALE);
theme->set_constant("item_end_padding", "PopupMenu", popup_menu_margin_size * EDSCALE);
+ // Sub-inspectors
for (int i = 0; i < 16; i++) {
Color si_base_color = accent_color;
@@ -917,51 +933,53 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
si_base_color.set_hsv(Math::fmod(float(si_base_color.get_h() + hue_rotate), float(1.0)), si_base_color.get_s(), si_base_color.get_v());
si_base_color = accent_color.lerp(si_base_color, float(EDITOR_GET("docks/property_editor/subresource_hue_tint")));
- Ref<StyleBoxFlat> sub_inspector_bg;
-
- sub_inspector_bg = make_flat_stylebox(dark_color_1.lerp(si_base_color, 0.08), 2, 0, 2, 2);
-
- sub_inspector_bg->set_border_width(SIDE_LEFT, 2);
- sub_inspector_bg->set_border_width(SIDE_RIGHT, 2);
- sub_inspector_bg->set_border_width(SIDE_BOTTOM, 2);
- sub_inspector_bg->set_border_width(SIDE_TOP, 2);
- sub_inspector_bg->set_default_margin(SIDE_LEFT, 3);
- sub_inspector_bg->set_default_margin(SIDE_RIGHT, 3);
- sub_inspector_bg->set_default_margin(SIDE_BOTTOM, 10);
- sub_inspector_bg->set_default_margin(SIDE_TOP, 5);
+ // Sub-inspector background.
+ Ref<StyleBoxFlat> sub_inspector_bg = style_default->duplicate();
+ sub_inspector_bg->set_bg_color(dark_color_1.lerp(si_base_color, 0.08));
+ sub_inspector_bg->set_border_width_all(2 * EDSCALE);
sub_inspector_bg->set_border_color(si_base_color * Color(0.7, 0.7, 0.7, 0.8));
- sub_inspector_bg->set_draw_center(true);
+ sub_inspector_bg->set_default_margin(SIDE_LEFT, 4 * EDSCALE);
+ sub_inspector_bg->set_default_margin(SIDE_RIGHT, 4 * EDSCALE);
+ sub_inspector_bg->set_default_margin(SIDE_BOTTOM, 4 * EDSCALE);
+ sub_inspector_bg->set_default_margin(SIDE_TOP, 4 * EDSCALE);
+ sub_inspector_bg->set_corner_radius(CORNER_TOP_LEFT, 0);
+ sub_inspector_bg->set_corner_radius(CORNER_TOP_RIGHT, 0);
theme->set_stylebox("sub_inspector_bg" + itos(i), "Editor", sub_inspector_bg);
- Ref<StyleBoxFlat> bg_color;
- bg_color.instantiate();
- bg_color->set_bg_color(si_base_color * Color(0.7, 0.7, 0.7, 0.8));
- bg_color->set_border_width_all(0);
-
- Ref<StyleBoxFlat> bg_color_selected;
- bg_color_selected.instantiate();
- bg_color_selected->set_border_width_all(0);
- bg_color_selected->set_bg_color(si_base_color * Color(0.8, 0.8, 0.8, 0.8));
+ // EditorProperty background while it has a sub-inspector open.
+ Ref<StyleBoxFlat> bg_color = make_flat_stylebox(si_base_color * Color(0.7, 0.7, 0.7, 0.8), 0, 0, 0, 0, corner_radius);
+ bg_color->set_anti_aliased(false);
+ bg_color->set_corner_radius(CORNER_BOTTOM_LEFT, 0);
+ bg_color->set_corner_radius(CORNER_BOTTOM_RIGHT, 0);
theme->set_stylebox("sub_inspector_property_bg" + itos(i), "Editor", bg_color);
- theme->set_stylebox("sub_inspector_property_bg_selected" + itos(i), "Editor", bg_color_selected);
}
theme->set_color("sub_inspector_property_color", "Editor", dark_theme ? Color(1, 1, 1, 1) : Color(0, 0, 0, 1));
- theme->set_constant("sub_inspector_font_offset", "Editor", 4 * EDSCALE);
// EditorSpinSlider.
theme->set_color("label_color", "EditorSpinSlider", font_color);
theme->set_color("read_only_label_color", "EditorSpinSlider", font_readonly_color);
+ Ref<StyleBoxFlat> editor_spin_label_bg = style_default->duplicate();
+ editor_spin_label_bg->set_bg_color(dark_color_3);
+ editor_spin_label_bg->set_border_width_all(0);
+ theme->set_stylebox("label_bg", "EditorSpinSlider", editor_spin_label_bg);
+
+ // EditorProperty
Ref<StyleBoxFlat> style_property_bg = style_default->duplicate();
style_property_bg->set_bg_color(highlight_color);
style_property_bg->set_border_width_all(0);
+ Ref<StyleBoxFlat> style_property_child_bg = style_default->duplicate();
+ style_property_child_bg->set_bg_color(dark_color_2);
+ style_property_child_bg->set_border_width_all(0);
+
theme->set_constant("font_offset", "EditorProperty", 8 * EDSCALE);
theme->set_stylebox("bg_selected", "EditorProperty", style_property_bg);
theme->set_stylebox("bg", "EditorProperty", Ref<StyleBoxEmpty>(memnew(StyleBoxEmpty)));
+ theme->set_stylebox("child_bg", "EditorProperty", style_property_child_bg);
theme->set_constant("v_separation", "EditorProperty", (extra_spacing + default_margin_size) * EDSCALE);
theme->set_color("warning_color", "EditorProperty", warning_color);
theme->set_color("property_color", "EditorProperty", property_color);
@@ -974,6 +992,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
style_property_group_note->set_bg_color(property_group_note_color);
theme->set_stylebox("bg_group_note", "EditorProperty", style_property_group_note);
+ // EditorInspectorSection
Color inspector_section_color = font_color.lerp(Color(0.5, 0.5, 0.5), 0.35);
theme->set_color("font_color", "EditorInspectorSection", inspector_section_color);
@@ -1076,11 +1095,11 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
theme->set_color("prop_subsection", "Editor", prop_subsection_color);
theme->set_color("drop_position_color", "Tree", accent_color);
+ // EditorInspectorCategory
Ref<StyleBoxFlat> category_bg = style_default->duplicate();
- // Make Trees easier to distinguish from other controls by using a darker background color.
category_bg->set_bg_color(prop_category_color);
category_bg->set_border_color(prop_category_color);
- theme->set_stylebox("prop_category_style", "Editor", category_bg);
+ theme->set_stylebox("bg", "EditorInspectorCategory", category_bg);
// ItemList
Ref<StyleBoxFlat> style_itemlist_bg = style_default->duplicate();
@@ -1241,20 +1260,6 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
theme->set_color("selection_color", "TextEdit", selection_color);
theme->set_constant("line_spacing", "TextEdit", 4 * EDSCALE);
- // CodeEdit
- theme->set_font("font", "CodeEdit", theme->get_font(SNAME("source"), SNAME("EditorFonts")));
- theme->set_font_size("font_size", "CodeEdit", theme->get_font_size(SNAME("source_size"), SNAME("EditorFonts")));
- theme->set_stylebox("normal", "CodeEdit", style_widget);
- theme->set_stylebox("focus", "CodeEdit", style_widget_hover);
- theme->set_stylebox("read_only", "CodeEdit", style_widget_disabled);
- theme->set_icon("tab", "CodeEdit", theme->get_icon(SNAME("GuiTab"), SNAME("EditorIcons")));
- theme->set_icon("space", "CodeEdit", theme->get_icon(SNAME("GuiSpace"), SNAME("EditorIcons")));
- theme->set_icon("folded", "CodeEdit", theme->get_icon(SNAME("GuiTreeArrowRight"), SNAME("EditorIcons")));
- theme->set_icon("can_fold", "CodeEdit", theme->get_icon(SNAME("GuiTreeArrowDown"), SNAME("EditorIcons")));
- theme->set_icon("executing_line", "CodeEdit", theme->get_icon(SNAME("MainPlay"), SNAME("EditorIcons")));
- theme->set_icon("breakpoint", "CodeEdit", theme->get_icon(SNAME("Breakpoint"), SNAME("EditorIcons")));
- theme->set_constant("line_spacing", "CodeEdit", EDITOR_GET("text_editor/appearance/whitespace/line_spacing"));
-
theme->set_icon("grabber", "VSplitContainer", theme->get_icon(SNAME("GuiVsplitter"), SNAME("EditorIcons")));
theme->set_icon("grabber", "HSplitContainer", theme->get_icon(SNAME("GuiHsplitter"), SNAME("EditorIcons")));
@@ -1278,6 +1283,13 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
theme->set_constant("h_separation", "VFlowContainer", default_margin_size * EDSCALE);
theme->set_constant("v_separation", "VFlowContainer", default_margin_size * EDSCALE);
+ // Custom theme type for MarginContainer with 4px margins.
+ theme->set_type_variation("MarginContainer4px", "MarginContainer");
+ theme->set_constant("margin_left", "MarginContainer4px", 4 * EDSCALE);
+ theme->set_constant("margin_top", "MarginContainer4px", 4 * EDSCALE);
+ theme->set_constant("margin_right", "MarginContainer4px", 4 * EDSCALE);
+ theme->set_constant("margin_bottom", "MarginContainer4px", 4 * EDSCALE);
+
// Window
// Prevent corner artifacts between window title and body.
@@ -1405,7 +1417,9 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
theme->set_color("font_pressed_color", "LinkButton", accent_color);
theme->set_color("font_disabled_color", "LinkButton", font_disabled_color);
- // TooltipPanel
+ // TooltipPanel + TooltipLabel
+ // TooltipPanel is also used for custom tooltips, while TooltipLabel
+ // is only relevant for default tooltips.
Ref<StyleBoxFlat> style_tooltip = style_popup->duplicate();
style_tooltip->set_shadow_size(0);
style_tooltip->set_default_margin(SIDE_LEFT, default_margin_size * EDSCALE * 0.5);
@@ -1484,6 +1498,9 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
const int gn_margin_side = 2;
const int gn_margin_bottom = 2;
+ // StateMachine
+ const int sm_margin_side = 10;
+
Color graphnode_bg = dark_color_3;
if (!dark_theme) {
graphnode_bg = prop_section_color;
@@ -1510,10 +1527,10 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
graphsbposition->set_border_color(error_color);
graphsbposition->set_shadow_color(error_color * Color(1.0, 1.0, 1.0, 0.2));
Ref<StyleBoxEmpty> graphsbslot = make_empty_stylebox(12, 0, 12, 0);
- Ref<StyleBoxFlat> smgraphsb = make_flat_stylebox(dark_color_3 * Color(1, 1, 1, 0.7), gn_margin_side, 24, gn_margin_side, gn_margin_bottom, corner_width);
+ Ref<StyleBoxFlat> smgraphsb = make_flat_stylebox(dark_color_3 * Color(1, 1, 1, 0.7), sm_margin_side, 24, sm_margin_side, gn_margin_bottom, corner_width);
smgraphsb->set_border_width_all(border_width);
smgraphsb->set_border_color(graphnode_bg);
- Ref<StyleBoxFlat> smgraphsbselected = make_flat_stylebox(graphnode_bg * Color(1, 1, 1, 0.9), gn_margin_side, 24, gn_margin_side, gn_margin_bottom, corner_width);
+ Ref<StyleBoxFlat> smgraphsbselected = make_flat_stylebox(graphnode_bg * Color(1, 1, 1, 0.9), sm_margin_side, 24, sm_margin_side, gn_margin_bottom, corner_width);
smgraphsbselected->set_border_width_all(2 * EDSCALE + border_width);
smgraphsbselected->set_border_color(Color(accent_color.r, accent_color.g, accent_color.b, 0.9));
smgraphsbselected->set_shadow_size(8 * EDSCALE);
@@ -1586,7 +1603,6 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
// ColorPresetButton
Ref<StyleBoxFlat> preset_sb = make_flat_stylebox(Color(1, 1, 1), 2, 2, 2, 2, 2);
- preset_sb->set_anti_aliased(false);
theme->set_stylebox("preset_fg", "ColorPresetButton", preset_sb);
theme->set_icon("preset_bg", "ColorPresetButton", theme->get_icon(SNAME("GuiMiniCheckerboard"), SNAME("EditorIcons")));
theme->set_icon("overbright_indicator", "ColorPresetButton", theme->get_icon(SNAME("OverbrightIndicator"), SNAME("EditorIcons")));
@@ -1617,7 +1633,11 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
theme->set_stylebox("preview_picker_label", "ThemeEditor", theme_preview_picker_label_sb);
// Dictionary editor add item.
- theme->set_stylebox("DictionaryAddItem", "EditorStyles", make_flat_stylebox(prop_subsection_color, 4, 4, 4, 4, corner_radius));
+ // Expand to the left and right by 4px to compensate for the dictionary editor margins.
+ Ref<StyleBoxFlat> style_dictionary_add_item = make_flat_stylebox(prop_subsection_color, 0, 4, 0, 4, corner_radius);
+ style_dictionary_add_item->set_expand_margin_size(SIDE_LEFT, 4 * EDSCALE);
+ style_dictionary_add_item->set_expand_margin_size(SIDE_RIGHT, 4 * EDSCALE);
+ theme->set_stylebox("DictionaryAddItem", "EditorStyles", style_dictionary_add_item);
// adaptive script theme constants
// for comments and elements with lower relevance
@@ -1712,7 +1732,20 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
}
// Now theme is loaded, apply it to CodeEdit.
- theme->set_color("background_color", "CodeEdit", EDITOR_GET("text_editor/theme/highlighting/background_color"));
+ theme->set_font("font", "CodeEdit", theme->get_font(SNAME("source"), SNAME("EditorFonts")));
+ theme->set_font_size("font_size", "CodeEdit", theme->get_font_size(SNAME("source_size"), SNAME("EditorFonts")));
+ Ref<StyleBoxFlat> code_edit_stylebox = make_flat_stylebox(EDITOR_GET("text_editor/theme/highlighting/background_color"), widget_default_margin.x, widget_default_margin.y, widget_default_margin.x, widget_default_margin.y, corner_radius);
+ theme->set_stylebox("normal", "CodeEdit", code_edit_stylebox);
+ theme->set_stylebox("read_only", "CodeEdit", code_edit_stylebox);
+ theme->set_stylebox("focus", "CodeEdit", Ref<StyleBoxEmpty>(memnew(StyleBoxEmpty)));
+ theme->set_icon("tab", "CodeEdit", theme->get_icon(SNAME("GuiTab"), SNAME("EditorIcons")));
+ theme->set_icon("space", "CodeEdit", theme->get_icon(SNAME("GuiSpace"), SNAME("EditorIcons")));
+ theme->set_icon("folded", "CodeEdit", theme->get_icon(SNAME("GuiTreeArrowRight"), SNAME("EditorIcons")));
+ theme->set_icon("can_fold", "CodeEdit", theme->get_icon(SNAME("GuiTreeArrowDown"), SNAME("EditorIcons")));
+ theme->set_icon("executing_line", "CodeEdit", theme->get_icon(SNAME("MainPlay"), SNAME("EditorIcons")));
+ theme->set_icon("breakpoint", "CodeEdit", theme->get_icon(SNAME("Breakpoint"), SNAME("EditorIcons")));
+ theme->set_constant("line_spacing", "CodeEdit", EDITOR_GET("text_editor/appearance/whitespace/line_spacing"));
+ theme->set_color("background_color", "CodeEdit", Color(0, 0, 0, 0));
theme->set_color("completion_background_color", "CodeEdit", EDITOR_GET("text_editor/theme/highlighting/completion_background_color"));
theme->set_color("completion_selected_color", "CodeEdit", EDITOR_GET("text_editor/theme/highlighting/completion_selected_color"));
theme->set_color("completion_existing_color", "CodeEdit", EDITOR_GET("text_editor/theme/highlighting/completion_existing_color"));
diff --git a/editor/editor_toaster.cpp b/editor/editor_toaster.cpp
index 7ca88bd2a2..4986bccc35 100644
--- a/editor/editor_toaster.cpp
+++ b/editor/editor_toaster.cpp
@@ -234,6 +234,16 @@ void EditorToaster::_auto_hide_or_free_toasts() {
to_delete[i]->queue_delete();
toasts.erase(to_delete[i]);
}
+
+ if (toasts.is_empty()) {
+ main_button->set_tooltip(TTR("No notifications."));
+ main_button->set_modulate(Color(0.5, 0.5, 0.5));
+ main_button->set_disabled(true);
+ } else {
+ main_button->set_tooltip(TTR("Show notifications."));
+ main_button->set_modulate(Color(1, 1, 1));
+ main_button->set_disabled(false);
+ }
}
void EditorToaster::_draw_button() {
@@ -508,6 +518,9 @@ EditorToaster::EditorToaster() {
// Main button.
main_button = memnew(Button);
+ main_button->set_tooltip(TTR("No notifications."));
+ main_button->set_modulate(Color(0.5, 0.5, 0.5));
+ main_button->set_disabled(true);
main_button->set_flat(true);
main_button->connect("pressed", callable_mp(this, &EditorToaster::_set_notifications_enabled), varray(true));
main_button->connect("pressed", callable_mp(this, &EditorToaster::_repop_old));
@@ -521,6 +534,7 @@ EditorToaster::EditorToaster() {
add_child(disable_notifications_panel);
disable_notifications_button = memnew(Button);
+ disable_notifications_button->set_tooltip(TTR("Silence the notifications."));
disable_notifications_button->set_flat(true);
disable_notifications_button->connect("pressed", callable_mp(this, &EditorToaster::_set_notifications_enabled), varray(false));
disable_notifications_panel->add_child(disable_notifications_button);
diff --git a/editor/find_in_files.cpp b/editor/find_in_files.cpp
index d60e336f0f..e1c9689f73 100644
--- a/editor/find_in_files.cpp
+++ b/editor/find_in_files.cpp
@@ -566,7 +566,7 @@ FindInFilesPanel::FindInFilesPanel() {
HBoxContainer *hbc = memnew(HBoxContainer);
Label *find_label = memnew(Label);
- find_label->set_text(TTR("Find: "));
+ find_label->set_text(TTR("Find:"));
hbc->add_child(find_label);
_search_text_label = memnew(Label);
@@ -614,7 +614,7 @@ FindInFilesPanel::FindInFilesPanel() {
_replace_container = memnew(HBoxContainer);
Label *replace_label = memnew(Label);
- replace_label->set_text(TTR("Replace: "));
+ replace_label->set_text(TTR("Replace:"));
_replace_container->add_child(replace_label);
_replace_line_edit = memnew(LineEdit);
diff --git a/editor/groups_editor.cpp b/editor/groups_editor.cpp
index f3129db65e..5dc81f623d 100644
--- a/editor/groups_editor.cpp
+++ b/editor/groups_editor.cpp
@@ -559,7 +559,7 @@ GroupDialog::GroupDialog() {
group_empty->set_text(TTR("Empty groups will be automatically removed."));
group_empty->set_vertical_alignment(VERTICAL_ALIGNMENT_CENTER);
group_empty->set_horizontal_alignment(HORIZONTAL_ALIGNMENT_CENTER);
- group_empty->set_autowrap_mode(Label::AUTOWRAP_WORD_SMART);
+ group_empty->set_autowrap_mode(TextServer::AUTOWRAP_WORD_SMART);
group_empty->set_custom_minimum_size(Size2(100 * EDSCALE, 0));
nodes_to_remove->add_child(group_empty);
group_empty->set_anchors_and_offsets_preset(Control::PRESET_WIDE, Control::PRESET_MODE_KEEP_SIZE, 8 * EDSCALE);
diff --git a/editor/icons/MainMovieWrite.svg b/editor/icons/MainMovieWrite.svg
new file mode 100644
index 0000000000..21464bb57c
--- /dev/null
+++ b/editor/icons/MainMovieWrite.svg
@@ -0,0 +1 @@
+<svg height="16" width="16" xmlns="http://www.w3.org/2000/svg"><path d="M8 2a6 6 0 0 0-6 6 6 6 0 0 0 6 6 6 6 0 0 0 4-1.535V14h.002a2 2 0 0 0 .266 1A2 2 0 0 0 14 16h1v-2h-.5a.5.5 0 0 1-.5-.5V8a6 6 0 0 0-6-6zm0 1a1 1 0 0 1 1 1 1 1 0 0 1-1 1 1 1 0 0 1-1-1 1 1 0 0 1 1-1zm3.441 2a1 1 0 0 1 .89.5 1 1 0 0 1-.366 1.365 1 1 0 0 1-1.367-.365 1 1 0 0 1 .367-1.365A1 1 0 0 1 11.44 5zm-6.953.002a1 1 0 0 1 .547.133A1 1 0 0 1 5.402 6.5a1 1 0 0 1-1.367.365A1 1 0 0 1 3.67 5.5a1 1 0 0 1 .818-.498zM4.512 9a1 1 0 0 1 .89.5 1 1 0 0 1-.367 1.365A1 1 0 0 1 3.67 10.5a1 1 0 0 1 .365-1.365A1 1 0 0 1 4.512 9zm6.904.002a1 1 0 0 1 .549.133 1 1 0 0 1 .365 1.365 1 1 0 0 1-1.365.365 1 1 0 0 1-.367-1.365 1 1 0 0 1 .818-.498zM8 11a1 1 0 0 1 1 1 1 1 0 0 1-1 1 1 1 0 0 1-1-1 1 1 0 0 1 1-1z" fill="#e0e0e0"/></svg>
diff --git a/editor/icons/MainMovieWriteEnabled.svg b/editor/icons/MainMovieWriteEnabled.svg
new file mode 100644
index 0000000000..b12ea38bed
--- /dev/null
+++ b/editor/icons/MainMovieWriteEnabled.svg
@@ -0,0 +1 @@
+<svg height="16" width="16" xmlns="http://www.w3.org/2000/svg"><path d="M8 2a6 6 0 0 0-6 6 6 6 0 0 0 6 6 6 6 0 0 0 4-1.535V14h.002a2 2 0 0 0 .266 1A2 2 0 0 0 14 16h1v-2h-.5a.5.5 0 0 1-.5-.5V8a6 6 0 0 0-6-6zm0 1a1 1 0 0 1 1 1 1 1 0 0 1-1 1 1 1 0 0 1-1-1 1 1 0 0 1 1-1zm3.441 2a1 1 0 0 1 .89.5 1 1 0 0 1-.366 1.365 1 1 0 0 1-1.367-.365 1 1 0 0 1 .367-1.365A1 1 0 0 1 11.44 5zm-6.953.002a1 1 0 0 1 .547.133A1 1 0 0 1 5.402 6.5a1 1 0 0 1-1.367.365A1 1 0 0 1 3.67 5.5a1 1 0 0 1 .818-.498zM4.512 9a1 1 0 0 1 .89.5 1 1 0 0 1-.367 1.365A1 1 0 0 1 3.67 10.5a1 1 0 0 1 .365-1.365A1 1 0 0 1 4.512 9zm6.904.002a1 1 0 0 1 .549.133 1 1 0 0 1 .365 1.365 1 1 0 0 1-1.365.365 1 1 0 0 1-.367-1.365 1 1 0 0 1 .818-.498zM8 11a1 1 0 0 1 1 1 1 1 0 0 1-1 1 1 1 0 0 1-1-1 1 1 0 0 1 1-1z" fill="#e0e0e0" style="fill:#ee5353;fill-opacity:1"/></svg>
diff --git a/editor/icons/NavigationAgent2D.svg b/editor/icons/NavigationAgent2D.svg
index 3f1d571a7e..05aeb95e12 100644
--- a/editor/icons/NavigationAgent2D.svg
+++ b/editor/icons/NavigationAgent2D.svg
@@ -1 +1 @@
-<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m8 1c-3 0-5 2-5 5s3 6 5 9c2-3 5.007-6.03 5-9 0-3-2-5-5-5zm0 2.5c1.371 0 2.5 1.129 2.5 2.5s-1.129 2.5-2.5 2.5-2.5-1.129-2.5-2.5 1.129-2.5 2.5-2.5z" fill="#e0e0e0" fill-rule="nonzero"/></svg>
+<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m8 1v2.5c1.371 0 2.5 1.129 2.5 2.5s-1.129 2.5-2.5 2.5v6.5c2-3 5.007-6.03 5-9 0-3-2-5-5-5z" fill="#8da5f3" fill-opacity=".988235"/><path d="m8 1c-3 0-5 2-5 5s3 6 5 9v-6.5c-1.371 0-2.5-1.129-2.5-2.5s1.129-2.5 2.5-2.5z" fill="#e0e0e0"/></svg>
diff --git a/editor/icons/NavigationAgent3D.svg b/editor/icons/NavigationAgent3D.svg
index 947b2129c3..5a2d8b3489 100644
--- a/editor/icons/NavigationAgent3D.svg
+++ b/editor/icons/NavigationAgent3D.svg
@@ -1 +1 @@
-<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><g fill-rule="nonzero"><path d="m9 1c-1.371 0-2.308.429-2.939 1.074-.668.663-1.34 1.324-2.01 1.985-.046 1.741.757 4.327 2.365 4.843.178.317.384.649.584.977v5.121l2-2c2-3 4-6 4-8s-1-4-4-4z" fill="#fff" fill-opacity=".39"/><path d="m7 3c-3 0-4 2-4 4s2 5 4 8c2-3 4-6 4-8s-1-4-4-4zm0 2c1.097 0 2 .903 2 2s-.903 2-2 2-2-.903-2-2 .903-2 2-2z" fill="#e0e0e0"/></g></svg>
+<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><g fill-rule="nonzero"><path d="m8 1.0859375c-.8454344.1560829-1.4755929.5141293-1.9394531.9882813-.668.663-1.3397656 1.323375-2.0097657 1.984375-.046 1.7409999.7572344 4.32775 2.3652344 4.84375.178.317.3839844.6485624.5839844.9765624v5.1210938l1-1z" fill="#e0e0e0" fill-opacity=".501961"/><path d="m7 3c-3 0-4 2-4 4s2 5 4 8c.3378629-.506794.671779-1.011698 1-1.513672v-4.7597655c-.2952789.1727801-.6361816.2734375-1 .2734375-1.097 0-2-.903-2-2s.903-2 2-2c.3638184 0 .7047211.1006574 1 .2734375v-2.1894531c-.3055959-.054762-.6378835-.0839844-1-.0839844z" fill="#e0e0e0"/><g fill="#fc7f7f"><path d="m9 1c-.3631515 0-.6953702.0296972-1 .0859375v12.9140625l1-1c2-3 4-6 4-8s-1-4-4-4z" fill-opacity=".501961"/><path d="m8 3.0839844v2.1894531c.5950581.3481936 1 .9933809 1 1.7265625s-.4049419 1.3783689-1 1.7265625v4.7597655c1.6147033-2.469489 3-4.8241909 3-6.486328 0-1.758589-.773848-3.5170952-3-3.9160156z"/></g></g></svg>
diff --git a/editor/icons/NavigationObstacle2D.svg b/editor/icons/NavigationObstacle2D.svg
index 8fcb5617dd..a5073898f4 100644
--- a/editor/icons/NavigationObstacle2D.svg
+++ b/editor/icons/NavigationObstacle2D.svg
@@ -1 +1 @@
-<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m8 .875c-.625 0-1.25.375-1.5 1.125l-3 10h9l-3-10c-.25-.75-.875-1.125-1.5-1.125zm-1.5 4.125h3l1 4h-5zm-4.5 8c-1 0-1 2 0 2h12c1 0 1-2 0-2z" fill="#e0e0e0" fill-rule="nonzero"/></svg>
+<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m8 .875c-.625 0-1.25.375-1.5 1.125l-3 10h4.5v-3h-2.5l1-4h1.5zm-6 12.125c-1 0-1 2 0 2h6v-2z" fill="#e0e0e0"/><path d="m8 .875v4.125h1.5l1 4h-2.5v3h4.5l-3-10c-.25-.75-.875-1.125-1.5-1.125zm0 12.125v2h6c1 0 1-2 0-2z" fill="#8da5f3" fill-opacity=".988235"/></svg>
diff --git a/editor/icons/NavigationObstacle3D.svg b/editor/icons/NavigationObstacle3D.svg
index c5e58eebf7..d8ccd3a646 100644
--- a/editor/icons/NavigationObstacle3D.svg
+++ b/editor/icons/NavigationObstacle3D.svg
@@ -1 +1 @@
-<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><g fill-rule="nonzero"><path d="m4.607 8.379c-1.798.928-3.607 2.072-3.607 2.621 0 1 6 4 7 4s7-3 7-4c0-.549-1.809-1.693-3.607-2.621l.607 1.621c2 4-10 4-8 0z" fill="#fff" fill-opacity=".39"/><path d="m8 .875c-.375 0-.75.375-1 1.125l-3 8c-2 4 10 4 8 0l-3-8c-.25-.75-.625-1.125-1-1.125zm-1.5 4.125c1 .5 2 .5 3 0l1 3.5c-1.5 1-3.5 1-5 0z" fill="#e0e0e0"/></g></svg>
+<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><g fill-rule="nonzero"><path d="m4.6074219 8.3789062c-1.798.9280001-3.6074219 2.0720938-3.6074219 2.6210938 0 1 6 4 7 4v-2c-2.5 0-5-1-4-3z" fill="#e0e0e0" fill-opacity=".501961"/><path d="m8 .875c-.375 0-.75.375-1 1.125l-3 8c-1 2 1.5 3 4 3v-3.75c-.875 0-1.75-.25-2.5-.75l1-3.5c.5.25 1 .375 1.5.375z" fill="#e0e0e0"/><g fill="#fc7f7f"><path d="m11.392578 8.3789062.607422 1.6210938c1.002342 2.004685-1.511742 3.004696-4.0175781 3v1.998047c.0053893.000157.0124503.001953.0175781.001953 1 0 7-3 7-4 0-.549-1.809422-1.6930938-3.607422-2.6210938z" fill-opacity=".501961"/><path d="m8 .875c-.00585 0-.011729.001771-.017578.001953v4.498047c.5058535.0029611 1.0117243-.1220732 1.517578-.375l1 3.5c-.7550159.5033439-1.6367318.7533663-2.5175781.75v3.75c2.5058361.004696 5.0199201-.995315 4.0175781-3l-3-8c-.25-.75-.625-1.125-1-1.125z"/></g></g></svg>
diff --git a/editor/icons/SkeletonIK3D.svg b/editor/icons/SkeletonIK3D.svg
index 45697a1b42..7210019749 100644
--- a/editor/icons/SkeletonIK3D.svg
+++ b/editor/icons/SkeletonIK3D.svg
@@ -1 +1 @@
-<svg height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m6 2a4 4 0 0 0 -4 4 4 4 0 0 0 2 3.4531v3.5469a2 2 0 0 0 1 1.7324 2 2 0 0 0 1 .26562v.001953h4v-.001953a2 2 0 0 0 1-.26562 2 2 0 0 0 1-1.7324v-3.5469a4 4 0 0 0 2-3.4531 4 4 0 0 0 -4-4zm-1 3a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1-1 1 1 0 0 1 1-1zm6 0a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1-1 1 1 0 0 1 1-1zm-4 2h2v1h-2zm-2 2h1v1h1v-1h1 1v1h1v-1h1v.86719 3.1328h-1v-1h-1v1h-1-1v-1h-1v1h-1v-3.1309-.86914z" fill="#e0e0e0"/></svg>
+<svg height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m6 2a4 4 0 0 0 -4 4 4 4 0 0 0 2 3.453125v3.546875a2 2 0 0 0 1 1.732422 2 2 0 0 0 1 .265625v.001953h2v-2h-1v-1h-1v1h-1v-3.1308594-.8691406h1v1h1v-1h1v-1h-1v-1h1v-5zm-1 3a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1-1 1 1 0 0 1 1-1z" fill="#e0e0e0"/><path d="m8 2v5h1v1h-1v1h1v1h1v-1h1v.8671875 3.1328125h-1v-1h-1v1h-1v2h2v-.001953a2 2 0 0 0 1-.265625 2 2 0 0 0 1-1.732422v-3.546875a4 4 0 0 0 2-3.453125 4 4 0 0 0 -4-4zm3 3a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1-1 1 1 0 0 1 1-1z" fill="#fc7f7f"/></svg>
diff --git a/editor/icons/TerrainConnect.svg b/editor/icons/TerrainConnect.svg
new file mode 100644
index 0000000000..3b6b8fd5a2
--- /dev/null
+++ b/editor/icons/TerrainConnect.svg
@@ -0,0 +1 @@
+<svg height="32" viewBox="0 0 16 16" width="32" xmlns="http://www.w3.org/2000/svg"><g fill="#e0e0e0"><circle cx="8" cy="8" r="2.000028" stroke-width="1.09711"/><g stroke-width=".5" transform="translate(0 -1036.4)"><path d="m7 1039.9h-1l2-2.5 2 2.5h-1v2h-2z"/><path d="m3.5606601 1041.3748-.7071068.707-.3535533-3.1818 3.1819804.3535-.7071067.7071.7071067.7071-1.4142135 1.4142z"/><path d="m11.0252 1039.9606-.707-.7071 3.1818-.3535-.3535 3.1819-.7071-.7071-.7071.7071-1.4142-1.4142z"/><path d="m12.43934 1047.4252.707107-.707.353553 3.1818-3.18198-.3535.707106-.7071-.707106-.7071 1.414214-1.4142z"/><path d="m4.9748005 1048.8394.707.7071-3.1818.3535.3535-3.1819.7071.7071.7071-.7071 1.4142 1.4142z"/><path d="m12.5 1043.4v-1l2.5 2-2.5 2v-1h-2v-2z"/><path d="m9 1048.9h1l-2 2.5-2-2.5h1v-2h2z"/><path d="m3.5 1045.4v1l-2.5-2 2.5-2v1h2v2z"/></g></g></svg>
diff --git a/editor/icons/TerrainPath.svg b/editor/icons/TerrainPath.svg
new file mode 100644
index 0000000000..6352bbd37e
--- /dev/null
+++ b/editor/icons/TerrainPath.svg
@@ -0,0 +1 @@
+<svg height="32" viewBox="0 0 16 16" width="32" xmlns="http://www.w3.org/2000/svg"><g fill="#e0e0e0" transform="translate(0 -1036.4)"><circle cx="3" cy="1049.4" r="2.000028" stroke-width="1.09711"/><circle cx="13" cy="1039.4" r="2.000028" stroke-width="1.09711"/><path d="m7 1038.4v10h-4v2h4 2v-2-8h4v-2h-4z" stroke-width=".46291"/></g></svg>
diff --git a/editor/icons/Unlinked.svg b/editor/icons/Unlinked.svg
new file mode 100644
index 0000000000..6c831eacad
--- /dev/null
+++ b/editor/icons/Unlinked.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><defs><clipPath id="a"><path d="M0 0h16v16H0z"/></clipPath></defs><g clip-path="url(#a)" fill="#e0e0e0"><path d="M1.136 12.036a3.994 3.994 0 0 1-.137-1.047 4.007 4.007 0 0 1 2.965-3.853 1 1 0 0 1 1.225.707 1 1 0 0 1 .034.25 1 1 0 0 1-.741.975 2 2 0 0 0-1.483 1.926 1.994 1.994 0 0 0 .068.523 2 2 0 0 0 2.45 1.415 2 2 0 0 0 1.484-1.931 2 2 0 0 0-.068-.523 1 1 0 0 1-.034-.25 1 1 0 0 1 .742-.975 1 1 0 0 1 1.225.707 3.991 3.991 0 0 1 .137 1.046 4.007 4.007 0 0 1-2.965 3.852 3.993 3.993 0 0 1-1.035.137 4.006 4.006 0 0 1-3.867-2.959zM9.965 8.863a1 1 0 0 1-.742-.975 1 1 0 0 1 .034-.25 1 1 0 0 1 1.225-.706 2 2 0 0 0 2.449-1.415A1.994 1.994 0 0 0 13 4.994a2 2 0 0 0-1.483-1.926 2 2 0 0 0-2.45 1.414 1 1 0 0 1-1.224.707 1 1 0 0 1-.742-.975 1 1 0 0 1 .034-.25 4 4 0 0 1 4.9-2.829A4.008 4.008 0 0 1 15 4.988a3.993 3.993 0 0 1-.137 1.047 4.006 4.006 0 0 1-3.862 2.966 3.989 3.989 0 0 1-1.036-.138zM5.5 4a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 1 .5-.5.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5zM4.5 5a.5.5 0 0 1-.354-.146l-2-2a.5.5 0 0 1 0-.707.5.5 0 0 1 .707 0l2 2A.5.5 0 0 1 4.5 5zM3.5 6h-2a.5.5 0 0 1-.5-.5.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5.5.5 0 0 1-.5.5z"/></g></svg>
diff --git a/editor/icons/VideoPlayer.svg b/editor/icons/VideoStreamPlayer.svg
index 092a26b955..092a26b955 100644
--- a/editor/icons/VideoPlayer.svg
+++ b/editor/icons/VideoStreamPlayer.svg
diff --git a/editor/import/dynamic_font_import_settings.cpp b/editor/import/dynamic_font_import_settings.cpp
index 97892e47d4..f7fe334828 100644
--- a/editor/import/dynamic_font_import_settings.cpp
+++ b/editor/import/dynamic_font_import_settings.cpp
@@ -454,7 +454,11 @@ void DynamicFontImportSettings::_add_glyph_range_item(int32_t p_start, int32_t p
void DynamicFontImportSettings::_main_prop_changed(const String &p_edited_property) {
// Update font preview.
- if (p_edited_property == "antialiased") {
+ if (p_edited_property == "face_index") {
+ if (font_preview->get_data_count() > 0) {
+ font_preview->get_data(0)->set_face_index(import_settings_data->get("face_index"));
+ }
+ } else if (p_edited_property == "antialiased") {
if (font_preview->get_data_count() > 0) {
font_preview->get_data(0)->set_antialiased(import_settings_data->get("antialiased"));
}
@@ -625,7 +629,7 @@ void DynamicFontImportSettings::_change_text_opts() {
void DynamicFontImportSettings::_glyph_clear() {
selected_glyphs.clear();
- label_glyphs->set_text(TTR("Preloaded glyphs: ") + itos(selected_glyphs.size()));
+ label_glyphs->set_text(TTR("Preloaded glyphs:") + " " + itos(selected_glyphs.size()));
_range_selected();
}
@@ -654,7 +658,7 @@ void DynamicFontImportSettings::_glyph_text_selected() {
}
}
TS->free_rid(text_rid);
- label_glyphs->set_text(TTR("Preloaded glyphs: ") + itos(selected_glyphs.size()));
+ label_glyphs->set_text(TTR("Preloaded glyphs:") + " " + itos(selected_glyphs.size()));
}
_range_selected();
}
@@ -681,7 +685,7 @@ void DynamicFontImportSettings::_glyph_selected() {
item->clear_custom_bg_color(glyph_table->get_selected_column());
}
}
- label_glyphs->set_text(TTR("Preloaded glyphs: ") + itos(selected_glyphs.size()));
+ label_glyphs->set_text(TTR("Preloaded glyphs:") + " " + itos(selected_glyphs.size()));
item = glyph_tree->get_selected();
ERR_FAIL_NULL(item);
@@ -769,7 +773,7 @@ void DynamicFontImportSettings::_edit_range(int32_t p_start, int32_t p_end) {
col = 0;
}
}
- label_glyphs->set_text(TTR("Preloaded glyphs: ") + itos(selected_glyphs.size()));
+ label_glyphs->set_text(TTR("Preloaded glyphs:") + " " + itos(selected_glyphs.size()));
}
bool DynamicFontImportSettings::_char_update(int32_t p_char) {
@@ -945,6 +949,7 @@ void DynamicFontImportSettings::_notification(int p_what) {
void DynamicFontImportSettings::_re_import() {
HashMap<StringName, Variant> main_settings;
+ main_settings["face_index"] = import_settings_data->get("face_index");
main_settings["antialiased"] = import_settings_data->get("antialiased");
main_settings["generate_mipmaps"] = import_settings_data->get("generate_mipmaps");
main_settings["multichannel_signed_distance_field"] = import_settings_data->get("multichannel_signed_distance_field");
@@ -1292,13 +1297,14 @@ void DynamicFontImportSettings::open_settings(const String &p_path) {
}
}
}
- label_glyphs->set_text(TTR("Preloaded glyphs: ") + itos(selected_glyphs.size()));
+ label_glyphs->set_text(TTR("Preloaded glyphs:") + " " + itos(selected_glyphs.size()));
import_settings_data->options = options_general;
inspector_general->edit(import_settings_data.ptr());
import_settings_data->notify_property_list_changed();
if (font_preview->get_data_count() > 0) {
+ font_preview->get_data(0)->set_face_index(import_settings_data->get("face_index"));
font_preview->get_data(0)->set_antialiased(import_settings_data->get("antialiased"));
font_preview->get_data(0)->set_multichannel_signed_distance_field(import_settings_data->get("multichannel_signed_distance_field"));
font_preview->get_data(0)->set_msdf_pixel_range(import_settings_data->get("msdf_pixel_range"));
@@ -1360,6 +1366,7 @@ DynamicFontImportSettings *DynamicFontImportSettings::get_singleton() {
DynamicFontImportSettings::DynamicFontImportSettings() {
singleton = this;
+ options_general.push_back(ResourceImporter::ImportOption(PropertyInfo(Variant::INT, "face_index"), 0));
options_general.push_back(ResourceImporter::ImportOption(PropertyInfo(Variant::BOOL, "antialiased"), true));
options_general.push_back(ResourceImporter::ImportOption(PropertyInfo(Variant::BOOL, "generate_mipmaps"), false));
options_general.push_back(ResourceImporter::ImportOption(PropertyInfo(Variant::BOOL, "multichannel_signed_distance_field", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED), true));
@@ -1448,7 +1455,7 @@ DynamicFontImportSettings::DynamicFontImportSettings() {
font_preview_label->add_theme_font_size_override("font_size", 200 * EDSCALE);
font_preview_label->set_horizontal_alignment(HORIZONTAL_ALIGNMENT_CENTER);
font_preview_label->set_vertical_alignment(VERTICAL_ALIGNMENT_CENTER);
- font_preview_label->set_autowrap_mode(Label::AUTOWRAP_ARBITRARY);
+ font_preview_label->set_autowrap_mode(TextServer::AUTOWRAP_ARBITRARY);
font_preview_label->set_clip_text(true);
font_preview_label->set_v_size_flags(Control::SIZE_EXPAND_FILL);
font_preview_label->set_h_size_flags(Control::SIZE_EXPAND_FILL);
@@ -1468,7 +1475,7 @@ DynamicFontImportSettings::DynamicFontImportSettings() {
page2_description = memnew(Label);
page2_description->set_text(TTR("Add font size, variation coordinates, and extra spacing combinations to pre-render:"));
page2_description->set_h_size_flags(Control::SIZE_EXPAND_FILL);
- page2_description->set_autowrap_mode(Label::AUTOWRAP_WORD_SMART);
+ page2_description->set_autowrap_mode(TextServer::AUTOWRAP_WORD_SMART);
page2_vb->add_child(page2_description);
HSplitContainer *page2_hb = memnew(HSplitContainer);
@@ -1520,7 +1527,7 @@ DynamicFontImportSettings::DynamicFontImportSettings() {
page3_description = memnew(Label);
page3_description->set_text(TTR("Enter a text to shape and add all required glyphs to pre-render list:"));
page3_description->set_h_size_flags(Control::SIZE_EXPAND_FILL);
- page3_description->set_autowrap_mode(Label::AUTOWRAP_WORD_SMART);
+ page3_description->set_autowrap_mode(TextServer::AUTOWRAP_WORD_SMART);
page3_vb->add_child(page3_description);
HBoxContainer *ot_hb = memnew(HBoxContainer);
@@ -1556,7 +1563,7 @@ DynamicFontImportSettings::DynamicFontImportSettings() {
label_glyphs = memnew(Label);
text_hb->add_child(label_glyphs);
- label_glyphs->set_text(TTR("Preloaded glyphs: ") + itos(0));
+ label_glyphs->set_text(TTR("Preloaded glyphs:") + " " + itos(0));
label_glyphs->set_custom_minimum_size(Size2(50 * EDSCALE, 0));
Button *btn_fill = memnew(Button);
@@ -1577,7 +1584,7 @@ DynamicFontImportSettings::DynamicFontImportSettings() {
page4_description = memnew(Label);
page4_description->set_text(TTR("Add or remove additional glyphs from the character map to pre-render list:\nNote: Some stylistic alternatives and glyph variants do not have one-to-one correspondence to character, and not shown in this map, use \"Glyphs from the text\" to add these."));
page4_description->set_h_size_flags(Control::SIZE_EXPAND_FILL);
- page4_description->set_autowrap_mode(Label::AUTOWRAP_WORD_SMART);
+ page4_description->set_autowrap_mode(TextServer::AUTOWRAP_WORD_SMART);
page4_vb->add_child(page4_description);
HSplitContainer *glyphs_split = memnew(HSplitContainer);
@@ -1628,7 +1635,7 @@ DynamicFontImportSettings::DynamicFontImportSettings() {
page5_description = memnew(Label);
page5_description->set_text(TTR("Add or remove language and script support overrides, to control fallback font selection order:"));
page5_description->set_h_size_flags(Control::SIZE_EXPAND_FILL);
- page5_description->set_autowrap_mode(Label::AUTOWRAP_WORD_SMART);
+ page5_description->set_autowrap_mode(TextServer::AUTOWRAP_WORD_SMART);
page5_vb->add_child(page5_description);
HBoxContainer *hb_lang = memnew(HBoxContainer);
diff --git a/editor/import/resource_importer_dynamic_font.cpp b/editor/import/resource_importer_dynamic_font.cpp
index 04f6a0b7af..a92b0fe280 100644
--- a/editor/import/resource_importer_dynamic_font.cpp
+++ b/editor/import/resource_importer_dynamic_font.cpp
@@ -50,7 +50,9 @@ void ResourceImporterDynamicFont::get_recognized_extensions(List<String> *p_exte
if (p_extensions) {
#ifdef MODULE_FREETYPE_ENABLED
p_extensions->push_back("ttf");
+ p_extensions->push_back("ttc");
p_extensions->push_back("otf");
+ p_extensions->push_back("otc");
p_extensions->push_back("woff");
p_extensions->push_back("woff2");
p_extensions->push_back("pfb");
@@ -101,6 +103,8 @@ String ResourceImporterDynamicFont::get_preset_name(int p_idx) const {
void ResourceImporterDynamicFont::get_import_options(const String &p_path, List<ImportOption> *r_options, int p_preset) const {
bool msdf = p_preset == PRESET_MSDF;
+ r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "face_index"), 0));
+
r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "antialiased"), true));
r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "generate_mipmaps"), false));
r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "multichannel_signed_distance_field", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED), (msdf) ? true : false));
@@ -179,6 +183,8 @@ void ResourceImporterDynamicFont::show_advanced_options(const String &p_path) {
Error ResourceImporterDynamicFont::import(const String &p_source_file, const String &p_save_path, const HashMap<StringName, Variant> &p_options, List<String> *r_platform_variants, List<String> *r_gen_files, Variant *r_metadata) {
print_verbose("Importing dynamic font from: " + p_source_file);
+ int face_index = p_options["face_index"];
+
bool antialiased = p_options["antialiased"];
bool generate_mipmaps = p_options["generate_mipmaps"];
bool msdf = p_options["multichannel_signed_distance_field"];
@@ -200,6 +206,7 @@ Error ResourceImporterDynamicFont::import(const String &p_source_file, const Str
Ref<FontData> font;
font.instantiate();
font->set_data(data);
+ font->set_face_index(face_index);
font->set_antialiased(antialiased);
font->set_generate_mipmaps(generate_mipmaps);
font->set_multichannel_signed_distance_field(msdf);
diff --git a/editor/import/resource_importer_imagefont.cpp b/editor/import/resource_importer_imagefont.cpp
index bbcd336575..30c349d0f2 100644
--- a/editor/import/resource_importer_imagefont.cpp
+++ b/editor/import/resource_importer_imagefont.cpp
@@ -107,7 +107,7 @@ Error ResourceImporterImageFont::import(const String &p_source_file, const Strin
Ref<Image> img;
img.instantiate();
Error err = ImageLoader::load_image(p_source_file, img);
- ERR_FAIL_COND_V_MSG(err != OK, ERR_FILE_CANT_READ, TTR("Can't load font texture: ") + "\"" + p_source_file + "\".");
+ ERR_FAIL_COND_V_MSG(err != OK, ERR_FILE_CANT_READ, TTR("Can't load font texture:") + " \"" + p_source_file + "\".");
font->set_texture_image(0, Vector2i(base_size, 0), 0, img);
int count = columns * rows;
diff --git a/editor/import/resource_importer_scene.cpp b/editor/import/resource_importer_scene.cpp
index 80230bc316..f2975b1d7a 100644
--- a/editor/import/resource_importer_scene.cpp
+++ b/editor/import/resource_importer_scene.cpp
@@ -658,6 +658,44 @@ Node *ResourceImporterScene::_pre_fix_node(Node *p_node, Node *p_root, HashMap<R
}
}
}
+ } else if (_teststr(name, "vehicle")) {
+ if (isroot) {
+ return p_node;
+ }
+
+ Node *owner = p_node->get_owner();
+ Node3D *s = Object::cast_to<Node3D>(p_node);
+ VehicleBody3D *bv = memnew(VehicleBody3D);
+ String n = _fixstr(p_node->get_name(), "vehicle");
+ bv->set_name(n);
+ p_node->replace_by(bv);
+ p_node->set_name(n);
+ bv->add_child(p_node);
+ bv->set_owner(owner);
+ p_node->set_owner(owner);
+ bv->set_transform(s->get_transform());
+ s->set_transform(Transform3D());
+
+ p_node = bv;
+ } else if (_teststr(name, "wheel")) {
+ if (isroot) {
+ return p_node;
+ }
+
+ Node *owner = p_node->get_owner();
+ Node3D *s = Object::cast_to<Node3D>(p_node);
+ VehicleWheel3D *bv = memnew(VehicleWheel3D);
+ String n = _fixstr(p_node->get_name(), "wheel");
+ bv->set_name(n);
+ p_node->replace_by(bv);
+ p_node->set_name(n);
+ bv->add_child(p_node);
+ bv->set_owner(owner);
+ p_node->set_owner(owner);
+ bv->set_transform(s->get_transform());
+ s->set_transform(Transform3D());
+
+ p_node = bv;
} else if (Object::cast_to<ImporterMeshInstance3D>(p_node)) {
//last attempt, maybe collision inside the mesh data
diff --git a/editor/import/resource_importer_texture.cpp b/editor/import/resource_importer_texture.cpp
index 71b8c54422..deb3047864 100644
--- a/editor/import/resource_importer_texture.cpp
+++ b/editor/import/resource_importer_texture.cpp
@@ -104,13 +104,13 @@ void ResourceImporterTexture::update_imports() {
bool changed = false;
if (E.value.flags & MAKE_NORMAL_FLAG && int(cf->get_value("params", "compress/normal_map")) == 0) {
- print_line(vformat("%s: Texture detected as used as a normal map in 3D. Enabling red-green texture compression to reduce memory usage (blue channel is discarded).", String(E.key)));
+ print_line(vformat(TTR("%s: Texture detected as used as a normal map in 3D. Enabling red-green texture compression to reduce memory usage (blue channel is discarded)."), String(E.key)));
cf->set_value("params", "compress/normal_map", 1);
changed = true;
}
if (E.value.flags & MAKE_ROUGHNESS_FLAG && int(cf->get_value("params", "roughness/mode")) == 0) {
- print_line(vformat("%s: Texture detected as used as a roughness map in 3D. Enabling roughness limiter based on the detected associated normal map at %s.", String(E.key), E.value.normal_path_for_roughness));
+ print_line(vformat(TTR("%s: Texture detected as used as a roughness map in 3D. Enabling roughness limiter based on the detected associated normal map at %s."), String(E.key), E.value.normal_path_for_roughness));
cf->set_value("params", "roughness/mode", E.value.channel_for_roughness + 2);
cf->set_value("params", "roughness/src_normal", E.value.normal_path_for_roughness);
changed = true;
@@ -127,7 +127,7 @@ void ResourceImporterTexture::update_imports() {
cf->set_value("params", "compress/mode", COMPRESS_BASIS_UNIVERSAL);
compress_string = "Basis Universal";
}
- print_line(vformat("%s: Texture detected as used in 3D. Enabling mipmap generation and setting the texture compression mode to %s.", String(E.key), compress_string));
+ print_line(vformat(TTR("%s: Texture detected as used in 3D. Enabling mipmap generation and setting the texture compression mode to %s."), String(E.key), compress_string));
cf->set_value("params", "mipmaps/generate", true);
changed = true;
}
diff --git a/editor/import/scene_import_settings.cpp b/editor/import/scene_import_settings.cpp
index d9ff4f79de..99d1658405 100644
--- a/editor/import/scene_import_settings.cpp
+++ b/editor/import/scene_import_settings.cpp
@@ -1354,7 +1354,7 @@ SceneImportSettings::SceneImportSettings() {
HBoxContainer *extension_hb = memnew(HBoxContainer);
save_path->get_vbox()->add_child(extension_hb);
extension_hb->add_spacer();
- extension_hb->add_child(memnew(Label(TTR("Save Extension: "))));
+ extension_hb->add_child(memnew(Label(TTR("Save Extension:"))));
external_extension_type = memnew(OptionButton);
extension_hb->add_child(external_extension_type);
external_extension_type->add_item(TTR("Text: *.tres"));
diff --git a/editor/import_dock.cpp b/editor/import_dock.cpp
index 9eb2706d8a..6bb71ff491 100644
--- a/editor/import_dock.cpp
+++ b/editor/import_dock.cpp
@@ -685,7 +685,7 @@ ImportDock::ImportDock() {
select_a_resource = memnew(Label);
select_a_resource->set_text(TTR("Select a resource file in the filesystem or in the inspector to adjust import settings."));
- select_a_resource->set_autowrap_mode(Label::AUTOWRAP_WORD);
+ select_a_resource->set_autowrap_mode(TextServer::AUTOWRAP_WORD);
select_a_resource->set_custom_minimum_size(Size2(100 * EDSCALE, 0));
select_a_resource->set_v_size_flags(SIZE_EXPAND_FILL);
select_a_resource->set_horizontal_alignment(HORIZONTAL_ALIGNMENT_CENTER);
diff --git a/editor/node_dock.cpp b/editor/node_dock.cpp
index 18545d3c9a..986370f537 100644
--- a/editor/node_dock.cpp
+++ b/editor/node_dock.cpp
@@ -134,7 +134,7 @@ NodeDock::NodeDock() {
select_a_node->set_v_size_flags(SIZE_EXPAND_FILL);
select_a_node->set_vertical_alignment(VERTICAL_ALIGNMENT_CENTER);
select_a_node->set_horizontal_alignment(HORIZONTAL_ALIGNMENT_CENTER);
- select_a_node->set_autowrap_mode(Label::AUTOWRAP_WORD_SMART);
+ select_a_node->set_autowrap_mode(TextServer::AUTOWRAP_WORD_SMART);
add_child(select_a_node);
}
diff --git a/editor/plugins/animation_blend_space_1d_editor.cpp b/editor/plugins/animation_blend_space_1d_editor.cpp
index ae4482155c..2e4dcab203 100644
--- a/editor/plugins/animation_blend_space_1d_editor.cpp
+++ b/editor/plugins/animation_blend_space_1d_editor.cpp
@@ -83,7 +83,7 @@ void AnimationNodeBlendSpace1DEditor::_blend_space_gui_input(const Ref<InputEven
for (const StringName &E : classes) {
String name = String(E).replace_first("AnimationNode", "");
- if (name == "Animation") {
+ if (name == "Animation" || name == "StartState" || name == "EndState") {
continue;
}
diff --git a/editor/plugins/animation_blend_space_2d_editor.cpp b/editor/plugins/animation_blend_space_2d_editor.cpp
index 4b7df75aec..86addde87b 100644
--- a/editor/plugins/animation_blend_space_2d_editor.cpp
+++ b/editor/plugins/animation_blend_space_2d_editor.cpp
@@ -107,7 +107,7 @@ void AnimationNodeBlendSpace2DEditor::_blend_space_gui_input(const Ref<InputEven
for (const StringName &E : classes) {
String name = String(E).replace_first("AnimationNode", "");
- if (name == "Animation") {
+ if (name == "Animation" || name == "StartState" || name == "EndState") {
continue; // nope
}
int idx = menu->get_item_count();
diff --git a/editor/plugins/animation_library_editor.cpp b/editor/plugins/animation_library_editor.cpp
index ed908e413c..cae33edecb 100644
--- a/editor/plugins/animation_library_editor.cpp
+++ b/editor/plugins/animation_library_editor.cpp
@@ -419,12 +419,12 @@ void AnimationLibraryEditor::_item_renamed() {
}
}
-void AnimationLibraryEditor::_button_pressed(TreeItem *p_item, int p_column, int p_button) {
+void AnimationLibraryEditor::_button_pressed(TreeItem *p_item, int p_column, int p_id, MouseButton p_button) {
if (p_item->get_parent() == tree->get_root()) {
// Library
StringName lib_name = p_item->get_metadata(0);
Ref<AnimationLibrary> al = player->call("get_animation_library", lib_name);
- switch (p_button) {
+ switch (p_id) {
case LIB_BUTTON_ADD: {
add_library_dialog->set_title(TTR("Animation Name:"));
add_library_name->set_text("");
@@ -519,7 +519,7 @@ void AnimationLibraryEditor::_button_pressed(TreeItem *p_item, int p_column, int
Ref<AnimationLibrary> al = player->call("get_animation_library", lib_name);
Ref<Animation> anim = al->get_animation(anim_name);
ERR_FAIL_COND(!anim.is_valid());
- switch (p_button) {
+ switch (p_id) {
case ANIM_BUTTON_COPY: {
if (anim->get_name() == "") {
anim->set_name(anim_name); // Keep the name around
diff --git a/editor/plugins/animation_library_editor.h b/editor/plugins/animation_library_editor.h
index 5bd4e8d9e2..bf89508321 100644
--- a/editor/plugins/animation_library_editor.h
+++ b/editor/plugins/animation_library_editor.h
@@ -99,7 +99,7 @@ class AnimationLibraryEditor : public AcceptDialog {
void _load_file(String p_path);
void _item_renamed();
- void _button_pressed(TreeItem *p_item, int p_column, int p_button);
+ void _button_pressed(TreeItem *p_item, int p_column, int p_id, MouseButton p_button);
void _file_popup_selected(int p_id);
diff --git a/editor/plugins/animation_player_editor_plugin.cpp b/editor/plugins/animation_player_editor_plugin.cpp
index 765d963846..e5ca5d66e8 100644
--- a/editor/plugins/animation_player_editor_plugin.cpp
+++ b/editor/plugins/animation_player_editor_plugin.cpp
@@ -1053,7 +1053,7 @@ void AnimationPlayerEditor::_animation_duplicate() {
_update_name_dialog_library_dropdown();
name_dialog_op = TOOL_DUPLICATE_ANIM;
- name_dialog->set_title("Duplicate Animation");
+ name_dialog->set_title(TTR("Duplicate Animation"));
name_title->set_text(TTR("Duplicated Animation Name:"));
name->set_text(new_name);
name_dialog->popup_centered(Size2(300, 90));
@@ -1573,7 +1573,7 @@ AnimationPlayerEditor::AnimationPlayerEditor(AnimationPlayerEditorPlugin *p_plug
frame = memnew(SpinBox);
hb->add_child(frame);
- frame->set_custom_minimum_size(Size2(60, 0));
+ frame->set_custom_minimum_size(Size2(80, 0) * EDSCALE);
frame->set_stretch_ratio(2);
frame->set_step(0.0001);
frame->set_tooltip(TTR("Animation position (in seconds)."));
@@ -1639,8 +1639,10 @@ AnimationPlayerEditor::AnimationPlayerEditor(AnimationPlayerEditorPlugin *p_plug
onion_skinning = memnew(MenuButton);
onion_skinning->set_tooltip(TTR("Onion Skinning Options"));
onion_skinning->get_popup()->add_separator(TTR("Directions"));
+ // TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
onion_skinning->get_popup()->add_check_item(TTR("Past"), ONION_SKINNING_PAST);
onion_skinning->get_popup()->set_item_checked(-1, true);
+ // TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
onion_skinning->get_popup()->add_check_item(TTR("Future"), ONION_SKINNING_FUTURE);
onion_skinning->get_popup()->add_separator(TTR("Depth"));
onion_skinning->get_popup()->add_radio_check_item(TTR("1 step"), ONION_SKINNING_1_STEP);
diff --git a/editor/plugins/animation_state_machine_editor.cpp b/editor/plugins/animation_state_machine_editor.cpp
index bd9b89cbb7..00cc5a6ca0 100644
--- a/editor/plugins/animation_state_machine_editor.cpp
+++ b/editor/plugins/animation_state_machine_editor.cpp
@@ -817,11 +817,11 @@ bool AnimationNodeStateMachineEditor::_create_submenu(PopupMenu *p_menu, Ref<Ani
Vector<Ref<AnimationNodeStateMachine>> parents = p_parents;
if (from_root) {
- Ref<AnimationNodeStateMachine> prev = p_nodesm->get_prev_state_machine();
+ AnimationNodeStateMachine *prev = p_nodesm->get_prev_state_machine();
- while (prev.is_valid()) {
+ while (prev != nullptr) {
parents.push_back(prev);
- p_nodesm = prev;
+ p_nodesm = Ref<AnimationNodeStateMachine>(prev);
prev_path += "../";
prev = prev->get_prev_state_machine();
}
@@ -1220,7 +1220,7 @@ void AnimationNodeStateMachineEditor::_state_machine_draw() {
for (const StringName &E : nodes) {
Ref<AnimationNode> anode = state_machine->get_node(E);
String name = E;
- bool needs_editor = EditorNode::get_singleton()->item_has_editor(anode.ptr());
+ bool needs_editor = AnimationTreeEditor::get_singleton()->can_edit(anode);
Ref<StyleBox> sb = selected_nodes.has(E) ? style_selected : style;
Size2 s = sb->get_minimum_size();
@@ -1432,7 +1432,6 @@ void AnimationNodeStateMachineEditor::_state_machine_draw() {
} else {
state_machine_draw->draw_texture(edit, nr.edit.position);
}
- offset.x += sep + edit->get_width();
}
}
@@ -1944,7 +1943,7 @@ AnimationNodeStateMachineEditor::AnimationNodeStateMachineEditor() {
tool_erase_hb->add_child(tool_erase);
top_hb->add_child(memnew(VSeparator));
- top_hb->add_child(memnew(Label(TTR("Transition: "))));
+ top_hb->add_child(memnew(Label(TTR("Transition:"))));
transition_mode = memnew(OptionButton);
top_hb->add_child(transition_mode);
diff --git a/editor/plugins/canvas_item_editor_plugin.cpp b/editor/plugins/canvas_item_editor_plugin.cpp
index d28629b41a..1ea0299d4e 100644
--- a/editor/plugins/canvas_item_editor_plugin.cpp
+++ b/editor/plugins/canvas_item_editor_plugin.cpp
@@ -1284,10 +1284,12 @@ void CanvasItemEditor::_pan_callback(Vector2 p_scroll_vec) {
}
void CanvasItemEditor::_zoom_callback(Vector2 p_scroll_vec, Vector2 p_origin, bool p_alt) {
- zoom_widget->set_zoom_by_increments(-1, p_alt);
- if (!Math::is_equal_approx(p_scroll_vec.y, (real_t)1.0)) {
+ int scroll_sign = (int)SIGN(p_scroll_vec.y);
+ // Inverted so that scrolling up (-1) zooms in, scrolling down (+1) zooms out.
+ zoom_widget->set_zoom_by_increments(-scroll_sign, p_alt);
+ if (!Math::is_equal_approx(ABS(p_scroll_vec.y), (real_t)1.0)) {
// Handle high-precision (analog) scrolling.
- zoom_widget->set_zoom(zoom * ((zoom_widget->get_zoom() / zoom - 1.f) * p_scroll_vec.y + 1.f));
+ zoom_widget->set_zoom(zoom * ((zoom_widget->get_zoom() / zoom - 1.f) * ABS(p_scroll_vec.y) + 1.f));
}
_zoom_on_position(zoom_widget->get_zoom(), p_origin);
}
@@ -3777,7 +3779,7 @@ void CanvasItemEditor::_update_editor_settings() {
key_auto_insert_button->add_theme_color_override("icon_pressed_color", key_auto_color.lerp(Color(1, 0, 0), 0.55));
animation_menu->set_icon(get_theme_icon(SNAME("GuiTabMenuHl"), SNAME("EditorIcons")));
- _update_context_menu_stylebox();
+ context_menu_container->add_theme_style_override("panel", get_theme_stylebox(SNAME("ContextualToolbar"), SNAME("EditorStyles")));
panner->setup((ViewPanner::ControlScheme)EDITOR_GET("editors/panning/2d_editor_panning_scheme").operator int(), ED_GET_SHORTCUT("canvas_item_editor/pan_view"), bool(EditorSettings::get_singleton()->get("editors/panning/simple_panning")));
pan_speed = int(EditorSettings::get_singleton()->get("editors/panning/2d_editor_pan_speed"));
@@ -3913,18 +3915,6 @@ void CanvasItemEditor::edit(CanvasItem *p_canvas_item) {
}
}
-void CanvasItemEditor::_update_context_menu_stylebox() {
- // This must be called when the theme changes to follow the new accent color.
- Ref<StyleBoxFlat> context_menu_stylebox = memnew(StyleBoxFlat);
- const Color accent_color = EditorNode::get_singleton()->get_gui_base()->get_theme_color(SNAME("accent_color"), SNAME("Editor"));
- context_menu_stylebox->set_bg_color(accent_color * Color(1, 1, 1, 0.1));
- // Add an underline to the StyleBox, but prevent its minimum vertical size from changing.
- context_menu_stylebox->set_border_color(accent_color);
- context_menu_stylebox->set_border_width(SIDE_BOTTOM, Math::round(2 * EDSCALE));
- context_menu_stylebox->set_default_margin(SIDE_BOTTOM, 0);
- context_menu_container->add_theme_style_override("panel", context_menu_stylebox);
-}
-
void CanvasItemEditor::_update_scrollbars() {
updating_scroll = true;
@@ -4099,6 +4089,8 @@ void CanvasItemEditor::_button_tool_select(int p_index) {
void CanvasItemEditor::_insert_animation_keys(bool p_location, bool p_rotation, bool p_scale, bool p_on_existing) {
const HashMap<Node *, Object *> &selection = editor_selection->get_selection();
+ AnimationTrackEditor *te = AnimationPlayerEditor::get_singleton()->get_track_editor();
+ te->make_insert_queue();
for (const KeyValue<Node *, Object *> &E : selection) {
CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E.key);
if (!canvas_item || !canvas_item->is_visible_in_tree()) {
@@ -4113,13 +4105,13 @@ void CanvasItemEditor::_insert_animation_keys(bool p_location, bool p_rotation,
Node2D *n2d = Object::cast_to<Node2D>(canvas_item);
if (key_pos && p_location) {
- AnimationPlayerEditor::get_singleton()->get_track_editor()->insert_node_value_key(n2d, "position", n2d->get_position(), p_on_existing);
+ te->insert_node_value_key(n2d, "position", n2d->get_position(), p_on_existing);
}
if (key_rot && p_rotation) {
- AnimationPlayerEditor::get_singleton()->get_track_editor()->insert_node_value_key(n2d, "rotation", n2d->get_rotation(), p_on_existing);
+ te->insert_node_value_key(n2d, "rotation", n2d->get_rotation(), p_on_existing);
}
if (key_scale && p_scale) {
- AnimationPlayerEditor::get_singleton()->get_track_editor()->insert_node_value_key(n2d, "scale", n2d->get_scale(), p_on_existing);
+ te->insert_node_value_key(n2d, "scale", n2d->get_scale(), p_on_existing);
}
if (n2d->has_meta("_edit_bone_") && n2d->get_parent_item()) {
@@ -4145,13 +4137,13 @@ void CanvasItemEditor::_insert_animation_keys(bool p_location, bool p_rotation,
if (has_chain && ik_chain.size()) {
for (Node2D *&F : ik_chain) {
if (key_pos) {
- AnimationPlayerEditor::get_singleton()->get_track_editor()->insert_node_value_key(F, "position", F->get_position(), p_on_existing);
+ te->insert_node_value_key(F, "position", F->get_position(), p_on_existing);
}
if (key_rot) {
- AnimationPlayerEditor::get_singleton()->get_track_editor()->insert_node_value_key(F, "rotation", F->get_rotation(), p_on_existing);
+ te->insert_node_value_key(F, "rotation", F->get_rotation(), p_on_existing);
}
if (key_scale) {
- AnimationPlayerEditor::get_singleton()->get_track_editor()->insert_node_value_key(F, "scale", F->get_scale(), p_on_existing);
+ te->insert_node_value_key(F, "scale", F->get_scale(), p_on_existing);
}
}
}
@@ -4161,16 +4153,17 @@ void CanvasItemEditor::_insert_animation_keys(bool p_location, bool p_rotation,
Control *ctrl = Object::cast_to<Control>(canvas_item);
if (key_pos) {
- AnimationPlayerEditor::get_singleton()->get_track_editor()->insert_node_value_key(ctrl, "rect_position", ctrl->get_position(), p_on_existing);
+ te->insert_node_value_key(ctrl, "rect_position", ctrl->get_position(), p_on_existing);
}
if (key_rot) {
- AnimationPlayerEditor::get_singleton()->get_track_editor()->insert_node_value_key(ctrl, "rect_rotation", ctrl->get_rotation(), p_on_existing);
+ te->insert_node_value_key(ctrl, "rect_rotation", ctrl->get_rotation(), p_on_existing);
}
if (key_scale) {
- AnimationPlayerEditor::get_singleton()->get_track_editor()->insert_node_value_key(ctrl, "rect_size", ctrl->get_size(), p_on_existing);
+ te->insert_node_value_key(ctrl, "rect_size", ctrl->get_size(), p_on_existing);
}
}
}
+ te->commit_insert_queue();
}
void CanvasItemEditor::_update_override_camera_button(bool p_game_running) {
@@ -4932,6 +4925,19 @@ CanvasItemEditor::CanvasItemEditor() {
controls_vb = memnew(VBoxContainer);
controls_vb->set_begin(Point2(5, 5));
+ // To ensure that scripts can parse the list of shortcuts correctly, we have to define
+ // those shortcuts one by one. Define shortcut before using it (by EditorZoomWidget)
+ ED_SHORTCUT("canvas_item_editor/zoom_3.125_percent", TTR("Zoom to 3.125%"), KeyModifierMask::SHIFT | Key::KEY_5);
+ ED_SHORTCUT("canvas_item_editor/zoom_6.25_percent", TTR("Zoom to 6.25%"), KeyModifierMask::SHIFT | Key::KEY_4);
+ ED_SHORTCUT("canvas_item_editor/zoom_12.5_percent", TTR("Zoom to 12.5%"), KeyModifierMask::SHIFT | Key::KEY_3);
+ ED_SHORTCUT("canvas_item_editor/zoom_25_percent", TTR("Zoom to 25%"), KeyModifierMask::SHIFT | Key::KEY_2);
+ ED_SHORTCUT("canvas_item_editor/zoom_50_percent", TTR("Zoom to 50%"), KeyModifierMask::SHIFT | Key::KEY_1);
+ ED_SHORTCUT_ARRAY("canvas_item_editor/zoom_100_percent", TTR("Zoom to 100%"), { (int32_t)Key::KEY_1, (int32_t)(KeyModifierMask::CMD | Key::KEY_0) });
+ ED_SHORTCUT("canvas_item_editor/zoom_200_percent", TTR("Zoom to 200%"), Key::KEY_2);
+ ED_SHORTCUT("canvas_item_editor/zoom_400_percent", TTR("Zoom to 400%"), Key::KEY_3);
+ ED_SHORTCUT("canvas_item_editor/zoom_800_percent", TTR("Zoom to 800%"), Key::KEY_4);
+ ED_SHORTCUT("canvas_item_editor/zoom_1600_percent", TTR("Zoom to 1600%"), Key::KEY_5);
+
zoom_widget = memnew(EditorZoomWidget);
controls_vb->add_child(zoom_widget);
zoom_widget->set_anchors_and_offsets_preset(Control::PRESET_TOP_LEFT, Control::PRESET_MODE_MINSIZE, 2 * EDSCALE);
@@ -5156,11 +5162,12 @@ CanvasItemEditor::CanvasItemEditor() {
hb->add_child(memnew(VSeparator));
view_menu = memnew(MenuButton);
- view_menu->set_shortcut_context(this);
+ // TRANSLATORS: Noun, name of the 2D/3D View menus.
view_menu->set_text(TTR("View"));
+ view_menu->set_switch_on_hover(true);
+ view_menu->set_shortcut_context(this);
hb->add_child(view_menu);
view_menu->get_popup()->connect("id_pressed", callable_mp(this, &CanvasItemEditor::_popup_callback));
- view_menu->set_switch_on_hover(true);
p = view_menu->get_popup();
p->set_hide_on_checkable_item_selection(false);
@@ -5197,11 +5204,7 @@ CanvasItemEditor::CanvasItemEditor() {
context_menu_container = memnew(PanelContainer);
hbc_context_menu = memnew(HBoxContainer);
context_menu_container->add_child(hbc_context_menu);
- // Use a custom stylebox to make contextual menu items stand out from the rest.
- // This helps with editor usability as contextual menu items change when selecting nodes,
- // even though it may not be immediately obvious at first.
hb->add_child(context_menu_container);
- _update_context_menu_stylebox();
// Animation controls.
animation_hb = memnew(HBoxContainer);
@@ -5293,19 +5296,6 @@ CanvasItemEditor::CanvasItemEditor() {
// Store the singleton instance.
singleton = this;
- // To ensure that scripts can parse the list of shortcuts correctly, we have to define
- // those shortcuts one by one.
- ED_SHORTCUT("canvas_item_editor/zoom_3.125_percent", TTR("Zoom to 3.125%"), KeyModifierMask::SHIFT | Key::KEY_5);
- ED_SHORTCUT("canvas_item_editor/zoom_6.25_percent", TTR("Zoom to 6.25%"), KeyModifierMask::SHIFT | Key::KEY_4);
- ED_SHORTCUT("canvas_item_editor/zoom_12.5_percent", TTR("Zoom to 12.5%"), KeyModifierMask::SHIFT | Key::KEY_3);
- ED_SHORTCUT("canvas_item_editor/zoom_25_percent", TTR("Zoom to 25%"), KeyModifierMask::SHIFT | Key::KEY_2);
- ED_SHORTCUT("canvas_item_editor/zoom_50_percent", TTR("Zoom to 50%"), KeyModifierMask::SHIFT | Key::KEY_1);
- ED_SHORTCUT_ARRAY("canvas_item_editor/zoom_100_percent", TTR("Zoom to 100%"), { (int32_t)Key::KEY_1, (int32_t)(KeyModifierMask::CMD | Key::KEY_0) });
- ED_SHORTCUT("canvas_item_editor/zoom_200_percent", TTR("Zoom to 200%"), Key::KEY_2);
- ED_SHORTCUT("canvas_item_editor/zoom_400_percent", TTR("Zoom to 400%"), Key::KEY_3);
- ED_SHORTCUT("canvas_item_editor/zoom_800_percent", TTR("Zoom to 800%"), Key::KEY_4);
- ED_SHORTCUT("canvas_item_editor/zoom_1600_percent", TTR("Zoom to 1600%"), Key::KEY_5);
-
set_process_shortcut_input(true);
// Update the menus' checkboxes
diff --git a/editor/plugins/canvas_item_editor_plugin.h b/editor/plugins/canvas_item_editor_plugin.h
index a4099079f3..c20a054800 100644
--- a/editor/plugins/canvas_item_editor_plugin.h
+++ b/editor/plugins/canvas_item_editor_plugin.h
@@ -492,8 +492,6 @@ private:
HSplitContainer *right_panel_split = nullptr;
VSplitContainer *bottom_split = nullptr;
- void _update_context_menu_stylebox();
-
void _set_owner_for_node_and_children(Node *p_node, Node *p_owner);
friend class CanvasItemEditorPlugin;
diff --git a/editor/plugins/control_editor_plugin.cpp b/editor/plugins/control_editor_plugin.cpp
index ebb0da1ad7..3adaf8f601 100644
--- a/editor/plugins/control_editor_plugin.cpp
+++ b/editor/plugins/control_editor_plugin.cpp
@@ -120,7 +120,7 @@ ControlPositioningWarning::ControlPositioningWarning() {
grid->add_child(title_icon);
title_label = memnew(Label);
- title_label->set_autowrap_mode(Label::AutowrapMode::AUTOWRAP_WORD);
+ title_label->set_autowrap_mode(TextServer::AutowrapMode::AUTOWRAP_WORD);
title_label->set_h_size_flags(Control::SIZE_EXPAND_FILL);
title_label->set_vertical_alignment(VerticalAlignment::VERTICAL_ALIGNMENT_CENTER);
grid->add_child(title_label);
@@ -135,7 +135,7 @@ ControlPositioningWarning::ControlPositioningWarning() {
grid->add_child(hint_filler_left);
hint_label = memnew(Label);
- hint_label->set_autowrap_mode(Label::AutowrapMode::AUTOWRAP_WORD);
+ hint_label->set_autowrap_mode(TextServer::AutowrapMode::AUTOWRAP_WORD);
hint_label->set_h_size_flags(Control::SIZE_EXPAND_FILL);
hint_label->set_vertical_alignment(VerticalAlignment::VERTICAL_ALIGNMENT_CENTER);
hint_label->hide();
diff --git a/editor/plugins/gpu_particles_3d_editor_plugin.cpp b/editor/plugins/gpu_particles_3d_editor_plugin.cpp
index b022fcc1c9..fa971679e6 100644
--- a/editor/plugins/gpu_particles_3d_editor_plugin.cpp
+++ b/editor/plugins/gpu_particles_3d_editor_plugin.cpp
@@ -213,7 +213,7 @@ GPUParticles3DEditorBase::GPUParticles3DEditorBase() {
emission_fill->add_item(TTR("Surface Points"));
emission_fill->add_item(TTR("Surface Points+Normal (Directed)"));
emission_fill->add_item(TTR("Volume"));
- emd_vb->add_margin_child(TTR("Emission Source: "), emission_fill);
+ emd_vb->add_margin_child(TTR("Emission Source:"), emission_fill);
emission_dialog->get_ok_button()->set_text(TTR("Create"));
emission_dialog->connect("confirmed", callable_mp(this, &GPUParticles3DEditorBase::_generate_emission_points));
diff --git a/editor/plugins/input_event_editor_plugin.cpp b/editor/plugins/input_event_editor_plugin.cpp
index fb0e260388..153eab32d2 100644
--- a/editor/plugins/input_event_editor_plugin.cpp
+++ b/editor/plugins/input_event_editor_plugin.cpp
@@ -80,12 +80,11 @@ void InputEventConfigContainer::set_event(const Ref<InputEvent> &p_event) {
InputEventConfigContainer::InputEventConfigContainer() {
input_event_text = memnew(Label);
input_event_text->set_h_size_flags(SIZE_EXPAND_FILL);
- input_event_text->set_autowrap_mode(Label::AutowrapMode::AUTOWRAP_WORD_SMART);
+ input_event_text->set_autowrap_mode(TextServer::AutowrapMode::AUTOWRAP_WORD_SMART);
input_event_text->set_horizontal_alignment(HORIZONTAL_ALIGNMENT_CENTER);
add_child(input_event_text);
- open_config_button = memnew(Button);
- open_config_button->set_text(TTR("Configure"));
+ open_config_button = EditorInspector::create_inspector_action_button(TTR("Configure"));
open_config_button->connect("pressed", callable_mp(this, &InputEventConfigContainer::_configure_pressed));
add_child(open_config_button);
diff --git a/editor/plugins/mesh_instance_3d_editor_plugin.cpp b/editor/plugins/mesh_instance_3d_editor_plugin.cpp
index d85087b5ea..d1f858315c 100644
--- a/editor/plugins/mesh_instance_3d_editor_plugin.cpp
+++ b/editor/plugins/mesh_instance_3d_editor_plugin.cpp
@@ -350,8 +350,8 @@ struct MeshInstance3DEditorEdgeSort {
Vector2 b;
static uint32_t hash(const MeshInstance3DEditorEdgeSort &p_edge) {
- uint32_t h = hash_djb2_one_32(HashMapHasherDefault::hash(p_edge.a));
- return hash_djb2_one_32(HashMapHasherDefault::hash(p_edge.b), h);
+ uint32_t h = hash_murmur3_one_32(HashMapHasherDefault::hash(p_edge.a));
+ return hash_fmix32(hash_murmur3_one_32(HashMapHasherDefault::hash(p_edge.b), h));
}
bool operator==(const MeshInstance3DEditorEdgeSort &p_b) const {
diff --git a/editor/plugins/node_3d_editor_plugin.cpp b/editor/plugins/node_3d_editor_plugin.cpp
index cbdb1e520a..815d0a2425 100644
--- a/editor/plugins/node_3d_editor_plugin.cpp
+++ b/editor/plugins/node_3d_editor_plugin.cpp
@@ -411,6 +411,12 @@ void Node3DEditorViewport::cancel_transform() {
set_message(TTR("Transform Aborted."), 3);
}
+void Node3DEditorViewport::_update_shrink() {
+ bool shrink = view_menu->get_popup()->is_item_checked(view_menu->get_popup()->get_item_index(VIEW_HALF_RESOLUTION));
+ subviewport_container->set_stretch_shrink(shrink ? 2 : 1);
+ subviewport_container->set_texture_filter(shrink ? TEXTURE_FILTER_NEAREST : TEXTURE_FILTER_PARENT_NODE);
+}
+
float Node3DEditorViewport::get_znear() const {
return CLAMP(spatial_editor->get_znear(), MIN_Z, MAX_Z);
}
@@ -2387,11 +2393,7 @@ void Node3DEditorViewport::_project_settings_changed() {
viewport->set_shadow_atlas_quadrant_subdiv(2, Viewport::ShadowAtlasQuadrantSubdiv(atlas_q2));
viewport->set_shadow_atlas_quadrant_subdiv(3, Viewport::ShadowAtlasQuadrantSubdiv(atlas_q3));
- bool shrink = view_menu->get_popup()->is_item_checked(view_menu->get_popup()->get_item_index(VIEW_HALF_RESOLUTION));
-
- if (shrink != (subviewport_container->get_stretch_shrink() > 1)) {
- subviewport_container->set_stretch_shrink(shrink ? 2 : 1);
- }
+ _update_shrink();
// Update MSAA, screen-space AA and debanding if changed
@@ -2399,6 +2401,9 @@ void Node3DEditorViewport::_project_settings_changed() {
viewport->set_msaa(Viewport::MSAA(msaa_mode));
const int ssaa_mode = GLOBAL_GET("rendering/anti_aliasing/quality/screen_space_aa");
viewport->set_screen_space_aa(Viewport::ScreenSpaceAA(ssaa_mode));
+ const bool use_taa = GLOBAL_GET("rendering/anti_aliasing/quality/use_taa");
+ viewport->set_use_taa(use_taa);
+
const bool use_debanding = GLOBAL_GET("rendering/anti_aliasing/quality/use_debanding");
viewport->set_use_debanding(use_debanding);
@@ -2407,6 +2412,18 @@ void Node3DEditorViewport::_project_settings_changed() {
const float mesh_lod_threshold = GLOBAL_GET("rendering/mesh_lod/lod_change/threshold_pixels");
viewport->set_mesh_lod_threshold(mesh_lod_threshold);
+
+ const Viewport::Scaling3DMode scaling_3d_mode = Viewport::Scaling3DMode(int(GLOBAL_GET("rendering/scaling_3d/mode")));
+ viewport->set_scaling_3d_mode(scaling_3d_mode);
+
+ const float scaling_3d_scale = GLOBAL_GET("rendering/scaling_3d/scale");
+ viewport->set_scaling_3d_scale(scaling_3d_scale);
+
+ const float fsr_sharpness = GLOBAL_GET("rendering/scaling_3d/fsr_sharpness");
+ viewport->set_fsr_sharpness(fsr_sharpness);
+
+ const float fsr_mipmap_bias = GLOBAL_GET("rendering/scaling_3d/fsr_mipmap_bias");
+ viewport->set_fsr_mipmap_bias(fsr_mipmap_bias);
}
void Node3DEditorViewport::_notification(int p_what) {
@@ -3085,8 +3102,8 @@ void Node3DEditorViewport::_menu_option(int p_option) {
case VIEW_HALF_RESOLUTION: {
int idx = view_menu->get_popup()->get_item_index(VIEW_HALF_RESOLUTION);
bool current = view_menu->get_popup()->is_item_checked(idx);
- current = !current;
- view_menu->get_popup()->set_item_checked(idx, current);
+ view_menu->get_popup()->set_item_checked(idx, !current);
+ _update_shrink();
} break;
case VIEW_INFORMATION: {
int idx = view_menu->get_popup()->get_item_index(VIEW_INFORMATION);
@@ -3124,7 +3141,8 @@ void Node3DEditorViewport::_menu_option(int p_option) {
case VIEW_DISPLAY_DEBUG_CLUSTER_SPOT_LIGHTS:
case VIEW_DISPLAY_DEBUG_CLUSTER_DECALS:
case VIEW_DISPLAY_DEBUG_CLUSTER_REFLECTION_PROBES:
- case VIEW_DISPLAY_DEBUG_OCCLUDERS: {
+ case VIEW_DISPLAY_DEBUG_OCCLUDERS:
+ case VIEW_DISPLAY_MOTION_VECTORS: {
static const int display_options[] = {
VIEW_DISPLAY_NORMAL,
VIEW_DISPLAY_WIREFRAME,
@@ -3152,6 +3170,7 @@ void Node3DEditorViewport::_menu_option(int p_option) {
VIEW_DISPLAY_DEBUG_CLUSTER_DECALS,
VIEW_DISPLAY_DEBUG_CLUSTER_REFLECTION_PROBES,
VIEW_DISPLAY_DEBUG_OCCLUDERS,
+ VIEW_DISPLAY_MOTION_VECTORS,
VIEW_MAX
};
static const Viewport::DebugDraw debug_draw_modes[] = {
@@ -3181,6 +3200,7 @@ void Node3DEditorViewport::_menu_option(int p_option) {
Viewport::DEBUG_DRAW_CLUSTER_DECALS,
Viewport::DEBUG_DRAW_CLUSTER_REFLECTION_PROBES,
Viewport::DEBUG_DRAW_OCCLUDERS,
+ Viewport::DEBUG_DRAW_MOTION_VECTORS,
};
int idx = 0;
@@ -4159,7 +4179,8 @@ void Node3DEditorViewport::update_transform(Point2 p_mousepos, bool p_shift) {
Vector3 motion_snapped = motion;
motion_snapped.snap(Vector3(snap, snap, snap));
// This might not be necessary anymore after issue #288 is solved (in 4.0?).
- set_message(TTR("Scaling: ") + "(" + String::num(motion_snapped.x, snap_step_decimals) + ", " +
+ // TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
+ set_message(TTR("Scaling:") + " (" + String::num(motion_snapped.x, snap_step_decimals) + ", " +
String::num(motion_snapped.y, snap_step_decimals) + ", " + String::num(motion_snapped.z, snap_step_decimals) + ")");
motion = _edit.original.basis.inverse().xform(motion);
@@ -4259,7 +4280,8 @@ void Node3DEditorViewport::update_transform(Point2 p_mousepos, bool p_shift) {
}
Vector3 motion_snapped = motion;
motion_snapped.snap(Vector3(snap, snap, snap));
- set_message(TTR("Translating: ") + "(" + String::num(motion_snapped.x, snap_step_decimals) + ", " +
+ // TRANSLATORS: Refers to changing the position of a node in the 3D editor.
+ set_message(TTR("Translating:") + " (" + String::num(motion_snapped.x, snap_step_decimals) + ", " +
String::num(motion_snapped.y, snap_step_decimals) + ", " + String::num(motion_snapped.z, snap_step_decimals) + ")");
motion = spatial_editor->get_gizmo_transform().basis.inverse().xform(motion);
@@ -4545,6 +4567,7 @@ Node3DEditorViewport::Node3DEditorViewport(Node3DEditor *p_spatial_editor, int p
display_submenu->add_radio_check_item(TTR("Decal Cluster"), VIEW_DISPLAY_DEBUG_CLUSTER_DECALS);
display_submenu->add_radio_check_item(TTR("ReflectionProbe Cluster"), VIEW_DISPLAY_DEBUG_CLUSTER_REFLECTION_PROBES);
display_submenu->add_radio_check_item(TTR("Occlusion Culling Buffer"), VIEW_DISPLAY_DEBUG_OCCLUDERS);
+ display_submenu->add_radio_check_item(TTR("Motion Vectors"), VIEW_DISPLAY_MOTION_VECTORS);
display_submenu->set_name("display_advanced");
view_menu->get_popup()->add_submenu_item(TTR("Display Advanced..."), "display_advanced", VIEW_DISPLAY_ADVANCED);
@@ -6351,18 +6374,6 @@ void fragment() {
_generate_selection_boxes();
}
-void Node3DEditor::_update_context_menu_stylebox() {
- // This must be called when the theme changes to follow the new accent color.
- Ref<StyleBoxFlat> context_menu_stylebox = memnew(StyleBoxFlat);
- const Color accent_color = EditorNode::get_singleton()->get_gui_base()->get_theme_color(SNAME("accent_color"), SNAME("Editor"));
- context_menu_stylebox->set_bg_color(accent_color * Color(1, 1, 1, 0.1));
- // Add an underline to the StyleBox, but prevent its minimum vertical size from changing.
- context_menu_stylebox->set_border_color(accent_color);
- context_menu_stylebox->set_border_width(SIDE_BOTTOM, Math::round(2 * EDSCALE));
- context_menu_stylebox->set_default_margin(SIDE_BOTTOM, 0);
- context_menu_container->add_theme_style_override("panel", context_menu_stylebox);
-}
-
void Node3DEditor::_update_gizmos_menu() {
gizmos_menu->clear();
@@ -6954,6 +6965,8 @@ void Node3DEditor::_update_theme() {
sun_color->set_custom_minimum_size(Size2(0, get_theme_constant(SNAME("color_picker_button_height"), SNAME("Editor"))));
environ_sky_color->set_custom_minimum_size(Size2(0, get_theme_constant(SNAME("color_picker_button_height"), SNAME("Editor"))));
environ_ground_color->set_custom_minimum_size(Size2(0, get_theme_constant(SNAME("color_picker_button_height"), SNAME("Editor"))));
+
+ context_menu_container->add_theme_style_override("panel", get_theme_stylebox(SNAME("ContextualToolbar"), SNAME("EditorStyles")));
}
void Node3DEditor::_notification(int p_what) {
@@ -6992,7 +7005,6 @@ void Node3DEditor::_notification(int p_what) {
case NOTIFICATION_THEME_CHANGED: {
_update_theme();
_update_gizmos_menu_theme();
- _update_context_menu_stylebox();
sun_title->add_theme_font_override("font", get_theme_font(SNAME("title_font"), SNAME("Window")));
environ_title->add_theme_font_override("font", get_theme_font(SNAME("title_font"), SNAME("Window")));
} break;
@@ -7702,6 +7714,7 @@ Node3DEditor::Node3DEditor() {
p->connect("id_pressed", callable_mp(this, &Node3DEditor::_menu_item_pressed));
view_menu = memnew(MenuButton);
+ // TRANSLATORS: Noun, name of the 2D/3D View menus.
view_menu->set_text(TTR("View"));
view_menu->set_switch_on_hover(true);
view_menu->set_shortcut_context(this);
@@ -7712,11 +7725,7 @@ Node3DEditor::Node3DEditor() {
context_menu_container = memnew(PanelContainer);
hbc_context_menu = memnew(HBoxContainer);
context_menu_container->add_child(hbc_context_menu);
- // Use a custom stylebox to make contextual menu items stand out from the rest.
- // This helps with editor usability as contextual menu items change when selecting nodes,
- // even though it may not be immediately obvious at first.
hbc_menu->add_child(context_menu_container);
- _update_context_menu_stylebox();
// Get the view menu popup and have it stay open when a checkable item is selected
p = view_menu->get_popup();
@@ -8126,7 +8135,13 @@ void Node3DEditorPlugin::edit(Object *p_object) {
}
bool Node3DEditorPlugin::handles(Object *p_object) const {
- return p_object->is_class("Node3D");
+ if (p_object->is_class("Node3D")) {
+ return true;
+ } else {
+ // This ensures that gizmos are cleared when selecting a non-Node3D node.
+ const_cast<Node3DEditorPlugin *>(this)->edit((Object *)nullptr);
+ return false;
+ }
}
Dictionary Node3DEditorPlugin::get_state() const {
diff --git a/editor/plugins/node_3d_editor_plugin.h b/editor/plugins/node_3d_editor_plugin.h
index 511135a5f1..8a602be08b 100644
--- a/editor/plugins/node_3d_editor_plugin.h
+++ b/editor/plugins/node_3d_editor_plugin.h
@@ -141,6 +141,7 @@ class Node3DEditorViewport : public Control {
VIEW_DISPLAY_DEBUG_CLUSTER_DECALS,
VIEW_DISPLAY_DEBUG_CLUSTER_REFLECTION_PROBES,
VIEW_DISPLAY_DEBUG_OCCLUDERS,
+ VIEW_DISPLAY_MOTION_VECTORS,
VIEW_LOCK_ROTATION,
VIEW_CINEMATIC_PREVIEW,
@@ -251,6 +252,7 @@ private:
Transform3D _get_camera_transform() const;
int get_selected_count() const;
void cancel_transform();
+ void _update_shrink();
Vector3 _get_camera_position() const;
Vector3 _get_camera_normal() const;
@@ -674,7 +676,6 @@ private:
int camera_override_viewport_id;
void _init_indicators();
- void _update_context_menu_stylebox();
void _update_gizmos_menu();
void _update_gizmos_menu_theme();
void _init_grid();
diff --git a/editor/plugins/occluder_instance_3d_editor_plugin.cpp b/editor/plugins/occluder_instance_3d_editor_plugin.cpp
index 79cf4c394e..d5fc51aea4 100644
--- a/editor/plugins/occluder_instance_3d_editor_plugin.cpp
+++ b/editor/plugins/occluder_instance_3d_editor_plugin.cpp
@@ -63,7 +63,7 @@ void OccluderInstance3DEditorPlugin::_bake_select_file(const String &p_file) {
break;
}
case OccluderInstance3D::BAKE_ERROR_CANT_SAVE: {
- EditorNode::get_singleton()->show_warning(TTR("Could not save the new occluder at the specified path: ") + p_file);
+ EditorNode::get_singleton()->show_warning(TTR("Could not save the new occluder at the specified path:") + " " + p_file);
break;
}
default: {
diff --git a/editor/plugins/path_3d_editor_plugin.cpp b/editor/plugins/path_3d_editor_plugin.cpp
index 3851738cfa..36f559b2ae 100644
--- a/editor/plugins/path_3d_editor_plugin.cpp
+++ b/editor/plugins/path_3d_editor_plugin.cpp
@@ -37,6 +37,19 @@
#include "node_3d_editor_plugin.h"
#include "scene/resources/curve.h"
+static bool _is_in_handle(int p_id, int p_num_points) {
+ int t = (p_id + 1) % 2;
+ int idx = (p_id + 1) / 2;
+ // order of points is [out_0, out_1, in_1, out_2, in_2, ... out_n-1, in_n-1, in_n]
+ if (idx == 0) {
+ return false;
+ } else if (idx == (p_num_points - 1)) {
+ return true;
+ } else {
+ return (t == 1);
+ }
+}
+
String Path3DGizmo::get_handle_name(int p_id, bool p_secondary) const {
Ref<Curve3D> c = path->get_curve();
if (c.is_null()) {
@@ -47,12 +60,10 @@ String Path3DGizmo::get_handle_name(int p_id, bool p_secondary) const {
return TTR("Curve Point #") + itos(p_id);
}
- p_id += 1; // Account for the first point only having an "out" handle
-
- int idx = p_id / 2;
- int t = p_id % 2;
+ // (p_id + 1) Accounts for the first point only having an "out" handle
+ int idx = (p_id + 1) / 2;
String n = TTR("Curve Point #") + itos(idx);
- if (t == 0) {
+ if (_is_in_handle(p_id, c->get_point_count())) {
n += " In";
} else {
n += " Out";
@@ -72,13 +83,11 @@ Variant Path3DGizmo::get_handle_value(int p_id, bool p_secondary) const {
return original;
}
- p_id += 1; // Account for the first point only having an "out" handle
-
- int idx = p_id / 2;
- int t = p_id % 2;
+ // (p_id + 1) Accounts for the first point only having an "out" handle
+ int idx = (p_id + 1) / 2;
Vector3 ofs;
- if (t == 0) {
+ if (_is_in_handle(p_id, c->get_point_count())) {
ofs = c->get_point_in(idx);
} else {
ofs = c->get_point_out(idx);
@@ -119,10 +128,8 @@ void Path3DGizmo::set_handle(int p_id, bool p_secondary, Camera3D *p_camera, con
return;
}
- p_id += 1; // Account for the first point only having an "out" handle
-
- int idx = p_id / 2;
- int t = p_id % 2;
+ // (p_id + 1) Accounts for the first point only having an "out" handle
+ int idx = (p_id + 1) / 2;
Vector3 base = c->get_point_position(idx);
@@ -144,7 +151,7 @@ void Path3DGizmo::set_handle(int p_id, bool p_secondary, Camera3D *p_camera, con
local.snap(Vector3(snap, snap, snap));
}
- if (t == 0) {
+ if (_is_in_handle(p_id, c->get_point_count())) {
c->set_point_in(idx, local);
if (Path3DEditorPlugin::singleton->mirror_angle_enabled()) {
c->set_point_out(idx, Path3DEditorPlugin::singleton->mirror_length_enabled() ? -local : (-local.normalized() * orig_out_length));
@@ -179,12 +186,10 @@ void Path3DGizmo::commit_handle(int p_id, bool p_secondary, const Variant &p_res
return;
}
- p_id += 1; // Account for the first point only having an "out" handle
-
- int idx = p_id / 2;
- int t = p_id % 2;
+ // (p_id + 1) Accounts for the first point only having an "out" handle
+ int idx = (p_id + 1) / 2;
- if (t == 0) {
+ if (_is_in_handle(p_id, c->get_point_count())) {
if (p_cancel) {
c->set_point_in(p_id, p_restore);
return;
@@ -263,17 +268,17 @@ void Path3DGizmo::redraw() {
for (int i = 0; i < c->get_point_count(); i++) {
Vector3 p = c->get_point_position(i);
handles.push_back(p);
- if (i > 0) {
- v3p.push_back(p);
- v3p.push_back(p + c->get_point_in(i));
- sec_handles.push_back(p + c->get_point_in(i));
- }
-
+ // push Out points first so they get selected if the In and Out points are on top of each other.
if (i < c->get_point_count() - 1) {
v3p.push_back(p);
v3p.push_back(p + c->get_point_out(i));
sec_handles.push_back(p + c->get_point_out(i));
}
+ if (i > 0) {
+ v3p.push_back(p);
+ v3p.push_back(p + c->get_point_in(i));
+ sec_handles.push_back(p + c->get_point_in(i));
+ }
}
if (v3p.size() > 1) {
diff --git a/editor/plugins/resource_preloader_editor_plugin.cpp b/editor/plugins/resource_preloader_editor_plugin.cpp
index 16e874d7e2..79fc304242 100644
--- a/editor/plugins/resource_preloader_editor_plugin.cpp
+++ b/editor/plugins/resource_preloader_editor_plugin.cpp
@@ -420,11 +420,8 @@ ResourcePreloaderEditorPlugin::ResourcePreloaderEditorPlugin() {
preloader_editor = memnew(ResourcePreloaderEditor);
preloader_editor->set_custom_minimum_size(Size2(0, 250) * EDSCALE);
- button = EditorNode::get_singleton()->add_bottom_panel_item(TTR("ResourcePreloader"), preloader_editor);
+ button = EditorNode::get_singleton()->add_bottom_panel_item("ResourcePreloader", preloader_editor);
button->hide();
-
- //preloader_editor->set_anchor( MARGIN_TOP, Control::ANCHOR_END);
- //preloader_editor->set_margin( MARGIN_TOP, 120 );
}
ResourcePreloaderEditorPlugin::~ResourcePreloaderEditorPlugin() {
diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp
index b9d99fcc93..6ab2366a44 100644
--- a/editor/plugins/script_editor_plugin.cpp
+++ b/editor/plugins/script_editor_plugin.cpp
@@ -3547,7 +3547,7 @@ void ScriptEditor::_on_find_in_files_result_selected(String fpath, int line_numb
ShaderEditorPlugin *shader_editor = Object::cast_to<ShaderEditorPlugin>(EditorNode::get_singleton()->get_editor_data().get_editor("Shader"));
shader_editor->edit(res.ptr());
shader_editor->make_visible(true);
- shader_editor->get_shader_editor()->goto_line_selection(line_number - 1, begin, end);
+ shader_editor->get_shader_editor(res)->goto_line_selection(line_number - 1, begin, end);
return;
} else if (fpath.get_extension() == "tscn") {
EditorNode::get_singleton()->load_scene(fpath);
diff --git a/editor/plugins/shader_editor_plugin.cpp b/editor/plugins/shader_editor_plugin.cpp
index c13d0dc197..04b407ce65 100644
--- a/editor/plugins/shader_editor_plugin.cpp
+++ b/editor/plugins/shader_editor_plugin.cpp
@@ -38,8 +38,12 @@
#include "editor/editor_node.h"
#include "editor/editor_scale.h"
#include "editor/editor_settings.h"
+#include "editor/filesystem_dock.h"
+#include "editor/plugins/visual_shader_editor_plugin.h"
#include "editor/project_settings_editor.h"
#include "editor/property_editor.h"
+#include "editor/shader_create_dialog.h"
+#include "scene/gui/split_container.h"
#include "servers/display_server.h"
#include "servers/rendering/shader_types.h"
@@ -836,50 +840,216 @@ ShaderEditor::ShaderEditor() {
_editor_settings_changed();
}
+void ShaderEditorPlugin::_update_shader_list() {
+ shader_list->clear();
+ for (uint32_t i = 0; i < edited_shaders.size(); i++) {
+ String text;
+ String path = edited_shaders[i].shader->get_path();
+ String _class = edited_shaders[i].shader->get_class();
+
+ if (path.is_resource_file()) {
+ text = path.get_file();
+ } else if (edited_shaders[i].shader->get_name() != "") {
+ text = edited_shaders[i].shader->get_name();
+ } else {
+ text = _class + ":" + itos(edited_shaders[i].shader->get_instance_id());
+ }
+
+ if (!shader_list->has_theme_icon(_class, SNAME("EditorIcons"))) {
+ _class = "Resource";
+ }
+ Ref<Texture2D> icon = shader_list->get_theme_icon(_class, SNAME("EditorIcons"));
+
+ shader_list->add_item(text, icon);
+ shader_list->set_item_tooltip(shader_list->get_item_count() - 1, path);
+ }
+
+ if (shader_tabs->get_tab_count()) {
+ shader_list->select(shader_tabs->get_current_tab());
+ }
+
+ for (int i = 1; i < FILE_MAX; i++) {
+ file_menu->get_popup()->set_item_disabled(file_menu->get_popup()->get_item_index(i), edited_shaders.size() == 0);
+ }
+}
+
void ShaderEditorPlugin::edit(Object *p_object) {
Shader *s = Object::cast_to<Shader>(p_object);
- shader_editor->edit(s);
+ for (uint32_t i = 0; i < edited_shaders.size(); i++) {
+ if (edited_shaders[i].shader.ptr() == s) {
+ // Exists, select.
+ shader_tabs->set_current_tab(i);
+ shader_list->select(i);
+ return;
+ }
+ }
+ // Add.
+ EditedShader es;
+ es.shader = Ref<Shader>(s);
+ Ref<VisualShader> vs = es.shader;
+ if (vs.is_valid()) {
+ es.visual_shader_editor = memnew(VisualShaderEditor);
+ es.visual_shader_editor->edit(vs.ptr());
+ shader_tabs->add_child(es.visual_shader_editor);
+ } else {
+ es.shader_editor = memnew(ShaderEditor);
+ es.shader_editor->edit(s);
+ shader_tabs->add_child(es.shader_editor);
+ }
+ shader_tabs->set_current_tab(shader_tabs->get_tab_count() - 1);
+ edited_shaders.push_back(es);
+ _update_shader_list();
}
bool ShaderEditorPlugin::handles(Object *p_object) const {
- Shader *shader = Object::cast_to<Shader>(p_object);
- return shader != nullptr && shader->is_text_shader();
+ return Object::cast_to<Shader>(p_object) != nullptr;
}
void ShaderEditorPlugin::make_visible(bool p_visible) {
if (p_visible) {
- button->show();
- EditorNode::get_singleton()->make_bottom_panel_item_visible(shader_editor);
-
- } else {
- button->hide();
- if (shader_editor->is_visible_in_tree()) {
- EditorNode::get_singleton()->hide_bottom_panel();
- }
- shader_editor->apply_shaders();
+ EditorNode::get_singleton()->make_bottom_panel_item_visible(main_split);
}
}
void ShaderEditorPlugin::selected_notify() {
- shader_editor->ensure_select_current();
+}
+
+ShaderEditor *ShaderEditorPlugin::get_shader_editor(const Ref<Shader> &p_for_shader) {
+ for (uint32_t i = 0; i < edited_shaders.size(); i++) {
+ if (edited_shaders[i].shader == p_for_shader) {
+ return edited_shaders[i].shader_editor;
+ }
+ }
+ return nullptr;
}
void ShaderEditorPlugin::save_external_data() {
- shader_editor->save_external_data();
+ for (uint32_t i = 0; i < edited_shaders.size(); i++) {
+ if (edited_shaders[i].shader_editor) {
+ edited_shaders[i].shader_editor->save_external_data();
+ }
+ }
}
void ShaderEditorPlugin::apply_changes() {
- shader_editor->apply_shaders();
+ for (uint32_t i = 0; i < edited_shaders.size(); i++) {
+ if (edited_shaders[i].shader_editor) {
+ edited_shaders[i].shader_editor->apply_shaders();
+ }
+ }
+}
+
+void ShaderEditorPlugin::_shader_selected(int p_index) {
+ shader_tabs->set_current_tab(p_index);
+}
+
+void ShaderEditorPlugin::_close_shader(int p_index) {
+ int index = shader_tabs->get_current_tab();
+ ERR_FAIL_INDEX(index, shader_tabs->get_tab_count());
+ Control *c = shader_tabs->get_tab_control(index);
+ memdelete(c);
+ edited_shaders.remove_at(index);
+ _update_shader_list();
+}
+
+void ShaderEditorPlugin::_resource_saved(Object *obj) {
+ // May have been renamed on save.
+ for (uint32_t i = 0; i < edited_shaders.size(); i++) {
+ if (edited_shaders[i].shader.ptr() == obj) {
+ _update_shader_list();
+ return;
+ }
+ }
+}
+
+void ShaderEditorPlugin::_menu_item_pressed(int p_index) {
+ switch (p_index) {
+ case FILE_NEW: {
+ String base_path = FileSystemDock::get_singleton()->get_current_path();
+ shader_create_dialog->config(base_path.plus_file("new_shader"), false, false, 0);
+ shader_create_dialog->popup_centered();
+ } break;
+ case FILE_OPEN: {
+ InspectorDock::get_singleton()->open_resource("Shader");
+ } break;
+ case FILE_SAVE: {
+ int index = shader_tabs->get_current_tab();
+ ERR_FAIL_INDEX(index, shader_tabs->get_tab_count());
+ EditorNode::get_singleton()->save_resource(edited_shaders[index].shader);
+ } break;
+ case FILE_SAVE_AS: {
+ int index = shader_tabs->get_current_tab();
+ ERR_FAIL_INDEX(index, shader_tabs->get_tab_count());
+ String path = edited_shaders[index].shader->get_path();
+ if (!path.is_resource_file()) {
+ path = "";
+ }
+ EditorNode::get_singleton()->save_resource_as(edited_shaders[index].shader, path);
+ } break;
+ case FILE_INSPECT: {
+ int index = shader_tabs->get_current_tab();
+ ERR_FAIL_INDEX(index, shader_tabs->get_tab_count());
+ EditorNode::get_singleton()->push_item(edited_shaders[index].shader.ptr());
+ } break;
+ case FILE_CLOSE: {
+ _close_shader(shader_tabs->get_current_tab());
+ } break;
+ }
+}
+
+void ShaderEditorPlugin::_shader_created(Ref<Shader> p_shader) {
+ EditorNode::get_singleton()->push_item(p_shader.ptr());
}
ShaderEditorPlugin::ShaderEditorPlugin() {
- shader_editor = memnew(ShaderEditor);
+ main_split = memnew(HSplitContainer);
+
+ VBoxContainer *vb = memnew(VBoxContainer);
+
+ HBoxContainer *file_hb = memnew(HBoxContainer);
+ vb->add_child(file_hb);
+ file_menu = memnew(MenuButton);
+ file_menu->set_text(TTR("File"));
+ file_menu->get_popup()->add_item(TTR("New Shader"), FILE_NEW);
+ file_menu->get_popup()->add_separator();
+ file_menu->get_popup()->add_item(TTR("Load Shader"), FILE_OPEN);
+ file_menu->get_popup()->add_item(TTR("Save Shader"), FILE_SAVE);
+ file_menu->get_popup()->add_item(TTR("Save Shader As"), FILE_SAVE_AS);
+ file_menu->get_popup()->add_separator();
+ file_menu->get_popup()->add_item(TTR("Open Shader in Inspector"), FILE_INSPECT);
+ file_menu->get_popup()->add_separator();
+ file_menu->get_popup()->add_item(TTR("Close Shader"), FILE_CLOSE);
+ file_menu->get_popup()->connect("id_pressed", callable_mp(this, &ShaderEditorPlugin::_menu_item_pressed));
+ file_hb->add_child(file_menu);
+
+ for (int i = 1; i < FILE_MAX; i++) {
+ file_menu->get_popup()->set_item_disabled(file_menu->get_popup()->get_item_index(i), true);
+ }
+
+ shader_list = memnew(ItemList);
+ shader_list->set_v_size_flags(Control::SIZE_EXPAND_FILL);
+ vb->add_child(shader_list);
+ shader_list->connect("item_selected", callable_mp(this, &ShaderEditorPlugin::_shader_selected));
+
+ main_split->add_child(vb);
+ vb->set_custom_minimum_size(Size2(200, 300) * EDSCALE);
+
+ shader_tabs = memnew(TabContainer);
+ shader_tabs->set_tabs_visible(false);
+ shader_tabs->set_h_size_flags(Control::SIZE_EXPAND_FILL);
+ main_split->add_child(shader_tabs);
+ Ref<StyleBoxEmpty> empty;
+ empty.instantiate();
+ shader_tabs->add_theme_style_override("panel", empty);
+
+ button = EditorNode::get_singleton()->add_bottom_panel_item(TTR("Shader Editor"), main_split);
- shader_editor->set_custom_minimum_size(Size2(0, 300) * EDSCALE);
- button = EditorNode::get_singleton()->add_bottom_panel_item(TTR("Shader"), shader_editor);
- button->hide();
+ // Defer connect because Editor class is not in the binding system yet.
+ EditorNode::get_singleton()->call_deferred("connect", "resource_saved", callable_mp(this, &ShaderEditorPlugin::_resource_saved), varray(), CONNECT_DEFERRED);
- _2d = false;
+ shader_create_dialog = memnew(ShaderCreateDialog);
+ vb->add_child(shader_create_dialog);
+ shader_create_dialog->connect("shader_created", callable_mp(this, &ShaderEditorPlugin::_shader_created));
}
ShaderEditorPlugin::~ShaderEditorPlugin() {
diff --git a/editor/plugins/shader_editor_plugin.h b/editor/plugins/shader_editor_plugin.h
index bd0c2db824..e1e815f939 100644
--- a/editor/plugins/shader_editor_plugin.h
+++ b/editor/plugins/shader_editor_plugin.h
@@ -42,6 +42,11 @@
#include "scene/resources/shader.h"
#include "servers/rendering/shader_warnings.h"
+class ItemList;
+class VisualShaderEditor;
+class HSplitContainer;
+class ShaderCreateDialog;
+
class ShaderTextEditor : public CodeTextEditor {
GDCLASS(ShaderTextEditor, CodeTextEditor);
@@ -160,9 +165,40 @@ public:
class ShaderEditorPlugin : public EditorPlugin {
GDCLASS(ShaderEditorPlugin, EditorPlugin);
- bool _2d;
- ShaderEditor *shader_editor = nullptr;
+ struct EditedShader {
+ Ref<Shader> shader;
+ ShaderEditor *shader_editor = nullptr;
+ VisualShaderEditor *visual_shader_editor = nullptr;
+ };
+
+ LocalVector<EditedShader> edited_shaders;
+
+ enum {
+ FILE_NEW,
+ FILE_OPEN,
+ FILE_SAVE,
+ FILE_SAVE_AS,
+ FILE_INSPECT,
+ FILE_CLOSE,
+ FILE_MAX
+ };
+
+ HSplitContainer *main_split = nullptr;
+ ItemList *shader_list = nullptr;
+ TabContainer *shader_tabs = nullptr;
+
Button *button = nullptr;
+ MenuButton *file_menu = nullptr;
+
+ ShaderCreateDialog *shader_create_dialog = nullptr;
+
+ void _update_shader_list();
+ void _shader_selected(int p_index);
+ void _menu_item_pressed(int p_index);
+ void _resource_saved(Object *obj);
+ void _close_shader(int p_index);
+
+ void _shader_created(Ref<Shader> p_shader);
public:
virtual String get_name() const override { return "Shader"; }
@@ -172,7 +208,7 @@ public:
virtual void make_visible(bool p_visible) override;
virtual void selected_notify() override;
- ShaderEditor *get_shader_editor() const { return shader_editor; }
+ ShaderEditor *get_shader_editor(const Ref<Shader> &p_for_shader);
virtual void save_external_data() override;
virtual void apply_changes() override;
diff --git a/editor/plugins/sprite_2d_editor_plugin.cpp b/editor/plugins/sprite_2d_editor_plugin.cpp
index 6a63875324..ad817f9a41 100644
--- a/editor/plugins/sprite_2d_editor_plugin.cpp
+++ b/editor/plugins/sprite_2d_editor_plugin.cpp
@@ -546,7 +546,7 @@ Sprite2DEditor::Sprite2DEditor() {
debug_uv_dialog->connect("confirmed", callable_mp(this, &Sprite2DEditor::_create_node));
HBoxContainer *hb = memnew(HBoxContainer);
- hb->add_child(memnew(Label(TTR("Simplification: "))));
+ hb->add_child(memnew(Label(TTR("Simplification:"))));
simplification = memnew(SpinBox);
simplification->set_min(0.01);
simplification->set_max(10.00);
@@ -554,7 +554,7 @@ Sprite2DEditor::Sprite2DEditor() {
simplification->set_value(2);
hb->add_child(simplification);
hb->add_spacer();
- hb->add_child(memnew(Label(TTR("Shrink (Pixels): "))));
+ hb->add_child(memnew(Label(TTR("Shrink (Pixels):"))));
shrink_pixels = memnew(SpinBox);
shrink_pixels->set_min(0);
shrink_pixels->set_max(10);
@@ -562,7 +562,7 @@ Sprite2DEditor::Sprite2DEditor() {
shrink_pixels->set_value(0);
hb->add_child(shrink_pixels);
hb->add_spacer();
- hb->add_child(memnew(Label(TTR("Grow (Pixels): "))));
+ hb->add_child(memnew(Label(TTR("Grow (Pixels):"))));
grow_pixels = memnew(SpinBox);
grow_pixels->set_min(0);
grow_pixels->set_max(10);
diff --git a/editor/plugins/theme_editor_plugin.cpp b/editor/plugins/theme_editor_plugin.cpp
index 418115c041..c7dc61b3a8 100644
--- a/editor/plugins/theme_editor_plugin.cpp
+++ b/editor/plugins/theme_editor_plugin.cpp
@@ -1119,7 +1119,7 @@ ThemeItemImportTree::ThemeItemImportTree() {
select_icons_warning = memnew(Label);
select_icons_warning->set_text(TTR("Caution: Adding icon data may considerably increase the size of your Theme resource."));
- select_icons_warning->set_autowrap_mode(Label::AUTOWRAP_WORD_SMART);
+ select_icons_warning->set_autowrap_mode(TextServer::AUTOWRAP_WORD_SMART);
select_icons_warning->set_h_size_flags(Control::SIZE_EXPAND_FILL);
select_icons_warning_hb->add_child(select_icons_warning);
}
@@ -2021,7 +2021,7 @@ ThemeItemEditorDialog::ThemeItemEditorDialog(ThemeTypeEditor *p_theme_type_edito
edit_items_message->set_mouse_filter(Control::MOUSE_FILTER_STOP);
edit_items_message->set_horizontal_alignment(HORIZONTAL_ALIGNMENT_CENTER);
edit_items_message->set_vertical_alignment(VERTICAL_ALIGNMENT_CENTER);
- edit_items_message->set_autowrap_mode(Label::AUTOWRAP_WORD);
+ edit_items_message->set_autowrap_mode(TextServer::AUTOWRAP_WORD);
edit_items_tree->add_child(edit_items_message);
edit_theme_item_dialog = memnew(ConfirmationDialog);
@@ -3443,7 +3443,7 @@ ThemeTypeEditor::ThemeTypeEditor() {
type_variation_locked = memnew(Label);
type_variation_vb->add_child(type_variation_locked);
type_variation_locked->set_horizontal_alignment(HORIZONTAL_ALIGNMENT_CENTER);
- type_variation_locked->set_autowrap_mode(Label::AUTOWRAP_WORD);
+ type_variation_locked->set_autowrap_mode(TextServer::AUTOWRAP_WORD);
type_variation_locked->set_text(TTR("A type associated with a built-in class cannot be marked as a variation of another type."));
type_variation_locked->hide();
diff --git a/editor/plugins/tiles/tile_data_editors.cpp b/editor/plugins/tiles/tile_data_editors.cpp
index 244c718ebe..468681c967 100644
--- a/editor/plugins/tiles/tile_data_editors.cpp
+++ b/editor/plugins/tiles/tile_data_editors.cpp
@@ -776,13 +776,13 @@ GenericTilePolygonEditor::GenericTilePolygonEditor() {
button_advanced_menu = memnew(MenuButton);
button_advanced_menu->set_flat(true);
button_advanced_menu->set_toggle_mode(true);
- button_advanced_menu->get_popup()->add_item(TTR("Reset to default tile shape"), RESET_TO_DEFAULT_TILE);
- button_advanced_menu->get_popup()->add_item(TTR("Clear"), CLEAR_TILE);
+ button_advanced_menu->get_popup()->add_item(TTR("Reset to default tile shape"), RESET_TO_DEFAULT_TILE, Key::F);
+ button_advanced_menu->get_popup()->add_item(TTR("Clear"), CLEAR_TILE, Key::C);
button_advanced_menu->get_popup()->add_separator();
- button_advanced_menu->get_popup()->add_icon_item(get_theme_icon(SNAME("RotateRight"), SNAME("EditorIcons")), TTR("Rotate Right"), ROTATE_RIGHT);
- button_advanced_menu->get_popup()->add_icon_item(get_theme_icon(SNAME("RotateLeft"), SNAME("EditorIcons")), TTR("Rotate Left"), ROTATE_LEFT);
- button_advanced_menu->get_popup()->add_icon_item(get_theme_icon(SNAME("MirrorX"), SNAME("EditorIcons")), TTR("Flip Horizontally"), FLIP_HORIZONTALLY);
- button_advanced_menu->get_popup()->add_icon_item(get_theme_icon(SNAME("MirrorY"), SNAME("EditorIcons")), TTR("Flip Vertically"), FLIP_VERTICALLY);
+ button_advanced_menu->get_popup()->add_icon_item(get_theme_icon(SNAME("RotateRight"), SNAME("EditorIcons")), TTR("Rotate Right"), ROTATE_RIGHT, Key::R);
+ button_advanced_menu->get_popup()->add_icon_item(get_theme_icon(SNAME("RotateLeft"), SNAME("EditorIcons")), TTR("Rotate Left"), ROTATE_LEFT, Key::E);
+ button_advanced_menu->get_popup()->add_icon_item(get_theme_icon(SNAME("MirrorX"), SNAME("EditorIcons")), TTR("Flip Horizontally"), FLIP_HORIZONTALLY, Key::H);
+ button_advanced_menu->get_popup()->add_icon_item(get_theme_icon(SNAME("MirrorY"), SNAME("EditorIcons")), TTR("Flip Vertically"), FLIP_VERTICALLY, Key::V);
button_advanced_menu->get_popup()->connect("id_pressed", callable_mp(this, &GenericTilePolygonEditor::_advanced_menu_item_pressed));
button_advanced_menu->set_focus_mode(FOCUS_ALL);
toolbar->add_child(button_advanced_menu);
@@ -1147,7 +1147,7 @@ void TileDataDefaultEditor::setup_property_editor(Variant::Type p_type, String p
property_editor = EditorInspectorDefaultPlugin::get_editor_for_property(dummy_object, p_type, p_property, PROPERTY_HINT_NONE, "", PROPERTY_USAGE_DEFAULT);
property_editor->set_object_and_property(dummy_object, p_property);
if (p_label.is_empty()) {
- property_editor->set_label(p_property);
+ property_editor->set_label(EditorPropertyNameProcessor::get_singleton()->process_name(p_property, EditorPropertyNameProcessor::get_default_inspector_style()));
} else {
property_editor->set_label(p_label);
}
@@ -1173,6 +1173,7 @@ TileDataDefaultEditor::TileDataDefaultEditor() {
label = memnew(Label);
label->set_text(TTR("Painting:"));
+ label->set_theme_type_variation("HeaderSmall");
add_child(label);
toolbar->add_child(memnew(VSeparator));
@@ -1676,10 +1677,15 @@ void TileDataTerrainsEditor::forward_draw_over_atlas(TileAtlasView *p_tile_atlas
Vector<Color> color;
color.push_back(Color(1.0, 1.0, 1.0, 0.5));
+ Vector<Vector2> polygon = tile_set->get_terrain_polygon(terrain_set);
+ if (Geometry2D::is_point_in_polygon(xform.affine_inverse().xform(mouse_pos), polygon)) {
+ p_canvas_item->draw_set_transform_matrix(p_transform * xform);
+ p_canvas_item->draw_polygon(polygon, color);
+ }
for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
TileSet::CellNeighbor bit = TileSet::CellNeighbor(i);
- if (tile_set->is_valid_peering_bit_terrain(terrain_set, bit)) {
- Vector<Vector2> polygon = tile_set->get_terrain_bit_polygon(terrain_set, bit);
+ if (tile_set->is_valid_terrain_peering_bit(terrain_set, bit)) {
+ polygon = tile_set->get_terrain_peering_bit_polygon(terrain_set, bit);
if (Geometry2D::is_point_in_polygon(xform.affine_inverse().xform(mouse_pos), polygon)) {
p_canvas_item->draw_set_transform_matrix(p_transform * xform);
p_canvas_item->draw_polygon(polygon, color);
@@ -1806,10 +1812,19 @@ void TileDataTerrainsEditor::forward_draw_over_atlas(TileAtlasView *p_tile_atlas
Rect2i texture_region = p_tile_set_atlas_source->get_tile_texture_region(coords);
Vector2i position = texture_region.get_center() + p_tile_set_atlas_source->get_tile_effective_texture_offset(coords, 0);
+ Vector<Vector2> polygon = tile_set->get_terrain_polygon(terrain_set);
+ for (int j = 0; j < polygon.size(); j++) {
+ polygon.write[j] += position;
+ }
+ if (!Geometry2D::intersect_polygons(polygon, mouse_pos_rect_polygon).is_empty()) {
+ // Draw terrain.
+ p_canvas_item->draw_polygon(polygon, color);
+ }
+
for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
TileSet::CellNeighbor bit = TileSet::CellNeighbor(i);
- if (tile_set->is_valid_peering_bit_terrain(terrain_set, bit)) {
- Vector<Vector2> polygon = tile_set->get_terrain_bit_polygon(terrain_set, bit);
+ if (tile_set->is_valid_terrain_peering_bit(terrain_set, bit)) {
+ polygon = tile_set->get_terrain_peering_bit_polygon(terrain_set, bit);
for (int j = 0; j < polygon.size(); j++) {
polygon.write[j] += position;
}
@@ -1850,10 +1865,16 @@ void TileDataTerrainsEditor::forward_draw_over_alternatives(TileAtlasView *p_til
Vector<Color> color;
color.push_back(Color(1.0, 1.0, 1.0, 0.5));
+ Vector<Vector2> polygon = tile_set->get_terrain_polygon(terrain_set);
+ if (Geometry2D::is_point_in_polygon(xform.affine_inverse().xform(mouse_pos), polygon)) {
+ p_canvas_item->draw_set_transform_matrix(p_transform * xform);
+ p_canvas_item->draw_polygon(polygon, color);
+ }
+
for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
TileSet::CellNeighbor bit = TileSet::CellNeighbor(i);
- if (tile_set->is_valid_peering_bit_terrain(terrain_set, bit)) {
- Vector<Vector2> polygon = tile_set->get_terrain_bit_polygon(terrain_set, bit);
+ if (tile_set->is_valid_terrain_peering_bit(terrain_set, bit)) {
+ polygon = tile_set->get_terrain_peering_bit_polygon(terrain_set, bit);
if (Geometry2D::is_point_in_polygon(xform.affine_inverse().xform(mouse_pos), polygon)) {
p_canvas_item->draw_set_transform_matrix(p_transform * xform);
p_canvas_item->draw_polygon(polygon, color);
@@ -1926,10 +1947,11 @@ void TileDataTerrainsEditor::forward_painting_atlas_gui_input(TileAtlasView *p_t
if (!drag_modified.has(cell)) {
Dictionary dict;
dict["terrain_set"] = tile_data->get_terrain_set();
+ dict["terrain"] = tile_data->get_terrain();
Array array;
for (int j = 0; j < TileSet::CELL_NEIGHBOR_MAX; j++) {
TileSet::CellNeighbor bit = TileSet::CellNeighbor(j);
- array.push_back(tile_data->is_valid_peering_bit_terrain(bit) ? tile_data->get_peering_bit_terrain(bit) : -1);
+ array.push_back(tile_data->is_valid_terrain_peering_bit(bit) ? tile_data->get_terrain_peering_bit(bit) : -1);
}
dict["terrain_peering_bits"] = array;
drag_modified[cell] = dict;
@@ -1958,10 +1980,11 @@ void TileDataTerrainsEditor::forward_painting_atlas_gui_input(TileAtlasView *p_t
if (!drag_modified.has(cell)) {
Dictionary dict;
dict["terrain_set"] = tile_data->get_terrain_set();
+ dict["terrain"] = tile_data->get_terrain();
Array array;
for (int j = 0; j < TileSet::CELL_NEIGHBOR_MAX; j++) {
TileSet::CellNeighbor bit = TileSet::CellNeighbor(j);
- array.push_back(tile_data->is_valid_peering_bit_terrain(bit) ? tile_data->get_peering_bit_terrain(bit) : -1);
+ array.push_back(tile_data->is_valid_terrain_peering_bit(bit) ? tile_data->get_terrain_peering_bit(bit) : -1);
}
dict["terrain_peering_bits"] = array;
drag_modified[cell] = dict;
@@ -1970,12 +1993,17 @@ void TileDataTerrainsEditor::forward_painting_atlas_gui_input(TileAtlasView *p_t
// Set the terrains bits.
Rect2i texture_region = p_tile_set_atlas_source->get_tile_texture_region(coords);
Vector2i position = texture_region.get_center() + p_tile_set_atlas_source->get_tile_effective_texture_offset(coords, 0);
+
+ Vector<Vector2> polygon = tile_set->get_terrain_polygon(tile_data->get_terrain_set());
+ if (Geometry2D::is_segment_intersecting_polygon(mm->get_position() - position, drag_last_pos - position, polygon)) {
+ tile_data->set_terrain(terrain);
+ }
for (int j = 0; j < TileSet::CELL_NEIGHBOR_MAX; j++) {
TileSet::CellNeighbor bit = TileSet::CellNeighbor(j);
- if (tile_data->is_valid_peering_bit_terrain(bit)) {
- Vector<Vector2> polygon = tile_set->get_terrain_bit_polygon(tile_data->get_terrain_set(), bit);
+ if (tile_data->is_valid_terrain_peering_bit(bit)) {
+ polygon = tile_set->get_terrain_peering_bit_polygon(tile_data->get_terrain_set(), bit);
if (Geometry2D::is_segment_intersecting_polygon(mm->get_position() - position, drag_last_pos - position, polygon)) {
- tile_data->set_peering_bit_terrain(bit, terrain);
+ tile_data->set_terrain_peering_bit(bit, terrain);
}
}
}
@@ -2000,12 +2028,17 @@ void TileDataTerrainsEditor::forward_painting_atlas_gui_input(TileAtlasView *p_t
Vector2i position = texture_region.get_center() + p_tile_set_atlas_source->get_tile_effective_texture_offset(coords, 0);
dummy_object->set("terrain_set", terrain_set);
dummy_object->set("terrain", -1);
+
+ Vector<Vector2> polygon = tile_set->get_terrain_polygon(terrain_set);
+ if (Geometry2D::is_point_in_polygon(mb->get_position() - position, polygon)) {
+ dummy_object->set("terrain", tile_data->get_terrain());
+ }
for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
TileSet::CellNeighbor bit = TileSet::CellNeighbor(i);
- if (tile_set->is_valid_peering_bit_terrain(terrain_set, bit)) {
- Vector<Vector2> polygon = tile_set->get_terrain_bit_polygon(terrain_set, bit);
+ if (tile_set->is_valid_terrain_peering_bit(terrain_set, bit)) {
+ polygon = tile_set->get_terrain_peering_bit_polygon(terrain_set, bit);
if (Geometry2D::is_point_in_polygon(mb->get_position() - position, polygon)) {
- dummy_object->set("terrain", tile_data->get_peering_bit_terrain(bit));
+ dummy_object->set("terrain", tile_data->get_terrain_peering_bit(bit));
}
}
}
@@ -2044,10 +2077,11 @@ void TileDataTerrainsEditor::forward_painting_atlas_gui_input(TileAtlasView *p_t
// Save the old terrain_set and terrains bits.
Dictionary dict;
dict["terrain_set"] = tile_data->get_terrain_set();
+ dict["terrain"] = tile_data->get_terrain();
Array array;
for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
TileSet::CellNeighbor bit = TileSet::CellNeighbor(i);
- array.push_back(tile_data->is_valid_peering_bit_terrain(bit) ? tile_data->get_peering_bit_terrain(bit) : -1);
+ array.push_back(tile_data->is_valid_terrain_peering_bit(bit) ? tile_data->get_terrain_peering_bit(bit) : -1);
}
dict["terrain_peering_bits"] = array;
drag_modified[cell] = dict;
@@ -2085,10 +2119,11 @@ void TileDataTerrainsEditor::forward_painting_atlas_gui_input(TileAtlasView *p_t
// Save the old terrain_set and terrains bits.
Dictionary dict;
dict["terrain_set"] = tile_data->get_terrain_set();
+ dict["terrain"] = tile_data->get_terrain();
Array array;
for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
TileSet::CellNeighbor bit = TileSet::CellNeighbor(i);
- array.push_back(tile_data->is_valid_peering_bit_terrain(bit) ? tile_data->get_peering_bit_terrain(bit) : -1);
+ array.push_back(tile_data->is_valid_terrain_peering_bit(bit) ? tile_data->get_terrain_peering_bit(bit) : -1);
}
dict["terrain_peering_bits"] = array;
drag_modified[cell] = dict;
@@ -2097,12 +2132,16 @@ void TileDataTerrainsEditor::forward_painting_atlas_gui_input(TileAtlasView *p_t
Rect2i texture_region = p_tile_set_atlas_source->get_tile_texture_region(coords);
Vector2i position = texture_region.get_center() + p_tile_set_atlas_source->get_tile_effective_texture_offset(coords, 0);
+ Vector<Vector2> polygon = tile_set->get_terrain_polygon(terrain_set);
+ if (Geometry2D::is_point_in_polygon(mb->get_position() - position, polygon)) {
+ tile_data->set_terrain(terrain);
+ }
for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
TileSet::CellNeighbor bit = TileSet::CellNeighbor(i);
- if (tile_set->is_valid_peering_bit_terrain(terrain_set, bit)) {
- Vector<Vector2> polygon = tile_set->get_terrain_bit_polygon(terrain_set, bit);
+ if (tile_set->is_valid_terrain_peering_bit(terrain_set, bit)) {
+ polygon = tile_set->get_terrain_peering_bit_polygon(terrain_set, bit);
if (Geometry2D::is_point_in_polygon(mb->get_position() - position, polygon)) {
- tile_data->set_peering_bit_terrain(bit, terrain);
+ tile_data->set_terrain_peering_bit(bit, terrain);
}
}
}
@@ -2138,10 +2177,11 @@ void TileDataTerrainsEditor::forward_painting_atlas_gui_input(TileAtlasView *p_t
TileData *tile_data = p_tile_set_atlas_source->get_tile_data(coords, 0);
undo_redo->add_undo_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrain_set", coords.x, coords.y, E.alternative_tile), tile_data->get_terrain_set());
undo_redo->add_do_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrain_set", coords.x, coords.y, E.alternative_tile), drag_painted_value);
+ undo_redo->add_undo_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrain", coords.x, coords.y, E.alternative_tile), tile_data->get_terrain());
for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
TileSet::CellNeighbor bit = TileSet::CellNeighbor(i);
- if (tile_data->is_valid_peering_bit_terrain(bit)) {
- undo_redo->add_undo_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrains_peering_bit/" + String(TileSet::CELL_NEIGHBOR_ENUM_TO_TEXT[i]), coords.x, coords.y, E.alternative_tile), tile_data->get_peering_bit_terrain(bit));
+ if (tile_data->is_valid_terrain_peering_bit(bit)) {
+ undo_redo->add_undo_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrains_peering_bit/" + String(TileSet::CELL_NEIGHBOR_ENUM_TO_TEXT[i]), coords.x, coords.y, E.alternative_tile), tile_data->get_terrain_peering_bit(bit));
}
}
}
@@ -2154,10 +2194,11 @@ void TileDataTerrainsEditor::forward_painting_atlas_gui_input(TileAtlasView *p_t
Vector2i coords = E.key.get_atlas_coords();
undo_redo->add_do_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrain_set", coords.x, coords.y, E.key.alternative_tile), drag_painted_value);
undo_redo->add_undo_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrain_set", coords.x, coords.y, E.key.alternative_tile), dict["terrain_set"]);
+ undo_redo->add_undo_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrain", coords.x, coords.y, E.key.alternative_tile), dict["terrain"]);
Array array = dict["terrain_peering_bits"];
for (int i = 0; i < array.size(); i++) {
TileSet::CellNeighbor bit = TileSet::CellNeighbor(i);
- if (tile_set->is_valid_peering_bit_terrain(dict["terrain_set"], bit)) {
+ if (tile_set->is_valid_terrain_peering_bit(dict["terrain_set"], bit)) {
undo_redo->add_undo_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrains_peering_bit/" + String(TileSet::CELL_NEIGHBOR_ENUM_TO_TEXT[i]), coords.x, coords.y, E.key.alternative_tile), array[i]);
}
}
@@ -2172,13 +2213,15 @@ void TileDataTerrainsEditor::forward_painting_atlas_gui_input(TileAtlasView *p_t
for (KeyValue<TileMapCell, Variant> &E : drag_modified) {
Dictionary dict = E.value;
Vector2i coords = E.key.get_atlas_coords();
+ undo_redo->add_do_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrain", coords.x, coords.y, E.key.alternative_tile), terrain);
+ undo_redo->add_undo_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrain", coords.x, coords.y, E.key.alternative_tile), dict["terrain"]);
Array array = dict["terrain_peering_bits"];
for (int i = 0; i < array.size(); i++) {
TileSet::CellNeighbor bit = TileSet::CellNeighbor(i);
- if (tile_set->is_valid_peering_bit_terrain(terrain_set, bit)) {
+ if (tile_set->is_valid_terrain_peering_bit(terrain_set, bit)) {
undo_redo->add_do_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrains_peering_bit/" + String(TileSet::CELL_NEIGHBOR_ENUM_TO_TEXT[i]), coords.x, coords.y, E.key.alternative_tile), terrain);
}
- if (tile_set->is_valid_peering_bit_terrain(dict["terrain_set"], bit)) {
+ if (tile_set->is_valid_terrain_peering_bit(dict["terrain_set"], bit)) {
undo_redo->add_undo_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrains_peering_bit/" + String(TileSet::CELL_NEIGHBOR_ENUM_TO_TEXT[i]), coords.x, coords.y, E.key.alternative_tile), array[i]);
}
}
@@ -2224,20 +2267,30 @@ void TileDataTerrainsEditor::forward_painting_atlas_gui_input(TileAtlasView *p_t
Vector2i coords = E.get_atlas_coords();
TileData *tile_data = p_tile_set_atlas_source->get_tile_data(coords, 0);
+ Rect2i texture_region = p_tile_set_atlas_source->get_tile_texture_region(coords);
+ Vector2i position = texture_region.get_center() + p_tile_set_atlas_source->get_tile_effective_texture_offset(coords, 0);
+
+ Vector<Vector2> polygon = tile_set->get_terrain_polygon(terrain_set);
+ for (int j = 0; j < polygon.size(); j++) {
+ polygon.write[j] += position;
+ }
+ if (!Geometry2D::intersect_polygons(polygon, mouse_pos_rect_polygon).is_empty()) {
+ // Draw terrain.
+ undo_redo->add_do_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrain", coords.x, coords.y, E.alternative_tile), terrain);
+ undo_redo->add_undo_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrain", coords.x, coords.y, E.alternative_tile), tile_data->get_terrain());
+ }
+
for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
TileSet::CellNeighbor bit = TileSet::CellNeighbor(i);
- if (tile_set->is_valid_peering_bit_terrain(terrain_set, bit)) {
- Rect2i texture_region = p_tile_set_atlas_source->get_tile_texture_region(coords);
- Vector2i position = texture_region.get_center() + p_tile_set_atlas_source->get_tile_effective_texture_offset(coords, 0);
-
- Vector<Vector2> polygon = tile_set->get_terrain_bit_polygon(terrain_set, bit);
+ if (tile_set->is_valid_terrain_peering_bit(terrain_set, bit)) {
+ polygon = tile_set->get_terrain_peering_bit_polygon(terrain_set, bit);
for (int j = 0; j < polygon.size(); j++) {
polygon.write[j] += position;
}
if (!Geometry2D::intersect_polygons(polygon, mouse_pos_rect_polygon).is_empty()) {
// Draw bit.
undo_redo->add_do_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrains_peering_bit/" + String(TileSet::CELL_NEIGHBOR_ENUM_TO_TEXT[i]), coords.x, coords.y, E.alternative_tile), terrain);
- undo_redo->add_undo_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrains_peering_bit/" + String(TileSet::CELL_NEIGHBOR_ENUM_TO_TEXT[i]), coords.x, coords.y, E.alternative_tile), tile_data->get_peering_bit_terrain(bit));
+ undo_redo->add_undo_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrains_peering_bit/" + String(TileSet::CELL_NEIGHBOR_ENUM_TO_TEXT[i]), coords.x, coords.y, E.alternative_tile), tile_data->get_terrain_peering_bit(bit));
}
}
}
@@ -2267,10 +2320,11 @@ void TileDataTerrainsEditor::forward_painting_alternatives_gui_input(TileAtlasVi
if (!drag_modified.has(cell)) {
Dictionary dict;
dict["terrain_set"] = tile_data->get_terrain_set();
+ dict["terrain"] = tile_data->get_terrain();
Array array;
for (int j = 0; j < TileSet::CELL_NEIGHBOR_MAX; j++) {
TileSet::CellNeighbor bit = TileSet::CellNeighbor(j);
- array.push_back(tile_data->is_valid_peering_bit_terrain(bit) ? tile_data->get_peering_bit_terrain(bit) : -1);
+ array.push_back(tile_data->is_valid_terrain_peering_bit(bit) ? tile_data->get_terrain_peering_bit(bit) : -1);
}
dict["terrain_peering_bits"] = array;
drag_modified[cell] = dict;
@@ -2300,10 +2354,11 @@ void TileDataTerrainsEditor::forward_painting_alternatives_gui_input(TileAtlasVi
if (!drag_modified.has(cell)) {
Dictionary dict;
dict["terrain_set"] = tile_data->get_terrain_set();
+ dict["terrain"] = tile_data->get_terrain();
Array array;
for (int j = 0; j < TileSet::CELL_NEIGHBOR_MAX; j++) {
TileSet::CellNeighbor bit = TileSet::CellNeighbor(j);
- array.push_back(tile_data->is_valid_peering_bit_terrain(bit) ? tile_data->get_peering_bit_terrain(bit) : -1);
+ array.push_back(tile_data->is_valid_terrain_peering_bit(bit) ? tile_data->get_terrain_peering_bit(bit) : -1);
}
dict["terrain_peering_bits"] = array;
drag_modified[cell] = dict;
@@ -2312,12 +2367,18 @@ void TileDataTerrainsEditor::forward_painting_alternatives_gui_input(TileAtlasVi
// Set the terrains bits.
Rect2i texture_region = p_tile_atlas_view->get_alternative_tile_rect(coords, alternative_tile);
Vector2i position = texture_region.get_center() + p_tile_set_atlas_source->get_tile_effective_texture_offset(coords, alternative_tile);
+
+ Vector<Vector2> polygon = tile_set->get_terrain_polygon(tile_data->get_terrain_set());
+ if (Geometry2D::is_segment_intersecting_polygon(mm->get_position() - position, drag_last_pos - position, polygon)) {
+ tile_data->set_terrain(terrain);
+ }
+
for (int j = 0; j < TileSet::CELL_NEIGHBOR_MAX; j++) {
TileSet::CellNeighbor bit = TileSet::CellNeighbor(j);
- if (tile_data->is_valid_peering_bit_terrain(bit)) {
- Vector<Vector2> polygon = tile_set->get_terrain_bit_polygon(tile_data->get_terrain_set(), bit);
+ if (tile_data->is_valid_terrain_peering_bit(bit)) {
+ polygon = tile_set->get_terrain_peering_bit_polygon(tile_data->get_terrain_set(), bit);
if (Geometry2D::is_segment_intersecting_polygon(mm->get_position() - position, drag_last_pos - position, polygon)) {
- tile_data->set_peering_bit_terrain(bit, terrain);
+ tile_data->set_terrain_peering_bit(bit, terrain);
}
}
}
@@ -2343,12 +2404,18 @@ void TileDataTerrainsEditor::forward_painting_alternatives_gui_input(TileAtlasVi
Vector2i position = texture_region.get_center() + p_tile_set_atlas_source->get_tile_effective_texture_offset(coords, alternative_tile);
dummy_object->set("terrain_set", terrain_set);
dummy_object->set("terrain", -1);
+
+ Vector<Vector2> polygon = tile_set->get_terrain_polygon(terrain_set);
+ if (Geometry2D::is_point_in_polygon(mb->get_position() - position, polygon)) {
+ dummy_object->set("terrain", tile_data->get_terrain());
+ }
+
for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
TileSet::CellNeighbor bit = TileSet::CellNeighbor(i);
- if (tile_set->is_valid_peering_bit_terrain(terrain_set, bit)) {
- Vector<Vector2> polygon = tile_set->get_terrain_bit_polygon(terrain_set, bit);
+ if (tile_set->is_valid_terrain_peering_bit(terrain_set, bit)) {
+ polygon = tile_set->get_terrain_peering_bit_polygon(terrain_set, bit);
if (Geometry2D::is_point_in_polygon(mb->get_position() - position, polygon)) {
- dummy_object->set("terrain", tile_data->get_peering_bit_terrain(bit));
+ dummy_object->set("terrain", tile_data->get_terrain_peering_bit(bit));
}
}
}
@@ -2380,7 +2447,7 @@ void TileDataTerrainsEditor::forward_painting_alternatives_gui_input(TileAtlasVi
Array array;
for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
TileSet::CellNeighbor bit = TileSet::CellNeighbor(i);
- array.push_back(tile_data->is_valid_peering_bit_terrain(bit) ? tile_data->get_peering_bit_terrain(bit) : -1);
+ array.push_back(tile_data->is_valid_terrain_peering_bit(bit) ? tile_data->get_terrain_peering_bit(bit) : -1);
}
dict["terrain_peering_bits"] = array;
drag_modified[cell] = dict;
@@ -2405,10 +2472,11 @@ void TileDataTerrainsEditor::forward_painting_alternatives_gui_input(TileAtlasVi
// Save the old terrain_set and terrains bits.
Dictionary dict;
dict["terrain_set"] = tile_data->get_terrain_set();
+ dict["terrain"] = tile_data->get_terrain();
Array array;
for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
TileSet::CellNeighbor bit = TileSet::CellNeighbor(i);
- array.push_back(tile_data->is_valid_peering_bit_terrain(bit) ? tile_data->get_peering_bit_terrain(bit) : -1);
+ array.push_back(tile_data->is_valid_terrain_peering_bit(bit) ? tile_data->get_terrain_peering_bit(bit) : -1);
}
dict["terrain_peering_bits"] = array;
drag_modified[cell] = dict;
@@ -2416,12 +2484,17 @@ void TileDataTerrainsEditor::forward_painting_alternatives_gui_input(TileAtlasVi
// Set the terrain bit.
Rect2i texture_region = p_tile_atlas_view->get_alternative_tile_rect(coords, alternative_tile);
Vector2i position = texture_region.get_center() + p_tile_set_atlas_source->get_tile_effective_texture_offset(coords, alternative_tile);
+
+ Vector<Vector2> polygon = tile_set->get_terrain_polygon(terrain_set);
+ if (Geometry2D::is_point_in_polygon(mb->get_position() - position, polygon)) {
+ tile_data->set_terrain(terrain);
+ }
for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
TileSet::CellNeighbor bit = TileSet::CellNeighbor(i);
- if (tile_set->is_valid_peering_bit_terrain(terrain_set, bit)) {
- Vector<Vector2> polygon = tile_set->get_terrain_bit_polygon(terrain_set, bit);
+ if (tile_set->is_valid_terrain_peering_bit(terrain_set, bit)) {
+ polygon = tile_set->get_terrain_peering_bit_polygon(terrain_set, bit);
if (Geometry2D::is_point_in_polygon(mb->get_position() - position, polygon)) {
- tile_data->set_peering_bit_terrain(bit, terrain);
+ tile_data->set_terrain_peering_bit(bit, terrain);
}
}
}
@@ -2437,6 +2510,7 @@ void TileDataTerrainsEditor::forward_painting_alternatives_gui_input(TileAtlasVi
Vector2i coords = E.key.get_atlas_coords();
undo_redo->add_undo_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrain_set", coords.x, coords.y, E.key.alternative_tile), dict["terrain_set"]);
undo_redo->add_do_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrain_set", coords.x, coords.y, E.key.alternative_tile), drag_painted_value);
+ undo_redo->add_undo_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrain", coords.x, coords.y, E.key.alternative_tile), dict["terrain"]);
Array array = dict["terrain_peering_bits"];
for (int i = 0; i < array.size(); i++) {
undo_redo->add_undo_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrains_peering_bit/" + String(TileSet::CELL_NEIGHBOR_ENUM_TO_TEXT[i]), coords.x, coords.y, E.key.alternative_tile), array[i]);
@@ -2452,13 +2526,15 @@ void TileDataTerrainsEditor::forward_painting_alternatives_gui_input(TileAtlasVi
for (KeyValue<TileMapCell, Variant> &E : drag_modified) {
Dictionary dict = E.value;
Vector2i coords = E.key.get_atlas_coords();
+ undo_redo->add_do_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrain", coords.x, coords.y, E.key.alternative_tile), terrain);
+ undo_redo->add_undo_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrain", coords.x, coords.y, E.key.alternative_tile), dict["terrain"]);
Array array = dict["terrain_peering_bits"];
for (int i = 0; i < array.size(); i++) {
TileSet::CellNeighbor bit = TileSet::CellNeighbor(i);
- if (tile_set->is_valid_peering_bit_terrain(terrain_set, bit)) {
+ if (tile_set->is_valid_terrain_peering_bit(terrain_set, bit)) {
undo_redo->add_do_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrains_peering_bit/" + String(TileSet::CELL_NEIGHBOR_ENUM_TO_TEXT[i]), coords.x, coords.y, E.key.alternative_tile), terrain);
}
- if (tile_set->is_valid_peering_bit_terrain(dict["terrain_set"], bit)) {
+ if (tile_set->is_valid_terrain_peering_bit(dict["terrain_set"], bit)) {
undo_redo->add_undo_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrains_peering_bit/" + String(TileSet::CELL_NEIGHBOR_ENUM_TO_TEXT[i]), coords.x, coords.y, E.key.alternative_tile), array[i]);
}
}
@@ -2491,7 +2567,8 @@ TileDataTerrainsEditor::TileDataTerrainsEditor() {
undo_redo = EditorNode::get_undo_redo();
label = memnew(Label);
- label->set_text("Painting:");
+ label->set_text(TTR("Painting:"));
+ label->set_theme_type_variation("HeaderSmall");
add_child(label);
// Toolbar
diff --git a/editor/plugins/tiles/tile_map_editor.cpp b/editor/plugins/tiles/tile_map_editor.cpp
index 6c39244f80..77a3c07548 100644
--- a/editor/plugins/tiles/tile_map_editor.cpp
+++ b/editor/plugins/tiles/tile_map_editor.cpp
@@ -2028,7 +2028,6 @@ TileMapEditorTilesPlugin::TileMapEditorTilesPlugin() {
// --- Toolbar ---
toolbar = memnew(HBoxContainer);
- toolbar->set_h_size_flags(Control::SIZE_EXPAND_FILL);
HBoxContainer *tilemap_tiles_tools_buttons = memnew(HBoxContainer);
@@ -2321,7 +2320,7 @@ Vector<TileMapEditorPlugin::TabData> TileMapEditorTerrainsPlugin::get_tabs() con
return tabs;
}
-HashMap<Vector2i, TileMapCell> TileMapEditorTerrainsPlugin::_draw_terrains(const HashMap<Vector2i, TileSet::TerrainsPattern> &p_to_paint, int p_terrain_set) const {
+HashMap<Vector2i, TileMapCell> TileMapEditorTerrainsPlugin::_draw_terrain_path_or_connect(const Vector<Vector2i> &p_to_paint, int p_terrain_set, int p_terrain, bool p_connect) const {
TileMap *tile_map = Object::cast_to<TileMap>(ObjectDB::get_instance(tile_map_id));
if (!tile_map) {
return HashMap<Vector2i, TileMapCell>();
@@ -2332,105 +2331,87 @@ HashMap<Vector2i, TileMapCell> TileMapEditorTerrainsPlugin::_draw_terrains(const
return HashMap<Vector2i, TileMapCell>();
}
- HashMap<Vector2i, TileMapCell> output;
-
- // Add the constraints from the added tiles.
- RBSet<TileMap::TerrainConstraint> added_tiles_constraints_set;
- for (const KeyValue<Vector2i, TileSet::TerrainsPattern> &E_to_paint : p_to_paint) {
- Vector2i coords = E_to_paint.key;
- TileSet::TerrainsPattern terrains_pattern = E_to_paint.value;
-
- RBSet<TileMap::TerrainConstraint> cell_constraints = tile_map->get_terrain_constraints_from_added_tile(coords, p_terrain_set, terrains_pattern);
- for (const TileMap::TerrainConstraint &E : cell_constraints) {
- added_tiles_constraints_set.insert(E);
- }
- }
-
- // Build the list of potential tiles to replace.
- RBSet<Vector2i> potential_to_replace;
- for (const KeyValue<Vector2i, TileSet::TerrainsPattern> &E_to_paint : p_to_paint) {
- Vector2i coords = E_to_paint.key;
- for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
- if (tile_map->is_existing_neighbor(TileSet::CellNeighbor(i))) {
- Vector2i neighbor = tile_map->get_neighbor_cell(coords, TileSet::CellNeighbor(i));
- if (!p_to_paint.has(neighbor)) {
- potential_to_replace.insert(neighbor);
- }
- }
- }
+ HashMap<Vector2i, TileSet::TerrainsPattern> terrain_fill_output;
+ if (p_connect) {
+ terrain_fill_output = tile_map->terrain_fill_connect(tile_map_layer, p_to_paint, p_terrain_set, p_terrain, false);
+ } else {
+ terrain_fill_output = tile_map->terrain_fill_path(tile_map_layer, p_to_paint, p_terrain_set, p_terrain, false);
}
- // Set of tiles to replace
- RBSet<Vector2i> to_replace;
-
- // Add the central tiles to the one to replace.
- for (const KeyValue<Vector2i, TileSet::TerrainsPattern> &E_to_paint : p_to_paint) {
- to_replace.insert(E_to_paint.key);
+ // Make the painted path a set for faster lookups
+ HashSet<Vector2i> painted_set;
+ for (Vector2i coords : p_to_paint) {
+ painted_set.insert(coords);
}
- // Add the constraints from the surroundings of the modified areas.
- RBSet<TileMap::TerrainConstraint> removed_cells_constraints_set;
- bool to_replace_modified = true;
- while (to_replace_modified) {
- // Get the constraints from the removed cells.
- removed_cells_constraints_set = tile_map->get_terrain_constraints_from_removed_cells_list(tile_map_layer, to_replace, p_terrain_set, false);
-
- // Filter the sources to make sure they are in the potential_to_replace.
- RBMap<TileMap::TerrainConstraint, RBSet<Vector2i>> per_constraint_tiles;
- for (const TileMap::TerrainConstraint &E : removed_cells_constraints_set) {
- HashMap<Vector2i, TileSet::CellNeighbor> sources_of_constraint = E.get_overlapping_coords_and_peering_bits();
- for (const KeyValue<Vector2i, TileSet::CellNeighbor> &E_source_tile_of_constraint : sources_of_constraint) {
- if (potential_to_replace.has(E_source_tile_of_constraint.key)) {
- per_constraint_tiles[E].insert(E_source_tile_of_constraint.key);
- }
- }
- }
-
- to_replace_modified = false;
- for (const TileMap::TerrainConstraint &E : added_tiles_constraints_set) {
- TileMap::TerrainConstraint c = E;
- // Check if we have a conflict in constraints.
- if (removed_cells_constraints_set.has(c) && removed_cells_constraints_set.find(c)->get().get_terrain() != c.get_terrain()) {
- // If we do, we search for a neighbor to remove.
- if (per_constraint_tiles.has(c) && !per_constraint_tiles[c].is_empty()) {
- // Remove it.
- Vector2i to_add_to_remove = per_constraint_tiles[c].front()->get();
- potential_to_replace.erase(to_add_to_remove);
- to_replace.insert(to_add_to_remove);
- to_replace_modified = true;
- for (KeyValue<TileMap::TerrainConstraint, RBSet<Vector2i>> &E_source_tiles_of_constraint : per_constraint_tiles) {
- E_source_tiles_of_constraint.value.erase(to_add_to_remove);
+ HashMap<Vector2i, TileMapCell> output;
+ for (const KeyValue<Vector2i, TileSet::TerrainsPattern> &E : terrain_fill_output) {
+ if (painted_set.has(E.key)) {
+ // Paint a random tile with the correct terrain for the painted path.
+ output[E.key] = tile_set->get_random_tile_from_terrains_pattern(p_terrain_set, E.value);
+ } else {
+ // Avoids updating the painted path from the output if the new pattern is the same as before.
+ bool keep_old = false;
+ TileMapCell cell = tile_map->get_cell(tile_map_layer, E.key);
+ if (cell.source_id != TileSet::INVALID_SOURCE) {
+ TileSetSource *source = *tile_set->get_source(cell.source_id);
+ TileSetAtlasSource *atlas_source = Object::cast_to<TileSetAtlasSource>(source);
+ if (atlas_source) {
+ // Get tile data.
+ TileData *tile_data = atlas_source->get_tile_data(cell.get_atlas_coords(), cell.alternative_tile);
+ if (tile_data && tile_data->get_terrains_pattern() == E.value) {
+ keep_old = true;
}
- break;
}
}
+ if (!keep_old) {
+ output[E.key] = tile_set->get_random_tile_from_terrains_pattern(p_terrain_set, E.value);
+ }
}
}
+ return output;
+}
- // Combine all constraints together.
- RBSet<TileMap::TerrainConstraint> constraints = removed_cells_constraints_set;
- for (const TileMap::TerrainConstraint &E : added_tiles_constraints_set) {
- constraints.insert(E);
+HashMap<Vector2i, TileMapCell> TileMapEditorTerrainsPlugin::_draw_terrain_pattern(const Vector<Vector2i> &p_to_paint, int p_terrain_set, TileSet::TerrainsPattern p_terrains_pattern) const {
+ TileMap *tile_map = Object::cast_to<TileMap>(ObjectDB::get_instance(tile_map_id));
+ if (!tile_map) {
+ return HashMap<Vector2i, TileMapCell>();
}
- // Remove the central tiles from the ones to replace.
- for (const KeyValue<Vector2i, TileSet::TerrainsPattern> &E_to_paint : p_to_paint) {
- to_replace.erase(E_to_paint.key);
+ Ref<TileSet> tile_set = tile_map->get_tileset();
+ if (!tile_set.is_valid()) {
+ return HashMap<Vector2i, TileMapCell>();
}
- // Run WFC to fill the holes with the constraints.
- HashMap<Vector2i, TileSet::TerrainsPattern> wfc_output = tile_map->terrain_wave_function_collapse(to_replace, p_terrain_set, constraints);
+ HashMap<Vector2i, TileSet::TerrainsPattern> terrain_fill_output = tile_map->terrain_fill_pattern(tile_map_layer, p_to_paint, p_terrain_set, p_terrains_pattern, false);
- // Actually paint the tiles.
- for (const KeyValue<Vector2i, TileSet::TerrainsPattern> &E_to_paint : p_to_paint) {
- output[E_to_paint.key] = tile_set->get_random_tile_from_terrains_pattern(p_terrain_set, E_to_paint.value);
+ // Make the painted path a set for faster lookups
+ HashSet<Vector2i> painted_set;
+ for (Vector2i coords : p_to_paint) {
+ painted_set.insert(coords);
}
- // Use the WFC run for the output.
- for (const KeyValue<Vector2i, TileSet::TerrainsPattern> &E : wfc_output) {
- output[E.key] = tile_set->get_random_tile_from_terrains_pattern(p_terrain_set, E.value);
+ HashMap<Vector2i, TileMapCell> output;
+ for (const KeyValue<Vector2i, TileSet::TerrainsPattern> &E : terrain_fill_output) {
+ if (painted_set.has(E.key)) {
+ // Paint a random tile with the correct terrain for the painted path.
+ output[E.key] = tile_set->get_random_tile_from_terrains_pattern(p_terrain_set, E.value);
+ } else {
+ // Avoids updating the painted path from the output if the new pattern is the same as before.
+ TileMapCell cell = tile_map->get_cell(tile_map_layer, E.key);
+ if (cell.source_id != TileSet::INVALID_SOURCE) {
+ TileSetSource *source = *tile_set->get_source(cell.source_id);
+ TileSetAtlasSource *atlas_source = Object::cast_to<TileSetAtlasSource>(source);
+ if (atlas_source) {
+ // Get tile data.
+ TileData *tile_data = atlas_source->get_tile_data(cell.get_atlas_coords(), cell.alternative_tile);
+ if (tile_data && !(tile_data->get_terrains_pattern() == E.value)) {
+ output[E.key] = tile_set->get_random_tile_from_terrains_pattern(p_terrain_set, E.value);
+ }
+ }
+ }
+ }
}
-
return output;
}
@@ -2445,19 +2426,21 @@ HashMap<Vector2i, TileMapCell> TileMapEditorTerrainsPlugin::_draw_line(Vector2i
return HashMap<Vector2i, TileMapCell>();
}
- TileSet::TerrainsPattern terrains_pattern;
- if (p_erase) {
- terrains_pattern = TileSet::TerrainsPattern(*tile_set, selected_terrain_set);
- } else {
- terrains_pattern = selected_terrains_pattern;
- }
+ if (selected_type == SELECTED_TYPE_CONNECT) {
+ return _draw_terrain_path_or_connect(TileMapEditor::get_line(tile_map, p_start_cell, p_end_cell), selected_terrain_set, selected_terrain, true);
+ } else if (selected_type == SELECTED_TYPE_PATH) {
+ return _draw_terrain_path_or_connect(TileMapEditor::get_line(tile_map, p_start_cell, p_end_cell), selected_terrain_set, selected_terrain, false);
+ } else { // SELECTED_TYPE_PATTERN
+ TileSet::TerrainsPattern terrains_pattern;
+ if (p_erase) {
+ terrains_pattern = TileSet::TerrainsPattern(*tile_set, selected_terrain_set);
+ } else {
+ terrains_pattern = selected_terrains_pattern;
+ }
- Vector<Vector2i> line = TileMapEditor::get_line(tile_map, p_start_cell, p_end_cell);
- HashMap<Vector2i, TileSet::TerrainsPattern> to_draw;
- for (int i = 0; i < line.size(); i++) {
- to_draw[line[i]] = terrains_pattern;
+ Vector<Vector2i> line = TileMapEditor::get_line(tile_map, p_start_cell, p_end_cell);
+ return _draw_terrain_pattern(line, selected_terrain_set, terrains_pattern);
}
- return _draw_terrains(to_draw, selected_terrain_set);
}
HashMap<Vector2i, TileMapCell> TileMapEditorTerrainsPlugin::_draw_rect(Vector2i p_start_cell, Vector2i p_end_cell, bool p_erase) {
@@ -2471,25 +2454,29 @@ HashMap<Vector2i, TileMapCell> TileMapEditorTerrainsPlugin::_draw_rect(Vector2i
return HashMap<Vector2i, TileMapCell>();
}
- TileSet::TerrainsPattern terrains_pattern;
- if (p_erase) {
- terrains_pattern = TileSet::TerrainsPattern(*tile_set, selected_terrain_set);
- } else {
- terrains_pattern = selected_terrains_pattern;
- }
-
Rect2i rect;
rect.set_position(p_start_cell);
rect.set_end(p_end_cell);
rect = rect.abs();
- HashMap<Vector2i, TileSet::TerrainsPattern> to_draw;
+ Vector<Vector2i> to_draw;
for (int x = rect.position.x; x <= rect.get_end().x; x++) {
for (int y = rect.position.y; y <= rect.get_end().y; y++) {
- to_draw[Vector2i(x, y)] = terrains_pattern;
+ to_draw.append(Vector2i(x, y));
}
}
- return _draw_terrains(to_draw, selected_terrain_set);
+
+ if (selected_type == SELECTED_TYPE_CONNECT || selected_type == SELECTED_TYPE_PATH) {
+ return _draw_terrain_path_or_connect(to_draw, selected_terrain_set, selected_terrain, true);
+ } else { // SELECTED_TYPE_PATTERN
+ TileSet::TerrainsPattern terrains_pattern;
+ if (p_erase) {
+ terrains_pattern = TileSet::TerrainsPattern(*tile_set, selected_terrain_set);
+ } else {
+ terrains_pattern = selected_terrains_pattern;
+ }
+ return _draw_terrain_pattern(to_draw, selected_terrain_set, terrains_pattern);
+ }
}
RBSet<Vector2i> TileMapEditorTerrainsPlugin::_get_cells_for_bucket_fill(Vector2i p_coords, bool p_contiguous) {
@@ -2614,20 +2601,23 @@ HashMap<Vector2i, TileMapCell> TileMapEditorTerrainsPlugin::_draw_bucket_fill(Ve
return HashMap<Vector2i, TileMapCell>();
}
- TileSet::TerrainsPattern terrains_pattern;
- if (p_erase) {
- terrains_pattern = TileSet::TerrainsPattern(*tile_set, selected_terrain_set);
- } else {
- terrains_pattern = selected_terrains_pattern;
- }
-
RBSet<Vector2i> cells_to_draw = _get_cells_for_bucket_fill(p_coords, p_contiguous);
- HashMap<Vector2i, TileSet::TerrainsPattern> to_draw;
- for (const Vector2i &coords : cells_to_draw) {
- to_draw[coords] = terrains_pattern;
+ Vector<Vector2i> cells_to_draw_as_vector;
+ for (Vector2i cell : cells_to_draw) {
+ cells_to_draw_as_vector.append(cell);
}
- return _draw_terrains(to_draw, selected_terrain_set);
+ if (selected_type == SELECTED_TYPE_CONNECT || selected_type == SELECTED_TYPE_PATH) {
+ return _draw_terrain_path_or_connect(cells_to_draw_as_vector, selected_terrain_set, selected_terrain, true);
+ } else { // SELECTED_TYPE_PATTERN
+ TileSet::TerrainsPattern terrains_pattern;
+ if (p_erase) {
+ terrains_pattern = TileSet::TerrainsPattern(*tile_set, selected_terrain_set);
+ } else {
+ terrains_pattern = selected_terrains_pattern;
+ }
+ return _draw_terrain_pattern(cells_to_draw_as_vector, selected_terrain_set, terrains_pattern);
+ }
}
void TileMapEditorTerrainsPlugin::_stop_dragging() {
@@ -2696,11 +2686,13 @@ void TileMapEditorTerrainsPlugin::_stop_dragging() {
if (tree_item) {
for (int i = 0; i < terrains_tile_list->get_item_count(); i++) {
Dictionary metadata_dict = terrains_tile_list->get_item_metadata(i);
- TileSet::TerrainsPattern in_meta_terrains_pattern(*tile_set, new_terrain_set);
- in_meta_terrains_pattern.set_terrains_from_array(metadata_dict["terrains_pattern"]);
- if (in_meta_terrains_pattern == terrains_pattern) {
- terrains_tile_list->select(i);
- break;
+ if (int(metadata_dict["type"]) == SELECTED_TYPE_PATTERN) {
+ TileSet::TerrainsPattern in_meta_terrains_pattern(*tile_set, new_terrain_set);
+ in_meta_terrains_pattern.from_array(metadata_dict["terrains_pattern"]);
+ if (in_meta_terrains_pattern == terrains_pattern) {
+ terrains_tile_list->select(i);
+ break;
+ }
}
}
} else {
@@ -2773,22 +2765,33 @@ void TileMapEditorTerrainsPlugin::_update_selection() {
}
// Get the selected terrain.
- selected_terrains_pattern = TileSet::TerrainsPattern();
selected_terrain_set = -1;
+ selected_terrains_pattern = TileSet::TerrainsPattern();
TreeItem *selected_tree_item = terrains_tree->get_selected();
if (selected_tree_item && selected_tree_item->get_metadata(0)) {
Dictionary metadata_dict = selected_tree_item->get_metadata(0);
// Selected terrain
selected_terrain_set = metadata_dict["terrain_set"];
+ selected_terrain = metadata_dict["terrain_id"];
- // Selected tile
+ // Selected mode/terrain pattern
if (erase_button->is_pressed()) {
+ selected_type = SELECTED_TYPE_PATTERN;
selected_terrains_pattern = TileSet::TerrainsPattern(*tile_set, selected_terrain_set);
} else if (terrains_tile_list->is_anything_selected()) {
metadata_dict = terrains_tile_list->get_item_metadata(terrains_tile_list->get_selected_items()[0]);
- selected_terrains_pattern = TileSet::TerrainsPattern(*tile_set, selected_terrain_set);
- selected_terrains_pattern.set_terrains_from_array(metadata_dict["terrains_pattern"]);
+ if (int(metadata_dict["type"]) == SELECTED_TYPE_CONNECT) {
+ selected_type = SELECTED_TYPE_CONNECT;
+ } else if (int(metadata_dict["type"]) == SELECTED_TYPE_PATH) {
+ selected_type = SELECTED_TYPE_PATH;
+ } else if (int(metadata_dict["type"]) == SELECTED_TYPE_PATTERN) {
+ selected_type = SELECTED_TYPE_PATTERN;
+ selected_terrains_pattern = TileSet::TerrainsPattern(*tile_set, selected_terrain_set);
+ selected_terrains_pattern.from_array(metadata_dict["terrains_pattern"]);
+ } else {
+ ERR_FAIL();
+ }
}
}
}
@@ -2865,7 +2868,7 @@ bool TileMapEditorTerrainsPlugin::forward_canvas_gui_input(const Ref<InputEvent>
} else {
// Paint otherwise.
if (tool_buttons_group->get_pressed_button() == paint_tool_button && !Input::get_singleton()->is_key_pressed(Key::CTRL) && !Input::get_singleton()->is_key_pressed(Key::SHIFT)) {
- if (selected_terrain_set < 0 || !selected_terrains_pattern.is_valid()) {
+ if (selected_terrain_set < 0 || selected_terrain < 0 || (selected_type == SELECTED_TYPE_PATTERN && !selected_terrains_pattern.is_valid())) {
return true;
}
@@ -2880,21 +2883,21 @@ bool TileMapEditorTerrainsPlugin::forward_canvas_gui_input(const Ref<InputEvent>
tile_map->set_cell(tile_map_layer, E.key, E.value.source_id, E.value.get_atlas_coords(), E.value.alternative_tile);
}
} else if (tool_buttons_group->get_pressed_button() == line_tool_button || (tool_buttons_group->get_pressed_button() == paint_tool_button && Input::get_singleton()->is_key_pressed(Key::SHIFT) && !Input::get_singleton()->is_key_pressed(Key::CTRL))) {
- if (selected_terrain_set < 0 || !selected_terrains_pattern.is_valid()) {
+ if (selected_terrain_set < 0 || selected_terrain < 0 || (selected_type == SELECTED_TYPE_PATTERN && !selected_terrains_pattern.is_valid())) {
return true;
}
drag_type = DRAG_TYPE_LINE;
drag_start_mouse_pos = mpos;
drag_modified.clear();
} else if (tool_buttons_group->get_pressed_button() == rect_tool_button || (tool_buttons_group->get_pressed_button() == paint_tool_button && Input::get_singleton()->is_key_pressed(Key::SHIFT) && Input::get_singleton()->is_key_pressed(Key::CTRL))) {
- if (selected_terrain_set < 0 || !selected_terrains_pattern.is_valid()) {
+ if (selected_terrain_set < 0 || selected_terrain < 0 || (selected_type == SELECTED_TYPE_PATTERN && !selected_terrains_pattern.is_valid())) {
return true;
}
drag_type = DRAG_TYPE_RECT;
drag_start_mouse_pos = mpos;
drag_modified.clear();
} else if (tool_buttons_group->get_pressed_button() == bucket_tool_button) {
- if (selected_terrain_set < 0 || !selected_terrains_pattern.is_valid()) {
+ if (selected_terrain_set < 0 || selected_terrain < 0 || (selected_type == SELECTED_TYPE_PATTERN && !selected_terrains_pattern.is_valid())) {
return true;
}
drag_type = DRAG_TYPE_BUCKET;
@@ -3105,11 +3108,18 @@ void TileMapEditorTerrainsPlugin::_update_terrains_cache() {
cell.alternative_tile = alternative_id;
TileSet::TerrainsPattern terrains_pattern = tile_data->get_terrains_pattern();
+
+ // Terrain center bit
+ int terrain = terrains_pattern.get_terrain();
+ if (terrain >= 0 && terrain < (int)per_terrain_terrains_patterns[terrain_set].size()) {
+ per_terrain_terrains_patterns[terrain_set][terrain].insert(terrains_pattern);
+ }
+
// Terrain bits.
for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
TileSet::CellNeighbor bit = TileSet::CellNeighbor(i);
- if (tile_set->is_valid_peering_bit_terrain(terrain_set, bit)) {
- int terrain = terrains_pattern.get_terrain(bit);
+ if (tile_set->is_valid_terrain_peering_bit(terrain_set, bit)) {
+ terrain = terrains_pattern.get_terrain_peering_bit(bit);
if (terrain >= 0 && terrain < (int)per_terrain_terrains_patterns[terrain_set].size()) {
per_terrain_terrains_patterns[terrain_set][terrain].insert(terrains_pattern);
}
@@ -3191,6 +3201,19 @@ void TileMapEditorTerrainsPlugin::_update_tiles_list() {
ERR_FAIL_INDEX(selected_terrain_set, tile_set->get_terrain_sets_count());
ERR_FAIL_INDEX(selected_terrain_id, tile_set->get_terrains_count(selected_terrain_set));
+ // Add the two first generic modes
+ int item_index = terrains_tile_list->add_icon_item(main_vbox_container->get_theme_icon(SNAME("TerrainConnect"), SNAME("EditorIcons")));
+ terrains_tile_list->set_item_tooltip(item_index, TTR("Connect mode: paints a terrain, then connects it with the surrounding tiles with the same terrain."));
+ Dictionary list_metadata_dict;
+ list_metadata_dict["type"] = SELECTED_TYPE_CONNECT;
+ terrains_tile_list->set_item_metadata(item_index, list_metadata_dict);
+
+ item_index = terrains_tile_list->add_icon_item(main_vbox_container->get_theme_icon(SNAME("TerrainPath"), SNAME("EditorIcons")));
+ terrains_tile_list->set_item_tooltip(item_index, TTR("Path mode: paints a terrain, thens connects it to the previous tile painted withing the same stroke."));
+ list_metadata_dict = Dictionary();
+ list_metadata_dict["type"] = SELECTED_TYPE_PATH;
+ terrains_tile_list->set_item_metadata(item_index, list_metadata_dict);
+
// Sort the items in a map by the number of corresponding terrains.
RBMap<int, RBSet<TileSet::TerrainsPattern>> sorted;
@@ -3200,7 +3223,7 @@ void TileMapEditorTerrainsPlugin::_update_tiles_list() {
for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
TileSet::CellNeighbor bit = TileSet::CellNeighbor(i);
- if (tile_set->is_valid_peering_bit_terrain(selected_terrain_set, bit) && E.get_terrain(bit) == selected_terrain_id) {
+ if (tile_set->is_valid_terrain_peering_bit(selected_terrain_set, bit) && E.get_terrain_peering_bit(bit) == selected_terrain_id) {
count++;
}
}
@@ -3241,12 +3264,13 @@ void TileMapEditorTerrainsPlugin::_update_tiles_list() {
}
// Create the ItemList's item.
- int item_index = terrains_tile_list->add_item("");
+ item_index = terrains_tile_list->add_item("");
terrains_tile_list->set_item_icon(item_index, icon);
terrains_tile_list->set_item_icon_region(item_index, region);
terrains_tile_list->set_item_icon_transposed(item_index, transpose);
- Dictionary list_metadata_dict;
- list_metadata_dict["terrains_pattern"] = terrains_pattern.get_terrains_as_array();
+ list_metadata_dict = Dictionary();
+ list_metadata_dict["type"] = SELECTED_TYPE_PATTERN;
+ list_metadata_dict["terrains_pattern"] = terrains_pattern.as_array();
terrains_tile_list->set_item_metadata(item_index, list_metadata_dict);
}
}
@@ -3264,6 +3288,8 @@ void TileMapEditorTerrainsPlugin::_update_theme() {
picker_button->set_icon(main_vbox_container->get_theme_icon(SNAME("ColorPick"), SNAME("EditorIcons")));
erase_button->set_icon(main_vbox_container->get_theme_icon(SNAME("Eraser"), SNAME("EditorIcons")));
+
+ _update_tiles_list();
}
void TileMapEditorTerrainsPlugin::edit(ObjectID p_tile_map_id, int p_tile_map_layer) {
@@ -3303,7 +3329,7 @@ TileMapEditorTerrainsPlugin::TileMapEditorTerrainsPlugin() {
terrains_tile_list->set_h_size_flags(Control::SIZE_EXPAND_FILL);
terrains_tile_list->set_max_columns(0);
terrains_tile_list->set_same_column_width(true);
- terrains_tile_list->set_fixed_icon_size(Size2(30, 30) * EDSCALE);
+ terrains_tile_list->set_fixed_icon_size(Size2(32, 32) * EDSCALE);
terrains_tile_list->set_texture_filter(CanvasItem::TEXTURE_FILTER_NEAREST);
tilemap_tab_terrains->add_child(terrains_tile_list);
@@ -3396,7 +3422,7 @@ void TileMapEditor::_notification(int p_what) {
advanced_menu_button->set_icon(get_theme_icon(SNAME("Tools"), SNAME("EditorIcons")));
toggle_grid_button->set_icon(get_theme_icon(SNAME("Grid"), SNAME("EditorIcons")));
toggle_grid_button->set_pressed(EditorSettings::get_singleton()->get("editors/tiles_editor/display_grid"));
- toogle_highlight_selected_layer_button->set_icon(get_theme_icon(SNAME("TileMapHighlightSelected"), SNAME("EditorIcons")));
+ toggle_highlight_selected_layer_button->set_icon(get_theme_icon(SNAME("TileMapHighlightSelected"), SNAME("EditorIcons")));
} break;
case NOTIFICATION_INTERNAL_PROCESS: {
@@ -3428,66 +3454,16 @@ void TileMapEditor::_notification(int p_what) {
void TileMapEditor::_on_grid_toggled(bool p_pressed) {
EditorSettings::get_singleton()->set("editors/tiles_editor/display_grid", p_pressed);
+ CanvasItemEditor::get_singleton()->update_viewport();
}
-void TileMapEditor::_layers_selection_button_draw() {
- if (!has_theme_icon(SNAME("arrow"), SNAME("OptionButton"))) {
+void TileMapEditor::_layers_selection_item_selected(int p_index) {
+ TileMap *tile_map = Object::cast_to<TileMap>(ObjectDB::get_instance(tile_map_id));
+ if (!tile_map || tile_map->get_layers_count() <= 0) {
return;
}
- RID ci = layers_selection_button->get_canvas_item();
- Ref<Texture2D> arrow = Control::get_theme_icon(SNAME("arrow"), SNAME("OptionButton"));
-
- Color clr = Color(1, 1, 1);
- if (get_theme_constant(SNAME("modulate_arrow"))) {
- switch (layers_selection_button->get_draw_mode()) {
- case BaseButton::DRAW_PRESSED:
- clr = get_theme_color(SNAME("font_pressed_color"));
- break;
- case BaseButton::DRAW_HOVER:
- clr = get_theme_color(SNAME("font_hover_color"));
- break;
- case BaseButton::DRAW_DISABLED:
- clr = get_theme_color(SNAME("font_disabled_color"));
- break;
- default:
- if (layers_selection_button->has_focus()) {
- clr = get_theme_color(SNAME("font_focus_color"));
- } else {
- clr = get_theme_color(SNAME("font_color"));
- }
- }
- }
-
- Size2 size = layers_selection_button->get_size();
-
- Point2 ofs;
- if (is_layout_rtl()) {
- ofs = Point2(get_theme_constant(SNAME("arrow_margin"), SNAME("OptionButton")), int(Math::abs((size.height - arrow->get_height()) / 2)));
- } else {
- ofs = Point2(size.width - arrow->get_width() - get_theme_constant(SNAME("arrow_margin"), SNAME("OptionButton")), int(Math::abs((size.height - arrow->get_height()) / 2)));
- }
- Rect2 dst_rect = Rect2(ofs, arrow->get_size());
- if (!layers_selection_button->is_pressed()) {
- dst_rect.size = -dst_rect.size;
- }
- arrow->draw_rect(ci, dst_rect, false, clr);
-}
-
-void TileMapEditor::_layers_selection_button_pressed() {
- if (!layers_selection_popup->is_visible()) {
- Size2 size = layers_selection_popup->get_contents_minimum_size();
- size.x = MAX(size.x, layers_selection_button->get_size().x);
- layers_selection_popup->set_position(layers_selection_button->get_screen_position() - Size2(0, size.y * get_global_transform().get_scale().y));
- layers_selection_popup->set_size(size);
- layers_selection_popup->popup();
- } else {
- layers_selection_popup->hide();
- }
-}
-
-void TileMapEditor::_layers_selection_id_pressed(int p_id) {
- tile_map_layer = p_id;
+ tile_map_layer = p_index;
_update_layers_selection();
}
@@ -3670,8 +3646,6 @@ void TileMapEditor::_layers_select_next_or_previous(bool p_next) {
}
void TileMapEditor::_update_layers_selection() {
- layers_selection_popup->clear();
-
TileMap *tile_map = Object::cast_to<TileMap>(ObjectDB::get_instance(tile_map_id));
if (!tile_map) {
return;
@@ -3698,32 +3672,23 @@ void TileMapEditor::_update_layers_selection() {
} else {
tile_map_layer = -1;
}
- tile_map->set_selected_layer(toogle_highlight_selected_layer_button->is_pressed() ? tile_map_layer : -1);
+ tile_map->set_selected_layer(toggle_highlight_selected_layer_button->is_pressed() ? tile_map_layer : -1);
- // Build the list of layers.
- for (int i = 0; i < tile_map->get_layers_count(); i++) {
- String name = tile_map->get_layer_name(i);
- layers_selection_popup->add_item(name.is_empty() ? vformat(TTR("Layer #%d"), i) : name, i);
- layers_selection_popup->set_item_as_radio_checkable(i, true);
- layers_selection_popup->set_item_disabled(i, !tile_map->is_layer_enabled(i));
- layers_selection_popup->set_item_checked(i, i == tile_map_layer);
- }
+ layers_selection_button->clear();
+ if (tile_map->get_layers_count() > 0) {
+ // Build the list of layers.
+ for (int i = 0; i < tile_map->get_layers_count(); i++) {
+ String name = tile_map->get_layer_name(i);
+ layers_selection_button->add_item(name.is_empty() ? vformat(TTR("Layer %d"), i) : name, i);
+ layers_selection_button->set_item_disabled(i, !tile_map->is_layer_enabled(i));
+ }
- // Update the button label.
- if (tile_map_layer >= 0) {
- layers_selection_button->set_text(layers_selection_popup->get_item_text(tile_map_layer));
+ layers_selection_button->set_disabled(false);
+ layers_selection_button->select(tile_map_layer);
} else {
- layers_selection_button->set_text(TTR("Select a layer"));
- }
-
- // Set button minimum width.
- Size2 min_button_size = Size2(layers_selection_popup->get_contents_minimum_size().x, 0);
- if (has_theme_icon(SNAME("arrow"), SNAME("OptionButton"))) {
- Ref<Texture2D> arrow = Control::get_theme_icon(SNAME("arrow"), SNAME("OptionButton"));
- min_button_size.x += arrow->get_size().x;
+ layers_selection_button->set_disabled(true);
+ layers_selection_button->set_text(TTR("No Layers"));
}
- layers_selection_button->set_custom_minimum_size(min_button_size);
- layers_selection_button->update();
tabs_plugins[tabs_bar->get_current_tab()]->edit(tile_map_id, tile_map_layer);
}
@@ -4000,7 +3965,6 @@ TileMapEditor::TileMapEditor() {
// TabBar.
tabs_bar = memnew(TabBar);
- tabs_bar->set_tab_alignment(TabBar::ALIGNMENT_CENTER);
tabs_bar->set_clip_tabs(false);
for (int plugin_index = 0; plugin_index < tile_map_editor_plugins.size(); plugin_index++) {
Vector<TileMapEditorPlugin::TabData> tabs_vector = tile_map_editor_plugins[plugin_index]->get_tabs();
@@ -4029,31 +3993,23 @@ TileMapEditor::TileMapEditor() {
}
// Wide empty separation control.
- Control *h_empty_space = memnew(Control);
- h_empty_space->set_h_size_flags(SIZE_EXPAND_FILL);
- tile_map_toolbar->add_child(h_empty_space);
+ tile_map_toolbar->add_spacer();
// Layer selector.
- layers_selection_popup = memnew(PopupMenu);
- layers_selection_popup->connect("id_pressed", callable_mp(this, &TileMapEditor::_layers_selection_id_pressed));
- layers_selection_popup->set_flag(Window::FLAG_POPUP, false);
-
- layers_selection_button = memnew(Button);
- layers_selection_button->set_toggle_mode(true);
- layers_selection_button->connect("draw", callable_mp(this, &TileMapEditor::_layers_selection_button_draw));
- layers_selection_button->connect("pressed", callable_mp(this, &TileMapEditor::_layers_selection_button_pressed));
- layers_selection_button->connect("hidden", callable_mp((Window *)layers_selection_popup, &Popup::hide));
- layers_selection_button->set_tooltip(TTR("Tile Map Layer"));
- layers_selection_button->add_child(layers_selection_popup);
+ layers_selection_button = memnew(OptionButton);
+ layers_selection_button->set_custom_minimum_size(Size2(200, 0));
+ layers_selection_button->set_text_overrun_behavior(TextServer::OVERRUN_TRIM_ELLIPSIS);
+ layers_selection_button->set_tooltip(TTR("TileMap Layers"));
+ layers_selection_button->connect("item_selected", callable_mp(this, &TileMapEditor::_layers_selection_item_selected));
tile_map_toolbar->add_child(layers_selection_button);
- toogle_highlight_selected_layer_button = memnew(Button);
- toogle_highlight_selected_layer_button->set_flat(true);
- toogle_highlight_selected_layer_button->set_toggle_mode(true);
- toogle_highlight_selected_layer_button->set_pressed(true);
- toogle_highlight_selected_layer_button->connect("pressed", callable_mp(this, &TileMapEditor::_update_layers_selection));
- toogle_highlight_selected_layer_button->set_tooltip(TTR("Highlight Selected TileMap Layer"));
- tile_map_toolbar->add_child(toogle_highlight_selected_layer_button);
+ toggle_highlight_selected_layer_button = memnew(Button);
+ toggle_highlight_selected_layer_button->set_flat(true);
+ toggle_highlight_selected_layer_button->set_toggle_mode(true);
+ toggle_highlight_selected_layer_button->set_pressed(true);
+ toggle_highlight_selected_layer_button->connect("pressed", callable_mp(this, &TileMapEditor::_update_layers_selection));
+ toggle_highlight_selected_layer_button->set_tooltip(TTR("Highlight Selected TileMap Layer"));
+ tile_map_toolbar->add_child(toggle_highlight_selected_layer_button);
tile_map_toolbar->add_child(memnew(VSeparator));
diff --git a/editor/plugins/tiles/tile_map_editor.h b/editor/plugins/tiles/tile_map_editor.h
index 7158ebff59..ff586ebbfe 100644
--- a/editor/plugins/tiles/tile_map_editor.h
+++ b/editor/plugins/tiles/tile_map_editor.h
@@ -40,6 +40,7 @@
#include "scene/gui/check_box.h"
#include "scene/gui/item_list.h"
#include "scene/gui/menu_button.h"
+#include "scene/gui/option_button.h"
#include "scene/gui/separator.h"
#include "scene/gui/spin_box.h"
#include "scene/gui/split_container.h"
@@ -268,14 +269,22 @@ private:
HashMap<Vector2i, TileMapCell> drag_modified;
// Painting
- HashMap<Vector2i, TileMapCell> _draw_terrains(const HashMap<Vector2i, TileSet::TerrainsPattern> &p_to_paint, int p_terrain_set) const;
+ HashMap<Vector2i, TileMapCell> _draw_terrain_path_or_connect(const Vector<Vector2i> &p_to_paint, int p_terrain_set, int p_terrain, bool p_connect) const;
+ HashMap<Vector2i, TileMapCell> _draw_terrain_pattern(const Vector<Vector2i> &p_to_paint, int p_terrain_set, TileSet::TerrainsPattern p_terrains_pattern) const;
HashMap<Vector2i, TileMapCell> _draw_line(Vector2i p_start_cell, Vector2i p_end_cell, bool p_erase);
HashMap<Vector2i, TileMapCell> _draw_rect(Vector2i p_start_cell, Vector2i p_end_cell, bool p_erase);
RBSet<Vector2i> _get_cells_for_bucket_fill(Vector2i p_coords, bool p_contiguous);
HashMap<Vector2i, TileMapCell> _draw_bucket_fill(Vector2i p_coords, bool p_contiguous, bool p_erase);
void _stop_dragging();
+ enum SelectedType {
+ SELECTED_TYPE_CONNECT = 0,
+ SELECTED_TYPE_PATH,
+ SELECTED_TYPE_PATTERN,
+ };
+ SelectedType selected_type;
int selected_terrain_set = -1;
+ int selected_terrain = -1;
TileSet::TerrainsPattern selected_terrains_pattern;
void _update_selection();
@@ -319,12 +328,9 @@ private:
// Toolbar.
HBoxContainer *tile_map_toolbar = nullptr;
- PopupMenu *layers_selection_popup = nullptr;
- Button *layers_selection_button = nullptr;
- Button *toogle_highlight_selected_layer_button = nullptr;
- void _layers_selection_button_draw();
- void _layers_selection_button_pressed();
- void _layers_selection_id_pressed(int p_id);
+ OptionButton *layers_selection_button = nullptr;
+ Button *toggle_highlight_selected_layer_button = nullptr;
+ void _layers_selection_item_selected(int p_index);
Button *toggle_grid_button = nullptr;
void _on_grid_toggled(bool p_pressed);
diff --git a/editor/plugins/tiles/tile_set_atlas_source_editor.cpp b/editor/plugins/tiles/tile_set_atlas_source_editor.cpp
index b87aedcf60..37ccc6ad45 100644
--- a/editor/plugins/tiles/tile_set_atlas_source_editor.cpp
+++ b/editor/plugins/tiles/tile_set_atlas_source_editor.cpp
@@ -97,9 +97,9 @@ bool TileSetAtlasSourceEditor::TileSetAtlasSourceProxyObject::_get(const StringN
void TileSetAtlasSourceEditor::TileSetAtlasSourceProxyObject::_get_property_list(List<PropertyInfo> *p_list) const {
p_list->push_back(PropertyInfo(Variant::STRING, "name", PROPERTY_HINT_NONE, ""));
p_list->push_back(PropertyInfo(Variant::OBJECT, "texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"));
- p_list->push_back(PropertyInfo(Variant::VECTOR2I, "margins", PROPERTY_HINT_NONE, ""));
- p_list->push_back(PropertyInfo(Variant::VECTOR2I, "separation", PROPERTY_HINT_NONE, ""));
- p_list->push_back(PropertyInfo(Variant::VECTOR2I, "texture_region_size", PROPERTY_HINT_NONE, ""));
+ p_list->push_back(PropertyInfo(Variant::VECTOR2I, "margins", PROPERTY_HINT_NONE, "suffix:px"));
+ p_list->push_back(PropertyInfo(Variant::VECTOR2I, "separation", PROPERTY_HINT_NONE, "suffix:px"));
+ p_list->push_back(PropertyInfo(Variant::VECTOR2I, "texture_region_size", PROPERTY_HINT_NONE, "suffix:px"));
p_list->push_back(PropertyInfo(Variant::BOOL, "use_texture_padding", PROPERTY_HINT_NONE, ""));
}
@@ -401,15 +401,15 @@ void TileSetAtlasSourceEditor::AtlasTileProxyObject::_get_property_list(List<Pro
if (all_alternatve_id_zero) {
p_list->push_back(PropertyInfo(Variant::NIL, "Animation", PROPERTY_HINT_NONE, "animation_", PROPERTY_USAGE_GROUP));
p_list->push_back(PropertyInfo(Variant::INT, "animation_columns", PROPERTY_HINT_NONE, ""));
- p_list->push_back(PropertyInfo(Variant::VECTOR2I, "animation_separation", PROPERTY_HINT_NONE, ""));
+ p_list->push_back(PropertyInfo(Variant::VECTOR2I, "animation_separation", PROPERTY_HINT_NONE, "suffix:px"));
p_list->push_back(PropertyInfo(Variant::FLOAT, "animation_speed", PROPERTY_HINT_NONE, ""));
p_list->push_back(PropertyInfo(Variant::INT, "animation_frames_count", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR | PROPERTY_USAGE_ARRAY, "Frames,animation_frame_"));
// Not optimal, but returns value for the first tile. This is similar to what MultiNodeEdit does.
if (tile_set_atlas_source->get_tile_animation_frames_count(tiles.front()->get().tile) == 1) {
- p_list->push_back(PropertyInfo(Variant::FLOAT, "animation_frame_0/duration", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_READ_ONLY));
+ p_list->push_back(PropertyInfo(Variant::FLOAT, "animation_frame_0/duration", PROPERTY_HINT_NONE, "suffix:s", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_READ_ONLY));
} else {
for (int i = 0; i < tile_set_atlas_source->get_tile_animation_frames_count(tiles.front()->get().tile); i++) {
- p_list->push_back(PropertyInfo(Variant::FLOAT, vformat("animation_frame_%d/duration", i), PROPERTY_HINT_NONE, ""));
+ p_list->push_back(PropertyInfo(Variant::FLOAT, vformat("animation_frame_%d/duration", i), PROPERTY_HINT_NONE, "suffix:s"));
}
}
}
@@ -2071,9 +2071,10 @@ void TileSetAtlasSourceEditor::_undo_redo_inspector_callback(Object *p_undo_redo
}
} else if (p_property == "terrain_set") {
int current_terrain_set = tile_data_proxy->get("terrain_set");
+ ADD_UNDO(tile_data_proxy, "terrain");
for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
TileSet::CellNeighbor bit = TileSet::CellNeighbor(i);
- if (tile_set->is_valid_peering_bit_terrain(current_terrain_set, bit)) {
+ if (tile_set->is_valid_terrain_peering_bit(current_terrain_set, bit)) {
ADD_UNDO(tile_data_proxy, "terrains_peering_bit/" + String(TileSet::CELL_NEIGHBOR_ENUM_TO_TEXT[i]));
}
}
@@ -2334,6 +2335,7 @@ TileSetAtlasSourceEditor::TileSetAtlasSourceEditor() {
// Tile inspector.
tile_inspector_label = memnew(Label);
tile_inspector_label->set_text(TTR("Tile Properties:"));
+ tile_inspector_label->set_theme_type_variation("HeaderSmall");
middle_vbox_container->add_child(tile_inspector_label);
tile_proxy_object = memnew(AtlasTileProxyObject(this));
@@ -2349,7 +2351,7 @@ TileSetAtlasSourceEditor::TileSetAtlasSourceEditor() {
tile_inspector_no_tile_selected_label = memnew(Label);
tile_inspector_no_tile_selected_label->set_horizontal_alignment(HORIZONTAL_ALIGNMENT_CENTER);
- tile_inspector_no_tile_selected_label->set_text(TTR("No tile selected."));
+ tile_inspector_no_tile_selected_label->set_text(TTR("No tiles selected."));
middle_vbox_container->add_child(tile_inspector_no_tile_selected_label);
// Property values palette.
@@ -2357,6 +2359,7 @@ TileSetAtlasSourceEditor::TileSetAtlasSourceEditor() {
tile_data_editors_label = memnew(Label);
tile_data_editors_label->set_text(TTR("Paint Properties:"));
+ tile_data_editors_label->set_theme_type_variation("HeaderSmall");
middle_vbox_container->add_child(tile_data_editors_label);
tile_data_editor_dropdown_button = memnew(Button);
@@ -2380,6 +2383,7 @@ TileSetAtlasSourceEditor::TileSetAtlasSourceEditor() {
// Atlas source inspector.
atlas_source_inspector_label = memnew(Label);
atlas_source_inspector_label->set_text(TTR("Atlas Properties:"));
+ atlas_source_inspector_label->set_theme_type_variation("HeaderSmall");
middle_vbox_container->add_child(atlas_source_inspector_label);
atlas_source_proxy_object = memnew(TileSetAtlasSourceProxyObject());
diff --git a/editor/plugins/tiles/tile_set_editor.cpp b/editor/plugins/tiles/tile_set_editor.cpp
index fb4a563992..de373e121b 100644
--- a/editor/plugins/tiles/tile_set_editor.cpp
+++ b/editor/plugins/tiles/tile_set_editor.cpp
@@ -505,7 +505,7 @@ void TileSetEditor::_move_tile_set_array_element(Object *p_undo_redo, Object *p_
for (int terrain_set_index = begin; terrain_set_index < end; terrain_set_index++) {
for (int l = 0; l < TileSet::CELL_NEIGHBOR_MAX; l++) {
TileSet::CellNeighbor bit = TileSet::CellNeighbor(l);
- if (tile_data->is_valid_peering_bit_terrain(bit)) {
+ if (tile_data->is_valid_terrain_peering_bit(bit)) {
ADD_UNDO(tile_data, "terrains_peering_bit/" + String(TileSet::CELL_NEIGHBOR_ENUM_TO_TEXT[l]));
}
}
@@ -513,7 +513,7 @@ void TileSetEditor::_move_tile_set_array_element(Object *p_undo_redo, Object *p_
} else if (components.size() >= 2 && components[0].begins_with("terrain_set_") && components[0].trim_prefix("terrain_set_").is_valid_int() && components[1] == "terrain_") {
for (int terrain_index = 0; terrain_index < TileSet::CELL_NEIGHBOR_MAX; terrain_index++) {
TileSet::CellNeighbor bit = TileSet::CellNeighbor(terrain_index);
- if (tile_data->is_valid_peering_bit_terrain(bit)) {
+ if (tile_data->is_valid_terrain_peering_bit(bit)) {
ADD_UNDO(tile_data, "terrains_peering_bit/" + String(TileSet::CELL_NEIGHBOR_ENUM_TO_TEXT[terrain_index]));
}
}
@@ -607,9 +607,10 @@ void TileSetEditor::_undo_redo_inspector_callback(Object *p_undo_redo, Object *p
if (components.size() == 2 && components[0].begins_with("terrain_set_") && components[0].trim_prefix("terrain_set_").is_valid_int() && components[1] == "mode") {
ADD_UNDO(tile_data, "terrain_set");
+ ADD_UNDO(tile_data, "terrain");
for (int l = 0; l < TileSet::CELL_NEIGHBOR_MAX; l++) {
TileSet::CellNeighbor bit = TileSet::CellNeighbor(l);
- if (tile_data->is_valid_peering_bit_terrain(bit)) {
+ if (tile_data->is_valid_terrain_peering_bit(bit)) {
ADD_UNDO(tile_data, "terrains_peering_bit/" + String(TileSet::CELL_NEIGHBOR_ENUM_TO_TEXT[l]));
}
}
diff --git a/editor/plugins/visual_shader_editor_plugin.cpp b/editor/plugins/visual_shader_editor_plugin.cpp
index 642973648e..8c72a886ea 100644
--- a/editor/plugins/visual_shader_editor_plugin.cpp
+++ b/editor/plugins/visual_shader_editor_plugin.cpp
@@ -1102,27 +1102,6 @@ void VisualShaderEditor::edit(VisualShader *p_visual_shader) {
if (!visual_shader->is_connected("changed", ce)) {
visual_shader->connect("changed", ce);
}
-#ifndef DISABLE_DEPRECATED
- Dictionary engine_version = Engine::get_singleton()->get_version_info();
- static Array components;
- if (components.is_empty()) {
- components.push_back("major");
- components.push_back("minor");
- }
- const Dictionary vs_version = visual_shader->get_engine_version();
- if (!vs_version.has_all(components)) {
- visual_shader->update_engine_version(engine_version);
- print_line(vformat(TTR("The shader (\"%s\") has been updated to correspond Godot %s.%s version."), visual_shader->get_path(), engine_version["major"], engine_version["minor"]));
- } else {
- for (int i = 0; i < components.size(); i++) {
- if (vs_version[components[i]] != engine_version[components[i]]) {
- visual_shader->update_engine_version(engine_version);
- print_line(vformat(TTR("The shader (\"%s\") has been updated to correspond Godot %s.%s version."), visual_shader->get_path(), engine_version["major"], engine_version["minor"]));
- break;
- }
- }
- }
-#endif
visual_shader->set_graph_offset(graph->get_scroll_ofs() / EDSCALE);
_set_mode(visual_shader->get_mode());
} else {
@@ -3673,6 +3652,9 @@ void VisualShaderEditor::_notification(int p_what) {
case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: {
graph->get_panner()->setup((ViewPanner::ControlScheme)EDITOR_GET("editors/panning/sub_editors_panning_scheme").operator int(), ED_GET_SHORTCUT("canvas_item_editor/pan_view"), bool(EditorSettings::get_singleton()->get("editors/panning/simple_panning")));
graph->set_warped_panning(bool(EditorSettings::get_singleton()->get("editors/panning/warped_mouse_panning")));
+ graph->set_minimap_opacity(EditorSettings::get_singleton()->get("editors/visual_editors/minimap_opacity"));
+ graph->set_connection_lines_curvature(EditorSettings::get_singleton()->get("editors/visual_editors/lines_curvature"));
+ _update_graph();
} break;
case NOTIFICATION_ENTER_TREE: {
@@ -4848,7 +4830,7 @@ VisualShaderEditor::VisualShaderEditor() {
error_label = memnew(Label);
error_panel->add_child(error_label);
- error_label->set_autowrap_mode(Label::AUTOWRAP_WORD_SMART);
+ error_label->set_autowrap_mode(TextServer::AUTOWRAP_WORD_SMART);
///////////////////////////////////////
// POPUP MENU
@@ -5005,7 +4987,7 @@ VisualShaderEditor::VisualShaderEditor() {
}
alert = memnew(AcceptDialog);
- alert->get_label()->set_autowrap_mode(Label::AUTOWRAP_WORD);
+ alert->get_label()->set_autowrap_mode(TextServer::AUTOWRAP_WORD);
alert->get_label()->set_horizontal_alignment(HORIZONTAL_ALIGNMENT_CENTER);
alert->get_label()->set_vertical_alignment(VERTICAL_ALIGNMENT_CENTER);
alert->get_label()->set_custom_minimum_size(Size2(400, 60) * EDSCALE);
@@ -5329,7 +5311,7 @@ VisualShaderEditor::VisualShaderEditor() {
add_options.push_back(AddOption("Exp", "Scalar", "Functions", "VisualShaderNodeFloatFunc", TTR("Base-e Exponential."), { VisualShaderNodeFloatFunc::FUNC_EXP }, VisualShaderNode::PORT_TYPE_SCALAR));
add_options.push_back(AddOption("Exp2", "Scalar", "Functions", "VisualShaderNodeFloatFunc", TTR("Base-2 Exponential."), { VisualShaderNodeFloatFunc::FUNC_EXP2 }, VisualShaderNode::PORT_TYPE_SCALAR));
add_options.push_back(AddOption("Floor", "Scalar", "Functions", "VisualShaderNodeFloatFunc", TTR("Finds the nearest integer less than or equal to the parameter."), { VisualShaderNodeFloatFunc::FUNC_FLOOR }, VisualShaderNode::PORT_TYPE_SCALAR));
- add_options.push_back(AddOption("Fract", "Scalar", "Functions", "VisualShaderNodeFloatFunc", TTR("Computes the fractional part of the argument."), { VisualShaderNodeFloatFunc::FUNC_FRAC }, VisualShaderNode::PORT_TYPE_SCALAR));
+ add_options.push_back(AddOption("Fract", "Scalar", "Functions", "VisualShaderNodeFloatFunc", TTR("Computes the fractional part of the argument."), { VisualShaderNodeFloatFunc::FUNC_FRACT }, VisualShaderNode::PORT_TYPE_SCALAR));
add_options.push_back(AddOption("InverseSqrt", "Scalar", "Functions", "VisualShaderNodeFloatFunc", TTR("Returns the inverse of the square root of the parameter."), { VisualShaderNodeFloatFunc::FUNC_INVERSE_SQRT }, VisualShaderNode::PORT_TYPE_SCALAR));
add_options.push_back(AddOption("Log", "Scalar", "Functions", "VisualShaderNodeFloatFunc", TTR("Natural logarithm."), { VisualShaderNodeFloatFunc::FUNC_LOG }, VisualShaderNode::PORT_TYPE_SCALAR));
add_options.push_back(AddOption("Log2", "Scalar", "Functions", "VisualShaderNodeFloatFunc", TTR("Base-2 logarithm."), { VisualShaderNodeFloatFunc::FUNC_LOG2 }, VisualShaderNode::PORT_TYPE_SCALAR));
@@ -5513,16 +5495,16 @@ VisualShaderEditor::VisualShaderEditor() {
add_options.push_back(AddOption("Floor", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Finds the nearest integer less than or equal to the parameter."), { VisualShaderNodeVectorFunc::FUNC_FLOOR, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
add_options.push_back(AddOption("Floor", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Finds the nearest integer less than or equal to the parameter."), { VisualShaderNodeVectorFunc::FUNC_FLOOR, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
add_options.push_back(AddOption("Floor", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Finds the nearest integer less than or equal to the parameter."), { VisualShaderNodeVectorFunc::FUNC_FLOOR, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
- add_options.push_back(AddOption("Fract", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Computes the fractional part of the argument."), { VisualShaderNodeVectorFunc::FUNC_FRAC, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
- add_options.push_back(AddOption("Fract", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Computes the fractional part of the argument."), { VisualShaderNodeVectorFunc::FUNC_FRAC, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
- add_options.push_back(AddOption("Fract", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Computes the fractional part of the argument."), { VisualShaderNodeVectorFunc::FUNC_FRAC, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
+ add_options.push_back(AddOption("Fract", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Computes the fractional part of the argument."), { VisualShaderNodeVectorFunc::FUNC_FRACT, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
+ add_options.push_back(AddOption("Fract", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Computes the fractional part of the argument."), { VisualShaderNodeVectorFunc::FUNC_FRACT, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
+ add_options.push_back(AddOption("Fract", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Computes the fractional part of the argument."), { VisualShaderNodeVectorFunc::FUNC_FRACT, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
add_options.push_back(AddOption("Fresnel", "Vector", "Functions", "VisualShaderNodeFresnel", TTR("Returns falloff based on the dot product of surface normal and view direction of camera (pass associated inputs to it)."), {}, VisualShaderNode::PORT_TYPE_SCALAR));
add_options.push_back(AddOption("InverseSqrt", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the inverse of the square root of the parameter."), { VisualShaderNodeVectorFunc::FUNC_INVERSE_SQRT, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
add_options.push_back(AddOption("InverseSqrt", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the inverse of the square root of the parameter."), { VisualShaderNodeVectorFunc::FUNC_INVERSE_SQRT, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
add_options.push_back(AddOption("InverseSqrt", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the inverse of the square root of the parameter."), { VisualShaderNodeVectorFunc::FUNC_INVERSE_SQRT, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
- add_options.push_back(AddOption("Length", "Vector", "Functions", "VisualShaderNodeVectorLen", TTR("Calculates the length of a vector."), { VisualShaderNodeVectorLen::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_SCALAR));
- add_options.push_back(AddOption("Length", "Vector", "Functions", "VisualShaderNodeVectorLen", TTR("Calculates the length of a vector."), { VisualShaderNodeVectorLen::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_SCALAR));
- add_options.push_back(AddOption("Length", "Vector", "Functions", "VisualShaderNodeVectorLen", TTR("Calculates the length of a vector."), { VisualShaderNodeVectorLen::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_SCALAR));
+ add_options.push_back(AddOption("Length2D", "Vector", "Functions", "VisualShaderNodeVectorLen", TTR("Calculates the length of a vector."), { VisualShaderNodeVectorLen::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_SCALAR));
+ add_options.push_back(AddOption("Length3D", "Vector", "Functions", "VisualShaderNodeVectorLen", TTR("Calculates the length of a vector."), { VisualShaderNodeVectorLen::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_SCALAR));
+ add_options.push_back(AddOption("Length4D", "Vector", "Functions", "VisualShaderNodeVectorLen", TTR("Calculates the length of a vector."), { VisualShaderNodeVectorLen::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_SCALAR));
add_options.push_back(AddOption("Log", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Natural logarithm."), { VisualShaderNodeVectorFunc::FUNC_LOG, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
add_options.push_back(AddOption("Log", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Natural logarithm."), { VisualShaderNodeVectorFunc::FUNC_LOG, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
add_options.push_back(AddOption("Log", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Natural logarithm."), { VisualShaderNodeVectorFunc::FUNC_LOG, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
@@ -5663,48 +5645,6 @@ VisualShaderEditor::VisualShaderEditor() {
property_editor->connect("variant_changed", callable_mp(this, &VisualShaderEditor::_port_edited));
}
-/////////////////
-
-void VisualShaderEditorPlugin::edit(Object *p_object) {
- visual_shader_editor->edit(Object::cast_to<VisualShader>(p_object));
-}
-
-bool VisualShaderEditorPlugin::handles(Object *p_object) const {
- return p_object->is_class("VisualShader");
-}
-
-void VisualShaderEditorPlugin::make_visible(bool p_visible) {
- if (p_visible) {
- //editor->hide_animation_player_editors();
- //editor->animation_panel_make_visible(true);
- button->show();
- EditorNode::get_singleton()->make_bottom_panel_item_visible(visual_shader_editor);
- visual_shader_editor->update_nodes();
- visual_shader_editor->set_process_input(true);
- //visual_shader_editor->set_process(true);
- } else {
- if (visual_shader_editor->is_visible_in_tree()) {
- EditorNode::get_singleton()->hide_bottom_panel();
- }
- button->hide();
- visual_shader_editor->set_process_input(false);
- //visual_shader_editor->set_process(false);
- }
-}
-
-VisualShaderEditorPlugin::VisualShaderEditorPlugin() {
- visual_shader_editor = memnew(VisualShaderEditor);
- visual_shader_editor->set_custom_minimum_size(Size2(0, 300) * EDSCALE);
-
- button = EditorNode::get_singleton()->add_bottom_panel_item(TTR("VisualShader"), visual_shader_editor);
- button->hide();
-}
-
-VisualShaderEditorPlugin::~VisualShaderEditorPlugin() {
-}
-
-////////////////
-
class VisualShaderNodePluginInputEditor : public OptionButton {
GDCLASS(VisualShaderNodePluginInputEditor, OptionButton);
diff --git a/editor/plugins/visual_shader_editor_plugin.h b/editor/plugins/visual_shader_editor_plugin.h
index 1b56892ebf..b8da266ed7 100644
--- a/editor/plugins/visual_shader_editor_plugin.h
+++ b/editor/plugins/visual_shader_editor_plugin.h
@@ -493,23 +493,6 @@ public:
VisualShaderEditor();
};
-class VisualShaderEditorPlugin : public EditorPlugin {
- GDCLASS(VisualShaderEditorPlugin, EditorPlugin);
-
- VisualShaderEditor *visual_shader_editor = nullptr;
- Button *button = nullptr;
-
-public:
- virtual String get_name() const override { return "VisualShader"; }
- bool has_main_screen() const override { return false; }
- virtual void edit(Object *p_object) override;
- virtual bool handles(Object *p_object) const override;
- virtual void make_visible(bool p_visible) override;
-
- VisualShaderEditorPlugin();
- ~VisualShaderEditorPlugin();
-};
-
class VisualShaderNodePluginDefault : public VisualShaderNodePlugin {
GDCLASS(VisualShaderNodePluginDefault, VisualShaderNodePlugin);
diff --git a/editor/project_converter_3_to_4.cpp b/editor/project_converter_3_to_4.cpp
new file mode 100644
index 0000000000..dfe40f9d4f
--- /dev/null
+++ b/editor/project_converter_3_to_4.cpp
@@ -0,0 +1,3813 @@
+/*************************************************************************/
+/* project_converter_3_to_4.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#include "project_converter_3_to_4.h"
+
+#include "modules/modules_enabled.gen.h"
+
+const int ERROR_CODE = 77;
+
+#ifdef MODULE_REGEX_ENABLED
+
+#include "modules/regex/regex.h"
+
+#include "core/os/time.h"
+#include "core/templates/hash_map.h"
+#include "core/templates/list.h"
+
+const int CONVERSION_MAX_FILE_SIZE = 1024 * 1024 * 4; // 4 MB
+
+static const char *enum_renames[][2] = {
+ //// constants
+ { "TYPE_COLOR_ARRAY", "TYPE_PACKED_COLOR_ARRAY" },
+ { "TYPE_FLOAT64_ARRAY", "TYPE_PACKED_FLOAT64_ARRAY" },
+ { "TYPE_INT64_ARRAY", "TYPE_PACKED_INT64_ARRAY" },
+ { "TYPE_INT_ARRAY", "TYPE_PACKED_INT32_ARRAY" },
+ { "TYPE_QUAT", "TYPE_QUATERNION" },
+ { "TYPE_RAW_ARRAY", "TYPE_PACKED_BYTE_ARRAY" },
+ { "TYPE_REAL", "TYPE_FLOAT" },
+ { "TYPE_REAL_ARRAY", "TYPE_PACKED_FLOAT32_ARRAY" },
+ { "TYPE_STRING_ARRAY", "TYPE_PACKED_STRING_ARRAY" },
+ { "TYPE_TRANSFORM", "TYPE_TRANSFORM3D" },
+ { "TYPE_VECTOR2_ARRAY", "TYPE_PACKED_VECTOR2_ARRAY" },
+ { "TYPE_VECTOR3_ARRAY", "TYPE_PACKED_VECTOR3_ARRAY" },
+
+ // {"FLAG_MAX", "PARTICLE_FLAG_MAX"}, // CPUParticles2D - used in more classes
+ { "ALIGN_BEGIN", "ALIGNMENT_BEGIN" }, //AspectRatioContainer
+ { "ALIGN_CENTER", "ALIGNMENT_CENTER" }, //AspectRatioContainer
+ { "ALIGN_END", "ALIGNMENT_END" }, //AspectRatioContainer
+ { "ARRAY_COMPRESS_BASE", "ARRAY_COMPRESS_FLAGS_BASE" }, // Mesh
+ { "ARVR_AR", "XR_AR" }, // XRInterface
+ { "ARVR_EXCESSIVE_MOTION", "XR_EXCESSIVE_MOTION" }, // XRInterface
+ { "ARVR_EXTERNAL", "XR_EXTERNAL" }, // XRInterface
+ { "ARVR_INSUFFICIENT_FEATURES", "XR_INSUFFICIENT_FEATURES" }, // XRInterface
+ { "ARVR_MONO", "XR_MONO" }, // XRInterface
+ { "ARVR_NONE", "XR_NONE" }, // XRInterface
+ { "ARVR_NORMAL_TRACKING", "XR_NORMAL_TRACKING" }, // XRInterface
+ { "ARVR_NOT_TRACKING", "XR_NOT_TRACKING" }, // XRInterface
+ { "ARVR_STEREO", "XR_STEREO" }, // XRInterface
+ { "ARVR_UNKNOWN_TRACKING", "XR_UNKNOWN_TRACKING" }, // XRInterface
+ { "BAKE_ERROR_INVALID_MESH", "BAKE_ERROR_MESHES_INVALID" }, // LightmapGI
+ { "BODY_MODE_CHARACTER", "BODY_MODE_DYNAMIC" }, // PhysicsServer2D
+ { "BODY_MODE_DYNAMIC_LOCKED", "BODY_MODE_DYNAMIC_LINEAR" }, // PhysicsServer3D
+ { "BUTTON_LEFT", "MOUSE_BUTTON_LEFT" }, // Globals
+ { "BUTTON_MASK_LEFT", "MOUSE_BUTTON_MASK_LEFT" }, // Globals
+ { "BUTTON_MASK_MIDDLE", "MOUSE_BUTTON_MASK_MIDDLE" }, // Globals
+ { "BUTTON_MASK_RIGHT", "MOUSE_BUTTON_MASK_RIGHT" }, // Globals
+ { "BUTTON_MASK_XBUTTON1", "MOUSE_BUTTON_MASK_XBUTTON1" }, // Globals
+ { "BUTTON_MASK_XBUTTON2", "MOUSE_BUTTON_MASK_XBUTTON2" }, // Globals
+ { "BUTTON_MIDDLE", "MOUSE_BUTTON_MIDDLE" }, // Globals
+ { "BUTTON_RIGHT", "MOUSE_BUTTON_RIGHT" }, // Globals
+ { "BUTTON_WHEEL_DOWN", "MOUSE_BUTTON_WHEEL_DOWN" }, // Globals
+ { "BUTTON_WHEEL_LEFT", "MOUSE_BUTTON_WHEEL_LEFT" }, // Globals
+ { "BUTTON_WHEEL_RIGHT", "MOUSE_BUTTON_WHEEL_RIGHT" }, // Globals
+ { "BUTTON_WHEEL_UP", "MOUSE_BUTTON_WHEEL_UP" }, // Globals
+ { "BUTTON_XBUTTON1", "MOUSE_BUTTON_XBUTTON1" }, // Globals
+ { "BUTTON_XBUTTON2", "MOUSE_BUTTON_XBUTTON2" }, // Globals
+ { "CLEAR_MODE_ONLY_NEXT_FRAME", "CLEAR_MODE_ONCE" }, // SubViewport
+ { "COMPRESS_PVRTC4", "COMPRESS_PVRTC1_4" }, // Image
+ { "CUBEMAP_BACK", "CUBEMAP_LAYER_BACK" }, // RenderingServer
+ { "CUBEMAP_BOTTOM", "CUBEMAP_LAYER_BOTTOM" }, // RenderingServer
+ { "CUBEMAP_FRONT", "CUBEMAP_LAYER_FRONT" }, // RenderingServer
+ { "CUBEMAP_LEFT", "CUBEMAP_LAYER_LEFT" }, // RenderingServer
+ { "CUBEMAP_RIGHT", "CUBEMAP_LAYER_RIGHT" }, // RenderingServer
+ { "CUBEMAP_TOP", "CUBEMAP_LAYER_TOP" }, // RenderingServer
+ { "DAMPED_STRING_DAMPING", "DAMPED_SPRING_DAMPING" }, // PhysicsServer2D
+ { "DAMPED_STRING_REST_LENGTH", "DAMPED_SPRING_REST_LENGTH" }, // PhysicsServer2D
+ { "DAMPED_STRING_STIFFNESS", "DAMPED_SPRING_STIFFNESS" }, // PhysicsServer2D
+ { "FLAG_ALIGN_Y_TO_VELOCITY", "PARTICLE_FLAG_ALIGN_Y_TO_VELOCITY" }, // CPUParticles2D
+ { "FLAG_DISABLE_Z", "PARTICLE_FLAG_DISABLE_Z" }, // CPUParticles2D
+ { "FLAG_ROTATE_Y", "PARTICLE_FLAG_ROTATE_Y" }, // CPUParticles2D
+ { "FLAG_USE_BAKED_LIGHT", "GI_MODE_BAKED" }, // GeometryInstance3D
+ { "FORMAT_PVRTC2", "FORMAT_PVRTC1_2" }, // Image
+ { "FORMAT_PVRTC2A", "FORMAT_PVRTC1_2A" }, // Image
+ { "FORMAT_PVRTC4", "FORMAT_PVRTC1_4" }, // Image
+ { "FORMAT_PVRTC4A", "FORMAT_PVRTC1_4A" }, // Image
+ { "INSTANCE_LIGHTMAP_CAPTURE", "INSTANCE_LIGHTMAP" }, // RenderingServer
+ { "JOINT_6DOF", "JOINT_TYPE_6DOF" }, // PhysicsServer3D
+ { "JOINT_CONE_TWIST", "JOINT_TYPE_CONE_TWIST" }, // PhysicsServer3D
+ { "JOINT_DAMPED_SPRING", "JOINT_TYPE_DAMPED_SPRING" }, // PhysicsServer2D
+ { "JOINT_GROOVE", "JOINT_TYPE_GROOVE" }, // PhysicsServer2D
+ { "JOINT_HINGE", "JOINT_TYPE_HINGE" }, // PhysicsServer3D
+ { "JOINT_PIN", "JOINT_TYPE_PIN" }, // PhysicsServer2D
+ { "JOINT_SLIDER", "JOINT_TYPE_SLIDER" }, // PhysicsServer3D
+ { "KEY_CONTROL", "KEY_CTRL" }, // Globals
+ { "LOOP_PING_PONG", "LOOP_PINGPONG" }, //AudioStreamSample
+ { "MATH_RAND", "MATH_RANDF_RANGE" }, // VisualScriptBuiltinFunc
+ { "MATH_RANDOM", "MATH_RANDI_RANGE" }, // VisualScriptBuiltinFunc
+ { "MATH_STEPIFY", "MATH_STEP_DECIMALS" }, // VisualScriptBuiltinFunc
+ { "MODE_CHARACTER", "MODE_DYNAMIC_LOCKED" }, // RigidBody2D, RigidBody3D
+ { "MODE_OPEN_ANY", "FILE_MODE_OPEN_ANY" }, // FileDialog
+ { "MODE_OPEN_DIR", "FILE_MODE_OPEN_DIR" }, // FileDialog
+ { "MODE_OPEN_FILE", "FILE_MODE_OPEN_FILE" }, // FileDialog
+ { "MODE_OPEN_FILES", "FILE_MODE_OPEN_FILES" }, // FileDialog
+ { "MODE_RIGID", "MODE_DYNAMIC" }, // RigidBody2D, RigidBody3D
+ { "MODE_SAVE_FILE", "FILE_MODE_SAVE_FILE" }, // FileDialog
+ { "NOTIFICATION_APP_PAUSED", "NOTIFICATION_APPLICATION_PAUSED" }, // MainLoop
+ { "NOTIFICATION_APP_RESUMED", "NOTIFICATION_APPLICATION_RESUMED" }, // MainLoop
+ { "NOTIFICATION_PATH_CHANGED", "NOTIFICATION_PATH_RENAMED" }, //Node
+ { "NOTIFICATION_WM_FOCUS_IN", "NOTIFICATION_APPLICATION_FOCUS_IN" }, // MainLoop
+ { "NOTIFICATION_WM_FOCUS_OUT", "NOTIFICATION_APPLICATION_FOCUS_OUT" }, // MainLoop
+ { "NOTIFICATION_WM_UNFOCUS_REQUEST", "NOTIFICATION_WM_WINDOW_FOCUS_OUT" }, //Node
+ { "PAUSE_MODE_INHERIT", "PROCESS_MODE_INHERIT" }, // Node
+ { "PAUSE_MODE_PROCESS", "PROCESS_MODE_ALWAYS" }, // Node
+ { "PAUSE_MODE_STOP", "PROCESS_MODE_PAUSABLE" }, // Node
+ { "RENDER_DRAW_CALLS_IN_FRAME", "RENDER_TOTAL_DRAW_CALLS_IN_FRAME" }, // Performance
+ { "RENDER_OBJECTS_IN_FRAME", "RENDER_TOTAL_OBJECTS_IN_FRAME" }, // Performance
+ { "SIDE_BOTTOM", "MARGIN_BOTTOM" }, // Globals
+ { "SIDE_LEFT", "MARGIN_LEFT" }, // Globals
+ { "SIDE_RIGHT", "MARGIN_RIGHT" }, // Globals
+ { "SIDE_TOP", "MARGIN_TOP" }, // Globals
+ { "TEXTURE_TYPE_2D_ARRAY", "TEXTURE_LAYERED_2D_ARRAY" }, // RenderingServer
+ { "TEXTURE_TYPE_CUBEMAP", "TEXTURE_LAYERED_CUBEMAP_ARRAY" }, // RenderingServer
+ { "TRACKER_LEFT_HAND", "TRACKER_HAND_LEFT" }, // XRPositionalTracker
+ { "TRACKER_RIGHT_HAND", "TRACKER_HAND_RIGHT" }, // XRPositionalTracker
+ { "TYPE_NORMALMAP", "TYPE_NORMAL_MAP" }, // VisualShaderNodeCubemap
+
+ /// enums
+ { "AlignMode", "AlignmentMode" }, //AspectRatioContainer
+ { "AnimationProcessMode", "AnimationProcessCallback" }, // AnimationTree, AnimationPlayer
+ { "Camera2DProcessMode", "Camera2DProcessCallback" }, // Camera2D
+ { "CubeMapSide", "CubeMapLayer" }, // RenderingServer
+ { "DampedStringParam", "DampedSpringParam" }, // PhysicsServer2D
+ { "FFT_Size", "FFTSize" }, // AudioEffectPitchShift,AudioEffectSpectrumAnalyzer
+ { "PauseMode", "ProcessMode" }, // Node
+ { "TimerProcessMode", "TimerProcessCallback" }, // Timer
+ { "Tracking_status", "TrackingStatus" }, // XRInterface
+ { nullptr, nullptr },
+};
+
+static const char *gdscript_function_renames[][2] = {
+ // { "_set_name", "get_tracker_name"}, // XRPositionalTracker - CameraFeed use this
+ // { "_unhandled_input", "_unhandled_key_input"}, // BaseButton, ViewportContainer broke Node, FileDialog,SubViewportContainer
+ // { "create_gizmo", "_create_gizmo"}, // EditorNode3DGizmoPlugin - may be used
+ // { "get_dependencies", "_get_dependencies" }, // ResourceFormatLoader broke ResourceLoader
+ // { "get_extents", "get_size" }, // BoxShape, RectangleShape broke Decal, VoxelGI, GPUParticlesCollisionBox, GPUParticlesCollisionSDF, GPUParticlesCollisionHeightField, GPUParticlesAttractorBox, GPUParticlesAttractorVectorField, FogVolume
+ // { "get_h_offset", "get_drag_horizontal_offset"}, // Camera2D, broke PathFollow, Camera
+ // { "get_mode", "get_file_mode"}, // FileDialog broke Panel, Shader, CSGPolygon, Tilemap
+ // { "get_motion", "get_travel"}, // PhysicsTestMotionResult2D broke ParalaxLayer
+ // { "get_name", "get_tracker_name"}, // XRPositionalTracker broke OS, Node
+ // { "get_network_connected_peers", "get_peers"}, // MultiplayerAPI broke SceneTree
+ // { "get_network_peer", "has_multiplayer_peer"}, // MultiplayerAPI broke SceneTree
+ // { "get_network_unique_id", "get_unique_id"}, // MultiplayerAPI broke SceneTree
+ // { "get_offset", "get_position_offset" }, // GraphNode broke Gradient
+ // { "get_peer_port", "get_peer" }, // ENetMultiplayerPeer broke WebSocketServer
+ // { "get_process_mode", "get_process_callback" }, // ClippedCamera3D broke Node, Sky
+ // { "get_render_info", "get_rendering_info" }, // RenderingServer broke Viewport
+ // { "get_type", "get_tracker_type"}, // XRPositionalTracker broke GLTFAccessor, GLTFLight
+ // { "get_v_offset", "get_drag_vertical_offset"}, // Camera2D, broke PathFollow, Camera
+ // { "has_network_peer", "has_multiplayer_peer"}, // MultiplayerAPI broke SceneTree
+ // { "instance", "instantiate" }, // PackedScene, ClassDB - Broke FileSystemDock signal and also tscn files - [instance=ExtResource( 17 )] - this is implemented as custom rule
+ // { "is_listening", "is_bound"}, // PacketPeerUDP broke TCPServer, UDPServer
+ // { "is_refusing_new_network_connections", "is_refusing_new_connections"}, // MultiplayerAPI broke SceneTree
+ // { "is_valid", "has_valid_event" }, // Shortcut broke e.g. Callable
+ // { "listen", "bound"}, // PacketPeerUDP broke TCPServer, UDPServer
+ // { "load", "_load"}, // ResourceFormatLoader broke ConfigFile, Image, StreamTexture2D
+ // { "make_current", "set_current" }, // Camera2D broke Camera3D, Listener2D
+ // { "process", "_process" }, // AnimationNode - This word is commonly used
+ // { "save", "_save"}, // ResourceFormatLoader broke ConfigFile, Image, StreamTexture2D
+ // { "set_autowrap", "set_autowrap_mode" }, // AcceptDialog broke Label - Cyclic Rename
+ // { "set_color", "surface_set_color"}, // ImmediateMesh broke Light2D, Theme, SurfaceTool
+ // { "set_event", "set_shortcut" }, // BaseButton - Cyclic Rename
+ // { "set_extents", "set_size"}, // BoxShape, RectangleShape broke ReflectionProbe
+ // { "set_flag", "set_particle_flag"}, // ParticlesMaterial broke Window, HingeJoint3D
+ // { "set_h_offset", "set_drag_horizontal_offset" }, // Camera2D broke Camera3D, PathFollow3D, PathFollow2D
+ // { "set_margin", "set_offset" }, // Control broke Shape3D, AtlasTexture
+ // { "set_mode", "set_mode_file_mode" }, // FileDialog broke Panel, Shader, CSGPolygon, Tilemap
+ // { "set_normal", "surface_set_normal"}, // ImmediateGeometry broke SurfaceTool, WorldMarginShape2D
+ // { "set_process_mode", "set_process_callback" }, // AnimationTree broke Node, Tween, Sky
+ // { "set_refuse_new_network_connections", "set_refuse_new_connections"}, // MultiplayerAPI broke SceneTree
+ // { "set_uv", "surface_set_uv" }, // ImmediateMesh broke Polygon2D
+ // { "set_v_offset", "set_drag_vertical_offset" }, // Camera2D broke Camera3D, PathFollow3D, PathFollow2D
+ // {"get_points","get_points_id"},// Astar, broke Line2D, Convexpolygonshape
+ // {"get_v_scroll","get_v_scroll_bar"},//ItemList, broke TextView
+ { "RenderingServer", "get_tab_alignment" }, // Tab
+ { "_about_to_show", "_about_to_popup" }, // ColorPickerButton
+ { "_get_configuration_warning", "_get_configuration_warnings" }, // Node
+ { "_set_current", "set_current" }, // Camera2D
+ { "_set_editor_description", "set_editor_description" }, // Node
+ { "_toplevel_raise_self", "_top_level_raise_self" }, // CanvasItem
+ { "_update_wrap_at", "_update_wrap_at_column" }, // TextEdit
+ { "add_animation", "add_animation_library" }, // AnimationPlayer
+ { "add_cancel", "add_cancel_button" }, // AcceptDialog
+ { "add_central_force", "add_constant_central_force" }, //RigidDynamicBody2D
+ { "add_child_below_node", "add_sibling" }, // Node
+ { "add_color_override", "add_theme_color_override" }, // Control
+ { "add_constant_override", "add_theme_constant_override" }, // Control
+ { "add_font_override", "add_theme_font_override" }, // Control
+ { "add_force", "add_constant_force" }, //RigidDynamicBody2D
+ { "add_icon_override", "add_theme_icon_override" }, // Control
+ { "add_scene_import_plugin", "add_scene_format_importer_plugin" }, //EditorPlugin
+ { "add_stylebox_override", "add_theme_stylebox_override" }, // Control
+ { "add_torque", "add_constant_torque" }, //RigidDynamicBody2D
+ { "bind_child_node_to_bone", "set_bone_children" }, // Skeleton3D
+ { "bumpmap_to_normalmap", "bump_map_to_normal_map" }, // Image
+ { "can_be_hidden", "_can_be_hidden" }, // EditorNode3DGizmoPlugin
+ { "can_drop_data_fw", "_can_drop_data_fw" }, // ScriptEditor
+ { "can_generate_small_preview", "_can_generate_small_preview" }, // EditorResourcePreviewGenerator
+ { "can_instance", "can_instantiate" }, // PackedScene, Script
+ { "canvas_light_set_scale", "canvas_light_set_texture_scale" }, // RenderingServer
+ { "center_viewport_to_cursor", "center_viewport_to_caret" }, // TextEdit
+ { "clip_polygons_2d", "clip_polygons" }, // Geometry2D
+ { "clip_polyline_with_polygon_2d", "clip_polyline_with_polygon" }, //Geometry2D
+ { "commit_handle", "_commit_handle" }, // EditorNode3DGizmo
+ { "convex_hull_2d", "convex_hull" }, // Geometry2D
+ { "cursor_get_blink_speed", "get_caret_blink_speed" }, // TextEdit
+ { "cursor_get_column", "get_caret_column" }, // TextEdit
+ { "cursor_get_line", "get_caret_line" }, // TextEdit
+ { "cursor_set_blink_enabled", "set_caret_blink_enabled" }, // TextEdit
+ { "cursor_set_blink_speed", "set_caret_blink_speed" }, // TextEdit
+ { "cursor_set_column", "set_caret_column" }, // TextEdit
+ { "cursor_set_line", "set_caret_line" }, // TextEdit
+ { "damped_spring_joint_create", "joint_make_damped_spring" }, // PhysicsServer2D
+ { "damped_string_joint_get_param", "damped_spring_joint_get_param" }, // PhysicsServer2D
+ { "damped_string_joint_set_param", "damped_spring_joint_set_param" }, // PhysicsServer2D
+ { "delete_char_at_cursor", "delete_char_at_caret" }, // LineEdit
+ { "deselect_items", "deselect_all" }, // FileDialog
+ { "drop_data_fw", "_drop_data_fw" }, // ScriptEditor
+ { "exclude_polygons_2d", "exclude_polygons" }, // Geometry2D
+ { "find_scancode_from_string", "find_keycode_from_string" }, // OS
+ { "forward_canvas_draw_over_viewport", "_forward_canvas_draw_over_viewport" }, // EditorPlugin
+ { "forward_canvas_force_draw_over_viewport", "_forward_canvas_force_draw_over_viewport" }, // EditorPlugin
+ { "forward_canvas_gui_input", "_forward_canvas_gui_input" }, // EditorPlugin
+ { "forward_spatial_draw_over_viewport", "_forward_3d_draw_over_viewport" }, // EditorPlugin
+ { "forward_spatial_force_draw_over_viewport", "_forward_3d_force_draw_over_viewport" }, // EditorPlugin
+ { "forward_spatial_gui_input", "_forward_3d_gui_input" }, // EditorPlugin
+ { "generate_from_path", "_generate_from_path" }, // EditorResourcePreviewGenerator
+ { "generate_small_preview_automatically", "_generate_small_preview_automatically" }, // EditorResourcePreviewGenerator
+ { "get_action_list", "action_get_events" }, // InputMap
+ { "get_alt", "is_alt_pressed" }, // InputEventWithModifiers
+ { "get_animation_process_mode", "get_process_callback" }, // AnimationPlayer
+ { "get_applied_force", "get_constant_force" }, //RigidDynamicBody2D
+ { "get_applied_torque", "get_constant_torque" }, //RigidDynamicBody2D
+ { "get_audio_bus", "get_audio_bus_name" }, // Area3D
+ { "get_bound_child_nodes_to_bone", "get_bone_children" }, // Skeleton3D
+ { "get_camera", "get_camera_3d" }, // Viewport -> this is also convertable to get_camera_2d, broke GLTFNode
+ { "get_cancel", "get_cancel_button" }, // ConfirmationDialog
+ { "get_caption", "_get_caption" }, // AnimationNode
+ { "get_cast_to", "get_target_position" }, // RayCast2D, RayCast3D
+ { "get_child_by_name", "_get_child_by_name" }, // AnimationNode
+ { "get_child_nodes", "_get_child_nodes" }, // AnimationNode
+ { "get_closest_point_to_segment_2d", "get_closest_point_to_segment" }, // Geometry2D
+ { "get_closest_point_to_segment_uncapped_2d", "get_closest_point_to_segment_uncapped" }, // Geometry2D
+ { "get_closest_points_between_segments_2d", "get_closest_point_to_segment" }, // Geometry2D
+ { "get_collision_layer_bit", "get_collision_layer_value" }, // CSGShape3D and a lot of others like GridMap
+ { "get_collision_mask_bit", "get_collision_mask_value" }, // CSGShape3D and a lot of others like GridMap
+ { "get_color_types", "get_color_type_list" }, // Theme
+ { "get_command", "is_command_pressed" }, // InputEventWithModifiers
+ { "get_constant_types", "get_constant_type_list" }, // Theme
+ { "get_control", "is_ctrl_pressed" }, // InputEventWithModifiers
+ { "get_cull_mask_bit", "get_cull_mask_value" }, // Camera3D
+ { "get_cursor_position", "get_caret_column" }, // LineEdit
+ { "get_d", "get_distance" }, // LineShape2D
+ { "get_drag_data_fw", "_get_drag_data_fw" }, // ScriptEditor
+ { "get_editor_viewport", "get_viewport" }, // EditorPlugin
+ { "get_enabled_focus_mode", "get_focus_mode" }, // BaseButton
+ { "get_endian_swap", "is_big_endian" }, // File
+ { "get_error_string", "get_error_message" }, // JSON
+ { "get_focus_neighbour", "get_focus_neighbor" }, // Control
+ { "get_font_types", "get_font_type_list" }, // Theme
+ { "get_frame_color", "get_color" }, // ColorRect
+ { "get_global_rate_scale", "get_playback_speed_scale" }, // AudioServer
+ { "get_gravity_distance_scale", "get_gravity_point_distance_scale" }, //Area2D
+ { "get_gravity_vector", "get_gravity_direction" }, //Area2D
+ { "get_h_scrollbar", "get_h_scroll_bar" }, //ScrollContainer
+ { "get_hand", "get_tracker_hand" }, // XRPositionalTracker
+ { "get_handle_name", "_get_handle_name" }, // EditorNode3DGizmo
+ { "get_handle_value", "_get_handle_value" }, // EditorNode3DGizmo
+ { "get_icon_align", "get_icon_alignment" }, // Button
+ { "get_icon_types", "get_icon_type_list" }, // Theme
+ { "get_idle_frames", "get_process_frames" }, // Engine
+ { "get_import_options", "_get_import_options" }, // EditorImportPlugin
+ { "get_import_order", "_get_import_order" }, // EditorImportPlugin
+ { "get_importer_name", "_get_importer_name" }, // EditorImportPlugin
+ { "get_interior_ambient", "get_ambient_color" }, // ReflectionProbe
+ { "get_interior_ambient_energy", "get_ambient_color_energy" }, // ReflectionProbe
+ { "get_iterations_per_second", "get_physics_ticks_per_second" }, // Engine
+ { "get_last_mouse_speed", "get_last_mouse_velocity" }, // Input
+ { "get_layer_mask_bit", "get_layer_mask_value" }, // VisualInstance3D
+ { "get_len", "get_length" }, // File
+ { "get_max_atlas_size", "get_max_texture_size" }, // LightmapGI
+ { "get_metakey", "is_meta_pressed" }, // InputEventWithModifiers
+ { "get_mid_height", "get_height" }, // CapsuleMesh
+ { "get_motion_remainder", "get_remainder" }, // PhysicsTestMotionResult2D
+ { "get_network_connected_peers", "get_peers" }, // Multiplayer API
+ { "get_network_master", "get_multiplayer_authority" }, // Node
+ { "get_network_peer", "get_multiplayer_peer" }, // Multiplayer API
+ { "get_network_unique_id", "get_unique_id" }, // Multiplayer API
+ { "get_ok", "get_ok_button" }, // AcceptDialog
+ { "get_option_visibility", "_get_option_visibility" }, // EditorImportPlugin
+ { "get_parameter_default_value", "_get_parameter_default_value" }, // AnimationNode
+ { "get_parameter_list", "_get_parameter_list" }, // AnimationNode
+ { "get_parent_spatial", "get_parent_node_3d" }, // Node3D
+ { "get_physical_scancode", "get_physical_keycode" }, // InputEventKey
+ { "get_physical_scancode_with_modifiers", "get_physical_keycode_with_modifiers" }, // InputEventKey
+ { "get_plugin_icon", "_get_plugin_icon" }, // EditorPlugin
+ { "get_plugin_name", "_get_plugin_name" }, // EditorPlugin
+ { "get_preset_count", "_get_preset_count" }, // EditorImportPlugin
+ { "get_preset_name", "_get_preset_name" }, // EditorImportPlugin
+ { "get_recognized_extensions", "_get_recognized_extensions" }, // ResourceFormatLoader, EditorImportPlugin broke ResourceSaver
+ { "get_render_info", "get_rendering_info" }, // RenderingServer
+ { "get_render_targetsize", "get_render_target_size" }, // XRInterface
+ { "get_resource_type", "_get_resource_type" }, // ResourceFormatLoader
+ { "get_result", "get_data" }, //JSON
+ { "get_rpc_sender_id", "get_remote_sender_id" }, // Multiplayer API
+ { "get_save_extension", "_get_save_extension" }, // EditorImportPlugin
+ { "get_scancode", "get_keycode" }, // InputEventKey
+ { "get_scancode_string", "get_keycode_string" }, // OS
+ { "get_scancode_with_modifiers", "get_keycode_with_modifiers" }, // InputEventKey
+ { "get_shift", "is_shift_pressed" }, // InputEventWithModifiers
+ { "get_size_override", "get_size_2d_override" }, // SubViewport
+ { "get_slips_on_slope", "get_slide_on_slope" }, // SeparationRayShape2D, SeparationRayShape3D
+ { "get_space_override_mode", "get_gravity_space_override_mode" }, // Area2D
+ { "get_speed", "get_velocity" }, // InputEventMouseMotion
+ { "get_stylebox_types", "get_stylebox_type_list" }, // Theme
+ { "get_surface_material", "get_surface_override_material" }, // MeshInstance3D broke ImporterMesh
+ { "get_surface_material_count", "get_surface_override_material_count" }, // MeshInstance3D
+ { "get_tab_disabled", "is_tab_disabled" }, // Tab
+ { "get_tab_hidden", "is_tab_hidden" }, // Tab
+ { "get_text_align", "get_text_alignment" }, // Button
+ { "get_theme_item_types", "get_theme_item_type_list" }, // Theme
+ { "get_timer_process_mode", "get_timer_process_callback" }, // Timer
+ { "get_translation", "get_position" }, // Node3D broke GLTFNode which is used rarely
+ { "get_use_in_baked_light", "is_baking_navigation" }, // GridMap
+ { "get_used_cells_by_id", "get_used_cells" }, // TileMap
+ { "get_v_scrollbar", "get_v_scroll_bar" }, //ScrollContainer
+ { "get_visible_name", "_get_visible_name" }, // EditorImportPlugin
+ { "get_window_layout", "_get_window_layout" }, // EditorPlugin
+ { "get_word_under_cursor", "get_word_under_caret" }, // TextEdit
+ { "get_world", "get_world_3d" }, // Viewport, Spatial
+ { "get_zfar", "get_far" }, // Camera3D broke GLTFCamera
+ { "get_znear", "get_near" }, // Camera3D broke GLTFCamera
+ { "groove_joint_create", "joint_make_groove" }, // PhysicsServer2D
+ { "handle_menu_selected", "_handle_menu_selected" }, // EditorResourcePicker
+ { "handles_type", "_handles_type" }, // ResourceFormatLoader
+ { "has_color", "has_theme_color" }, // Control broke Theme
+ { "has_color_override", "has_theme_color_override" }, // Control broke Theme
+ { "has_constant", "has_theme_constant" }, // Control
+ { "has_constant_override", "has_theme_constant_override" }, // Control
+ { "has_filter", "_has_filter" }, // AnimationNode
+ { "has_font", "has_theme_font" }, // Control broke Theme
+ { "has_font_override", "has_theme_font_override" }, // Control
+ { "has_icon", "has_theme_icon" }, // Control broke Theme
+ { "has_icon_override", "has_theme_icon_override" }, // Control
+ { "has_main_screen", "_has_main_screen" }, // EditorPlugin
+ { "has_network_peer", "has_multiplayer_peer" }, // Multiplayer API
+ { "has_stylebox", "has_theme_stylebox" }, // Control broke Theme
+ { "has_stylebox_override", "has_theme_stylebox_override" }, // Control
+ { "http_escape", "uri_encode" }, // String
+ { "http_unescape", "uri_decode" }, // String
+ { "import_animation_from_other_importer", "_import_animation" }, //EditorSceneFormatImporter
+ { "import_scene_from_other_importer", "_import_scene" }, //EditorSceneFormatImporter
+ { "instance_set_surface_material", "instance_set_surface_override_material" }, // RenderingServer
+ { "intersect_polygons_2d", "intersect_polygons" }, // Geometry2D
+ { "intersect_polyline_with_polygon_2d", "intersect_polyline_with_polygon" }, // Geometry2D
+ { "is_a_parent_of", "is_ancestor_of" }, // Node
+ { "is_commiting_action", "is_committing_action" }, // UndoRedo
+ { "is_doubleclick", "is_double_click" }, // InputEventMouseButton
+ { "is_h_drag_enabled", "is_drag_horizontal_enabled" }, // Camera2D
+ { "is_handle_highlighted", "_is_handle_highlighted" }, // EditorNode3DGizmo, EditorNode3DGizmoPlugin
+ { "is_network_master", "is_multiplayer_authority" }, // Node
+ { "is_network_server", "is_server" }, // Multiplayer API
+ { "is_normalmap", "is_normal_map" }, // NoiseTexture
+ { "is_refusing_new_network_connections", "is_refusing_new_connections" }, // Multiplayer API
+ { "is_region", "is_region_enabled" }, // Sprite2D
+ { "is_scancode_unicode", "is_keycode_unicode" }, // OS
+ { "is_selectable_when_hidden", "_is_selectable_when_hidden" }, // EditorNode3DGizmoPlugin
+ { "is_set_as_toplevel", "is_set_as_top_level" }, // CanvasItem
+ { "is_shortcut", "matches_event" }, // Shortcut
+ { "is_size_override_stretch_enabled", "is_size_2d_override_stretch_enabled" }, // SubViewport
+ { "is_sort_enabled", "is_y_sort_enabled" }, // Node2D
+ { "is_static_body", "is_able_to_sleep" }, // PhysicalBone3D - TODO - not sure
+ { "is_v_drag_enabled", "is_drag_vertical_enabled" }, // Camera2D
+ { "joint_create_cone_twist", "joint_make_cone_twist" }, // PhysicsServer3D
+ { "joint_create_generic_6dof", "joint_make_generic_6dof" }, // PhysicsServer3D
+ { "joint_create_hinge", "joint_make_hinge" }, // PhysicsServer3D
+ { "joint_create_pin", "joint_make_pin" }, // PhysicsServer3D
+ { "joint_create_slider", "joint_make_slider" }, // PhysicsServer3D
+ { "line_intersects_line_2d", "line_intersects_line" }, // Geometry2D
+ { "load_from_globals", "load_from_project_settings" }, // InputMap
+ { "make_convex_from_brothers", "make_convex_from_siblings" }, // CollisionShape3D
+ { "merge_polygons_2d", "merge_polygons" }, // Geometry2D
+ { "mesh_surface_get_format", "mesh_surface_get_format_attribute_stride" }, // RenderingServer
+ { "mesh_surface_update_region", "mesh_surface_update_attribute_region" }, // RenderingServer
+ { "move_to_bottom", "move_after" }, // Skeleton3D
+ { "move_to_top", "move_before" }, // Skeleton3D
+ { "multimesh_allocate", "multimesh_allocate_data" }, // RenderingServer
+ { "normalmap_to_xy", "normal_map_to_xy" }, // Image
+ { "offset_polygon_2d", "offset_polygon" }, // Geometry2D
+ { "offset_polyline_2d", "offset_polyline" }, // Geometry2D
+ { "percent_decode", "uri_decode" }, // String
+ { "percent_encode", "uri_encode" }, // String
+ { "pin_joint_create", "joint_make_pin" }, // PhysicsServer2D
+ { "popup_centered_minsize", "popup_centered_clamped" }, // Window
+ { "post_import", "_post_import" }, // EditorScenePostImport
+ { "print_stray_nodes", "print_orphan_nodes" }, // Node
+ { "property_list_changed_notify", "notify_property_list_changed" }, // Object
+ { "recognize", "_recognize" }, // ResourceFormatLoader
+ { "regen_normalmaps", "regen_normal_maps" }, // ArrayMesh
+ { "remove", "remove_at" }, // Array, broke Directory
+ { "remove_animation", "remove_animation_library" }, // AnimationPlayer
+ { "remove_color_override", "remove_theme_color_override" }, // Control
+ { "remove_constant_override", "remove_theme_constant_override" }, // Control
+ { "remove_font_override", "remove_theme_font_override" }, // Control
+ { "remove_scene_import_plugin", "remove_scene_format_importer_plugin" }, //EditorPlugin
+ { "remove_stylebox_override", "remove_theme_stylebox_override" }, // Control
+ { "rename_animation", "rename_animation_library" }, // AnimationPlayer
+ { "rename_dependencies", "_rename_dependencies" }, // ResourceFormatLoader
+ { "save_external_data", "_save_external_data" }, // EditorPlugin
+ { "segment_intersects_segment_2d", "segment_intersects_segment" }, // Geometry2D
+ { "set_adjustment_enable", "set_adjustment_enabled" }, // Environment
+ { "set_alt", "set_alt_pressed" }, // InputEventWithModifiers
+ { "set_anchor_and_margin", "set_anchor_and_offset" }, // Control
+ { "set_anchors_and_margins_preset", "set_anchors_and_offsets_preset" }, // Control
+ { "set_animation_process_mode", "set_process_callback" }, // AnimationPlayer
+ { "set_as_bulk_array", "set_buffer" }, // MultiMesh
+ { "set_as_normalmap", "set_as_normal_map" }, // NoiseTexture
+ { "set_as_toplevel", "set_as_top_level" }, // CanvasItem
+ { "set_audio_bus", "set_audio_bus_name" }, // Area3D
+ { "set_autowrap", "set_autowrap_mode" }, // Label broke AcceptDialog
+ { "set_cast_to", "set_target_position" }, // RayCast2D, RayCast3D
+ { "set_collision_layer_bit", "set_collision_layer_value" }, // CSGShape3D and a lot of others like GridMap
+ { "set_collision_mask_bit", "set_collision_mask_value" }, // CSGShape3D and a lot of others like GridMap
+ { "set_column_min_width", "set_column_custom_minimum_width" }, // Tree
+ { "set_command", "set_command_pressed" }, // InputEventWithModifiers
+ { "set_control", "set_ctrl_pressed" }, // InputEventWithModifiers
+ { "set_create_options", "_set_create_options" }, // EditorResourcePicker
+ { "set_cull_mask_bit", "set_cull_mask_value" }, // Camera3D
+ { "set_cursor_position", "set_caret_column" }, // LineEdit
+ { "set_d", "set_distance" }, // WorldMarginShape2D
+ { "set_doubleclick", "set_double_click" }, // InputEventMouseButton
+ { "set_enabled_focus_mode", "set_focus_mode" }, // BaseButton
+ { "set_endian_swap", "set_big_endian" }, // File
+ { "set_expand_to_text_length", "set_expand_to_text_length_enabled" }, // LineEdit
+ { "set_focus_neighbour", "set_focus_neighbor" }, // Control
+ { "set_frame_color", "set_color" }, // ColorRect
+ { "set_global_rate_scale", "set_playback_speed_scale" }, // AudioServer
+ { "set_gravity_distance_scale", "set_gravity_point_distance_scale" }, // Area2D
+ { "set_gravity_vector", "set_gravity_direction" }, // Area2D
+ { "set_h_drag_enabled", "set_drag_horizontal_enabled" }, // Camera2D
+ { "set_icon_align", "set_icon_alignment" }, // Button
+ { "set_interior_ambient", "set_ambient_color" }, // ReflectionProbe
+ { "set_interior_ambient_energy", "set_ambient_color_energy" }, // ReflectionProbe
+ { "set_is_initialized", "_is_initialized" }, // XRInterface
+ { "set_is_primary", "set_primary" }, // XRInterface
+ { "set_iterations_per_second", "set_physics_ticks_per_second" }, // Engine
+ { "set_layer_mask_bit", "set_layer_mask_value" }, // VisualInstance3D
+ { "set_margins_preset", "set_offsets_preset" }, // Control
+ { "set_max_atlas_size", "set_max_texture_size" }, // LightmapGI
+ { "set_metakey", "set_meta_pressed" }, // InputEventWithModifiers
+ { "set_mid_height", "set_height" }, // CapsuleMesh
+ { "set_network_master", "set_multiplayer_authority" }, // Node
+ { "set_network_peer", "set_multiplayer_peer" }, // Multiplayer API
+ { "set_physical_scancode", "set_physical_keycode" }, // InputEventKey
+ { "set_refuse_new_network_connections", "set_refuse_new_connections" }, // Multiplayer API
+ { "set_region", "set_region_enabled" }, // Sprite2D, Sprite broke AtlasTexture
+ { "set_region_filter_clip", "set_region_filter_clip_enabled" }, // Sprite2D
+ { "set_rotate", "set_rotates" }, // PathFollow2D
+ { "set_scancode", "set_keycode" }, // InputEventKey
+ { "set_shift", "set_shift_pressed" }, // InputEventWithModifiers
+ { "set_size_override", "set_size_2d_override" }, // SubViewport broke ImageTexture
+ { "set_size_override_stretch", "set_size_2d_override_stretch" }, // SubViewport
+ { "set_slips_on_slope", "set_slide_on_slope" }, // SeparationRayShape2D, SeparationRayShape3D
+ { "set_sort_enabled", "set_y_sort_enabled" }, // Node2D
+ { "set_space_override_mode", "set_gravity_space_override_mode" }, // Area2D
+ { "set_speed", "set_velocity" }, // InputEventMouseMotion
+ { "set_ssao_edge_sharpness", "set_ssao_sharpness" }, // Environment
+ { "set_surface_material", "set_surface_override_material" }, // MeshInstance3D broke ImporterMesh
+ { "set_tab_align", "set_tab_alignment" }, //TabContainer
+ { "set_tangent", "surface_set_tangent" }, // ImmediateGeometry broke SurfaceTool
+ { "set_text_align", "set_text_alignment" }, // Button
+ { "set_timer_process_mode", "set_timer_process_callback" }, // Timer
+ { "set_tonemap_auto_exposure", "set_tonemap_auto_exposure_enabled" }, // Environment
+ { "set_translation", "set_position" }, // Node3D - this broke GLTFNode which is used rarely
+ { "set_uv2", "surface_set_uv2" }, // ImmediateMesh broke Surffacetool
+ { "set_v_drag_enabled", "set_drag_vertical_enabled" }, // Camera2D
+ { "set_valign", "set_vertical_alignment" }, // Label
+ { "set_window_layout", "_set_window_layout" }, // EditorPlugin
+ { "set_zfar", "set_far" }, // Camera3D broke GLTFCamera
+ { "set_znear", "set_near" }, // Camera3D broke GLTFCamera
+ { "shortcut_match", "is_match" }, // InputEvent
+ { "skeleton_allocate", "skeleton_allocate_data" }, // RenderingServer
+ { "surface_update_region", "surface_update_attribute_region" }, // ArrayMesh
+ { "targeting_method", "tween_method" }, // Tween
+ { "targeting_property", "tween_property" }, // Tween
+ { "track_remove_key_at_position", "track_remove_key_at_time" }, // Animation
+ { "triangulate_delaunay_2d", "triangulate_delaunay" }, // Geometry2D
+ { "unbind_child_node_from_bone", "remove_bone_child" }, // Skeleton3D
+ { "unselect", "deselect" }, // ItemList
+ { "unselect_all", "deselect_all" }, // ItemList
+ { "update_configuration_warning", "update_configuration_warnings" }, // Node
+ { "update_gizmo", "update_gizmos" }, // Node3D
+ { "viewport_set_use_arvr", "viewport_set_use_xr" }, // RenderingServer
+ { "warp_mouse_position", "warp_mouse" }, // Input
+
+ // Builtin types
+ // { "empty", "is_empty" }, // Array - Used as custom rule // Be careful, this will be used everywhere
+ { "clamped", "clamp" }, // Vector2 // Be careful, this will be used everywhere
+ { "get_rotation_quat", "get_rotation_quaternion" }, // Basis
+ { "grow_margin", "grow_side" }, // Rect2
+ { "invert", "reverse" }, // Array - TODO check // Be careful, this will be used everywhere
+ { "is_abs_path", "is_absolute_path" }, // String
+ { "is_valid_integer", "is_valid_int" }, // String
+ { "linear_interpolate", "lerp" }, // Color
+ { "to_ascii", "to_ascii_buffer" }, // String
+ { "to_utf8", "to_utf8_buffer" }, // String
+ { "to_wchar", "to_utf32_buffer" }, // String // TODO - utf32 or utf16?
+
+ // Globals
+ { "rand_range", "randf_range" },
+ { "stepify", "snapped" },
+
+ { nullptr, nullptr },
+};
+
+// gdscript_function_renames clone with CamelCase
+static const char *csharp_function_renames[][2] = {
+ // { "_SetName", "GetTrackerName"}, // XRPositionalTracker - CameraFeed use this
+ // { "_UnhandledInput", "_UnhandledKeyInput"}, // BaseButton, ViewportContainer broke Node, FileDialog,SubViewportContainer
+ // { "CreateGizmo", "_CreateGizmo"}, // EditorNode3DGizmoPlugin - may be used
+ // { "GetDependencies", "_GetDependencies" }, // ResourceFormatLoader broke ResourceLoader
+ // { "GetExtents", "GetSize" }, // BoxShape, RectangleShape broke Decal, VoxelGI, GPUParticlesCollisionBox, GPUParticlesCollisionSDF, GPUParticlesCollisionHeightField, GPUParticlesAttractorBox, GPUParticlesAttractorVectorField, FogVolume
+ // { "GetHOffset", "GetDragHorizontalOffset"}, // Camera2D, broke PathFollow, Camera
+ // { "GetMode", "GetFileMode"}, // FileDialog broke Panel, Shader, CSGPolygon, Tilemap
+ // { "GetMotion", "GetTravel"}, // PhysicsTestMotionResult2D broke ParalaxLayer
+ // { "GetName", "GetTrackerName"}, // XRPositionalTracker broke OS, Node
+ // { "GetNetworkConnectedPeers", "GetPeers"}, // MultiplayerAPI broke SceneTree
+ // { "GetNetworkPeer", "HasMultiplayerPeer"}, // MultiplayerAPI broke SceneTree
+ // { "GetNetworkUniqueId", "GetUniqueId"}, // MultiplayerAPI broke SceneTree
+ // { "GetOffset", "GetPositionOffset" }, // GraphNode broke Gradient
+ // { "GetPeerPort", "GetPeer" }, // ENetMultiplayerPeer broke WebSocketServer
+ // { "GetProcessMode", "GetProcessCallback" }, // ClippedCamera3D broke Node, Sky
+ // { "GetRenderInfo", "GetRenderingInfo" }, // RenderingServer broke Viewport
+ // { "GetType", "GetTrackerType"}, // XRPositionalTracker broke GLTFAccessor, GLTFLight
+ // { "GetVOffset", "GetDragVerticalOffset"}, // Camera2D, broke PathFollow, Camera
+ // { "HasNetworkPeer", "HasMultiplayerPeer"}, // MultiplayerAPI broke SceneTree
+ // { "Instance", "Instantiate" }, // PackedScene, ClassDB - Broke FileSystemDock signal and also tscn files - [instance=ExtResource( 17 )] - this is implemented as custom rule
+ // { "IsListening", "IsBound"}, // PacketPeerUDP broke TCPServer, UDPServer
+ // { "IsRefusingNewNetworkConnections", "IsRefusingNewConnections"}, // MultiplayerAPI broke SceneTree
+ // { "IsValid", "HasValidEvent" }, // Shortcut broke e.g. Callable
+ // { "Listen", "Bound"}, // PacketPeerUDP broke TCPServer, UDPServer
+ // { "Load", "_Load"}, // ResourceFormatLoader broke ConfigFile, Image, StreamTexture2D
+ // { "MakeCurrent", "SetCurrent" }, // Camera2D broke Camera3D, Listener2D
+ // { "Process", "_Process" }, // AnimationNode - This word is commonly used
+ // { "Save", "_Save"}, // ResourceFormatLoader broke ConfigFile, Image, StreamTexture2D
+ // { "SetAutowrap", "SetAutowrapMode" }, // AcceptDialog broke Label - Cyclic Rename
+ // { "SetColor", "SurfaceSetColor"}, // ImmediateMesh broke Light2D, Theme, SurfaceTool
+ // { "SetEvent", "SetShortcut" }, // BaseButton - Cyclic Rename
+ // { "SetExtents", "SetSize"}, // BoxShape, RectangleShape broke ReflectionProbe
+ // { "SetFlag", "SetParticleFlag"}, // ParticlesMaterial broke Window, HingeJoint3D
+ // { "SetHOffset", "SetDragHorizontalOffset" }, // Camera2D broke Camera3D, PathFollow3D, PathFollow2D
+ // { "SetMargin", "SetOffset" }, // Control broke Shape3D, AtlasTexture
+ // { "SetMode", "SetModeFileMode" }, // FileDialog broke Panel, Shader, CSGPolygon, Tilemap
+ // { "SetNormal", "SurfaceSetNormal"}, // ImmediateGeometry broke SurfaceTool, WorldMarginShape2D
+ // { "SetProcessMode", "SetProcessCallback" }, // AnimationTree broke Node, Tween, Sky
+ // { "SetRefuseNewNetworkConnections", "SetRefuseNewConnections"}, // MultiplayerAPI broke SceneTree
+ // { "SetUv", "SurfaceSetUv" }, // ImmediateMesh broke Polygon2D
+ // { "SetVOffset", "SetDragVerticalOffset" }, // Camera2D broke Camera3D, PathFollow3D, PathFollow2D
+ // {"GetPoints","GetPointsId"},// Astar, broke Line2D, Convexpolygonshape
+ // {"GetVScroll","GetVScrollBar"},//ItemList, broke TextView
+ { "RenderingServer", "GetTabAlignment" }, // Tab
+ { "_AboutToShow", "_AboutToPopup" }, // ColorPickerButton
+ { "_GetConfigurationWarning", "_GetConfigurationWarnings" }, // Node
+ { "_SetCurrent", "SetCurrent" }, // Camera2D
+ { "_SetEditorDescription", "SetEditorDescription" }, // Node
+ { "_ToplevelRaiseSelf", "_TopLevelRaiseSelf" }, // CanvasItem
+ { "_UpdateWrapAt", "_UpdateWrapAtColumn" }, // TextEdit
+ { "AddAnimation", "AddAnimationLibrary" }, // AnimationPlayer
+ { "AddCancel", "AddCancelButton" }, // AcceptDialog
+ { "AddCentralForce", "AddConstantCentralForce" }, //RigidDynamicBody2D
+ { "AddChildBelowNode", "AddSibling" }, // Node
+ { "AddColorOverride", "AddThemeColorOverride" }, // Control
+ { "AddConstantOverride", "AddThemeConstantOverride" }, // Control
+ { "AddFontOverride", "AddThemeFontOverride" }, // Control
+ { "AddForce", "AddConstantForce" }, //RigidDynamicBody2D
+ { "AddIconOverride", "AddThemeIconOverride" }, // Control
+ { "AddSceneImportPlugin", "AddSceneFormatImporterPlugin" }, //EditorPlugin
+ { "AddStyleboxOverride", "AddThemeStyleboxOverride" }, // Control
+ { "AddTorque", "AddConstantTorque" }, //RigidDynamicBody2D
+ { "BindChildNodeToBone", "SetBoneChildren" }, // Skeleton3D
+ { "BumpmapToNormalmap", "BumpMapToNormalMap" }, // Image
+ { "CanBeHidden", "_CanBeHidden" }, // EditorNode3DGizmoPlugin
+ { "CanDropDataFw", "_CanDropDataFw" }, // ScriptEditor
+ { "CanGenerateSmallPreview", "_CanGenerateSmallPreview" }, // EditorResourcePreviewGenerator
+ { "CanInstance", "CanInstantiate" }, // PackedScene, Script
+ { "CanvasLightSetScale", "CanvasLightSetTextureScale" }, // RenderingServer
+ { "CenterViewportToCursor", "CenterViewportToCaret" }, // TextEdit
+ { "ClipPolygons2d", "ClipPolygons" }, // Geometry2D
+ { "ClipPolylineWithPolygon2d", "ClipPolylineWithPolygon" }, //Geometry2D
+ { "CommitHandle", "_CommitHandle" }, // EditorNode3DGizmo
+ { "ConvexHull2d", "ConvexHull" }, // Geometry2D
+ { "CursorGetBlinkSpeed", "GetCaretBlinkSpeed" }, // TextEdit
+ { "CursorGetColumn", "GetCaretColumn" }, // TextEdit
+ { "CursorGetLine", "GetCaretLine" }, // TextEdit
+ { "CursorSetBlinkEnabled", "SetCaretBlinkEnabled" }, // TextEdit
+ { "CursorSetBlinkSpeed", "SetCaretBlinkSpeed" }, // TextEdit
+ { "CursorSetColumn", "SetCaretColumn" }, // TextEdit
+ { "CursorSetLine", "SetCaretLine" }, // TextEdit
+ { "DampedSpringJointCreate", "JointMakeDampedSpring" }, // PhysicsServer2D
+ { "DampedStringJointGetParam", "DampedSpringJointGetParam" }, // PhysicsServer2D
+ { "DampedStringJointSetParam", "DampedSpringJointSetParam" }, // PhysicsServer2D
+ { "DeleteCharAtCursor", "DeleteCharAtCaret" }, // LineEdit
+ { "DeselectItems", "DeselectAll" }, // FileDialog
+ { "DropDataFw", "_DropDataFw" }, // ScriptEditor
+ { "ExcludePolygons2d", "ExcludePolygons" }, // Geometry2D
+ { "FindScancodeFromString", "FindKeycodeFromString" }, // OS
+ { "ForwardCanvasDrawOverViewport", "_ForwardCanvasDrawOverViewport" }, // EditorPlugin
+ { "ForwardCanvasForceDrawOverViewport", "_ForwardCanvasForceDrawOverViewport" }, // EditorPlugin
+ { "ForwardCanvasGuiInput", "_ForwardCanvasGuiInput" }, // EditorPlugin
+ { "ForwardSpatialDrawOverViewport", "_Forward3dDrawOverViewport" }, // EditorPlugin
+ { "ForwardSpatialForceDrawOverViewport", "_Forward3dForceDrawOverViewport" }, // EditorPlugin
+ { "ForwardSpatialGuiInput", "_Forward3dGuiInput" }, // EditorPlugin
+ { "GenerateFromPath", "_GenerateFromPath" }, // EditorResourcePreviewGenerator
+ { "GenerateSmallPreviewAutomatically", "_GenerateSmallPreviewAutomatically" }, // EditorResourcePreviewGenerator
+ { "GetActionList", "ActionGetEvents" }, // InputMap
+ { "GetAlt", "IsAltPressed" }, // InputEventWithModifiers
+ { "GetAnimationProcessMode", "GetProcessCallback" }, // AnimationPlayer
+ { "GetAppliedForce", "GetConstantForce" }, //RigidDynamicBody2D
+ { "GetAppliedTorque", "GetConstantTorque" }, //RigidDynamicBody2D
+ { "GetAudioBus", "GetAudioBusName" }, // Area3D
+ { "GetBoundChildNodesToBone", "GetBoneChildren" }, // Skeleton3D
+ { "GetCamera", "GetCamera3d" }, // Viewport -> this is also convertable to getCamera2d, broke GLTFNode
+ { "GetCancel", "GetCancelButton" }, // ConfirmationDialog
+ { "GetCaption", "_GetCaption" }, // AnimationNode
+ { "GetCastTo", "GetTargetPosition" }, // RayCast2D, RayCast3D
+ { "GetChildByName", "_GetChildByName" }, // AnimationNode
+ { "GetChildNodes", "_GetChildNodes" }, // AnimationNode
+ { "GetClosestPointToSegment2d", "GetClosestPointToSegment" }, // Geometry2D
+ { "GetClosestPointToSegmentUncapped2d", "GetClosestPointToSegmentUncapped" }, // Geometry2D
+ { "GetClosestPointsBetweenSegments2d", "GetClosestPointToSegment" }, // Geometry2D
+ { "GetCollisionLayerBit", "GetCollisionLayerValue" }, // CSGShape3D and a lot of others like GridMap
+ { "GetCollisionMaskBit", "GetCollisionMaskValue" }, // CSGShape3D and a lot of others like GridMap
+ { "GetColorTypes", "GetColorTypeList" }, // Theme
+ { "GetCommand", "IsCommandPressed" }, // InputEventWithModifiers
+ { "GetConstantTypes", "GetConstantTypeList" }, // Theme
+ { "GetControl", "IsCtrlPressed" }, // InputEventWithModifiers
+ { "GetCullMaskBit", "GetCullMaskValue" }, // Camera3D
+ { "GetCursorPosition", "GetCaretColumn" }, // LineEdit
+ { "GetD", "GetDistance" }, // LineShape2D
+ { "GetDragDataFw", "_GetDragDataFw" }, // ScriptEditor
+ { "GetEditorViewport", "GetViewport" }, // EditorPlugin
+ { "GetEnabledFocusMode", "GetFocusMode" }, // BaseButton
+ { "GetEndianSwap", "IsBigEndian" }, // File
+ { "GetErrorString", "GetErrorMessage" }, // JSON
+ { "GetFocusNeighbour", "GetFocusNeighbor" }, // Control
+ { "GetFontTypes", "GetFontTypeList" }, // Theme
+ { "GetFrameColor", "GetColor" }, // ColorRect
+ { "GetGlobalRateScale", "GetPlaybackSpeedScale" }, // AudioServer
+ { "GetGravityDistanceScale", "GetGravityPointDistanceScale" }, //Area2D
+ { "GetGravityVector", "GetGravityDirection" }, //Area2D
+ { "GetHScrollbar", "GetHScrollBar" }, //ScrollContainer
+ { "GetHand", "GetTrackerHand" }, // XRPositionalTracker
+ { "GetHandleName", "_GetHandleName" }, // EditorNode3DGizmo
+ { "GetHandleValue", "_GetHandleValue" }, // EditorNode3DGizmo
+ { "GetIconAlign", "GetIconAlignment" }, // Button
+ { "GetIconTypes", "GetIconTypeList" }, // Theme
+ { "GetIdleFrames", "GetProcessFrames" }, // Engine
+ { "GetImportOptions", "_GetImportOptions" }, // EditorImportPlugin
+ { "GetImportOrder", "_GetImportOrder" }, // EditorImportPlugin
+ { "GetImporterName", "_GetImporterName" }, // EditorImportPlugin
+ { "GetInteriorAmbient", "GetAmbientColor" }, // ReflectionProbe
+ { "GetInteriorAmbientEnergy", "GetAmbientColorEnergy" }, // ReflectionProbe
+ { "GetIterationsPerSecond", "GetPhysicsTicksPerSecond" }, // Engine
+ { "GetLastMouseSpeed", "GetLastMouseVelocity" }, // Input
+ { "GetLayerMaskBit", "GetLayerMaskValue" }, // VisualInstance3D
+ { "GetLen", "GetLength" }, // File
+ { "GetMaxAtlasSize", "GetMaxTextureSize" }, // LightmapGI
+ { "GetMetakey", "IsMetaPressed" }, // InputEventWithModifiers
+ { "GetMidHeight", "GetHeight" }, // CapsuleMesh
+ { "GetMotionRemainder", "GetRemainder" }, // PhysicsTestMotionResult2D
+ { "GetNetworkConnectedPeers", "GetPeers" }, // Multiplayer API
+ { "GetNetworkMaster", "GetMultiplayerAuthority" }, // Node
+ { "GetNetworkPeer", "GetMultiplayerPeer" }, // Multiplayer API
+ { "GetNetworkUniqueId", "GetUniqueId" }, // Multiplayer API
+ { "GetOk", "GetOkButton" }, // AcceptDialog
+ { "GetOptionVisibility", "_GetOptionVisibility" }, // EditorImportPlugin
+ { "GetParameterDefaultValue", "_GetParameterDefaultValue" }, // AnimationNode
+ { "GetParameterList", "_GetParameterList" }, // AnimationNode
+ { "GetParentSpatial", "GetParentNode3d" }, // Node3D
+ { "GetPhysicalScancode", "GetPhysicalKeycode" }, // InputEventKey
+ { "GetPhysicalScancodeWithModifiers", "GetPhysicalKeycodeWithModifiers" }, // InputEventKey
+ { "GetPluginIcon", "_GetPluginIcon" }, // EditorPlugin
+ { "GetPluginName", "_GetPluginName" }, // EditorPlugin
+ { "GetPresetCount", "_GetPresetCount" }, // EditorImportPlugin
+ { "GetPresetName", "_GetPresetName" }, // EditorImportPlugin
+ { "GetRecognizedExtensions", "_GetRecognizedExtensions" }, // ResourceFormatLoader, EditorImportPlugin broke ResourceSaver
+ { "GetRenderInfo", "GetRenderingInfo" }, // RenderingServer
+ { "GetRenderTargetsize", "GetRenderTargetSize" }, // XRInterface
+ { "GetResourceType", "_GetResourceType" }, // ResourceFormatLoader
+ { "GetResult", "GetData" }, //JSON
+ { "GetRpcSenderId", "GetRemoteSenderId" }, // Multiplayer API
+ { "GetSaveExtension", "_GetSaveExtension" }, // EditorImportPlugin
+ { "GetScancode", "GetKeycode" }, // InputEventKey
+ { "GetScancodeString", "GetKeycodeString" }, // OS
+ { "GetScancodeWithModifiers", "GetKeycodeWithModifiers" }, // InputEventKey
+ { "GetShift", "IsShiftPressed" }, // InputEventWithModifiers
+ { "GetSizeOverride", "GetSize2dOverride" }, // SubViewport
+ { "GetSlipsOnSlope", "GetSlideOnSlope" }, // SeparationRayShape2D, SeparationRayShape3D
+ { "GetSpaceOverrideMode", "GetGravitySpaceOverrideMode" }, // Area2D
+ { "GetSpeed", "GetVelocity" }, // InputEventMouseMotion
+ { "GetStyleboxTypes", "GetStyleboxTypeList" }, // Theme
+ { "GetSurfaceMaterial", "GetSurfaceOverrideMaterial" }, // MeshInstance3D broke ImporterMesh
+ { "GetSurfaceMaterialCount", "GetSurfaceOverrideMaterialCount" }, // MeshInstance3D
+ { "GetTabDisabled", "IsTabDisabled" }, // Tab
+ { "GetTabHidden", "IsTabHidden" }, // Tab
+ { "GetTextAlign", "GetTextAlignment" }, // Button
+ { "GetThemeItemTypes", "GetThemeItemTypeList" }, // Theme
+ { "GetTimerProcessMode", "GetTimerProcessCallback" }, // Timer
+ { "GetTranslation", "GetPosition" }, // Node3D broke GLTFNode which is used rarely
+ { "GetUseInBakedLight", "IsBakingNavigation" }, // GridMap
+ { "GetUsedCellsById", "GetUsedCells" }, // TileMap
+ { "GetVScrollbar", "GetVScrollBar" }, //ScrollContainer
+ { "GetVisibleName", "_GetVisibleName" }, // EditorImportPlugin
+ { "GetWindowLayout", "_GetWindowLayout" }, // EditorPlugin
+ { "GetWordUnderCursor", "GetWordUnderCaret" }, // TextEdit
+ { "GetWorld", "GetWorld3d" }, // Viewport, Spatial
+ { "GetZfar", "GetFar" }, // Camera3D broke GLTFCamera
+ { "GetZnear", "GetNear" }, // Camera3D broke GLTFCamera
+ { "GrooveJointCreate", "JointMakeGroove" }, // PhysicsServer2D
+ { "HandleMenuSelected", "_HandleMenuSelected" }, // EditorResourcePicker
+ { "HandlesType", "_HandlesType" }, // ResourceFormatLoader
+ { "HasColor", "HasThemeColor" }, // Control broke Theme
+ { "HasColorOverride", "HasThemeColorOverride" }, // Control broke Theme
+ { "HasConstant", "HasThemeConstant" }, // Control
+ { "HasConstantOverride", "HasThemeConstantOverride" }, // Control
+ { "HasFilter", "_HasFilter" }, // AnimationNode
+ { "HasFont", "HasThemeFont" }, // Control broke Theme
+ { "HasFontOverride", "HasThemeFontOverride" }, // Control
+ { "HasIcon", "HasThemeIcon" }, // Control broke Theme
+ { "HasIconOverride", "HasThemeIconOverride" }, // Control
+ { "HasMainScreen", "_HasMainScreen" }, // EditorPlugin
+ { "HasNetworkPeer", "HasMultiplayerPeer" }, // Multiplayer API
+ { "HasStylebox", "HasThemeStylebox" }, // Control broke Theme
+ { "HasStyleboxOverride", "HasThemeStyleboxOverride" }, // Control
+ { "HttpEscape", "UriEncode" }, // String
+ { "HttpUnescape", "UriDecode" }, // String
+ { "ImportAnimationFromOtherImporter", "_ImportAnimation" }, //EditorSceneFormatImporter
+ { "ImportSceneFromOtherImporter", "_ImportScene" }, //EditorSceneFormatImporter
+ { "InstanceSetSurfaceMaterial", "InstanceSetSurfaceOverrideMaterial" }, // RenderingServer
+ { "IntersectPolygons2d", "IntersectPolygons" }, // Geometry2D
+ { "IntersectPolylineWithPolygon2d", "IntersectPolylineWithPolygon" }, // Geometry2D
+ { "IsAParentOf", "IsAncestorOf" }, // Node
+ { "IsCommitingAction", "IsCommittingAction" }, // UndoRedo
+ { "IsDoubleclick", "IsDoubleClick" }, // InputEventMouseButton
+ { "IsHDragEnabled", "IsDragHorizontalEnabled" }, // Camera2D
+ { "IsHandleHighlighted", "_IsHandleHighlighted" }, // EditorNode3DGizmo, EditorNode3DGizmoPlugin
+ { "IsNetworkMaster", "IsMultiplayerAuthority" }, // Node
+ { "IsNetworkServer", "IsServer" }, // Multiplayer API
+ { "IsNormalmap", "IsNormalMap" }, // NoiseTexture
+ { "IsRefusingNewNetworkConnections", "IsRefusingNewConnections" }, // Multiplayer API
+ { "IsRegion", "IsRegionEnabled" }, // Sprite2D
+ { "IsScancodeUnicode", "IsKeycodeUnicode" }, // OS
+ { "IsSelectableWhenHidden", "_IsSelectableWhenHidden" }, // EditorNode3DGizmoPlugin
+ { "IsSetAsToplevel", "IsSetAsTopLevel" }, // CanvasItem
+ { "IsShortcut", "MatchesEvent" }, // Shortcut
+ { "IsSizeOverrideStretchEnabled", "IsSize2dOverrideStretchEnabled" }, // SubViewport
+ { "IsSortEnabled", "IsYSortEnabled" }, // Node2D
+ { "IsStaticBody", "IsAbleToSleep" }, // PhysicalBone3D - TODO - not sure
+ { "IsVDragEnabled", "IsDragVerticalEnabled" }, // Camera2D
+ { "JointCreateConeTwist", "JointMakeConeTwist" }, // PhysicsServer3D
+ { "JointCreateGeneric6dof", "JointMakeGeneric6dof" }, // PhysicsServer3D
+ { "JointCreateHinge", "JointMakeHinge" }, // PhysicsServer3D
+ { "JointCreatePin", "JointMakePin" }, // PhysicsServer3D
+ { "JointCreateSlider", "JointMakeSlider" }, // PhysicsServer3D
+ { "LineIntersectsLine2d", "LineIntersectsLine" }, // Geometry2D
+ { "LoadFromGlobals", "LoadFromProjectSettings" }, // InputMap
+ { "MakeConvexFromBrothers", "MakeConvexFromSiblings" }, // CollisionShape3D
+ { "MergePolygons2d", "MergePolygons" }, // Geometry2D
+ { "MeshSurfaceGetFormat", "MeshSurfaceGetFormatAttributeStride" }, // RenderingServer
+ { "MeshSurfaceUpdateRegion", "MeshSurfaceUpdateAttributeRegion" }, // RenderingServer
+ { "MoveToBottom", "MoveAfter" }, // Skeleton3D
+ { "MoveToTop", "MoveBefore" }, // Skeleton3D
+ { "MultimeshAllocate", "MultimeshAllocateData" }, // RenderingServer
+ { "NormalmapToXy", "NormalMapToXy" }, // Image
+ { "OffsetPolygon2d", "OffsetPolygon" }, // Geometry2D
+ { "OffsetPolyline2d", "OffsetPolyline" }, // Geometry2D
+ { "PercentDecode", "UriDecode" }, // String
+ { "PercentEncode", "UriEncode" }, // String
+ { "PinJointCreate", "JointMakePin" }, // PhysicsServer2D
+ { "PopupCenteredMinsize", "PopupCenteredClamped" }, // Window
+ { "PostImport", "_PostImport" }, // EditorScenePostImport
+ { "PrintStrayNodes", "PrintOrphanNodes" }, // Node
+ { "PropertyListChangedNotify", "NotifyPropertyListChanged" }, // Object
+ { "Recognize", "_Recognize" }, // ResourceFormatLoader
+ { "RegenNormalmaps", "RegenNormalMaps" }, // ArrayMesh
+ { "Remove", "RemoveAt" }, // Array, broke Directory
+ { "RemoveAnimation", "RemoveAnimationLibrary" }, // AnimationPlayer
+ { "RemoveColorOverride", "RemoveThemeColorOverride" }, // Control
+ { "RemoveConstantOverride", "RemoveThemeConstantOverride" }, // Control
+ { "RemoveFontOverride", "RemoveThemeFontOverride" }, // Control
+ { "RemoveSceneImportPlugin", "RemoveSceneFormatImporterPlugin" }, //EditorPlugin
+ { "RemoveStyleboxOverride", "RemoveThemeStyleboxOverride" }, // Control
+ { "RenameAnimation", "RenameAnimationLibrary" }, // AnimationPlayer
+ { "RenameDependencies", "_RenameDependencies" }, // ResourceFormatLoader
+ { "SaveExternalData", "_SaveExternalData" }, // EditorPlugin
+ { "SegmentIntersectsSegment2d", "SegmentIntersectsSegment" }, // Geometry2D
+ { "SetAdjustmentEnable", "SetAdjustmentEnabled" }, // Environment
+ { "SetAlt", "SetAltPressed" }, // InputEventWithModifiers
+ { "SetAnchorAndMargin", "SetAnchorAndOffset" }, // Control
+ { "SetAnchorsAndMarginsPreset", "SetAnchorsAndOffsetsPreset" }, // Control
+ { "SetAnimationProcessMode", "SetProcessCallback" }, // AnimationPlayer
+ { "SetAsBulkArray", "SetBuffer" }, // MultiMesh
+ { "SetAsNormalmap", "SetAsNormalMap" }, // NoiseTexture
+ { "SetAsToplevel", "SetAsTopLevel" }, // CanvasItem
+ { "SetAudioBus", "SetAudioBusName" }, // Area3D
+ { "SetAutowrap", "SetAutowrapMode" }, // Label broke AcceptDialog
+ { "SetCastTo", "SetTargetPosition" }, // RayCast2D, RayCast3D
+ { "SetCollisionLayerBit", "SetCollisionLayerValue" }, // CSGShape3D and a lot of others like GridMap
+ { "SetCollisionMaskBit", "SetCollisionMaskValue" }, // CSGShape3D and a lot of others like GridMap
+ { "SetColumnMinWidth", "SetColumnCustomMinimumWidth" }, // Tree
+ { "SetCommand", "SetCommandPressed" }, // InputEventWithModifiers
+ { "SetControl", "SetCtrlPressed" }, // InputEventWithModifiers
+ { "SetCreateOptions", "_SetCreateOptions" }, // EditorResourcePicker
+ { "SetCullMaskBit", "SetCullMaskValue" }, // Camera3D
+ { "SetCursorPosition", "SetCaretColumn" }, // LineEdit
+ { "SetD", "SetDistance" }, // WorldMarginShape2D
+ { "SetDoubleclick", "SetDoubleClick" }, // InputEventMouseButton
+ { "SetEnabledFocusMode", "SetFocusMode" }, // BaseButton
+ { "SetEndianSwap", "SetBigEndian" }, // File
+ { "SetExpandToTextLength", "SetExpandToTextLengthEnabled" }, // LineEdit
+ { "SetFocusNeighbour", "SetFocusNeighbor" }, // Control
+ { "SetFrameColor", "SetColor" }, // ColorRect
+ { "SetGlobalRateScale", "SetPlaybackSpeedScale" }, // AudioServer
+ { "SetGravityDistanceScale", "SetGravityPointDistanceScale" }, // Area2D
+ { "SetGravityVector", "SetGravityDirection" }, // Area2D
+ { "SetHDragEnabled", "SetDragHorizontalEnabled" }, // Camera2D
+ { "SetIconAlign", "SetIconAlignment" }, // Button
+ { "SetInteriorAmbient", "SetAmbientColor" }, // ReflectionProbe
+ { "SetInteriorAmbientEnergy", "SetAmbientColorEnergy" }, // ReflectionProbe
+ { "SetIsInitialized", "_IsInitialized" }, // XRInterface
+ { "SetIsPrimary", "SetPrimary" }, // XRInterface
+ { "SetIterationsPerSecond", "SetPhysicsTicksPerSecond" }, // Engine
+ { "SetLayerMaskBit", "SetLayerMaskValue" }, // VisualInstance3D
+ { "SetMarginsPreset", "SetOffsetsPreset" }, // Control
+ { "SetMaxAtlasSize", "SetMaxTextureSize" }, // LightmapGI
+ { "SetMetakey", "SetMetaPressed" }, // InputEventWithModifiers
+ { "SetMidHeight", "SetHeight" }, // CapsuleMesh
+ { "SetNetworkMaster", "SetMultiplayerAuthority" }, // Node
+ { "SetNetworkPeer", "SetMultiplayerPeer" }, // Multiplayer API
+ { "SetPhysicalScancode", "SetPhysicalKeycode" }, // InputEventKey
+ { "SetRefuseNewNetworkConnections", "SetRefuseNewConnections" }, // Multiplayer API
+ { "SetRegion", "SetRegionEnabled" }, // Sprite2D, Sprite broke AtlasTexture
+ { "SetRegionFilterClip", "SetRegionFilterClipEnabled" }, // Sprite2D
+ { "SetRotate", "SetRotates" }, // PathFollow2D
+ { "SetScancode", "SetKeycode" }, // InputEventKey
+ { "SetShift", "SetShiftPressed" }, // InputEventWithModifiers
+ { "SetSizeOverride", "SetSize2dOverride" }, // SubViewport broke ImageTexture
+ { "SetSizeOverrideStretch", "SetSize2dOverrideStretch" }, // SubViewport
+ { "SetSlipsOnSlope", "SetSlideOnSlope" }, // SeparationRayShape2D, SeparationRayShape3D
+ { "SetSortEnabled", "SetYSortEnabled" }, // Node2D
+ { "SetSpaceOverrideMode", "SetGravitySpaceOverrideMode" }, // Area2D
+ { "SetSpeed", "SetVelocity" }, // InputEventMouseMotion
+ { "SetSsaoEdgeSharpness", "SetSsaoSharpness" }, // Environment
+ { "SetSurfaceMaterial", "SetSurfaceOverrideMaterial" }, // MeshInstance3D broke ImporterMesh
+ { "SetTabAlign", "SetTabAlignment" }, //TabContainer
+ { "SetTangent", "SurfaceSetTangent" }, // ImmediateGeometry broke SurfaceTool
+ { "SetTextAlign", "SetTextAlignment" }, // Button
+ { "SetTimerProcessMode", "SetTimerProcessCallback" }, // Timer
+ { "SetTonemapAutoExposure", "SetTonemapAutoExposureEnabled" }, // Environment
+ { "SetTranslation", "SetPosition" }, // Node3D - this broke GLTFNode which is used rarely
+ { "SetUv2", "SurfaceSetUv2" }, // ImmediateMesh broke Surffacetool
+ { "SetVDragEnabled", "SetDragVerticalEnabled" }, // Camera2D
+ { "SetValign", "SetVerticalAlignment" }, // Label
+ { "SetWindowLayout", "_SetWindowLayout" }, // EditorPlugin
+ { "SetZfar", "SetFar" }, // Camera3D broke GLTFCamera
+ { "SetZnear", "SetNear" }, // Camera3D broke GLTFCamera
+ { "ShortcutMatch", "IsMatch" }, // InputEvent
+ { "SkeletonAllocate", "SkeletonAllocateData" }, // RenderingServer
+ { "SurfaceUpdateRegion", "SurfaceUpdateAttributeRegion" }, // ArrayMesh
+ { "TargetingMethod", "TweenMethod" }, // Tween
+ { "TargetingProperty", "TweenProperty" }, // Tween
+ { "TrackRemoveKeyAtPosition", "TrackRemoveKeyAtTime" }, // Animation
+ { "TriangulateDelaunay2d", "TriangulateDelaunay" }, // Geometry2D
+ { "UnbindChildNodeFromBone", "RemoveBoneChild" }, // Skeleton3D
+ { "Unselect", "Deselect" }, // ItemList
+ { "UnselectAll", "DeselectAll" }, // ItemList
+ { "UpdateConfigurationWarning", "UpdateConfigurationWarnings" }, // Node
+ { "UpdateGizmo", "UpdateGizmos" }, // Node3D
+ { "ViewportSetUseArvr", "ViewportSetUseXr" }, // RenderingServer
+ { "WarpMousePosition", "WarpMouse" }, // Input
+
+ // Builtin types
+ // { "Empty", "IsEmpty" }, // Array - Used as custom rule // Be careful, this will be used everywhere
+ { "Clamped", "Clamp" }, // Vector2 // Be careful, this will be used everywhere
+ { "GetRotationQuat", "GetRotationQuaternion" }, // Basis
+ { "GrowMargin", "GrowSide" }, // Rect2
+ { "Invert", "Reverse" }, // Array - TODO check // Be careful, this will be used everywhere
+ { "IsAbsPath", "IsAbsolutePath" }, // String
+ { "IsValidInteger", "IsValidInt" }, // String
+ { "LinearInterpolate", "Lerp" }, // Color
+ { "ToAscii", "ToAsciiBuffer" }, // String
+ { "ToUtf8", "ToUtf8Buffer" }, // String
+ { "ToWchar", "ToUtf32Buffer" }, // String // TODO - utf32 or utf16?
+
+ // Globals
+ { "RandRange", "RandfRange" },
+ { "Stepify", "Snapped" },
+
+ { nullptr, nullptr },
+};
+
+// Some needs to be disabled, because users can use this names as variables
+static const char *gdscript_properties_renames[][2] = {
+ // // { "d", "distance" }, //WorldMarginShape2D - TODO, looks that polish letters ą ę are treaten as space, not as letter, so `będą` are renamed to `będistanceą`
+ // // {"alt","alt_pressed"}, // This may broke a lot of comments and user variables
+ // // {"command","command_pressed"},// This may broke a lot of comments and user variables
+ // // {"control","ctrl_pressed"},// This may broke a lot of comments and user variables
+ // // {"extends","size"}, // BoxShape3D, LightmapGI broke ReflectionProbe
+ // // {"meta","meta_pressed"},// This may broke a lot of comments and user variables
+ // // {"pause_mode","process_mode"}, // Node - Cyclic rename, look for others
+ // // {"rotate","rotates"}, // PathFollow2D - probably function exists with same name
+ // // {"shift","shift_pressed"},// This may broke a lot of comments and user variables
+ // { "autowrap", "autowrap_mode" }, // Label
+ // { "cast_to", "target_position" }, // RayCast2D, RayCast3D
+ // { "doubleclick", "double_click" }, // InputEventMouseButton
+ // { "group", "button_group" }, // BaseButton
+ // { "process_mode", "process_callback" }, // AnimationTree, Camera2D
+ // { "scancode", "keycode" }, // InputEventKey
+ // { "toplevel", "top_level" }, // Node
+ // { "window_title", "title" }, // Window
+ // { "wrap_enabled", "wrap_mode" }, // TextEdit
+ // { "zfar", "far" }, // Camera3D
+ // { "znear", "near" }, // Camera3D
+ { "as_normalmap", "as_normal_map" }, // NoiseTexture
+ { "bbcode_text", "text" }, // RichTextLabel
+ { "caret_moving_by_right_click", "caret_move_on_right_click" }, // TextEdit
+ { "caret_position", "caret_column" }, // LineEdit
+ { "check_vadjust", "check_v_adjust" }, // Theme
+ { "close_h_ofs", "close_h_offset" }, // Theme
+ { "close_v_ofs", "close_v_offset" }, // Theme
+ { "commentfocus", "comment_focus" }, // Theme
+ { "drag_margin_bottom", "drag_bottom_margin" }, // Camera2D
+ { "drag_margin_h_enabled", "drag_horizontal_enabled" }, // Camera2D
+ { "drag_margin_left", "drag_left_margin" }, // Camera2D
+ { "drag_margin_right", "drag_right_margin" }, // Camera2D
+ { "drag_margin_top", "drag_top_margin" }, // Camera2D
+ { "drag_margin_v_enabled", "drag_vertical_enabled" }, // Camera2D
+ { "enabled_focus_mode", "focus_mode" }, // BaseButton - Removed
+ { "extra_spacing_bottom", "spacing_bottom" }, // Font
+ { "extra_spacing_top", "spacing_top" }, // Font
+ { "focus_neighbour_bottom", "focus_neighbor_bottom" }, // Control
+ { "focus_neighbour_left", "focus_neighbor_left" }, // Control
+ { "focus_neighbour_right", "focus_neighbor_right" }, // Control
+ { "focus_neighbour_top", "focus_neighbor_top" }, // Control
+ { "global_rate_scale", "playback_speed_scale" }, // AudioServer
+ { "gravity_distance_scale", "gravity_point_distance_scale" }, // Area2D
+ { "gravity_vec", "gravity_direction" }, // Area2D
+ { "hseparation", "h_separation" }, // Theme
+ { "iterations_per_second", "physics_ticks_per_second" }, // Engine
+ { "margin_bottom", "offset_bottom" }, // Control broke NinePatchRect, StyleBox
+ { "margin_left", "offset_left" }, // Control broke NinePatchRect, StyleBox
+ { "margin_right", "offset_right" }, // Control broke NinePatchRect, StyleBox
+ { "margin_top", "offset_top" }, // Control broke NinePatchRect, StyleBox
+ { "mid_height", "height" }, // CapsuleMesh
+ { "offset_h", "drag_horizontal_offset" }, // Camera2D
+ { "offset_v", "drag_vertical_offset" }, // Camera2D
+ { "ofs", "offset" }, // Theme
+ { "out_of_range_mode", "max_polyphony" }, // AudioStreamPlayer3D
+ { "pause_mode", "process_mode" }, // Node
+ { "physical_scancode", "physical_keycode" }, // InputEventKey
+ { "popup_exclusive", "exclusive" }, // Window
+ { "refuse_new_network_connections", "refuse_new_connections" }, // MultiplayerAPI
+ { "region_filter_clip", "region_filter_clip_enabled" }, // Sprite2D
+ { "selectedframe", "selected_frame" }, // Theme
+ { "size_override_stretch", "size_2d_override_stretch" }, // SubViewport
+ { "slips_on_slope", "slide_on_slope" }, // SeparationRayShape2D
+ { "ss_reflections_depth_tolerance", "ssr_depth_tolerance" }, // Environment
+ { "ss_reflections_enabled", "ssr_enabled" }, // Environment
+ { "ss_reflections_fade_in", "ssr_fade_in" }, // Environment
+ { "ss_reflections_fade_out", "ssr_fade_out" }, // Environment
+ { "ss_reflections_max_steps", "ssr_max_steps" }, // Environment
+ { "state_machine_selectedframe", "state_machine_selected_frame" }, // Theme
+ { "syntax_highlighting", "syntax_highlighter" }, // TextEdit
+ { "tab_align", "tab_alignment" }, // TabContainer
+ { "table_hseparation", "table_h_separation" }, // Theme
+ { "table_vseparation", "table_v_separation" }, // Theme
+ { "translation", "position" }, // Node3D - broke GLTFNode
+ { "vseparation", "v_separation" }, // Theme
+
+ { nullptr, nullptr },
+};
+
+// Some needs to be disabled, because users can use this names as variables
+static const char *csharp_properties_renames[][2] = {
+ // // { "D", "Distance" }, //WorldMarginShape2D - TODO, looks that polish letters ą ę are treaten as space, not as letter, so `będą` are renamed to `będistanceą`
+ // // {"Alt","AltPressed"}, // This may broke a lot of comments and user variables
+ // // {"Command","CommandPressed"},// This may broke a lot of comments and user variables
+ // // {"Control","CtrlPressed"},// This may broke a lot of comments and user variables
+ // // {"Extends","Size"}, // BoxShape3D, LightmapGI broke ReflectionProbe
+ // // {"Meta","MetaPressed"},// This may broke a lot of comments and user variables
+ // // {"PauseMode","ProcessMode"}, // Node - Cyclic rename, look for others
+ // // {"Rotate","Rotates"}, // PathFollow2D - probably function exists with same name
+ // // {"Shift","ShiftPressed"},// This may broke a lot of comments and user variables
+ // { "Autowrap", "AutowrapMode" }, // Label
+ // { "CastTo", "TargetPosition" }, // RayCast2D, RayCast3D
+ // { "Doubleclick", "DoubleClick" }, // InputEventMouseButton
+ // { "Group", "ButtonGroup" }, // BaseButton
+ // { "ProcessMode", "ProcessCallback" }, // AnimationTree, Camera2D
+ // { "Scancode", "Keycode" }, // InputEventKey
+ // { "Toplevel", "TopLevel" }, // Node
+ // { "WindowTitle", "Title" }, // Window
+ // { "WrapEnabled", "WrapMode" }, // TextEdit
+ // { "Zfar", "Far" }, // Camera3D
+ // { "Znear", "Near" }, // Camera3D
+ { "AsNormalmap", "AsNormalMap" }, // NoiseTexture
+ { "BbcodeText", "Text" }, // RichTextLabel
+ { "CaretMovingByRightClick", "CaretMoveOnRightClick" }, // TextEdit
+ { "CaretPosition", "CaretColumn" }, // LineEdit
+ { "CheckVadjust", "CheckVAdjust" }, // Theme
+ { "CloseHOfs", "CloseHOffset" }, // Theme
+ { "CloseVOfs", "CloseVOffset" }, // Theme
+ { "Commentfocus", "CommentFocus" }, // Theme
+ { "DragMarginBottom", "DragBottomMargin" }, // Camera2D
+ { "DragMarginHEnabled", "DragHorizontalEnabled" }, // Camera2D
+ { "DragMarginLeft", "DragLeftMargin" }, // Camera2D
+ { "DragMarginRight", "DragRightMargin" }, // Camera2D
+ { "DragMarginTop", "DragTopMargin" }, // Camera2D
+ { "DragMarginVEnabled", "DragVerticalEnabled" }, // Camera2D
+ { "EnabledFocusMode", "FocusMode" }, // BaseButton - Removed
+ { "ExtraSpacingBottom", "SpacingBottom" }, // Font
+ { "ExtraSpacingTop", "SpacingTop" }, // Font
+ { "FocusNeighbourBottom", "FocusNeighborBottom" }, // Control
+ { "FocusNeighbourLeft", "FocusNeighborLeft" }, // Control
+ { "FocusNeighbourRight", "FocusNeighborRight" }, // Control
+ { "FocusNeighbourTop", "FocusNeighborTop" }, // Control
+ { "GlobalRateScale", "PlaybackSpeedScale" }, // AudioServer
+ { "GravityDistanceScale", "GravityPointDistanceScale" }, // Area2D
+ { "GravityVec", "GravityDirection" }, // Area2D
+ { "Hseparation", "HSeparation" }, // Theme
+ { "IterationsPerSecond", "PhysicsTicksPerSecond" }, // Engine
+ { "MarginBottom", "OffsetBottom" }, // Control broke NinePatchRect, StyleBox
+ { "MarginLeft", "OffsetLeft" }, // Control broke NinePatchRect, StyleBox
+ { "MarginRight", "OffsetRight" }, // Control broke NinePatchRect, StyleBox
+ { "MarginTop", "OffsetTop" }, // Control broke NinePatchRect, StyleBox
+ { "MidHeight", "Height" }, // CapsuleMesh
+ { "OffsetH", "DragHorizontalOffset" }, // Camera2D
+ { "OffsetV", "DragVerticalOffset" }, // Camera2D
+ { "Ofs", "Offset" }, // Theme
+ { "OutOfRangeMode", "MaxPolyphony" }, // AudioStreamPlayer3D
+ { "PauseMode", "ProcessMode" }, // Node
+ { "PhysicalScancode", "PhysicalKeycode" }, // InputEventKey
+ { "PopupExclusive", "Exclusive" }, // Window
+ { "RefuseNewNetworkConnections", "RefuseNewConnections" }, // MultiplayerAPI
+ { "RegionFilterClip", "RegionFilterClipEnabled" }, // Sprite2D
+ { "Selectedframe", "SelectedFrame" }, // Theme
+ { "SizeOverrideStretch", "Size2dOverrideStretch" }, // SubViewport
+ { "SlipsOnSlope", "SlideOnSlope" }, // SeparationRayShape2D
+ { "SsReflectionsDepthTolerance", "SsrDepthTolerance" }, // Environment
+ { "SsReflectionsEnabled", "SsrEnabled" }, // Environment
+ { "SsReflectionsFadeIn", "SsrFadeIn" }, // Environment
+ { "SsReflectionsFadeOut", "SsrFadeOut" }, // Environment
+ { "SsReflectionsMaxSteps", "SsrMaxSteps" }, // Environment
+ { "StateMachineSelectedframe", "StateMachineSelectedFrame" }, // Theme
+ { "SyntaxHighlighting", "SyntaxHighlighter" }, // TextEdit
+ { "TabAlign", "TabAlignment" }, // TabContainer
+ { "TableHseparation", "TableHSeparation" }, // Theme
+ { "TableVseparation", "TableVSeparation" }, // Theme
+ { "Translation", "Position" }, // Node3D - broke GLTFNode
+ { "Vseparation", "VSeparation" }, // Theme
+
+ { nullptr, nullptr },
+};
+
+static const char *gdscript_signals_renames[][2] = {
+ // {"instantiate","instance"}, // FileSystemDock
+ // { "hide", "hidden" }, // CanvasItem - function with same name exists
+ // { "tween_all_completed","loop_finished"}, // Tween - TODO, not sure
+ // {"changed","settings_changed"}, // EditorSettings
+ { "about_to_show", "about_to_popup" }, // Popup
+ { "button_release", "button_released" }, // XRController3D
+ { "network_peer_connected", "peer_connected" }, // MultiplayerAPI
+ { "network_peer_disconnected", "peer_disconnected" }, // MultiplayerAPI
+ { "network_peer_packet", "peer_packet" }, // MultiplayerAPI
+ { "node_unselected", "node_deselected" }, // GraphEdit
+ { "offset_changed", "position_offset_changed" }, // GraphNode
+ { "settings_changed", "changed" }, // TileMap broke EditorSettings
+ { "skeleton_updated", "pose_updated" }, //
+ { "tab_close", "tab_closed" }, // TextEdit
+ { "tab_hover", "tab_hovered" }, // TextEdit
+ { "text_entered", "text_submitted" }, // LineEdit
+ { "tween_completed", "finished" }, // Tween
+ { "tween_step", "step_finished" }, // Tween
+
+ { nullptr, nullptr },
+};
+
+static const char *csharp_signals_renames[][2] = {
+ // {"Instantiate","Instance"}, // FileSystemDock
+ // { "Hide", "Hidden" }, // CanvasItem - function with same name exists
+ // { "TweenAllCompleted","LoopFinished"}, // Tween - TODO, not sure
+ // {"Changed","SettingsChanged"}, // EditorSettings
+ { "AboutToShow", "AboutToPopup" }, // Popup
+ { "ButtonRelease", "ButtonReleased" }, // XRController3D
+ { "NetworkPeerConnected", "PeerConnected" }, // MultiplayerAPI
+ { "NetworkPeerDisconnected", "PeerDisconnected" }, // MultiplayerAPI
+ { "NetworkPeerPacket", "PeerPacket" }, // MultiplayerAPI
+ { "NodeUnselected", "NodeDeselected" }, // GraphEdit
+ { "OffsetChanged", "PositionOffsetChanged" }, // GraphNode
+ { "SettingsChanged", "Changed" }, // TileMap broke EditorSettings
+ { "SkeletonUpdated", "PoseUpdated" }, //
+ { "TabClose", "TabClosed" }, // TextEdit
+ { "TabHover", "TabHovered" }, // TextEdit
+ { "TextEntered", "TextSubmitted" }, // LineEdit
+ { "TweenCompleted", "Finished" }, // Tween
+ { "TweenStep", "StepFinished" }, // Tween
+
+ { nullptr, nullptr },
+
+};
+
+static const char *project_settings_renames[][2] = {
+ { "audio/channel_disable_threshold_db", "audio/buses/channel_disable_threshold_db" },
+ { "audio/channel_disable_time", "audio/buses/channel_disable_time" },
+ { "audio/default_bus_layout", "audio/buses/default_bus_layout" },
+ { "audio/driver", "audio/driver/driver" },
+ { "audio/enable_audio_input", "audio/driver/enable_input" },
+ { "audio/mix_rate", "audio/driver/mix_rate" },
+ { "audio/output_latency", "audio/driver/output_latency" },
+ { "audio/output_latency.web", "audio/driver/output_latency.web" },
+ { "audio/video_delay_compensation_ms", "audio/video/video_delay_compensation_ms" },
+ { "display/window/vsync/use_vsync", "display/window/vsync/vsync_mode" },
+ { "editor/main_run_args", "editor/run/main_run_args" },
+ { "gui/common/swap_ok_cancel", "gui/common/swap_cancel_ok" },
+ { "network/limits/debugger_stdout/max_chars_per_second", "network/limits/debugger/max_chars_per_second" },
+ { "network/limits/debugger_stdout/max_errors_per_second", "network/limits/debugger/max_errors_per_second" },
+ { "network/limits/debugger_stdout/max_messages_per_frame", "network/limits/debugger/max_queued_messages" },
+ { "network/limits/debugger_stdout/max_warnings_per_second", "network/limits/debugger/max_warnings_per_second" },
+ { "network/ssl/certificates", "network/ssl/certificate_bundle_override" },
+ { "physics/2d/thread_model", "physics/2d/run_on_thread" }, // TODO not sure
+ { "rendering/environment/default_clear_color", "rendering/environment/defaults/default_clear_color" },
+ { "rendering/environment/default_environment", "rendering/environment/defaults/default_environment" },
+ { "rendering/quality/depth_prepass/disable_for_vendors", "rendering/driver/depth_prepass/disable_for_vendors" },
+ { "rendering/quality/depth_prepass/enable", "rendering/driver/depth_prepass/enable" },
+ { "rendering/quality/shading/force_blinn_over_ggx", "rendering/shading/overrides/force_blinn_over_ggx" },
+ { "rendering/quality/shading/force_blinn_over_ggx.mobile", "rendering/shading/overrides/force_blinn_over_ggx.mobile" },
+ { "rendering/quality/shading/force_lambert_over_burley", "rendering/shading/overrides/force_lambert_over_burley" },
+ { "rendering/quality/shading/force_lambert_over_burley.mobile", "rendering/shading/overrides/force_lambert_over_burley.mobile" },
+ { "rendering/quality/shading/force_vertex_shading", "rendering/shading/overrides/force_vertex_shading" },
+ { "rendering/quality/shading/force_vertex_shading.mobile", "rendering/shading/overrides/force_vertex_shading.mobile" },
+ { "rendering/quality/shadow_atlas/quadrant_0_subdiv", "rendering/shadows/shadow_atlas/quadrant_0_subdiv" },
+ { "rendering/quality/shadow_atlas/quadrant_1_subdiv", "rendering/shadows/shadow_atlas/quadrant_1_subdiv" },
+ { "rendering/quality/shadow_atlas/quadrant_2_subdiv", "rendering/shadows/shadow_atlas/quadrant_2_subdiv" },
+ { "rendering/quality/shadow_atlas/quadrant_3_subdiv", "rendering/shadows/shadow_atlas/quadrant_3_subdiv" },
+ { "rendering/quality/shadow_atlas/size", "rendering/shadows/shadow_atlas/size" },
+ { "rendering/quality/shadow_atlas/size.mobile", "rendering/shadows/shadow_atlas/size.mobile" },
+ { "rendering/vram_compression/import_bptc", "rendering/textures/vram_compression/import_bptc" },
+ { "rendering/vram_compression/import_etc", "rendering/textures/vram_compression/import_etc" },
+ { "rendering/vram_compression/import_etc2", "rendering/textures/vram_compression/import_etc2" },
+ { "rendering/vram_compression/import_pvrtc", "rendering/textures/vram_compression/import_pvrtc" },
+ { "rendering/vram_compression/import_s3tc", "rendering/textures/vram_compression/import_s3tc" },
+
+ { nullptr, nullptr },
+};
+
+static const char *builtin_types_renames[][2] = {
+ { "PoolByteArray", "PackedByteArray" },
+ { "PoolColorArray", "PackedColorArray" },
+ { "PoolIntArray", "PackedInt32Array" },
+ { "PoolRealArray", "PackedFloat32Array" },
+ { "PoolStringArray", "PackedStringArray" },
+ { "PoolVector2Array", "PackedVector2Array" },
+ { "PoolVector3Array", "PackedVector3Array" },
+ { "Quat", "Quaternion" },
+ { "Transform", "Transform3D" },
+
+ { nullptr, nullptr },
+};
+
+static const char *shaders_renames[][2] = {
+ { "ALPHA_SCISSOR", "ALPHA_SCISSOR_THRESHOLD" },
+ { "NORMALMAP", "NORMAL_MAP" },
+ { "NORMALMAP_DEPTH", "NORMAL_MAP_DEPTH" },
+ { "TRANSMISSION", "SSS_TRANSMITTANCE_COLOR" },
+ { nullptr, nullptr },
+};
+
+static const char *class_renames[][2] = {
+ // { "BulletPhysicsDirectBodyState", "BulletPhysicsDirectBodyState3D" }, // Class is not visible in ClassDB
+ // { "BulletPhysicsServer", "BulletPhysicsServer3D" }, // Class is not visible in ClassDB
+ // { "GDScriptFunctionState", "Node3D" }, // TODO - not sure to which should be changed
+ // { "GDScriptNativeClass", "Node3D" }, // TODO - not sure to which should be changed
+ // { "InputDefault",""}, // TODO ?
+ // { "Physics2DDirectBodyStateSW", "GodotPhysicsDirectBodyState2D" }, // Class is not visible in ClassDB
+ // { "Physics2DShapeQueryResult", "PhysicsShapeQueryResult2D" }, // Class is not visible in ClassDB
+ // { "PhysicsShapeQueryResult", "PhysicsShapeQueryResult3D" }, // Class is not visible in ClassDB
+ // { "NativeScript","NativeExtension"}, ??
+ { "AStar", "AStar3D" },
+ { "ARVRAnchor", "XRAnchor3D" },
+ { "ARVRCamera", "XRCamera3D" },
+ { "ARVRController", "XRController3D" },
+ { "ARVRInterface", "XRInterface" },
+ { "ARVRInterfaceGDNative", "Node3D" },
+ { "ARVROrigin", "XROrigin3D" },
+ { "ARVRPositionalTracker", "XRPositionalTracker" },
+ { "ARVRServer", "XRServer" },
+ { "AnimatedSprite", "AnimatedSprite2D" },
+ { "AnimationTreePlayer", "AnimationTree" },
+ { "Area", "Area3D" }, // Be careful, this will be used everywhere
+ { "AudioStreamRandomPitch", "AudioStreamRandomizer" },
+ { "BakedLightmap", "LightmapGI" },
+ { "BakedLightmapData", "LightmapGIData" },
+ { "BitmapFont", "Font" },
+ { "BoneAttachment", "BoneAttachment3D" },
+ { "BoxShape", "BoxShape3D" },
+ { "CPUParticles", "CPUParticles3D" },
+ { "CSGBox", "CSGBox3D" },
+ { "CSGCombiner", "CSGCombiner3D" },
+ { "CSGCylinder", "CSGCylinder3D" },
+ { "CSGMesh", "CSGMesh3D" },
+ { "CSGPolygon", "CSGPolygon3D" },
+ { "CSGPrimitive", "CSGPrimitive3D" },
+ { "CSGShape", "CSGShape3D" },
+ { "CSGSphere", "CSGSphere3D" },
+ { "CSGTorus", "CSGTorus3D" },
+ { "Camera", "Camera3D" }, // Be careful, this will be used everywhere
+ { "CapsuleShape", "CapsuleShape3D" },
+ { "ClippedCamera", "Camera3D" },
+ { "CollisionObject", "CollisionObject3D" },
+ { "CollisionPolygon", "CollisionPolygon3D" },
+ { "CollisionShape", "CollisionShape3D" },
+ { "ConcavePolygonShape", "ConcavePolygonShape3D" },
+ { "ConeTwistJoint", "ConeTwistJoint3D" },
+ { "ConvexPolygonShape", "ConvexPolygonShape3D" },
+ { "CubeMap", "Cubemap" },
+ { "CubeMesh", "BoxMesh" },
+ { "CylinderShape", "CylinderShape3D" },
+ { "DirectionalLight", "DirectionalLight3D" },
+ { "DynamicFont", "Font" },
+ { "DynamicFontData", "FontData" },
+ { "EditorNavigationMeshGenerator", "NavigationMeshGenerator" },
+ { "EditorSceneImporter", "EditorSceneFormatImporter" },
+ { "EditorSceneImporterFBX", "EditorSceneFormatImporterFBX" },
+ { "EditorSceneImporterGLTF", "EditorSceneFormatImporterGLTF" },
+ { "EditorSpatialGizmo", "EditorNode3DGizmo" },
+ { "EditorSpatialGizmoPlugin", "EditorNode3DGizmoPlugin" },
+ { "ExternalTexture", "ImageTexture" },
+ { "FuncRef", "Callable" },
+ { "GIProbe", "VoxelGI" },
+ { "GIProbeData", "VoxelGIData" },
+ { "Generic6DOFJoint", "Generic6DOFJoint3D" },
+ { "Geometry", "Geometry2D" }, // Geometry class is split between Geometry2D and Geometry3D so we need to choose one
+ { "GeometryInstance", "GeometryInstance3D" },
+ { "GradientTexture", "GradientTexture2D" },
+ { "HeightMapShape", "HeightMapShape3D" },
+ { "HingeJoint", "HingeJoint3D" },
+ { "IP_Unix", "IPUnix" },
+ { "ImmediateGeometry", "ImmediateMesh" },
+ { "ImmediateGeometry3D", "ImmediateMesh" },
+ { "InterpolatedCamera", "Camera3D" },
+ { "InterpolatedCamera3D", "Camera3D" },
+ { "JSONParseResult", "JSON" },
+ { "Joint", "Joint3D" },
+ { "KinematicBody", "CharacterBody3D" },
+ { "KinematicBody2D", "CharacterBody2D" },
+ { "KinematicCollision", "KinematicCollision3D" },
+ { "LargeTexture", "ImageTexture" },
+ { "Light", "Light3D" },
+ { "Light2D", "PointLight2D" },
+ { "LineShape2D", "WorldBoundaryShape2D" },
+ { "Listener", "AudioListener3D" },
+ { "Listener2D", "AudioListener2D" },
+ { "MeshInstance", "MeshInstance3D" },
+ { "MultiMeshInstance", "MultiMeshInstance3D" },
+ { "MultiplayerPeerGDNative", "MultiplayerPeerExtension" },
+ { "Navigation", "Node3D" },
+ { "Navigation2D", "Node2D" },
+ { "Navigation2DServer", "NavigationServer2D" },
+ { "Navigation3D", "Node3D" },
+ { "NavigationAgent", "NavigationAgent3D" },
+ { "NavigationMeshInstance", "NavigationRegion3D" },
+ { "NavigationObstacle", "NavigationObstacle3D" },
+ { "NavigationPolygonInstance", "NavigationRegion2D" },
+ { "NavigationRegion", "NavigationRegion3D" },
+ { "NavigationServer", "NavigationServer3D" },
+ { "NetworkedMultiplayerENet", "ENetMultiplayerPeer" },
+ { "NetworkedMultiplayerPeer", "MultiplayerPeer" },
+ { "Occluder", "OccluderInstance3D" },
+ { "OmniLight", "OmniLight3D" },
+ { "PHashTranslation", "OptimizedTranslation" },
+ { "PacketPeerGDNative", "PacketPeerExtension" },
+ { "PanoramaSky", "Sky" },
+ { "Particles", "GPUParticles3D" }, // Be careful, this will be used everywhere
+ { "Particles2D", "GPUParticles2D" },
+ { "Path", "Path3D" }, // Be careful, this will be used everywhere
+ { "PathFollow", "PathFollow3D" },
+ { "PhysicalBone", "PhysicalBone3D" },
+ { "Physics2DDirectBodyState", "PhysicsDirectBodyState2D" },
+ { "Physics2DDirectSpaceState", "PhysicsDirectSpaceState2D" },
+ { "Physics2DServer", "PhysicsServer2D" },
+ { "Physics2DServerSW", "GodotPhysicsServer2D" },
+ { "Physics2DShapeQueryParameters", "PhysicsShapeQueryParameters2D" },
+ { "Physics2DTestMotionResult", "PhysicsTestMotionResult2D" },
+ { "PhysicsBody", "PhysicsBody3D" },
+ { "PhysicsDirectBodyState", "PhysicsDirectBodyState3D" },
+ { "PhysicsDirectSpaceState", "PhysicsDirectSpaceState3D" },
+ { "PhysicsServer", "PhysicsServer3D" },
+ { "PhysicsShapeQueryParameters", "PhysicsShapeQueryParameters3D" },
+ { "PhysicsTestMotionResult", "PhysicsTestMotionResult3D" },
+ { "PinJoint", "PinJoint3D" },
+ { "PlaneShape", "WorldBoundaryShape3D" },
+ { "PopupDialog", "Popup" },
+ { "ProceduralSky", "Sky" },
+ { "RayCast", "RayCast3D" },
+ { "RayShape", "SeparationRayShape3D" },
+ { "RayShape2D", "SeparationRayShape2D" },
+ { "Reference", "RefCounted" }, // Be careful, this will be used everywhere
+ { "RemoteTransform", "RemoteTransform3D" },
+ { "ResourceInteractiveLoader", "ResourceLoader" },
+ { "RigidBody", "RigidDynamicBody3D" },
+ { "RigidBody2D", "RigidDynamicBody2D" },
+ { "Shape", "Shape3D" }, // Be careful, this will be used everywhere
+ { "ShortCut", "Shortcut" },
+ { "Skeleton", "Skeleton3D" },
+ { "SkeletonIK", "SkeletonIK3D" },
+ { "SliderJoint", "SliderJoint3D" },
+ { "SoftBody", "SoftDynamicBody3D" },
+ { "Spatial", "Node3D" },
+ { "SpatialGizmo", "Node3DGizmo" },
+ { "SpatialMaterial", "StandardMaterial3D" },
+ { "SpatialVelocityTracker", "VelocityTracker3D" },
+ { "SphereShape", "SphereShape3D" },
+ { "SpotLight", "SpotLight3D" },
+ { "SpringArm", "SpringArm3D" },
+ { "Sprite", "Sprite2D" },
+ { "StaticBody", "StaticBody3D" },
+ { "StreamCubemap", "CompressedCubemap" },
+ { "StreamCubemapArray", "CompressedCubemapArray" },
+ { "StreamPeerGDNative", "StreamPeerExtension" },
+ { "StreamTexture", "CompressedTexture2D" },
+ { "StreamTexture2D", "CompressedTexture2D" },
+ { "StreamTexture2DArray", "CompressedTexture2DArray" },
+ { "StreamTextureLayered", "CompressedTextureLayered" },
+ { "TCP_Server", "TCPServer" },
+ { "Tabs", "TabBar" }, // Be careful, this will be used everywhere
+ { "TextFile", "Node3D" },
+ { "Texture", "Texture2D" }, // May broke TextureRect
+ { "TextureArray", "Texture2DArray" },
+ { "TextureProgress", "TextureProgressBar" },
+ { "ToolButton", "Button" },
+ { "VehicleBody", "VehicleBody3D" },
+ { "VehicleWheel", "VehicleWheel3D" },
+ { "VideoPlayer", "VideoStreamPlayer" },
+ { "Viewport", "SubViewport" },
+ { "ViewportContainer", "SubViewportContainer" },
+ { "VisibilityEnabler", "VisibleOnScreenEnabler3D" },
+ { "VisibilityEnabler2D", "VisibleOnScreenEnabler2D" },
+ { "VisibilityNotifier", "VisibleOnScreenNotifier3D" },
+ { "VisibilityNotifier2D", "VisibleOnScreenNotifier2D" },
+ { "VisibilityNotifier3D", "VisibleOnScreenNotifier3D" },
+ { "VisualInstance", "VisualInstance3D" },
+ { "VisualServer", "RenderingServer" },
+ { "VisualShaderNodeCubeMap", "VisualShaderNodeCubemap" },
+ { "VisualShaderNodeCubeMapUniform", "VisualShaderNodeCubemapUniform" },
+ { "VisualShaderNodeScalarClamp", "VisualShaderNodeClamp" },
+ { "VisualShaderNodeScalarConstant", "VisualShaderNodeFloatConstant" },
+ { "VisualShaderNodeScalarFunc", "VisualShaderNodeFloatFunc" },
+ { "VisualShaderNodeScalarInterp", "VisualShaderNodeMix" },
+ { "VisualShaderNodeScalarOp", "VisualShaderNodeFloatOp" },
+ { "VisualShaderNodeScalarSmoothStep", "VisualShaderNodeSmoothStep" },
+ { "VisualShaderNodeScalarSwitch", "VisualShaderNodeSwitch" },
+ { "VisualShaderNodeScalarTransformMult", "VisualShaderNodeTransformOp" },
+ { "VisualShaderNodeScalarUniform", "VisualShaderNodeFloatUniform" },
+ { "VisualShaderNodeTransformMult", "VisualShaderNode" },
+ { "VisualShaderNodeVectorClamp", "VisualShaderNodeClamp" },
+ { "VisualShaderNodeVectorInterp", "VisualShaderNodeMix" },
+ { "VisualShaderNodeVectorScalarMix", "VisualShaderNodeMix" },
+ { "VisualShaderNodeVectorScalarSmoothStep", "VisualShaderNodeSmoothStep" },
+ { "VisualShaderNodeVectorScalarStep", "VisualShaderNodeStep" },
+ { "VisualShaderNodeVectorSmoothStep", "VisualShaderNodeSmoothStep" },
+ { "WebRTCDataChannelGDNative", "WebRTCDataChannelExtension" },
+ { "WebRTCMultiplayer", "WebRTCMultiplayerPeer" },
+ { "WebRTCPeerConnectionGDNative", "WebRTCPeerConnectionExtension" },
+ { "WindowDialog", "Window" },
+ { "World", "World3D" }, // Be careful, this will be used everywhere
+ { "XRAnchor", "XRAnchor3D" },
+ { "XRController", "XRController3D" },
+ { "XROrigin", "XROrigin3D" },
+ { "YSort", "Node2D" },
+
+ { "CullInstance", "Node3D" }, // Probably this type needs to be added to Godot 4.0, since it is for now only available only in Godot 3.x
+ { "RoomGroup", "Node3D" }, // Probably this type needs to be added to Godot 4.0, since it is for now only available only in Godot 3.x
+ { "Room", "Node3D" }, // Probably this type needs to be added to Godot 4.0, since it is for now only available only in Godot 3.x
+ { "RoomManager", "Node3D" }, // Probably this type needs to be added to Godot 4.0, since it is for now only available only in Godot 3.x
+ { "Portal", "Node3D" }, // Probably this type needs to be added to Godot 4.0, since it is for now only available only in Godot 3.x
+
+ { nullptr, nullptr },
+};
+
+// TODO - this colors needs to be validated(not all are valid)
+static const char *colors_renames[][2] = {
+ { "aliceblue", "ALICE_BLUE" },
+ { "antiquewhite", "ANTIQUE_WHITE" },
+ { "aqua", "AQUA" },
+ { "aquamarine", "AQUAMARINE" },
+ { "azure", "AZURE" },
+ { "beige", "BEIGE" },
+ { "bisque", "BISQUE" },
+ { "black", "BLACK" },
+ { "blanchedalmond", "BLANCHED_ALMOND" },
+ { "blue", "BLUE" },
+ { "blueviolet", "BLUE_VIOLET" },
+ { "brown", "BROWN" },
+ { "burlywood", "BURLYWOOD" },
+ { "cadetblue", "CADET_BLUE" },
+ { "chartreuse", "CHARTREUSE" },
+ { "chocolate", "CHOCOLATE" },
+ { "coral", "CORAL" },
+ { "cornflowerblue", "CORNFLOWER_BLUE" },
+ { "cornsilk", "CORNSILK" },
+ { "crimson", "CRIMSON" },
+ { "cyan", "CYAN" },
+ { "darkblue", "DARK_BLUE" },
+ { "darkcyan", "DARK_CYAN" },
+ { "darkgoldenrod", "DARK_GOLDENROD" },
+ { "darkgray", "DARK_GRAY" },
+ { "darkgreen", "DARK_GREEN" },
+ { "darkkhaki", "DARK_KHAKI" },
+ { "darkmagenta", "DARK_MAGENTA" },
+ { "darkolivegreen", "DARK_OLIVE_GREEN" },
+ { "darkorange", "DARK_ORANGE" },
+ { "darkorchid", "DARK_ORCHID" },
+ { "darkred", "DARK_RED" },
+ { "darksalmon", "DARK_SALMON" },
+ { "darkseagreen", "DARK_SEA_GREEN" },
+ { "darkslateblue", "DARK_SLATE_BLUE" },
+ { "darkslategray", "DARK_SLATE_GRAY" },
+ { "darkturquoise", "DARK_TURQUOISE" },
+ { "darkviolet", "DARK_VIOLET" },
+ { "deeppink", "DEEP_PINK" },
+ { "deepskyblue", "DEEP_SKY_BLUE" },
+ { "dimgray", "DIM_GRAY" },
+ { "dodgerblue", "DODGER_BLUE" },
+ { "firebrick", "FIREBRICK" },
+ { "floralwhite", "FLORAL_WHITE" },
+ { "forestgreen", "FOREST_GREEN" },
+ { "fuchsia", "FUCHSIA" },
+ { "gainsboro", "GAINSBORO" },
+ { "ghostwhite", "GHOST_WHITE" },
+ { "gold", "GOLD" },
+ { "goldenrod", "GOLDENROD" },
+ { "gray", "GRAY" },
+ { "green", "GREEN" },
+ { "greenyellow", "GREEN_YELLOW" },
+ { "honeydew", "HONEYDEW" },
+ { "hotpink", "HOT_PINK" },
+ { "indianred", "INDIAN_RED" },
+ { "indigo", "INDIGO" },
+ { "ivory", "IVORY" },
+ { "khaki", "KHAKI" },
+ { "lavender", "LAVENDER" },
+ { "lavenderblush", "LAVENDER_BLUSH" },
+ { "lawngreen", "LAWN_GREEN" },
+ { "lemonchiffon", "LEMON_CHIFFON" },
+ { "lightblue", "LIGHT_BLUE" },
+ { "lightcoral", "LIGHT_CORAL" },
+ { "lightcyan", "LIGHT_CYAN" },
+ { "lightgoldenrod", "LIGHT_GOLDENROD" },
+ { "lightgray", "LIGHT_GRAY" },
+ { "lightgreen", "LIGHT_GREEN" },
+ { "lightpink", "LIGHT_PINK" },
+ { "lightsalmon", "LIGHT_SALMON" },
+ { "lightseagreen", "LIGHT_SEA_GREEN" },
+ { "lightskyblue", "LIGHT_SKY_BLUE" },
+ { "lightslategray", "LIGHT_SLATE_GRAY" },
+ { "lightsteelblue", "LIGHT_STEEL_BLUE" },
+ { "lightyellow", "LIGHT_YELLOW" },
+ { "lime", "LIME" },
+ { "limegreen", "LIME_GREEN" },
+ { "linen", "LINEN" },
+ { "magenta", "MAGENTA" },
+ { "maroon", "MAROON" },
+ { "mediumaquamarine", "MEDIUM_AQUAMARINE" },
+ { "mediumblue", "MEDIUM_BLUE" },
+ { "mediumorchid", "MEDIUM_ORCHID" },
+ { "mediumpurple", "MEDIUM_PURPLE" },
+ { "mediumseagreen", "MEDIUM_SEA_GREEN" },
+ { "mediumslateblue", "MEDIUM_SLATE_BLUE" },
+ { "mediumspringgreen", "MEDIUM_SPRING_GREEN" },
+ { "mediumturquoise", "MEDIUM_TURQUOISE" },
+ { "mediumvioletred", "MEDIUM_VIOLET_RED" },
+ { "midnightblue", "MIDNIGHT_BLUE" },
+ { "mintcream", "MINT_CREAM" },
+ { "mistyrose", "MISTY_ROSE" },
+ { "moccasin", "MOCCASIN" },
+ { "navajowhite", "NAVAJO_WHITE" },
+ { "navyblue", "NAVY_BLUE" },
+ { "oldlace", "OLD_LACE" },
+ { "olive", "OLIVE" },
+ { "olivedrab", "OLIVE_DRAB" },
+ { "orange", "ORANGE" },
+ { "orangered", "ORANGE_RED" },
+ { "orchid", "ORCHID" },
+ { "palegoldenrod", "PALE_GOLDENROD" },
+ { "palegreen", "PALE_GREEN" },
+ { "paleturquoise", "PALE_TURQUOISE" },
+ { "palevioletred", "PALE_VIOLET_RED" },
+ { "papayawhip", "PAPAYA_WHIP" },
+ { "peachpuff", "PEACH_PUFF" },
+ { "peru", "PERU" },
+ { "pink", "PINK" },
+ { "plum", "PLUM" },
+ { "powderblue", "POWDER_BLUE" },
+ { "purple", "PURPLE" },
+ { "rebeccapurple", "REBECCA_PURPLE" },
+ { "red", "RED" },
+ { "rosybrown", "ROSY_BROWN" },
+ { "royalblue", "ROYAL_BLUE" },
+ { "saddlebrown", "SADDLE_BROWN" },
+ { "salmon", "SALMON" },
+ { "sandybrown", "SANDY_BROWN" },
+ { "seagreen", "SEA_GREEN" },
+ { "seashell", "SEASHELL" },
+ { "sienna", "SIENNA" },
+ { "silver", "SILVER" },
+ { "skyblue", "SKY_BLUE" },
+ { "slateblue", "SLATE_BLUE" },
+ { "slategray", "SLATE_GRAY" },
+ { "snow", "SNOW" },
+ { "springgreen", "SPRING_GREEN" },
+ { "steelblue", "STEEL_BLUE" },
+ { "tan", "TAN" },
+ { "teal", "TEAL" },
+ { "thistle", "THISTLE" },
+ { "tomato", "TOMATO" },
+ { "transparent", "TRANSPARENT" },
+ { "turquoise", "TURQUOISE" },
+ { "violet", "VIOLET" },
+ { "webgray", "WEB_GRAY" },
+ { "webgreen", "WEB_GREEN" },
+ { "webmaroon", "WEB_MAROON" },
+ { "webpurple", "WEB_PURPLE" },
+ { "wheat", "WHEAT" },
+ { "white", "WHITE" },
+ { "whitesmoke", "WHITE_SMOKE" },
+ { "yellow", "YELLOW" },
+ { "yellowgreen", "YELLOW_GREEN" },
+
+ { nullptr, nullptr },
+};
+
+// Function responsible for converting project
+int ProjectConverter3To4::convert() {
+ print_line("Starting conversion.");
+
+ ERR_FAIL_COND_V_MSG(!test_array_names(), ERROR_CODE, "Cannot start converting due to problems with data in arrays.");
+ ERR_FAIL_COND_V_MSG(!test_conversion(), ERROR_CODE, "Cannot start converting due to problems with converting arrays.");
+
+ // Checking if folder contains valid Godot 3 project.
+ // Project cannot be converted 2 times
+ {
+ String conventer_text = "; Project was converted by built-in tool to Godot 4.0";
+
+ ERR_FAIL_COND_V_MSG(!FileAccess::exists("project.godot"), ERROR_CODE, "Current directory doesn't contains any Godot 3 project");
+
+ Error err = OK;
+ String project_godot_content = FileAccess::get_file_as_string("project.godot", &err);
+
+ ERR_FAIL_COND_V_MSG(err != OK, ERROR_CODE, "Failed to read content of \"project.godot\" file.");
+ ERR_FAIL_COND_V_MSG(project_godot_content.find(conventer_text) != -1, ERROR_CODE, "Project already was converted with this tool.");
+
+ Ref<FileAccess> file = FileAccess::open("project.godot", FileAccess::WRITE);
+ ERR_FAIL_COND_V_MSG(file.is_null(), ERROR_CODE, "Failed to open project.godot file.");
+
+ file->store_string(conventer_text + "\n" + project_godot_content);
+ }
+
+ Vector<String> collected_files = check_for_files();
+
+ uint32_t converted_files = 0;
+
+ // Check file by file
+ for (int i = 0; i < collected_files.size(); i++) {
+ String file_name = collected_files[i];
+ Error err = OK;
+ String file_content = FileAccess::get_file_as_string(file_name, &err);
+ ERR_CONTINUE_MSG(err != OK, "Failed to read content of \"" + file_name + "\".");
+ uint64_t hash_before = file_content.hash64();
+ uint64_t file_size = file_content.size();
+ print_line("Trying to convert\t" + itos(i + 1) + "/" + itos(collected_files.size()) + " file - \"" + file_name.trim_prefix("res://") + "\" with size - " + itos(file_size / 1024) + " KB");
+
+ Vector<String> reason;
+ bool is_ignored = false;
+ uint64_t start_time = Time::get_singleton()->get_ticks_msec();
+
+ if (file_name.ends_with(".shader")) {
+ DirAccess::remove_file_or_error(file_name);
+ file_name = file_name.replace(".shader", ".gdshader");
+ }
+
+ if (file_size < CONVERSION_MAX_FILE_SIZE) {
+ // TSCN must be the same work exactly same as .gd file because it may contains builtin script
+ if (file_name.ends_with(".gd")) {
+ rename_classes(file_content); // Using only specialized function
+
+ rename_common(enum_renames, file_content);
+ rename_enums(file_content); // Require to additional rename
+
+ rename_common(gdscript_function_renames, file_content);
+ rename_gdscript_functions(file_content); // Require to additional rename
+
+ rename_common(project_settings_renames, file_content);
+ rename_gdscript_keywords(file_content);
+ rename_common(gdscript_properties_renames, file_content);
+ rename_common(gdscript_signals_renames, file_content);
+ rename_common(shaders_renames, file_content);
+ rename_common(builtin_types_renames, file_content);
+
+ custom_rename(file_content, "\\.shader", ".gdshader");
+ custom_rename(file_content, "instance", "instantiate");
+ } else if (file_name.ends_with(".tscn")) {
+ rename_classes(file_content); // Using only specialized function
+
+ rename_common(enum_renames, file_content);
+ rename_enums(file_content); // Require to additional rename
+
+ rename_common(gdscript_function_renames, file_content);
+ rename_gdscript_functions(file_content); // Require to additional rename
+
+ rename_common(project_settings_renames, file_content);
+ rename_gdscript_keywords(file_content);
+ rename_common(gdscript_properties_renames, file_content);
+ rename_common(gdscript_signals_renames, file_content);
+ rename_common(shaders_renames, file_content);
+ rename_common(builtin_types_renames, file_content);
+
+ custom_rename(file_content, "\\.shader", ".gdshader");
+ } else if (file_name.ends_with(".cs")) { // TODO, C# should use different methods
+ rename_classes(file_content); // Using only specialized function
+ rename_common(csharp_function_renames, file_content);
+ rename_common(builtin_types_renames, file_content);
+ rename_common(csharp_properties_renames, file_content);
+ rename_common(csharp_signals_renames, file_content);
+ rename_csharp_functions(file_content);
+ custom_rename(file_content, "public class ", "public partial class ");
+ } else if (file_name.ends_with(".gdshader") || file_name.ends_with(".shader")) {
+ rename_common(shaders_renames, file_content);
+ } else if (file_name.ends_with("tres")) {
+ rename_classes(file_content); // Using only specialized function
+
+ rename_common(shaders_renames, file_content);
+ rename_common(builtin_types_renames, file_content);
+
+ custom_rename(file_content, "\\.shader", ".gdshader");
+ } else if (file_name.ends_with("project.godot")) {
+ rename_common(project_settings_renames, file_content);
+ rename_common(builtin_types_renames, file_content);
+ } else if (file_name.ends_with(".csproj")) {
+ // TODO
+ } else {
+ ERR_PRINT(file_name + " is not supported!");
+ continue;
+ }
+ } else {
+ reason.append(" ERROR: File has exceeded the maximum size allowed - 500 KB");
+ is_ignored = true;
+ }
+
+ uint64_t end_time = Time::get_singleton()->get_ticks_msec();
+
+ if (!is_ignored) {
+ uint64_t hash_after = file_content.hash64();
+ // Don't need to save file without any changes
+ // Save if this is a shader, because it was renamed
+ if (hash_before != hash_after || file_name.find(".gdshader") != -1) {
+ converted_files++;
+
+ Ref<FileAccess> file = FileAccess::open(file_name, FileAccess::WRITE);
+ ERR_CONTINUE_MSG(file.is_null(), "Failed to open \"" + file_name + "\" to save data to file.");
+ file->store_string(file_content);
+ reason.append(" File was changed, conversion took " + itos(end_time - start_time) + " ms.");
+ } else {
+ reason.append(" File was not changed, checking took " + itos(end_time - start_time) + " ms.");
+ }
+ }
+ for (int k = 0; k < reason.size(); k++) {
+ print_line(reason[k]);
+ }
+ }
+
+ print_line("Conversion ended - all files(" + itos(collected_files.size()) + "), converted files(" + itos(converted_files) + "), not converted files(" + itos(collected_files.size() - converted_files) + ").");
+ return 0;
+};
+
+// Function responsible for validating project conversion.
+int ProjectConverter3To4::validate_conversion() {
+ print_line("Starting checking if project conversion can be done.");
+
+ ERR_FAIL_COND_V_MSG(!test_array_names(), ERROR_CODE, "Cannot start converting due to problems with data in arrays.");
+ ERR_FAIL_COND_V_MSG(!test_conversion(), ERROR_CODE, "Cannot start converting due to problems with converting arrays.");
+
+ // Checking if folder contains valid Godot 3 project.
+ // Project cannot be converted 2 times
+ {
+ String conventer_text = "; Project was converted by built-in tool to Godot 4.0";
+
+ ERR_FAIL_COND_V_MSG(!FileAccess::exists("project.godot"), ERROR_CODE, "Current directory doesn't contains any Godot 3 project");
+
+ Error err = OK;
+ String project_godot_content = FileAccess::get_file_as_string("project.godot", &err);
+
+ ERR_FAIL_COND_V_MSG(err != OK, ERROR_CODE, "Failed to read content of \"project.godot\" file.");
+ ERR_FAIL_COND_V_MSG(project_godot_content.find(conventer_text) != -1, ERROR_CODE, "Project already was converted with this tool.");
+ }
+
+ Vector<String> collected_files = check_for_files();
+
+ uint32_t converted_files = 0;
+
+ // Check file by file
+ for (int i = 0; i < collected_files.size(); i++) {
+ String file_name = collected_files[i];
+ Vector<String> file_content;
+ uint64_t file_size = 0;
+ {
+ Ref<FileAccess> file = FileAccess::open(file_name, FileAccess::READ);
+ ERR_CONTINUE_MSG(file.is_null(), "Failed to read content of \"" + file_name + "\".");
+ while (!file->eof_reached()) {
+ String line = file->get_line();
+ file_size += line.size();
+ file_content.append(line);
+ }
+ }
+ print_line("Checking for conversion - " + itos(i + 1) + "/" + itos(collected_files.size()) + " file - \"" + file_name.trim_prefix("res://") + "\" with size - " + itos(file_size / 1024) + " KB");
+
+ Vector<String> changed_elements;
+ Vector<String> reason;
+ bool is_ignored = false;
+ uint64_t start_time = Time::get_singleton()->get_ticks_msec();
+
+ if (file_name.ends_with(".sader")) {
+ reason.append("\tFile extension will be renamed from `shader` to `gdshader`.");
+ }
+
+ if (file_size < CONVERSION_MAX_FILE_SIZE) {
+ if (file_name.ends_with(".gd")) {
+ changed_elements.append_array(check_for_rename_classes(file_content));
+
+ changed_elements.append_array(check_for_rename_common(enum_renames, file_content));
+ changed_elements.append_array(check_for_rename_enums(file_content));
+
+ changed_elements.append_array(check_for_rename_common(gdscript_function_renames, file_content));
+ changed_elements.append_array(check_for_rename_gdscript_functions(file_content));
+
+ changed_elements.append_array(check_for_rename_common(project_settings_renames, file_content));
+ changed_elements.append_array(check_for_rename_gdscript_keywords(file_content));
+ changed_elements.append_array(check_for_rename_common(gdscript_properties_renames, file_content));
+ changed_elements.append_array(check_for_rename_common(gdscript_signals_renames, file_content));
+ changed_elements.append_array(check_for_rename_common(shaders_renames, file_content));
+ changed_elements.append_array(check_for_rename_common(builtin_types_renames, file_content));
+
+ changed_elements.append_array(check_for_custom_rename(file_content, "instance", "instantiate"));
+ changed_elements.append_array(check_for_custom_rename(file_content, "\\.shader", ".gdshader"));
+ } else if (file_name.ends_with(".tscn")) {
+ changed_elements.append_array(check_for_rename_classes(file_content));
+
+ changed_elements.append_array(check_for_rename_common(enum_renames, file_content));
+ changed_elements.append_array(check_for_rename_enums(file_content));
+
+ changed_elements.append_array(check_for_rename_common(gdscript_function_renames, file_content));
+ changed_elements.append_array(check_for_rename_gdscript_functions(file_content));
+
+ changed_elements.append_array(check_for_rename_common(project_settings_renames, file_content));
+ changed_elements.append_array(check_for_rename_gdscript_keywords(file_content));
+ changed_elements.append_array(check_for_rename_common(gdscript_properties_renames, file_content));
+ changed_elements.append_array(check_for_rename_common(gdscript_signals_renames, file_content));
+ changed_elements.append_array(check_for_rename_common(shaders_renames, file_content));
+ changed_elements.append_array(check_for_rename_common(builtin_types_renames, file_content));
+
+ changed_elements.append_array(check_for_custom_rename(file_content, "\\.shader", ".gdshader"));
+ } else if (file_name.ends_with(".cs")) {
+ changed_elements.append_array(check_for_rename_common(class_renames, file_content));
+ changed_elements.append_array(check_for_rename_common(csharp_function_renames, file_content));
+ changed_elements.append_array(check_for_rename_common(builtin_types_renames, file_content));
+ changed_elements.append_array(check_for_rename_common(csharp_properties_renames, file_content));
+ changed_elements.append_array(check_for_rename_common(csharp_signals_renames, file_content));
+ changed_elements.append_array(check_for_rename_csharp_functions(file_content));
+ changed_elements.append_array(check_for_custom_rename(file_content, "public class ", "public partial class "));
+ } else if (file_name.ends_with(".gdshader") || file_name.ends_with(".shader")) {
+ changed_elements.append_array(check_for_rename_common(shaders_renames, file_content));
+ } else if (file_name.ends_with("tres")) {
+ changed_elements.append_array(check_for_rename_classes(file_content));
+
+ changed_elements.append_array(check_for_rename_common(shaders_renames, file_content));
+ changed_elements.append_array(check_for_rename_common(builtin_types_renames, file_content));
+
+ changed_elements.append_array(check_for_custom_rename(file_content, "\\.shader", ".gdshader"));
+ } else if (file_name.ends_with("project.godot")) {
+ changed_elements.append_array(check_for_rename_common(project_settings_renames, file_content));
+ changed_elements.append_array(check_for_rename_common(builtin_types_renames, file_content));
+ } else if (file_name.ends_with(".csproj")) {
+ // TODO
+ } else {
+ ERR_PRINT(file_name + " is not supported!");
+ continue;
+ }
+ } else {
+ reason.append("\tERROR: File has exceeded the maximum size allowed - 500 KB");
+ is_ignored = true;
+ }
+
+ uint64_t end_time = Time::get_singleton()->get_ticks_msec();
+ print_line(" Checking file took " + itos(end_time - start_time) + " ms.");
+
+ for (int k = 0; k < reason.size(); k++) {
+ print_line(reason[k]);
+ }
+
+ if (changed_elements.size() > 0 && !is_ignored) {
+ converted_files++;
+
+ for (int k = 0; k < changed_elements.size(); k++) {
+ print_line(String("\t\t") + changed_elements[k]);
+ }
+ }
+ }
+
+ print_line("Checking for valid conversion ended - all files(" + itos(collected_files.size()) + "), files which would be converted(" + itos(converted_files) + "), files which would not be converted(" + itos(collected_files.size() - converted_files) + ").");
+ return 0;
+}
+
+// Collect files which will be checked, it will not touch txt, mp4, wav etc. files
+Vector<String> ProjectConverter3To4::check_for_files() {
+ Vector<String> collected_files = Vector<String>();
+
+ Vector<String> directories_to_check = Vector<String>();
+ directories_to_check.push_back("res://");
+
+ core_bind::Directory dir = core_bind::Directory();
+ while (!directories_to_check.is_empty()) {
+ String path = directories_to_check.get(directories_to_check.size() - 1); // Is there any pop_back function?
+ directories_to_check.resize(directories_to_check.size() - 1); // Remove last element
+ if (dir.open(path) == OK) {
+ dir.set_include_hidden(true);
+ dir.list_dir_begin();
+ String current_dir = dir.get_current_dir();
+ String file_name = dir.get_next();
+
+ while (file_name != "") {
+ if (file_name == ".git" || file_name == ".import" || file_name == ".godot") {
+ file_name = dir.get_next();
+ continue;
+ }
+ if (dir.current_is_dir()) {
+ directories_to_check.append(current_dir + file_name + "/");
+ } else {
+ bool proper_extension = false;
+ if (file_name.ends_with(".gd") || file_name.ends_with(".shader") || file_name.ends_with(".tscn") || file_name.ends_with(".tres") || file_name.ends_with(".godot") || file_name.ends_with(".cs") || file_name.ends_with(".csproj"))
+ proper_extension = true;
+
+ if (proper_extension) {
+ collected_files.append(current_dir + file_name);
+ }
+ }
+ file_name = dir.get_next();
+ }
+ } else {
+ print_verbose("Failed to open " + path);
+ }
+ }
+ return collected_files;
+}
+
+bool ProjectConverter3To4::test_conversion_single_additional(String name, String expected, void (ProjectConverter3To4::*func)(String &), String what) {
+ String got = name;
+ (this->*func)(got);
+ if (expected != got) {
+ ERR_PRINT("Failed to convert " + what + " `" + name + "` to `" + expected + "`, got instead `" + got + "`");
+ return false;
+ }
+
+ return true;
+}
+
+bool ProjectConverter3To4::test_conversion_single_normal(String name, String expected, const char *array[][2], String what) {
+ String got = name;
+ rename_common(array, got);
+ if (expected != got) {
+ ERR_PRINT("Failed to convert " + what + " `" + name + "` to `" + expected + "`, got instead `" + got + "`");
+ return false;
+ }
+ return true;
+}
+
+// Validate if conversions are proper
+bool ProjectConverter3To4::test_conversion() {
+ bool valid = true;
+
+ valid = valid & test_conversion_single_normal("Spatial", "Node3D", class_renames, "class");
+
+ valid = valid & test_conversion_single_normal("TYPE_REAL", "TYPE_FLOAT", enum_renames, "enum");
+
+ valid = valid & test_conversion_single_normal("can_instance", "can_instantiate", gdscript_function_renames, "gdscript function");
+
+ valid = valid & test_conversion_single_normal("CanInstance", "CanInstantiate", csharp_function_renames, "csharp function");
+
+ valid = valid & test_conversion_single_normal("translation", "position", gdscript_properties_renames, "gdscript property");
+
+ valid = valid & test_conversion_single_normal("Translation", "Position", csharp_properties_renames, "csharp property");
+
+ valid = valid & test_conversion_single_normal("NORMALMAP", "NORMAL_MAP", shaders_renames, "shader");
+
+ valid = valid & test_conversion_single_normal("text_entered", "text_submitted", gdscript_signals_renames, "gdscript signal");
+
+ valid = valid & test_conversion_single_normal("TextEntered", "TextSubmitted", csharp_signals_renames, "csharp signal");
+
+ valid = valid & test_conversion_single_normal("audio/channel_disable_threshold_db", "audio/buses/channel_disable_threshold_db", project_settings_renames, "project setting");
+
+ valid = valid & test_conversion_single_normal("Transform", "Transform3D", builtin_types_renames, "builtin type");
+
+ // Custom Renames
+
+ valid = valid & test_conversion_single_additional("(Connect(A,B,C,D,E,F,G) != OK):", "(Connect(A,new Callable(B,C),D,E,F,G) != OK):", &ProjectConverter3To4::rename_csharp_functions, "custom rename csharp");
+ valid = valid & test_conversion_single_additional("(Disconnect(A,B,C) != OK):", "(Disconnect(A,new Callable(B,C)) != OK):", &ProjectConverter3To4::rename_csharp_functions, "custom rename csharp");
+ valid = valid & test_conversion_single_additional("(IsConnected(A,B,C) != OK):", "(IsConnected(A,new Callable(B,C)) != OK):", &ProjectConverter3To4::rename_csharp_functions, "custom rename");
+
+ valid = valid & test_conversion_single_additional("OS.window_fullscreen = Settings.fullscreen", "ProjectSettings.set(\"display/window/size/fullscreen\", Settings.fullscreen)", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+
+ valid = valid & test_conversion_single_additional("\tvar aa = roman(r.move_and_slide( a, b, c, d, e, f )) # Roman", "\tr.set_motion_velocity(a)\n\tr.set_up_direction(b)\n\tr.set_floor_stop_on_slope_enabled(c)\n\tr.set_max_slides(d)\n\tr.set_floor_max_angle(e)\n\t# TODOConverter40 infinite_inertia were removed in Godot 4.0 - previous value `f`\n\tvar aa = roman(r.move_and_slide()) # Roman", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("\tvar aa = roman(r.move_and_slide_with_snap( a, g, b, c, d, e, f )) # Roman", "\tr.set_motion_velocity(a)\n\t# TODOConverter40 looks that snap in Godot 4.0 is float, not vector like in Godot 3 - previous value `g`\n\tr.set_up_direction(b)\n\tr.set_floor_stop_on_slope_enabled(c)\n\tr.set_max_slides(d)\n\tr.set_floor_max_angle(e)\n\t# TODOConverter40 infinite_inertia were removed in Godot 4.0 - previous value `f`\n\tvar aa = roman(r.move_and_slide()) # Roman", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+
+ valid = valid & test_conversion_single_additional("list_dir_begin( a , b )", "list_dir_begin() # TODOGODOT4 fill missing arguments https://github.com/godotengine/godot/pull/40547", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("list_dir_begin( a )", "list_dir_begin() # TODOGODOT4 fill missing arguments https://github.com/godotengine/godot/pull/40547", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("list_dir_begin( )", "list_dir_begin() # TODOGODOT4 fill missing arguments https://github.com/godotengine/godot/pull/40547", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+
+ valid = valid & test_conversion_single_additional("sort_custom( a , b )", "sort_custom(Callable(a,b))", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+
+ valid = valid & test_conversion_single_additional("func c(var a, var b)", "func c(a, b)", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+
+ valid = valid & test_conversion_single_additional("draw_line(1, 2, 3, 4, 5)", "draw_line(1,2,3,4)", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+
+ valid = valid & test_conversion_single_additional("\timage.lock()", "\tfalse # image.lock() # TODOConverter40, image no longer require locking, `false` helps to not broke one line if/else, so can be freely removed", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("\timage.unlock()", "\tfalse # image.unlock() # TODOConverter40, image no longer require locking, `false` helps to not broke one line if/else, so can be freely removed", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("\troman.image.unlock()", "\tfalse # roman.image.unlock() # TODOConverter40, image no longer require locking, `false` helps to not broke one line if/else, so can be freely removed", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("\tmtx.lock()", "\tmtx.lock()", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("\tmutex.unlock()", "\tmutex.unlock()", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+
+ valid = valid & test_conversion_single_additional("\nonready", "\n@onready", &ProjectConverter3To4::rename_gdscript_keywords, "gdscript keyword");
+ valid = valid & test_conversion_single_additional("onready", "@onready", &ProjectConverter3To4::rename_gdscript_keywords, "gdscript keyword");
+ valid = valid & test_conversion_single_additional(" onready", " onready", &ProjectConverter3To4::rename_gdscript_keywords, "gdscript keyword");
+ valid = valid & test_conversion_single_additional("\nexport", "\n@export", &ProjectConverter3To4::rename_gdscript_keywords, "gdscript keyword");
+ valid = valid & test_conversion_single_additional("\texport", "\t@export", &ProjectConverter3To4::rename_gdscript_keywords, "gdscript keyword");
+ valid = valid & test_conversion_single_additional("\texport_dialog", "\texport_dialog", &ProjectConverter3To4::rename_gdscript_keywords, "gdscript keyword");
+ valid = valid & test_conversion_single_additional("export", "@export", &ProjectConverter3To4::rename_gdscript_keywords, "gdscript keyword");
+ valid = valid & test_conversion_single_additional(" export", " export", &ProjectConverter3To4::rename_gdscript_keywords, "gdscript keyword");
+ valid = valid & test_conversion_single_additional("tool", "@tool", &ProjectConverter3To4::rename_gdscript_keywords, "gdscript keyword");
+ valid = valid & test_conversion_single_additional("\n tool", "\n tool", &ProjectConverter3To4::rename_gdscript_keywords, "gdscript keyword");
+ valid = valid & test_conversion_single_additional("\n\ntool", "\n\n@tool", &ProjectConverter3To4::rename_gdscript_keywords, "gdscript keyword");
+ valid = valid & test_conversion_single_additional("\n\nmaster func", "\n\n@rpc(any) func", &ProjectConverter3To4::rename_gdscript_keywords, "gdscript keyword");
+ valid = valid & test_conversion_single_additional("\n\npuppet func", "\n\n@rpc(auth) func", &ProjectConverter3To4::rename_gdscript_keywords, "gdscript keyword");
+ valid = valid & test_conversion_single_additional("\n\nremote func", "\n\n@rpc(any) func", &ProjectConverter3To4::rename_gdscript_keywords, "gdscript keyword");
+ valid = valid & test_conversion_single_additional("\n\nremotesync func", "\n\n@rpc(any,sync) func", &ProjectConverter3To4::rename_gdscript_keywords, "gdscript keyword");
+ valid = valid & test_conversion_single_additional("\n\nsync func", "\n\n@rpc(any,sync) func", &ProjectConverter3To4::rename_gdscript_keywords, "gdscript keyword");
+ valid = valid & test_conversion_single_additional("\n\npuppetsync func", "\n\n@rpc(auth,sync) func", &ProjectConverter3To4::rename_gdscript_keywords, "gdscript keyword");
+ valid = valid & test_conversion_single_additional("\n\nmastersync func", "\n\n@rpc(any,sync) func", &ProjectConverter3To4::rename_gdscript_keywords, "gdscript keyword");
+
+ valid = valid & test_conversion_single_additional("var size : Vector2 = Vector2() setget set_function , get_function", "var size : Vector2 = Vector2() :\n get:\n return size # TODOConverter40 Copy here content of get_function\n set(mod_value):\n mod_value # TODOConverter40 Copy here content of set_function", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("var size : Vector2 = Vector2() setget set_function , ", "var size : Vector2 = Vector2() :\n get:\n return size # TODOConverter40 Non existent get function \n set(mod_value):\n mod_value # TODOConverter40 Copy here content of set_function", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("var size : Vector2 = Vector2() setget set_function", "var size : Vector2 = Vector2() :\n get:\n return size # TODOConverter40 Non existent get function \n set(mod_value):\n mod_value # TODOConverter40 Copy here content of set_function", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("var size : Vector2 = Vector2() setget , get_function", "var size : Vector2 = Vector2() :\n get:\n return size # TODOConverter40 Copy here content of get_function \n set(mod_value):\n mod_value # TODOConverter40 Non existent set function", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+
+ valid = valid & test_conversion_single_additional("get_node(@", "get_node(", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+
+ valid = valid & test_conversion_single_additional("yield(this, \"timeout\")", "await this.timeout", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+
+ valid = valid & test_conversion_single_additional(" Transform.xform(Vector3(a,b,c)) ", " Transform * Vector3(a,b,c) ", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional(" Transform.xform_inv(Vector3(a,b,c)) ", " Vector3(a,b,c) * Transform ", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+
+ valid = valid & test_conversion_single_additional("export(float) var lifetime = 3.0", "export var lifetime: float = 3.0", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("export(String, 'AnonymousPro', 'CourierPrime') var _font_name = 'AnonymousPro'", "export var _font_name = 'AnonymousPro' # (String, 'AnonymousPro', 'CourierPrime')", &ProjectConverter3To4::rename_gdscript_functions, "custom rename"); // TODO, this is only a workaround
+ valid = valid & test_conversion_single_additional("export(PackedScene) var mob_scene", "export var mob_scene: PackedScene", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+
+ valid = valid & test_conversion_single_additional("var d = parse_json(roman(sfs))", "var test_json_conv = JSON.new()\ntest_json_conv.parse(roman(sfs))\nvar d = test_json_conv.get_data()", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+
+ valid = valid & test_conversion_single_additional("to_json( AA ) szon", "JSON.new().stringify( AA ) szon", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("s to_json", "s JSON.new().stringify", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("AF to_json2", "AF to_json2", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("var rr = JSON.parse(a)", "var test_json_conv = JSON.new()\ntest_json_conv.parse(a)\nvar rr = test_json_conv.get_data()", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+
+ valid = valid & test_conversion_single_additional("empty()", "is_empty()", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional(".empty", ".empty", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+
+ valid = valid & test_conversion_single_additional(").roman(", ").roman(", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("\t.roman(", "\tsuper.roman(", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional(" .roman(", " super.roman(", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional(".1", ".1", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional(" .1", " .1", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("'.'", "'.'", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("'.a'", "'.a'", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("\t._input(_event)", "\tsuper._input(_event)", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+
+ valid = valid & test_conversion_single_additional("(start(A,B,C,D,E,F,G) != OK):", "(start(A,Callable(B,C),D,E,F,G) != OK):", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("(connect(A,B,C,D,E,F,G) != OK):", "(connect(A,Callable(B,C),D,E,F,G) != OK):", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("(connect(A,B,C) != OK):", "(connect(A,Callable(B,C)) != OK):", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("disconnect(A,B,C) != OK):", "disconnect(A,Callable(B,C)) != OK):", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("is_connected(A,B,C) != OK):", "is_connected(A,Callable(B,C)) != OK):", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("is_connected(A,B,C))", "is_connected(A,Callable(B,C)))", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+
+ valid = valid & test_conversion_single_additional("func _init(p_x:int)->void:", "func _init(p_x:int):", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("q_PackedDataContainer._iter_init(variable1)", "q_PackedDataContainer._iter_init(variable1)", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+
+ valid = valid & test_conversion_single_additional("assert(speed < 20, str(randi()%10))", "assert(speed < 20) #,str(randi()%10))", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("assert(speed < 2)", "assert(speed < 2)", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("assert(false, \"Missing type --\" + str(argument.type) + \"--, needs to be added to project\")", "assert(false) #,\"Missing type --\" + str(argument.type) + \"--, needs to be added to project\")", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+
+ valid = valid & test_conversion_single_additional("create_from_image(aa, bb)", "create_from_image(aa) #,bb", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("q_ImageTexture.create_from_image(variable1, variable2)", "q_ImageTexture.create_from_image(variable1) #,variable2", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+
+ valid = valid & test_conversion_single_additional("set_cell_item(a, b, c, d ,e) # AA", "set_cell_item( Vector3(a,b,c) ,d,e) # AA", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("set_cell_item(a, b)", "set_cell_item(a, b)", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("get_cell_item_orientation(a, b,c)", "get_cell_item_orientation(Vector3i(a,b,c))", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("get_cell_item(a, b,c)", "get_cell_item(Vector3i(a,b,c))", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+
+ valid = valid & test_conversion_single_additional("PackedStringArray(req_godot).join('.')", "'.'.join(PackedStringArray(req_godot))", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("=PackedStringArray(req_godot).join('.')", "='.'.join(PackedStringArray(req_godot))", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+
+ valid = valid & test_conversion_single_additional(" aa", " aa", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("\taa", "\taa", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional("\t aa", "\taa", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+ valid = valid & test_conversion_single_additional(" \taa", " \taa", &ProjectConverter3To4::rename_gdscript_functions, "custom rename");
+
+ valid = valid & test_conversion_single_additional("AAA Color.white AF", "AAA Color.WHITE AF", &ProjectConverter3To4::rename_enums, "custom rename");
+
+ // Custom rule conversion
+ {
+ String from = "instance";
+ String to = "instantiate";
+ String name = "AA.instance()";
+ String got = "AA.instance()";
+ String expected = "AA.instantiate()";
+ custom_rename(got, from, to);
+ if (got != expected) {
+ ERR_PRINT("Failed to convert custom rename `" + name + "` to `" + expected + "`, got instead `" + got + "`");
+ }
+ valid = valid & (got == expected);
+ }
+
+ // get_object_of_execution
+ {
+ { String base = "var roman = kieliszek.";
+ String expected = "kieliszek.";
+ String got = get_object_of_execution(base);
+ if (got != expected) {
+ ERR_PRINT("Failed to get proper data from get_object_of_execution `" + base + "` should return `" + expected + "`(" + itos(expected.size()) + "), got instead `" + got + "`(" + itos(got.size()) + ")");
+ }
+ valid = valid & (got == expected);
+}
+{
+ String base = "r.";
+ String expected = "r.";
+ String got = get_object_of_execution(base);
+ if (got != expected) {
+ ERR_PRINT("Failed to get proper data from get_object_of_execution `" + base + "` should return `" + expected + "`(" + itos(expected.size()) + "), got instead `" + got + "`(" + itos(got.size()) + ")");
+ }
+ valid = valid & (got == expected);
+}
+{
+ String base = "mortadela(";
+ String expected = "";
+ String got = get_object_of_execution(base);
+ if (got != expected) {
+ ERR_PRINT("Failed to get proper data from get_object_of_execution `" + base + "` should return `" + expected + "`(" + itos(expected.size()) + "), got instead `" + got + "`(" + itos(got.size()) + ")");
+ }
+ valid = valid & (got == expected);
+}
+}
+// get_starting_space
+{
+ String base = "\t\t\t var roman = kieliszek.";
+ String expected = "\t\t\t";
+ String got = get_starting_space(base);
+ if (got != expected) {
+ ERR_PRINT("Failed to get proper data from get_starting_space `" + base + "` should return `" + expected + "`(" + itos(expected.size()) + "), got instead `" + got + "`(" + itos(got.size()) + ")");
+ }
+ valid = valid & (got == expected);
+}
+// Parse Arguments
+{
+ String line = "( )";
+ Vector<String> got_vector = parse_arguments(line);
+ String got = "";
+ String expected = "";
+ for (String &part : got_vector) {
+ got += part + "|||";
+ }
+ if (got != expected) {
+ ERR_PRINT("Failed to get proper data from parse_arguments `" + line + "` should return `" + expected + "`(" + itos(expected.size()) + "), got instead `" + got + "`(" + itos(got.size()) + ")");
+ }
+ valid = valid & (got == expected);
+}
+{
+ String line = "(a , b , c)";
+ Vector<String> got_vector = parse_arguments(line);
+ String got = "";
+ String expected = "a|||b|||c|||";
+ for (String &part : got_vector) {
+ got += part + "|||";
+ }
+ if (got != expected) {
+ ERR_PRINT("Failed to get proper data from parse_arguments `" + line + "` should return `" + expected + "`(" + itos(expected.size()) + "), got instead `" + got + "`(" + itos(got.size()) + ")");
+ }
+ valid = valid & (got == expected);
+}
+{
+ String line = "(a , \"b,\" , c)";
+ Vector<String> got_vector = parse_arguments(line);
+ String got = "";
+ String expected = "a|||\"b,\"|||c|||";
+ for (String &part : got_vector) {
+ got += part + "|||";
+ }
+ if (got != expected) {
+ ERR_PRINT("Failed to get proper data from parse_arguments `" + line + "` should return `" + expected + "`(" + itos(expected.size()) + "), got instead `" + got + "`(" + itos(got.size()) + ")");
+ }
+ valid = valid & (got == expected);
+}
+{
+ String line = "(a , \"(,),,,,\" , c)";
+ Vector<String> got_vector = parse_arguments(line);
+ String got = "";
+ String expected = "a|||\"(,),,,,\"|||c|||";
+ for (String &part : got_vector) {
+ got += part + "|||";
+ }
+ if (got != expected) {
+ ERR_PRINT("Failed to get proper data from parse_arguments `" + line + "` should return `" + expected + "`(" + itos(expected.size()) + "), got instead `" + got + "`(" + itos(got.size()) + ")");
+ }
+ valid = valid & (got == expected);
+}
+
+return valid;
+}
+
+// Validate in all arrays if names don't do cyclic renames `Node` -> `Node2D` | `Node2D` -> `2DNode`
+bool ProjectConverter3To4::test_array_names() {
+ bool valid = true;
+ Vector<String> names = Vector<String>();
+
+ // Validate if all classes are valid
+ {
+ int current_index = 0;
+ while (class_renames[current_index][0]) {
+ const String old_class = class_renames[current_index][0];
+ const String new_class = class_renames[current_index][1];
+
+ // Light2D, Texture, Viewport are special classes(probably virtual ones)
+ if (ClassDB::class_exists(StringName(old_class)) && old_class != "Light2D" && old_class != "Texture" && old_class != "Viewport") {
+ ERR_PRINT(String("Class `") + old_class + "` exists in Godot 4.0, so cannot be renamed to something else.");
+ valid = false; // This probably should be only a warning, but not 100% sure - this would need to be added to CI
+ }
+
+ // Callable is special class, to which normal classes may be renamed
+ if (!ClassDB::class_exists(StringName(new_class)) && new_class != "Callable") {
+ ERR_PRINT(String("Class `") + new_class + "` doesn't exists in Godot 4.0, so cannot be used in convertion.");
+ valid = false; // This probably should be only a warning, but not 100% sure - this would need to be added to CI
+ }
+ current_index++;
+ }
+ }
+
+ // // TODO To be able to fully work, it needs https://github.com/godotengine/godot/pull/49053
+ // // TODO this needs to be changed to hashset when available https://github.com/godotengine/godot-proposals/issues/867, to speedup searchng
+ // {
+ // OrderedHashMap<String, bool> all_functions;
+
+ // List<StringName> classes_list;
+ // ClassDB::get_class_list(&classes_list);
+ // for (StringName &name_of_class : classes_list) {
+ // List<MethodInfo> method_list;
+ // ClassDB::get_method_list(name_of_class, &method_list, true);
+ // for (MethodInfo &function_data : method_list) {
+ // if (!all_functions.has(function_data.name)) {
+ // all_functions.insert(function_data.name, false);
+ // }
+ // }
+ // }
+
+ // for (int type = Variant::Type::NIL + 1; type < Variant::Type::VARIANT_MAX; type++) {
+ // List<MethodInfo> method_list;
+ // Variant::get_method_list_by_type(&method_list, Variant::Type(type));
+ // for (MethodInfo &function_data : method_list) {
+ // if (!all_functions.has(function_data.name)) {
+ // all_functions.insert(function_data.name, false);
+ // }
+ // }
+ // }
+
+ // int current_element = 0;
+ // while (gdscript_function_renames[current_element][0] != nullptr) {
+ // if (!all_functions.has(gdscript_function_renames[current_element][1])) {
+ // ERR_PRINT(String("Missing gdscript function in pair (") + gdscript_function_renames[current_element][0] + " - ===> " + gdscript_function_renames[current_element][1] + " <===)");
+ // valid = false;
+ // }
+ // // // DEBUG, disable below after tests
+ // // if (all_functions.has(gdscript_function_renames[current_element][0])) {
+ // // String used_in_classes = "";
+ // //
+ // // for (StringName &name_of_class : classes_list) {
+ // // List<MethodInfo> method_list;
+ // // ClassDB::get_method_list(name_of_class, &method_list, true);
+ // // for (MethodInfo &function_data : method_list) {
+ // // if (function_data.name == gdscript_function_renames[current_element][0]) {
+ // // used_in_classes += String(name_of_class) + ", ";
+ // // }
+ // // }
+ // // }
+ // // for (int type = Variant::Type::NIL + 1; type < Variant::Type::VARIANT_MAX; type++) {
+ // // List<MethodInfo> method_list;
+ // // Variant::get_method_list_by_type(&method_list, Variant::Type(type));
+ // // for (MethodInfo &function_data : method_list) {
+ // // if (function_data.name == gdscript_function_renames[current_element][0]) {
+ // // used_in_classes += Variant::get_type_name(Variant::Type(type)) + ", ";
+ // // }
+ // // }
+ // // }
+ // // used_in_classes = used_in_classes.trim_suffix(", ");
+ // //
+ // // WARN_PRINT(String("Godot contains function which will be renamed in pair ( ===> ") + gdscript_function_renames[current_element][0] + " <=== - " + gdscript_function_renames[current_element][1] + ") in class " + used_in_classes + " - check for possible invalid rule.");
+ // // }
+ // current_element++;
+ // }
+ // }
+
+ valid = valid & test_single_array(enum_renames);
+ valid = valid & test_single_array(class_renames, true);
+ valid = valid & test_single_array(gdscript_function_renames, true);
+ valid = valid & test_single_array(csharp_function_renames, true);
+ valid = valid & test_single_array(gdscript_properties_renames);
+ valid = valid & test_single_array(csharp_properties_renames);
+ valid = valid & test_single_array(shaders_renames);
+ valid = valid & test_single_array(gdscript_signals_renames);
+ valid = valid & test_single_array(project_settings_renames);
+ valid = valid & test_single_array(builtin_types_renames);
+ valid = valid & test_single_array(colors_renames);
+
+ return valid;
+}
+
+// Validate in one array if names don't do cyclic renames `Node` -> `Node2D` | `Node2D` -> `2DNode`
+// Also checks if in name contains spaces at the end or beggining
+bool ProjectConverter3To4::test_single_array(const char *array[][2], bool ignore_second_check) {
+ bool valid = true;
+ int current_index = 0;
+ Vector<String> names = Vector<String>();
+
+ while (array[current_index][0]) {
+ if (String(array[current_index][0]).begins_with(" ") || String(array[current_index][0]).ends_with(" ")) {
+ {
+ ERR_PRINT(String("Entry \"") + array[current_index][0] + "\" ends or stars with space.");
+ valid = false;
+ }
+ }
+ if (names.has(array[current_index][0])) {
+ ERR_PRINT(String("Found duplicated things, pair ( -> ") + array[current_index][0] + " , " + array[current_index][1] + ")");
+ valid = false;
+ }
+ names.append(array[current_index][0]);
+
+ if (String(array[current_index][1]).begins_with(" ") || String(array[current_index][1]).ends_with(" ")) {
+ {
+ ERR_PRINT(String("Entry \"") + array[current_index][1] + "\" ends or stars with space.");
+ valid = false;
+ }
+ }
+ if (names.has(array[current_index][1])) {
+ ERR_PRINT(String("Found duplicated things, pair (") + array[current_index][0] + " , ->" + array[current_index][1] + ")");
+ valid = false;
+ }
+ if (!ignore_second_check) {
+ names.append(array[current_index][1]);
+ }
+ current_index++;
+ }
+ return valid;
+};
+
+// Returns arguments from given function execution, this cannot be really done as regex
+// `abc(d,e(f,g),h)` -> [d], [e(f,g)], [h]
+Vector<String> ProjectConverter3To4::parse_arguments(const String &line) {
+ Vector<String> parts;
+ int string_size = line.length();
+ int current_index = 0;
+ int start_part = 0; // Index of beginning of start par
+ int parts_counter = 0;
+ char32_t previous_character = '\0';
+ bool is_inside_string = false; // if true, it ignore this 3 characters ( , ) inside string
+
+ if (line.count("(") != line.count(")")) {
+ ERR_PRINT("Bug: substring should have equal number of open and close parenthess - `" + line + "`");
+ return parts;
+ }
+
+ while (current_index < string_size) {
+ char32_t character = line.get(current_index);
+ switch (character) {
+ case '(': {
+ parts_counter++;
+ if (parts_counter == 1 && !is_inside_string) {
+ start_part = current_index;
+ }
+ break;
+ };
+ case ')': {
+ parts_counter--;
+ if (parts_counter == 0 && !is_inside_string) {
+ parts.append(line.substr(start_part + 1, current_index - start_part - 1));
+ start_part = current_index;
+ }
+ break;
+ };
+ case ',': {
+ if (parts_counter == 1 && !is_inside_string) {
+ parts.append(line.substr(start_part + 1, current_index - start_part - 1));
+ start_part = current_index;
+ }
+ break;
+ };
+ case '"': {
+ if (previous_character != '\\')
+ is_inside_string = !is_inside_string;
+ }
+ }
+ current_index++;
+ previous_character = character;
+ }
+
+ Vector<String> clean_parts;
+ for (String &part : parts) {
+ part = part.strip_edges();
+ if (!part.is_empty()) {
+ clean_parts.append(part);
+ }
+ }
+
+ return clean_parts;
+}
+
+// Finds latest parenthess owned by function
+// `function(abc(a,b),DD)):` finds this parenthess `function(abc(a,b),DD => ) <= ):`
+int ProjectConverter3To4::get_end_parenthess(const String &line) const {
+ int current_index = 0;
+ int current_state = 0;
+ while (line.length() > current_index) {
+ char32_t character = line.get(current_index);
+ if (character == '(') {
+ current_state++;
+ }
+ if (character == ')') {
+ current_state--;
+ if (current_state == 0) {
+ return current_index;
+ }
+ }
+ current_index++;
+ }
+ return -1;
+}
+
+// Connects arguments from vector to one string
+// Needed when after processing e.g. 2 arguments, later arguments are not changed in any way
+String ProjectConverter3To4::connect_arguments(const Vector<String> &arguments, int from, int to) const {
+ if (to == -1) {
+ to = arguments.size();
+ }
+
+ String value;
+ if (arguments.size() > 0 && from != 0 && from < to) {
+ value = ",";
+ }
+
+ for (int i = from; i < to; i++) {
+ value += arguments[i];
+ if (i != to - 1) {
+ value += ',';
+ }
+ }
+ return value;
+}
+
+// Return spaces or tabs which starts line e.g. `\t\tmove_this` will return `\t\t`
+String ProjectConverter3To4::get_starting_space(const String &line) const {
+ String empty_space;
+ int current_character = 0;
+
+ if (line.is_empty()) {
+ return empty_space;
+ }
+
+ if (line[0] == ' ') {
+ while (current_character < line.size()) {
+ if (line[current_character] == ' ') {
+ empty_space += ' ';
+ current_character++;
+ } else {
+ break;
+ }
+ }
+ }
+ if (line[0] == '\t') {
+ while (current_character < line.size()) {
+ if (line[current_character] == '\t') {
+ empty_space += '\t';
+ current_character++;
+ } else {
+ break;
+ }
+ }
+ }
+ return empty_space;
+}
+
+// Return object which execute specific function
+// e.g. in `var roman = kieliszek.funkcja()` to this function is passed everything before function which we want to check
+// so it is `var roman = kieliszek.` and this function return `kieliszek.`
+String ProjectConverter3To4::get_object_of_execution(const String &line) const {
+ int end = line.size() - 1; // Last one is \0
+ int start = end - 1;
+
+ while (start >= 0) {
+ char32_t character = line[start];
+ if ((character >= 'A' && character <= 'Z') || (character >= 'a' && character <= 'z') || character == '.' || character == '_') {
+ if (start == 0) {
+ break;
+ }
+ start--;
+ continue;
+ } else {
+ start++; // Found invalid character, needs to be ignored
+ break;
+ }
+ }
+ return line.substr(start, (end - start));
+}
+
+void ProjectConverter3To4::rename_enums(String &file_content) {
+ int current_index = 0;
+
+ // Rename colors
+ if (file_content.find("Color.") != -1) {
+ while (colors_renames[current_index][0]) {
+ RegEx reg = RegEx(String("\\bColor.") + colors_renames[current_index][0] + "\\b");
+ CRASH_COND(!reg.is_valid());
+ file_content = reg.sub(file_content, String("Color.") + colors_renames[current_index][1], true);
+ current_index++;
+ }
+ }
+};
+
+Vector<String> ProjectConverter3To4::check_for_rename_enums(Vector<String> &file_content) {
+ int current_index = 0;
+
+ Vector<String> found_things;
+
+ // Rename colors
+ if (file_content.find("Color.") != -1) {
+ while (colors_renames[current_index][0]) {
+ RegEx reg = RegEx(String("\\bColor.") + colors_renames[current_index][0] + "\\b");
+ CRASH_COND(!reg.is_valid());
+
+ int current_line = 1;
+ for (String &line : file_content) {
+ Array reg_match = reg.search_all(line);
+ if (reg_match.size() > 0) {
+ found_things.append(line_formatter(current_line, colors_renames[current_index][0], colors_renames[current_index][1], line));
+ }
+ current_line++;
+ }
+ current_index++;
+ }
+ }
+
+ return found_things;
+}
+
+void ProjectConverter3To4::rename_classes(String &file_content) {
+ int current_index = 0;
+
+ // TODO Maybe it is better way to not rename gd, tscn and other files which are named are classes
+ while (class_renames[current_index][0]) {
+ // Begin renaming workaround `Resource.gd` -> `RefCounter.gd`
+ RegEx reg_before = RegEx(String("\\b") + class_renames[current_index][0] + ".tscn\\b");
+ CRASH_COND(!reg_before.is_valid());
+ file_content = reg_before.sub(file_content, "TEMP_RENAMED_CLASS.tscn", true);
+ RegEx reg_before2 = RegEx(String("\\b") + class_renames[current_index][0] + ".gd\\b");
+ CRASH_COND(!reg_before2.is_valid());
+ file_content = reg_before2.sub(file_content, "TEMP_RENAMED_CLASS.gd", true);
+ RegEx reg_before3 = RegEx(String("\\b") + class_renames[current_index][0] + ".shader\\b");
+ CRASH_COND(!reg_before3.is_valid());
+ file_content = reg_before3.sub(file_content, "TEMP_RENAMED_CLASS.gd", true);
+ // End
+
+ RegEx reg = RegEx(String("\\b") + class_renames[current_index][0] + "\\b");
+ CRASH_COND(!reg.is_valid());
+ file_content = reg.sub(file_content, class_renames[current_index][1], true);
+
+ // Begin renaming workaround `Resource.gd` -> `RefCounter.gd`
+ RegEx reg_after = RegEx("\\bTEMP_RENAMED_CLASS.tscn\\b");
+ CRASH_COND(!reg_after.is_valid());
+ file_content = reg_after.sub(file_content, String(class_renames[current_index][0]) + ".tscn", true);
+ RegEx reg_after2 = RegEx("\\bTEMP_RENAMED_CLASS.gd\\b");
+ CRASH_COND(!reg_after2.is_valid());
+ file_content = reg_after2.sub(file_content, String(class_renames[current_index][0]) + ".gd", true);
+ RegEx reg_after3 = RegEx("\\bTEMP_RENAMED_CLASS.gd\\b");
+ CRASH_COND(!reg_after3.is_valid());
+ file_content = reg_after3.sub(file_content, String(class_renames[current_index][0]) + ".shader", true);
+ // End
+
+ current_index++;
+ }
+
+ // OS.get_ticks_msec -> Time.get_ticks_msec
+ RegEx reg_time1 = RegEx("OS.get_ticks_msec");
+ CRASH_COND(!reg_time1.is_valid());
+ file_content = reg_time1.sub(file_content, "Time.get_ticks_msec", true);
+ RegEx reg_time2 = RegEx("OS.get_ticks_usec");
+ CRASH_COND(!reg_time2.is_valid());
+ file_content = reg_time2.sub(file_content, "Time.get_ticks_usec", true);
+};
+
+Vector<String> ProjectConverter3To4::check_for_rename_classes(Vector<String> &file_content) {
+ int current_index = 0;
+
+ Vector<String> found_things;
+
+ while (class_renames[current_index][0]) {
+ RegEx reg_before = RegEx(String("\\b") + class_renames[current_index][0] + ".tscn\\b");
+ CRASH_COND(!reg_before.is_valid());
+ RegEx reg_before2 = RegEx(String("\\b") + class_renames[current_index][0] + ".gd\\b");
+ CRASH_COND(!reg_before2.is_valid());
+
+ RegEx reg = RegEx(String("\\b") + class_renames[current_index][0] + "\\b");
+ CRASH_COND(!reg.is_valid());
+
+ int current_line = 1;
+ for (String &line : file_content) {
+ line = reg_before.sub(line, "TEMP_RENAMED_CLASS.tscn", true);
+ line = reg_before2.sub(line, "TEMP_RENAMED_CLASS.gd", true);
+
+ Array reg_match = reg.search_all(line);
+ if (reg_match.size() > 0) {
+ found_things.append(line_formatter(current_line, class_renames[current_index][0], class_renames[current_index][1], line));
+ }
+ current_line++;
+ }
+ current_index++;
+ }
+
+ // TODO OS -> TIME
+ int current_line = 1;
+ RegEx reg_time1 = RegEx("OS.get_ticks_msec");
+ CRASH_COND(!reg_time1.is_valid());
+ RegEx reg_time2 = RegEx("OS.get_ticks_usec");
+ CRASH_COND(!reg_time2.is_valid());
+ for (String &line : file_content) {
+ String old = line;
+
+ line = reg_time1.sub(line, "Time.get_ticks_msec", true);
+ line = reg_time2.sub(line, "Time.get_ticks_usec", true);
+
+ if (old != line) {
+ found_things.append(simple_line_formatter(current_line, old, line));
+ }
+ current_line++;
+ }
+ return found_things;
+}
+
+void ProjectConverter3To4::rename_gdscript_functions(String &file_content) {
+ // Custom renaming, each rule needs to be set manually
+ // Don't forget to put validate each rule in validate_conversion function
+ Vector<String> lines = file_content.split("\n");
+
+ RegEx reg_is_empty = RegEx("\\bempty\\(");
+ RegEx reg_super = RegEx("([\t ])\\.([a-zA-Z_])");
+ RegEx reg_json_to = RegEx("\\bto_json\\b");
+ RegEx reg_json_parse = RegEx("([\t]{0,})([^\n]+)parse_json\\(([^\n]+)");
+ RegEx reg_json_non_new = RegEx("([\t]{0,})([^\n]+)JSON\\.parse\\(([^\n]+)");
+ RegEx reg_export = RegEx("export\\(([a-zA-Z0-9_]+)\\)[ ]+var[ ]+([a-zA-Z0-9_]+)");
+ RegEx reg_export_advanced = RegEx("export\\(([^)^\n]+)\\)[ ]+var[ ]+([a-zA-Z0-9_]+)([^\n]+)");
+ RegEx reg_setget_setget = RegEx("var[ ]+([a-zA-Z0-9_]+)([^\n]+)setget[ \t]+([a-zA-Z0-9_]+)[ \t]*,[ \t]*([a-zA-Z0-9_]+)");
+ RegEx reg_setget_set = RegEx("var[ ]+([a-zA-Z0-9_]+)([^\n]+)setget[ \t]+([a-zA-Z0-9_]+)[ \t]*[,]*[^a-z^A-Z^0-9^_]*$");
+ RegEx reg_setget_get = RegEx("var[ ]+([a-zA-Z0-9_]+)([^\n]+)setget[ \t]+,[ \t]*([a-zA-Z0-9_]+)[ \t]*$");
+ RegEx reg_join = RegEx("([\\(\\)a-zA-Z0-9_]+)\\.join\\(([^\n^\\)]+)\\)");
+ RegEx reg_mixed_tab_space = RegEx("([\t]+)([ ]+)");
+ RegEx reg_image_lock = RegEx("([a-zA-Z0-9_\\.]+)\\.lock\\(\\)");
+ RegEx reg_image_unlock = RegEx("([a-zA-Z0-9_\\.]+)\\.unlock\\(\\)");
+ RegEx reg_os_fullscreen = RegEx("OS.window_fullscreen[= ]+([^#^\n]+)");
+
+ CRASH_COND(!reg_is_empty.is_valid());
+ CRASH_COND(!reg_super.is_valid());
+ CRASH_COND(!reg_json_to.is_valid());
+ CRASH_COND(!reg_json_parse.is_valid());
+ CRASH_COND(!reg_json_non_new.is_valid());
+ CRASH_COND(!reg_export.is_valid());
+ CRASH_COND(!reg_export_advanced.is_valid());
+ CRASH_COND(!reg_setget_setget.is_valid());
+ CRASH_COND(!reg_setget_set.is_valid());
+ CRASH_COND(!reg_setget_get.is_valid());
+ CRASH_COND(!reg_join.is_valid());
+ CRASH_COND(!reg_mixed_tab_space.is_valid());
+ CRASH_COND(!reg_image_lock.is_valid());
+ CRASH_COND(!reg_image_unlock.is_valid());
+ CRASH_COND(!reg_os_fullscreen.is_valid());
+
+ for (String &line : lines) {
+ if (line.find("mtx") == -1 && line.find("mutex") == -1 && line.find("Mutex") == -1) {
+ line = reg_image_lock.sub(line, "false # $1.lock() # TODOConverter40, image no longer require locking, `false` helps to not broke one line if/else, so can be freely removed", true);
+ line = reg_image_unlock.sub(line, "false # $1.unlock() # TODOConverter40, image no longer require locking, `false` helps to not broke one line if/else, so can be freely removed", true);
+ }
+
+ // Mixed use of spaces and tabs - tabs as first - TODO, this probably is problem problem, but not sure
+ line = reg_mixed_tab_space.sub(line, "$1", true);
+
+ // PackedStringArray(req_godot).join('.') -> '.'.join(PackedStringArray(req_godot)) PoolStringArray
+ line = reg_join.sub(line, "$2.join($1)", true);
+
+ // -- empty() -> is_empty() Pool*Array
+ line = reg_is_empty.sub(line, "is_empty(", true);
+
+ // -- \t.func() -> \tsuper.func() Object
+ line = reg_super.sub(line, "$1super.$2", true); // TODO, not sure if possible, but for now this brake String text e.g. "Choosen .gitignore" -> "Choosen super.gitignore"
+
+ // -- JSON.parse(a) -> JSON.new().parse(a) etc. JSON
+ line = reg_json_non_new.sub(line, "$1var test_json_conv = JSON.new()\n$1test_json_conv.parse($3\n$1$2test_json_conv.get_data()", true);
+
+ // -- to_json(a) -> JSON.new().stringify(a) Object
+ line = reg_json_to.sub(line, "JSON.new().stringify", true);
+
+ // -- parse_json(a) -> JSON.get_data() etc. Object
+ line = reg_json_parse.sub(line, "$1var test_json_conv = JSON.new()\n$1test_json_conv.parse($3\n$1$2test_json_conv.get_data()", true);
+
+ // -- get_node(@ -> get_node( Node
+ line = line.replace("get_node(@", "get_node(");
+
+ // export(float) var lifetime = 3.0 -> export var lifetime: float = 3.0 GDScript
+ line = reg_export.sub(line, "export var $2: $1");
+
+ // export(String, 'AnonymousPro', 'CourierPrime') var _font_name = 'AnonymousPro' -> export var _font_name = 'AnonymousPro' #(String, 'AnonymousPro', 'CourierPrime') GDScript
+ line = reg_export_advanced.sub(line, "export var $2$3 # ($1)");
+
+ // Setget Setget
+ line = reg_setget_setget.sub(line, "var $1$2:\n\tget:\n\t\treturn $1 # TODOConverter40 Copy here content of $4\n\tset(mod_value):\n\t\tmod_value # TODOConverter40 Copy here content of $3", true);
+
+ // Setget set
+ line = reg_setget_set.sub(line, "var $1$2:\n\tget:\n\t\treturn $1 # TODOConverter40 Non existent get function \n\tset(mod_value):\n\t\tmod_value # TODOConverter40 Copy here content of $3", true);
+
+ // Setget get
+ line = reg_setget_get.sub(line, "var $1$2:\n\tget:\n\t\treturn $1 # TODOConverter40 Copy here content of $3 \n\tset(mod_value):\n\t\tmod_value # TODOConverter40 Non existent set function", true);
+
+ // OS.window_fullscreen = true -> ProjectSettings.set("display/window/size/fullscreen",true)
+ line = reg_os_fullscreen.sub(line, "ProjectSettings.set(\"display/window/size/fullscreen\", $1)", true);
+
+ // -- r.move_and_slide( a, b, c, d, e ) -> r.set_motion_velocity(a) ... r.move_and_slide() KinematicBody
+ if (line.find("move_and_slide(") != -1) {
+ int start = line.find("move_and_slide(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ String base_obj = get_object_of_execution(line.substr(0, start));
+ String starting_space = get_starting_space(line);
+
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() >= 1) {
+ String line_new;
+
+ // motion_velocity
+ line_new += starting_space + base_obj + "set_motion_velocity(" + parts[0] + ")\n";
+
+ // up_direction
+ if (parts.size() >= 2) {
+ line_new += starting_space + base_obj + "set_up_direction(" + parts[1] + ")\n";
+ }
+
+ // stop_on_slope
+ if (parts.size() >= 3) {
+ line_new += starting_space + base_obj + "set_floor_stop_on_slope_enabled(" + parts[2] + ")\n";
+ }
+
+ // max_slides
+ if (parts.size() >= 4) {
+ line_new += starting_space + base_obj + "set_max_slides(" + parts[3] + ")\n";
+ }
+
+ // floor_max_angle
+ if (parts.size() >= 5) {
+ line_new += starting_space + base_obj + "set_floor_max_angle(" + parts[4] + ")\n";
+ }
+
+ // infiinite_interia
+ if (parts.size() >= 6) {
+ line_new += starting_space + "# TODOConverter40 infinite_inertia were removed in Godot 4.0 - previous value `" + parts[5] + "`\n";
+ }
+
+ line = line_new + line.substr(0, start) + "move_and_slide()" + line.substr(end + start);
+ }
+ }
+ }
+
+ // -- r.move_and_slide_with_snap( a, b, c, d, e ) -> r.set_motion_velocity(a) ... r.move_and_slide() KinematicBody
+ if (line.find("move_and_slide_with_snap(") != -1) {
+ int start = line.find("move_and_slide_with_snap(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ String base_obj = get_object_of_execution(line.substr(0, start));
+ String starting_space = get_starting_space(line);
+
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() >= 1) {
+ String line_new;
+
+ // motion_velocity
+ line_new += starting_space + base_obj + "set_motion_velocity(" + parts[0] + ")\n";
+
+ // snap
+ if (parts.size() >= 2) {
+ line_new += starting_space + "# TODOConverter40 looks that snap in Godot 4.0 is float, not vector like in Godot 3 - previous value `" + parts[1] + "`\n";
+ }
+
+ // up_direction
+ if (parts.size() >= 3) {
+ line_new += starting_space + base_obj + "set_up_direction(" + parts[2] + ")\n";
+ }
+
+ // stop_on_slope
+ if (parts.size() >= 4) {
+ line_new += starting_space + base_obj + "set_floor_stop_on_slope_enabled(" + parts[3] + ")\n";
+ }
+
+ // max_slides
+ if (parts.size() >= 5) {
+ line_new += starting_space + base_obj + "set_max_slides(" + parts[4] + ")\n";
+ }
+
+ // floor_max_angle
+ if (parts.size() >= 6) {
+ line_new += starting_space + base_obj + "set_floor_max_angle(" + parts[5] + ")\n";
+ }
+
+ // infiinite_interia
+ if (parts.size() >= 7) {
+ line_new += starting_space + "# TODOConverter40 infinite_inertia were removed in Godot 4.0 - previous value `" + parts[6] + "`\n";
+ }
+
+ line = line_new + line.substr(0, start) + "move_and_slide()" + line.substr(end + start);
+ }
+ }
+ }
+
+ // -- sort_custom( a , b ) -> sort_custom(Callable( a , b )) Object
+ if (line.find("sort_custom(") != -1) {
+ int start = line.find("sort_custom(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() == 2) {
+ line = line.substr(0, start) + "sort_custom(Callable(" + parts[0] + "," + parts[1] + "))" + line.substr(end + start);
+ }
+ }
+ }
+
+ // -- list_dir_begin( ) -> list_dir_begin() Object
+ if (line.find("list_dir_begin(") != -1) {
+ int start = line.find("list_dir_begin(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ line = line.substr(0, start) + "list_dir_begin() " + line.substr(end + start) + "# TODOGODOT4 fill missing arguments https://github.com/godotengine/godot/pull/40547";
+ }
+ }
+
+ // -- draw_line(1,2,3,4,5) -> draw_line(1,2,3,4) CanvasItem
+ if (line.find("draw_line(") != -1) {
+ int start = line.find("draw_line(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() == 5) {
+ line = line.substr(0, start) + "draw_line(" + parts[0] + "," + parts[1] + "," + parts[2] + "," + parts[3] + ")" + line.substr(end + start);
+ }
+ }
+ }
+
+ // -- func c(var a, var b) -> func c(a, b)
+ if (line.find("func ") != -1 && line.find("var ") != -1) {
+ int start = line.find("func ");
+ start = line.substr(start).find("(") + start;
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+
+ String start_string = line.substr(0, start) + "(";
+ for (int i = 0; i < parts.size(); i++) {
+ start_string += parts[i].strip_edges().trim_prefix("var ");
+ if (i != parts.size() - 1) {
+ start_string += ", ";
+ }
+ }
+ line = start_string + ")" + line.substr(end + start);
+ }
+ }
+
+ // -- yield(this, \"timeout\") -> await this.timeout GDScript
+ if (line.find("yield(") != -1) {
+ int start = line.find("yield(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() == 2) {
+ line = line.substr(0, start) + "await " + parts[0] + "." + parts[1].replace("\"", "").replace("\'", "").replace(" ", "") + line.substr(end + start);
+ }
+ }
+ }
+
+ // -- parse_json( AA ) -> TODO Object
+ if (line.find("parse_json(") != -1) {
+ int start = line.find("parse_json(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ line = line.substr(0, start) + "JSON.new().stringify(" + connect_arguments(parts, 0) + ")" + line.substr(end + start);
+ }
+ }
+
+ // -- .xform(Vector3(a,b,c)) -> * Vector3(a,b,c) Transform
+ if (line.find(".xform(") != -1) {
+ int start = line.find(".xform(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() == 1) {
+ line = line.substr(0, start) + " * " + parts[0] + line.substr(end + start);
+ }
+ }
+ }
+
+ // -- .xform_inv(Vector3(a,b,c)) -> * Vector3(a,b,c) Transform
+ if (line.find(".xform_inv(") != -1) {
+ int start = line.find(".xform_inv(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ String object_exec = get_object_of_execution(line.substr(0, start));
+ if (line.find(object_exec + ".xform") != -1) {
+ int start2 = line.find(object_exec + ".xform");
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() == 1) {
+ line = line.substr(0, start2) + parts[0] + " * " + object_exec + line.substr(end + start);
+ }
+ }
+ }
+ }
+
+ // -- connect(,,,things) -> connect(,Callable(,),things) Object
+ if (line.find("connect(") != -1) {
+ int start = line.find("connect(");
+ // Protection from disconnect
+ if (start == 0 || line.get(start - 1) != 's') {
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() >= 3) {
+ line = line.substr(0, start) + "connect(" + parts[0] + ",Callable(" + parts[1] + "," + parts[2] + ")" + connect_arguments(parts, 3) + ")" + line.substr(end + start);
+ }
+ }
+ }
+ }
+ // -- disconnect(a,b,c) -> disconnect(a,Callable(b,c)) Object
+ if (line.find("disconnect(") != -1) {
+ int start = line.find("disconnect(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() == 3) {
+ line = line.substr(0, start) + "disconnect(" + parts[0] + ",Callable(" + parts[1] + "," + parts[2] + "))" + line.substr(end + start);
+ }
+ }
+ }
+ // -- is_connected(a,b,c) -> is_connected(a,Callable(b,c)) Object
+ if (line.find("is_connected(") != -1) {
+ int start = line.find("is_connected(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() == 3) {
+ line = line.substr(0, start) + "is_connected(" + parts[0] + ",Callable(" + parts[1] + "," + parts[2] + "))" + line.substr(end + start);
+ }
+ }
+ }
+ // -- start(a,b,c) -> start(a,Callable(b,c)) Thread
+ if (line.find("start(") != -1) {
+ int start = line.find("start(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() >= 3) {
+ line = line.substr(0, start) + "start(" + parts[0] + ",Callable(" + parts[1] + "," + parts[2] + ")" + connect_arguments(parts, 3) + ")" + line.substr(end + start);
+ }
+ }
+ }
+ // -- func _init(p_x:int)->void: -> func _init(p_x:int): Object # https://github.com/godotengine/godot/issues/50589
+ if (line.find(" _init(") != -1) {
+ int start = line.find(" _init(");
+ int end = line.rfind(":") + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ line = line.substr(0, start) + " _init(" + connect_arguments(parts, 0) + "):" + line.substr(end + start);
+ }
+ }
+ // assert(speed < 20, str(randi()%10)) -> assert(speed < 20) #,str(randi()%10)) GDScript - GDScript bug constant message
+ if (line.find("assert(") != -1) {
+ int start = line.find("assert(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() == 2) {
+ line = line.substr(0, start) + "assert(" + parts[0] + ") " + line.substr(end + start) + "#," + parts[1] + ")";
+ }
+ }
+ }
+ // create_from_image(aa, bb) -> create_from_image(aa) #, bb ImageTexture
+ if (line.find("create_from_image(") != -1) {
+ int start = line.find("create_from_image(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() == 2) {
+ line = line.substr(0, start) + "create_from_image(" + parts[0] + ") " + "#," + parts[1] + line.substr(end + start);
+ }
+ }
+ }
+ // set_cell_item(a, b, c, d ,e) -> set_cell_item(Vector3(a, b, c), d ,e)
+ if (line.find("set_cell_item(") != -1) {
+ int start = line.find("set_cell_item(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() > 2) {
+ line = line.substr(0, start) + "set_cell_item( Vector3(" + parts[0] + "," + parts[1] + "," + parts[2] + ") " + connect_arguments(parts, 3) + ")" + line.substr(end + start);
+ }
+ }
+ }
+ // get_cell_item(a, b, c) -> get_cell_item(Vector3i(a, b, c))
+ if (line.find("get_cell_item(") != -1) {
+ int start = line.find("get_cell_item(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() == 3) {
+ line = line.substr(0, start) + "get_cell_item(Vector3i(" + parts[0] + "," + parts[1] + "," + parts[2] + "))" + line.substr(end + start);
+ }
+ }
+ }
+ // get_cell_item_orientation(a, b, c) -> get_cell_item_orientation(Vector3i(a, b, c))
+ if (line.find("get_cell_item_orientation(") != -1) {
+ int start = line.find("get_cell_item_orientation(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() == 3) {
+ line = line.substr(0, start) + "get_cell_item_orientation(Vector3i(" + parts[0] + "," + parts[1] + "," + parts[2] + "))" + line.substr(end + start);
+ }
+ }
+ }
+
+ // TODO - add_surface_from_arrays - additional 4 argument
+ // ENetMultiplayerPeer.create_client - additional argument
+ // ENetMultiplayerPeer.create_server - additional argument
+ // Translation.get_message (and similar)
+ // TreeItem.move_after() - new argument
+ // TreeItem.move_before() - new argument
+ // UndoRedo.commit_action() - additional argument
+ }
+
+ // Collect vector to string
+ file_content = "";
+ for (int i = 0; i < lines.size(); i++) {
+ file_content += lines[i];
+
+ if (i != lines.size() - 1) {
+ file_content += "\n";
+ }
+ }
+};
+
+// This is almost 1:1 copy of function which rename gdscript functions
+Vector<String> ProjectConverter3To4::check_for_rename_gdscript_functions(Vector<String> &file_content) {
+ int current_line = 1;
+
+ Vector<String> found_things;
+
+ RegEx reg_is_empty = RegEx("\\bempty\\(");
+ RegEx reg_super = RegEx("([\t ])\\.([a-zA-Z_])");
+ RegEx reg_json_to = RegEx("\\bto_json\\b");
+ RegEx reg_json_parse = RegEx("([\t]{0,})([^\n]+)parse_json\\(([^\n]+)");
+ RegEx reg_json_non_new = RegEx("([\t]{0,})([^\n]+)JSON\\.parse\\(([^\n]+)");
+ RegEx reg_export = RegEx("export\\(([a-zA-Z0-9_]+)\\)[ ]+var[ ]+([a-zA-Z0-9_]+)");
+ RegEx reg_export_advanced = RegEx("export\\(([^)^\n]+)\\)[ ]+var[ ]+([a-zA-Z0-9_]+)([^\n]+)");
+ RegEx reg_setget_setget = RegEx("var[ ]+([a-zA-Z0-9_]+)([^\n]+)setget[ \t]+([a-zA-Z0-9_]+)[ \t]*,[ \t]*([a-zA-Z0-9_]+)");
+ RegEx reg_setget_set = RegEx("var[ ]+([a-zA-Z0-9_]+)([^\n]+)setget[ \t]+([a-zA-Z0-9_]+)[ \t]*[,]*[^a-z^A-Z^0-9^_]*$");
+ RegEx reg_setget_get = RegEx("var[ ]+([a-zA-Z0-9_]+)([^\n]+)setget[ \t]+,[ \t]*([a-zA-Z0-9_]+)[ \t]*$");
+ RegEx reg_join = RegEx("([\\(\\)a-zA-Z0-9_]+)\\.join\\(([^\n^\\)]+)\\)");
+ RegEx reg_mixed_tab_space = RegEx("([\t]+)([ ]+)");
+ RegEx reg_image_lock = RegEx("([a-zA-Z0-9_\\.]+)\\.lock\\(\\)");
+ RegEx reg_image_unlock = RegEx("([a-zA-Z0-9_\\.]+)\\.unlock\\(\\)");
+ RegEx reg_os_fullscreen = RegEx("OS.window_fullscreen[= ]+([^#^\n]+)");
+
+ CRASH_COND(!reg_is_empty.is_valid());
+ CRASH_COND(!reg_super.is_valid());
+ CRASH_COND(!reg_json_to.is_valid());
+ CRASH_COND(!reg_json_parse.is_valid());
+ CRASH_COND(!reg_json_non_new.is_valid());
+ CRASH_COND(!reg_export.is_valid());
+ CRASH_COND(!reg_export_advanced.is_valid());
+ CRASH_COND(!reg_setget_setget.is_valid());
+ CRASH_COND(!reg_setget_set.is_valid());
+ CRASH_COND(!reg_setget_get.is_valid());
+ CRASH_COND(!reg_join.is_valid());
+ CRASH_COND(!reg_mixed_tab_space.is_valid());
+ CRASH_COND(!reg_image_lock.is_valid());
+ CRASH_COND(!reg_image_unlock.is_valid());
+ CRASH_COND(!reg_os_fullscreen.is_valid());
+
+ for (String &line : file_content) {
+ String old_line = line;
+
+ if (line.find("mtx") == -1 && line.find("mutex") == -1 && line.find("Mutex") == -1) {
+ line = reg_image_lock.sub(line, "false # $1.lock() # TODOConverter40, image no longer require locking, `false` helps to not broke one line if/else, so can be freely removed", true);
+ line = reg_image_unlock.sub(line, "false # $1.unlock() # TODOConverter40, image no longer require locking, `false` helps to not broke one line if/else, so can be freely removed", true);
+ }
+
+ // Mixed use of spaces and tabs - tabs as first - TODO, this probably is problem problem, but not sure
+ line = reg_mixed_tab_space.sub(line, "$1", true);
+
+ // PackedStringArray(req_godot).join('.') -> '.'.join(PackedStringArray(req_godot)) PoolStringArray
+ line = reg_join.sub(line, "$2.join($1)", true);
+
+ // -- empty() -> is_empty() Pool*Array
+ line = reg_is_empty.sub(line, "is_empty(", true);
+
+ // -- \t.func() -> \tsuper.func() Object
+ line = reg_super.sub(line, "$1super.$2", true); // TODO, not sure if possible, but for now this brake String text e.g. "Choosen .gitignore" -> "Choosen super.gitignore"
+
+ // -- JSON.parse(a) -> JSON.new().parse(a) etc. JSON
+ line = reg_json_non_new.sub(line, "$1var test_json_conv = JSON.new()\n$1test_json_conv.parse($3\n$1$2test_json_conv.get_data()", true);
+
+ // -- to_json(a) -> JSON.new().stringify(a) Object
+ line = reg_json_to.sub(line, "JSON.new().stringify", true);
+
+ // -- parse_json(a) -> JSON.get_data() etc. Object
+ line = reg_json_parse.sub(line, "$1var test_json_conv = JSON.new()\n$1test_json_conv.parse($3\n$1$2test_json_conv.get_data()", true);
+
+ // -- get_node(@ -> get_node( Node
+ line = line.replace("get_node(@", "get_node(");
+
+ // export(float) var lifetime = 3.0 -> export var lifetime: float = 3.0 GDScript
+ line = reg_export.sub(line, "export var $2: $1");
+
+ // export(String, 'AnonymousPro', 'CourierPrime') var _font_name = 'AnonymousPro' -> export var _font_name = 'AnonymousPro' #(String, 'AnonymousPro', 'CourierPrime') GDScript
+ line = reg_export_advanced.sub(line, "export var $2$3 # ($1)");
+
+ // Setget Setget
+ line = reg_setget_setget.sub(line, "var $1$2:\n\tget:\n\t\treturn $1 # TODOConverter40 Copy here content of $4\n\tset(mod_value):\n\t\tmod_value # TODOConverter40 Copy here content of $3", true);
+
+ // Setget set
+ line = reg_setget_set.sub(line, "var $1$2:\n\tget:\n\t\treturn $1 # TODOConverter40 Non existent get function \n\tset(mod_value):\n\t\tmod_value # TODOConverter40 Copy here content of $3", true);
+
+ // Setget get
+ line = reg_setget_get.sub(line, "var $1$2:\n\tget:\n\t\treturn $1 # TODOConverter40 Copy here content of $3 \n\tset(mod_value):\n\t\tmod_value # TODOConverter40 Non existent set function", true);
+
+ // OS.window_fullscreen = true -> ProjectSettings.set("display/window/size/fullscreen",true)
+ line = reg_os_fullscreen.sub(line, "ProjectSettings.set(\"display/window/size/fullscreen\", $1)", true);
+
+ // -- r.move_and_slide( a, b, c, d, e ) -> r.set_motion_velocity(a) ... r.move_and_slide() KinematicBody
+ if (line.find("move_and_slide(") != -1) {
+ int start = line.find("move_and_slide(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ String base_obj = get_object_of_execution(line.substr(0, start));
+ String starting_space = get_starting_space(line);
+
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() >= 1) {
+ String line_new;
+
+ // motion_velocity
+ line_new += starting_space + base_obj + "set_motion_velocity(" + parts[0] + ")\n";
+
+ // up_direction
+ if (parts.size() >= 2) {
+ line_new += starting_space + base_obj + "set_up_direction(" + parts[1] + ")\n";
+ }
+
+ // stop_on_slope
+ if (parts.size() >= 3) {
+ line_new += starting_space + base_obj + "set_floor_stop_on_slope_enabled(" + parts[2] + ")\n";
+ }
+
+ // max_slides
+ if (parts.size() >= 4) {
+ line_new += starting_space + base_obj + "set_max_slides(" + parts[3] + ")\n";
+ }
+
+ // floor_max_angle
+ if (parts.size() >= 5) {
+ line_new += starting_space + base_obj + "set_floor_max_angle(" + parts[4] + ")\n";
+ }
+
+ // infiinite_interia
+ if (parts.size() >= 6) {
+ line_new += starting_space + "# TODOConverter40 infinite_inertia were removed in Godot 4.0 - previous value `" + parts[5] + "`\n";
+ }
+
+ line = line_new + line.substr(0, start) + "move_and_slide()" + line.substr(end + start);
+ }
+ }
+ }
+
+ // -- r.move_and_slide_with_snap( a, b, c, d, e ) -> r.set_motion_velocity(a) ... r.move_and_slide() KinematicBody
+ if (line.find("move_and_slide_with_snap(") != -1) {
+ int start = line.find("move_and_slide_with_snap(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ String base_obj = get_object_of_execution(line.substr(0, start));
+ String starting_space = get_starting_space(line);
+
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() >= 1) {
+ String line_new;
+
+ // motion_velocity
+ line_new += starting_space + base_obj + "set_motion_velocity(" + parts[0] + ")\n";
+
+ // snap
+ if (parts.size() >= 2) {
+ line_new += starting_space + "# TODOConverter40 looks that snap in Godot 4.0 is float, not vector like in Godot 3 - previous value `" + parts[1] + "`\n";
+ }
+
+ // up_direction
+ if (parts.size() >= 3) {
+ line_new += starting_space + base_obj + "set_up_direction(" + parts[2] + ")\n";
+ }
+
+ // stop_on_slope
+ if (parts.size() >= 4) {
+ line_new += starting_space + base_obj + "set_floor_stop_on_slope_enabled(" + parts[3] + ")\n";
+ }
+
+ // max_slides
+ if (parts.size() >= 5) {
+ line_new += starting_space + base_obj + "set_max_slides(" + parts[4] + ")\n";
+ }
+
+ // floor_max_angle
+ if (parts.size() >= 6) {
+ line_new += starting_space + base_obj + "set_floor_max_angle(" + parts[5] + ")\n";
+ }
+
+ // infiinite_interia
+ if (parts.size() >= 7) {
+ line_new += starting_space + "# TODOConverter40 infinite_inertia were removed in Godot 4.0 - previous value `" + parts[6] + "`\n";
+ }
+
+ line = line_new + line.substr(0, start) + "move_and_slide()" + line.substr(end + start);
+ }
+ }
+ }
+
+ // -- sort_custom( a , b ) -> sort_custom(Callable( a , b )) Object
+ if (line.find("sort_custom(") != -1) {
+ int start = line.find("sort_custom(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() == 2) {
+ line = line.substr(0, start) + "sort_custom(Callable(" + parts[0] + "," + parts[1] + "))" + line.substr(end + start);
+ }
+ }
+ }
+
+ // -- draw_line(1,2,3,4,5) -> draw_line(1,2,3,4) CanvasItem
+ if (line.find("draw_line(") != -1) {
+ int start = line.find("draw_line(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() == 5) {
+ line = line.substr(0, start) + "draw_line(" + parts[0] + "," + parts[1] + "," + parts[2] + "," + parts[3] + ")" + line.substr(end + start);
+ }
+ }
+ }
+
+ // -- func c(var a, var b) -> func c(a, b)
+ if (line.find("func ") != -1 && line.find("var ") != -1) {
+ int start = line.find("func ");
+ start = line.substr(start).find("(") + start;
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+
+ String start_string = line.substr(0, start) + "(";
+ for (int i = 0; i < parts.size(); i++) {
+ start_string += parts[i].strip_edges().trim_prefix("var ");
+ if (i != parts.size() - 1) {
+ start_string += ", ";
+ }
+ }
+ line = start_string + ")" + line.substr(end + start);
+ }
+ }
+
+ // -- yield(this, \"timeout\") -> await this.timeout GDScript
+ if (line.find("yield(") != -1) {
+ int start = line.find("yield(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() == 2) {
+ line = line.substr(0, start) + "await " + parts[0] + "." + parts[1].replace("\"", "").replace("\'", "").replace(" ", "") + line.substr(end + start);
+ }
+ }
+ }
+
+ // -- parse_json( AA ) -> TODO Object
+ if (line.find("parse_json(") != -1) {
+ int start = line.find("parse_json(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ line = line.substr(0, start) + "JSON.new().stringify(" + connect_arguments(parts, 0) + ")" + line.substr(end + start);
+ }
+ }
+
+ // -- .xform(Vector3(a,b,c)) -> * Vector3(a,b,c) Transform
+ if (line.find(".xform(") != -1) {
+ int start = line.find(".xform(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() == 1) {
+ line = line.substr(0, start) + " * " + parts[0] + line.substr(end + start);
+ }
+ }
+ }
+
+ // -- .xform_inv(Vector3(a,b,c)) -> / Vector3(a,b,c) Transform
+ if (line.find(".xform_inv(") != -1) {
+ int start = line.find(".xform_inv(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() == 1) {
+ line = line.substr(0, start) + " / " + parts[0] + line.substr(end + start);
+ }
+ }
+ }
+
+ // -- connect(,,,things) -> connect(,Callable(,),things) Object
+ if (line.find("connect(") != -1) {
+ int start = line.find("connect(");
+ // Protection from disconnect
+ if (start == 0 || line.get(start - 1) != 's') {
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() >= 3) {
+ line = line.substr(0, start) + "connect(" + parts[0] + ",Callable(" + parts[1] + "," + parts[2] + ")" + connect_arguments(parts, 3) + ")" + line.substr(end + start);
+ }
+ }
+ }
+ }
+ // -- disconnect(a,b,c) -> disconnect(a,Callable(b,c)) Object
+ if (line.find("disconnect(") != -1) {
+ int start = line.find("disconnect(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() == 3) {
+ line = line.substr(0, start) + "disconnect(" + parts[0] + ",Callable(" + parts[1] + "," + parts[2] + "))" + line.substr(end + start);
+ }
+ }
+ }
+ // -- is_connected(a,b,c) -> is_connected(a,Callable(b,c)) Object
+ if (line.find("is_connected(") != -1) {
+ int start = line.find("is_connected(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() == 3) {
+ line = line.substr(0, start) + "is_connected(" + parts[0] + ",Callable(" + parts[1] + "," + parts[2] + "))" + line.substr(end + start);
+ }
+ }
+ }
+ // -- start(a,b,c) -> start(a,Callable(b,c)) Thread
+ if (line.find("start(") != -1) {
+ int start = line.find("start(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() >= 3) {
+ line = line.substr(0, start) + "start(" + parts[0] + ",Callable(" + parts[1] + "," + parts[2] + ")" + connect_arguments(parts, 3) + ")" + line.substr(end + start);
+ }
+ }
+ }
+ // -- func _init(p_x:int)->void: -> func _init(p_x:int): Object # https://github.com/godotengine/godot/issues/50589
+ if (line.find(" _init(") != -1) {
+ int start = line.find(" _init(");
+ int end = line.rfind(":") + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ line = line.substr(0, start) + " _init(" + connect_arguments(parts, 0) + "):" + line.substr(end + start);
+ }
+ }
+ // assert(speed < 20, str(randi()%10)) -> assert(speed < 20) #,str(randi()%10)) GDScript - GDScript bug constant message
+ if (line.find("assert(") != -1) {
+ int start = line.find("assert(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() == 2) {
+ line = line.substr(0, start) + "assert(" + parts[0] + ") " + line.substr(end + start) + "#," + parts[1] + ")";
+ }
+ }
+ }
+ // create_from_image(aa, bb) -> create_from_image(aa) #, bb ImageTexture
+ if (line.find("create_from_image(") != -1) {
+ int start = line.find("create_from_image(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() == 2) {
+ line = line.substr(0, start) + "create_from_image(" + parts[0] + ") " + "#," + parts[1] + line.substr(end + start);
+ }
+ }
+ }
+ // set_cell_item(a, b, c, d ,e) -> set_cell_item(Vector3(a, b, c), d ,e)
+ if (line.find("set_cell_item(") != -1) {
+ int start = line.find("set_cell_item(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() > 2) {
+ line = line.substr(0, start) + "set_cell_item( Vector3(" + parts[0] + "," + parts[1] + "," + parts[2] + ") " + connect_arguments(parts, 3) + ")" + line.substr(end + start);
+ }
+ }
+ }
+ // get_cell_item(a, b, c) -> get_cell_item(Vector3i(a, b, c))
+ if (line.find("get_cell_item(") != -1) {
+ int start = line.find("get_cell_item(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() == 3) {
+ line = line.substr(0, start) + "get_cell_item(Vector3i(" + parts[0] + "," + parts[1] + "," + parts[2] + "))" + line.substr(end + start);
+ }
+ }
+ }
+ // get_cell_item_orientation(a, b, c) -> get_cell_item_orientation(Vector3i(a, b, c))
+ if (line.find("get_cell_item_orientation(") != -1) {
+ int start = line.find("get_cell_item_orientation(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() == 3) {
+ line = line.substr(0, start) + "get_cell_item_orientation(Vector3i(" + parts[0] + "," + parts[1] + "," + parts[2] + "))" + line.substr(end + start);
+ }
+ }
+ }
+
+ // TODO - add_surface_from_arrays - additional 4 argument
+ // ENetMultiplayerPeer.create_client - additional argument
+ // ENetMultiplayerPeer.create_server - additional argument
+ // Translation.get_message (and similar)
+ // TreeItem.move_after() - new argument
+ // TreeItem.move_before() - new argument
+ // UndoRedo.commit_action() - additional argument
+
+ if (old_line != line) {
+ found_things.append(simple_line_formatter(current_line, old_line, line));
+ }
+ }
+
+ return found_things;
+}
+
+void ProjectConverter3To4::rename_csharp_functions(String &file_content) {
+ // Custom renaming, each rule needs to be set manually
+ // Don't forget to put validate each rule in validate_conversion function
+ Vector<String> lines = file_content.split("\n");
+
+ for (String &line : lines) {
+ // TODO maybe this can be changed to normal rule
+ line = line.replace("OS.GetWindowSafeArea()", "DisplayServer.ScreenGetUsableRect()");
+
+ // -- Connect(,,,things) -> Connect(,Callable(,),things) Object
+ if (line.find("Connect(") != -1) {
+ int start = line.find("Connect(");
+ // Protection from disconnect
+ if (start == 0 || line.get(start - 1) != 's') {
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() >= 3) {
+ line = line.substr(0, start) + "Connect(" + parts[0] + ",new Callable(" + parts[1] + "," + parts[2] + ")" + connect_arguments(parts, 3) + ")" + line.substr(end + start);
+ }
+ }
+ }
+ }
+ // -- Disconnect(a,b,c) -> Disconnect(a,Callable(b,c)) Object
+ if (line.find("Disconnect(") != -1) {
+ int start = line.find("Disconnect(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() == 3) {
+ line = line.substr(0, start) + "Disconnect(" + parts[0] + ",new Callable(" + parts[1] + "," + parts[2] + "))" + line.substr(end + start);
+ }
+ }
+ }
+ // -- IsConnected(a,b,c) -> IsConnected(a,Callable(b,c)) Object
+ if (line.find("IsConnected(") != -1) {
+ int start = line.find("IsConnected(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() == 3) {
+ line = line.substr(0, start) + "IsConnected(" + parts[0] + ",new Callable(" + parts[1] + "," + parts[2] + "))" + line.substr(end + start);
+ }
+ }
+ }
+ }
+
+ // Collect vector to string
+ file_content = "";
+ for (int i = 0; i < lines.size(); i++) {
+ file_content += lines[i];
+
+ if (i != lines.size() - 1) {
+ file_content += "\n";
+ }
+ }
+};
+
+// This is almost 1:1 copy of function which rename gdscript functions
+Vector<String> ProjectConverter3To4::check_for_rename_csharp_functions(Vector<String> &file_content) {
+ int current_line = 1;
+
+ Vector<String> found_things;
+
+ for (String &line : file_content) {
+ String old_line = line;
+
+ // TODO maybe this can be changed to normal rule
+ line = line.replace("OS.GetWindowSafeArea()", "DisplayServer.ScreenGetUsableRect()");
+
+ // -- Connect(,,,things) -> connect(,Callable(,),things) Object
+ if (line.find("Connect(") != -1) {
+ int start = line.find("Connect(");
+ // Protection from disconnect
+ if (start == 0 || line.get(start - 1) != 's') {
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() >= 3) {
+ line = line.substr(0, start) + "Connect(" + parts[0] + ",new Callable(" + parts[1] + "," + parts[2] + ")" + connect_arguments(parts, 3) + ")" + line.substr(end + start);
+ }
+ }
+ }
+ }
+ // -- Disconnect(a,b,c) -> Disconnect(a,Callable(b,c)) Object
+ if (line.find("Disconnect(") != -1) {
+ int start = line.find("Disconnect(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() == 3) {
+ line = line.substr(0, start) + "Disconnect(" + parts[0] + ",Callable(" + parts[1] + "," + parts[2] + "))" + line.substr(end + start);
+ }
+ }
+ }
+ // -- IsConnected(a,b,c) -> IsConnected(a,Callable(b,c)) Object
+ if (line.find("IsConnected(") != -1) {
+ int start = line.find("IsConnected(");
+ int end = get_end_parenthess(line.substr(start)) + 1;
+ if (end > -1) {
+ Vector<String> parts = parse_arguments(line.substr(start, end));
+ if (parts.size() == 3) {
+ line = line.substr(0, start) + "IsConnected(" + parts[0] + ",Callable(" + parts[1] + "," + parts[2] + "))" + line.substr(end + start);
+ }
+ }
+ }
+
+ if (old_line != line) {
+ found_things.append(simple_line_formatter(current_line, old_line, line));
+ }
+ }
+
+ return found_things;
+}
+
+void ProjectConverter3To4::rename_gdscript_keywords(String &file_content){
+ { RegEx reg_tool = RegEx("([\n]+)tool");
+CRASH_COND(!reg_tool.is_valid());
+file_content = reg_tool.sub(file_content, "$1@tool", true);
+RegEx reg_tool2 = RegEx("^tool");
+CRASH_COND(!reg_tool2.is_valid());
+file_content = reg_tool2.sub(file_content, "@tool", true);
+}
+{
+ RegEx reg_export = RegEx("([\n\t]+)export\\b");
+ CRASH_COND(!reg_export.is_valid());
+ file_content = reg_export.sub(file_content, "$1@export", true);
+ RegEx reg_export2 = RegEx("^export");
+ CRASH_COND(!reg_export2.is_valid());
+ file_content = reg_export2.sub(file_content, "@export", true);
+}
+{
+ RegEx reg_onready = RegEx("([\n]+)onready");
+ CRASH_COND(!reg_onready.is_valid());
+ file_content = reg_onready.sub(file_content, "$1@onready", true);
+ RegEx reg_onready2 = RegEx("^onready");
+ CRASH_COND(!reg_onready2.is_valid());
+ file_content = reg_onready2.sub(file_content, "@onready", true);
+}
+{
+ RegEx reg_master = RegEx("([\n]+)master func");
+ CRASH_COND(!reg_master.is_valid());
+ file_content = reg_master.sub(file_content, "$1@rpc(any) func", true);
+ RegEx reg_master2 = RegEx("^master func");
+ CRASH_COND(!reg_master2.is_valid());
+ file_content = reg_master2.sub(file_content, "@rpc(any) func", true);
+}
+{
+ RegEx reg_puppet = RegEx("([\n]+)puppet func");
+ CRASH_COND(!reg_puppet.is_valid());
+ file_content = reg_puppet.sub(file_content, "$1@rpc(auth) func", true);
+ RegEx reg_puppet2 = RegEx("^puppet func");
+ CRASH_COND(!reg_puppet2.is_valid());
+ file_content = reg_puppet2.sub(file_content, "@rpc(auth) func", true);
+}
+{
+ RegEx reg_remote = RegEx("([\n]+)remote func");
+ CRASH_COND(!reg_remote.is_valid());
+ file_content = reg_remote.sub(file_content, "$1@rpc(any) func", true);
+ RegEx reg_remote2 = RegEx("^remote func");
+ CRASH_COND(!reg_remote2.is_valid());
+ file_content = reg_remote2.sub(file_content, "@rpc(any) func", true);
+}
+{
+ RegEx reg_remotesync = RegEx("([\n]+)remotesync func");
+ CRASH_COND(!reg_remotesync.is_valid());
+ file_content = reg_remotesync.sub(file_content, "$1@rpc(any,sync) func", true);
+ RegEx reg_remotesync2 = RegEx("^remotesync func");
+ CRASH_COND(!reg_remotesync2.is_valid());
+ file_content = reg_remotesync2.sub(file_content, "@rpc(any,sync) func", true);
+}
+{
+ RegEx reg_sync = RegEx("([\n]+)sync func");
+ CRASH_COND(!reg_sync.is_valid());
+ file_content = reg_sync.sub(file_content, "$1@rpc(any,sync) func", true);
+ RegEx reg_sync2 = RegEx("^sync func");
+ CRASH_COND(!reg_sync2.is_valid());
+ file_content = reg_sync2.sub(file_content, "@rpc(any,sync) func", true);
+}
+{
+ RegEx reg_puppetsync = RegEx("([\n]+)puppetsync func");
+ CRASH_COND(!reg_puppetsync.is_valid());
+ file_content = reg_puppetsync.sub(file_content, "$1@rpc(auth,sync) func", true);
+ RegEx reg_puppetsync2 = RegEx("^puppetsync func");
+ CRASH_COND(!reg_puppetsync2.is_valid());
+ file_content = reg_puppetsync2.sub(file_content, "@rpc(auth,sync) func", true);
+}
+{
+ RegEx reg_mastersync = RegEx("([\n]+)mastersync func");
+ CRASH_COND(!reg_mastersync.is_valid());
+ file_content = reg_mastersync.sub(file_content, "$1@rpc(any,sync) func", true);
+ RegEx reg_mastersync2 = RegEx("^mastersync func");
+ CRASH_COND(!reg_mastersync2.is_valid());
+ file_content = reg_mastersync2.sub(file_content, "@rpc(any,sync) func", true);
+}
+}
+;
+
+Vector<String> ProjectConverter3To4::check_for_rename_gdscript_keywords(Vector<String> &file_content) {
+ Vector<String> found_things;
+
+ int current_line = 1;
+
+ for (String &line : file_content) {
+ String old;
+ old = line;
+ {
+ RegEx reg_tool2 = RegEx("^tool");
+ CRASH_COND(!reg_tool2.is_valid());
+ line = reg_tool2.sub(line, "@tool", true);
+ }
+ if (old != line) {
+ found_things.append(line_formatter(current_line, "tool", "@tool", line));
+ }
+ old = line;
+ {
+ RegEx reg_export = RegEx("([\t]+)export\\b");
+ CRASH_COND(!reg_export.is_valid());
+ line = reg_export.sub(line, "$1@export", true);
+ RegEx reg_export2 = RegEx("^export");
+ CRASH_COND(!reg_export2.is_valid());
+ line = reg_export2.sub(line, "@export", true);
+ }
+ if (old != line) {
+ found_things.append(line_formatter(current_line, "export", "@export", line));
+ }
+ old = line;
+ {
+ RegEx reg_onready2 = RegEx("^onready");
+ CRASH_COND(!reg_onready2.is_valid());
+ line = reg_onready2.sub(line, "@onready", true);
+ }
+ if (old != line) {
+ found_things.append(line_formatter(current_line, "onready", "@onready", line));
+ }
+ old = line;
+ {
+ RegEx reg_master2 = RegEx("^master func");
+ CRASH_COND(!reg_master2.is_valid());
+ line = reg_master2.sub(line, "@rpc(any) func", true);
+ }
+ if (old != line) {
+ found_things.append(line_formatter(current_line, "master func", "@rpc(any) func", line));
+ }
+ old = line;
+ {
+ RegEx reg_puppet2 = RegEx("^puppet func");
+ CRASH_COND(!reg_puppet2.is_valid());
+ line = reg_puppet2.sub(line, "@rpc(auth) func", true);
+ }
+ if (old != line) {
+ found_things.append(line_formatter(current_line, "puppet func", "@rpc(auth) func", line));
+ }
+ old = line;
+ {
+ RegEx reg_remote2 = RegEx("^remote func");
+ CRASH_COND(!reg_remote2.is_valid());
+ line = reg_remote2.sub(line, "@rpc(any) func", true);
+ }
+ if (old != line) {
+ found_things.append(line_formatter(current_line, "remote func", "@rpc(any) func", line));
+ }
+ old = line;
+ {
+ RegEx reg_remotesync2 = RegEx("^remotesync func");
+ CRASH_COND(!reg_remotesync2.is_valid());
+ line = reg_remotesync2.sub(line, "@rpc(any,sync) func", true);
+ }
+ if (old != line) {
+ found_things.append(line_formatter(current_line, "remotesync func", "@rpc(any,sync) func", line));
+ }
+ old = line;
+ {
+ RegEx reg_sync2 = RegEx("^sync func");
+ CRASH_COND(!reg_sync2.is_valid());
+ line = reg_sync2.sub(line, "@rpc(any,sync) func", true);
+ }
+ if (old != line) {
+ found_things.append(line_formatter(current_line, "sync func", "@rpc(any,sync) func", line));
+ }
+ old = line;
+ {
+ RegEx reg_puppetsync2 = RegEx("^puppetsync func");
+ CRASH_COND(!reg_puppetsync2.is_valid());
+ line = reg_puppetsync2.sub(line, "@rpc(auth,sync) func", true);
+ }
+ if (old != line) {
+ found_things.append(line_formatter(current_line, "puppetsync func", "@rpc(any,sync) func", line));
+ }
+ old = line;
+ {
+ RegEx reg_mastersync2 = RegEx("^mastersync func");
+ CRASH_COND(!reg_mastersync2.is_valid());
+ line = reg_mastersync2.sub(line, "@rpc(any,sync) func", true);
+ }
+ if (old != line) {
+ found_things.append(line_formatter(current_line, "mastersync", "@rpc(any,sync) func", line));
+ }
+ old = line;
+
+ current_line++;
+ }
+
+ return found_things;
+}
+
+void ProjectConverter3To4::custom_rename(String &file_content, String from, String to) {
+ RegEx reg = RegEx(String("\\b") + from + "\\b");
+ CRASH_COND(!reg.is_valid());
+ file_content = reg.sub(file_content, to, true);
+};
+
+Vector<String> ProjectConverter3To4::check_for_custom_rename(Vector<String> &file_content, String from, String to) {
+ Vector<String> found_things;
+
+ RegEx reg = RegEx(String("\\b") + from + "\\b");
+ CRASH_COND(!reg.is_valid());
+
+ int current_line = 1;
+ for (String &line : file_content) {
+ Array reg_match = reg.search_all(line);
+ if (reg_match.size() > 0) {
+ found_things.append(line_formatter(current_line, from.replace("\\.", "."), to, line)); // Without replacing it will print "\.shader" instead ".shader"
+ }
+ current_line++;
+ }
+ return found_things;
+}
+
+void ProjectConverter3To4::rename_common(const char *array[][2], String &file_content) {
+ int current_index = 0;
+ while (array[current_index][0]) {
+ RegEx reg = RegEx(String("\\b") + array[current_index][0] + "\\b");
+ CRASH_COND(!reg.is_valid());
+ file_content = reg.sub(file_content, array[current_index][1], true);
+ current_index++;
+ }
+}
+
+// Common renaming,
+Vector<String> ProjectConverter3To4::check_for_rename_common(const char *array[][2], Vector<String> &file_content) {
+ int current_index = 0;
+
+ Vector<String> found_things;
+
+ while (array[current_index][0]) {
+ RegEx reg = RegEx(String("\\b") + array[current_index][0] + "\\b");
+ CRASH_COND(!reg.is_valid());
+
+ int current_line = 1;
+ for (String &line : file_content) {
+ Array reg_match = reg.search_all(line);
+ if (reg_match.size() > 0) {
+ found_things.append(line_formatter(current_line, array[current_index][0], array[current_index][1], line));
+ }
+ current_line++;
+ }
+ current_index++;
+ }
+ return found_things;
+}
+
+// Formats data to print them into user console when trying to convert data
+String ProjectConverter3To4::line_formatter(int current_line, String from, String to, String line) {
+ if (from.size() > 200) {
+ from = from.substr(0, 197) + "...";
+ }
+ if (to.size() > 200) {
+ to = to.substr(0, 197) + "...";
+ }
+ if (line.size() > 400) {
+ line = line.substr(0, 397) + "...";
+ }
+ return String("Line (") + itos(current_line) + ") " + from.replace("\r", "").replace("\n", "") + " -> " + to.replace("\r", "").replace("\n", "") + " - LINE \"\"\" " + line.replace("\r", "").replace("\n", "").strip_edges() + " \"\"\"";
+}
+
+String ProjectConverter3To4::simple_line_formatter(int current_line, String old_line, String line) {
+ if (old_line.size() > 1000) {
+ old_line = old_line.substr(0, 997) + "...";
+ }
+ if (line.size() > 1000) {
+ line = line.substr(0, 997) + "...";
+ }
+ return String("Line (") + itos(current_line) + ") - FULL LINES - \"\"\"" + old_line.replace("\r", "").replace("\n", "").strip_edges() + "\"\"\" =====> \"\"\" " + line.replace("\r", "").replace("\n", "").strip_edges() + " \"\"\"";
+}
+
+#else // No regex.
+
+int ProjectConverter3To4::convert() {
+ ERR_FAIL_V_MSG(ERROR_CODE, "Can't run converter for Godot 3.x projects as RegEx module is disabled.");
+}
+
+int ProjectConverter3To4::validate_conversion() {
+ ERR_FAIL_V_MSG(ERROR_CODE, "Can't validate conversion for Godot 3.x projects as RegEx module is disabled.");
+}
+
+#endif // MODULE_REGEX_ENABLED
diff --git a/editor/project_converter_3_to_4.h b/editor/project_converter_3_to_4.h
new file mode 100644
index 0000000000..95239666e0
--- /dev/null
+++ b/editor/project_converter_3_to_4.h
@@ -0,0 +1,83 @@
+/*************************************************************************/
+/* project_converter_3_to_4.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifndef PROJECT_CONVERTER_3_TO_4_H
+#define PROJECT_CONVERTER_3_TO_4_H
+
+#include "core/core_bind.h"
+#include "core/io/file_access.h"
+#include "core/object/ref_counted.h"
+#include "core/string/ustring.h"
+
+class ProjectConverter3To4 {
+ void rename_enums(String &file_content);
+ Vector<String> check_for_rename_enums(Vector<String> &file_content);
+
+ void rename_classes(String &file_content);
+ Vector<String> check_for_rename_classes(Vector<String> &file_content);
+
+ void rename_gdscript_functions(String &file_content);
+ Vector<String> check_for_rename_gdscript_functions(Vector<String> &file_content);
+
+ void rename_csharp_functions(String &file_content);
+ Vector<String> check_for_rename_csharp_functions(Vector<String> &file_content);
+
+ void rename_gdscript_keywords(String &file_content);
+ Vector<String> check_for_rename_gdscript_keywords(Vector<String> &file_content);
+
+ void custom_rename(String &file_content, String from, String to);
+ Vector<String> check_for_custom_rename(Vector<String> &file_content, String from, String to);
+
+ void rename_common(const char *array[][2], String &file_content);
+ Vector<String> check_for_rename_common(const char *array[][2], Vector<String> &file_content);
+
+ Vector<String> check_for_files();
+
+ Vector<String> parse_arguments(const String &line);
+ int get_end_parenthess(const String &line) const;
+ String connect_arguments(const Vector<String> &line, int from, int to = -1) const;
+ String get_starting_space(const String &line) const;
+ String get_object_of_execution(const String &line) const;
+
+ String line_formatter(int current_line, String from, String to, String line);
+ String simple_line_formatter(int current_line, String old_line, String line);
+
+ bool test_single_array(const char *array[][2], bool ignore_second_check = false);
+ bool test_conversion_single_additional(String name, String expected, void (ProjectConverter3To4::*func)(String &), String what);
+ bool test_conversion_single_normal(String name, String expected, const char *array[][2], String what);
+ bool test_array_names();
+ bool test_conversion();
+
+public:
+ int validate_conversion();
+ int convert();
+};
+
+#endif // PROJECT_CONVERTER_3_TO_4_H
diff --git a/editor/project_export.cpp b/editor/project_export.cpp
index 70627d5e82..030337a4bc 100644
--- a/editor/project_export.cpp
+++ b/editor/project_export.cpp
@@ -928,17 +928,13 @@ void ProjectExportDialog::_export_project_to_path(const String &p_path) {
ERR_FAIL_COND(platform.is_null());
current->set_export_path(p_path);
+ platform->clear_messages();
Error err = platform->export_project(current, export_debug->is_pressed(), p_path, 0);
- if (err != OK && err != ERR_SKIP) {
- if (err == ERR_FILE_NOT_FOUND) {
- error_dialog->set_text(vformat(TTR("Failed to export the project for platform '%s'.\nExport templates seem to be missing or invalid."), platform->get_name()));
- } else { // Assume misconfiguration. FIXME: Improve error handling and preset config validation.
- error_dialog->set_text(vformat(TTR("Failed to export the project for platform '%s'.\nThis might be due to a configuration issue in the export preset or your export settings."), platform->get_name()));
+ result_dialog_log->clear();
+ if (err != ERR_SKIP) {
+ if (platform->fill_log_messages(result_dialog_log, err)) {
+ result_dialog->popup_centered_ratio(0.5);
}
-
- ERR_PRINT(vformat("Failed to export the project for platform '%s'.", platform->get_name()));
- error_dialog->show();
- error_dialog->popup_centered(Size2(300, 80));
}
}
@@ -957,6 +953,8 @@ void ProjectExportDialog::_export_all(bool p_debug) {
String mode = p_debug ? TTR("Debug") : TTR("Release");
EditorProgress ep("exportall", TTR("Exporting All") + " " + mode, EditorExport::get_singleton()->get_export_preset_count(), true);
+ bool show_dialog = false;
+ result_dialog_log->clear();
for (int i = 0; i < EditorExport::get_singleton()->get_export_preset_count(); i++) {
Ref<EditorExportPreset> preset = EditorExport::get_singleton()->get_export_preset(i);
ERR_FAIL_COND(preset.is_null());
@@ -965,17 +963,16 @@ void ProjectExportDialog::_export_all(bool p_debug) {
ep.step(preset->get_name(), i);
+ platform->clear_messages();
Error err = platform->export_project(preset, p_debug, preset->get_export_path(), 0);
- if (err != OK && err != ERR_SKIP) {
- if (err == ERR_FILE_BAD_PATH) {
- error_dialog->set_text(TTR("The given export path doesn't exist:") + "\n" + preset->get_export_path().get_base_dir());
- } else {
- error_dialog->set_text(TTR("Export templates for this platform are missing/corrupted:") + " " + platform->get_name());
- }
- error_dialog->show();
- error_dialog->popup_centered(Size2(300, 80));
- ERR_PRINT("Failed to export project");
+ if (err == ERR_SKIP) {
+ return;
}
+ bool has_messages = platform->fill_log_messages(result_dialog_log, err);
+ show_dialog = show_dialog || has_messages;
+ }
+ if (show_dialog) {
+ result_dialog->popup_centered_ratio(0.5);
}
}
@@ -1030,10 +1027,12 @@ ProjectExportDialog::ProjectExportDialog() {
mc->add_child(presets);
presets->connect("item_selected", callable_mp(this, &ProjectExportDialog::_edit_preset));
duplicate_preset = memnew(Button);
+ duplicate_preset->set_tooltip(TTR("Duplicate"));
duplicate_preset->set_flat(true);
preset_hb->add_child(duplicate_preset);
duplicate_preset->connect("pressed", callable_mp(this, &ProjectExportDialog::_duplicate_preset));
delete_preset = memnew(Button);
+ delete_preset->set_tooltip(TTR("Delete"));
delete_preset->set_flat(true);
preset_hb->add_child(delete_preset);
delete_preset->connect("pressed", callable_mp(this, &ProjectExportDialog::_delete_preset));
@@ -1248,11 +1247,14 @@ ProjectExportDialog::ProjectExportDialog() {
export_error2->add_theme_color_override("font_color", EditorNode::get_singleton()->get_gui_base()->get_theme_color(SNAME("error_color"), SNAME("Editor")));
export_error2->set_text(String::utf8("• ") + TTR("Export templates for this platform are missing:") + " ");
- error_dialog = memnew(AcceptDialog);
- error_dialog->set_title(TTR("Error"));
- error_dialog->set_text(TTR("Export templates for this platform are missing/corrupted:") + " ");
- main_vb->add_child(error_dialog);
- error_dialog->hide();
+ result_dialog = memnew(AcceptDialog);
+ result_dialog->set_title(TTR("Project Export"));
+ result_dialog_log = memnew(RichTextLabel);
+ result_dialog_log->set_custom_minimum_size(Size2(300, 80) * EDSCALE);
+ result_dialog->add_child(result_dialog_log);
+
+ main_vb->add_child(result_dialog);
+ result_dialog->hide();
LinkButton *download_templates = memnew(LinkButton);
download_templates->set_text(TTR("Manage Export Templates"));
diff --git a/editor/project_export.h b/editor/project_export.h
index 4d1719d6eb..6b10642495 100644
--- a/editor/project_export.h
+++ b/editor/project_export.h
@@ -73,7 +73,8 @@ private:
Button *button_export = nullptr;
bool updating = false;
- AcceptDialog *error_dialog = nullptr;
+ RichTextLabel *result_dialog_log = nullptr;
+ AcceptDialog *result_dialog = nullptr;
ConfirmationDialog *delete_confirm = nullptr;
OptionButton *export_filter = nullptr;
diff --git a/editor/project_manager.cpp b/editor/project_manager.cpp
index 7fcabb1e80..2e7b6f7476 100644
--- a/editor/project_manager.cpp
+++ b/editor/project_manager.cpp
@@ -1877,6 +1877,15 @@ void ProjectManager::_notification(int p_what) {
search_box->set_right_icon(get_theme_icon(SNAME("Search"), SNAME("EditorIcons")));
search_box->set_clear_button_enabled(true);
+ create_btn->set_icon(get_theme_icon(SNAME("Add"), SNAME("EditorIcons")));
+ import_btn->set_icon(get_theme_icon(SNAME("Load"), SNAME("EditorIcons")));
+ scan_btn->set_icon(get_theme_icon(SNAME("Search"), SNAME("EditorIcons")));
+ open_btn->set_icon(get_theme_icon(SNAME("Edit"), SNAME("EditorIcons")));
+ run_btn->set_icon(get_theme_icon(SNAME("Play"), SNAME("EditorIcons")));
+ rename_btn->set_icon(get_theme_icon(SNAME("Rename"), SNAME("EditorIcons")));
+ erase_btn->set_icon(get_theme_icon(SNAME("Remove"), SNAME("EditorIcons")));
+ erase_missing_btn->set_icon(get_theme_icon(SNAME("Clear"), SNAME("EditorIcons")));
+
Engine::get_singleton()->set_editor_hint(false);
} break;
@@ -2644,40 +2653,48 @@ ProjectManager::ProjectManager() {
tree_vb->set_custom_minimum_size(Size2(120, 120));
local_projects_hb->add_child(tree_vb);
- Button *create = memnew(Button);
- create->set_text(TTR("New Project"));
- create->set_shortcut(ED_SHORTCUT("project_manager/new_project", TTR("New Project"), KeyModifierMask::CMD | Key::N));
- create->connect("pressed", callable_mp(this, &ProjectManager::_new_project));
- tree_vb->add_child(create);
-
- Button *import = memnew(Button);
- import->set_text(TTR("Import"));
- import->set_shortcut(ED_SHORTCUT("project_manager/import_project", TTR("Import Project"), KeyModifierMask::CMD | Key::I));
- import->connect("pressed", callable_mp(this, &ProjectManager::_import_project));
- tree_vb->add_child(import);
-
- Button *scan = memnew(Button);
- scan->set_text(TTR("Scan"));
- scan->set_shortcut(ED_SHORTCUT("project_manager/scan_projects", TTR("Scan Projects"), KeyModifierMask::CMD | Key::S));
- scan->connect("pressed", callable_mp(this, &ProjectManager::_scan_projects));
- tree_vb->add_child(scan);
+ const int btn_h_separation = int(6 * EDSCALE);
+
+ create_btn = memnew(Button);
+ create_btn->set_text(TTR("New Project"));
+ create_btn->add_theme_constant_override("h_separation", btn_h_separation);
+ create_btn->set_shortcut(ED_SHORTCUT("project_manager/new_project", TTR("New Project"), KeyModifierMask::CMD | Key::N));
+ create_btn->connect("pressed", callable_mp(this, &ProjectManager::_new_project));
+ tree_vb->add_child(create_btn);
+
+ import_btn = memnew(Button);
+ import_btn->set_text(TTR("Import"));
+ import_btn->add_theme_constant_override("h_separation", btn_h_separation);
+ import_btn->set_shortcut(ED_SHORTCUT("project_manager/import_project", TTR("Import Project"), KeyModifierMask::CMD | Key::I));
+ import_btn->connect("pressed", callable_mp(this, &ProjectManager::_import_project));
+ tree_vb->add_child(import_btn);
+
+ scan_btn = memnew(Button);
+ scan_btn->set_text(TTR("Scan"));
+ scan_btn->add_theme_constant_override("h_separation", btn_h_separation);
+ scan_btn->set_shortcut(ED_SHORTCUT("project_manager/scan_projects", TTR("Scan Projects"), KeyModifierMask::CMD | Key::S));
+ scan_btn->connect("pressed", callable_mp(this, &ProjectManager::_scan_projects));
+ tree_vb->add_child(scan_btn);
tree_vb->add_child(memnew(HSeparator));
open_btn = memnew(Button);
open_btn->set_text(TTR("Edit"));
+ open_btn->add_theme_constant_override("h_separation", btn_h_separation);
open_btn->set_shortcut(ED_SHORTCUT("project_manager/edit_project", TTR("Edit Project"), KeyModifierMask::CMD | Key::E));
open_btn->connect("pressed", callable_mp(this, &ProjectManager::_open_selected_projects_ask));
tree_vb->add_child(open_btn);
run_btn = memnew(Button);
run_btn->set_text(TTR("Run"));
+ run_btn->add_theme_constant_override("h_separation", btn_h_separation);
run_btn->set_shortcut(ED_SHORTCUT("project_manager/run_project", TTR("Run Project"), KeyModifierMask::CMD | Key::R));
run_btn->connect("pressed", callable_mp(this, &ProjectManager::_run_project));
tree_vb->add_child(run_btn);
rename_btn = memnew(Button);
rename_btn->set_text(TTR("Rename"));
+ rename_btn->add_theme_constant_override("h_separation", btn_h_separation);
// The F2 shortcut isn't overridden with Enter on macOS as Enter is already used to edit a project.
rename_btn->set_shortcut(ED_SHORTCUT("project_manager/rename_project", TTR("Rename Project"), Key::F2));
rename_btn->connect("pressed", callable_mp(this, &ProjectManager::_rename_project));
@@ -2685,12 +2702,14 @@ ProjectManager::ProjectManager() {
erase_btn = memnew(Button);
erase_btn->set_text(TTR("Remove"));
+ erase_btn->add_theme_constant_override("h_separation", btn_h_separation);
erase_btn->set_shortcut(ED_SHORTCUT("project_manager/remove_project", TTR("Remove Project"), Key::KEY_DELETE));
erase_btn->connect("pressed", callable_mp(this, &ProjectManager::_erase_project));
tree_vb->add_child(erase_btn);
erase_missing_btn = memnew(Button);
erase_missing_btn->set_text(TTR("Remove Missing"));
+ erase_missing_btn->add_theme_constant_override("h_separation", btn_h_separation);
erase_missing_btn->connect("pressed", callable_mp(this, &ProjectManager::_erase_missing_projects));
tree_vb->add_child(erase_missing_btn);
diff --git a/editor/project_manager.h b/editor/project_manager.h
index 2ffe293f3b..28383e4142 100644
--- a/editor/project_manager.h
+++ b/editor/project_manager.h
@@ -63,8 +63,11 @@ class ProjectManager : public Control {
Label *loading_label = nullptr;
OptionButton *filter_option = nullptr;
- Button *run_btn = nullptr;
+ Button *create_btn = nullptr;
+ Button *import_btn = nullptr;
+ Button *scan_btn = nullptr;
Button *open_btn = nullptr;
+ Button *run_btn = nullptr;
Button *rename_btn = nullptr;
Button *erase_btn = nullptr;
Button *erase_missing_btn = nullptr;
diff --git a/editor/project_settings_editor.cpp b/editor/project_settings_editor.cpp
index 404199d2da..1524993bd0 100644
--- a/editor/project_settings_editor.cpp
+++ b/editor/project_settings_editor.cpp
@@ -35,6 +35,7 @@
#include "editor/editor_log.h"
#include "editor/editor_node.h"
#include "editor/editor_scale.h"
+#include "servers/movie_writer/movie_writer.h"
ProjectSettingsEditor *ProjectSettingsEditor::singleton = nullptr;
@@ -261,6 +262,7 @@ void ProjectSettingsEditor::_add_feature_overrides() {
presets.insert("standalone");
presets.insert("32");
presets.insert("64");
+ presets.insert("movie");
EditorExport *ee = EditorExport::get_singleton();
@@ -698,4 +700,6 @@ ProjectSettingsEditor::ProjectSettingsEditor(EditorData *p_data) {
import_defaults_editor->set_name(TTR("Import Defaults"));
tab_container->add_child(import_defaults_editor);
import_defaults_editor->connect("project_settings_changed", callable_mp(this, &ProjectSettingsEditor::queue_save));
+
+ MovieWriter::set_extensions_hint(); // ensure extensions are properly displayed.
}
diff --git a/editor/property_editor.cpp b/editor/property_editor.cpp
index da67ed79ba..771d34d841 100644
--- a/editor/property_editor.cpp
+++ b/editor/property_editor.cpp
@@ -105,15 +105,16 @@ void CustomPropertyEditor::_menu_option(int p_which) {
switch (type) {
case Variant::INT: {
if (hint == PROPERTY_HINT_FLAGS) {
- int val = v;
-
- if (val & (1 << p_which)) {
- val &= ~(1 << p_which);
+ int idx = menu->get_item_index(p_which);
+ uint32_t item_value = menu->get_item_metadata(idx);
+ uint32_t value = v;
+ // If the item wasn't previously checked it means it was pressed,
+ // otherwise it was unpressed.
+ if (!menu->is_item_checked(idx)) {
+ v = value | item_value;
} else {
- val |= (1 << p_which);
+ v = value & ~item_value;
}
-
- v = val;
emit_signal(SNAME("variant_changed"));
} else if (hint == PROPERTY_HINT_ENUM) {
v = menu->get_item_metadata(p_which);
@@ -486,15 +487,19 @@ bool CustomPropertyEditor::edit(Object *p_owner, const String &p_name, Variant::
set_size(Size2(200, 150) * EDSCALE);
} else if (hint == PROPERTY_HINT_FLAGS) {
Vector<String> flags = hint_text.split(",");
+ uint32_t value = v;
for (int i = 0; i < flags.size(); i++) {
- String flag = flags[i];
- if (flag.is_empty()) {
- continue;
+ uint32_t current_val;
+ Vector<String> text_split = flags[i].split(":");
+ if (text_split.size() != 1) {
+ current_val = text_split[1].to_int();
+ } else {
+ current_val = 1 << i;
}
- menu->add_check_item(flag, i);
- int f = v;
- if (f & (1 << i)) {
- menu->set_item_checked(menu->get_item_index(i), true);
+ menu->add_check_item(text_split[0], current_val);
+ menu->set_item_metadata(i, current_val);
+ if ((value & current_val) == current_val) {
+ menu->set_item_checked(menu->get_item_index(current_val), true);
}
}
menu->set_position(get_position());
diff --git a/editor/rename_dialog.cpp b/editor/rename_dialog.cpp
index e47250fcf8..a8278b9aab 100644
--- a/editor/rename_dialog.cpp
+++ b/editor/rename_dialog.cpp
@@ -283,7 +283,7 @@ RenameDialog::RenameDialog(SceneTreeEditor *p_scene_tree_editor, UndoRedo *p_und
vbc->add_child(lbl_preview_title);
lbl_preview = memnew(Label);
- lbl_preview->set_autowrap_mode(Label::AUTOWRAP_WORD_SMART);
+ lbl_preview->set_autowrap_mode(TextServer::AUTOWRAP_WORD_SMART);
vbc->add_child(lbl_preview);
// ---- Dialog related
diff --git a/editor/scene_tree_dock.cpp b/editor/scene_tree_dock.cpp
index 1ddefeba77..2e1090e6c0 100644
--- a/editor/scene_tree_dock.cpp
+++ b/editor/scene_tree_dock.cpp
@@ -71,9 +71,17 @@ void SceneTreeDock::input(const Ref<InputEvent> &p_event) {
Ref<InputEventMouseButton> mb = p_event;
- if (pending_click_select && mb.is_valid() && !mb->is_pressed() && (mb->get_button_index() == MouseButton::LEFT || mb->get_button_index() == MouseButton::RIGHT)) {
- _push_item(pending_click_select);
- pending_click_select = nullptr;
+ if (mb.is_valid() && (mb->get_button_index() == MouseButton::LEFT || mb->get_button_index() == MouseButton::RIGHT)) {
+ if (mb->is_pressed() && scene_tree->get_rect().has_point(mb->get_position())) {
+ tree_clicked = true;
+ } else if (!mb->is_pressed()) {
+ tree_clicked = false;
+ }
+
+ if (!mb->is_pressed() && pending_click_select) {
+ _push_item(pending_click_select);
+ pending_click_select = nullptr;
+ }
}
}
@@ -1371,10 +1379,10 @@ void SceneTreeDock::_push_item(Object *p_object) {
}
void SceneTreeDock::_handle_select(Node *p_node) {
- if ((Input::get_singleton()->get_mouse_button_mask() & (MouseButton::MASK_LEFT | MouseButton::MASK_RIGHT)) != MouseButton::NONE) {
+ if (tree_clicked) {
pending_click_select = p_node;
} else {
- EditorNode::get_singleton()->push_item(p_node);
+ _push_item(p_node);
}
}
@@ -2410,8 +2418,8 @@ void SceneTreeDock::_new_scene_from(String p_file) {
Node *copy = base->duplicate_from_editor(duplimap);
if (copy) {
- for (int i = 0; i < copy->get_child_count(); i++) {
- _set_node_owner_recursive(copy->get_child(i), copy);
+ for (int i = 0; i < copy->get_child_count(false); i++) {
+ _set_node_owner_recursive(copy->get_child(i, false), copy);
}
Ref<PackedScene> sdata = memnew(PackedScene);
@@ -2448,8 +2456,8 @@ void SceneTreeDock::_set_node_owner_recursive(Node *p_node, Node *p_owner) {
p_node->set_owner(p_owner);
}
- for (int i = 0; i < p_node->get_child_count(); i++) {
- _set_node_owner_recursive(p_node->get_child(i), p_owner);
+ for (int i = 0; i < p_node->get_child_count(false); i++) {
+ _set_node_owner_recursive(p_node->get_child(i, false), p_owner);
}
}
@@ -2647,7 +2655,7 @@ void SceneTreeDock::_add_children_to_popup(Object *p_obj, int p_depth) {
}
int index = menu_subresources->get_item_count();
menu_subresources->add_icon_item(icon, E.name.capitalize(), EDIT_SUBRESOURCE_BASE + subresources.size());
- menu_subresources->set_item_h_offset(index, p_depth * 10 * EDSCALE);
+ menu_subresources->set_item_horizontal_offset(index, p_depth * 10 * EDSCALE);
subresources.push_back(obj->get_instance_id());
_add_children_to_popup(obj, p_depth + 1);
diff --git a/editor/scene_tree_dock.h b/editor/scene_tree_dock.h
index 54e6108d84..dc7f3476ee 100644
--- a/editor/scene_tree_dock.h
+++ b/editor/scene_tree_dock.h
@@ -172,6 +172,7 @@ class SceneTreeDock : public VBoxContainer {
Node *scene_root = nullptr;
Node *edited_scene = nullptr;
Node *pending_click_select = nullptr;
+ bool tree_clicked = false;
VBoxContainer *create_root_dialog = nullptr;
String selected_favorite_root;
diff --git a/editor/scene_tree_editor.cpp b/editor/scene_tree_editor.cpp
index b5b70b827b..86fa9222c0 100644
--- a/editor/scene_tree_editor.cpp
+++ b/editor/scene_tree_editor.cpp
@@ -584,6 +584,11 @@ bool SceneTreeEditor::_update_filter(TreeItem *p_parent, bool p_scroll_to_select
p_parent = tree->get_root();
}
+ if (!p_parent) {
+ // Tree is empty, nothing to do here.
+ return false;
+ }
+
bool keep = false;
for (TreeItem *child = p_parent->get_first_child(); child; child = child->get_next()) {
keep = _update_filter(child, p_scroll_to_selected) || keep;
@@ -1348,8 +1353,9 @@ void SceneTreeDialog::_cancel() {
void SceneTreeDialog::_select() {
if (tree->get_selected()) {
- emit_signal(SNAME("selected"), tree->get_selected()->get_path());
+ // The signal may cause another dialog to be displayed, so be sure to hide this one first.
hide();
+ emit_signal(SNAME("selected"), tree->get_selected()->get_path());
}
}
diff --git a/editor/script_create_dialog.cpp b/editor/script_create_dialog.cpp
index 9530a58eb2..e8561de19c 100644
--- a/editor/script_create_dialog.cpp
+++ b/editor/script_create_dialog.cpp
@@ -940,7 +940,7 @@ ScriptCreateDialog::ScriptCreateDialog() {
builtin_warning_label->set_text(
TTR("Note: Built-in scripts have some limitations and can't be edited using an external editor."));
vb->add_child(builtin_warning_label);
- builtin_warning_label->set_autowrap_mode(Label::AUTOWRAP_WORD_SMART);
+ builtin_warning_label->set_autowrap_mode(TextServer::AUTOWRAP_WORD_SMART);
builtin_warning_label->hide();
script_name_warning_label = memnew(Label);
@@ -948,12 +948,12 @@ ScriptCreateDialog::ScriptCreateDialog() {
TTR("Warning: Having the script name be the same as a built-in type is usually not desired."));
vb->add_child(script_name_warning_label);
script_name_warning_label->add_theme_color_override("font_color", Color(1, 0.85, 0.4));
- script_name_warning_label->set_autowrap_mode(Label::AUTOWRAP_WORD_SMART);
+ script_name_warning_label->set_autowrap_mode(TextServer::AUTOWRAP_WORD_SMART);
script_name_warning_label->hide();
template_info_label = memnew(Label);
vb->add_child(template_info_label);
- template_info_label->set_autowrap_mode(Label::AUTOWRAP_WORD_SMART);
+ template_info_label->set_autowrap_mode(TextServer::AUTOWRAP_WORD_SMART);
status_panel = memnew(PanelContainer);
status_panel->set_h_size_flags(Control::SIZE_FILL);
@@ -1090,7 +1090,7 @@ ScriptCreateDialog::ScriptCreateDialog() {
add_child(file_browse);
get_ok_button()->set_text(TTR("Create"));
alert = memnew(AcceptDialog);
- alert->get_label()->set_autowrap_mode(Label::AUTOWRAP_WORD_SMART);
+ alert->get_label()->set_autowrap_mode(TextServer::AUTOWRAP_WORD_SMART);
alert->get_label()->set_horizontal_alignment(HORIZONTAL_ALIGNMENT_CENTER);
alert->get_label()->set_vertical_alignment(VERTICAL_ALIGNMENT_CENTER);
alert->get_label()->set_custom_minimum_size(Size2(325, 60) * EDSCALE);
diff --git a/editor/shader_create_dialog.cpp b/editor/shader_create_dialog.cpp
index 9c322320b8..f70c46c8d8 100644
--- a/editor/shader_create_dialog.cpp
+++ b/editor/shader_create_dialog.cpp
@@ -184,7 +184,6 @@ void ShaderCreateDialog::_create_new() {
Ref<VisualShader> visual_shader;
visual_shader.instantiate();
shader = visual_shader;
- visual_shader->set_engine_version(Engine::get_singleton()->get_version_info());
visual_shader->set_mode(Shader::Mode(current_mode));
}
@@ -529,7 +528,7 @@ ShaderCreateDialog::ShaderCreateDialog() {
builtin_warning_label->set_text(
TTR("Note: Built-in shaders can't be edited using an external editor."));
vb->add_child(builtin_warning_label);
- builtin_warning_label->set_autowrap_mode(Label::AUTOWRAP_WORD_SMART);
+ builtin_warning_label->set_autowrap_mode(TextServer::AUTOWRAP_WORD_SMART);
builtin_warning_label->hide();
status_panel = memnew(PanelContainer);
@@ -633,7 +632,7 @@ ShaderCreateDialog::ShaderCreateDialog() {
add_child(file_browse);
alert = memnew(AcceptDialog);
- alert->get_label()->set_autowrap_mode(Label::AUTOWRAP_WORD_SMART);
+ alert->get_label()->set_autowrap_mode(TextServer::AUTOWRAP_WORD_SMART);
alert->get_label()->set_horizontal_alignment(HORIZONTAL_ALIGNMENT_CENTER);
alert->get_label()->set_vertical_alignment(VERTICAL_ALIGNMENT_CENTER);
alert->get_label()->set_custom_minimum_size(Size2(325, 60) * EDSCALE);
diff --git a/editor/translations/af.po b/editor/translations/af.po
index ee71474337..ae83779422 100644
--- a/editor/translations/af.po
+++ b/editor/translations/af.po
@@ -218,9 +218,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
#, fuzzy
msgid "Network"
msgstr "Skep Vouer"
@@ -332,7 +333,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Nie genoeg bytes om bytes te dekodeer nie, of ongeldige formaat."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "Ongeldige toevoer %i (nie geslaag nie) in uitdrukking"
#: core/math/expression.cpp
@@ -377,6 +379,15 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Wissel Modus"
+
+#: core/os/input.cpp
+msgid "Use Accumulated Input"
+msgstr ""
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -569,7 +580,8 @@ msgstr "Beskrywing:"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr ""
@@ -657,26 +669,24 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-#, fuzzy
-msgid "Plugin Name"
-msgstr "Nodus Naam:"
+msgid "Version Control Plugin Name"
+msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -786,7 +796,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "Eienskappe"
@@ -1062,6 +1073,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Bevry / Verniet"
@@ -1078,7 +1090,7 @@ msgstr "Spieel"
msgid "Time:"
msgstr "Tyd:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Waarde:"
@@ -1330,10 +1342,70 @@ msgstr "Verwyder geselekteerde baan."
#: editor/animation_track_editor.cpp
#, fuzzy
-msgid "Time (s): "
+msgid "Time (s):"
msgstr "Tree (s):"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Skep Nuwe"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Konstant"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Moet 'n geldige uitbreiding gebruik."
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "Wysig Nodus Kurwe"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Wissel Modus"
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Animasie Zoem."
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr ""
@@ -1555,7 +1627,7 @@ msgid "Add Method Track Key"
msgstr "Anim Voeg Baan & Sleutel By"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+msgid "Method not found in object:"
msgstr ""
#: editor/animation_track_editor.cpp
@@ -2188,8 +2260,8 @@ msgid "Open"
msgstr "Oop"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Eienaars van:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
#, fuzzy
@@ -2503,7 +2575,7 @@ msgid "Bus Options"
msgstr "Bus opsies"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Dupliseer"
@@ -2555,8 +2627,8 @@ msgstr "Oop Oudio-Bus Uitleg"
msgid "There is no '%s' file."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+msgid "Layout:"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -2770,6 +2842,23 @@ msgid "Choose"
msgstr "Kies"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "Pakket Suksesvol Geïnstalleer!"
+
+#: editor/editor_export.cpp
+msgid "Failed."
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Leêr word gebêre:"
@@ -2782,6 +2871,31 @@ msgid "Packing"
msgstr "Verpak"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Stoor As"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "Kon nie vouer skep nie."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Kon nie vouer skep nie."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Kan nie lêer vir skryf oopmaak nie:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Stoor As"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2886,12 +3000,31 @@ msgstr "Sjabloon lêer nie gevind nie:\n"
msgid "Custom release template not found."
msgstr ""
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "Skep Vouer"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "Lêer bestaan nie."
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
#, fuzzy
-msgid "Template file not found:"
+msgid "Template file not found: \"%s\"."
msgstr "Sjabloon lêer nie gevind nie:\n"
#: editor/editor_export.cpp
+msgid "Failed to copy export template."
+msgstr ""
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr ""
@@ -3075,9 +3208,9 @@ msgid "Import"
msgstr "Invoer"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr ""
@@ -4211,14 +4344,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4343,6 +4468,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Nodus Naam:"
@@ -4371,6 +4500,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
@@ -5018,11 +5151,13 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+msgid "Page:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
@@ -5119,6 +5254,11 @@ msgid ""
"as runnable."
msgstr ""
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Beskrywing"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -5387,7 +5527,9 @@ msgid "Draw Spaces"
msgstr ""
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
#, fuzzy
msgid "Navigation"
msgstr "Skep Intekening"
@@ -5956,10 +6098,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Projek Bestuurder"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -6730,16 +6874,6 @@ msgstr "Vervang Alles"
#: editor/find_in_files.cpp
#, fuzzy
-msgid "Find: "
-msgstr "Vind"
-
-#: editor/find_in_files.cpp
-#, fuzzy
-msgid "Replace: "
-msgstr "Vervang"
-
-#: editor/find_in_files.cpp
-#, fuzzy
msgid "Replace All (NO UNDO)"
msgstr "Vervang Alles"
@@ -6877,7 +7011,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Eienskappe"
@@ -7137,7 +7271,7 @@ msgid "Generating Lightmaps"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+msgid "Generating for Mesh:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -7165,6 +7299,18 @@ msgid "Saving..."
msgstr ""
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7992,10 +8138,12 @@ msgstr ""
msgid "Directions"
msgstr "Beskrywing"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr ""
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr ""
@@ -8161,7 +8309,7 @@ msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
#, fuzzy
-msgid "Transition: "
+msgid "Transition:"
msgstr "Oorgang"
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8180,11 +8328,6 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr ""
@@ -9100,6 +9243,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr ""
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9164,6 +9308,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -9935,8 +10083,9 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr ""
+#, fuzzy
+msgid "Emission Source:"
+msgstr "Hulpbron"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
@@ -10171,6 +10320,7 @@ msgid "Points"
msgstr "Skuif Gunsteling Op"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
#, fuzzy
msgid "Polygons"
msgstr "Skep Intekening"
@@ -10327,13 +10477,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -10342,11 +10485,6 @@ msgstr ""
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#, fuzzy
-msgid "ResourcePreloader"
-msgstr "Hulpbron"
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -11081,13 +11219,17 @@ msgstr ""
msgid "Translate"
msgstr ""
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr ""
+#, fuzzy
+msgid "Scaling:"
+msgstr "Wissel Modus"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "Oorgang"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -11110,11 +11252,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11604,8 +11741,9 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
-msgstr ""
+#, fuzzy
+msgid "Convert to MeshInstance2D"
+msgstr "Hernoem AutoLaai"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Invalid geometry, can't create polygon."
@@ -11638,15 +11776,16 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "Alle Seleksie"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12639,8 +12778,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr ""
@@ -14139,31 +14277,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr ""
@@ -14302,6 +14419,11 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Projek Stigters"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr ""
@@ -15787,8 +15909,9 @@ msgid "Attach Node Script"
msgstr ""
#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr ""
+#, fuzzy
+msgid "Remote %s:"
+msgstr "Verwyder"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -16639,7 +16762,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "Skep Intekening"
@@ -16812,7 +16935,7 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+msgid "Libraries:"
msgstr ""
#: modules/gdnative/nativescript/nativescript.cpp
@@ -17230,7 +17353,6 @@ msgid "Use In Baked Light"
msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17260,6 +17382,19 @@ msgstr "Skrap"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Skep Intekening"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Skep Intekening"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -17671,7 +17806,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17679,7 +17814,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -18066,7 +18201,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18074,7 +18209,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18238,12 +18373,14 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
+#, fuzzy
+msgid "Invalid argument of type:"
+msgstr "Ongeldige argument om '%s' te genereer"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
+#, fuzzy
+msgid "Invalid arguments:"
+msgstr "Ongeldige naam."
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -18255,11 +18392,11 @@ msgid "Var Name"
msgstr "Naam"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+msgid "VariableGet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+msgid "VariableSet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
@@ -18780,10 +18917,6 @@ msgid "Could not execute on device."
msgstr "Kon nie vouer skep nie."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18888,12 +19021,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Seine"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18910,6 +19047,10 @@ msgid "Could not find keystore, unable to export."
msgstr "Kon nie vouer skep nie."
#: platform/android/export/export_plugin.cpp
+msgid "Could not start apksigner executable."
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -18938,7 +19079,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18949,20 +19090,19 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
-msgstr ""
+#, fuzzy
+msgid "Could not export project files to gradle project."
+msgstr "Kon nie vouer skep nie."
#: platform/android/export/export_plugin.cpp
#, fuzzy
@@ -18975,7 +19115,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -18991,7 +19131,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr "Animasie lengte (in sekondes)."
#: platform/android/export/export_plugin.cpp
@@ -19000,15 +19140,12 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
msgstr "Kon nie vouer skep nie."
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -19020,7 +19157,7 @@ msgstr "Vind"
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr "Kon nie vouer skep nie."
#: platform/android/export/export_plugin.cpp
@@ -19259,6 +19396,16 @@ msgstr "Anim Dupliseer Sleutels"
msgid "Custom BG Color"
msgstr "Anim Dupliseer Sleutels"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+msgid "Prepare Templates"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Sjabloon lêer nie gevind nie:\n"
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -19282,24 +19429,34 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not open template for export:"
+msgid "Could not open template for export: \"%s\"."
msgstr "Kon nie vouer skep nie."
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
-msgstr ""
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
+msgstr "Moet 'n geldige uitbreiding gebruik."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not write file:"
+msgid "Could not write file: \"%s\"."
msgstr "Kon nie vouer skep nie."
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Deursoek Klasse"
+
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read file:"
+msgid "Could not read file: \"%s\"."
msgstr "Kon nie vouer skep nie."
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "Opnoemings:"
@@ -19374,17 +19531,17 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr "Kon nie vouer skep nie."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr "Kon nie vouer skep nie."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr "Leêr word gebêre:"
#: platform/javascript/export/export.cpp
@@ -19674,9 +19831,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Kon nie vouer skep nie."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "Kon nie vouer skep nie."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Skep Intekening"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19692,20 +19868,74 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "Nie gevind nie!"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Fout tydens storing van hulpbron!"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Beskrywing"
+
+#: platform/osx/export/export.cpp
+msgid "Could not start hdiutil executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Creating app bundle"
msgstr ""
#: platform/osx/export/export.cpp
#, fuzzy
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr "Kon nie vouer skep nie."
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Ongeldige Pad."
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -19713,7 +19943,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -19755,6 +19985,16 @@ msgstr ""
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "ZIP Creation"
+msgstr "Beskrywing"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr "Kon nie vouer skep nie."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Invalid bundle identifier:"
msgstr "Ongeldige naam."
@@ -20067,6 +20307,11 @@ msgid "Debug Algorithm"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Kan nie verwyder nie:\n"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20113,6 +20358,70 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Konstant"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "Kon nie vouer skep nie."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "Kon nie vouer skep nie."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "Kon nie vouer skep nie."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "Kon nie vouer skep nie."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Ongeldige naam."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Ongeldige naam."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "Kan nie verwyder nie:\n"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20134,6 +20443,23 @@ msgid "Invalid product version:"
msgstr "Ongeldige naam."
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Moet 'n geldige uitbreiding gebruik."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Windows"
msgstr ""
@@ -20149,6 +20475,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20265,7 +20595,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
@@ -21066,13 +21397,16 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
+msgid "Navpoly"
msgstr ""
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Skrap"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Travel Cost"
msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
@@ -22200,12 +22534,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -24758,6 +25086,16 @@ msgid "3D Physics"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Skep Intekening"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Skep Intekening"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -26138,7 +26476,7 @@ msgstr "Oorgang"
msgid "Refraction"
msgstr "Opnoemings:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -26218,7 +26556,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "Wissel Modus"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "Verander Skikking Waarde-Soort"
#: scene/resources/navigation_mesh.cpp
@@ -26235,7 +26578,11 @@ msgid "Source Group Name"
msgstr "Hulpbron"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
+msgid "Agents"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26247,11 +26594,16 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Regions"
+msgstr "Beskrywing"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26264,6 +26616,11 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Details"
+msgstr "Laai Verstek"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -26280,7 +26637,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -26675,6 +27032,11 @@ msgid "Scenario"
msgstr ""
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Skep Intekening"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -26692,6 +27054,26 @@ msgstr "Lineêr"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Voorskou:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Voorskou:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Verander Skikking Waarde-Soort"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Wysig Seleksie Kurwe"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/ar.po b/editor/translations/ar.po
index 34de06e8cf..a3fcece225 100644
--- a/editor/translations/ar.po
+++ b/editor/translations/ar.po
@@ -62,13 +62,15 @@
# Whales State <whalesstate@gmail.com>, 2022.
# Mr.k <mineshtine28546271@gmail.com>, 2022.
# ywmaa <ywmaa.personal@gmail.com>, 2022.
+# Awab Najim <dev.djvan@gmail.com>, 2022.
+# Abderrahim <abdoudido117@gmail.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-03-17 13:58+0000\n"
-"Last-Translator: Mr.k <mineshtine28546271@gmail.com>\n"
+"PO-Revision-Date: 2022-06-19 11:52+0000\n"
+"Last-Translator: Awab Najim <dev.djvan@gmail.com>\n"
"Language-Team: Arabic <https://hosted.weblate.org/projects/godot-engine/"
"godot/ar/>\n"
"Language: ar\n"
@@ -77,110 +79,97 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
-"X-Generator: Weblate 4.12-dev\n"
+"X-Generator: Weblate 4.13.1-dev\n"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
-msgstr ""
+msgstr "برنامج تشغيل الكمبيوتر اللوحي"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Clipboard"
-msgstr "Ø§Ù„Ø­Ø§ÙØ¸Ø© ÙØ§Ø±ØºØ©!"
+msgstr "Ø§Ù„Ø­Ø§ÙØ¸Ø©"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Current Screen"
-msgstr "المشهد الحالي"
+msgstr "الشاشة الحالية"
#: core/bind/core_bind.cpp
msgid "Exit Code"
-msgstr ""
+msgstr "Ø´ÙÙØ±Ø© الخروج"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "V-Sync Enabled"
-msgstr "ØªÙØ¹ÙŠÙ„"
+msgstr "ØªÙØ¹ÙŠÙ„ V-Sync"
#: core/bind/core_bind.cpp main/main.cpp
msgid "V-Sync Via Compositor"
-msgstr ""
+msgstr "V-Sync عبر المؤلÙ"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Delta Smoothing"
-msgstr ""
+msgstr "سلاسة دلتا"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Low Processor Usage Mode"
-msgstr "وضع التحريك"
+msgstr "وضع استخدام المعالج Ø§Ù„Ù…Ù†Ø®ÙØ¶"
#: core/bind/core_bind.cpp
msgid "Low Processor Usage Mode Sleep (µsec)"
-msgstr ""
+msgstr "وضع السكون لاستخدام المعالج Ø§Ù„Ù…Ù†Ø®ÙØ¶ (µsec)"
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Keep Screen On"
-msgstr "إبقاء منÙقتح الأخطاء البرمجية Ù…ÙØªÙˆØ­Ø§Ù‹"
+msgstr "إبقاء الشاشة قيد التشغيل"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Min Window Size"
-msgstr "حجم الخطوط:"
+msgstr "الحد الأدنى لحجم Ø§Ù„Ù†Ø§ÙØ°Ø©"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Max Window Size"
-msgstr "حجم الخطوط:"
+msgstr "الحد الأعلى لحجم Ø§Ù„Ù†Ø§ÙØ°Ø©"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Screen Orientation"
-msgstr "Ù…ÙØ´ØºÙ„ الشاشة."
+msgstr "اتجاه الشاشة"
#: core/bind/core_bind.cpp core/project_settings.cpp main/main.cpp
#: platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Window"
-msgstr "Ù†Ø§ÙØ°Ø© جديدة"
+msgstr "Ù†Ø§ÙØ°Ø©"
#: core/bind/core_bind.cpp core/project_settings.cpp
-#, fuzzy
msgid "Borderless"
-msgstr "البكسلات المحيطية (الحدودية)"
+msgstr "بلا إطار"
#: core/bind/core_bind.cpp
msgid "Per Pixel Transparency Enabled"
-msgstr ""
+msgstr "تمكين Ø§Ù„Ø´ÙØ§Ùية لكل بكسل"
#: core/bind/core_bind.cpp core/project_settings.cpp
-#, fuzzy
msgid "Fullscreen"
-msgstr "ØªÙØ¹ÙŠÙ„/إلغاء وضع الشاشة الكاملة"
+msgstr "ملء الشاشة"
#: core/bind/core_bind.cpp
msgid "Maximized"
-msgstr ""
+msgstr "مكبرة"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Minimized"
-msgstr "الشروع"
+msgstr "مصغرة"
#: core/bind/core_bind.cpp core/project_settings.cpp scene/gui/dialogs.cpp
#: scene/gui/graph_node.cpp
msgid "Resizable"
-msgstr ""
+msgstr "متغير الحجم"
#: core/bind/core_bind.cpp core/os/input_event.cpp scene/2d/node_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/remote_transform_2d.cpp
#: scene/3d/physics_body.cpp scene/3d/remote_transform.cpp
#: scene/gui/control.cpp scene/gui/line_edit.cpp
#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Position"
-msgstr "مكان الرصيÙ"
+msgstr "موقع"
#: core/bind/core_bind.cpp core/project_settings.cpp editor/editor_settings.cpp
#: main/main.cpp modules/gridmap/grid_map.cpp
@@ -191,65 +180,56 @@ msgstr "مكان الرصيÙ"
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
#: scene/resources/visual_shader.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Size"
-msgstr "الحجم:"
+msgstr "الحجم"
#: core/bind/core_bind.cpp
msgid "Endian Swap"
-msgstr ""
+msgstr "مبادلة Endian"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Editor Hint"
-msgstr "المحرّر"
+msgstr "تلميح المحرر"
#: core/bind/core_bind.cpp
msgid "Print Error Messages"
-msgstr ""
+msgstr "طباعة رسائل الخطأ"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Iterations Per Second"
-msgstr "وضعية Ø§Ù„Ø£Ø³ØªÙŠÙØ§Ø¡"
+msgstr "التكرارات ÙÙŠ الثانية"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Target FPS"
-msgstr "الهدÙ"
+msgstr "FPS Ø§Ù„Ù…Ø³ØªÙ‡Ø¯ÙØ©"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Time Scale"
-msgstr "عقدة التكبير الزمني"
+msgstr "مقياس الوقت"
#: core/bind/core_bind.cpp main/main.cpp
-#, fuzzy
msgid "Physics Jitter Fix"
-msgstr "نسبة الإطار الÙيزيائي %"
+msgstr "إصلاح Ø§Ù„Ø±Ø¬ÙØ§Ù† الÙيزيائي"
#: core/bind/core_bind.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Error"
msgstr "خطأ"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Error String"
-msgstr "خطأ ÙÙŠ Ø§Ù„Ø­ÙØ¸"
+msgstr "سلسلة الخطأ"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Error Line"
-msgstr "خطأ ÙÙŠ Ø§Ù„Ø­ÙØ¸"
+msgstr "سطر الخطأ"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Result"
-msgstr "نتائج البحث"
+msgstr "النتيجة"
#: core/command_queue_mt.cpp core/message_queue.cpp main/main.cpp
msgid "Memory"
-msgstr ""
+msgstr "الذاكرة"
#: core/command_queue_mt.cpp core/message_queue.cpp
#: core/register_core_types.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
@@ -260,79 +240,71 @@ msgstr ""
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
#: servers/visual_server.cpp
msgid "Limits"
-msgstr ""
+msgstr "الحدود"
#: core/command_queue_mt.cpp
-#, fuzzy
msgid "Command Queue"
-msgstr "Command: استدارة"
+msgstr "قائمة انتظار الأوامر"
#: core/command_queue_mt.cpp
msgid "Multithreading Queue Size (KB)"
-msgstr ""
+msgstr "حجم قائمة انتظار Multithreading (كيلو بايت)"
#: core/func_ref.cpp modules/visual_script/visual_script_builtin_funcs.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: scene/resources/visual_shader_nodes.cpp
-#, fuzzy
msgid "Function"
msgstr "الوظائ٠البرمجية"
#: core/image.cpp core/packed_data_container.cpp scene/2d/polygon_2d.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#, fuzzy
msgid "Data"
-msgstr "مع البيانات"
+msgstr "بيانات"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
-#, fuzzy
+#: scene/gui/file_dialog.cpp
msgid "Network"
-msgstr "مل٠تعري٠الشبكة Network Profiler"
+msgstr "الشبكة"
#: core/io/file_access_network.cpp
-#, fuzzy
msgid "Remote FS"
-msgstr "من بعد "
+msgstr "FS من بعد"
#: core/io/file_access_network.cpp
-#, fuzzy
msgid "Page Size"
-msgstr "Ø§Ù„ØµÙØ­Ø©: "
+msgstr "حجم Ø§Ù„ØµÙØ­Ø©"
#: core/io/file_access_network.cpp
msgid "Page Read Ahead"
-msgstr ""
+msgstr "قراءة Ø§Ù„ØµÙØ­Ø© مسبقا"
#: core/io/http_client.cpp
msgid "Blocking Mode Enabled"
-msgstr ""
+msgstr "تمكين وضع الحظر"
#: core/io/http_client.cpp
-#, fuzzy
msgid "Connection"
-msgstr "وصل"
+msgstr "إتصال"
#: core/io/http_client.cpp
msgid "Read Chunk Size"
-msgstr ""
+msgstr "حجم قطعة القراءة"
#: core/io/marshalls.cpp
-#, fuzzy
msgid "Object ID"
-msgstr "كائنات مرسومة:"
+msgstr "معر٠الكائن"
#: core/io/multiplayer_api.cpp core/io/packet_peer.cpp
-#, fuzzy
msgid "Allow Object Decoding"
-msgstr "ØªÙØ¹ÙŠÙ„ تقشير البصل"
+msgstr "السماح بÙÙƒ ترميز الكائن"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
msgid "Refuse New Network Connections"
-msgstr ""
+msgstr "Ø±ÙØ¶ اتصالات الشبكة الجديدة"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
#, fuzzy
@@ -340,52 +312,48 @@ msgid "Network Peer"
msgstr "مل٠تعري٠الشبكة Network Profiler"
#: core/io/multiplayer_api.cpp scene/animation/animation_player.cpp
-#, fuzzy
msgid "Root Node"
-msgstr "اسم العÙقدة الرئيسة (الجذر)"
+msgstr "العÙقدة الرئيسة (الجذر)"
#: core/io/networked_multiplayer_peer.cpp
-#, fuzzy
msgid "Refuse New Connections"
-msgstr "وصل"
+msgstr "Ø±ÙØ¶ الإتصالات الجديدة"
#: core/io/networked_multiplayer_peer.cpp
-#, fuzzy
msgid "Transfer Mode"
-msgstr "نوع التحوّل"
+msgstr "وضع التحويل"
#: core/io/packet_peer.cpp
msgid "Encode Buffer Max Size"
-msgstr ""
+msgstr "الحجم الأقصى لمخزن التشÙير المؤقت"
#: core/io/packet_peer.cpp
msgid "Input Buffer Max Size"
-msgstr ""
+msgstr "الحجم الأقصى لمخزن المدخلات المؤقت"
#: core/io/packet_peer.cpp
msgid "Output Buffer Max Size"
-msgstr ""
+msgstr "الحجم الأقصى لمخزن المخرجات المؤقت"
#: core/io/packet_peer.cpp
msgid "Stream Peer"
-msgstr ""
+msgstr "قرين التسلسل"
#: core/io/stream_peer.cpp
msgid "Big Endian"
-msgstr ""
+msgstr "Endian الكبيرة"
#: core/io/stream_peer.cpp
msgid "Data Array"
-msgstr ""
+msgstr "مصÙÙˆÙØ© البيانات"
#: core/io/stream_peer_ssl.cpp
msgid "Blocking Handshake"
-msgstr ""
+msgstr "حظر Ø§Ù„Ù…ØµØ§ÙØ­Ø©"
#: core/io/udp_server.cpp
-#, fuzzy
msgid "Max Pending Connections"
-msgstr "تعديل الإتصال:"
+msgstr "الحد الأقصى للاتصالات المعلقة"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -403,8 +371,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "ليس هنالك بايتات كاÙية من أجل ÙÙƒ البايتات، أو الصيغة غير صحيحة."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
-msgstr "مدخلات خاطئة %i (لم يتم تمريره) ÙÙŠ التعبير"
+msgid "Invalid input %d (not passed) in expression"
+msgstr "مدخلات خاطئة %d (لم يتم تمريرها) ÙÙŠ التعبير"
#: core/math/expression.cpp
msgid "self can't be used because instance is null (not passed)"
@@ -412,7 +380,7 @@ msgstr "لا يمكن استخدام self لأن النموذج ÙØ§Ø±Øº (لم Ù
#: core/math/expression.cpp
msgid "Invalid operands to operator %s, %s and %s."
-msgstr "معامل غير صالحة للمشغل ٪s و٪s و٪s."
+msgstr "معامل غير صالحة للمشغل %s و %s و %s."
#: core/math/expression.cpp
msgid "Invalid index of type %s for base type %s"
@@ -433,20 +401,27 @@ msgstr "عند استدعاء '%s':"
#: core/math/random_number_generator.cpp
#: modules/opensimplex/open_simplex_noise.cpp
msgid "Seed"
-msgstr ""
+msgstr "Seed"
#: core/math/random_number_generator.cpp
-#, fuzzy
msgid "State"
msgstr "الحالة"
#: core/message_queue.cpp
msgid "Message Queue"
-msgstr ""
+msgstr "قائمة انتظار الرسائل"
#: core/message_queue.cpp
msgid "Max Size (KB)"
-msgstr ""
+msgstr "الحجم الأقصى (كيلو بايت)"
+
+#: core/os/input.cpp
+msgid "Mouse Mode"
+msgstr "وضع Ø§Ù„ÙØ£Ø±Ø©"
+
+#: core/os/input.cpp
+msgid "Use Accumulated Input"
+msgstr "استخدم المدخلات المتراكمة"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
@@ -454,98 +429,85 @@ msgid "Device"
msgstr "الجهاز"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Alt"
-msgstr "الكل"
+msgstr "Ù…ÙØªØ§Ø­ Alt"
#: core/os/input_event.cpp
msgid "Shift"
-msgstr ""
+msgstr "Ù…ÙØªØ§Ø­ Shift"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Control"
-msgstr "إدارة الإصدارات (Version Control)"
+msgstr "Ù…ÙØªØ§Ø­ Control"
#: core/os/input_event.cpp
msgid "Meta"
-msgstr ""
+msgstr "المرجعية الذاتية (Meta)"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Command"
-msgstr "المجتمع"
+msgstr "Ù…ÙØªØ§Ø­ Command"
#: core/os/input_event.cpp scene/2d/touch_screen_button.cpp
#: scene/gui/base_button.cpp scene/gui/texture_button.cpp
#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Pressed"
-msgstr "إعداد Ù…ÙØ³Ø¨Ù‚"
+msgstr "ضٌغط (الزر)"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Scancode"
-msgstr "ÙØ­Øµ"
+msgstr "رمز Ø§Ù„Ù…ÙØªØ§Ø­"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Physical Scancode"
-msgstr "الزر الÙيزيائي"
+msgstr "رمز Ø§Ù„Ù…ÙØªØ§Ø­ الÙيزيائي"
#: core/os/input_event.cpp
msgid "Unicode"
-msgstr ""
+msgstr "يونيكود"
#: core/os/input_event.cpp
msgid "Echo"
-msgstr ""
+msgstr "صدى"
#: core/os/input_event.cpp scene/gui/base_button.cpp
-#, fuzzy
msgid "Button Mask"
-msgstr "زر"
+msgstr "قناع الزر"
#: core/os/input_event.cpp scene/2d/node_2d.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Global Position"
-msgstr "ثابت"
+msgstr "الموقع العالمي"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Factor"
-msgstr "Ù…ÙØªØ¬Ù‡"
+msgstr "المعامل"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Button Index"
-msgstr "مؤشر Index زر Ø§Ù„ÙØ£Ø±Ø©:"
+msgstr "مؤشر الزر"
#: core/os/input_event.cpp
msgid "Doubleclick"
-msgstr ""
+msgstr "نقرتين متتاليتين"
#: core/os/input_event.cpp
msgid "Tilt"
-msgstr ""
+msgstr "إمالة"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Pressure"
-msgstr "إعداد Ù…ÙØ³Ø¨Ù‚"
+msgstr "الضغط"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Relative"
-msgstr "نسبية المحاذاة"
+msgstr "نسبي"
#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
#: scene/animation/animation_player.cpp scene/resources/environment.cpp
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Speed"
-msgstr "السرعة:"
+msgstr "السرعة"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: scene/3d/sprite_3d.cpp
@@ -553,14 +515,12 @@ msgid "Axis"
msgstr "محاور"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Axis Value"
-msgstr "القيمة المثبتة"
+msgstr "قيمة المحور"
#: core/os/input_event.cpp modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "Index"
-msgstr "الÙهرس:"
+msgstr "المؤشر"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_nodes.cpp
@@ -571,63 +531,55 @@ msgstr "إجراء"
#: core/os/input_event.cpp scene/resources/environment.cpp
#: scene/resources/material.cpp
msgid "Strength"
-msgstr ""
+msgstr "القوة"
#: core/os/input_event.cpp
msgid "Delta"
-msgstr ""
+msgstr "دلتا"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Channel"
-msgstr "تغير"
+msgstr "قناة"
#: core/os/input_event.cpp main/main.cpp
-#, fuzzy
msgid "Message"
-msgstr "اقترا٠التعديلا"
+msgstr "الرسالة"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Pitch"
-msgstr "حدّة:"
+msgstr "الحدّة"
#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
-#, fuzzy
msgid "Velocity"
-msgstr "تحريك المسار لليمين"
+msgstr "التسارع"
#: core/os/input_event.cpp
msgid "Instrument"
-msgstr ""
+msgstr "أداة"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Controller Number"
-msgstr "رقم الخط:"
+msgstr "رقم وحدة التحكم"
#: core/os/input_event.cpp
msgid "Controller Value"
-msgstr ""
+msgstr "قيمة/(رقم تعريÙ) وحدة التحكم"
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
#: platform/windows/export/export.cpp
-#, fuzzy
msgid "Application"
-msgstr "إجراء"
+msgstr "التطبيق"
#: core/project_settings.cpp main/main.cpp
-#, fuzzy
msgid "Config"
-msgstr "تعديل اللقطة"
+msgstr "تعديل"
#: core/project_settings.cpp
-#, fuzzy
msgid "Project Settings Override"
-msgstr "إعدادات المشروع..."
+msgstr "تجاوز إعدادات المشروع"
#: core/project_settings.cpp core/resource.cpp
#: editor/animation_track_editor.cpp editor/editor_autoload_settings.cpp
@@ -650,7 +602,8 @@ msgstr "الوصÙ"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "تشغيل"
@@ -660,39 +613,36 @@ msgid "Main Scene"
msgstr "المشهد الرئيس"
#: core/project_settings.cpp
-#, fuzzy
msgid "Disable stdout"
-msgstr "تعطيل البلاط التلقائي Autotile"
+msgstr "تعطيل stdout"
#: core/project_settings.cpp
-#, fuzzy
msgid "Disable stderr"
-msgstr "عنصر معطّل"
+msgstr "تعطيل stderr"
#: core/project_settings.cpp
msgid "Use Hidden Project Data Directory"
-msgstr ""
+msgstr "استخدم دليل بيانات المشروع المخÙية"
#: core/project_settings.cpp
msgid "Use Custom User Dir"
-msgstr ""
+msgstr "استخدم دليل المستخدم المخصص"
#: core/project_settings.cpp
msgid "Custom User Dir Name"
-msgstr ""
+msgstr "اسم دليل المستخدم المخصص"
#: core/project_settings.cpp main/main.cpp
#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
#: platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Display"
-msgstr "إظهار الكل"
+msgstr "عرض"
#: core/project_settings.cpp main/main.cpp modules/csg/csg_shape.cpp
#: modules/opensimplex/noise_texture.cpp scene/2d/line_2d.cpp
#: scene/3d/label_3d.cpp scene/gui/text_edit.cpp scene/resources/texture.cpp
msgid "Width"
-msgstr ""
+msgstr "العرض"
#: core/project_settings.cpp main/main.cpp modules/csg/csg_shape.cpp
#: modules/gltf/gltf_node.cpp modules/opensimplex/noise_texture.cpp
@@ -700,23 +650,20 @@ msgstr ""
#: scene/resources/capsule_shape_2d.cpp scene/resources/cylinder_shape.cpp
#: scene/resources/font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/texture.cpp
-#, fuzzy
msgid "Height"
-msgstr "ضوء"
+msgstr "Ø§Ù„Ø§Ø±ØªÙØ§Ø¹"
#: core/project_settings.cpp
msgid "Always On Top"
-msgstr ""
+msgstr "عرض Ù†Ø§ÙØ°Ø© المشروع امام كل Ø§Ù„Ù†ÙˆØ§ÙØ°"
#: core/project_settings.cpp
-#, fuzzy
msgid "Test Width"
-msgstr "بالعرض يساراً"
+msgstr "عرض الاختبار"
#: core/project_settings.cpp
-#, fuzzy
msgid "Test Height"
-msgstr "أختبار"
+msgstr "Ø§Ø±ØªÙØ§Ø¹ الاختبار"
#: core/project_settings.cpp editor/animation_track_editor.cpp
#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
@@ -724,9 +671,8 @@ msgid "Audio"
msgstr "الصوت"
#: core/project_settings.cpp
-#, fuzzy
msgid "Default Bus Layout"
-msgstr "تحميل نسق المسار Ø§Ù„Ø¥ÙØªØ±Ø§Ø¶ÙŠ."
+msgstr "تنسيق الناقل Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠ"
#: core/project_settings.cpp editor/editor_export.cpp
#: editor/editor_file_system.cpp editor/editor_node.cpp
@@ -736,98 +682,88 @@ msgid "Editor"
msgstr "المحرّر"
#: core/project_settings.cpp
-#, fuzzy
msgid "Main Run Args"
-msgstr "معاملات المشهد الرئيس:"
+msgstr "معاملات المشهد الرئيس"
+
+#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "المسار للمشهد:"
#: core/project_settings.cpp
msgid "Search In File Extensions"
-msgstr ""
+msgstr "البحث ÙÙŠ امتدادات الملÙ"
#: core/project_settings.cpp
msgid "Script Templates Search Path"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "إدارة الإصدارات (Version Control)"
+msgstr "مسار البحث ÙÙŠ قوالب النص البرمجي"
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "التحميل التلقائي عند بدء التشغيل"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "اسم Ø§Ù„Ø¥Ø¶Ø§ÙØ©:"
+msgid "Version Control Plugin Name"
+msgstr "إدارة الإصدارات (Version Control)"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Input"
-msgstr "أض٠مدخله"
+msgstr "إدخال"
#: core/project_settings.cpp
msgid "UI Accept"
-msgstr ""
+msgstr "قبول"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Select"
-msgstr "حدد"
+msgstr "تحديد"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Cancel"
msgstr "إلغاء"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Focus Next"
-msgstr "مسار التركيز"
+msgstr "حدد التالي"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Focus Prev"
-msgstr "مسار التركيز"
+msgstr "حدد السابق"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Left"
-msgstr "ÙÙŠ الأعلى يساراً"
+msgstr "يسار"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Right"
-msgstr "ÙÙŠ الأعلى يميناً"
+msgstr "يمين"
#: core/project_settings.cpp
msgid "UI Up"
-msgstr ""
+msgstr "أعلى"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Down"
msgstr "أسÙÙ„"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Page Up"
-msgstr "Ø§Ù„ØµÙØ­Ø©: "
+msgstr "Ø§Ù„ØµÙØ­Ø© السابقة / up"
#: core/project_settings.cpp
msgid "UI Page Down"
-msgstr ""
+msgstr "Ø§Ù„ØµÙØ­Ø© التالية / down"
#: core/project_settings.cpp
msgid "UI Home"
-msgstr ""
+msgstr "الرئيسي (home)"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI End"
-msgstr "ÙÙŠ النهاية"
+msgstr "النهاية"
#: core/project_settings.cpp main/main.cpp modules/bullet/register_types.cpp
#: modules/bullet/space_bullet.cpp scene/2d/physics_body_2d.cpp
@@ -837,9 +773,8 @@ msgstr "ÙÙŠ النهاية"
#: servers/physics_2d/physics_2d_server_wrap_mt.h
#: servers/physics_2d/space_2d_sw.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
-#, fuzzy
msgid "Physics"
-msgstr " (Ùيزيائي)"
+msgstr "الÙيزياء"
#: core/project_settings.cpp editor/editor_settings.cpp
#: editor/import/resource_importer_layered_texture.cpp
@@ -849,7 +784,7 @@ msgstr " (Ùيزيائي)"
#: scene/3d/physics_body.cpp scene/resources/world.cpp
#: servers/physics/space_sw.cpp servers/physics_server.cpp
msgid "3D"
-msgstr ""
+msgstr "ثلاثي الأبعاد 3D"
#: core/project_settings.cpp
#, fuzzy
@@ -865,9 +800,8 @@ msgstr "إنشاء متصادم تراميش قريب"
#: modules/lightmapper_cpu/register_types.cpp scene/main/scene_tree.cpp
#: scene/main/viewport.cpp servers/visual/visual_server_scene.cpp
#: servers/visual_server.cpp
-#, fuzzy
msgid "Rendering"
-msgstr "Ù…ÙØ­Ø±Ùƒ الإخراج البصري:"
+msgstr "استدعاء"
#: core/project_settings.cpp drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_scene_gles3.cpp
@@ -877,17 +811,17 @@ msgstr "Ù…ÙØ­Ø±Ùƒ الإخراج البصري:"
#: scene/resources/multimesh.cpp servers/visual/visual_server_scene.cpp
#: servers/visual_server.cpp
msgid "Quality"
-msgstr ""
+msgstr "جودة"
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
-#, fuzzy
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
msgid "Filters"
-msgstr "مرشحات:"
+msgstr "مرشحات"
#: core/project_settings.cpp scene/main/viewport.cpp
msgid "Sharpen Intensity"
-msgstr ""
+msgstr "شحذ Ø§Ù„ÙƒØ«Ø§ÙØ©"
#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
@@ -903,9 +837,8 @@ msgstr "تصحيح الأخطاء"
#: core/project_settings.cpp main/main.cpp modules/gdscript/gdscript.cpp
#: modules/visual_script/visual_script.cpp scene/resources/dynamic_font.cpp
-#, fuzzy
msgid "Settings"
-msgstr "الإعدادات:"
+msgstr "الإعدادات"
#: core/project_settings.cpp editor/script_editor_debugger.cpp main/main.cpp
#: modules/mono/mono_gd/gd_mono.cpp
@@ -913,14 +846,12 @@ msgid "Profiler"
msgstr "Ù…Ùنشئ Ø§Ù„Ù…Ù„ÙØ§Øª التعريÙية Profiler"
#: core/project_settings.cpp
-#, fuzzy
msgid "Max Functions"
-msgstr "عمل دالة"
+msgstr "أقصى عمل"
#: core/project_settings.cpp scene/3d/vehicle_body.cpp
-#, fuzzy
msgid "Compression"
-msgstr "تحديد التعبير"
+msgstr "ضغط"
#: core/project_settings.cpp
#, fuzzy
@@ -933,15 +864,15 @@ msgstr ""
#: core/project_settings.cpp
msgid "Long Distance Matching"
-msgstr ""
+msgstr "مطابقة Ø§Ù„Ù…Ø³Ø§ÙØ§Øª الطويلة"
#: core/project_settings.cpp
msgid "Compression Level"
-msgstr ""
+msgstr "ضغط المستوى"
#: core/project_settings.cpp
msgid "Window Log Size"
-msgstr ""
+msgstr "حجم Ù†Ø§ÙØ°Ø© سجل"
#: core/project_settings.cpp
msgid "Zlib"
@@ -953,20 +884,19 @@ msgstr ""
#: core/project_settings.cpp platform/android/export/export.cpp
msgid "Android"
-msgstr ""
+msgstr "أندرويد"
#: core/project_settings.cpp
msgid "Modules"
-msgstr ""
+msgstr "وحدات"
#: core/register_core_types.cpp
msgid "TCP"
msgstr ""
#: core/register_core_types.cpp
-#, fuzzy
msgid "Connect Timeout Seconds"
-msgstr "الاتصالات لدالة:"
+msgstr "Ù†ÙØ° وقت الإتصال"
#: core/register_core_types.cpp
msgid "Packet Peer Stream"
@@ -981,9 +911,8 @@ msgid "SSL"
msgstr ""
#: core/register_core_types.cpp main/main.cpp
-#, fuzzy
msgid "Certificates"
-msgstr "القمم:"
+msgstr "الشهادات"
#: core/resource.cpp editor/dependency_editor.cpp
#: editor/editor_resource_picker.cpp
@@ -992,9 +921,8 @@ msgid "Resource"
msgstr "مورد"
#: core/resource.cpp
-#, fuzzy
msgid "Local To Scene"
-msgstr "اغلاق المشهد"
+msgstr "مشهد محلي"
#: core/resource.cpp editor/dependency_editor.cpp
#: editor/editor_autoload_settings.cpp editor/plugins/path_editor_plugin.cpp
@@ -1004,22 +932,20 @@ msgid "Path"
msgstr "المسار"
#: core/script_language.cpp
-#, fuzzy
msgid "Source Code"
-msgstr "مصدر"
+msgstr "مصدر الرمز"
#: core/translation.cpp editor/project_settings_editor.cpp
msgid "Locale"
msgstr "محلي"
#: core/translation.cpp
-#, fuzzy
msgid "Test"
-msgstr "أختبار"
+msgstr "إختبار"
#: core/translation.cpp scene/resources/font.cpp
msgid "Fallback"
-msgstr ""
+msgstr "تقهقر"
#: core/ustring.cpp scene/resources/segment_shape_2d.cpp
msgid "B"
@@ -1162,6 +1088,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "ÙØ§Ø±Øº"
@@ -1178,7 +1105,7 @@ msgstr "انعكاس"
msgid "Time:"
msgstr "الوقت:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "القيمة:"
@@ -1404,9 +1331,8 @@ msgid "Anim Clips:"
msgstr "مقاطع الرسوم المتحركة:"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Change Track Path"
-msgstr "تغيير مسار الطريق/المقطع"
+msgstr "تغيير مسار مقطع الحركة/الانيميشن"
#: editor/animation_track_editor.cpp
msgid "Toggle this track on/off."
@@ -1422,15 +1348,79 @@ msgstr "وضعية Ø§Ù„Ø£Ø³ØªÙŠÙØ§Ø¡"
#: editor/animation_track_editor.cpp
msgid "Loop Wrap Mode (Interpolate end with beginning on loop)"
-msgstr "وضع Ø§Ù„ØªÙØ§Ù الحلقة (استكمال النهاية مع البداية ÙÙŠ الحلقة)"
+msgstr "وضع Ø§Ù„ØªÙØ§Ù الحلقة (مزج النهاية مع البداية ÙÙŠ الحلقة)"
#: editor/animation_track_editor.cpp
msgid "Remove this track."
msgstr "إزالة هذا المسار."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
-msgstr "الوقت(ثواني): "
+msgid "Time (s):"
+msgstr "الوقت(ثواني):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "مكان الرصيÙ"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "خطوة الدوران:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "تغيير الأبعاد:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "نوع:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "إدارة قوالب التصدير:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Easing:"
+msgstr "تسارع بعد بداية بطيئة"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "In-Handle:"
+msgstr "حدد المعامل"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Out-Handle:"
+msgstr "حدد المعامل"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "عنصر Ø®Ùيار"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "إعادة تشغيل (ثواني):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "End (s):"
+msgstr "تلاشي ÙÙŠ البداية (ثواني):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "الرسومات المتحركة:"
#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
@@ -1646,8 +1636,8 @@ msgid "Add Method Track Key"
msgstr "Ø£Ø¶Ù’Ù Ù…ÙØªØ§Ø­ لمقطع الدالة (Method Track)"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
-msgstr "دالة لم توجد ÙÙŠ الكائن: "
+msgid "Method not found in object:"
+msgstr "دالة لم توجد ÙÙŠ الكائن:"
#: editor/animation_track_editor.cpp
msgid "Anim Move Keys"
@@ -2252,8 +2242,8 @@ msgid "Open"
msgstr "Ø¥ÙØªØ­"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "ملاك:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
msgid ""
@@ -2471,7 +2461,7 @@ msgstr "ÙØ´Ù„ استخراج Ø§Ù„Ù…Ù„ÙØ§Øª التالية من الحزمة \"
#: editor/editor_asset_installer.cpp
msgid "(and %s more files)"
-msgstr "(Ùˆ %s Ù…Ù„ÙØ§Øª اكثر)"
+msgstr "(Ùˆ %s Ù…Ù„ÙØ§Øª اخرى)"
#: editor/editor_asset_installer.cpp
msgid "Asset \"%s\" installed successfully!"
@@ -2555,7 +2545,7 @@ msgid "Bus Options"
msgstr "‎خيارات مسار الصوت (BUS)"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "تكرير"
@@ -2607,8 +2597,9 @@ msgstr "Ø¥ÙØªØ­ نسق مسار الصوت"
msgid "There is no '%s' file."
msgstr "لا يوجد مل٠'%s'."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "المخطط"
#: editor/editor_audio_buses.cpp
@@ -2811,6 +2802,25 @@ msgid "Choose"
msgstr "إختر"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "نسخ مسار العÙقدة"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "اكتمل بنجاح."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "ÙØ´Ù„:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "تخزين الملÙ:"
@@ -2823,6 +2833,31 @@ msgid "Packing"
msgstr "يَحزم\"ينتج المل٠المضغوط\""
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Ø­ÙØ¸ بأسم"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "لا يمكن إنشاء المجلد."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "لم نتمكن من تصدير Ù…Ù„ÙØ§Øª المشروع"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "لا يمكن ÙØªØ­ المل٠للكتابة:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Ø­ÙØ¸ بأسم"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2893,9 +2928,8 @@ msgid "Release"
msgstr "الإصدار"
#: editor/editor_export.cpp
-#, fuzzy
msgid "Binary Format"
-msgstr "Ù…ÙØ´ØºÙ‘Ù„ اللون."
+msgstr "تنسيق ثنائي"
#: editor/editor_export.cpp
msgid "64 Bits"
@@ -2943,11 +2977,33 @@ msgstr "نمودج تصحيح الأخطاء غير موجود."
msgid "Custom release template not found."
msgstr "قالب الإصدار المخصص ليس موجود."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "إدارة القوالب"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "مسار التصدير Ø§Ù„Ù…ÙØ²ÙˆØ¯ غير موجود:"
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "مل٠النموذج غير موجود:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "إدارة قوالب التصدير:"
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+#, fuzzy
+msgid "PCK Embedding"
+msgstr "الحوا٠Padding"
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr "لا يمكن Ù„Ù…ÙØµØ¯Ø±Ø§Øª 32-bit التي تتضمن PCK أن تكون أكبر من 4 GiB."
@@ -3116,9 +3172,9 @@ msgid "Import"
msgstr "استيراد"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "تصدير"
@@ -3229,9 +3285,8 @@ msgid "Save a File"
msgstr "Ø­ÙØ¸ ملÙ"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Access"
-msgstr "تم بشكل ناجح!"
+msgstr "الوصول (للملÙ)"
#: editor/editor_file_dialog.cpp editor/editor_settings.cpp
#, fuzzy
@@ -3805,7 +3860,7 @@ msgstr "ينشئ الصورة المصغرة"
#: editor/editor_node.cpp
msgid "This operation can't be done without a tree root."
-msgstr "هذه العميلة لا يمكن إجرائها من غير جذر/اساس رئيسي للشجرة."
+msgstr "هذه العميلة لا يمكن إجرائها من غير جذر رئيسي للشجرة."
#: editor/editor_node.cpp
msgid ""
@@ -4269,15 +4324,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "مشهد"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "المسار للمشهد:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4406,6 +4452,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "إدارة الإصدارات (Version Control)"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "إعادة التسمية"
@@ -4434,6 +4484,10 @@ msgstr "تمكين/إيقا٠الوضع الخالي من الإلهاء."
msgid "Add a new scene."
msgstr "Ø¥Ø¶Ø§ÙØ© مشهد جديد."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "مشهد"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "اذهب الي المشهد Ø§Ù„Ù…ÙØªÙˆØ­ مسبقا."
@@ -5109,12 +5163,14 @@ msgid "Selected node is not a Viewport!"
msgstr "العÙقدة المختارة ليست إطار عرض Viewport!"
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr "الحجم: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
+msgstr "الحجم:"
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr "Ø§Ù„ØµÙØ­Ø©: "
+msgid "Page:"
+msgstr "Ø§Ù„ØµÙØ­Ø©:"
#: editor/editor_properties_array_dict.cpp
#: editor/plugins/theme_editor_plugin.cpp
@@ -5212,6 +5268,11 @@ msgstr ""
"من ÙØ¶Ù„Ùƒ أضÙÙ’ إعداد تصدير ÙÙŠ قائمة التصدير أو عر٠إعداد تصدير موجود كقابل "
"للتشغيل(عامل)."
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "مشروع"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "أكتب منطقك ÙÙŠ الطريقة ()run_."
@@ -5495,7 +5556,9 @@ msgid "Draw Spaces"
msgstr "استدعاءات الرسم:"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr "تنقل"
@@ -6065,9 +6128,8 @@ msgstr "الواجهة View الأمامية"
#: editor/editor_settings.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
-#, fuzzy
msgid "Remote Host"
-msgstr "من بعد "
+msgstr "المضي٠عن بعد"
#: editor/editor_settings.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
@@ -6094,10 +6156,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "مدير المشروع"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -6860,14 +6924,6 @@ msgid "Replace in Files"
msgstr "إستبدل ÙÙŠ كل Ø§Ù„Ù…ÙØ§Øª"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "جدْ: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "إستبدال: "
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr "إستبدال الكل (لا رجوع)"
@@ -6986,7 +7042,7 @@ msgstr ""
#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/texture.cpp scene/resources/visual_shader.cpp
msgid "Flags"
-msgstr ""
+msgstr "أعلام"
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
@@ -6996,7 +7052,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "مرشحات:"
@@ -7060,9 +7116,8 @@ msgid "Octahedral Compression"
msgstr "تحديد التعبير"
#: editor/import/resource_importer_obj.cpp
-#, fuzzy
msgid "Optimize Mesh Flags"
-msgstr "الحجم: "
+msgstr "تحسين أعلام المجسّم"
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
@@ -7264,8 +7319,8 @@ msgid "Generating Lightmaps"
msgstr "انشاء خارطة الضوء"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
-msgstr "انشاء من اجل المجسم: "
+msgid "Generating for Mesh:"
+msgstr "توليد للمجسّم:"
#: editor/import/resource_importer_scene.cpp
msgid "Running Custom Script..."
@@ -7292,6 +7347,18 @@ msgid "Saving..."
msgstr "جاري Ø§Ù„Ø­ÙØ¸..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7349,9 +7416,8 @@ msgid "Normal Map Invert Y"
msgstr "حجم عشوائي:"
#: editor/import/resource_importer_texture.cpp
-#, fuzzy
msgid "Size Limit"
-msgstr "الحجم: "
+msgstr "الحد الأقصى للحجم"
#: editor/import/resource_importer_texture.cpp
msgid "Detect 3D"
@@ -8103,10 +8169,12 @@ msgstr "إعدادت Ø´ÙØ§Ùية طبقات البصل"
msgid "Directions"
msgstr "الاتجاهات"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "الماضي"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "المستقبل"
@@ -8267,8 +8335,8 @@ msgstr ""
"تحديد الرسومية المتحركة الخاصة بالنهاية. سيكون ذلك Ù…Ùيداً للحركات Ø§Ù„ÙØ±Ø¹ÙŠØ©."
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
-msgstr "الانتقال: "
+msgid "Transition:"
+msgstr "المراحل الانتقالية:"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Play Mode:"
@@ -8284,11 +8352,6 @@ msgid "New name:"
msgstr "إسم جديد:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "تغيير الأبعاد:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "تلاشي ÙÙŠ البداية (ثواني):"
@@ -9192,6 +9255,7 @@ msgstr "إنشاء عظمة (عظام) مخصوصة من عÙقدة (عÙقد)"
msgid "Clear Custom Bones"
msgstr "مسح العظام المخصوصة"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9258,6 +9322,10 @@ msgid "Preview Canvas Scale"
msgstr "إظهار تحجيم اللوحة Canvas"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "المخطط"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr "قناع الترجمة لأجل إدخال Ø§Ù„Ù…ÙØ§ØªÙŠØ­."
@@ -9447,7 +9515,7 @@ msgstr "قناع الانبعاث"
#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Solid Pixels"
-msgstr "البكسيلات الأساسية (Solid Pixels)"
+msgstr "البكسلات غير Ø§Ù„Ø´ÙØ§ÙØ©"
#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
#: editor/plugins/particles_2d_editor_plugin.cpp
@@ -9972,9 +10040,8 @@ msgid "Generate Visibility Rect"
msgstr "توليد Rect الرؤية"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Can only set point into a ParticlesMaterial process material"
-msgstr "لا يمكن إنشاء سوى نقطة وحيدة داخل معالج المواد لـ ParticlesMaterial"
+msgstr "لا يمكن تحديد نقطة سوى ÙÙŠ الParticlesMaterial لمعالج المواد"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Convert to CPUParticles2D"
@@ -10026,8 +10093,8 @@ msgid "Volume"
msgstr "حجم"
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr "مصدر الانبعاث: "
+msgid "Emission Source:"
+msgstr "مصدر الانبعاث:"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
@@ -10262,6 +10329,7 @@ msgid "Points"
msgstr "النقاط"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr "Ø§Ù„Ù…ÙØ¶Ù„عات"
@@ -10416,13 +10484,6 @@ msgid "Instance:"
msgstr "نمذجة:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "نوع:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr "Ø§ÙØªØ­ ÙÙŠ Ø§Ù„Ù…ÙØ­Ø±Ø±"
@@ -10431,10 +10492,6 @@ msgstr "Ø§ÙØªØ­ ÙÙŠ Ø§Ù„Ù…ÙØ­Ø±Ø±"
msgid "Load Resource"
msgstr "تحميل المورد"
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr "مورد محمل Ø³Ù„ÙØ§Ù‹"
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr "إقلبْ البوابات"
@@ -11134,13 +11191,15 @@ msgstr "تدوير"
msgid "Translate"
msgstr "ترجم"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr "ÙŠÙØ­Ø¬Ù…: "
+msgid "Scaling:"
+msgstr "تحجيم:"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr "يترجم: "
+msgid "Translating:"
+msgstr "التحريك:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -11163,11 +11222,6 @@ msgid "Yaw:"
msgstr "ياو:"
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr "الحجم:"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr "كائنات مرسومة:"
@@ -11193,7 +11247,7 @@ msgstr "القمم:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "FPS: %d (%s ms)"
-msgstr "FPS: %d (%s جزء من الثانية)"
+msgstr "عدد الإطارات ÙÙŠ الثانية: %d (%s ميلي ثانية)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
@@ -11657,7 +11711,8 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr "هندسياً غير صالح، لا يمكن استبداله بسطح (mesh)."
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+#, fuzzy
+msgid "Convert to MeshInstance2D"
msgstr "تحويل إلى Mesh2D"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11689,16 +11744,16 @@ msgid "Sprite"
msgstr "رسومية"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr "التبسيط: "
+msgid "Simplification:"
+msgstr "التبسيط:"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
-msgstr "التقلص (Pixels): "
+msgid "Shrink (Pixels):"
+msgstr "التقلص (Pixels):"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
-msgstr "التكبير (Pixels): "
+msgid "Grow (Pixels):"
+msgstr "التكبير (Pixels):"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Update Preview"
@@ -11893,7 +11948,7 @@ msgstr "{num} خط (خطوط)"
#: editor/plugins/theme_editor_plugin.cpp
msgid "No fonts found."
-msgstr "لم يتم العثور على الخطوط."
+msgstr "لا توجد خطوط."
#: editor/plugins/theme_editor_plugin.cpp
msgid "{num} icon(s)"
@@ -12650,8 +12705,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr "اختر الشكل أو البلاط Ø§Ù„ÙØ±Ø¹ÙŠ Ø£Ùˆ البلاط، السابق."
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr "الإقليم"
@@ -14195,36 +14249,10 @@ msgid "Delete preset '%s'?"
msgstr "Ø­Ø°Ù Ø§Ù„Ù…ÙØ¹Ø¯ Ù…ÙØ³Ø¨Ù‚اً '%s'ØŸ"
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-"أخÙÙ‚ تصدير المشروع لمنصة '%s'.\n"
-"على ما يبدو قوالب التصدير Ù…Ùقودة أو غير صالحة."
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-"أخÙÙ‚ تصدير المشروع لمنصة '%s'.\n"
-"قد يعود ذلك إلى خلل تهيئة ÙÙŠ الإعدادات Ø§Ù„Ù…ÙØ¹Ø¯Ù‘Ø© Ø³Ù„ÙØ§Ù‹ أو إعدادات التصدير الخاصة "
-"بك."
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "تصدير الكÙÙ„"
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr "مسار التصدير Ø§Ù„Ù…ÙØ²ÙˆØ¯ غير موجود:"
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr "قوالب تصدير هذه المنصة Ù…Ùقودة / ØªØ§Ù„ÙØ©:"
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr "مسار التصدير"
@@ -14372,6 +14400,11 @@ msgid "Export templates for this platform are missing:"
msgstr "قوالب التصدير لهذه المنصة Ù…Ùقودة:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "مؤسسون المشروع"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "إدارة قوالب التصدير"
@@ -15909,8 +15942,8 @@ msgid "Attach Node Script"
msgstr "ألحق نص برمجي للعÙقدة"
#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr "من بعد "
+msgid "Remote %s:"
+msgstr "من بعد %s:"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -16796,7 +16829,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "Ø§Ù„Ù…ÙØ¶Ù„عات"
@@ -16974,8 +17007,8 @@ msgid "Disabled GDNative Singleton"
msgstr "تعطيل نمط البرمجة Singleton ل GDNative"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
-msgstr "مكتبات: "
+msgid "Libraries:"
+msgstr "مكتبات:"
#: modules/gdnative/nativescript/nativescript.cpp
#, fuzzy
@@ -17041,7 +17074,7 @@ msgstr "لا تستند الى نص برمجي"
#: modules/gdscript/gdscript_functions.cpp
msgid "Not based on a resource file"
-msgstr "لا تستند على مل٠مورد"
+msgstr "لا يعتمد على مل٠موارد"
#: modules/gdscript/gdscript_functions.cpp
msgid "Invalid instance dictionary format (missing @path)"
@@ -17420,7 +17453,6 @@ msgid "Use In Baked Light"
msgstr "طبخ (إعداد) خرائط الضوء"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17450,6 +17482,19 @@ msgstr "المنتصÙ"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "تنقل"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "وضع التنقل"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "التبويب التالي"
@@ -17871,16 +17916,16 @@ msgstr ""
"أصلح العقدة من ÙØ¶Ù„Ùƒ."
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
-msgstr "أرجعت العÙقدة تسلسلاً Ù…ÙØ®Ø±Ø¬Ø§Ù‹ غير صالح: "
+msgid "Node returned an invalid sequence output:"
+msgstr "أرجعت العÙقدة تسلسلاً Ù…ÙØ®Ø±Ø¬Ø§Ù‹ غير صالح:"
#: modules/visual_script/visual_script.cpp
msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr "عثر على تسلسل بت ولكن ليس العقدة ÙÙŠ المكدس ,Ø§Ø±ÙØ¹ تقرير عن الخطأ!"
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
-msgstr "حدوث تجاوز للتكدس ( Stack overflow) مع عمق التكدس: "
+msgid "Stack overflow with stack depth:"
+msgstr "حدوث تجاوز للتكدس ( Stack overflow) مع عمق التكدس:"
#: modules/visual_script/visual_script.cpp
#, fuzzy
@@ -18254,16 +18299,16 @@ msgid "for (elem) in (input):"
msgstr "لكل (عنصر) ÙÙŠ (معلومات-الإدخال):"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
-msgstr "نوع الإدخال غير متوقع: "
+msgid "Input type not iterable:"
+msgstr "نوع الإدخال لا يمكن التكرار عليه:"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Iterator became invalid"
msgstr "أصبح المÙكرر غير صالحاً"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
-msgstr "أصبح المÙكرر غير صالحاً: "
+msgid "Iterator became invalid:"
+msgstr "أصبح المÙكرر غير صالحاً:"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Sequence"
@@ -18435,12 +18480,12 @@ msgid "Operator"
msgstr "Ù…ÙØ´ØºÙ„ التراكم."
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ": معامل النوع غير صحيح: "
+msgid "Invalid argument of type:"
+msgstr "معامل غير صحيح من النوع:"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ": معاملات غير صالحة: "
+msgid "Invalid arguments:"
+msgstr "معاملات غير صالحة:"
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -18452,12 +18497,12 @@ msgid "Var Name"
msgstr "الأسم"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
-msgstr "لم يتم إيجاد VariableGet ÙÙŠ النص البرمجي: "
+msgid "VariableGet not found in script:"
+msgstr "لم يتم إيجاد VariableGet ÙÙŠ النص البرمجي:"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
-msgstr "لم يتم إيجاد (Ù…ÙØ­Ø¯Ø¯ Ø§Ù„Ù…ÙØªØºÙŠØ±) VariableSet ÙÙŠ النص البرمجي: "
+msgid "VariableSet not found in script:"
+msgstr "لم يتم إيجاد VariableSet ÙÙŠ النص البرمجي:"
#: modules/visual_script/visual_script_nodes.cpp
#, fuzzy
@@ -19011,10 +19056,6 @@ msgid "Could not execute on device."
msgstr "لا يمكن إنشاء المجلد."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr "تعذر العثور على أداة توقيع تطبيق اندرويد\"apksigner\"."
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -19150,17 +19191,20 @@ msgstr ""
"إصدار \"حزمة التطوير البرمجية Ø§Ù„Ù…Ø³ØªÙ‡Ø¯ÙØ©\" يجب أن يكون أعلى من أو يساوي إصدار "
"\"Min Sdk\"."
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "الإشاراة"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
-"تعذر العثور على 'apksigner'.\n"
-"تأكد من ÙØ¶Ù„Ùƒ إن كان الأمر موجوداً ÙÙŠ دليل Ù…Ù„ÙØ§Øª أدوات-بناء الأندرويد Android "
-"SDK build-tools.\n"
-"لم يتم توقيع الناتج %s."
+"تعذر العثور على 'apksigner'. تأكد من ÙØ¶Ù„Ùƒ إن كان الأمر موجوداً ÙÙŠ دليل Ù…Ù„ÙØ§Øª "
+"أدوات-بناء حزمة تطوير الأندرويد Android SDK build-tools. لم يتم توقيع الناتج "
+"%s."
#: platform/android/export/export_plugin.cpp
msgid "Signing debug %s..."
@@ -19175,6 +19219,10 @@ msgid "Could not find keystore, unable to export."
msgstr "لا يمكن العثور على Ù…ÙØªØ§Ø­ المتجر، لا يمكن التصدير."
#: platform/android/export/export_plugin.cpp
+msgid "Could not start apksigner executable."
+msgstr "تعذر بدء تشغيل apksigner ."
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr "أعاد 'apksigner' الخطأ التالي #%d"
@@ -19205,8 +19253,8 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "أسم المل٠غير صالح! يتطلب مل٠اندرويد APK أمتداد *.apk لتعمل."
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
-msgstr "صيغة تصدير غير مدعومة!\n"
+msgid "Unsupported export format!"
+msgstr "تنسيق تصدير غير مدعوم!"
#: platform/android/export/export_plugin.cpp
msgid ""
@@ -19218,25 +19266,22 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
-"نسخ بناء Android غير متواÙقة:\n"
-"\tقوالب Ù…Ùنصبة: %s\n"
-"\tإصدار غودوت: %s\n"
-"من ÙØ¶Ù„Ùƒ أعد تنصيب قالب بناء الأندرويد Android من قائمة \"المشروع\"."
+"نسخ بناء Android غير متواÙقة: قوالب Ù…Ùنصبة: %s إصدار غودوت: %s. من ÙØ¶Ù„Ùƒ أعد "
+"تنصيب قالب بناء الأندرويد من قائمة 'المشروع'."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
"تعذرت كتابة overwrite Ù…Ù„ÙØ§Øª res://android/build/res/*.xml مع اسم المشروع"
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
-msgstr "لم يتمكن من تصدير Ù…Ù„ÙØ§Øª المشروع إلى مشروع gradle\n"
+msgid "Could not export project files to gradle project."
+msgstr "لم يتمكن من تصدير Ù…Ù„ÙØ§Øª المشروع إلى مشروع gradle."
#: platform/android/export/export_plugin.cpp
msgid "Could not write expansion package file!"
@@ -19248,15 +19293,15 @@ msgstr "بناء مشروع الأندرويد (gradle)"
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
-"أخÙÙ‚ بناء مشروع الأندرويد، تÙقد Ø§Ù„Ù…ÙØ®Ø±Ø¬Ø§Øª للإطلاع على الخطأ.\n"
-"بصورة بديلة يمكنك زيارة docs.godotengine.org لأجل مستندات البناء للأندرويد."
+"أخÙÙ‚ بناء مشروع الأندرويد، تÙقد Ø§Ù„Ù…ÙØ®Ø±Ø¬Ø§Øª للإطلاع على الخطأ. بصورة بديلة "
+"يمكنك زيارة docs.godotengine.org لأجل مستندات البناء للأندرويد."
#: platform/android/export/export_plugin.cpp
msgid "Moving output"
-msgstr "نقل المخرجات"
+msgstr "جاري تحريك المخرجات"
#: platform/android/export/export_plugin.cpp
msgid ""
@@ -19266,7 +19311,7 @@ msgstr "تعذر نسخ وإعادة تسمية المل٠المصدر، تÙÙ‚
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr "لم يتم إيجاد الرسم المتحرك: '%s'"
#: platform/android/export/export_plugin.cpp
@@ -19275,23 +19320,18 @@ msgid "Creating APK..."
msgstr "إنشاء المحيط..."
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
-msgstr ""
-"لم يتم إيجاد قالب APK للتصدير:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
+msgstr "لم يتم إيجاد قالب APK للتصدير: \"%s\"."
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
-"هنالك مكاتب قوالب تصدير ناقصة بالنسبة للمعمارية المختارة: %s.\n"
-"ابن قالب التصدير متضمناً جميع المكتبات الضرورية، أو أزال اختيار المعماريات "
-"الناقصة من خيارات التصدير المعدّة مسبقاً."
+"هنالك مكاتب قوالب تصدير ناقصة بالنسبة للمعمارية المختارة: %s.ابن قالب "
+"التصدير متضمناً جميع المكتبات الضرورية، أو أزال اختيار المعماريات الناقصة من "
+"خيارات التصدير المعدّة مسبقاً."
#: platform/android/export/export_plugin.cpp
#, fuzzy
@@ -19299,7 +19339,8 @@ msgid "Adding files..."
msgstr "Ø¥Ø¶Ø§ÙØ© %s..."
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+#, fuzzy
+msgid "Could not export project files."
msgstr "لم نتمكن من تصدير Ù…Ù„ÙØ§Øª المشروع"
#: platform/android/export/export_plugin.cpp
@@ -19435,9 +19476,8 @@ msgid "Capabilities"
msgstr "إلصق الخاصيات"
#: platform/iphone/export/export.cpp
-#, fuzzy
msgid "Access Wi-Fi"
-msgstr "تم بشكل ناجح!"
+msgstr "الوصول للواي-ÙØ§ÙŠ"
#: platform/iphone/export/export.cpp
#, fuzzy
@@ -19542,6 +19582,17 @@ msgstr "قص العÙقد"
msgid "Custom BG Color"
msgstr "قص العÙقد"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "إدارة القوالب"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "قالب الإصدار المخصص ليس موجود."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -19565,23 +19616,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr "شغل مل٠HTML Ø§Ù„Ù…ÙØµØ¯Ø± ÙÙŠ Ø§Ù„Ù…ØªØµÙØ­ Ø§Ù„Ø¥ÙØªØ±Ø§Ø¶ÙŠ Ù„Ù„Ù†Ø¸Ø§Ù…."
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
msgstr "لا يمكن ÙØªØ­ القالب من أجل التصدير:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
msgstr "إدارة قوالب التصدير:"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+#, fuzzy
+msgid "Could not write file: \"%s\"."
msgstr "لا يمكن كتابة الملÙ:"
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "تحديد الهامش"
+
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read file:"
+msgid "Could not read file: \"%s\"."
msgstr "لا يمكن كتابة الملÙ:"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "Ø§Ù„ØªØ¨Ø§Ø¹ÙØ¯Ø§Øª:"
@@ -19657,15 +19720,17 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr "لا يمكن قراءة مل٠HTML مخصص:"
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+#, fuzzy
+msgid "Could not create HTTP server directory: %s."
msgstr "لا يمكن إنشاء مجلد خادم ال HTTP:"
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+#, fuzzy
+msgid "Error starting HTTP server: %d."
msgstr "خطأ ÙÙŠ بدء تشغيل خادم HTTP:"
#: platform/javascript/export/export.cpp
@@ -19966,9 +20031,27 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "لم نتمكن من تصدير Ù…Ù„ÙØ§Øª المشروع"
+
+#: platform/osx/export/export.cpp
+msgid "Could not start xcrun executable."
+msgstr "تعذر بدء تشغيل xcrun."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "توطين"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19984,20 +20067,75 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "لم توجد ايقونات."
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "خطأ ÙÙŠ تحميل الملÙ: %s"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "الاتجاهات"
+
+#: platform/osx/export/export.cpp
+msgid "Could not start hdiutil executable."
+msgstr "تعذر بدء المل٠التنÙيذي hdiutil."
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "ينشئ الصورة المصغرة"
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+#, fuzzy
+msgid "Could not find template app to export: \"%s\"."
msgstr "لم يتم إيجاد قالب التطبيق (Template app) للتصدير:"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "إدارة قوالب التصدير:"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -20005,7 +20143,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -20047,6 +20185,15 @@ msgstr ""
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "ZIP Creation"
+msgstr "مشروع"
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr "تعذر ÙØªØ­ المل٠للقراءة من المسار \"%s\"."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Invalid bundle identifier:"
msgstr "Ù…ÙØ­Ø¯Ø¯ غير صالح:"
@@ -20362,6 +20509,11 @@ msgid "Debug Algorithm"
msgstr "Ù…Ùنقح الأخطاء"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "لا يمكن حذ٠مل٠مؤقت:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20409,6 +20561,70 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "دوران عشوائي:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "لا يمكن العثور على Ù…ÙØªØ§Ø­ المتجر، لا يمكن التصدير."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "لا يمكن العثور على Ù…ÙØªØ§Ø­ المتجر، لا يمكن التصدير."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "لا يمكن العثور على Ù…ÙØªØ§Ø­ المتجر، لا يمكن التصدير."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "لا يمكن العثور على Ù…ÙØªØ§Ø­ المتجر، لا يمكن التصدير."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Ù…ÙØ­Ø¯Ø¯ غير صالح:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "اسم غير صالح."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "لا يمكن حذ٠مل٠مؤقت:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20427,6 +20643,23 @@ msgid "Invalid product version:"
msgstr "Ù…ÙØ¹Ø±Ù GUID (Ø§Ù„Ù…ÙØ¹Ø±Ù‘Ù Ø§Ù„ÙØ±ÙŠØ¯ العالمي) للمنتج غير صالح:"
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "صيغة غير صالحة."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "Ù†Ø§ÙØ°Ø© جديدة"
@@ -20443,6 +20676,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20570,7 +20807,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "اختر Ø§Ù„Ù…Ø³Ø§ÙØ©:"
@@ -20965,9 +21203,8 @@ msgstr "قناع الانبعاث"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Sphere Radius"
-msgstr "مصدر الانبعاث: "
+msgstr "قطر الجسم الكروى"
#: scene/2d/cpu_particles_2d.cpp
#, fuzzy
@@ -21035,9 +21272,8 @@ msgstr "خطي"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Accel"
-msgstr "تم بشكل ناجح!"
+msgstr "التسارع"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -21452,17 +21688,19 @@ msgstr ""
"العقدة. ÙŠÙØ±Ø¬Ù‰ تعيين خاصية أو رسم مضلع."
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-"يجب أن يكون نموذج-المضلع-المتنقل (NavigationPolygonInstance) تابعًا أو Ø­Ùيدًا "
-"لعقدة التنقل-ثنائي-الأبعاد (Navigation2D). انه Ùقط ÙŠÙˆÙØ± بيانات التنقل."
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr ""
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "ÙÙŠ أسÙÙ„ المنتصÙ"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "Ø§Ù„Ø³ÙØ±"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
#, fuzzy
@@ -21737,9 +21975,8 @@ msgid "Safe Margin"
msgstr "تحديد الهامش"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Sync To Physics"
-msgstr " (Ùيزيائي)"
+msgstr "تزامن مع الÙيزياء"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
@@ -22716,14 +22953,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-"يجب أن يكون نموذج-مجسم-التنقل (NavigationMeshInstance) تابعًا أو Ø­Ùيدًا لعقدة "
-"التنقل (Navigation node). انه ÙŠÙˆÙØ± Ùقط بيانات التنقل."
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
#, fuzzy
msgid "NavMesh"
@@ -23252,9 +23481,8 @@ msgid "A RoomGroup should not be a child or grandchild of a Portal."
msgstr ""
#: scene/3d/portal.cpp
-#, fuzzy
msgid "Portal Active"
-msgstr " [البوابات Ù…ÙØ¹Ù„Ø©]"
+msgstr "البوابة نشطة"
#: scene/3d/portal.cpp scene/resources/occluder_shape_polygon.cpp
msgid "Two Way"
@@ -24270,9 +24498,8 @@ msgid "Pass On Modal Close Click"
msgstr ""
#: scene/gui/control.cpp
-#, fuzzy
msgid "Size Flags"
-msgstr "الحجم: "
+msgstr "أعلام الحجم"
#: scene/gui/control.cpp
#, fuzzy
@@ -24635,9 +24862,8 @@ msgid "Max Value"
msgstr "القيمة"
#: scene/gui/range.cpp
-#, fuzzy
msgid "Page"
-msgstr "Ø§Ù„ØµÙØ­Ø©: "
+msgstr "ØµÙØ­Ø©"
#: scene/gui/range.cpp
#, fuzzy
@@ -25055,9 +25281,8 @@ msgid "Download File"
msgstr "تنزيل"
#: scene/main/http_request.cpp
-#, fuzzy
msgid "Download Chunk Size"
-msgstr "جاري التنزيل"
+msgstr "حجم جزء التنزيل"
#: scene/main/http_request.cpp
msgid "Body Size Limit"
@@ -25128,9 +25353,8 @@ msgid "Custom Multiplayer"
msgstr "تحديد التكرار:"
#: scene/main/node.cpp
-#, fuzzy
msgid "Process Priority"
-msgstr "تمكين الأولوية"
+msgstr "أولوية العملية"
#: scene/main/scene_tree.cpp scene/main/timer.cpp
#, fuzzy
@@ -25198,9 +25422,8 @@ msgid "Draw 2D Outlines"
msgstr "أنشئ الحد"
#: scene/main/scene_tree.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Reflections"
-msgstr "الاتجاهات"
+msgstr "الانعكاسات"
#: scene/main/scene_tree.cpp
#, fuzzy
@@ -25364,84 +25587,82 @@ msgid "Enable 2D"
msgstr "ØªÙØ¹ÙŠÙ„"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Enable 3D"
-msgstr "ØªÙØ¹ÙŠÙ„"
+msgstr "ØªÙØ¹ÙŠÙ„ 3D"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Object Picking"
-msgstr "ØªÙØ¹ÙŠÙ„ تقشير البصل"
+msgstr "اختيار الكائن"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Disable Input"
-msgstr "عنصر معطّل"
+msgstr "تعطيل الإدخال"
#: scene/main/viewport.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Shadow Atlas"
-msgstr "أطلس جديد"
+msgstr "أطلس الظل"
#: scene/main/viewport.cpp
msgid "Quad 0"
-msgstr ""
+msgstr "رباعي 0"
#: scene/main/viewport.cpp
msgid "Quad 1"
-msgstr ""
+msgstr "رباعية 1"
#: scene/main/viewport.cpp
msgid "Quad 2"
-msgstr ""
+msgstr "رباعية 2"
#: scene/main/viewport.cpp
msgid "Quad 3"
-msgstr ""
+msgstr "رباعية 3"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Canvas Transform"
-msgstr "محو التَحَوّل"
+msgstr "تحويل اللوحة"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Global Canvas Transform"
-msgstr "Ø§Ù„Ø§Ø­ØªÙØ§Ø¸ بالتحوّل الشمولي Global"
+msgstr "تحويل اللوحة الشامل (global)"
#: scene/main/viewport.cpp
msgid "Tooltip Delay (sec)"
-msgstr ""
+msgstr "تأخير تلميح الأدوات (ثانية)"
#: scene/register_scene_types.cpp
-#, fuzzy
msgid "Swap OK Cancel"
-msgstr "إلغاء"
+msgstr "مبادلة مواÙÙ‚ إلغاء"
#: scene/register_scene_types.cpp
-#, fuzzy
msgid "Layer Names"
-msgstr "الأسم"
+msgstr "أسماء الطبقات"
#: scene/register_scene_types.cpp
-#, fuzzy
msgid "2D Render"
-msgstr "Ù…ÙØ­Ø±Ùƒ الإخراج البصري:"
+msgstr "إنشاء صورة 2D"
#: scene/register_scene_types.cpp
-#, fuzzy
msgid "3D Render"
-msgstr "Ù…ÙØ­Ø±Ùƒ الإخراج البصري:"
+msgstr "إنشاء صورة 3D"
#: scene/register_scene_types.cpp
-#, fuzzy
msgid "2D Physics"
-msgstr " (Ùيزيائي)"
+msgstr "Ùيزياء 2D"
#: scene/register_scene_types.cpp
-#, fuzzy
msgid "3D Physics"
-msgstr " (Ùيزيائي)"
+msgstr "Ùيزياء 3D"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "تنقل"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "تنقل"
#: scene/register_scene_types.cpp
msgid "Use hiDPI"
@@ -26524,9 +26745,8 @@ msgid "Distance"
msgstr "اختر Ø§Ù„Ù…Ø³Ø§ÙØ©:"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Transition"
-msgstr "الانتقال: "
+msgstr "الانتقال"
#: scene/resources/environment.cpp
msgid "DOF Near Blur"
@@ -26549,7 +26769,7 @@ msgstr ""
#: scene/resources/environment.cpp
#: servers/audio/effects/audio_effect_chorus.cpp
msgid "2"
-msgstr ""
+msgstr "2"
#: scene/resources/environment.cpp
#: servers/audio/effects/audio_effect_chorus.cpp
@@ -26862,16 +27082,15 @@ msgid "Subsurf Scatter"
msgstr ""
#: scene/resources/material.cpp
-#, fuzzy
msgid "Transmission"
-msgstr "الانتقال: "
+msgstr "الإنتقال"
#: scene/resources/material.cpp
#, fuzzy
msgid "Refraction"
msgstr "Ø§Ù„ØªØ¨Ø§Ø¹ÙØ¯Ø§Øª:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -26956,7 +27175,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "تحجيم:"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "حدد نوع المتغير"
#: scene/resources/navigation_mesh.cpp
@@ -26974,10 +27198,15 @@ msgid "Source Group Name"
msgstr "مصدر"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "معاملات المشهد الرئيس:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -26987,11 +27216,16 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Regions"
+msgstr "الإقليم"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Merge Size"
msgstr "دمج من المشهد"
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -27005,6 +27239,11 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Details"
+msgstr "أظهر Ø§Ù„Ø¥ÙØªØ±Ø§Ø¶ÙŠ"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Sample Distance"
msgstr "اختر Ø§Ù„Ù…Ø³Ø§ÙØ©:"
@@ -27022,7 +27261,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -27071,9 +27310,8 @@ msgid "Point Texture"
msgstr "نقاط الانبعاث:"
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Normal Texture"
-msgstr "مصدر الانبعاث: "
+msgstr "نقش طبيعي"
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -27277,9 +27515,8 @@ msgid "Base Texture"
msgstr "إزالة النقش"
#: scene/resources/texture.cpp
-#, fuzzy
msgid "Image Size"
-msgstr "Ø§Ù„ØµÙØ­Ø©: "
+msgstr "حجم الصورة"
#: scene/resources/texture.cpp
#, fuzzy
@@ -27437,6 +27674,11 @@ msgid "Scenario"
msgstr "مشهد"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "تنقل"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -27454,6 +27696,26 @@ msgstr "الخط اليساري"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Ø§ÙØªØ±Ø§Ø¶ÙŠ"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "تحديث Ø§Ù„Ù…ÙØ¹Ø§ÙŠÙ†Ø©"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "أختبار"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "تعديل الإتصال:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/az.po b/editor/translations/az.po
index 844ee425d3..6e8dfbf1f3 100644
--- a/editor/translations/az.po
+++ b/editor/translations/az.po
@@ -210,9 +210,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr ""
@@ -324,7 +325,8 @@ msgstr ""
"format."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "İfadədə uyğunsuz giriş %d (ötürülmədi)"
#: core/math/expression.cpp
@@ -371,6 +373,15 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Metod çağırma izi"
+
+#: core/os/input.cpp
+msgid "Use Accumulated Input"
+msgstr ""
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -555,7 +566,8 @@ msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr ""
@@ -638,24 +650,23 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-msgid "Plugin Name"
+msgid "Version Control Plugin Name"
msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
@@ -763,7 +774,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "Siqnalları filtirlə"
@@ -1034,6 +1046,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
#, fuzzy
msgid "Free"
@@ -1051,7 +1064,7 @@ msgstr "Güzgü"
msgid "Time:"
msgstr "Vaxt:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Dəyər:"
@@ -1309,10 +1322,70 @@ msgid "Remove this track."
msgstr "Bu izi sil."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "Vaxt (sn): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Animasiyanı Təmizləmə"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "İnterpolasiya rejimi"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "%s baza növü üçün %s növünün səhv indeksi"
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Stream:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "%s növünü dəyişdirin"
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Animasiyalar:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "İz funksiyasını aktiv edin"
@@ -1535,7 +1608,8 @@ msgid "Add Method Track Key"
msgstr "Metod İz Açarı əlavə edin"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "Metod obyektdə tapılmadı: "
#: editor/animation_track_editor.cpp
@@ -2156,8 +2230,8 @@ msgid "Open"
msgstr "Aç"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Bunların Sahibləri:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
#, fuzzy
@@ -2466,7 +2540,7 @@ msgid "Bus Options"
msgstr ""
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr ""
@@ -2518,8 +2592,8 @@ msgstr ""
msgid "There is no '%s' file."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+msgid "Layout:"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -2722,6 +2796,22 @@ msgid "Choose"
msgstr ""
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed successfully."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed."
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr ""
@@ -2734,6 +2824,26 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp
+msgid "Save PCK"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Cannot create file \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed to export project files."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Can't open file to read from path \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Save ZIP"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2836,8 +2946,25 @@ msgstr ""
msgid "Custom release template not found."
msgstr ""
+#: editor/editor_export.cpp
+msgid "Prepare Template"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "The given export path doesn't exist."
+msgstr ""
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+msgid "Template file not found: \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed to copy export template."
+msgstr ""
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
msgstr ""
#: editor/editor_export.cpp
@@ -3009,9 +3136,9 @@ msgid "Import"
msgstr ""
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr ""
@@ -4094,14 +4221,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4218,6 +4337,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr ""
@@ -4245,6 +4368,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
@@ -4877,11 +5004,13 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+msgid "Page:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
@@ -4977,6 +5106,11 @@ msgid ""
"as runnable."
msgstr ""
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Layihə Qurucuları"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -5235,7 +5369,9 @@ msgid "Draw Spaces"
msgstr ""
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr ""
@@ -5785,10 +5921,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Sorting Order"
msgstr ""
@@ -6513,14 +6651,6 @@ msgid "Replace in Files"
msgstr "Hamısını ÆvÉ™z Et"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr ""
-
-#: editor/find_in_files.cpp
#, fuzzy
msgid "Replace All (NO UNDO)"
msgstr "Hamısını ÆvÉ™z Et"
@@ -6650,7 +6780,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Siqnalları filtirlə"
@@ -6900,7 +7030,7 @@ msgid "Generating Lightmaps"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+msgid "Generating for Mesh:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -6928,6 +7058,18 @@ msgid "Saving..."
msgstr ""
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7712,10 +7854,12 @@ msgstr ""
msgid "Directions"
msgstr ""
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr ""
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr ""
@@ -7870,8 +8014,9 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
-msgstr ""
+#, fuzzy
+msgid "Transition:"
+msgstr "Animasiyanı Təmizləmə"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Play Mode:"
@@ -7887,11 +8032,6 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr ""
@@ -8777,6 +8917,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr ""
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -8840,6 +8981,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -9590,7 +9735,7 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+msgid "Emission Source:"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
@@ -9820,6 +9965,7 @@ msgid "Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr ""
@@ -9973,13 +10119,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -9988,10 +10127,6 @@ msgstr ""
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -10683,13 +10818,17 @@ msgstr ""
msgid "Translate"
msgstr ""
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr ""
+#, fuzzy
+msgid "Scaling:"
+msgstr "Ölçüm Nisbəti:"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "Animasiyanı Təmizləmə"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -10712,11 +10851,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11191,8 +11325,9 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
-msgstr ""
+#, fuzzy
+msgid "Convert to MeshInstance2D"
+msgstr "'%s' ilÉ™ '%s' qoÅŸ"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Invalid geometry, can't create polygon."
@@ -11223,15 +11358,16 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "Seçiləni Çoxalt"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12159,8 +12295,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr ""
@@ -13596,31 +13731,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr ""
@@ -13755,6 +13869,11 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Layihə Qurucuları"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr ""
@@ -15189,8 +15308,9 @@ msgid "Attach Node Script"
msgstr ""
#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr ""
+#, fuzzy
+msgid "Remote %s:"
+msgstr "Sil"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -16017,7 +16137,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
msgid "Polygon"
msgstr ""
@@ -16180,7 +16300,7 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+msgid "Libraries:"
msgstr ""
#: modules/gdnative/nativescript/nativescript.cpp
@@ -16586,7 +16706,6 @@ msgid "Use In Baked Light"
msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -16612,6 +16731,19 @@ msgstr ""
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Hamısını Seç/Seçmə"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "%s növünü dəyişdirin"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -17012,7 +17144,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17020,7 +17152,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17386,7 +17518,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17394,7 +17526,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17552,12 +17684,14 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
+#, fuzzy
+msgid "Invalid argument of type:"
+msgstr "'%s' qurmaq üçün etibarsız arqumentlər"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
+#, fuzzy
+msgid "Invalid arguments:"
+msgstr "'%s' qurmaq üçün etibarsız arqumentlər"
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -17568,12 +17702,14 @@ msgid "Var Name"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableGet not found in script:"
+msgstr "Metod obyektdə tapılmadı: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableSet not found in script:"
+msgstr "Metod obyektdə tapılmadı: "
#: modules/visual_script/visual_script_nodes.cpp
msgid "Preload"
@@ -18067,10 +18203,6 @@ msgid "Could not execute on device."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18174,12 +18306,15 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Code Signing"
+msgstr ""
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18195,6 +18330,10 @@ msgid "Could not find keystore, unable to export."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Could not start apksigner executable."
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -18223,7 +18362,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18234,19 +18373,17 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+msgid "Could not export project files to gradle project."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18259,7 +18396,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -18274,7 +18411,7 @@ msgid ""
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18282,15 +18419,12 @@ msgid "Creating APK..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -18300,7 +18434,7 @@ msgid "Adding files..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18534,6 +18668,15 @@ msgstr "Funksiyalar:"
msgid "Custom BG Color"
msgstr "Funksiyalar:"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+msgid "Prepare Templates"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Export template not found."
+msgstr ""
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18555,19 +18698,29 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Could not open template for export: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
+msgstr "%s baza növü üçün %s növünün səhv indeksi"
+
+#: platform/javascript/export/export.cpp
+msgid "Could not write file: \"%s\"."
msgstr ""
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "ÆlaqÉ™ni redaktÉ™ edin:"
+
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not read file: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+msgid "PWA"
msgstr ""
#: platform/javascript/export/export.cpp
@@ -18642,15 +18795,15 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr ""
#: platform/javascript/export/export.cpp
@@ -18926,9 +19079,26 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Could not open icon file \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Could not start xcrun executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Animasiyanı Təmizləmə"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -18944,18 +19114,71 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
msgid "No identity found."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Cannot sign file %s."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "İzah:"
+
+#: platform/osx/export/export.cpp
+msgid "Could not start hdiutil executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Creating app bundle"
msgstr ""
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "3D Transformasya izi"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -18963,7 +19186,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -19004,6 +19227,15 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "Layihə Qurucuları"
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr ""
@@ -19301,6 +19533,10 @@ msgid "Debug Algorithm"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Failed to rename temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -19343,6 +19579,63 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Resources Modification"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "'%s' qurmaq üçün etibarsız arqumentlər"
+
+#: platform/windows/export/export.cpp
+msgid "Invalid timestamp server."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Failed to remove temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19361,6 +19654,22 @@ msgid "Invalid product version:"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Failed to open executable file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Windows"
msgstr ""
@@ -19376,6 +19685,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
msgid "Frames"
@@ -19487,7 +19800,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
@@ -20258,13 +20572,15 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
+msgid "Navpoly"
msgstr ""
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Enter Cost"
+msgstr ""
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Travel Cost"
msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
@@ -21355,12 +21671,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -23826,6 +24136,16 @@ msgid "3D Physics"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Hamısını Seç/Seçmə"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Hamısını Seç/Seçmə"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -25130,7 +25450,7 @@ msgstr ""
msgid "Refraction"
msgstr "İzah:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -25207,8 +25527,14 @@ msgid "Visible Instance Count"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Sample Partition Type"
-msgstr ""
+#, fuzzy
+msgid "Sampling"
+msgstr "Ölçüm Nisbəti:"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
+msgstr "İzah:"
#: scene/resources/navigation_mesh.cpp
msgid "Parsed Geometry Type"
@@ -25223,7 +25549,11 @@ msgid "Source Group Name"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
+msgid "Agents"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -25235,11 +25565,16 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Regions"
+msgstr "Yalnız Seçim"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -25252,6 +25587,10 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+msgid "Details"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -25268,7 +25607,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -25646,6 +25985,11 @@ msgid "Scenario"
msgstr ""
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "%s növünü dəyişdirin"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -25661,6 +26005,26 @@ msgstr ""
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Dəyər:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Bunun üçün Dəyişdirmə Axtar:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Bunun üçün Dəyişdirmə Axtar:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "ÆlaqÉ™ni redaktÉ™ edin:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/bg.po b/editor/translations/bg.po
index d43358bac8..9370a48a79 100644
--- a/editor/translations/bg.po
+++ b/editor/translations/bg.po
@@ -232,9 +232,10 @@ msgid "Data"
msgstr "Данни"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
#, fuzzy
msgid "Network"
msgstr "Профилиране на мрежата"
@@ -349,7 +350,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "ÐедоÑтатъчно байтове за разкодиране или неправилен формат."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "Ðеправилен входен параметър %i (не е подаден) в израза"
#: core/math/expression.cpp
@@ -395,6 +397,15 @@ msgstr ""
msgid "Max Size (KB)"
msgstr "МакÑимален размер (KB)"
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Режим на премеÑтване"
+
+#: core/os/input.cpp
+msgid "Use Accumulated Input"
+msgstr ""
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -590,7 +601,8 @@ msgstr "ОпиÑание"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "ПуÑкане"
@@ -677,6 +689,11 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Път на Ñцената:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -684,19 +701,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Контрол на верÑиите"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Контрол на верÑиите"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Име на приÑтавката:"
+msgid "Version Control Plugin Name"
+msgstr "Контрол на верÑиите"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -809,7 +822,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "Филтри:"
@@ -1088,6 +1102,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Свободно"
@@ -1104,7 +1119,7 @@ msgstr "Огледално"
msgid "Time:"
msgstr "Време:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "СтойноÑÑ‚:"
@@ -1352,10 +1367,71 @@ msgid "Remove this track."
msgstr "Премахване на тази пътечка."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "Време (Ñек): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Създаване на функциÑ"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Стъпка при завъртане:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "Мащаб:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "Тип:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Ðеправилно разширение."
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Easing:"
+msgstr "Предупреждение:"
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Stream:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "ОтмеÑтване на мрежата:"
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Ðнимации:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "Включване/изключване на пътечката"
@@ -1572,7 +1648,7 @@ msgid "Add Method Track Key"
msgstr "ДобавÑне на ключ за пътечка Ñ Ð¼ÐµÑ‚Ð¾Ð´"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+msgid "Method not found in object:"
msgstr ""
#: editor/animation_track_editor.cpp
@@ -2168,8 +2244,8 @@ msgid "Open"
msgstr "ОтварÑне"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "СобÑтвеници на:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
msgid ""
@@ -2467,7 +2543,7 @@ msgid "Bus Options"
msgstr "ÐаÑтройки на шината"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr ""
@@ -2519,8 +2595,8 @@ msgstr ""
msgid "There is no '%s' file."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+msgid "Layout:"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -2724,6 +2800,22 @@ msgid "Choose"
msgstr "Избиране"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed successfully."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed."
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr ""
@@ -2736,6 +2828,31 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Запазване"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "Папката не може да бъде Ñъздадена."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Файловете на проекта не могат да бъдат изнеÑени"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Файлът не може да бъде отворен за запиÑ:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Запазване"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2838,9 +2955,31 @@ msgstr ""
msgid "Custom release template not found."
msgstr ""
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "Управление на шаблоните"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "ПоÑочениÑÑ‚ път не ÑъщеÑтвува."
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
-msgstr ""
+#, fuzzy
+msgid "Template file not found: \"%s\"."
+msgstr "Пакетът не е намерен: %s"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "Файлът Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¸Ñ‚Ðµ за изнаÑÑне не може да Ñе отвори."
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+#, fuzzy
+msgid "PCK Embedding"
+msgstr "ОтÑтъп"
#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
@@ -3009,9 +3148,9 @@ msgid "Import"
msgstr "ВнаÑÑне"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "ИзнаÑÑне"
@@ -4123,15 +4262,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Сцена"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Път на Ñцената:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4258,6 +4388,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Контрол на верÑиите"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "ПотребителÑко име"
@@ -4285,6 +4419,10 @@ msgstr ""
msgid "Add a new scene."
msgstr "ДобавÑне на нови нова Ñцена."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Сцена"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
@@ -4934,11 +5072,13 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
+msgstr "Размер:"
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+msgid "Page:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
@@ -5033,6 +5173,11 @@ msgid ""
"as runnable."
msgstr ""
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Проект"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -5307,7 +5452,9 @@ msgid "Draw Spaces"
msgstr "Ð˜Ð·Ð²Ð¸ÐºÐ²Ð°Ð½Ð¸Ñ Ð·Ð° изчертаване:"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr "ÐавигациÑ"
@@ -5896,10 +6043,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Управление на проектите"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -6633,14 +6782,6 @@ msgid "Replace in Files"
msgstr "ЗамÑна във файловете"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "ТърÑене: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "ЗамÑна: "
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr "ЗамÑна на вÑички (ÐЕОБРÐТИМО)"
@@ -6769,7 +6910,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Филтри:"
@@ -7033,7 +7174,8 @@ msgid "Generating Lightmaps"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+#, fuzzy
+msgid "Generating for Mesh:"
msgstr "Създаване за полигонна мрежа: "
#: editor/import/resource_importer_scene.cpp
@@ -7061,6 +7203,18 @@ msgid "Saving..."
msgstr "Запазване..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7860,10 +8014,12 @@ msgstr "ÐаÑтройки на режима Ñ Ð¸Ð·Ð±Ð»ÐµÐ´Ð½Ñващи кадÑ
msgid "Directions"
msgstr "ÐаправлениÑ"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "Минало"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "Бъдеще"
@@ -8018,7 +8174,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
+#, fuzzy
+msgid "Transition:"
msgstr "Преход: "
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8035,11 +8192,6 @@ msgid "New name:"
msgstr "Ðово име:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "Мащаб:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr ""
@@ -8943,6 +9095,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr "ИзчиÑтване на перÑонализираните коÑти"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9007,6 +9160,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -9767,7 +9924,8 @@ msgid "Volume"
msgstr "Обем"
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+#, fuzzy
+msgid "Emission Source:"
msgstr "Източник на излъчването: "
#: editor/plugins/particles_editor_plugin.cpp
@@ -9997,6 +10155,7 @@ msgid "Points"
msgstr "Точки"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr "Полигони"
@@ -10150,13 +10309,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "Тип:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -10165,10 +10317,6 @@ msgstr ""
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -10868,12 +11016,16 @@ msgstr "РотациÑ"
msgid "Translate"
msgstr "ТранÑлиране"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
+#, fuzzy
+msgid "Scaling:"
msgstr "Скалиране: "
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
+#, fuzzy
+msgid "Translating:"
msgstr "ТранÑлиране: "
#: editor/plugins/spatial_editor_plugin.cpp
@@ -10897,11 +11049,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr "Размер:"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr "Изчертани обекти:"
@@ -11390,7 +11537,8 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr "Ðеправилна геометриÑ. Ðе може да Ñе замени Ñ Ð¿Ð¾Ð»Ð¸Ð³Ð¾Ð½Ð½Ð° мрежа."
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+#, fuzzy
+msgid "Convert to MeshInstance2D"
msgstr "Преобразуване в Mesh2D"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11422,15 +11570,18 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
+#, fuzzy
+msgid "Simplification:"
msgstr "ОпроÑÑ‚Ñване: "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+#, fuzzy
+msgid "Shrink (Pixels):"
msgstr "СмалÑване (пикÑели): "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+#, fuzzy
+msgid "Grow (Pixels):"
msgstr "УголемÑване (пикÑели): "
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12361,8 +12512,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr "Регион"
@@ -13803,31 +13953,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "ИзнаÑÑне на вÑичко"
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr "Шаблоните за изнаÑÑне за тази платформа липÑват или Ñа повредени:"
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr "Път за изнаÑÑне"
@@ -13971,6 +14100,11 @@ msgid "Export templates for this platform are missing:"
msgstr "Шаблоните за изнаÑÑне за тази ÑиÑтема липÑват:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "ОÑнователи на проекта"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "Управление на шаблоните за изнаÑÑне"
@@ -15412,7 +15546,8 @@ msgid "Attach Node Script"
msgstr "Закачане на Ñкрипт"
#: editor/script_editor_debugger.cpp
-msgid "Remote "
+#, fuzzy
+msgid "Remote %s:"
msgstr "Отдалечено "
#: editor/script_editor_debugger.cpp
@@ -16277,7 +16412,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "Полигони"
@@ -16453,8 +16588,9 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
-msgstr ""
+#, fuzzy
+msgid "Libraries:"
+msgstr "Библиотека"
#: modules/gdnative/nativescript/nativescript.cpp
#, fuzzy
@@ -16887,7 +17023,6 @@ msgid "Use In Baked Light"
msgstr "Изпичане на карти на оÑветеноÑÑ‚"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -16917,6 +17052,19 @@ msgstr "По Ñредата горе"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "ÐавигациÑ"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Режим на навигациÑ"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Следваща равнина"
@@ -17331,7 +17479,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17339,7 +17487,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17701,7 +17849,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17709,7 +17857,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17870,12 +18018,14 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
+#, fuzzy
+msgid "Invalid argument of type:"
+msgstr "Ðеправилни аргументи за изграждане на „%s“"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
+#, fuzzy
+msgid "Invalid arguments:"
+msgstr "Ðеправилно име."
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -17887,11 +18037,11 @@ msgid "Var Name"
msgstr "Име"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+msgid "VariableGet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+msgid "VariableSet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
@@ -18415,10 +18565,6 @@ msgid "Could not execute on device."
msgstr "Изпълнението на уÑтройÑтвото е невъзможно."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr "ИнÑтрументът „apksigner“ не може да бъде намерен."
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18536,12 +18682,17 @@ msgstr ""
"„Целева верÑÐ¸Ñ Ð½Ð° SDK“ трÑбва да бъде по-голÑма или равна на „Мин. верÑÐ¸Ñ Ð½Ð° "
"SDK“."
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Сигнал"
+
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
"Командата „apksigner“ не може да бъде намерена.\n"
"Проверете дали командата е налична в папката „build-tools“ на Android SDK.\n"
@@ -18560,6 +18711,10 @@ msgid "Could not find keystore, unable to export."
msgstr "Ðе е намерено хранилище за ключове. ИзнаÑÑнето е невъзможно."
#: platform/android/export/export_plugin.cpp
+msgid "Could not start apksigner executable."
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr "„apksigner“ завърши Ñ Ð³Ñ€ÐµÑˆÐºÐ° #%d"
@@ -18588,7 +18743,8 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "Ðеправилно име! Android APK изиÑква разширение *.apk."
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+#, fuzzy
+msgid "Unsupported export format!"
msgstr "Ðеподдържан формат за изнаÑÑне!\n"
#: platform/android/export/export_plugin.cpp
@@ -18599,21 +18755,21 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
"файловете res://android/build/res/*.xml не могат да бъдат презапиÑани Ñ "
"името на проекта"
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+#, fuzzy
+msgid "Could not export project files to gradle project."
msgstr ""
"Файловете на проекта не могат да бъдат изнеÑени като проект на gradle.\n"
@@ -18626,8 +18782,9 @@ msgid "Building Android Project (gradle)"
msgstr "Компилиране на проект за Android (gradle)"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
"Компилирането на проекта за Android беше неуÑпешно. Вижте изхода за "
@@ -18648,7 +18805,8 @@ msgstr ""
"в папката на проекта на gradle."
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+#, fuzzy
+msgid "Package not found: \"%s\"."
msgstr "Пакетът не е намерен: %s"
#: platform/android/export/export_plugin.cpp
@@ -18656,17 +18814,16 @@ msgid "Creating APK..."
msgstr "Създаване на APK…"
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+#, fuzzy
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
"Ðе е намерен шаблонен файл APK за изнаÑÑне:\n"
"%s"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -18679,7 +18836,8 @@ msgid "Adding files..."
msgstr "ДобавÑне на файлове..."
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+#, fuzzy
+msgid "Could not export project files."
msgstr "Файловете на проекта не могат да бъдат изнеÑени"
#: platform/android/export/export_plugin.cpp
@@ -18915,6 +19073,17 @@ msgstr "ПерÑонализиран обект"
msgid "Custom BG Color"
msgstr "ПерÑонализиран обект"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "Управление на шаблоните"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Шаблоните за изнаÑÑне за тази ÑиÑтема липÑват:"
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18936,22 +19105,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
msgstr "Шаблонът не може да Ñе отвори за изнаÑÑне:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
-msgstr ""
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
+msgstr "Ðеправилно разширение."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+#, fuzzy
+msgid "Could not write file: \"%s\"."
msgstr "Файлът не може да бъде запиÑан:"
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Задаване на отÑтъп"
+
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+#, fuzzy
+msgid "Could not read file: \"%s\"."
msgstr "Файлът не може да бъде прочетен:"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "Разделение:"
@@ -19026,15 +19208,18 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+#, fuzzy
+msgid "Could not read HTML shell: \"%s\"."
msgstr "ПерÑонализираната HTML-обвивка не може да бъде прочетена:"
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+#, fuzzy
+msgid "Could not create HTTP server directory: %s."
msgstr "Папката на HTTP-Ñървъра не може да бъде Ñъздадена:"
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+#, fuzzy
+msgid "Error starting HTTP server: %d."
msgstr "Грешка при Ñтартирането на HTTP-Ñървър:"
#: platform/javascript/export/export.cpp
@@ -19334,9 +19519,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Файловете на проекта не могат да бъдат изнеÑени"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "Изпълнението на уÑтройÑтвото е невъзможно."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "ÐавигациÑ"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19352,19 +19556,74 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "ÐÑма намерени конÑтанти."
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Грешка при запазването на файла: %s"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "ÐаправлениÑ"
+
+#: platform/osx/export/export.cpp
+msgid "Could not start hdiutil executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Creating app bundle"
msgstr "Създаване на пакета на приложението"
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+#, fuzzy
+msgid "Could not find template app to export: \"%s\"."
msgstr "Ðе е намерено шаблонно приложение за изнаÑÑне:"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Ðеправилен базов път."
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -19372,7 +19631,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -19413,6 +19672,17 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "Проект"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+"Файловете на проекта не могат да бъдат изнеÑени като проект на gradle.\n"
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr "Ðеправилен идентификатор на пакета:"
@@ -19721,6 +19991,11 @@ msgid "Debug Algorithm"
msgstr "Дебъгер"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "ВременниÑÑ‚ файл не може да бъде премахнат:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -19767,6 +20042,70 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "ИзвеÑтиÑ"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "Ðе е намерено хранилище за ключове. ИзнаÑÑнето е невъзможно."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "Ðе е намерено хранилище за ключове. ИзнаÑÑнето е невъзможно."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "Ðе е намерено хранилище за ключове. ИзнаÑÑнето е невъзможно."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "Ðе е намерено хранилище за ключове. ИзнаÑÑнето е невъзможно."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Ðеправилни аргументи за изграждане на „%s“"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Ðеправилно име."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "ВременниÑÑ‚ файл не може да бъде премахнат:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19785,6 +20124,23 @@ msgid "Invalid product version:"
msgstr "Ðеправилна верÑÐ¸Ñ Ð½Ð° продукта:"
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Ðеправилно разширение."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Windows"
msgstr ""
@@ -19800,6 +20156,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -19923,7 +20283,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
@@ -20767,15 +21128,16 @@ msgstr ""
"МолÑ, задайте ÑвойÑтво или нариÑувайте полигон."
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
+msgid "Navpoly"
msgstr ""
-"NavigationPolygonInstance трÑбва да бъде дъщерен или под-дъщерен на обект от "
-"тип Navigation2D. Той дава Ñамо навигационна информациÑ."
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "По Ñредата долу"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Travel Cost"
msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
@@ -21955,14 +22317,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-"NavigationMeshInstance трÑбва да бъде дъщерен или под-дъщерен на обект от "
-"тип Navigation. Той Ñамо предоÑÑ‚Ð°Ð²Ñ Ð´Ð°Ð½Ð½Ð¸Ñ‚Ðµ за навигирането."
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
#, fuzzy
msgid "NavMesh"
@@ -24582,6 +24936,16 @@ msgid "3D Physics"
msgstr "Следващ кадър на физичната ÑиÑтема"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "ÐавигациÑ"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "ÐавигациÑ"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -25981,7 +26345,7 @@ msgstr "Преход"
msgid "Refraction"
msgstr "Пречупване"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -26060,8 +26424,14 @@ msgid "Visible Instance Count"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Sample Partition Type"
-msgstr ""
+#, fuzzy
+msgid "Sampling"
+msgstr "Скалиране: "
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
+msgstr "Разделение:"
#: scene/resources/navigation_mesh.cpp
msgid "Parsed Geometry Type"
@@ -26077,10 +26447,15 @@ msgid "Source Group Name"
msgstr "Източник за полигонна мрежа:"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "Гизмота"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -26089,11 +26464,16 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Regions"
+msgstr "Регион"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26106,6 +26486,11 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Details"
+msgstr "Показване на Ñтандартните"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -26122,7 +26507,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -26530,6 +26915,11 @@ msgid "Scenario"
msgstr "Сцена"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "ÐавигациÑ"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -26547,6 +26937,26 @@ msgstr "Линейно отлÑво"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Стандартен предварителен преглед"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Стандартен предварителен преглед"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "ТеÑтово"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Редактиране на Връзката:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/bn.po b/editor/translations/bn.po
index 4ec4e68f08..265a7fb58a 100644
--- a/editor/translations/bn.po
+++ b/editor/translations/bn.po
@@ -11,13 +11,14 @@
# Mokarrom Hossain <mhb2016.bzs@gmail.com>, 2020, 2021.
# Sagen Soren <sagensoren03@gmail.com>, 2020.
# Hasibul Hasan <d1hasib@yahoo.com>, 2020.
+# saitama <atik.wowspace@gmail.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-08-03 06:20+0000\n"
-"Last-Translator: Oymate <dhruboadittya96@gmail.com>\n"
+"PO-Revision-Date: 2022-06-12 13:19+0000\n"
+"Last-Translator: saitama <atik.wowspace@gmail.com>\n"
"Language-Team: Bengali <https://hosted.weblate.org/projects/godot-engine/"
"godot/bn/>\n"
"Language: bn\n"
@@ -25,67 +26,62 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Weblate 4.8-dev\n"
+"X-Generator: Weblate 4.13-dev\n"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
-msgstr ""
+msgstr "টà§à¦¯à¦¾à¦¬à¦²à§‡à¦Ÿ ডà§à¦°à¦¾à¦‡à¦­à¦¾à¦°"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Clipboard"
-msgstr "রিসোরà§à¦¸à§‡à¦° কà§à¦²à§€à¦ªà¦¬à§‹à¦°à§à¦¡ খালি!"
+msgstr "কà§à¦²à§€à¦ªà¦¬à§‹à¦°à§à¦¡"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Current Screen"
-msgstr "বরà§à¦¤à¦®à¦¾à¦¨ দৃশà§à¦¯"
+msgstr "বরà§à¦¤à¦®à¦¾à¦¨ পরà§à¦¦à¦¾"
#: core/bind/core_bind.cpp
msgid "Exit Code"
-msgstr ""
+msgstr "ফেরত সংকেত"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "V-Sync Enabled"
-msgstr "সকà§à¦°à¦¿à¦¯à¦¼ করà§à¦¨"
+msgstr "ভি-সিঙà§à¦• সকà§à¦°à¦¿à¦¯à¦¼ করà§à¦¨"
#: core/bind/core_bind.cpp main/main.cpp
+#, fuzzy
msgid "V-Sync Via Compositor"
-msgstr ""
+msgstr "কমà§à¦ªà¦¸à¦¿à¦Ÿà¦° দà§à¦¬à¦¾à¦°à¦¾ ভি-সিঙà§à¦• করা"
#: core/bind/core_bind.cpp main/main.cpp
+#, fuzzy
msgid "Delta Smoothing"
-msgstr ""
+msgstr "ডেলà§à¦Ÿà¦¾ মসৃণ করন"
#: core/bind/core_bind.cpp
#, fuzzy
msgid "Low Processor Usage Mode"
-msgstr "মোড (Mode) সরান"
+msgstr "পà§à¦°à¦¸à§‡à¦¸à¦° à¦à¦° কম বà§à¦¯à¦¾à¦¬à¦¹à¦¾à¦° Mode"
#: core/bind/core_bind.cpp
msgid "Low Processor Usage Mode Sleep (µsec)"
-msgstr ""
+msgstr "কম পà§à¦°à¦¸à§‡à¦¸à¦° বà§à¦¯à¦¾à¦¬à¦¹à¦¾à¦° মোড বিরতি (sec)"
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Keep Screen On"
-msgstr "ডিবাগার খোলা রাখà§à¦¨"
+msgstr "পরà§à¦¦à¦¾ চালৠরাখà§à¦¨"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Min Window Size"
-msgstr "পà§à¦°à¦¾à¦¨à§à¦¤à¦°à§‡à¦–ার আকার:"
+msgstr "সরà§à¦¬à¦¨à¦¿à¦®à§à¦¨ উইনà§à¦¡à§‹ আকার"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Max Window Size"
-msgstr "পà§à¦°à¦¾à¦¨à§à¦¤à¦°à§‡à¦–ার আকার:"
+msgstr "সরà§à¦¬à§‹à¦šà§à¦š উইনà§à¦¡à§‹ আকার"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Screen Orientation"
-msgstr "রেফারেনà§à¦¸à§‡à¦° ডকà§à¦®à§‡à¦¨à§à¦Ÿà§‡à¦¶à¦¨à§‡ খà§à¦à¦œà§à¦¨à¥¤"
+msgstr "পরà§à¦¦à¦¾ à¦à§‹à¦à¦•/ উপসà§à¦¥à¦¾à¦ªà¦¨"
#: core/bind/core_bind.cpp core/project_settings.cpp main/main.cpp
#: platform/uwp/os_uwp.cpp
@@ -95,39 +91,36 @@ msgstr "উইনà§à¦¡à§‹"
#: core/bind/core_bind.cpp core/project_settings.cpp
msgid "Borderless"
-msgstr ""
+msgstr "সিমানà§à¦¤à¦¬à¦¿à¦¹à§€à¦¨"
#: core/bind/core_bind.cpp
msgid "Per Pixel Transparency Enabled"
-msgstr ""
+msgstr "পà§à¦°à¦¤à¦¿ পিকà§à¦¸à§‡à¦² সà§à¦¬à¦šà§à¦›à¦¤à¦¾ চালৠকরà§à¦¨"
#: core/bind/core_bind.cpp core/project_settings.cpp
-#, fuzzy
msgid "Fullscreen"
-msgstr "পূরà§à¦£-পরà§à¦¦à¦¾ অদলবদল/টগল করà§à¦¨"
+msgstr "পূরà§à¦£-পরà§à¦¦à¦¾"
#: core/bind/core_bind.cpp
msgid "Maximized"
-msgstr ""
+msgstr "সরà§à¦¬à§‹à¦šà§à¦šà¦•ৃত"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Minimized"
-msgstr "বড় হাতের অকà§à¦·à¦°à§‡ পরিবরà§à¦¤à¦¨à§‡ করà§à¦¨"
+msgstr "সরà§à¦¬à¦¨à¦¿à¦®à§à¦¨"
#: core/bind/core_bind.cpp core/project_settings.cpp scene/gui/dialogs.cpp
#: scene/gui/graph_node.cpp
msgid "Resizable"
-msgstr ""
+msgstr "আকার-পরিবরà§à¦¤à¦¨à¦¯à§‹à¦—à§à¦¯"
#: core/bind/core_bind.cpp core/os/input_event.cpp scene/2d/node_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/remote_transform_2d.cpp
#: scene/3d/physics_body.cpp scene/3d/remote_transform.cpp
#: scene/gui/control.cpp scene/gui/line_edit.cpp
#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Position"
-msgstr "ডà§à¦• পজিশন"
+msgstr "অবসà§à¦¥à¦¾à¦¨"
#: core/bind/core_bind.cpp core/project_settings.cpp editor/editor_settings.cpp
#: main/main.cpp modules/gridmap/grid_map.cpp
@@ -138,32 +131,28 @@ msgstr "ডà§à¦• পজিশন"
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
#: scene/resources/visual_shader.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Size"
-msgstr "সেল (Cell)-à¦à¦° আকার:"
+msgstr "আকার"
#: core/bind/core_bind.cpp
msgid "Endian Swap"
-msgstr ""
+msgstr "à¦à¦¨à§à¦¡à¦¿à§Ÿà¦¾à¦¨ সোয়াপ"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Editor Hint"
-msgstr "সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨ (Edit)"
+msgstr "সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à¦•রন আভাস"
#: core/bind/core_bind.cpp
msgid "Print Error Messages"
-msgstr ""
+msgstr "তà§à¦°à§à¦Ÿà¦¿ বারà§à¦¤à¦¾à¦—à§à¦²à§‹ ছাপান"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Iterations Per Second"
-msgstr "ইনà§à¦Ÿà¦¾à¦°à¦ªà§‹à¦²à§‡à¦¶à¦¨ মোড"
+msgstr "পà§à¦°à¦¤à¦¿ সেকেনà§à¦¡à§‡ চকà§à¦°"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Target FPS"
-msgstr "টারà§à¦—েট"
+msgstr "লকà§à¦·à§à¦¯-à¦à¦«à¦ªà¦¿à¦à¦¸(ফà§à¦°à§‡à¦®-পà§à¦°à¦¤à¦¿-সেকেনà§à¦¡)"
#: core/bind/core_bind.cpp
#, fuzzy
@@ -190,13 +179,12 @@ msgid "Error Line"
msgstr "সংরকà§à¦·à¦£à§‡ সমসà§à¦¯à¦¾ হয়েছে"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Result"
-msgstr "সাহাযà§à¦¯ অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ করà§à¦¨"
+msgstr "ফলাফল"
#: core/command_queue_mt.cpp core/message_queue.cpp main/main.cpp
msgid "Memory"
-msgstr ""
+msgstr "সà§à¦®à§ƒà¦¤à¦¿"
#: core/command_queue_mt.cpp core/message_queue.cpp
#: core/register_core_types.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
@@ -207,7 +195,7 @@ msgstr ""
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
#: servers/visual_server.cpp
msgid "Limits"
-msgstr ""
+msgstr "সীমাগà§à¦²à§‹"
#: core/command_queue_mt.cpp
#, fuzzy
@@ -216,7 +204,7 @@ msgstr "টান: ঘূরà§à¦£à¦¨"
#: core/command_queue_mt.cpp
msgid "Multithreading Queue Size (KB)"
-msgstr ""
+msgstr "মালà§à¦Ÿà¦¿à¦¥à§à¦°à§‡à¦¡à¦¿à¦‚ সারি আকার (KB)"
#: core/func_ref.cpp modules/visual_script/visual_script_builtin_funcs.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
@@ -229,12 +217,13 @@ msgstr "ফাংশনগà§à¦²à¦¿:"
#: core/image.cpp core/packed_data_container.cpp scene/2d/polygon_2d.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
msgid "Data"
-msgstr ""
+msgstr "তথà§à¦¯"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
#, fuzzy
msgid "Network"
msgstr "পà§à¦°à¦•লà§à¦ª à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
@@ -348,7 +337,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "ডিকোডিং বাইট, বা অবৈধ বিনà§à¦¯à¦¾à¦¸à§‡à¦° জনà§à¦¯ পরà§à¦¯à¦¾à¦ªà§à¦¤ পরিমাণে বাইট নেই।"
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "অবৈধ ইনপà§à¦Ÿ %i (পাস করা হয়নি) পà§à¦°à¦•াশে"
#: core/math/expression.cpp
@@ -393,6 +383,16 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "মোড (Mode) সরান"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "ইনপà§à¦Ÿ অপসারণ করà§à¦¨"
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -595,7 +595,8 @@ msgstr "বরà§à¦£à¦¨à¦¾:"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "চালান"
@@ -687,6 +688,11 @@ msgid "Main Run Args"
msgstr "পà§à¦°à¦§à¦¾à¦¨ দৃশà§à¦¯à§‡à¦° মান/আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿ-সমূহ:"
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "দৃশà§à¦¯à§‡à¦° পথ:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -694,20 +700,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
+#: core/project_settings.cpp
#, fuzzy
-msgid "Version Control"
+msgid "Version Control Autoload On Startup"
msgstr "সংসà§à¦•রণ:"
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
-
-#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "পà§à¦²à¦¾à¦—ইন-সমূহ"
+msgid "Version Control Plugin Name"
+msgstr "সংসà§à¦•রণ:"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -825,7 +826,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "ফিলà§à¦Ÿà¦¾à¦°à¦¸à¦®à§‚হ"
@@ -1108,6 +1110,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "মà§à¦•à§à¦¤ করে দিন"
@@ -1124,7 +1127,7 @@ msgstr "পà§à¦°à¦¤à¦¿à¦¬à¦¿à¦®à§à¦¬"
msgid "Time:"
msgstr "সময়:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "মান:"
@@ -1375,10 +1378,75 @@ msgid "Remove this track."
msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ টà§à¦°à§à¦¯à¦¾à¦•/পথ অপসারণ করà§à¦¨à¥¤"
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "সময় (সেঃ): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "ডà§à¦• পজিশন"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "ঘূরà§à¦£à¦¾à§Ÿà¦¨à§‡à¦° পদকà§à¦·à§‡à¦ª:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "সà§à¦•েল/মাপ:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "ধরণ:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿà§‡à¦° টেমপà§à¦²à§‡à¦Ÿà¦¸à¦®à§‚হ ইনà§à¦¸à¦Ÿà¦² করà§à¦¨"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Easing:"
+msgstr "আগমন-গমন সহজ/আলগা করন"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "In-Handle:"
+msgstr "হà§à¦¯à¦¾à¦¨à§à¦¡à§‡à¦² সà§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Out-Handle:"
+msgstr "হà§à¦¯à¦¾à¦¨à§à¦¡à§‡à¦² সà§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "বসà§à¦¤à§ যোগ করà§à¦¨"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "পà§à¦¨à¦°à¦¾à¦°à¦®à§à¦­ (সেঃ):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "End (s):"
+msgstr "অনà§à¦¤à¦ƒà¦¸à§à¦¥ ফেড/বিলীন (সেঃ):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à¦¸à¦®à§‚হ"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "টà§à¦°à§à¦¯à¦¾à¦• সকà§à¦°à¦¿à¦¯à¦¼ করà§à¦¨"
@@ -1596,7 +1664,8 @@ msgid "Add Method Track Key"
msgstr "Method Track Key যà§à¦•à§à¦¤ করà§à¦¨"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "Object ঠMethod পাওয়া যায় নি: "
#: editor/animation_track_editor.cpp
@@ -2233,8 +2302,8 @@ msgid "Open"
msgstr "খà§à¦²à§à¦¨"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "সà§à¦¬à¦¤à§à¦¬à¦¾à¦§à¦¿à¦•ারীসমূহ:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
#, fuzzy
@@ -2549,7 +2618,7 @@ msgid "Bus Options"
msgstr "বাস অপশন"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "ডà§à¦ªà§à¦²à¦¿à¦•েট"
@@ -2601,9 +2670,9 @@ msgstr "অডিও বাস লেআউট ওপেন করà§à¦¨"
msgid "There is no '%s' file."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/editor_audio_buses.cpp
#, fuzzy
-msgid "Layout"
+msgid "Layout:"
msgstr "লেআউট/নকশা সংরকà§à¦·à¦£ করà§à¦¨"
#: editor/editor_audio_buses.cpp
@@ -2820,6 +2889,25 @@ msgid "Choose"
msgstr "পছনà§à¦¦ করà§à¦¨"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "পথ পà§à¦°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿/কপি করà§à¦¨"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "পà§à¦¯à¦¾à¦•েজ ইনà§à¦¸à¦Ÿà¦² সমà§à¦ªà¦¨à§à¦¨ হয়েছে!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "বà§à¦¯à¦°à§à¦¥:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "সংরকà§à¦·à¦¿à¦¤ ফাইল:"
@@ -2835,6 +2923,31 @@ msgid "Packing"
msgstr "পà§à¦¯à¦¾à¦•/গà§à¦šà§à¦›à¦¿à¦¤ করা"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "à¦à¦‡à¦°à§‚পে সংরকà§à¦·à¦£ করà§à¦¨"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "ফোলà§à¦¡à¦¾à¦° তৈরী করা সমà§à¦­à¦¬ হয়নি।"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "টাইলটি খà§à¦à¦œà§‡ পাওয়া যায়নি:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "লেখার জনà§à¦¯ ফাইলটি খোলায় সমসà§à¦¯à¦¾ হয়েছে:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "à¦à¦‡à¦°à§‚পে সংরকà§à¦·à¦£ করà§à¦¨"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2941,12 +3054,32 @@ msgstr "সà§à¦¬à¦¨à¦¿à¦°à§à¦®à¦¿à¦¤ ডিবাগ (debug) পà§à¦¯à¦¾à¦•à§
msgid "Custom release template not found."
msgstr "সà§à¦¬à¦¨à¦¿à¦°à§à¦®à¦¿à¦¤ রিলিস (release) পà§à¦¯à¦¾à¦•েজ খà§à¦à¦œà§‡ পাওয়া যায়নি।"
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿà¦¸à¦®à§‚হ লোড হচà§à¦›à§‡"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "ফাইলটি বিদà§à¦¯à¦®à¦¾à¦¨ নয়।"
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
#, fuzzy
-msgid "Template file not found:"
+msgid "Template file not found: \"%s\"."
msgstr "টেমপà§à¦²à§‡à¦Ÿ ফাইল পাওয়া যায়নি:\n"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿà§‡à¦° টেমপà§à¦²à§‡à¦Ÿà¦¸à¦®à§‚হ ইনà§à¦¸à¦Ÿà¦² করà§à¦¨"
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr ""
@@ -3136,9 +3269,9 @@ msgid "Import"
msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ"
@@ -4363,15 +4496,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "দৃশà§à¦¯"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "দৃশà§à¦¯à§‡à¦° পথ:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4502,6 +4626,11 @@ msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
+msgid "Version Control"
+msgstr "সংসà§à¦•রণ:"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+#, fuzzy
msgid "Username"
msgstr "পà§à¦¨à¦ƒà¦¨à¦¾à¦®à¦•রণ করà§à¦¨"
@@ -4531,6 +4660,10 @@ msgstr "বিকà§à¦·à§‡à¦ª-হীন মোড"
msgid "Add a new scene."
msgstr "নতà§à¦¨ টà§à¦°à§à¦¯à¦¾à¦•/পথ-সমূহ যোগ করà§à¦¨à¥¤"
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "দৃশà§à¦¯"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "পূরà§à¦¬à§‡ খোলা দৃশà§à¦¯à§‡ যান।"
@@ -5245,12 +5378,15 @@ msgid "Selected node is not a Viewport!"
msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿà§‡à¦° জনà§à¦¯ নোড(সমূহ) নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨"
#: editor/editor_properties_array_dict.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#, fuzzy
-msgid "Size: "
+msgid "Size:"
msgstr "সেল (Cell)-à¦à¦° আকার:"
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+#, fuzzy
+msgid "Page:"
msgstr "পাতা: "
#: editor/editor_properties_array_dict.cpp
@@ -5354,6 +5490,11 @@ msgstr ""
"কাংখিত পà§à¦²à§à¦¯à¦¾à¦Ÿà¦«à¦°à§à¦®à§‡à¦° জনà§à¦¯ গà§à¦°à¦¹à¦£à¦¯à§‹à¦—à§à¦¯ কোন à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ পà§à¦°à¦¿à¦¸à§‡à¦Ÿ খà§à¦à¦œà§‡ পাওয়া যায়নি।\n"
"অনà§à¦—à§à¦°à¦¹ করে à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ মেনà§à¦¤à§‡ à¦à¦•টি সঠিক পà§à¦°à¦¿à¦¸à§‡à¦Ÿ যোগ করà§à¦¨à¥¤"
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "নতà§à¦¨ পà§à¦°à¦•লà§à¦ª"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "আপনার লজিক/যà§à¦•à§à¦¤à¦¿-সমূহ _run() মেথডে লিখà§à¦¨à¥¤"
@@ -5637,7 +5778,9 @@ msgid "Draw Spaces"
msgstr "ডà§à¦° কলস"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
#, fuzzy
msgid "Navigation"
msgstr "Navigation Mesh তৈরি করà§à¦¨"
@@ -6234,10 +6377,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "পà§à¦°à¦œà§‡à¦•à§à¦Ÿ মà§à¦¯à¦¾à¦¨à§‡à¦œà¦¾à¦°"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -7067,16 +7212,6 @@ msgstr "সমসà§à¦¤à¦—à§à¦²à¦¿ পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨ করà§à
#: editor/find_in_files.cpp
#, fuzzy
-msgid "Find: "
-msgstr "সনà§à¦§à¦¾à¦¨ করà§à¦¨"
-
-#: editor/find_in_files.cpp
-#, fuzzy
-msgid "Replace: "
-msgstr "পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨"
-
-#: editor/find_in_files.cpp
-#, fuzzy
msgid "Replace All (NO UNDO)"
msgstr "সমসà§à¦¤à¦—à§à¦²à¦¿ পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨"
@@ -7218,7 +7353,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "ফিলà§à¦Ÿà¦¾à¦°à¦¸à¦®à§‚হ"
@@ -7491,7 +7626,7 @@ msgstr "লাইটà§à¦®à§à¦¯à¦¾à¦ªà§‡ হসà§à¦¤à¦¾à¦¨à§à¦¤à¦° করà§à
#: editor/import/resource_importer_scene.cpp
#, fuzzy
-msgid "Generating for Mesh: "
+msgid "Generating for Mesh:"
msgstr "AABB উৎপনà§à¦¨ করà§à¦¨"
#: editor/import/resource_importer_scene.cpp
@@ -7519,6 +7654,18 @@ msgid "Saving..."
msgstr "সংরকà§à¦·à¦¿à¦¤ হচà§à¦›à§‡..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -8388,11 +8535,13 @@ msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° সিদà§à¦§à¦¾à¦¨à§à¦¤à¦¸à¦®à§
msgid "Directions"
msgstr "অংশাদি:"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
msgid "Past"
msgstr "পà§à¦°à¦¤à¦¿à¦²à§‡à¦ªà¦¨/পেসà§à¦Ÿ করà§à¦¨"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
msgid "Future"
@@ -8560,7 +8709,7 @@ msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
#, fuzzy
-msgid "Transition: "
+msgid "Transition:"
msgstr "টà§à¦°à§à¦¯à¦¾à¦¨à¦œà¦¿à¦¶à¦¨/সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à¦°à¦£"
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8579,11 +8728,6 @@ msgid "New name:"
msgstr "নতà§à¦¨ নাম:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "সà§à¦•েল/মাপ:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "অনà§à¦¤à¦ƒà¦¸à§à¦¥ ফেড/বিলীন (সেঃ):"
@@ -9565,6 +9709,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr "বোনà§â€Œ/হাড় পরিষà§à¦•ার করà§à¦¨"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9637,6 +9782,11 @@ msgid "Preview Canvas Scale"
msgstr "à¦à¦Ÿà¦²à¦¾à¦¸/মানচিতà§à¦°à¦¾à¦¬à¦²à§€ পà§à¦°à¦¿à¦­à¦¿à¦‰"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Layout"
+msgstr "লেআউট/নকশা সংরকà§à¦·à¦£ করà§à¦¨"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -10443,7 +10593,7 @@ msgstr "আয়তন"
#: editor/plugins/particles_editor_plugin.cpp
#, fuzzy
-msgid "Emission Source: "
+msgid "Emission Source:"
msgstr "Emission পূরণ:"
#: editor/plugins/particles_editor_plugin.cpp
@@ -10694,6 +10844,7 @@ msgid "Points"
msgstr "বিনà§à¦¦à§ সরান"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
#, fuzzy
msgid "Polygons"
msgstr "পলিগন->UV"
@@ -10861,13 +11012,6 @@ msgid "Instance:"
msgstr "ইনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "ধরণ:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr "à¦à¦¡à¦¿à¦Ÿà¦°à§‡ খà§à¦²à§à¦¨"
@@ -10876,11 +11020,6 @@ msgstr "à¦à¦¡à¦¿à¦Ÿà¦°à§‡ খà§à¦²à§à¦¨"
msgid "Load Resource"
msgstr "রিসোরà§à¦¸ লোড করà§à¦¨"
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#, fuzzy
-msgid "ResourcePreloader"
-msgstr "রিসোরà§à¦¸-à¦à¦° পথ"
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -11655,14 +11794,16 @@ msgstr "পà§à¦°à¦¦à§‡à¦¶/রাজà§à¦¯"
msgid "Translate"
msgstr "সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à¦° (Translate):"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Scaling: "
+msgid "Scaling:"
msgstr "সà§à¦•েল/মাপ:"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Translating: "
+msgid "Translating:"
msgstr "অনà§à¦¬à¦¾à¦¦à¦¸à¦®à§‚হ:"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -11687,12 +11828,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
-msgid "Size:"
-msgstr "সেল (Cell)-à¦à¦° আকার:"
-
-#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
msgid "Objects Drawn:"
msgstr "অবজেকà§à¦Ÿ আà¦à¦•া হয়েছে"
@@ -12213,7 +12348,7 @@ msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
#, fuzzy
-msgid "Convert to Mesh2D"
+msgid "Convert to MeshInstance2D"
msgstr "à¦à¦¤à§‡ রূপানà§à¦¤à¦° করà§à¦¨..."
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12249,17 +12384,18 @@ msgid "Sprite"
msgstr "ফà§à¦°à§‡à¦®à¦¸à¦®à§‚হ সà§à¦¤à§‚প করà§à¦¨"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
+#, fuzzy
+msgid "Simplification:"
msgstr "সরলীকরণ: "
#: editor/plugins/sprite_editor_plugin.cpp
#, fuzzy
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr "সà§à¦¨à§à¦¯à¦¾à¦ª (পিকà§à¦¸à§‡à¦²à¦¸à¦®à§‚হ):"
#: editor/plugins/sprite_editor_plugin.cpp
#, fuzzy
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr "সà§à¦¨à§à¦¯à¦¾à¦ª (পিকà§à¦¸à§‡à¦²à¦¸à¦®à§‚হ):"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -13316,8 +13452,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
#, fuzzy
msgid "Region"
msgstr "চালানোর মোড:"
@@ -14878,36 +15013,12 @@ msgid "Delete preset '%s'?"
msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ ফাইলসমূহ অপসারণ করবেন?"
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
#, fuzzy
msgid "Exporting All"
msgstr "%s à¦à¦° জনà§à¦¯ à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ (export) হচà§à¦›à§‡"
#: editor/project_export.cpp
#, fuzzy
-msgid "The given export path doesn't exist:"
-msgstr "ফাইলটি বিদà§à¦¯à¦®à¦¾à¦¨ নয়।"
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-"à¦à¦‡ পà§à¦²à§à¦¯à¦¾à¦Ÿà¦«à¦°à§à¦®à§‡à¦° জনà§à¦¯ দরকারি à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿà¦—à§à¦²à¦¿ কà§à¦·à¦¤à¦¿à¦—à§à¦°à¦¸à§à¦¥ হয়েছে অথবা খà§à¦à¦œà§‡ পাওয়া "
-"যাচà§à¦›à§‡ না:"
-
-#: editor/project_export.cpp
-#, fuzzy
msgid "Export Path"
msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿà§‡à¦° পà§à¦°à¦¿à¦¸à§‡à¦Ÿ:"
@@ -15064,6 +15175,11 @@ msgstr "à¦à¦‡ পà§à¦²à§à¦¯à¦¾à¦Ÿà¦«à¦°à§à¦®à§‡à¦° জনà§à¦¯ দরকা
#: editor/project_export.cpp
#, fuzzy
+msgid "Project Export"
+msgstr "পà§à¦°à¦œà§‡à¦•à§à¦Ÿ ফাউনà§à¦¡à¦¾à¦°"
+
+#: editor/project_export.cpp
+#, fuzzy
msgid "Manage Export Templates"
msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿà¦¸à¦®à§‚হ লোড হচà§à¦›à§‡"
@@ -16670,7 +16786,7 @@ msgstr "নোড সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ সংযà§à¦•à§à¦¤ করà§à¦¨
#: editor/script_editor_debugger.cpp
#, fuzzy
-msgid "Remote "
+msgid "Remote %s:"
msgstr "অপসারণ করà§à¦¨"
#: editor/script_editor_debugger.cpp
@@ -17577,7 +17693,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "পলিগন->UV"
@@ -17760,7 +17876,8 @@ msgid "Disabled GDNative Singleton"
msgstr "হাল-নাগাদকারী ঘূরà§à¦£à¦• নিষà§à¦•à§à¦°à¦¿à§Ÿ করà§à¦¨"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+#, fuzzy
+msgid "Libraries:"
msgstr "লাইবà§à¦°à§‡à¦°à¦¿: "
#: modules/gdnative/nativescript/nativescript.cpp
@@ -18208,7 +18325,6 @@ msgid "Use In Baked Light"
msgstr "লাইটà§à¦®à§à¦¯à¦¾à¦ªà§‡ হসà§à¦¤à¦¾à¦¨à§à¦¤à¦° করà§à¦¨:"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -18238,6 +18354,19 @@ msgstr "নিরà§à¦¬à¦¾à¦šà¦¨à¦•ে কেনà§à¦¦à§à¦°à§€à¦­à§‚ত করà
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Navigation Mesh তৈরি করà§à¦¨"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Navigation Mesh তৈরি করà§à¦¨"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Next Plane"
@@ -18687,7 +18816,8 @@ msgstr ""
"করে আপনার নোডটি মেরামত করà§à¦¨à¥¤"
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+#, fuzzy
+msgid "Node returned an invalid sequence output:"
msgstr "নোড অনিয়মিত কà§à¦°à¦®à§‡à¦° ফলাফল পাঠিয়েছে: "
#: modules/visual_script/visual_script.cpp
@@ -18696,7 +18826,8 @@ msgstr ""
"কà§à¦°à¦® বিট (bit) পাওয়া গিয়েছে কিনà§à¦¤à§ নোডটি সà§à¦Ÿà§à¦¯à¦¾à¦•/তাক-ঠনেই, সমসà§à¦¯à¦¾à¦Ÿà¦¿ রিপোরà§à¦Ÿ করà§à¦¨!"
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+#, fuzzy
+msgid "Stack overflow with stack depth:"
msgstr "সà§à¦Ÿà§à¦¯à¦¾à¦•/তাক-à¦à¦° গভীরতায় সà§à¦Ÿà§à¦¯à¦¾à¦•/তাক অধিপà§à¦°à¦¬à¦¾à¦¹à¦¿à¦¤/পà§à¦²à¦¾à¦¬à¦¿à¦¤ হয়েছে: "
#: modules/visual_script/visual_script.cpp
@@ -19114,7 +19245,8 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+#, fuzzy
+msgid "Input type not iterable:"
msgstr "যোগান/ইনপà§à¦Ÿ-à¦à¦° ধরণ পà§à¦¨à¦°à¦¾à¦¬à§ƒà¦¤à§à¦¤à¦¿à¦®à§‚লক নয়: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -19122,7 +19254,8 @@ msgid "Iterator became invalid"
msgstr "পà§à¦¨à¦°à¦¾à¦¬à§ƒà¦¤à§à¦¤à¦•ারী অকারà§à¦¯à¦•র হয়ে পড়েছে"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+#, fuzzy
+msgid "Iterator became invalid:"
msgstr "পà§à¦¨à¦°à¦¾à¦¬à§ƒà¦¤à§à¦¤à¦•ারী অকারà§à¦¯à¦•র হয়ে পড়েছে: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -19293,11 +19426,13 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
+#, fuzzy
+msgid "Invalid argument of type:"
msgstr ": অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ মান/আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿ-à¦à¦° ধরণ: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
+#, fuzzy
+msgid "Invalid arguments:"
msgstr ": অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ মান/আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿ-সমূহ: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -19310,11 +19445,13 @@ msgid "Var Name"
msgstr "নাম"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+#, fuzzy
+msgid "VariableGet not found in script:"
msgstr "সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿà§‡ চলক-পà§à¦°à¦¾à¦ªà¦• (VariableGet) পাওয়া যায়নি: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+#, fuzzy
+msgid "VariableSet not found in script:"
msgstr "সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿà§‡ চলক-সà§à¦¥à¦¾à¦ªà¦• (VariableSet) পাওয়া যায়নি: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -19869,10 +20006,6 @@ msgid "Could not execute on device."
msgstr "ফোলà§à¦¡à¦¾à¦° তৈরী করা সমà§à¦­à¦¬ হয়নি।"
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -19977,12 +20110,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "সংকেতসমূহ"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -20002,6 +20139,11 @@ msgid "Could not find keystore, unable to export."
msgstr "ফোলà§à¦¡à¦¾à¦° তৈরী করা সমà§à¦­à¦¬ হয়নি।"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "উপ-পà§à¦°à¦•à§à¦°à¦¿à¦¯à¦¼à¦¾à¦•ে শà§à¦°à§ করা সমà§à¦­à¦¬ হয়নি!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -20032,7 +20174,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -20043,20 +20185,18 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Could not export project files to gradle project\n"
+msgid "Could not export project files to gradle project."
msgstr "পà§à¦°à¦•লà§à¦ªà§‡à¦° পথে engine.cfg তৈরি করা সমà§à¦­à¦¬ হয়নি।"
#: platform/android/export/export_plugin.cpp
@@ -20070,7 +20210,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -20086,7 +20226,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° সরঞà§à¦œà¦¾à¦®à¦¸à¦®à§‚হ"
#: platform/android/export/export_plugin.cpp
@@ -20096,15 +20236,12 @@ msgstr "ওকটà§à¦°à§€ (octree) গঠনবিনà§à¦¯à¦¾à¦¸ তৈরি
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
msgstr "ফোলà§à¦¡à¦¾à¦° তৈরী করা সমà§à¦­à¦¬ হয়নি।"
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -20116,7 +20253,7 @@ msgstr "%s সংযà§à¦•à§à¦¤ হচà§à¦›à§‡..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr "টাইলটি খà§à¦à¦œà§‡ পাওয়া যায়নি:"
#: platform/android/export/export_plugin.cpp
@@ -20359,6 +20496,17 @@ msgstr "নোড-সমূহ করà§à¦¤à¦¨/কাট করà§à¦¨"
msgid "Custom BG Color"
msgstr "নোড-সমূহ করà§à¦¤à¦¨/কাট করà§à¦¨"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿà¦¸à¦®à§‚হ লোড হচà§à¦›à§‡"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "সà§à¦¬à¦¨à¦¿à¦°à§à¦®à¦¿à¦¤ রিলিস (release) পà§à¦¯à¦¾à¦•েজ খà§à¦à¦œà§‡ পাওয়া যায়নি।"
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -20383,25 +20531,34 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not open template for export:"
+msgid "Could not open template for export: \"%s\"."
msgstr "ফোলà§à¦¡à¦¾à¦° তৈরী করা সমà§à¦­à¦¬ হয়নি।"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Invalid export template:"
+msgid "Invalid export template: \"%s\"."
msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿà§‡à¦° টেমপà§à¦²à§‡à¦Ÿà¦¸à¦®à§‚হ ইনà§à¦¸à¦Ÿà¦² করà§à¦¨"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not write file:"
+msgid "Could not write file: \"%s\"."
msgstr "টাইলটি খà§à¦à¦œà§‡ পাওয়া যায়নি:"
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "হà§à¦¯à¦¾à¦¨à§à¦¡à§‡à¦² সà§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨"
+
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read file:"
+msgid "Could not read file: \"%s\"."
msgstr "টাইলটি খà§à¦à¦œà§‡ পাওয়া যায়নি:"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "বিচà§à¦›à§‡à¦¦:"
@@ -20477,17 +20634,17 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr "টাইলটি খà§à¦à¦œà§‡ পাওয়া যায়নি:"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr "ফোলà§à¦¡à¦¾à¦° তৈরী করা সমà§à¦­à¦¬ হয়নি।"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr "দৃশà§à¦¯ সংরকà§à¦·à¦£à§‡ সমসà§à¦¯à¦¾ হয়েছে।"
#: platform/javascript/export/export.cpp
@@ -20786,9 +20943,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "টাইলটি খà§à¦à¦œà§‡ পাওয়া যায়নি:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "উপ-পà§à¦°à¦•à§à¦°à¦¿à¦¯à¦¼à¦¾à¦•ে শà§à¦°à§ করা সমà§à¦­à¦¬ হয়নি!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "সà§à¦¥à¦¾à¦¨à§€à¦¯à¦¼à¦•রণ"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -20804,21 +20980,76 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "খà§à¦à¦œà§‡ পাওয়া যায়নি!"
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "TileSet সংরকà§à¦·à¦£à§‡ সমসà§à¦¯à¦¾ হয়েছে!"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "অংশাদি:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "উপ-পà§à¦°à¦•à§à¦°à¦¿à¦¯à¦¼à¦¾à¦•ে শà§à¦°à§ করা সমà§à¦­à¦¬ হয়নি!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "থামà§à¦¬à¦¨à§‡à¦‡à¦² তৈরি হচà§à¦›à§‡"
#: platform/osx/export/export.cpp
#, fuzzy
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr "ফোলà§à¦¡à¦¾à¦° তৈরী করা সমà§à¦­à¦¬ হয়নি।"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿà§‡à¦° টেমপà§à¦²à§‡à¦Ÿà¦¸à¦®à§‚হ ইনà§à¦¸à¦Ÿà¦² করà§à¦¨"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -20826,7 +21057,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -20868,6 +21099,16 @@ msgstr ""
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "ZIP Creation"
+msgstr "নতà§à¦¨ পà§à¦°à¦•লà§à¦ª"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr "পà§à¦°à¦•লà§à¦ªà§‡à¦° পথে engine.cfg তৈরি করা সমà§à¦­à¦¬ হয়নি।"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Invalid bundle identifier:"
msgstr "নামটি কারà§à¦¯à¦•র সনাকà§à¦¤à¦•ারী নয়:"
@@ -21181,6 +21422,11 @@ msgid "Debug Algorithm"
msgstr "ডিবাগার"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "থিমটি ফাইলে সংরকà§à¦·à¦£ করা সমà§à¦­à¦¬ হয়নি:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -21228,6 +21474,70 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "যথেচà§à¦› ঘূরà§à¦£à¦¾à§Ÿà¦¨:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "ফোলà§à¦¡à¦¾à¦° তৈরী করা সমà§à¦­à¦¬ হয়নি।"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "ফোলà§à¦¡à¦¾à¦° তৈরী করা সমà§à¦­à¦¬ হয়নি।"
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "ফোলà§à¦¡à¦¾à¦° তৈরী করা সমà§à¦­à¦¬ হয়নি।"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "ফোলà§à¦¡à¦¾à¦° তৈরী করা সমà§à¦­à¦¬ হয়নি।"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "নামটি কারà§à¦¯à¦•র সনাকà§à¦¤à¦•ারী নয়:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ নাম।"
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "থিমটি ফাইলে সংরকà§à¦·à¦£ করা সমà§à¦­à¦¬ হয়নি:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -21249,6 +21559,23 @@ msgid "Invalid product version:"
msgstr "পণà§à¦¯à§‡à¦° অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ GUID।"
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "অগà§à¦°à¦¹à¦£à¦¯à§‹à¦—à§à¦¯ à¦à¦•à§à¦¸à¦Ÿà§‡à¦¨à¦¶à¦¨"
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "উইনà§à¦¡à§‹"
@@ -21265,6 +21592,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -21393,7 +21724,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "ইনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸:"
@@ -22250,17 +22582,19 @@ msgstr ""
"করতে হবে। অনà§à¦—à§à¦°à¦¹ করে à¦à¦•টি বৈশিষà§à¦Ÿà§à¦¯ নিরà§à¦§à¦¾à¦°à¦¨ করà§à¦¨ বা à¦à¦•টি পলিগন/বহà§à¦­à§à¦œ আà¦à¦•à§à¦¨à¥¤"
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-"NavigationPolygonInstance-কে অবশà§à¦¯à¦‡ Navigation2D-à¦à¦° অংশ অথবা অংশের অংশ হতে "
-"হবে। à¦à¦Ÿà¦¾ শà§à¦§à§à¦®à¦¾à¦¤à§à¦° নà§à¦¯à¦¾à¦­à¦¿à¦—েশনের তথà§à¦¯ পà§à¦°à¦¦à¦¾à¦¨ করে।"
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr ""
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "নিমà§à¦¨"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "ভà§à¦°à¦®à¦£"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
#, fuzzy
@@ -23468,14 +23802,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-"NavigationMeshInstance-কে অবশà§à¦¯à¦‡ Navigation-à¦à¦° অংশ অথবা অংশের অংশ হতে হবে। "
-"à¦à¦Ÿà¦¾ শà§à¦§à§à¦®à¦¾à¦¤à§à¦° নà§à¦¯à¦¾à¦­à¦¿à¦—েশনের তথà§à¦¯ পà§à¦°à¦¦à¦¾à¦¨ করে।"
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
#, fuzzy
msgid "NavMesh"
@@ -26154,6 +26480,16 @@ msgid "3D Physics"
msgstr "সà§à¦¥à¦¿à¦°/বদà§à¦§ ফà§à¦°à§‡à¦® %"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Navigation Mesh তৈরি করà§à¦¨"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Navigation Mesh তৈরি করà§à¦¨"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -27577,7 +27913,7 @@ msgstr "টà§à¦°à§à¦¯à¦¾à¦¨à¦œà¦¿à¦¶à¦¨/সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à¦°à¦£"
msgid "Refraction"
msgstr "বিচà§à¦›à§‡à¦¦:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -27662,7 +27998,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "সà§à¦•েল/মাপ:"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "চলক/ভেরিয়েবল সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨:"
#: scene/resources/navigation_mesh.cpp
@@ -27680,10 +28021,15 @@ msgid "Source Group Name"
msgstr "উৎস:"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "পà§à¦°à¦§à¦¾à¦¨ দৃশà§à¦¯à§‡à¦° মান/আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿ-সমূহ:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -27693,11 +28039,16 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Regions"
+msgstr "চালানোর মোড:"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Merge Size"
msgstr "দৃশà§à¦¯ হতে à¦à¦•তà§à¦°à¦¿à¦¤ করবেন"
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -27711,6 +28062,11 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Details"
+msgstr "লোড ডিফলà§à¦Ÿ"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Sample Distance"
msgstr "ইনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸:"
@@ -27728,7 +28084,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -28144,6 +28500,11 @@ msgid "Scenario"
msgstr "দৃশà§à¦¯"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Navigation Mesh তৈরি করà§à¦¨"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -28161,6 +28522,26 @@ msgstr "রৈখিক/লিনিয়ার"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "সাধারণ/ডিফলà§à¦Ÿ"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "à¦à¦Ÿà¦²à¦¾à¦¸/মানচিতà§à¦°à¦¾à¦¬à¦²à§€ পà§à¦°à¦¿à¦­à¦¿à¦‰"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "পরীকà§à¦·à¦¾à¦®à§‚লক উৎস"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "সংযোগসমূহ সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
@@ -28888,6 +29269,5 @@ msgid "Log Active Async Compiles Count"
msgstr ""
#: servers/visual_server.cpp
-#, fuzzy
msgid "Shader Cache Size (MB)"
-msgstr "Camera à¦à¦° আকার পরিবরà§à¦¤à¦¨ করà§à¦¨"
+msgstr "শেডার কà§à¦¯à¦¾à¦¸à§‡ আকার (MB)"
diff --git a/editor/translations/br.po b/editor/translations/br.po
index 8fe333055b..3d1ca48f3f 100644
--- a/editor/translations/br.po
+++ b/editor/translations/br.po
@@ -209,9 +209,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr ""
@@ -317,7 +318,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Re nebeut a oktedoù evit diskodiñ, pe formad fall."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "Enkas fall %i (ket tremenet) en eztaol"
#: core/math/expression.cpp
@@ -361,6 +363,15 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Roudenn Galv Metodenn"
+
+#: core/os/input.cpp
+msgid "Use Accumulated Input"
+msgstr ""
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -543,7 +554,8 @@ msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr ""
@@ -626,24 +638,23 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-msgid "Plugin Name"
+msgid "Version Control Plugin Name"
msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
@@ -751,7 +762,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
msgid "Filters"
msgstr ""
@@ -1019,6 +1031,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Dieub"
@@ -1035,7 +1048,7 @@ msgstr "Melezour"
msgid "Time:"
msgstr "Amzer :"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Talvoud :"
@@ -1280,10 +1293,70 @@ msgid "Remove this track."
msgstr "Dilemel ar roudenn-se."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "Amzer (s) : "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Tro Fiñvskeudenn"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Mod Interpoladur"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Indeks fall a dip %s evit an tip diazez %s"
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Stream:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Mod Interpoladur"
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Lodennoù Fiñvskeudenn :"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "Aktivañ ar Roudenn"
@@ -1501,7 +1574,8 @@ msgid "Add Method Track Key"
msgstr "Ouzhpenn Alc'hwez Roudenn Metodenn"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "N'eus ket deus ar metodenn en objed : "
#: editor/animation_track_editor.cpp
@@ -2097,7 +2171,7 @@ msgid "Open"
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
+msgid "Owners of: %s (Total: %d)"
msgstr ""
#: editor/dependency_editor.cpp
@@ -2388,7 +2462,7 @@ msgid "Bus Options"
msgstr ""
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr ""
@@ -2440,8 +2514,8 @@ msgstr ""
msgid "There is no '%s' file."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+msgid "Layout:"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -2644,6 +2718,22 @@ msgid "Choose"
msgstr ""
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed successfully."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed."
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr ""
@@ -2656,6 +2746,26 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp
+msgid "Save PCK"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Cannot create file \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed to export project files."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Can't open file to read from path \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Save ZIP"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2758,8 +2868,25 @@ msgstr ""
msgid "Custom release template not found."
msgstr ""
+#: editor/editor_export.cpp
+msgid "Prepare Template"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "The given export path doesn't exist."
+msgstr ""
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+msgid "Template file not found: \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed to copy export template."
+msgstr ""
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
msgstr ""
#: editor/editor_export.cpp
@@ -2930,9 +3057,9 @@ msgid "Import"
msgstr ""
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr ""
@@ -4011,14 +4138,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4134,6 +4253,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr ""
@@ -4161,6 +4284,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
@@ -4791,11 +4918,13 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+msgid "Page:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
@@ -4887,6 +5016,10 @@ msgid ""
"as runnable."
msgstr ""
+#: editor/editor_run_native.cpp
+msgid "Project Run"
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -5145,7 +5278,9 @@ msgid "Draw Spaces"
msgstr ""
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr ""
@@ -5684,10 +5819,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Sorting Order"
msgstr ""
@@ -6406,14 +6543,6 @@ msgid "Replace in Files"
msgstr ""
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr ""
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr ""
@@ -6541,7 +6670,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Aktivañ ar Roudenn"
@@ -6787,7 +6916,7 @@ msgid "Generating Lightmaps"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+msgid "Generating for Mesh:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -6815,6 +6944,18 @@ msgid "Saving..."
msgstr ""
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7593,10 +7734,12 @@ msgstr ""
msgid "Directions"
msgstr ""
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr ""
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr ""
@@ -7751,8 +7894,9 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
-msgstr ""
+#, fuzzy
+msgid "Transition:"
+msgstr "Tro Fiñvskeudenn"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Play Mode:"
@@ -7768,11 +7912,6 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr ""
@@ -8657,6 +8796,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr ""
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -8720,6 +8860,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -9463,7 +9607,7 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+msgid "Emission Source:"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
@@ -9693,6 +9837,7 @@ msgid "Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr ""
@@ -9846,13 +9991,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -9861,10 +9999,6 @@ msgstr ""
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -10551,13 +10685,16 @@ msgstr ""
msgid "Translate"
msgstr ""
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
+msgid "Scaling:"
msgstr ""
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "Tro Fiñvskeudenn"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -10580,11 +10717,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11059,7 +11191,7 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+msgid "Convert to MeshInstance2D"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11091,15 +11223,16 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "Tro Fiñvskeudenn"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12018,8 +12151,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr ""
@@ -13441,31 +13573,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr ""
@@ -13600,6 +13711,10 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Project Export"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr ""
@@ -15031,8 +15146,9 @@ msgid "Attach Node Script"
msgstr ""
#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr ""
+#, fuzzy
+msgid "Remote %s:"
+msgstr "Dilemel ar Roudenn Fiñvskeudenn"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -15851,7 +15967,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
msgid "Polygon"
msgstr ""
@@ -16013,7 +16129,7 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+msgid "Libraries:"
msgstr ""
#: modules/gdnative/nativescript/nativescript.cpp
@@ -16415,7 +16531,6 @@ msgid "Use In Baked Light"
msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -16441,6 +16556,19 @@ msgstr ""
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Eilskoueriañ an Alc'whezh(ioù) Uhelsklaeriet"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Talvoud :"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -16836,7 +16964,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -16844,7 +16972,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17207,7 +17335,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17215,7 +17343,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17369,12 +17497,14 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
+#, fuzzy
+msgid "Invalid argument of type:"
+msgstr "Argumant fall evit sevel '%s'"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
+#, fuzzy
+msgid "Invalid arguments:"
+msgstr "Argumant fall evit sevel '%s'"
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -17385,12 +17515,14 @@ msgid "Var Name"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableGet not found in script:"
+msgstr "N'eus ket deus ar metodenn en objed : "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableSet not found in script:"
+msgstr "N'eus ket deus ar metodenn en objed : "
#: modules/visual_script/visual_script_nodes.cpp
msgid "Preload"
@@ -17880,10 +18012,6 @@ msgid "Could not execute on device."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -17987,12 +18115,15 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Code Signing"
+msgstr ""
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18008,6 +18139,10 @@ msgid "Could not find keystore, unable to export."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Could not start apksigner executable."
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -18036,7 +18171,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18047,19 +18182,17 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+msgid "Could not export project files to gradle project."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18072,7 +18205,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -18087,7 +18220,7 @@ msgid ""
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18095,15 +18228,12 @@ msgid "Creating APK..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -18113,7 +18243,7 @@ msgid "Adding files..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18341,6 +18471,15 @@ msgstr "Fonksionoù :"
msgid "Custom BG Color"
msgstr "Fonksionoù :"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+msgid "Prepare Templates"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Export template not found."
+msgstr ""
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18362,19 +18501,29 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Could not open template for export: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
+msgstr "Indeks fall a dip %s evit an tip diazez %s"
+
+#: platform/javascript/export/export.cpp
+msgid "Could not write file: \"%s\"."
msgstr ""
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Tro Fiñvskeudenn"
+
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not read file: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+msgid "PWA"
msgstr ""
#: platform/javascript/export/export.cpp
@@ -18448,15 +18597,15 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr ""
#: platform/javascript/export/export.cpp
@@ -18726,9 +18875,26 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Could not open icon file \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Could not start xcrun executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Tro Fiñvskeudenn"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -18744,18 +18910,71 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
msgid "No identity found."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Cannot sign file %s."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Fonksionoù :"
+
+#: platform/osx/export/export.cpp
+msgid "Could not start hdiutil executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Creating app bundle"
msgstr ""
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Roudenn Treuzfurmadur 3D"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -18763,7 +18982,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -18804,6 +19023,15 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "Tro Fiñvskeudenn"
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr ""
@@ -19100,6 +19328,10 @@ msgid "Debug Algorithm"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Failed to rename temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -19140,6 +19372,63 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Resources Modification"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Argumant fall evit sevel '%s'"
+
+#: platform/windows/export/export.cpp
+msgid "Invalid timestamp server."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Failed to remove temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19158,6 +19447,22 @@ msgid "Invalid product version:"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Failed to open executable file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Windows"
msgstr ""
@@ -19173,6 +19478,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
msgid "Frames"
@@ -19284,7 +19593,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
@@ -20044,13 +20354,15 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
+msgid "Navpoly"
msgstr ""
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Enter Cost"
+msgstr ""
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Travel Cost"
msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
@@ -21130,12 +21442,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -23566,6 +23872,16 @@ msgid "3D Physics"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Eilskoueriañ an Alc'whezh(ioù) Uhelsklaeriet"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Eilskoueriañ an Alc'whezh(ioù) Uhelsklaeriet"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -24839,7 +25155,7 @@ msgstr ""
msgid "Refraction"
msgstr ""
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -24916,10 +25232,15 @@ msgid "Visible Instance Count"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Sample Partition Type"
+msgid "Sampling"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
+msgstr "Tro Fiñvskeudenn"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Parsed Geometry Type"
msgstr ""
@@ -24932,7 +25253,11 @@ msgid "Source Group Name"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
+msgid "Agents"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -24944,11 +25269,16 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Regions"
+msgstr "Fonksionoù :"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -24961,6 +25291,10 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+msgid "Details"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -24977,7 +25311,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -25347,6 +25681,11 @@ msgid "Scenario"
msgstr ""
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Tro Fiñvskeudenn"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -25362,6 +25701,26 @@ msgstr ""
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Talvoud :"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Talvoud :"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Talvoud :"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Tro Fiñvskeudenn"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/ca.po b/editor/translations/ca.po
index c892b3f5ec..380a247ac7 100644
--- a/editor/translations/ca.po
+++ b/editor/translations/ca.po
@@ -16,13 +16,14 @@
# Roberto Pérez <djleizar@gmail.com>, 2021.
# Joel Garcia Cascalló <jocsencat@gmail.com>, 2021.
# DFC <damiafluixacanals28@gmail.com>, 2021.
+# Roger VC <rogervilarasau@gmail.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-04-03 13:13+0000\n"
-"Last-Translator: roger <616steam@gmail.com>\n"
+"PO-Revision-Date: 2022-06-19 11:52+0000\n"
+"Last-Translator: Roger VC <rogervilarasau@gmail.com>\n"
"Language-Team: Catalan <https://hosted.weblate.org/projects/godot-engine/"
"godot/ca/>\n"
"Language: ca\n"
@@ -30,11 +31,11 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.12-dev\n"
+"X-Generator: Weblate 4.13.1-dev\n"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
-msgstr ""
+msgstr "Controlador de tauleta"
#: core/bind/core_bind.cpp
msgid "Clipboard"
@@ -46,20 +47,19 @@ msgstr "Escena Actual"
#: core/bind/core_bind.cpp
msgid "Exit Code"
-msgstr ""
+msgstr "Codi de sortida"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "V-Sync Enabled"
-msgstr "V-Sync Activat"
+msgstr "Sincronització Vertical habilitada"
#: core/bind/core_bind.cpp main/main.cpp
msgid "V-Sync Via Compositor"
-msgstr ""
+msgstr "V-Sync mitjançant Compositor"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Delta Smoothing"
-msgstr ""
+msgstr "Suavitzat delta"
#: core/bind/core_bind.cpp
msgid "Low Processor Usage Mode"
@@ -91,13 +91,12 @@ msgid "Window"
msgstr "Finestra"
#: core/bind/core_bind.cpp core/project_settings.cpp
-#, fuzzy
msgid "Borderless"
msgstr "Sense Vores"
#: core/bind/core_bind.cpp
msgid "Per Pixel Transparency Enabled"
-msgstr ""
+msgstr "Transparència per píxel activada"
#: core/bind/core_bind.cpp core/project_settings.cpp
msgid "Fullscreen"
@@ -105,7 +104,7 @@ msgstr "Pantalla Completa"
#: core/bind/core_bind.cpp
msgid "Maximized"
-msgstr ""
+msgstr "Maximitzat"
#: core/bind/core_bind.cpp
msgid "Minimized"
@@ -114,7 +113,7 @@ msgstr "Minimitzat"
#: core/bind/core_bind.cpp core/project_settings.cpp scene/gui/dialogs.cpp
#: scene/gui/graph_node.cpp
msgid "Resizable"
-msgstr ""
+msgstr "Redimensionable"
#: core/bind/core_bind.cpp core/os/input_event.cpp scene/2d/node_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/remote_transform_2d.cpp
@@ -146,7 +145,7 @@ msgstr "Suggeriment de l'Editor"
#: core/bind/core_bind.cpp
msgid "Print Error Messages"
-msgstr ""
+msgstr "Imprimeix missatges d'error"
#: core/bind/core_bind.cpp
msgid "Iterations Per Second"
@@ -184,7 +183,7 @@ msgstr "Resultat"
#: core/command_queue_mt.cpp core/message_queue.cpp main/main.cpp
msgid "Memory"
-msgstr ""
+msgstr "Memòria"
#: core/command_queue_mt.cpp core/message_queue.cpp
#: core/register_core_types.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
@@ -195,7 +194,7 @@ msgstr ""
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
#: servers/visual_server.cpp
msgid "Limits"
-msgstr ""
+msgstr "Límits"
#: core/command_queue_mt.cpp
msgid "Command Queue"
@@ -203,7 +202,7 @@ msgstr "Cua de Comandes"
#: core/command_queue_mt.cpp
msgid "Multithreading Queue Size (KB)"
-msgstr ""
+msgstr "Mida de la cua de multiprocés (KB)"
#: core/func_ref.cpp modules/visual_script/visual_script_builtin_funcs.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
@@ -215,19 +214,19 @@ msgstr "Funció"
#: core/image.cpp core/packed_data_container.cpp scene/2d/polygon_2d.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
msgid "Data"
-msgstr ""
+msgstr "Dades"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr "Xarxa"
#: core/io/file_access_network.cpp
-#, fuzzy
msgid "Remote FS"
-msgstr "Remot "
+msgstr "FS remot"
#: core/io/file_access_network.cpp
msgid "Page Size"
@@ -239,7 +238,7 @@ msgstr ""
#: core/io/http_client.cpp
msgid "Blocking Mode Enabled"
-msgstr ""
+msgstr "Mode de bloqueig activat"
#: core/io/http_client.cpp
msgid "Connection"
@@ -260,7 +259,7 @@ msgstr "Activa l'Efecte Paper Ceba"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
msgid "Refuse New Network Connections"
-msgstr ""
+msgstr "Rebutja les noves connexions de xarxa"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
#, fuzzy
@@ -286,11 +285,11 @@ msgstr ""
#: core/io/packet_peer.cpp
msgid "Input Buffer Max Size"
-msgstr ""
+msgstr "Mida màxima del buffer d'entrada"
#: core/io/packet_peer.cpp
msgid "Output Buffer Max Size"
-msgstr ""
+msgstr "Mida màxima del buffer de sortida"
#: core/io/packet_peer.cpp
msgid "Stream Peer"
@@ -302,16 +301,15 @@ msgstr ""
#: core/io/stream_peer.cpp
msgid "Data Array"
-msgstr ""
+msgstr "Matriu de dades"
#: core/io/stream_peer_ssl.cpp
msgid "Blocking Handshake"
msgstr ""
#: core/io/udp_server.cpp
-#, fuzzy
msgid "Max Pending Connections"
-msgstr "Editar Connexió:"
+msgstr "Màxim de connexions pendents"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -329,7 +327,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Manquen bytes per a descodificar els bytes, o el format no és vàlid."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "L'entrada %i en l'expressió no és vàlida (no transmesa)"
#: core/math/expression.cpp
@@ -359,7 +358,7 @@ msgstr "En la crida a '%s':"
#: core/math/random_number_generator.cpp
#: modules/opensimplex/open_simplex_noise.cpp
msgid "Seed"
-msgstr ""
+msgstr "Llavor"
#: core/math/random_number_generator.cpp
msgid "State"
@@ -367,11 +366,21 @@ msgstr "Estat"
#: core/message_queue.cpp
msgid "Message Queue"
-msgstr ""
+msgstr "Cua de missatges"
#: core/message_queue.cpp
msgid "Max Size (KB)"
-msgstr ""
+msgstr "Mida màxima (KB)"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Mode de moviment"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "Elimina l'Entrada"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
@@ -385,7 +394,7 @@ msgstr "Tot"
#: core/os/input_event.cpp
msgid "Shift"
-msgstr ""
+msgstr "Shift"
#: core/os/input_event.cpp
msgid "Control"
@@ -393,7 +402,7 @@ msgstr "Control"
#: core/os/input_event.cpp
msgid "Meta"
-msgstr ""
+msgstr "Meta"
#: core/os/input_event.cpp
#, fuzzy
@@ -413,11 +422,11 @@ msgstr "Explora"
#: core/os/input_event.cpp
msgid "Physical Scancode"
-msgstr ""
+msgstr "Codi d'escaneig físic"
#: core/os/input_event.cpp
msgid "Unicode"
-msgstr ""
+msgstr "Unicode"
#: core/os/input_event.cpp
msgid "Echo"
@@ -437,13 +446,12 @@ msgid "Factor"
msgstr "Factor"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Button Index"
-msgstr "Ãndex del Botó del ratolí:"
+msgstr "Ãndex de botons"
#: core/os/input_event.cpp
msgid "Doubleclick"
-msgstr ""
+msgstr "Doble clic"
#: core/os/input_event.cpp
msgid "Tilt"
@@ -519,9 +527,8 @@ msgid "Instrument"
msgstr ""
#: core/os/input_event.cpp
-#, fuzzy
msgid "Controller Number"
-msgstr "Nombre de controlador"
+msgstr "Número de controlador"
#: core/os/input_event.cpp
msgid "Controller Value"
@@ -538,9 +545,8 @@ msgid "Config"
msgstr "Configuració"
#: core/project_settings.cpp
-#, fuzzy
msgid "Project Settings Override"
-msgstr "Configuració del Projecte..."
+msgstr "Anul·lació de la configuració del projecte"
#: core/project_settings.cpp core/resource.cpp
#: editor/animation_track_editor.cpp editor/editor_autoload_settings.cpp
@@ -563,7 +569,8 @@ msgstr "Descripció"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "Executar"
@@ -649,9 +656,12 @@ msgid "Editor"
msgstr "Editor"
#: core/project_settings.cpp
-#, fuzzy
msgid "Main Run Args"
-msgstr "Arguments de l'Escena Principal:"
+msgstr "Arguments d'execució principal"
+
+#: core/project_settings.cpp
+msgid "Scene Naming"
+msgstr "Nomenclatura de l'escena"
#: core/project_settings.cpp
msgid "Search In File Extensions"
@@ -661,18 +671,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Control de Versions"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Sistema de control de versions"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Nom del Connector"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Control de Versions"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -790,7 +797,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
msgid "Filters"
msgstr "Filtres"
@@ -870,9 +878,8 @@ msgid "TCP"
msgstr ""
#: core/register_core_types.cpp
-#, fuzzy
msgid "Connect Timeout Seconds"
-msgstr "Connexions al mètode:"
+msgstr "Segons de temps d'espera de connexió"
#: core/register_core_types.cpp
msgid "Packet Peer Stream"
@@ -1065,6 +1072,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Allibera"
@@ -1081,7 +1089,7 @@ msgstr "Emmiralla"
msgid "Time:"
msgstr "Temps:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Valor:"
@@ -1156,9 +1164,8 @@ msgstr "Localització"
#: editor/animation_track_editor.cpp modules/gltf/gltf_node.cpp
#: scene/2d/polygon_2d.cpp scene/2d/remote_transform_2d.cpp
#: scene/3d/remote_transform.cpp scene/3d/spatial.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Rotation"
-msgstr "Pas de la Rotació:"
+msgstr "Rotació"
#: editor/animation_track_editor.cpp editor/script_editor_debugger.cpp
#: modules/visual_script/visual_script_nodes.cpp scene/gui/range.cpp
@@ -1166,9 +1173,8 @@ msgid "Value"
msgstr "Valor"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Arg Count"
-msgstr "Quantitat:"
+msgstr "Quantitat d'arguments"
#: editor/animation_track_editor.cpp main/main.cpp
#: modules/mono/mono_gd/gd_mono.cpp
@@ -1200,14 +1206,12 @@ msgid "Stream"
msgstr ""
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Start Offset"
-msgstr "òfset de la quadrícula:"
+msgstr "Desplaçament d'inici"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "End Offset"
-msgstr "òfset:"
+msgstr "Desplaçament final"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
#: editor/import/resource_importer_scene.cpp
@@ -1331,8 +1335,70 @@ msgid "Remove this track."
msgstr "Treu la Pista."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
-msgstr "Temps (s): "
+msgid "Time (s):"
+msgstr "Temps (s):"
+
+#: editor/animation_track_editor.cpp
+msgid "Position:"
+msgstr "Posició:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Pas de la Rotació:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "Escala:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "Tipus:"
+
+#: editor/animation_track_editor.cpp
+msgid "(Invalid, expected type: %s)"
+msgstr "(No vàlid, tipus esperat: %s)"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Easing:"
+msgstr "Esmorteeix Entrada-Sortida"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "In-Handle:"
+msgstr "Estableix la Nansa"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Out-Handle:"
+msgstr "Estableix la Nansa"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "Element de ràdio"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Reinici (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "End (s):"
+msgstr "Fosa d'entrada (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Animacions:"
#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
@@ -1550,8 +1616,8 @@ msgid "Add Method Track Key"
msgstr "Afegir Clau de Pista de Mètode"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
-msgstr "No s'ha trobat el mètode en l'objecte: "
+msgid "Method not found in object:"
+msgstr "Mètode no trobat a l'objecte:"
#: editor/animation_track_editor.cpp
msgid "Anim Move Keys"
@@ -2164,8 +2230,8 @@ msgid "Open"
msgstr "Obre"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Propietaris de:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
msgid ""
@@ -2369,17 +2435,15 @@ msgid "%s (already exists)"
msgstr "%s (ja existeix)"
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
msgstr ""
-"El contingut del(s) fitxer(s) d'asset \"%s\" - %d entra en conflicte amb el "
-"vostre project:"
+"El contingut del recurs \"%s\" - %d fitxer(s) entra en conflicte amb el "
+"vostre projecte:"
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "Contents of asset \"%s\" - No files conflict with your project:"
msgstr ""
-"Continguts de l'asset \"%s\" - Cap fitxer entra en conflicte amb el vostre "
+"Contingut del recurs \"%s\": no hi ha cap fitxer en conflicte amb el vostre "
"projecte:"
#: editor/editor_asset_installer.cpp
@@ -2396,9 +2460,8 @@ msgid "(and %s more files)"
msgstr "(i %s fitxer(s) més)"
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "Asset \"%s\" installed successfully!"
-msgstr "El asset \"%s\" s'ha instal·lat exitosament!"
+msgstr "El recurs \"%s\" s'ha instal·lat correctament!"
#: editor/editor_asset_installer.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -2479,7 +2542,7 @@ msgid "Bus Options"
msgstr "Opcions del Bus"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Duplica"
@@ -2531,9 +2594,9 @@ msgstr "Obre un Disseny de Bus d'Àudio"
msgid "There is no '%s' file."
msgstr "No hi ha cap fitxer '%s'."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
-msgstr "Desar Disseny"
+#: editor/editor_audio_buses.cpp
+msgid "Layout:"
+msgstr "Disseny:"
#: editor/editor_audio_buses.cpp
msgid "Invalid file, not an audio bus layout."
@@ -2656,9 +2719,8 @@ msgid "%s is an invalid path. File does not exist."
msgstr "%s es un camí no vàlid. El fitxer no existeix."
#: editor/editor_autoload_settings.cpp
-#, fuzzy
msgid "%s is an invalid path. Not in resource path (res://)."
-msgstr "%s es un camí no vàlid. No està en el camí del recurs (res://)."
+msgstr "%s no és un camí vàlid. No a la ruta del recurs (res://)."
#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
@@ -2737,6 +2799,23 @@ msgid "Choose"
msgstr "Tria"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr "Completat amb errors."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "Completat amb èxit."
+
+#: editor/editor_export.cpp
+msgid "Failed."
+msgstr "Fallit:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Emmagatzemant Fitxer:"
@@ -2749,6 +2828,29 @@ msgid "Packing"
msgstr "Compressió"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Anomena i Desa"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "No s'ha pogut crear el directori."
+
+#: editor/editor_export.cpp
+msgid "Failed to export project files."
+msgstr "No s'han pogut exportar els fitxers del projecte."
+
+#: editor/editor_export.cpp
+msgid "Can't open file to read from path \"%s\"."
+msgstr "No es pot obrir el fitxer per llegir-lo des del camí \"%s\"."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Anomena i Desa"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2823,9 +2925,8 @@ msgid "Release"
msgstr "alliberat"
#: editor/editor_export.cpp
-#, fuzzy
msgid "Binary Format"
-msgstr "Operador Color."
+msgstr "Format binari"
#: editor/editor_export.cpp
msgid "64 Bits"
@@ -2872,9 +2973,28 @@ msgstr "No s'ha trobat cap plantilla de depuració personalitzada."
msgid "Custom release template not found."
msgstr "No s'ha trobat cap plantilla de publicació personalitzada."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "Administrar Plantilles"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "The given export path doesn't exist."
+msgstr "El camí d'exportació donat no existeix:"
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
-msgstr "No s'ha trobat la Plantilla:"
+msgid "Template file not found: \"%s\"."
+msgstr "No s'ha trobat el fitxer de plantilla: \"%s\"."
+
+#: editor/editor_export.cpp
+msgid "Failed to copy export template."
+msgstr "No s'ha pogut copiar la plantilla d'exportació."
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+#, fuzzy
+msgid "PCK Embedding"
+msgstr "Farciment"
#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
@@ -2923,9 +3043,8 @@ msgid "Allows to edit scripts using the integrated script editor."
msgstr "Permet editar scripts utilitzant l'editor de scripts integrat."
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Provides built-in access to the Asset Library."
-msgstr "Proveeix accés integrat a la Llibreria de Assets."
+msgstr "Proporciona accés integrat a la Biblioteca de Recursos."
#: editor/editor_feature_profile.cpp
msgid "Allows editing the node hierarchy in the Scene dock."
@@ -3055,9 +3174,9 @@ msgid "Import"
msgstr "Importar"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Exportar"
@@ -3171,14 +3290,12 @@ msgid "Save a File"
msgstr "Desa un Fitxer"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Access"
-msgstr "Èxit!"
+msgstr "Accés"
#: editor/editor_file_dialog.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Display Mode"
-msgstr "Mode de Reproducció:"
+msgstr "Mode de visualització"
#: editor/editor_file_dialog.cpp
#: editor/import/resource_importer_layered_texture.cpp
@@ -3196,19 +3313,16 @@ msgid "Mode"
msgstr "Mode d'Escombratge lateral"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Current Dir"
-msgstr "Actual:"
+msgstr "Directori actual"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Current File"
-msgstr "Perfil Actual:"
+msgstr "Fitxer actual"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Current Path"
-msgstr "Actual:"
+msgstr "Camí actual"
#: editor/editor_file_dialog.cpp editor/editor_settings.cpp
#: scene/gui/file_dialog.cpp
@@ -3539,9 +3653,8 @@ msgid "Checked"
msgstr "Element validat"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Draw Red"
-msgstr "Crides de Dibuix:"
+msgstr "Dibuixa en vermell"
#: editor/editor_inspector.cpp
#, fuzzy
@@ -3930,10 +4043,9 @@ msgid "Save changes to '%s' before closing?"
msgstr "Desar els canvis a '%s' abans de tancar?"
#: editor/editor_node.cpp
-#, fuzzy
msgid "%s no longer exists! Please specify a new save location."
msgstr ""
-"%s ja no existeix! Si us plau especifiqueu una nova localització de guardat."
+"%s ja no existeix! Si us plau especifiqueu una nova ubicació per desar."
#: editor/editor_node.cpp
msgid ""
@@ -4234,15 +4346,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Escena"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Camí de l'Escena:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4331,9 +4434,8 @@ msgid "Inspector"
msgstr "Inspector"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Default Property Name Style"
-msgstr "Camí del Projecte:"
+msgstr "Estil de nom de propietat per defecte"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4371,6 +4473,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Control de Versions"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Reanomena"
@@ -4399,6 +4505,10 @@ msgstr "Commutar el Mode Lliure de Distraccions."
msgid "Add a new scene."
msgstr "Afegeix una escena nova."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Escena"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Vés a l'escena oberta anteriorment."
@@ -4755,9 +4865,8 @@ msgid "Update All Changes"
msgstr "Actualitzar quan es canvia"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Update Vital Changes"
-msgstr "Canvis de Material:"
+msgstr "Actualitza els canvis vitals"
#: editor/editor_node.cpp
msgid "Hide Update Spinner"
@@ -5087,12 +5196,14 @@ msgid "Selected node is not a Viewport!"
msgstr "El Node seleccionat no és una Vista!"
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr "Mida: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
+msgstr "Mida:"
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr "Pàgina: "
+msgid "Page:"
+msgstr "Pàgina:"
#: editor/editor_properties_array_dict.cpp
#: editor/plugins/theme_editor_plugin.cpp
@@ -5179,9 +5290,8 @@ msgid "Extend Script"
msgstr "Estendre l'script"
#: editor/editor_resource_picker.cpp
-#, fuzzy
msgid "Script Owner"
-msgstr "Nom de l'script:"
+msgstr "Propietari de l'script"
#: editor/editor_run_native.cpp
#, fuzzy
@@ -5193,6 +5303,11 @@ msgstr ""
"No s'ha trobat cap patró d'exportació executable per aquesta plataforma. \n"
"Afegiu un patró predeterminat en el menú d'exportació."
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Projecte"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Escriu la lògica en el mètode _run()."
@@ -5354,14 +5469,12 @@ msgid "Directories"
msgstr "Direccions"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Autoscan Project Path"
-msgstr "Camí del Projecte:"
+msgstr "Escaneja automàticament la ruta del projecte"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Default Project Path"
-msgstr "Camí del Projecte:"
+msgstr "Camí del projecte per defecte"
#: editor/editor_settings.cpp
#, fuzzy
@@ -5383,9 +5496,8 @@ msgid "File Dialog"
msgstr "Diàleg XForm"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Thumbnail Size"
-msgstr "Miniatura..."
+msgstr "Mida de la miniatura"
#: editor/editor_settings.cpp
msgid "Docks"
@@ -5467,17 +5579,17 @@ msgid "Convert Indent On Save"
msgstr "Converteix la Sagnia en Espais"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Draw Tabs"
-msgstr "Crides de Dibuix:"
+msgstr "Dibuixa pestanyes"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Draw Spaces"
-msgstr "Crides de Dibuix:"
+msgstr "Dibuixa espais"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
#, fuzzy
msgid "Navigation"
msgstr "Mode Navegació"
@@ -5508,9 +5620,8 @@ msgid "Appearance"
msgstr ""
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Show Line Numbers"
-msgstr "Línia:"
+msgstr "Mostra els números de línia"
#: editor/editor_settings.cpp
#, fuzzy
@@ -5656,9 +5767,8 @@ msgid "Add Type Hints"
msgstr "Tipus"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Use Single Quotes"
-msgstr "Utilitzar Cometes Simples"
+msgstr "Utilitza cometes simples"
#: editor/editor_settings.cpp
#, fuzzy
@@ -5682,9 +5792,8 @@ msgid "Grid Map"
msgstr "Mapa de Graella"
#: editor/editor_settings.cpp modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Pick Distance"
-msgstr "Trieu la distància:"
+msgstr "Trieu la distància"
#: editor/editor_settings.cpp editor/plugins/tile_map_editor_plugin.cpp
#, fuzzy
@@ -5737,14 +5846,12 @@ msgid "Shape"
msgstr ""
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Primary Grid Steps"
-msgstr "Pas de la Quadrícula:"
+msgstr "Passos de la quadrícula primària"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Grid Size"
-msgstr "Pas de la Quadrícula:"
+msgstr "Mida de la quadrícula"
#: editor/editor_settings.cpp
msgid "Grid Division Level Max"
@@ -5929,7 +6036,7 @@ msgstr "Elimina Elements de Classe"
#: editor/editor_settings.cpp
#, fuzzy
msgid "Bone Selected Color"
-msgstr "Perfil Actual:"
+msgstr "Color seleccionat de l'os"
#: editor/editor_settings.cpp
msgid "Bone IK Color"
@@ -5940,9 +6047,8 @@ msgid "Bone Outline Color"
msgstr ""
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Bone Outline Size"
-msgstr "Mida del Contorn:"
+msgstr "Mida del contorn de l'os"
#: editor/editor_settings.cpp
msgid "Viewport Border Color"
@@ -6036,9 +6142,8 @@ msgid "Auto Save"
msgstr "Auto Tall"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Save Before Running"
-msgstr "Desar l'escena abans de executar-la..."
+msgstr "Desa abans d'executar-lo"
#: editor/editor_settings.cpp
#, fuzzy
@@ -6047,9 +6152,8 @@ msgstr "Vista Frontal"
#: editor/editor_settings.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
-#, fuzzy
msgid "Remote Host"
-msgstr "Remot "
+msgstr "Amfitrió remot"
#: editor/editor_settings.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
@@ -6076,14 +6180,15 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Gestor del Projecte"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Sorting Order"
-msgstr "Reanomenant directori:"
+msgstr "Ordre d'ordenació"
#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
msgid "Symbol Color"
@@ -6115,16 +6220,14 @@ msgid "Comment Color"
msgstr ""
#: editor/editor_settings.cpp
-#, fuzzy
msgid "String Color"
-msgstr "Emmagatzemant Fitxer:"
+msgstr "Color de la cadena"
#: editor/editor_settings.cpp platform/javascript/export/export.cpp
#: platform/uwp/export/export.cpp
#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Background Color"
-msgstr "Color de fons no vàlid."
+msgstr "Color de fons"
#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
#, fuzzy
@@ -6154,14 +6257,12 @@ msgid "Text Color"
msgstr "Planta Següent"
#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Line Number Color"
-msgstr "Línia:"
+msgstr "Color del número de línia"
#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Safe Line Number Color"
-msgstr "Línia:"
+msgstr "Color del número de línia segura"
#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
msgid "Caret Color"
@@ -6287,9 +6388,8 @@ msgid "%s Error"
msgstr "Error"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Open the folder containing these templates."
-msgstr "Obrir la carpeta que conte aquestes plantilles."
+msgstr "Obriu la carpeta que conté aquestes plantilles."
#: editor/export_template_manager.cpp
msgid "Uninstall these templates."
@@ -6306,9 +6406,8 @@ msgid "Retrieving the mirror list..."
msgstr "S'estan buscant rèpliques..."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Starting the download..."
-msgstr "Començant la descarrega..."
+msgstr "S'està iniciant la baixada..."
#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
@@ -6337,18 +6436,16 @@ msgid "Request failed."
msgstr "Ha fallat la sol·licitud."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Request ended up in a redirect loop."
-msgstr "La sol·licitud a acabat en un bucle de redirecció."
+msgstr "La sol·licitud ha acabat en un bucle de redirecció."
#: editor/export_template_manager.cpp
msgid "Request failed:"
msgstr "La Sol·licitud ha fallat:"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Download complete; extracting templates..."
-msgstr "Descarrega completa; extraient plantilles..."
+msgstr "S'ha completat la baixada; s'estan extraient les plantilles..."
#: editor/export_template_manager.cpp
#, fuzzy
@@ -6375,7 +6472,6 @@ msgstr ""
"informeu d'aquest problema!"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Best available mirror"
msgstr "Millor mirall disponible"
@@ -6501,9 +6597,8 @@ msgid "Uninstall"
msgstr "Desinstal·lar"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Uninstall templates for the current version."
-msgstr "Valor inicial per al comptador."
+msgstr "Desinstal·la les plantilles de la versió actual."
#: editor/export_template_manager.cpp
msgid "Download from:"
@@ -6543,9 +6638,8 @@ msgid "Install from File"
msgstr "Instal·lar des d'un Fitxer"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Install templates from a local file."
-msgstr "Instal·lar plantilles des d'un fitxer local."
+msgstr "Instal·la plantilles des d'un fitxer local."
#: editor/export_template_manager.cpp editor/find_in_files.cpp
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
@@ -6881,14 +6975,6 @@ msgid "Replace in Files"
msgstr "Reemplaça-hoTot"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "Cerca: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "Reemplaça: "
-
-#: editor/find_in_files.cpp
#, fuzzy
msgid "Replace All (NO UNDO)"
msgstr "Reemplaça-hoTot"
@@ -7025,10 +7111,9 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
-#, fuzzy
+#: scene/gui/control.cpp
msgid "Filter"
-msgstr "Filtres:"
+msgstr "Filtre"
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp
@@ -7055,17 +7140,15 @@ msgstr "Auto Tall"
#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
#: scene/resources/style_box.cpp
-#, fuzzy
msgid "Horizontal"
-msgstr "Horitzontal:"
+msgstr "Horitzontal"
#: editor/import/resource_importer_layered_texture.cpp
#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
#: scene/resources/style_box.cpp
-#, fuzzy
msgid "Vertical"
-msgstr "Vertical:"
+msgstr "Vertical"
#: editor/import/resource_importer_obj.cpp
#, fuzzy
@@ -7145,9 +7228,8 @@ msgid "Root Type"
msgstr "Tipus de Membre"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Root Name"
-msgstr "Remot "
+msgstr "Nom de l'arrel"
#: editor/import/resource_importer_scene.cpp
#, fuzzy
@@ -7160,18 +7242,16 @@ msgid "Custom Script"
msgstr "Talla els Nodes"
#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
-#, fuzzy
msgid "Storage"
-msgstr "Emmagatzemant Fitxer:"
+msgstr "Emmagatzematge"
#: editor/import/resource_importer_scene.cpp
msgid "Use Legacy Names"
msgstr ""
#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Materials"
-msgstr "Canvis de Material:"
+msgstr "Materials"
#: editor/import/resource_importer_scene.cpp
#, fuzzy
@@ -7248,14 +7328,12 @@ msgid "Enabled"
msgstr "Activar"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Max Linear Error"
-msgstr "Error Lineal Max.:"
+msgstr "Error lineal màxim"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Max Angular Error"
-msgstr "Error Angular Max.:"
+msgstr "Error angular màxim"
#: editor/import/resource_importer_scene.cpp
#, fuzzy
@@ -7275,9 +7353,8 @@ msgstr "Talls d'Animació"
#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
#: scene/3d/particles.cpp scene/resources/environment.cpp
-#, fuzzy
msgid "Amount"
-msgstr "Quantitat:"
+msgstr "Quantitat"
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -7293,8 +7370,8 @@ msgid "Generating Lightmaps"
msgstr "S'estan generant els Lightmaps"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
-msgstr "S'està generant per a la Malla: "
+msgid "Generating for Mesh:"
+msgstr "S'està generant per malla:"
#: editor/import/resource_importer_scene.cpp
msgid "Running Custom Script..."
@@ -7321,6 +7398,18 @@ msgid "Saving..."
msgstr "Desant..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7378,9 +7467,8 @@ msgid "Normal Map Invert Y"
msgstr "Escala aleatòria:"
#: editor/import/resource_importer_texture.cpp
-#, fuzzy
msgid "Size Limit"
-msgstr "Mida: "
+msgstr "Límit de mida"
#: editor/import/resource_importer_texture.cpp
msgid "Detect 3D"
@@ -7398,14 +7486,12 @@ msgid ""
msgstr ""
#: editor/import/resource_importer_texture_atlas.cpp
-#, fuzzy
msgid "Atlas File"
-msgstr "Mida del Contorn:"
+msgstr "Fitxer Atles"
#: editor/import/resource_importer_texture_atlas.cpp
-#, fuzzy
msgid "Import Mode"
-msgstr "Mode d'Exportació:"
+msgstr "Mode d'importació"
#: editor/import/resource_importer_texture_atlas.cpp
#, fuzzy
@@ -7417,9 +7503,8 @@ msgid "Trim Alpha Border From Region"
msgstr ""
#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
-#, fuzzy
msgid "Force"
-msgstr "Malla d'Origen:"
+msgstr "Força"
#: editor/import/resource_importer_wav.cpp
msgid "8 Bit"
@@ -7540,9 +7625,8 @@ msgid "Failed to load resource."
msgstr "No s'ha pogut carregar el recurs."
#: editor/inspector_dock.cpp
-#, fuzzy
msgid "Property Name Style"
-msgstr "Nom del Projecte:"
+msgstr "Estil del nom de la propietat"
#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
msgid "Raw"
@@ -7894,9 +7978,8 @@ msgid "Blend:"
msgstr "Mescla:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#, fuzzy
msgid "Parameter Changed:"
-msgstr "Paràmetre Canviat:"
+msgstr "Paràmetre canviat:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
@@ -7974,14 +8057,12 @@ msgstr ""
"que no es poden recuperar els noms de les pistes."
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#, fuzzy
msgid "Anim Clips"
-msgstr "Talls d'Animació"
+msgstr "Clips d'animació"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#, fuzzy
msgid "Audio Clips"
-msgstr "Talls d'Àudio"
+msgstr "Clips d'àudio"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
msgid "Functions"
@@ -8144,10 +8225,12 @@ msgstr "Opcions Paper Ceba"
msgid "Directions"
msgstr "Direccions"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "Passat"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "Futur"
@@ -8307,8 +8390,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr "Definiu l'animació final. Això és útil per a sub-transicions."
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
-msgstr "Transició: "
+msgid "Transition:"
+msgstr "Transició:"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Play Mode:"
@@ -8324,11 +8407,6 @@ msgid "New name:"
msgstr "Nou nom:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "Escala:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "Fosa d'entrada (s):"
@@ -8580,9 +8658,8 @@ msgid "Download Error"
msgstr "Error en la Baixada"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Available URLs"
-msgstr "Perfils Disponibles:"
+msgstr "URL disponibles"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Download for this asset is already in progress!"
@@ -8645,9 +8722,8 @@ msgid "All"
msgstr "Tot"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Search templates, projects, and demos"
-msgstr "Buscar plantilles, projectes i demos."
+msgstr "Cerca plantilles, projectes i demostracions"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Search assets (excluding templates, projects, and demos)"
@@ -9275,6 +9351,7 @@ msgstr "Crear os(sos) personalitzat(s) a partir de Node(s)"
msgid "Clear Custom Bones"
msgstr "Restablir Ossos Personalitzats"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9341,6 +9418,10 @@ msgid "Preview Canvas Scale"
msgstr "Vista prèvia de l'Escala del Llenç"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "Desar Disseny"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr "Mascara de translació per a inserir claus."
@@ -9690,9 +9771,8 @@ msgstr ""
#: editor/plugins/item_list_editor_plugin.cpp
#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Separator"
-msgstr "Separació:"
+msgstr "Separador"
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
@@ -9783,9 +9863,8 @@ msgid "No mesh to debug."
msgstr "Cap malla per depurar."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "Mesh has no UV in layer %d."
-msgstr "El model no té UVs en aquesta capa."
+msgstr "La malla no té UV a la capa %d."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "MeshInstance lacks a Mesh!"
@@ -10125,8 +10204,8 @@ msgid "Volume"
msgstr "Volum"
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr "Font d'Emissió: "
+msgid "Emission Source:"
+msgstr "Font d'emissió:"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
@@ -10359,6 +10438,7 @@ msgid "Points"
msgstr "Punts"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr "Polígons"
@@ -10520,13 +10600,6 @@ msgid "Instance:"
msgstr "Instància:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "Tipus:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr "Obre en l'Editor"
@@ -10535,10 +10608,6 @@ msgstr "Obre en l'Editor"
msgid "Load Resource"
msgstr "Carrega un Recurs"
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr "ResourcePreloader"
-
#: editor/plugins/room_manager_editor_plugin.cpp
#, fuzzy
msgid "Flip Portals"
@@ -10550,9 +10619,8 @@ msgid "Room Generate Points"
msgstr "Recompte de punts generats"
#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
msgid "Generate Points"
-msgstr "Recompte de punts generats"
+msgstr "Generar punts"
#: editor/plugins/room_manager_editor_plugin.cpp
#, fuzzy
@@ -10869,9 +10937,8 @@ msgid "Script Temperature History Size"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Current Script Background Color"
-msgstr "Color de fons no vàlid."
+msgstr "Color de fons de l'script actual"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
@@ -10884,9 +10951,8 @@ msgid "Sort Scripts By"
msgstr "Crea un Script"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "List Script Names As"
-msgstr "Nom de l'script:"
+msgstr "Llista els noms dels scripts com a"
#: editor/plugins/script_editor_plugin.cpp
msgid "Exec Flags"
@@ -11268,12 +11334,15 @@ msgstr "Rotar"
msgid "Translate"
msgstr "Translació"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr "Escala: "
+msgid "Scaling:"
+msgstr "Escalat:"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
+#, fuzzy
+msgid "Translating:"
msgstr "Translació: "
#: editor/plugins/spatial_editor_plugin.cpp
@@ -11298,32 +11367,22 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr "Mida:"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Objects Drawn:"
-msgstr "Objectes Dibuixats:"
+msgstr "Objectes dibuixats:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Material Changes:"
-msgstr "Canvis de Material:"
+msgstr "Canvis del Material:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Shader Changes:"
-msgstr "Canvis de Shader:"
+msgstr "Canvis del Shader:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Surface Changes:"
-msgstr "Canvis de superfície:"
+msgstr "Canvis de la superfície:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Draw Calls:"
msgstr "Crides de Dibuix:"
@@ -11803,7 +11862,8 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr "La geometria no és vàlida, no es pot substituir per una malla."
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+#, fuzzy
+msgid "Convert to MeshInstance2D"
msgstr "Convertir a Malla2D"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11837,16 +11897,16 @@ msgid "Sprite"
msgstr "Sprite"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr "Simplificació: "
+msgid "Simplification:"
+msgstr "Simplificació:"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
-msgstr "Redueix (Píxels): "
+msgid "Shrink (Pixels):"
+msgstr "Redueix (Píxels):"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
-msgstr "Engrandeix (Píxels): "
+msgid "Grow (Pixels):"
+msgstr "Engrandeix (Píxels):"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Update Preview"
@@ -12104,9 +12164,8 @@ msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Select by data type:"
-msgstr "Selecciona un Node:"
+msgstr "Seleccioneu per tipus de dades:"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible color items."
@@ -12175,19 +12234,16 @@ msgid ""
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Collapse types."
-msgstr "Col·lapsar tot."
+msgstr "Col·lapsar els tipus."
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Expand types."
-msgstr "Expandir tot."
+msgstr "Expandir els tipus."
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Select all Theme items."
-msgstr "Seleccioneu un Fitxer de Plantilla."
+msgstr "Seleccioneu tots els elements del tema."
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
@@ -12356,9 +12412,8 @@ msgid "Add Type:"
msgstr "Tipus:"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Add Item:"
-msgstr "Afegeix un Element:"
+msgstr "Afegeix un element:"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
@@ -12366,9 +12421,8 @@ msgid "Add StyleBox Item"
msgstr "Afegeix tots els Elements"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Remove Items:"
-msgstr "Elimina Element:"
+msgstr "Suprimeix els elements:"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
@@ -12409,9 +12463,8 @@ msgid "Editor Theme"
msgstr "Editar Tema"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Select Another Theme Resource:"
-msgstr "Elimina el Recurs:"
+msgstr "Seleccioneu un altre recurs de tema:"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
@@ -12438,9 +12491,8 @@ msgid "Available Node-based types:"
msgstr "Perfils Disponibles:"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Type name is empty!"
-msgstr "El nom del fitxer és buit."
+msgstr "El nom del tipus és buit!"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
@@ -12856,8 +12908,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr "Seleccioneu la forma, el subtile o el Tile anterior."
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
#, fuzzy
msgid "Region"
msgstr "Mode Regió"
@@ -12890,9 +12941,8 @@ msgid "Priority"
msgstr "Mode Prioritat"
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/node_2d.cpp
-#, fuzzy
msgid "Z Index"
-msgstr "Ãndex"
+msgstr "Ãndex Z"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Region Mode"
@@ -14475,34 +14525,10 @@ msgstr "Esborrar la configuració '%s' ?"
#: editor/project_export.cpp
#, fuzzy
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-"No s'ha pogut exportar el projecte per la plataforma '%s'.\n"
-"Les plantilles d'exportació semblen absents o son invalides."
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
-#, fuzzy
msgid "Exporting All"
msgstr "Exportant tot"
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr "El camí d'exportació donat no existeix:"
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr "Manquen d'exportació per aquesta plataforma o s'han malmès:"
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr "Camí d'exportació"
@@ -14649,6 +14675,11 @@ msgid "Export templates for this platform are missing:"
msgstr "Manquen les plantilles d'exportació per aquesta plataforma:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Fundadors del Projecte"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "Gestor de Plantilles d'Exportació"
@@ -16224,7 +16255,8 @@ msgid "Attach Node Script"
msgstr "Adjunta un Script de Node"
#: editor/script_editor_debugger.cpp
-msgid "Remote "
+#, fuzzy
+msgid "Remote %s:"
msgstr "Remot "
#: editor/script_editor_debugger.cpp
@@ -17123,7 +17155,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "Polígons"
@@ -17303,7 +17335,8 @@ msgid "Disabled GDNative Singleton"
msgstr "Desactiva l'Indicador d'Actualització"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+#, fuzzy
+msgid "Libraries:"
msgstr "Biblioteques: "
#: modules/gdnative/nativescript/nativescript.cpp
@@ -17752,7 +17785,6 @@ msgid "Use In Baked Light"
msgstr "Precalcular Lightmaps"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17782,6 +17814,19 @@ msgstr "Centre"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Mode Navegació"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Mode Navegació"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Pla següent"
@@ -18211,7 +18256,8 @@ msgstr ""
"treball de nodes! Repareu el node."
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+#, fuzzy
+msgid "Node returned an invalid sequence output:"
msgstr "El node ha retornat un seqüencia de sortida que no és vàlida: "
#: modules/visual_script/visual_script.cpp
@@ -18221,7 +18267,8 @@ msgstr ""
"el bug!"
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+#, fuzzy
+msgid "Stack overflow with stack depth:"
msgstr "Pila desbordada (stack overflow) amb profunditat de Pila: "
#: modules/visual_script/visual_script.cpp
@@ -18619,7 +18666,8 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+#, fuzzy
+msgid "Input type not iterable:"
msgstr "Tipus d'entrada no iterable: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18627,7 +18675,8 @@ msgid "Iterator became invalid"
msgstr "L'Iterador ja no és vàlid"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+#, fuzzy
+msgid "Iterator became invalid:"
msgstr "L'Iterador ja no és vàlid: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18801,11 +18850,13 @@ msgid "Operator"
msgstr "Operador de superposició."
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
+#, fuzzy
+msgid "Invalid argument of type:"
msgstr ": Argument no vàlid del tipus: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
+#, fuzzy
+msgid "Invalid arguments:"
msgstr ": Arguments no vàlids: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18818,11 +18869,13 @@ msgid "Var Name"
msgstr "Nom"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+#, fuzzy
+msgid "VariableGet not found in script:"
msgstr "Variable Get no trobada en l'Script: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+#, fuzzy
+msgid "VariableSet not found in script:"
msgstr "Variable Set no trobada en l'Script: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -19382,10 +19435,6 @@ msgid "Could not execute on device."
msgstr "No s'ha pogut crear el directori."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
#, fuzzy
msgid ""
"Android build template not installed in the project. Install it from the "
@@ -19501,12 +19550,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Senyal"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19523,6 +19576,11 @@ msgid "Could not find keystore, unable to export."
msgstr "No es pot obrir la plantilla per exportar."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "No s'ha pogut començar el subprocés!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -19553,7 +19611,8 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+#, fuzzy
+msgid "Unsupported export format!"
msgstr "Format d'exportació no suportat.\n"
#: platform/android/export/export_plugin.cpp
@@ -19568,9 +19627,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
"La versió de compilació d'Android no coincideix:\n"
@@ -19581,11 +19638,12 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+#, fuzzy
+msgid "Could not export project files to gradle project."
msgstr "No s'han pogut exportar fitxers de projecte a gradle project\n"
#: platform/android/export/export_plugin.cpp
@@ -19600,7 +19658,7 @@ msgstr "Construint Projecte Android (gradle)"
#: platform/android/export/export_plugin.cpp
#, fuzzy
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
"La construcció del projecte Android ha fallat, comproveu la sortida per "
@@ -19620,7 +19678,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr "Animació no trobada: '%s'"
#: platform/android/export/export_plugin.cpp
@@ -19629,17 +19687,15 @@ msgid "Creating APK..."
msgstr "Creant els contorns..."
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+#, fuzzy
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
"No s'ha trobat la plantilla APK per a exportar:\n"
"%s"
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -19651,7 +19707,7 @@ msgstr "Afegint %s..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr "No s'ha pogut escriure el fitxer"
#: platform/android/export/export_plugin.cpp
@@ -19893,6 +19949,17 @@ msgstr "Talla els Nodes"
msgid "Custom BG Color"
msgstr "Talla els Nodes"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "Administrar Plantilles"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "No s'ha trobat cap plantilla de publicació personalitzada."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -19914,23 +19981,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Executa l'HTML exportat en el navegador per defecte."
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
msgstr "No es pot obrir la plantilla per exportar:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
msgstr "Plantilla d'exportació no vàlida:"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+#, fuzzy
+msgid "Could not write file: \"%s\"."
msgstr "No s'ha pogut escriure el fitxer:"
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Establir Marge"
+
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read file:"
+msgid "Could not read file: \"%s\"."
msgstr "No s'ha pogut escriure el fitxer:"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "Separació:"
@@ -20006,17 +20085,17 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr "No es pot llegir l'intèrpret personalitzat d’ordres HTML:"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr "No s'ha pogut crear el directori:"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr "Error en desar l'escena:"
#: platform/javascript/export/export.cpp
@@ -20316,9 +20395,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "No s'ha pogut escriure el fitxer"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "No s'ha pogut començar el subprocés!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Localització"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -20334,23 +20432,78 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "No s'ha trobat cap icona."
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "S'ha produit un error al desar el fitxer! %s"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Direccions"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "No s'ha pogut començar el subprocés!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "Creant Miniatura"
#: platform/osx/export/export.cpp
#, fuzzy
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr ""
"No s'ha trobat la plantilla APK per a exportar:\n"
"%s"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Plantilla d'exportació no vàlida:"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -20358,7 +20511,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -20400,6 +20553,16 @@ msgstr ""
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "ZIP Creation"
+msgstr "Projecte"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr "No s'han pogut exportar fitxers de projecte a gradle project\n"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Invalid bundle identifier:"
msgstr "Identificador no vàlid:"
@@ -20716,6 +20879,11 @@ msgid "Debug Algorithm"
msgstr "Depurador"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "No es pot desar el Tema:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20763,6 +20931,70 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Rotació aleatòria:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "No es pot obrir la plantilla per exportar."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "No es pot obrir la plantilla per exportar."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "No es pot obrir la plantilla per exportar."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "No es pot obrir la plantilla per exportar."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Identificador no vàlid:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Nom no vàlid."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "No es pot desar el Tema:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20784,6 +21016,23 @@ msgid "Invalid product version:"
msgstr "GUID del producte no vàlid."
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "L'extensió no és vàlida."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "Finestra nova"
@@ -20800,6 +21049,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20929,7 +21182,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Trieu la distància:"
@@ -21796,17 +22050,19 @@ msgstr ""
"polígon."
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-"NavigationPolygonInstance ha de ser fill o nét d'un node Navigation2D. Només "
-"proporciona dades de navegació."
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr ""
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Part inferior"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "Viatge"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
#, fuzzy
@@ -23046,14 +23302,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-"NavigationMeshInstance ha de ser fill o nét d'un node Navigation. Només "
-"proporciona dades de navegació."
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
#, fuzzy
msgid "NavMesh"
@@ -25766,6 +26014,16 @@ msgid "3D Physics"
msgstr "Fotograma de Física %"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Mode Navegació"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Mode Navegació"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -27193,7 +27451,7 @@ msgstr "Transició: "
msgid "Refraction"
msgstr "Separació:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -27278,7 +27536,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "Escala: "
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "Estableix el Tipus de Variable"
#: scene/resources/navigation_mesh.cpp
@@ -27296,10 +27559,15 @@ msgid "Source Group Name"
msgstr "Font"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "Arguments de l'Escena Principal:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -27309,11 +27577,16 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Regions"
+msgstr "Mode Regió"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Merge Size"
msgstr "Combina-ho a partir de l'Escena"
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -27327,6 +27600,11 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Details"
+msgstr "Carrega Valors predeterminats"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Sample Distance"
msgstr "Trieu la distància:"
@@ -27344,7 +27622,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -27761,6 +28039,11 @@ msgid "Scenario"
msgstr "Escena"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Mode Navegació"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -27778,6 +28061,26 @@ msgstr "Lineal Esquerra"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Predeterminat"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Actualitzar Previsualització"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Provant"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Editar Connexió:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/cs.po b/editor/translations/cs.po
index 8990dd908f..9c3aea1d27 100644
--- a/editor/translations/cs.po
+++ b/editor/translations/cs.po
@@ -249,9 +249,10 @@ msgid "Data"
msgstr "Data"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
#, fuzzy
msgid "Network"
msgstr "Síťový profiler"
@@ -367,7 +368,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Nedostatek bajtů pro dekódování bajtů, nebo neplatný formát."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "Neplatný vstup %i (nepředán) ve výrazu"
#: core/math/expression.cpp
@@ -412,6 +414,16 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Režim přesouvání"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "Odstranit vstup"
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -614,7 +626,8 @@ msgstr "Popis"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "Spustit"
@@ -705,6 +718,11 @@ msgid "Main Run Args"
msgstr "Argumenty hlavní scény:"
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Cesta ke scéně:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -712,19 +730,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Správa verzí"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Verzování (VCS)"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Název pluginu:"
+msgid "Version Control Plugin Name"
+msgstr "Správa verzí"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -844,7 +858,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "Filtry:"
@@ -1126,6 +1141,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Volný"
@@ -1142,7 +1158,7 @@ msgstr "Zrcadlit"
msgid "Time:"
msgstr "ÄŒas:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Hodnota:"
@@ -1392,11 +1408,76 @@ msgid "Remove this track."
msgstr "Odstranit tuto stopu."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "ÄŒas (s): "
#: editor/animation_track_editor.cpp
#, fuzzy
+msgid "Position:"
+msgstr "Pozice doku"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Krok rotace:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "Zvětšení:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "Typ:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Neplatná šablona pro export:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Easing:"
+msgstr "Hladký vstup-výstup"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "In-Handle:"
+msgstr "Nastavit úchyt"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Out-Handle:"
+msgstr "Nastavit úchyt"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "Položka volby"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Restart (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "End (s):"
+msgstr "Objevení za (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Animace:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
msgid "Toggle Track Enabled"
msgstr "Povolit stopu"
@@ -1611,7 +1692,8 @@ msgid "Add Method Track Key"
msgstr "Přidat stopu volání metody"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "Tato metoda nebyla v objektu nalezena: "
#: editor/animation_track_editor.cpp
@@ -2223,8 +2305,8 @@ msgid "Open"
msgstr "Otevřít"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Vlastníci:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
msgid ""
@@ -2527,7 +2609,7 @@ msgid "Bus Options"
msgstr "Možnosti sběrnice"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Duplikovat"
@@ -2579,8 +2661,9 @@ msgstr "Otevřít rozložení audio sběrnice"
msgid "There is no '%s' file."
msgstr "Neexistuje '%s' soubor."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "Rozložení"
#: editor/editor_audio_buses.cpp
@@ -2784,6 +2867,25 @@ msgid "Choose"
msgstr "Vyberte"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "Kopírovat cestu k uzlu"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "BalíÄek byl úspěšnÄ› nainstalován!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "Selhalo:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Ukládám soubor:"
@@ -2796,6 +2898,31 @@ msgid "Packing"
msgstr "Balím"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Uložit jako"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "Nelze vytvořit složku."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Nelze exportovat soubory projektu"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Nelze otevřít soubor pro zápis:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Uložit jako"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2915,11 +3042,33 @@ msgstr "Vlastní ladící šablona nebyla nalezena."
msgid "Custom release template not found."
msgstr "Vlastní šablona k uveřejnění nebyla nalezena."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "Spravovat šablony"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "Zadaná cesta pro export neexistuje:"
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "Soubor šablony nenalezen:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "Neplatná šablona pro export:"
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+#, fuzzy
+msgid "PCK Embedding"
+msgstr "Zarovnávání"
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr "Při 32-bitovým exportu vestavěné PCK nemůže být větší než 4 GiB."
@@ -3089,9 +3238,9 @@ msgid "Import"
msgstr "Import"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Export"
@@ -4250,15 +4399,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Scéna"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Cesta ke scéně:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4387,6 +4527,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Správa verzí"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Přejmenovat"
@@ -4415,6 +4559,10 @@ msgstr "Zapnout nerozptylující režim."
msgid "Add a new scene."
msgstr "Přidat novou scénu."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Scéna"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Přejít na předchozí scénu."
@@ -5094,11 +5242,14 @@ msgid "Selected node is not a Viewport!"
msgstr "Vybraný uzel není Viewport!"
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr "Velikost: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
+msgstr "Velikost:"
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+#, fuzzy
+msgid "Page:"
msgstr "Strana: "
#: editor/editor_properties_array_dict.cpp
@@ -5200,6 +5351,11 @@ msgstr ""
"Přidejte prosím spustitelné přednastavení v exportovacím menu nebo definujte "
"existující přednastavení jako spustitelné."
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Projekt"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Napište svůj kód v _run() metodě."
@@ -5483,7 +5639,9 @@ msgid "Draw Spaces"
msgstr "Vykreslovací volání:"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr "Navigace"
@@ -6081,10 +6239,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Správce projektů"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -6854,14 +7014,6 @@ msgid "Replace in Files"
msgstr "Nahradit všechny"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "Najít: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "Nahradit: "
-
-#: editor/find_in_files.cpp
#, fuzzy
msgid "Replace All (NO UNDO)"
msgstr "Nahradit všechny"
@@ -6991,7 +7143,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Filtry:"
@@ -7259,7 +7411,8 @@ msgid "Generating Lightmaps"
msgstr "Generování světelné mapy"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+#, fuzzy
+msgid "Generating for Mesh:"
msgstr "Generování pro síť: "
#: editor/import/resource_importer_scene.cpp
@@ -7287,6 +7440,18 @@ msgid "Saving..."
msgstr "Ukládání..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -8095,10 +8260,12 @@ msgstr "Onion Skinning možnosti"
msgid "Directions"
msgstr "Směry"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "Předcházející"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "Budoucí"
@@ -8258,7 +8425,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr "Nastavit koncovou animaci. UžiteÄné pro pod-pÅ™echody."
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
+#, fuzzy
+msgid "Transition:"
msgstr "Přechod: "
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8275,11 +8443,6 @@ msgid "New name:"
msgstr "Nové jméno:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "Zvětšení:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "Objevení za (s):"
@@ -9195,6 +9358,7 @@ msgstr "Vytvořit kosti z uzlů"
msgid "Clear Custom Bones"
msgstr "Vymazat kosti"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9261,6 +9425,10 @@ msgid "Preview Canvas Scale"
msgstr "Náhled měřítka plátna"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "Rozložení"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr "Offset maska pro vkládání klíÄů."
@@ -10032,7 +10200,8 @@ msgid "Volume"
msgstr "Hlasitost"
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+#, fuzzy
+msgid "Emission Source:"
msgstr "Zdroje emisí: "
#: editor/plugins/particles_editor_plugin.cpp
@@ -10264,6 +10433,7 @@ msgid "Points"
msgstr "Body"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr "Polygony"
@@ -10419,13 +10589,6 @@ msgid "Instance:"
msgstr "Instance:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "Typ:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr "Otevřít v editoru"
@@ -10434,10 +10597,6 @@ msgstr "Otevřít v editoru"
msgid "Load Resource"
msgstr "NaÄíst zdroj"
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr "Zdroj"
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr "Převrátit portály"
@@ -11150,12 +11309,16 @@ msgstr "OtoÄit"
msgid "Translate"
msgstr "Posunout"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
+#, fuzzy
+msgid "Scaling:"
msgstr "Škálování: "
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
+#, fuzzy
+msgid "Translating:"
msgstr "Posun: "
#: editor/plugins/spatial_editor_plugin.cpp
@@ -11179,11 +11342,6 @@ msgid "Yaw:"
msgstr "Odklon (Yaw):"
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr "Velikost:"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr "Kreslené objekty:"
@@ -11673,7 +11831,8 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr "Neplatná geometrie, nelze nahradit sítí."
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+#, fuzzy
+msgid "Convert to MeshInstance2D"
msgstr "Konvertovat na Mesh2D"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11705,15 +11864,18 @@ msgid "Sprite"
msgstr "Sprite"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
+#, fuzzy
+msgid "Simplification:"
msgstr "Zjednodušení: "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+#, fuzzy
+msgid "Shrink (Pixels):"
msgstr "Zmenšení (pixely): "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+#, fuzzy
+msgid "Grow (Pixels):"
msgstr "Zvětšení (pixely): "
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12692,8 +12854,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr "Vybrat pÅ™edchozí tvar, dílÄí dlaždici nebo dlaždici."
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr "Oblast"
@@ -14227,36 +14388,10 @@ msgid "Delete preset '%s'?"
msgstr "Odstranit předvolbu '%s'?"
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-"Export projektu pro platformu \"%s\" se nezdařil.\n"
-"Zdá se, že šablony exportu chybí nebo jsou neplatné."
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-"Export projektu pro platformu \"%s\" se nezdařil.\n"
-"Může to být způsobeno problémem s konfigurací v export profilu nebo v "
-"nastavení exportu."
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "Exportování všeho"
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr "Zadaná cesta pro export neexistuje:"
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr "Šablony exportu pro tuto platformu chybí nebo jsou poškozené:"
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr "Exportovat cestu"
@@ -14404,6 +14539,11 @@ msgid "Export templates for this platform are missing:"
msgstr "Šablony exportu pro tuto platformu chybí:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Zakladatelé projektu"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "Spravovat šablony exportu"
@@ -15925,7 +16065,8 @@ msgid "Attach Node Script"
msgstr "Připojit script k uzlu"
#: editor/script_editor_debugger.cpp
-msgid "Remote "
+#, fuzzy
+msgid "Remote %s:"
msgstr "Vzdálený "
#: editor/script_editor_debugger.cpp
@@ -16810,7 +16951,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "Polygony"
@@ -16988,7 +17129,8 @@ msgid "Disabled GDNative Singleton"
msgstr "Vypnutý GDNative Singleton"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+#, fuzzy
+msgid "Libraries:"
msgstr "Knihovny: "
#: modules/gdnative/nativescript/nativescript.cpp
@@ -17433,7 +17575,6 @@ msgid "Use In Baked Light"
msgstr "Zapéct lightmapy"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17463,6 +17604,19 @@ msgstr "Uprostřed"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Navigace"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "NavigaÄní režim"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Další rovina"
@@ -17880,7 +18034,8 @@ msgstr ""
"Opravte prosím váš uzel."
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+#, fuzzy
+msgid "Node returned an invalid sequence output:"
msgstr "Uzel vrátil neplatnou posloupnost výstupu: "
#: modules/visual_script/visual_script.cpp
@@ -17888,7 +18043,8 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr "Nalezen bit posloupnosti ale ne uzel v zásobníku. Nahlaste chybu!"
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+#, fuzzy
+msgid "Stack overflow with stack depth:"
msgstr "PÅ™eteÄení zásobníku s hloubkou: "
#: modules/visual_script/visual_script.cpp
@@ -18260,7 +18416,8 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+#, fuzzy
+msgid "Input type not iterable:"
msgstr "Vstupním typem nelze iterovat: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18268,7 +18425,8 @@ msgid "Iterator became invalid"
msgstr "Iterátor se stal neplatným"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+#, fuzzy
+msgid "Iterator became invalid:"
msgstr "Iterátor se stal neplatným: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18441,11 +18599,13 @@ msgid "Operator"
msgstr "Operátor překrytí."
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
+#, fuzzy
+msgid "Invalid argument of type:"
msgstr ": Neplatný argument typu: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
+#, fuzzy
+msgid "Invalid arguments:"
msgstr ": Neplatné argumenty: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18458,11 +18618,13 @@ msgid "Var Name"
msgstr "Název"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+#, fuzzy
+msgid "VariableGet not found in script:"
msgstr "Proměnná pro získání nebyla ve skriptu nalezena: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+#, fuzzy
+msgid "VariableSet not found in script:"
msgstr "Proměnná pro nastavení nebyla ve skriptu nalezena: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -19016,10 +19178,6 @@ msgid "Could not execute on device."
msgstr "Nelze vytvořit složku."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr "Nelze najít nástroj 'apksigner'."
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -19143,12 +19301,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Signál"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19164,6 +19326,11 @@ msgid "Could not find keystore, unable to export."
msgstr "NepodaÅ™ilo se najít úložiÅ¡tÄ› klíÄů, nelze exportovat."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "Nelze spustit podproces!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -19192,7 +19359,8 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "Neplatné jméno souboru! Android APK vyžaduje příponu *.apk."
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+#, fuzzy
+msgid "Unsupported export format!"
msgstr "Nepodporovaný formát exportu!\n"
#: platform/android/export/export_plugin.cpp
@@ -19204,10 +19372,9 @@ msgstr ""
"verzi. Přeinstalujte jej z nabídky \"Projekt\"."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
"Neshoda verzí Android buildu:\n"
@@ -19217,11 +19384,12 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+#, fuzzy
+msgid "Could not export project files to gradle project."
msgstr "Nelze exportovat soubory projektu do projektu gradle\n"
#: platform/android/export/export_plugin.cpp
@@ -19233,8 +19401,9 @@ msgid "Building Android Project (gradle)"
msgstr "Buildování projektu pro Android (gradle)"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
"Buildování projektu pro Android se nezdařilo, zkontrolujte chybový výstup.\n"
@@ -19254,7 +19423,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr "Animace nenalezena: '%s'"
#: platform/android/export/export_plugin.cpp
@@ -19262,17 +19431,15 @@ msgid "Creating APK..."
msgstr "Vytvářím APK..."
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+#, fuzzy
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
"Nepodařilo se najít šablonu APK pro export:\n"
"%s"
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -19282,7 +19449,8 @@ msgid "Adding files..."
msgstr "Přidávám soubory..."
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+#, fuzzy
+msgid "Could not export project files."
msgstr "Nelze exportovat soubory projektu"
#: platform/android/export/export_plugin.cpp
@@ -19525,6 +19693,17 @@ msgstr "Vyjmout uzly"
msgid "Custom BG Color"
msgstr "Vyjmout uzly"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "Spravovat šablony"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Vlastní šablona k uveřejnění nebyla nalezena."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr "App Store Team ID nebyla poskytnuta - projekt nelze konfigurovat."
@@ -19546,22 +19725,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Spustit vyexportované HTML ve výchozím prohlížeÄi."
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
msgstr "Nelze otevřít šablonu pro export:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
msgstr "Neplatná šablona pro export:"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+#, fuzzy
+msgid "Could not write file: \"%s\"."
msgstr "Nelze zapsat soubor:"
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Nastavit okraj"
+
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+#, fuzzy
+msgid "Could not read file: \"%s\"."
msgstr "Nelze pÅ™eÄíst soubor:"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "Oddělení:"
@@ -19637,15 +19829,17 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr "Nebylo možné pÅ™eÄíst HTML shell:"
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+#, fuzzy
+msgid "Could not create HTTP server directory: %s."
msgstr "Nepodařilo se vytvořit adresář serveru HTTP:"
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+#, fuzzy
+msgid "Error starting HTTP server: %d."
msgstr "Chyba při spuštění serveru HTTP:"
#: platform/javascript/export/export.cpp
@@ -19945,9 +20139,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Nelze exportovat soubory projektu"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "Nelze spustit podproces!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Lokalizace"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19963,20 +20176,76 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "Nebyly nalezeny žádné ikony."
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Chyba při ukládání souboru: %s"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Směry"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "Nelze spustit podproces!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "Vytvářím náhled"
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+#, fuzzy
+msgid "Could not find template app to export: \"%s\"."
msgstr "Nepodařilo se najít šablonu APK pro export:"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Neplatná šablona pro export:"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -19984,7 +20253,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -20026,6 +20295,16 @@ msgstr ""
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "ZIP Creation"
+msgstr "Projekt"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr "Nelze exportovat soubory projektu do projektu gradle\n"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Invalid bundle identifier:"
msgstr "Neplatný identifikátor:"
@@ -20338,6 +20617,11 @@ msgid "Debug Algorithm"
msgstr "Ladicí program"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Nelze odstranit doÄasný soubor:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20385,6 +20669,70 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Náhodná rotace:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "NepodaÅ™ilo se najít úložiÅ¡tÄ› klíÄů, nelze exportovat."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "NepodaÅ™ilo se najít úložiÅ¡tÄ› klíÄů, nelze exportovat."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "NepodaÅ™ilo se najít úložiÅ¡tÄ› klíÄů, nelze exportovat."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "NepodaÅ™ilo se najít úložiÅ¡tÄ› klíÄů, nelze exportovat."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Neplatný identifikátor:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Neplatný název."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "Nelze odstranit doÄasný soubor:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20404,6 +20752,23 @@ msgid "Invalid product version:"
msgstr "Neplatné GUID produktu."
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Neplatná přípona."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "Nové okno"
@@ -20420,6 +20785,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20547,7 +20916,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Vybrat vzdálenost:"
@@ -21414,17 +21784,19 @@ msgstr ""
"NavigationPolygon. Nastavte prosím vlastnost nebo nakreslete mnohoúhelník."
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-"NavigationPolygonInstance musí být dítÄ›tem nebo vnouÄetem uzlu Navigation2D. "
-"Poskytuje pouze data pro navigaci."
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr ""
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Uprostřed dole"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "Cestovat"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
#, fuzzy
@@ -22655,14 +23027,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-"NavigationMeshInstance musí být dítÄ›tem nebo vnouÄetem uzlu Navigation. "
-"Poskytuje pouze data pro navigaci."
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
#, fuzzy
msgid "NavMesh"
@@ -25380,6 +25744,16 @@ msgid "3D Physics"
msgstr "Fyzikální snímek %"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Navigace"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Navigace"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -26807,7 +27181,7 @@ msgstr "Přechod: "
msgid "Refraction"
msgstr "Oddělení:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -26892,7 +27266,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "Škálování: "
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "Nastavit typ proměnné"
#: scene/resources/navigation_mesh.cpp
@@ -26910,10 +27289,15 @@ msgid "Source Group Name"
msgstr "Zdroj"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "Argumenty hlavní scény:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -26923,11 +27307,16 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Regions"
+msgstr "Oblast"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Merge Size"
msgstr "SlouÄit ze scény"
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26941,6 +27330,11 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Details"
+msgstr "Zobrazit výchozí"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Sample Distance"
msgstr "Vybrat vzdálenost:"
@@ -26958,7 +27352,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -27376,6 +27770,11 @@ msgid "Scenario"
msgstr "Scéna"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Navigace"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -27393,6 +27792,26 @@ msgstr "Levé lineární"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Výchozí"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Výchozí náhled"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Testované"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Upravit spojení:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/da.po b/editor/translations/da.po
index 77b2a6a110..a90d207941 100644
--- a/editor/translations/da.po
+++ b/editor/translations/da.po
@@ -224,9 +224,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
#, fuzzy
msgid "Network"
msgstr "Eksporter Projekt"
@@ -339,7 +340,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Ikke nok bytes til afkodning af bytes, eller ugyldigt format."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "Ugyldigt input %i (mislykket) i udtrykket"
#: core/math/expression.cpp
@@ -383,6 +385,16 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Skifter Modus"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "Fjern Input"
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -581,7 +593,8 @@ msgstr "Beskrivelse"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr ""
@@ -670,6 +683,11 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Scene Sti:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -677,20 +695,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
+#: core/project_settings.cpp
#, fuzzy
-msgid "Version Control"
+msgid "Version Control Autoload On Startup"
msgstr "Versionskontrol"
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
-
-#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Node Navn:"
+msgid "Version Control Plugin Name"
+msgstr "Versionskontrol"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -805,7 +818,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "Filter:"
@@ -1084,6 +1098,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Fri"
@@ -1100,7 +1115,7 @@ msgstr "Spejl"
msgid "Time:"
msgstr "Tid:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Værdi:"
@@ -1352,10 +1367,73 @@ msgid "Remove this track."
msgstr "Fjern spor."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "Tid (s): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Position"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Konstant"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "Skalér:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Ugyldigt eksport skabelon:\n"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Easing:"
+msgstr "Advarsler:"
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "Rediger Node Kurve"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Genstart:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "End (s):"
+msgstr "Fade ind (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Tilføj animation"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "Skift bane slået til"
@@ -1579,7 +1657,8 @@ msgid "Add Method Track Key"
msgstr "Kald metode spor"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "Metode ikke fundet i objekt: "
#: editor/animation_track_editor.cpp
@@ -2217,8 +2296,8 @@ msgid "Open"
msgstr "Ã…ben"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Ejere af:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
#, fuzzy
@@ -2532,7 +2611,7 @@ msgid "Bus Options"
msgstr "Bus muligheder"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Duplikér"
@@ -2584,8 +2663,9 @@ msgstr "Ã…ben Audio Bus Layout"
msgid "There is no '%s' file."
msgstr "Der er ingen '%s' fil."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "Layout"
#: editor/editor_audio_buses.cpp
@@ -2801,6 +2881,24 @@ msgid "Choose"
msgstr "Vælg"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "Pakke installeret med succes!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "Fejlet:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Lagrings Fil:"
@@ -2813,6 +2911,31 @@ msgid "Packing"
msgstr "Pakker"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Gem som"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "Kunne ikke oprette mappe."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Kunne ikke skrive til fil:\n"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Kan ikke åbne fil til skrivning:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Gem som"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2931,11 +3054,32 @@ msgstr "Brugerdefineret debug skabelonfil ikke fundet."
msgid "Custom release template not found."
msgstr "Brugerdefineret release skabelonfil ikke fundet."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "Organiser Eksport Skabeloner"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "Fil eksisterer ikke."
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "Skabelonfil ikke fundet:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "Ugyldigt eksport skabelon:\n"
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr "Den indlejrede PCK kan ikke overstige 4 GiB ved 32-bit eksport."
@@ -3124,9 +3268,9 @@ msgid "Import"
msgstr "Importer"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Eksport"
@@ -4305,15 +4449,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Scene"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Scene Sti:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4442,6 +4577,11 @@ msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
+msgid "Version Control"
+msgstr "Versionskontrol"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+#, fuzzy
msgid "Username"
msgstr "Omdøb"
@@ -4469,6 +4609,10 @@ msgstr "Skift distraktions-fri modus."
msgid "Add a new scene."
msgstr "Tilføj en ny scene."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Scene"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Gå til den forrige åbnede scene."
@@ -5157,11 +5301,14 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#, fuzzy
+msgid "Size:"
+msgstr "Skrifttype Størrelse:"
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+msgid "Page:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
@@ -5262,6 +5409,11 @@ msgstr ""
"Ingen kørbare eksport forudindstillinger fundet til denne platform.\n"
"Tilføj venligst en kørbar forudindstilling i eksportmenuen."
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Projekt"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Skriv din logik i metoden _run ()."
@@ -5539,7 +5691,9 @@ msgid "Draw Spaces"
msgstr "Kald"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
#, fuzzy
msgid "Navigation"
msgstr "Rediger Poly"
@@ -6112,10 +6266,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Projekt Manager"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -6915,16 +7071,6 @@ msgstr "Erstat Alle"
#: editor/find_in_files.cpp
#, fuzzy
-msgid "Find: "
-msgstr "Find"
-
-#: editor/find_in_files.cpp
-#, fuzzy
-msgid "Replace: "
-msgstr "Erstat"
-
-#: editor/find_in_files.cpp
-#, fuzzy
msgid "Replace All (NO UNDO)"
msgstr "Erstat Alle"
@@ -7065,7 +7211,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Filter:"
@@ -7328,7 +7474,8 @@ msgid "Generating Lightmaps"
msgstr "Generering af lightmaps"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+#, fuzzy
+msgid "Generating for Mesh:"
msgstr "Generering til Mesh: "
#: editor/import/resource_importer_scene.cpp
@@ -7356,6 +7503,18 @@ msgid "Saving..."
msgstr "Gemmer..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -8201,11 +8360,13 @@ msgstr "Onion Skin Muligheder"
msgid "Directions"
msgstr "Retninger"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
msgid "Past"
msgstr "Indsæt"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "Fremtid"
@@ -8366,7 +8527,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr "Sæt slut animation. Dette er nyttigt ved under-overgange."
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
+#, fuzzy
+msgid "Transition:"
msgstr "Overgang: "
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8383,11 +8545,6 @@ msgid "New name:"
msgstr "Nyt navn:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "Skalér:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "Fade ind (s):"
@@ -9330,6 +9487,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr "Spil Brugerdefineret Scene"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9394,6 +9552,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "Layout"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -10170,8 +10332,9 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr ""
+#, fuzzy
+msgid "Emission Source:"
+msgstr "Synlig Kollisionsformer"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
@@ -10414,6 +10577,7 @@ msgid "Points"
msgstr "Fjern punkt"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
#, fuzzy
msgid "Polygons"
msgstr "Rediger Poly"
@@ -10572,13 +10736,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -10587,11 +10744,6 @@ msgstr ""
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#, fuzzy
-msgid "ResourcePreloader"
-msgstr "Ressource"
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -11337,12 +11489,16 @@ msgstr ""
msgid "Translate"
msgstr "Oversætter: "
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr ""
+#, fuzzy
+msgid "Scaling:"
+msgstr "Skalér:"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
+#, fuzzy
+msgid "Translating:"
msgstr "Oversætter: "
#: editor/plugins/spatial_editor_plugin.cpp
@@ -11366,12 +11522,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
-msgid "Size:"
-msgstr "Skrifttype Størrelse:"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11867,7 +12017,7 @@ msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
#, fuzzy
-msgid "Convert to Mesh2D"
+msgid "Convert to MeshInstance2D"
msgstr "Konverter Til %s"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11901,15 +12051,16 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "Tilføj Funktion"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12926,8 +13077,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
#, fuzzy
msgid "Region"
msgstr "Interpolationsmetode"
@@ -14460,32 +14610,11 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
#, fuzzy
msgid "Exporting All"
msgstr "Eksporter"
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
#, fuzzy
msgid "Export Path"
msgstr "Eksporter Projekt"
@@ -14628,6 +14757,11 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Projekt grundlæggere"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "Organiser Eksport Skabeloner"
@@ -16152,7 +16286,7 @@ msgstr ""
#: editor/script_editor_debugger.cpp
#, fuzzy
-msgid "Remote "
+msgid "Remote %s:"
msgstr "Fjern"
#: editor/script_editor_debugger.cpp
@@ -17026,7 +17160,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "Rediger Poly"
@@ -17202,7 +17336,7 @@ msgid "Disabled GDNative Singleton"
msgstr "Slå Opdaterings Snurrer Fra"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+msgid "Libraries:"
msgstr ""
#: modules/gdnative/nativescript/nativescript.cpp
@@ -17631,7 +17765,6 @@ msgid "Use In Baked Light"
msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17661,6 +17794,19 @@ msgstr "Vælg Node"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Rediger Poly"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Rediger Poly"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Next Plane"
@@ -18086,7 +18232,8 @@ msgstr ""
"din node venligst."
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+#, fuzzy
+msgid "Node returned an invalid sequence output:"
msgstr "Node returnerede en ugyldig sekvens output: "
#: modules/visual_script/visual_script.cpp
@@ -18094,7 +18241,8 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr "Fundet sekvens bit men ikke noden i stakken, reporter bug!"
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+#, fuzzy
+msgid "Stack overflow with stack depth:"
msgstr "Stakoverløb med stak dybde: "
#: modules/visual_script/visual_script.cpp
@@ -18487,7 +18635,8 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+#, fuzzy
+msgid "Input type not iterable:"
msgstr "Input type ikke iterabel: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18495,7 +18644,8 @@ msgid "Iterator became invalid"
msgstr "Iterator blev ugyldig"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+#, fuzzy
+msgid "Iterator became invalid:"
msgstr "Iterator blev ugyldig: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18662,11 +18812,13 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
+#, fuzzy
+msgid "Invalid argument of type:"
msgstr ": Ugyldigt argument af typen: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
+#, fuzzy
+msgid "Invalid arguments:"
msgstr ": Ugyldige argumenter: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18679,11 +18831,13 @@ msgid "Var Name"
msgstr "Navn"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+#, fuzzy
+msgid "VariableGet not found in script:"
msgstr "VariableGet blev ikke fundet i scriptet: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+#, fuzzy
+msgid "VariableSet not found in script:"
msgstr "VariableSet blev ikke fundet i scriptet: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -19227,10 +19381,6 @@ msgid "Could not execute on device."
msgstr "Kunne ikke oprette mappe."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -19335,12 +19485,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Signaler"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19360,6 +19514,11 @@ msgid "Could not find keystore, unable to export."
msgstr "Kan ikke åbne skabelon til eksport:\n"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "Kunne ikke starte underproces!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -19390,7 +19549,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19401,20 +19560,19 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
-msgstr ""
+#, fuzzy
+msgid "Could not export project files to gradle project."
+msgstr "Kunne ikke skrive til fil:\n"
#: platform/android/export/export_plugin.cpp
#, fuzzy
@@ -19427,7 +19585,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -19443,7 +19601,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr "Animations Længde (i sekunder)."
#: platform/android/export/export_plugin.cpp
@@ -19453,15 +19611,12 @@ msgstr "Forbinder..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
msgstr "Kan ikke åbne skabelon til eksport:\n"
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -19473,7 +19628,7 @@ msgstr "Filtrer filer..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr "Kunne ikke skrive til fil:\n"
#: platform/android/export/export_plugin.cpp
@@ -19716,6 +19871,17 @@ msgstr "Indsæt Node"
msgid "Custom BG Color"
msgstr "Indsæt Node"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "Organiser Eksport Skabeloner"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Brugerdefineret release skabelonfil ikke fundet."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -19739,25 +19905,34 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not open template for export:"
+msgid "Could not open template for export: \"%s\"."
msgstr "Kan ikke åbne skabelon til eksport:\n"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Invalid export template:"
+msgid "Invalid export template: \"%s\"."
msgstr "Ugyldigt eksport skabelon:\n"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not write file:"
+msgid "Could not write file: \"%s\"."
msgstr "Kunne ikke skrive til fil:\n"
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Indhold:"
+
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read file:"
+msgid "Could not read file: \"%s\"."
msgstr "Kunne ikke skrive til fil:\n"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "Tællinger:"
@@ -19833,17 +20008,17 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr "Kan ikke læse brugerdefineret HTML shell:\n"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr "Kunne ikke oprette mappe."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr "Error loading skrifttype."
#: platform/javascript/export/export.cpp
@@ -20140,9 +20315,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Kunne ikke skrive til fil:\n"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "Kunne ikke starte underproces!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Rediger Poly"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -20158,21 +20352,76 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "Ikke fundet!"
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Fejl, kan ikke gemme TileSet!"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Retninger"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "Kunne ikke starte underproces!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "Opretter Thumbnail"
#: platform/osx/export/export.cpp
#, fuzzy
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr "Kan ikke åbne skabelon til eksport:\n"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Ugyldigt eksport skabelon:\n"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -20180,7 +20429,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -20222,6 +20471,16 @@ msgstr ""
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "ZIP Creation"
+msgstr "Projekt"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr "Kan ikke åbne skabelon til eksport:\n"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Invalid bundle identifier:"
msgstr "Navnet er ikke et gyldigt id:"
@@ -20536,6 +20795,11 @@ msgid "Debug Algorithm"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Kan ikke fjerne:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20582,6 +20846,70 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Konstant"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "Kan ikke åbne skabelon til eksport:\n"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "Kan ikke åbne skabelon til eksport:\n"
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "Kan ikke åbne skabelon til eksport:\n"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "Kan ikke åbne skabelon til eksport:\n"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Navnet er ikke et gyldigt id:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Ugyldigt navn."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "Kan ikke fjerne:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20603,6 +20931,23 @@ msgid "Invalid product version:"
msgstr "Ugyldig skriftstørrelse."
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Du skal bruge en gyldig udvidelse."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Windows"
msgstr ""
@@ -20618,6 +20963,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20742,7 +21091,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Instans"
@@ -21569,17 +21919,19 @@ msgstr ""
"virke. Sæt venligst en egenskab eller tegn en polygon."
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-"NavigationPolygonInstance skal være et barn eller barnebarn til en "
-"Navigation2D node. Det giver kun navigationsdata."
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr ""
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Vælg Node"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "Rejse"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
msgid "Rotation Degrees"
@@ -22749,14 +23101,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-"NavigationMeshInstance skal være et barn eller barnebarn til en Navigation "
-"node. Det giver kun navigationsdata."
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -25379,6 +25723,16 @@ msgid "3D Physics"
msgstr "Fysik Frame %"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Rediger Poly"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Rediger Poly"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -26778,7 +27132,7 @@ msgstr "Overgang: "
msgid "Refraction"
msgstr "Tællinger:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -26859,7 +27213,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "Skalér:"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "Sæt Variabel Type"
#: scene/resources/navigation_mesh.cpp
@@ -26876,10 +27235,15 @@ msgid "Source Group Name"
msgstr "Ressource"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "Argumenter:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -26888,11 +27252,16 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Regions"
+msgstr "Interpolationsmetode"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26905,6 +27274,11 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Details"
+msgstr "Indlæs Default"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -26921,7 +27295,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -27326,6 +27700,11 @@ msgid "Scenario"
msgstr "Scene"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Rediger Poly"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -27343,6 +27722,26 @@ msgstr "Lineær"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Standard"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Forhåndsvisning:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Tester"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Redigér Forbindelse:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/de.po b/editor/translations/de.po
index 4a7e350480..795dbd5328 100644
--- a/editor/translations/de.po
+++ b/editor/translations/de.po
@@ -87,8 +87,8 @@ msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-05-30 16:17+0000\n"
-"Last-Translator: Tobias Jacobs <tobi@jacobs.rocks>\n"
+"PO-Revision-Date: 2022-06-03 02:51+0000\n"
+"Last-Translator: So Wieso <sowieso@dukun.de>\n"
"Language-Team: German <https://hosted.weblate.org/projects/godot-engine/"
"godot/de/>\n"
"Language: de\n"
@@ -280,9 +280,10 @@ msgid "Data"
msgstr "Daten"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr "Netzwerk"
@@ -386,7 +387,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Nicht genügend Bytes zur Dekodierung oder ungültiges Format."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "Ungültige Eingabe %i (nicht übergeben) im Ausdruck"
#: core/math/expression.cpp
@@ -431,6 +433,16 @@ msgstr "Nachrichtenwarteschlange"
msgid "Max Size (KB)"
msgstr "Maximalgröße (KB)"
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Bewegungsmodus"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "Eingang löschen"
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -610,7 +622,8 @@ msgstr "Beschreibung"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "Ausführen"
@@ -693,6 +706,10 @@ msgid "Main Run Args"
msgstr "Laufzeitargumente für Main"
#: core/project_settings.cpp
+msgid "Scene Naming"
+msgstr "Szenenbenennung"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr "In Dateierweiterungen suchen"
@@ -700,18 +717,15 @@ msgstr "In Dateierweiterungen suchen"
msgid "Script Templates Search Path"
msgstr "Suchpfad für Skriptvorlagen"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Versionsverwaltung"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+#, fuzzy
+msgid "Version Control Autoload On Startup"
msgstr "Autoladen beim Start"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Pluginname"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Versionsverwaltung"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -818,7 +832,8 @@ msgid "Quality"
msgstr "Qualität"
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
msgid "Filters"
msgstr "Filter"
@@ -1085,6 +1100,7 @@ msgstr "Hohe Qualität"
msgid "Blend Shape Max Buffer Size (KB)"
msgstr "Blend-Shape Maximale Puffergröße (KB)"
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Kostenlos"
@@ -1101,7 +1117,7 @@ msgstr "Gespiegelt"
msgid "Time:"
msgstr "Zeit:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Wert:"
@@ -1215,11 +1231,11 @@ msgstr "Stream"
#: editor/animation_track_editor.cpp
msgid "Start Offset"
-msgstr "Beginn Offset"
+msgstr "Startversatz"
#: editor/animation_track_editor.cpp
msgid "End Offset"
-msgstr "Ende Offset"
+msgstr "Endeversatz"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
#: editor/import/resource_importer_scene.cpp
@@ -1342,10 +1358,75 @@ msgid "Remove this track."
msgstr "Diese Spur entfernen."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "Zeit (s): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Position"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Rotation"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "Skalierung:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "Typ:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Ungültige Exportvorlage:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Easing:"
+msgstr "Glätten Ein-Aus"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "In-Handle:"
+msgstr "Eingehender Handle"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Out-Handle:"
+msgstr "Ausgehender Handle"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "Stream"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Neu starten (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "End (s):"
+msgstr "Einblenden (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Animationen:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "Spur ein-/ausschalten"
@@ -1558,7 +1639,8 @@ msgid "Add Method Track Key"
msgstr "Methodenaufrufsspurschlüssel hinzufügen"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "Methode nicht im Objekt gefunden: "
#: editor/animation_track_editor.cpp
@@ -2171,8 +2253,8 @@ msgid "Open"
msgstr "Öffnen"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Besitzer von:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
msgid ""
@@ -2480,7 +2562,7 @@ msgid "Bus Options"
msgstr "Audiobusoptionen"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Duplizieren"
@@ -2532,8 +2614,9 @@ msgstr "Öffne Audiobus-Layout"
msgid "There is no '%s' file."
msgstr "Datei ‚%s‘ existiert nicht."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "Layout"
#: editor/editor_audio_buses.cpp
@@ -2736,6 +2819,25 @@ msgid "Choose"
msgstr "Wählen"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "Dateipfade vervollständigen"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "Paket wurde erfolgreich installiert!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "Fehlgeschlagen:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Speichere Datei:"
@@ -2748,6 +2850,31 @@ msgid "Packing"
msgstr "Packe"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Speichern unter"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "Ordner konnte nicht erstellt werden."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Projektdateien konnten nicht exportiert werden"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Datei kann nicht zum Schreiben geöffnet werden:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Speichern unter"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2865,11 +2992,33 @@ msgstr "Selbst konfigurierte Debug-Exportvorlage nicht gefunden."
msgid "Custom release template not found."
msgstr "Selbst konfigurierte Release-Exportvorlage nicht gefunden."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "Vorlagen verwalten"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "Der angegebene Export-Pfad existiert nicht:"
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "Vorlagendatei nicht gefunden:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "Ungültige Exportvorlage:"
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+#, fuzzy
+msgid "PCK Embedding"
+msgstr "Versatz"
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr ""
"In 32-bit-Exporten kann das eingebettete PCK nicht größer als 4 GiB sein."
@@ -3049,9 +3198,9 @@ msgid "Import"
msgstr "Importieren"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Exportieren"
@@ -4214,14 +4363,6 @@ msgstr ""
"In Datei ‚%s‘ kann nicht geschrieben werden. Die Datei wird bereits "
"verwendet, sie ist gesperrt, oder es ist keine Schreibberechtigung vorhanden."
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Szene"
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr "Szenenbenennung"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4336,6 +4477,10 @@ msgid "Default Color Picker Mode"
msgstr "Standard Farbwahlmodus"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Versionsverwaltung"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "Nutzername"
@@ -4363,6 +4508,10 @@ msgstr "Ablenkungsfreien Modus umschalten."
msgid "Add a new scene."
msgstr "Eine neue Szene hinzufügen."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Szene"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Gehe zu vorher geöffneter Szene."
@@ -5051,11 +5200,14 @@ msgid "Selected node is not a Viewport!"
msgstr "Ausgewähltes Node ist kein Viewport!"
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr "Größe: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
+msgstr "Größe:"
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+#, fuzzy
+msgid "Page:"
msgstr "Seite: "
#: editor/editor_properties_array_dict.cpp
@@ -5151,6 +5303,11 @@ msgstr ""
"Keine ausführbare Exportvorlage für diese Plattform gefunden.\n"
"Im Exportmenü kann eine Vorlage als ausführbar erstellt oder markiert werden."
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Projekt"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Spiellogik sollte mit der _run()-Methode beginnen."
@@ -5404,7 +5561,9 @@ msgid "Draw Spaces"
msgstr "Leerzeichen anzeigen"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr "Navigation"
@@ -5936,10 +6095,12 @@ msgstr "Hostname"
msgid "Port"
msgstr "Port"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Projektverwaltung"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Sorting Order"
msgstr "Sortierreihenfolge"
@@ -6690,14 +6851,6 @@ msgid "Replace in Files"
msgstr "In Dateien ersetzen"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "Suche: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "Ersetzen: "
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr "Alle ersetzen (KEIN RÜCKGÄNGIG MACHEN)"
@@ -6823,7 +6976,7 @@ msgstr "Wiederholen"
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
msgid "Filter"
msgstr "Filter"
@@ -7057,7 +7210,8 @@ msgid "Generating Lightmaps"
msgstr "Generiere Lightmaps"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+#, fuzzy
+msgid "Generating for Mesh:"
msgstr "Generierung für Mesh: "
#: editor/import/resource_importer_scene.cpp
@@ -7087,6 +7241,18 @@ msgid "Saving..."
msgstr "Speichere..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr "2D, 3D erkennen"
@@ -7888,10 +8054,12 @@ msgstr "Zwiebelhaut-Einstellungen"
msgid "Directions"
msgstr "Richtungen"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "Vergangenheit"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "Zukunft"
@@ -8051,7 +8219,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr "End-Animation festlegen. Hilfreich bei Sub-Transitionen."
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
+#, fuzzy
+msgid "Transition:"
msgstr "Übergang: "
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8068,11 +8237,6 @@ msgid "New name:"
msgstr "Neuer Name:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "Skalierung:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "Einblenden (s):"
@@ -8984,6 +9148,7 @@ msgstr "Erstelle eigenständige(n) Knochen aus Node(s)"
msgid "Clear Custom Bones"
msgstr "Spezielle Knochen löschen"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9047,6 +9212,10 @@ msgid "Preview Canvas Scale"
msgstr "Vorschau Canvas-Skalierung"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "Layout"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr "Verschiebungsmaske für Schlüsselbildeingabe."
@@ -9820,7 +9989,8 @@ msgid "Volume"
msgstr "Volumen"
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+#, fuzzy
+msgid "Emission Source:"
msgstr "Emissionsquelle: "
#: editor/plugins/particles_editor_plugin.cpp
@@ -10055,6 +10225,7 @@ msgid "Points"
msgstr "Punkte"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr "Polygone"
@@ -10177,7 +10348,7 @@ msgstr "Knochen mit Polygon synchronisieren"
#: editor/plugins/ray_cast_2d_editor_plugin.cpp
msgid "Set cast_to"
-msgstr "Setze cast_to"
+msgstr "cast_to festlegen"
#: editor/plugins/resource_preloader_editor_plugin.cpp
msgid "ERROR: Couldn't load resource!"
@@ -10210,13 +10381,6 @@ msgid "Instance:"
msgstr "Instanz:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "Typ:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr "Im Editor öffnen"
@@ -10225,10 +10389,6 @@ msgstr "Im Editor öffnen"
msgid "Load Resource"
msgstr "Ressource laden"
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr "Ressourcen-Vorlader"
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr "Portale umdrehen"
@@ -10925,12 +11085,16 @@ msgstr "Rotierung"
msgid "Translate"
msgstr "Verschiebung"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
+#, fuzzy
+msgid "Scaling:"
msgstr "Skalierung: "
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
+#, fuzzy
+msgid "Translating:"
msgstr "Verschiebe: "
#: editor/plugins/spatial_editor_plugin.cpp
@@ -10954,11 +11118,6 @@ msgid "Yaw:"
msgstr "Gierung:"
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr "Größe:"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr "Gezeichnete Objekte:"
@@ -11450,7 +11609,8 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr "Ungültige Geometrie, Mesh kann nicht ersetzt werden."
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+#, fuzzy
+msgid "Convert to MeshInstance2D"
msgstr "Zu Mesh2D umwandeln"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11482,15 +11642,18 @@ msgid "Sprite"
msgstr "Bild"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
+#, fuzzy
+msgid "Simplification:"
msgstr "Vereinfachung: "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+#, fuzzy
+msgid "Shrink (Pixels):"
msgstr "Schrumpfen (Pixel): "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+#, fuzzy
+msgid "Grow (Pixels):"
msgstr "Wachsen (Pixel): "
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12434,8 +12597,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr "Die vorherige Form oder (Unter-)Kachel auswählen."
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr "Bereich"
@@ -12757,7 +12919,7 @@ msgstr "Trennung"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Selected Tile"
-msgstr "Ausgewähltes Tile"
+msgstr "Ausgewählte Kachel"
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/light_2d.cpp scene/2d/line_2d.cpp scene/2d/mesh_instance_2d.cpp
@@ -12786,23 +12948,23 @@ msgstr "Modulierung"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Tile Mode"
-msgstr "Tile Modus"
+msgstr "Kachelmodus"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Autotile Bitmask Mode"
-msgstr "Autotile Bitmask Modus"
+msgstr "Autotile-Bitmask-Modus"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Subtile Size"
-msgstr "Kachelgröße"
+msgstr "Subkachelgröße"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Subtile Spacing"
-msgstr "Subtile Abstand"
+msgstr "Subkachelabstand"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Occluder Offset"
-msgstr "Abdeckung Versatz"
+msgstr "Verdeckungsversatz"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Navigation Offset"
@@ -12814,7 +12976,7 @@ msgstr "Formabstand"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Shape Transform"
-msgstr "Form verändern"
+msgstr "Form-Transform"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Selected Collision"
@@ -12826,7 +12988,7 @@ msgstr "Ausgewählte Kollision nur in eine Richtung"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Selected Collision One Way Margin"
-msgstr "Abstand der einseitigen ausgewählten Kollision"
+msgstr "Ausgewählter einseitiger Kollisionsabstand"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Selected Navigation"
@@ -12838,7 +13000,7 @@ msgstr "Ausgewählte Verdeckung"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Tileset Script"
-msgstr "Tileset Skript"
+msgstr "Tileset-Skript"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "TileSet"
@@ -13929,47 +14091,23 @@ msgstr "Soforteinsatz"
#: editor/project_export.cpp
msgid "Export the project for all the presets defined."
-msgstr ""
+msgstr "Dieses Projekt durch alle festgelegten Exportvorlagen exportieren."
#: editor/project_export.cpp
msgid "All presets must have an export path defined for Export All to work."
msgstr ""
+"Alle Exportvorlagen müssen einen Export-Pfad festlegen damit „Alle "
+"exportieren“ funktioniert."
#: editor/project_export.cpp
msgid "Delete preset '%s'?"
msgstr "Vorlage ‚%s‘ löschen?"
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-"Export des Projekts für die Plattform ‚%s‘ fehlgeschlagen.\n"
-"Exportvorlagen scheinen zu fehlen oder ungültig zu sein."
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-"Export des Projekts für die Plattform ‚%s‘ fehlgeschlagen.\n"
-"Es könnte an einen fehlerhaften Einstellung in den Voreinstellungen oder den "
-"individuellen Exporteinstellugen liegen."
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "Exportiere alles"
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr "Der angegebene Export-Pfad existiert nicht:"
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr "Export-Vorlagen für dieses Systeme fehlen / sind fehlerhaft:"
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr "Exportpfad"
@@ -14080,43 +14218,43 @@ msgid "More Info..."
msgstr "Mehr Infos…"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export PCK/Zip..."
-msgstr "Exportiere PCK/Zip"
+msgstr "PCK/Zip exportieren…"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export Project..."
-msgstr "Projekt exportieren"
+msgstr "Projekt exportieren…"
#: editor/project_export.cpp
msgid "Export All"
msgstr "Alles exportieren"
#: editor/project_export.cpp
-#, fuzzy
msgid "Choose an export mode:"
-msgstr "Bitte einen leeren Ordner auswählen."
+msgstr "Export-Modus auswählen:"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export All..."
-msgstr "Alles exportieren"
+msgstr "Alle exportieren…"
#: editor/project_export.cpp editor/project_manager.cpp
msgid "ZIP File"
msgstr "ZIP-Datei"
#: editor/project_export.cpp
-#, fuzzy
msgid "Godot Project Pack"
-msgstr "Godot-Game-Pack"
+msgstr "Godot-Projekt-Pack"
#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr "Export-Templates für diese Systeme fehlen:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Projektgründer"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "Verwalte Exportvorlagen"
@@ -15243,11 +15381,11 @@ msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Enable Scene Unique Name"
-msgstr "Einzigartigen Namen der Szene aktivieren"
+msgstr "Szenen-eindeutigen Namen aktivieren"
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Disable Scene Unique Name"
-msgstr "Deaktiviere eindeutigen Szenennamen"
+msgstr "Szenen-eindeutigen Namen deaktivieren"
#: editor/scene_tree_dock.cpp
msgid "New Scene Root"
@@ -15323,7 +15461,7 @@ msgstr "Unter-Ressourcen"
#: editor/scene_tree_dock.cpp
msgid "Access as Scene Unique Name"
-msgstr "Zugriff auf den eindeutigen Szenennamen"
+msgstr "Über Szenen-eindeutigen Namen zugreifen"
#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
@@ -15459,9 +15597,9 @@ msgid ""
"with the '%s' prefix in a node path.\n"
"Click to disable this."
msgstr ""
-"Der Node kann an jeder beliebigen Stelle in der Szene, unter der Verwendung "
-"des Prefix „%s“, im Node-Pfad aufgerufen werden.\n"
-"Klicke hier, um die Funktion zu deaktivieren."
+"Dieses Node kann an jeder beliebigen Stelle der Szene, unter der Verwendung "
+"des Präfix ‚%s‘ im Node-Pfad, aufgerufen werden.\n"
+"Zum deaktivieren, hier klicken."
#: editor/scene_tree_editor.cpp
msgid ""
@@ -15673,7 +15811,8 @@ msgid "Attach Node Script"
msgstr "Node-Skript hinzufügen"
#: editor/script_editor_debugger.cpp
-msgid "Remote "
+#, fuzzy
+msgid "Remote %s:"
msgstr "Fern "
#: editor/script_editor_debugger.cpp
@@ -16217,7 +16356,7 @@ msgstr "Physikinterpolation"
#: main/main.cpp
msgid "Enable Warnings"
-msgstr "Aktiviere Warnhinweise"
+msgstr "Warnhinweise aktivieren"
#: main/main.cpp
msgid "Frame Delay Msec"
@@ -16489,7 +16628,7 @@ msgstr "Ringseiten"
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
msgid "Polygon"
msgstr "Polygon"
@@ -16649,7 +16788,8 @@ msgid "Disabled GDNative Singleton"
msgstr "GDNative Singleton wurde deaktiviert"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+#, fuzzy
+msgid "Libraries:"
msgstr "Bibliotheken: "
#: modules/gdnative/nativescript/nativescript.cpp
@@ -17045,7 +17185,6 @@ msgid "Use In Baked Light"
msgstr "In Baked-Light verwenden"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr "Zelle"
@@ -17071,6 +17210,19 @@ msgstr "Z zentrieren"
msgid "Mask"
msgstr "Maske"
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Navigation"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Navigationsgefühl"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Nächste Ebene"
@@ -17474,7 +17626,8 @@ msgstr ""
"sein! Bitte entsprechendes Node anpassen."
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+#, fuzzy
+msgid "Node returned an invalid sequence output:"
msgstr "Node gab ungültige Sequenzausgabe zurück: "
#: modules/visual_script/visual_script.cpp
@@ -17484,7 +17637,8 @@ msgstr ""
"melden Sie den Bug!"
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+#, fuzzy
+msgid "Stack overflow with stack depth:"
msgstr "Stack-Overflow mit Stack-Tiefe: "
#: modules/visual_script/visual_script.cpp
@@ -17854,7 +18008,8 @@ msgid "for (elem) in (input):"
msgstr "for (Element) in (Eingabe):"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+#, fuzzy
+msgid "Input type not iterable:"
msgstr "Eingabetyp nicht wiederholbar: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17862,7 +18017,8 @@ msgid "Iterator became invalid"
msgstr "Iterator wurde ungültig"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+#, fuzzy
+msgid "Iterator became invalid:"
msgstr "Iterator wurde ungültig: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18014,11 +18170,13 @@ msgid "Operator"
msgstr "Operator"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
+#, fuzzy
+msgid "Invalid argument of type:"
msgstr ": Ungültiger Parameter vom Typ: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
+#, fuzzy
+msgid "Invalid arguments:"
msgstr ": Ungültige Parameter: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18030,11 +18188,13 @@ msgid "Var Name"
msgstr "Variablenname"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+#, fuzzy
+msgid "VariableGet not found in script:"
msgstr "VariableGet nicht im Skript gefunden: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+#, fuzzy
+msgid "VariableSet not found in script:"
msgstr "VariableSet nicht im Skript gefunden: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18521,10 +18681,6 @@ msgid "Could not execute on device."
msgstr "Ließ sich nicht auf Gerät ausführen."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr "Das ‚apksigner‘-Hilfswerkzeug konnte nicht gefunden werden."
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18658,12 +18814,17 @@ msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
"Die Version des „Target Sdk“ muss größer gleich der des „Min Sdk“ sein."
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Codesignierendes DMG"
+
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
"‚apksigner‘ konnte nicht gefunden werden.\n"
"Ist das Programm im Android SDK build-tools-Verzeichnis vorhanden?\n"
@@ -18682,6 +18843,11 @@ msgid "Could not find keystore, unable to export."
msgstr "Keystore konnte nicht gefunden werden, Export fehlgeschlagen."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "Unterprozess konnte nicht gestartet werden!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr "‚apksigner‘ gab Fehlercode #%d zurück"
@@ -18713,7 +18879,8 @@ msgstr ""
"Ungültiger Dateiname. Android APKs benötigen .apk als Dateinamenendung."
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+#, fuzzy
+msgid "Unsupported export format!"
msgstr "Nicht unterstütztes Exportformat!\n"
#: platform/android/export/export_plugin.cpp
@@ -18726,10 +18893,9 @@ msgstr ""
"Menü benötigt."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
"Android-Build-Versionsinkompatibilität:\n"
@@ -18738,14 +18904,16 @@ msgstr ""
"Bitte Android-Build-Vorlage im ‚Projekt‘-Menü neu installieren."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
"Kann res://android/build/res/*.xml Dateien nicht mit Projektnamen "
"überschreiben"
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+#, fuzzy
+msgid "Could not export project files to gradle project."
msgstr "Konnte Projektdateien nicht als Gradle-Projekt exportieren\n"
#: platform/android/export/export_plugin.cpp
@@ -18757,8 +18925,9 @@ msgid "Building Android Project (gradle)"
msgstr "Baue Android-Projekt (gradle)"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
"Bauen des Android-Projekts fehlgeschlagen, Fehlerdetails befinden ich in der "
@@ -18779,7 +18948,8 @@ msgstr ""
"im Gradle Projektverzeichnis erscheinen."
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+#, fuzzy
+msgid "Package not found: \"%s\"."
msgstr "Paket nicht gefunden: %s"
#: platform/android/export/export_plugin.cpp
@@ -18787,17 +18957,16 @@ msgid "Creating APK..."
msgstr "Erzeuge APK…"
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+#, fuzzy
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
"Konnte keine APK-Vorlage zum Exportieren finden:\n"
"%s"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -18811,7 +18980,8 @@ msgid "Adding files..."
msgstr "Füge Dateien hinzu…"
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+#, fuzzy
+msgid "Could not export project files."
msgstr "Projektdateien konnten nicht exportiert werden"
#: platform/android/export/export_plugin.cpp
@@ -19035,6 +19205,17 @@ msgstr "Eigene Hintergrundfarbe verwenden"
msgid "Custom BG Color"
msgstr "Eigene Hintergrundfarbe"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "Vorlagen verwalten"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Selbst konfigurierte Release-Exportvorlage nicht gefunden."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -19057,22 +19238,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Führe exportiertes HTML im Standard-Browser des Betriebssystems aus."
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
msgstr "Konnte Vorlage nicht zum Export öffnen:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
msgstr "Ungültige Exportvorlage:"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+#, fuzzy
+msgid "Could not write file: \"%s\"."
msgstr "Konnte Datei nicht schreiben:"
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Symbolbildbegrenzung"
+
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+#, fuzzy
+msgid "Could not read file: \"%s\"."
msgstr "Konnte Datei nicht lesen:"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Variant"
msgstr "Variante"
@@ -19141,15 +19335,18 @@ msgid "Icon 512 X 512"
msgstr "Symbol 512 X 512"
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+#, fuzzy
+msgid "Could not read HTML shell: \"%s\"."
msgstr "Konnte HTML-Shell nicht lesen:"
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+#, fuzzy
+msgid "Could not create HTTP server directory: %s."
msgstr "Konnte HTTP-Server-Verzeichnis nicht erstellen:"
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+#, fuzzy
+msgid "Error starting HTTP server: %d."
msgstr "Fehler beim Starten des HTTP-Servers:"
#: platform/javascript/export/export.cpp
@@ -19414,9 +19611,29 @@ msgid "Apple Team ID"
msgstr "Apple-Team-ID"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Projektdateien konnten nicht exportiert werden"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "Unterprozess konnte nicht gestartet werden!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Beglaubigung"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
"Hinweis: Der Beglaubigungsprozess dauert gewöhnlich weniger als eine Stunde. "
"Nach Ablauf wird eine Bestätigungsmail versandt."
@@ -19438,18 +19655,83 @@ msgstr ""
"Anwendung geheftet werden (optional):"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+"Zeitstempel sind nicht mit Ad-hoc-Signaturen kompatibel, und werden "
+"deaktiviert!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+"Die abgehärtete Laufzeitumgebung ist nicht mit Ad-hoc-Signaturen kompatibel, "
+"und wird deaktiviert!"
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
msgid "No identity found."
msgstr "Keine Identität gefunden."
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Fehler beim Speichern von Datei: %s"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+"Relative symbolische Links werden von diesem Betriebssystem nicht "
+"unterstützt, das exportierte Projekt könnte fehlerhaft sein!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Richtung"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "Unterprozess konnte nicht gestartet werden!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Creating app bundle"
msgstr "Erzeuge App-Bundle"
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+#, fuzzy
+msgid "Could not find template app to export: \"%s\"."
msgstr "Es konnte keine Vorlagen-App zum Exportieren gefunden werden:"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Ungültige Exportvorlage:"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -19458,8 +19740,9 @@ msgstr ""
"unterstützt, das exportierte Projekt könnte fehlerhaft sein!"
#: platform/osx/export/export.cpp
+#, fuzzy
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
"Benötigte Vorlagen-Binary ‚%s‘ nicht gefunden. Es könnte im Vorlagen-Archiv "
@@ -19506,6 +19789,16 @@ msgid "Sending archive for notarization"
msgstr "Sende Archiv zur Beglaubigung"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "Projektion"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr "Konnte Projektdateien nicht als Gradle-Projekt exportieren\n"
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr "Ungültiger Bundle-Bezeichner:"
@@ -19833,6 +20126,11 @@ msgid "Debug Algorithm"
msgstr "Debug-Algorithmus"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Temporäre Datei kann nicht entfernt werden:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr "Identitäts-Typ"
@@ -19873,6 +20171,78 @@ msgid "Trademarks"
msgstr "Handelsmarken"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Pushnachrichten"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "Keystore konnte nicht gefunden werden, Export fehlgeschlagen."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "Keystore konnte nicht gefunden werden, Export fehlgeschlagen."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+"Das Rcedit-Werkzeug muss in den Editoreinstellungen (Export > Windows > "
+"Rcedit) festgelegt werden um Icon- oder Anwendungsinformation festlegen zu "
+"können."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "Keystore konnte nicht gefunden werden, Export fehlgeschlagen."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "Keystore konnte nicht gefunden werden, Export fehlgeschlagen."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Identitäts-Typ"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Ungültiger Name."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+"Das Rcedit-Werkzeug muss in den Editoreinstellungen (Export > Windows > "
+"Rcedit) festgelegt werden um Icon- oder Anwendungsinformation festlegen zu "
+"können."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "Temporäre Datei kann nicht entfernt werden:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19894,6 +20264,23 @@ msgid "Invalid product version:"
msgstr "Ungültige Produktversion:"
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Ungültige ausführbare Datei."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Windows"
msgstr "Windows"
@@ -19909,6 +20296,10 @@ msgstr "Osslsigncode"
msgid "Wine"
msgstr "Wine"
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
msgid "Frames"
@@ -20019,7 +20410,8 @@ msgstr "Abspielen pausiert"
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr "Max Distanz"
@@ -20804,18 +21196,19 @@ msgstr ""
"Polygon zeichnen."
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-"NavigationPolygonInstance muss ein Unterobjekt erster oder zweiter Ordnung "
-"unterhalb eines Navigation2D-Node sein. Es liefert nur "
-"Navigationsinformationen."
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr "Navpolygon"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Mitte unten"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "Reisen"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
msgid "Rotation Degrees"
@@ -21928,14 +22321,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr "NavigationAgent kann nur unter einem Spatial-Node genutzt werden."
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-"NavigationMeshInstance muss ein Unterobjekt erster oder zweiter Ordnung "
-"eines Navigation-Nodes sein. Es liefert nur Navigationsinformationen."
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr "NavMesh"
@@ -22162,11 +22547,11 @@ msgstr "Z"
#: scene/3d/physics_body.cpp
msgid "Linear Limit Enabled"
-msgstr "Aktiviere lineares Limit"
+msgstr "Lineare Grenze aktiviert"
#: scene/3d/physics_body.cpp
msgid "Linear Spring Enabled"
-msgstr "Lineare Funktion aktivieren"
+msgstr "Lineare Feder aktiviert"
#: scene/3d/physics_body.cpp
msgid "Linear Spring Stiffness"
@@ -22670,11 +23055,11 @@ msgstr "Stellung kopieren"
#: scene/3d/skeleton.cpp
msgid "Bound Children"
-msgstr "Angebundene Komponenten"
+msgstr "Gebundene Komponenten"
#: scene/3d/soft_body.cpp
msgid "Pinned Points"
-msgstr "Fixiertes Element"
+msgstr "Angeheftete Elemente"
#: scene/3d/soft_body.cpp
msgid "Attachments"
@@ -22943,11 +23328,11 @@ msgstr "Auto-Neustarten"
#: scene/animation/animation_blend_tree.cpp
msgid "Delay"
-msgstr "Zeitverzögerung (ms)"
+msgstr "Zeitverzögerung"
#: scene/animation/animation_blend_tree.cpp
msgid "Random Delay"
-msgstr "Zufällige Zeitverzögerung (ms)"
+msgstr "Zufällige Zeitverzögerung"
#: scene/animation/animation_blend_tree.cpp
msgid "Add Amount"
@@ -22959,7 +23344,7 @@ msgstr "Abbildungsmenge"
#: scene/animation/animation_blend_tree.cpp
msgid "Seek Position"
-msgstr "Standortsuche"
+msgstr "Position aufsuchen"
#: scene/animation/animation_blend_tree.cpp
msgid "Input Count"
@@ -24040,9 +24425,9 @@ msgid ""
"Setting node name '%s' to be unique within scene for '%s', but it's already "
"claimed by '%s'. This node is no longer set unique."
msgstr ""
-"Der verwendete Node Name '%s' wurde als einzigartig in der Szene '%s' "
-"deklariert, jedoch wurde der Name bereits von '%s' verwendet. Der Node ist "
-"nicht mehr einzigartig."
+"Der verwendete Node-Name '%s' wurde als einzigartig in der Szene '%s' "
+"deklariert, jedoch wurde der Name bereits von '%s' verwendet. Das Node wird "
+"nicht mehr als einzigartig geführt."
#: scene/main/node.cpp
msgid "Name Num Separator"
@@ -24062,7 +24447,7 @@ msgstr "Pausiermodus"
#: scene/main/node.cpp
msgid "Physics Interpolation Mode"
-msgstr "Physikinterpolations Modus"
+msgstr "Physikinterpolationsmodus"
#: scene/main/node.cpp
msgid "Display Folded"
@@ -24371,6 +24756,16 @@ msgid "3D Physics"
msgstr "3D-Physik"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Navigation"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Navigation"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr "hiDPI verwenden"
@@ -25581,7 +25976,7 @@ msgstr "Übertragung"
msgid "Refraction"
msgstr "Brechung"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr "Details"
@@ -25654,7 +26049,13 @@ msgid "Visible Instance Count"
msgstr "Sichtbare Instanzen Anzahl"
#: scene/resources/navigation_mesh.cpp
-msgid "Sample Partition Type"
+#, fuzzy
+msgid "Sampling"
+msgstr "Skalierung: "
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "Probeneinteilunstyp"
#: scene/resources/navigation_mesh.cpp
@@ -25670,7 +26071,13 @@ msgid "Source Group Name"
msgstr "Quellen-Gruppenname"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+#, fuzzy
+msgid "Cells"
+msgstr "Zelle"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
msgstr "Agent"
#: scene/resources/navigation_mesh.cpp
@@ -25682,11 +26089,17 @@ msgid "Max Slope"
msgstr "Maximale Neigung"
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Regions"
+msgstr "Bereich"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr "Größe der Zusammenführung"
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+#, fuzzy
+msgid "Edges"
msgstr "Kante"
#: scene/resources/navigation_mesh.cpp
@@ -25698,6 +26111,11 @@ msgid "Verts Per Poly"
msgstr "Vert per Poly"
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Details"
+msgstr "Details"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr "Probendistanz"
@@ -25714,7 +26132,8 @@ msgid "Ledge Spans"
msgstr "Vorsprünge"
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+#, fuzzy
+msgid "Walkable Low Height Spans"
msgstr "Ablaufbare Abstände niedriger Höhe aussortiern"
#: scene/resources/occluder_shape.cpp
@@ -25851,7 +26270,7 @@ msgstr "Zuordnung"
#: scene/resources/skin.cpp
msgid "Bone"
-msgstr "Skelett"
+msgstr "Knochen"
#: scene/resources/sky.cpp
msgid "Radiance Size"
@@ -25983,7 +26402,7 @@ msgstr "Pause"
#: scene/resources/texture.cpp
msgid "Which Feed"
-msgstr "Welche Zulauf"
+msgstr "Welcher Zulauf"
#: scene/resources/texture.cpp
msgid "Camera Is Active"
@@ -26074,6 +26493,11 @@ msgid "Scenario"
msgstr "Szenario"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Navigation"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr "Direkter Raum Zustand"
@@ -26089,6 +26513,26 @@ msgstr "Standard lineare Dämpfung"
msgid "Default Angular Damp"
msgstr "Standard Winkeldämpfung"
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Standard Gleitkommaschritte"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Zellen Größe"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Zellenhöhe"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Kantenverbindungsbegrenzung"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr "Canvas/ Leinwand"
@@ -26440,16 +26884,16 @@ msgid ""
"Varyings which were assigned in 'vertex' function may not be reassigned in "
"'fragment' or 'light'."
msgstr ""
-"Variationen, die der Funktion 'Vertex' zugewiesen wurden, dürfen der "
-"'fragment' oder 'licht' Funktion nicht neu zugewiesen werden."
+"Variationen, welche in einer ‚vertex‘-Funktion zugewiesen wurden, dürfen "
+"innerhalb ‚fragment‘- oder ‚light‘-Funktionen nicht erneut zugewiesen werden."
#: servers/visual/shader_language.cpp
msgid ""
"Varyings which were assigned in 'fragment' function may not be reassigned in "
"'vertex' or 'light'."
msgstr ""
-"Variationen, die der Funktion 'Fragment' zugewiesen wurden, dürfen der "
-"'vertex' oder 'licht' Funktion nicht neu zugewiesen werden."
+"Variationen, welche in einer ‚fragment‘-Funktion zugewiesen wurden, dürfen "
+"innerhalb ‚vertex‘- oder ‚light‘-Funktionen nicht erneut zugewiesen werden."
#: servers/visual/shader_language.cpp
msgid "Assignment to function."
diff --git a/editor/translations/editor.pot b/editor/translations/editor.pot
index ad634b8986..169d40ebd7 100644
--- a/editor/translations/editor.pot
+++ b/editor/translations/editor.pot
@@ -196,9 +196,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr ""
@@ -302,7 +303,7 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr ""
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+msgid "Invalid input %d (not passed) in expression"
msgstr ""
#: core/math/expression.cpp
@@ -346,6 +347,14 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+msgid "Mouse Mode"
+msgstr ""
+
+#: core/os/input.cpp
+msgid "Use Accumulated Input"
+msgstr ""
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -525,7 +534,8 @@ msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr ""
@@ -608,24 +618,23 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-msgid "Plugin Name"
+msgid "Version Control Plugin Name"
msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
@@ -733,7 +742,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
msgid "Filters"
msgstr ""
@@ -1000,6 +1010,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr ""
@@ -1016,7 +1027,7 @@ msgstr ""
msgid "Time:"
msgstr ""
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr ""
@@ -1257,7 +1268,61 @@ msgid "Remove this track."
msgstr ""
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+msgid "Time (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Position:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Rotation:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "(Invalid, expected type: %s)"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Stream:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Start (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Animation Clip:"
msgstr ""
#: editor/animation_track_editor.cpp
@@ -1467,7 +1532,7 @@ msgid "Add Method Track Key"
msgstr ""
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+msgid "Method not found in object:"
msgstr ""
#: editor/animation_track_editor.cpp
@@ -2059,7 +2124,7 @@ msgid "Open"
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
+msgid "Owners of: %s (Total: %d)"
msgstr ""
#: editor/dependency_editor.cpp
@@ -2350,7 +2415,7 @@ msgid "Bus Options"
msgstr ""
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr ""
@@ -2402,8 +2467,8 @@ msgstr ""
msgid "There is no '%s' file."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+msgid "Layout:"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -2606,6 +2671,22 @@ msgid "Choose"
msgstr ""
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed successfully."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed."
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr ""
@@ -2618,6 +2699,26 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp
+msgid "Save PCK"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Cannot create file \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed to export project files."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Can't open file to read from path \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Save ZIP"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2718,8 +2819,25 @@ msgstr ""
msgid "Custom release template not found."
msgstr ""
+#: editor/editor_export.cpp
+msgid "Prepare Template"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "The given export path doesn't exist."
+msgstr ""
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+msgid "Template file not found: \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed to copy export template."
+msgstr ""
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
msgstr ""
#: editor/editor_export.cpp
@@ -2889,9 +3007,9 @@ msgid "Import"
msgstr ""
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr ""
@@ -3967,14 +4085,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4089,6 +4199,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr ""
@@ -4116,6 +4230,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
@@ -4744,11 +4862,13 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+msgid "Page:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
@@ -4840,6 +4960,10 @@ msgid ""
"as runnable."
msgstr ""
+#: editor/editor_run_native.cpp
+msgid "Project Run"
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -5093,7 +5217,9 @@ msgid "Draw Spaces"
msgstr ""
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr ""
@@ -5625,10 +5751,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Sorting Order"
msgstr ""
@@ -6346,14 +6474,6 @@ msgid "Replace in Files"
msgstr ""
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr ""
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr ""
@@ -6479,7 +6599,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
msgid "Filter"
msgstr ""
@@ -6713,7 +6833,7 @@ msgid "Generating Lightmaps"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+msgid "Generating for Mesh:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -6741,6 +6861,18 @@ msgid "Saving..."
msgstr ""
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7513,10 +7645,12 @@ msgstr ""
msgid "Directions"
msgstr ""
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr ""
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr ""
@@ -7671,7 +7805,7 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
+msgid "Transition:"
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
@@ -7688,11 +7822,6 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr ""
@@ -8573,6 +8702,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr ""
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -8636,6 +8766,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -9375,7 +9509,7 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+msgid "Emission Source:"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
@@ -9605,6 +9739,7 @@ msgid "Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr ""
@@ -9758,13 +9893,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -9773,10 +9901,6 @@ msgstr ""
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -10461,12 +10585,14 @@ msgstr ""
msgid "Translate"
msgstr ""
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
+msgid "Scaling:"
msgstr ""
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
+msgid "Translating:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -10490,11 +10616,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -10969,7 +11090,7 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+msgid "Convert to MeshInstance2D"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11001,15 +11122,15 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
+msgid "Simplification:"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11927,8 +12048,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr ""
@@ -13338,31 +13458,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr ""
@@ -13495,6 +13594,10 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Project Export"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr ""
@@ -14924,7 +15027,7 @@ msgid "Attach Node Script"
msgstr ""
#: editor/script_editor_debugger.cpp
-msgid "Remote "
+msgid "Remote %s:"
msgstr ""
#: editor/script_editor_debugger.cpp
@@ -15740,7 +15843,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
msgid "Polygon"
msgstr ""
@@ -15900,7 +16003,7 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+msgid "Libraries:"
msgstr ""
#: modules/gdnative/nativescript/nativescript.cpp
@@ -16294,7 +16397,6 @@ msgid "Use In Baked Light"
msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -16320,6 +16422,17 @@ msgstr ""
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+msgid "Bake Navigation"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+msgid "Navigation Layers"
+msgstr ""
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -16715,7 +16828,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -16723,7 +16836,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17083,7 +17196,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17091,7 +17204,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17243,11 +17356,11 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
+msgid "Invalid argument of type:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
+msgid "Invalid arguments:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
@@ -17259,11 +17372,11 @@ msgid "Var Name"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+msgid "VariableGet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+msgid "VariableSet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
@@ -17745,10 +17858,6 @@ msgid "Could not execute on device."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -17852,12 +17961,15 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Code Signing"
+msgstr ""
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -17873,6 +17985,10 @@ msgid "Could not find keystore, unable to export."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Could not start apksigner executable."
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -17901,7 +18017,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -17912,19 +18028,17 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+msgid "Could not export project files to gradle project."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -17937,7 +18051,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -17952,7 +18066,7 @@ msgid ""
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -17960,15 +18074,12 @@ msgid "Creating APK..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -17978,7 +18089,7 @@ msgid "Adding files..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18202,6 +18313,15 @@ msgstr ""
msgid "Custom BG Color"
msgstr ""
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+msgid "Prepare Templates"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Export template not found."
+msgstr ""
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18223,19 +18343,27 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Could not open template for export: \"%s\"."
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Invalid export template: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+msgid "Could not write file: \"%s\"."
+msgstr ""
+
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+msgid "Icon Creation"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not read file: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+msgid "PWA"
msgstr ""
#: platform/javascript/export/export.cpp
@@ -18307,15 +18435,15 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr ""
#: platform/javascript/export/export.cpp
@@ -18580,9 +18708,25 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Could not open icon file \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Could not start xcrun executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -18598,15 +18742,66 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
msgid "No identity found."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Cannot sign file %s."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "DMG Creation"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Could not start hdiutil executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Creating app bundle"
msgstr ""
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Invalid export format."
msgstr ""
#: platform/osx/export/export.cpp
@@ -18617,7 +18812,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -18658,6 +18853,14 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+msgid "ZIP Creation"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr ""
@@ -18953,6 +19156,10 @@ msgid "Debug Algorithm"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Failed to rename temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -18993,6 +19200,62 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Resources Modification"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Invalid identity type."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Invalid timestamp server."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Failed to remove temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19011,6 +19274,22 @@ msgid "Invalid product version:"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Failed to open executable file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Windows"
msgstr ""
@@ -19026,6 +19305,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
msgid "Frames"
@@ -19134,7 +19417,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
@@ -19880,13 +20164,15 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
+msgid "Navpoly"
msgstr ""
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Enter Cost"
+msgstr ""
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Travel Cost"
msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
@@ -20939,12 +21225,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -23276,6 +23556,14 @@ msgid "3D Physics"
msgstr ""
#: scene/register_scene_types.cpp
+msgid "2D Navigation"
+msgstr ""
+
+#: scene/register_scene_types.cpp
+msgid "3D Navigation"
+msgstr ""
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -24486,7 +24774,7 @@ msgstr ""
msgid "Refraction"
msgstr ""
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -24559,7 +24847,11 @@ msgid "Visible Instance Count"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
+msgid "Partition Type"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -24575,7 +24867,11 @@ msgid "Source Group Name"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
+msgid "Agents"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -24587,11 +24883,15 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+msgid "Regions"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -24603,6 +24903,10 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+msgid "Details"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -24619,7 +24923,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -24977,6 +25281,10 @@ msgid "Scenario"
msgstr ""
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+msgid "Navigation Map"
+msgstr ""
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -24992,6 +25300,22 @@ msgstr ""
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+msgid "Default Map Up"
+msgstr ""
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+msgid "Default Cell Size"
+msgstr ""
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+msgid "Default Cell Height"
+msgstr ""
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+msgid "Default Edge Connection Margin"
+msgstr ""
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/el.po b/editor/translations/el.po
index 294f137a1e..a3f5e815e1 100644
--- a/editor/translations/el.po
+++ b/editor/translations/el.po
@@ -218,9 +218,10 @@ msgid "Data"
msgstr "Δεδομένα"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr "Δίκτυο"
@@ -327,7 +328,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Δεν υπάÏχουν αÏκετά byte για την αποκωδικοποίηση, ή άκυÏη μοÏφή."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "ΆκυÏη είσοδος %i (δεν πέÏασε) στην έκφÏαση"
#: core/math/expression.cpp
@@ -374,6 +376,16 @@ msgstr "ΟυÏά Μηνυμάτων"
msgid "Max Size (KB)"
msgstr "Μέγιστο Μέγεθος (KB)"
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "ΛειτουÏγία Μετακίνησης"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "ΔιαγÏαφή εισόδου"
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -559,7 +571,8 @@ msgstr "ΠεÏιγÏαφή"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "Εκτέλεση"
@@ -647,6 +660,10 @@ msgid "Main Run Args"
msgstr "ΟÏίσματα κÏÏιας σκηνής"
#: core/project_settings.cpp
+msgid "Scene Naming"
+msgstr "Όνομα Σκηνής"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr "Αναζήτηση στις Επεκτάσεις ΑÏχείων"
@@ -654,18 +671,15 @@ msgstr "Αναζήτηση στις Επεκτάσεις ΑÏχείων"
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Έλεγχος έκδοσης"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "ΣÏστημα Ελέγχου Έκδοσης"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Όνομα ΠÏοσθέτου"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Έλεγχος έκδοσης"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -784,7 +798,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
msgid "Filters"
msgstr "ΦίλτÏα"
@@ -1063,6 +1078,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "ΕλεÏθεÏο"
@@ -1079,7 +1095,7 @@ msgstr "ΚατοπτÏισμός"
msgid "Time:"
msgstr "ΧÏόνος:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Τιμή:"
@@ -1329,10 +1345,75 @@ msgid "Remove this track."
msgstr "ΑφαίÏεση κομματιοÏ."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "ΧÏόνος (s): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Θέση"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Βήμα ΠεÏιστÏοφής:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "Κλιμάκωση:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "ΤÏπος:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "ΆκυÏο Ï€ÏοτÏπο εξαγωγής:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Easing:"
+msgstr "Ομαλή κίνηση από μέσα Ï€Ïος τα έξω"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "In-Handle:"
+msgstr "ΟÏισμός λαβής"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Out-Handle:"
+msgstr "ΟÏισμός λαβής"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "Στοιχείο επιλογής"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Επανεκκίνηση (δευτεÏόλεπτα):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "End (s):"
+msgstr "Εμφάνιση σε (δευτεÏόλεπτα):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Κινήσεις:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "(Απ)ενεÏγοποίηση ΚομματιοÏ"
@@ -1551,7 +1632,8 @@ msgid "Add Method Track Key"
msgstr "ΠÏοσθήκη ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï Î¼ÎµÎ¸ÏŒÎ´Î¿Ï…"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "Δεν βÏέθηκε η μέθοδος στο αντικείμενο: "
#: editor/animation_track_editor.cpp
@@ -2169,8 +2251,8 @@ msgid "Open"
msgstr "Άνοιγμα"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Ιδιοκτήτες του:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
#, fuzzy
@@ -2483,7 +2565,7 @@ msgid "Bus Options"
msgstr "Επιλογές διαÏλου"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "ΑναπαÏαγωγή"
@@ -2535,8 +2617,9 @@ msgstr "Άνοιγμα διάταξης διαÏλων ήχου"
msgid "There is no '%s' file."
msgstr "Δεν υπάÏχει αÏχείο «%s»."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "Διάταξη"
#: editor/editor_audio_buses.cpp
@@ -2743,6 +2826,25 @@ msgid "Choose"
msgstr "Επιλέξτε"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "ΑντιγÏαφή διαδÏομής κόμβου"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "Το πακέτο εγκαταστάθηκε επιτυχώς!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "Απέτυχε:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "ΑÏχείο αποθήκευσης:"
@@ -2755,6 +2857,31 @@ msgid "Packing"
msgstr "ΠακετάÏισμα"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Αποθήκευση ώς"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "ΑδÏνατη η δημιουÏγία φακέλου."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Απέτυχε η εγγÏαφή σε αÏχείο:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "ΑδÏνατο το άνοιγμα αÏχείου για εγγÏαφή:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Αποθήκευση ώς"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2874,11 +3001,33 @@ msgstr "Δεν βÏέθηκε Ï€ÏοσαÏμοσμένο πακέτο αποσφ
msgid "Custom release template not found."
msgstr "Δεν βÏέθηκε Ï€ÏοσαÏμοσμένο πακέτο διανομής."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "ΔιαχείÏιση ΠÏοτÏπων"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "Η δεδομένη διαδÏομή εξαγωγής δεν υπάÏχει:"
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "Δεν βÏέθηκε αÏχείο Ï€ÏοτÏπου:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "ΆκυÏο Ï€ÏοτÏπο εξαγωγής:"
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+#, fuzzy
+msgid "PCK Embedding"
+msgstr "ΑναπλήÏωση"
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr ""
"Σε εξαγωγές 32-bit, το ενσωματωμένο PCK δεν μποÏεί να υπεÏβαίνει τα 4 GiB."
@@ -3053,9 +3202,9 @@ msgid "Import"
msgstr "Εισαγωγή"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Εξαγωγή"
@@ -4229,14 +4378,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Σκηνή"
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr "Όνομα Σκηνής"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4354,6 +4495,10 @@ msgid "Default Color Picker Mode"
msgstr "ΠÏοεπιλεγμένη ΛειτουÏγία Επιλογέα ΧÏώματος"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Έλεγχος έκδοσης"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "Ψευδώνυμο"
@@ -4381,6 +4526,10 @@ msgstr "Εναλλαγή λειτουÏγίας χωÏίς πεÏισπασμοÏ
msgid "Add a new scene."
msgstr "ΠÏοσθήκη νέας σκηνής."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Σκηνή"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "ΕπιστÏοφή στην Ï€Ïοηγουμένως ανοιγμένη σκηνή."
@@ -5075,11 +5224,15 @@ msgid "Selected node is not a Viewport!"
msgstr "Ο επιλεγμένος κόμβος δεν είναι Viewport!"
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#, fuzzy
+msgid "Size:"
msgstr "Μέγεθος: "
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+#, fuzzy
+msgid "Page:"
msgstr "Σελίδα: "
#: editor/editor_properties_array_dict.cpp
@@ -5180,6 +5333,11 @@ msgstr ""
"Δεν βÏέθηκε εκτελέσιμη διαμόÏφωση εξαγωγής για αυτή την πλατφόÏμα.\n"
"ΠαÏακαλοÏμε Ï€Ïοσθέστε μία εκτελέσιμη διαμόÏφωση στο Î¼ÎµÎ½Î¿Ï ÎµÎ¾Î±Î³Ï‰Î³Î®Ï‚."
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "ΈÏγο"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "ΓÏάψτε τη λογική σας στη μέθοδο _run()."
@@ -5463,7 +5621,9 @@ msgid "Draw Spaces"
msgstr "Κλήσεις σχεδίασης"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr "Πλοήγηση"
@@ -6059,10 +6219,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "ΔιαχειÏιστής"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -6856,14 +7018,6 @@ msgid "Replace in Files"
msgstr "Αντικατάσταση όλων"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "ΕÏÏεση: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "Αντικατάσταση: "
-
-#: editor/find_in_files.cpp
#, fuzzy
msgid "Replace All (NO UNDO)"
msgstr "Αντικατάσταση όλων"
@@ -6993,7 +7147,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "ΦίλτÏα:"
@@ -7261,7 +7415,8 @@ msgid "Generating Lightmaps"
msgstr "ΔημιουÏγία χαÏτών φωτός"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+#, fuzzy
+msgid "Generating for Mesh:"
msgstr "ΔημιουÏία για πλέγμα: "
#: editor/import/resource_importer_scene.cpp
@@ -7292,6 +7447,18 @@ msgid "Saving..."
msgstr "Αποθήκευση..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -8111,10 +8278,12 @@ msgstr "Επιλογές Ξεφλουδίσματος ΚÏεμμυδιοÏ"
msgid "Directions"
msgstr "Κατευθήνσεις"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "ΠαÏελθόν"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "Μέλλον"
@@ -8274,7 +8443,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr "ΟÏισμός τελικής κίνησης. ΧÏήσιμο για υπο-μεταβάσεις."
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
+#, fuzzy
+msgid "Transition:"
msgstr "Μετάβαση: "
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8291,11 +8461,6 @@ msgid "New name:"
msgstr "Îέο όνομα:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "Κλιμάκωση:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "Εμφάνιση σε (δευτεÏόλεπτα):"
@@ -9226,6 +9391,7 @@ msgstr "ΔημιουÏγία ΠÏοσαÏμοσμένου(ων) ΟστοÏ(ών)
msgid "Clear Custom Bones"
msgstr "ΕκκαθάÏιση ΠÏοσαÏμοσμένων Οστών"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9292,6 +9458,10 @@ msgid "Preview Canvas Scale"
msgstr "ΠÏοεπισκόπηση Κλιμάκωσης Καμβά"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "Διάταξη"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr "Μάσκα μεταγλώττισης για εισαγόμενα κλειδιά."
@@ -10081,7 +10251,8 @@ msgid "Volume"
msgstr "Ένταση"
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+#, fuzzy
+msgid "Emission Source:"
msgstr "Πηγή εκπομπής: "
#: editor/plugins/particles_editor_plugin.cpp
@@ -10315,6 +10486,7 @@ msgid "Points"
msgstr "Σημεία"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr "ΠολÏγωνα"
@@ -10476,13 +10648,6 @@ msgid "Instance:"
msgstr "Στιγμιότυπο:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "ΤÏπος:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr "Άνοιγμα στον επεξεÏγαστή"
@@ -10491,10 +10656,6 @@ msgstr "Άνοιγμα στον επεξεÏγαστή"
msgid "Load Resource"
msgstr "ΦόÏτωση πόÏου"
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr "ΠÏόφÏαμμα Ï€ÏοφόÏτωσης"
-
#: editor/plugins/room_manager_editor_plugin.cpp
#, fuzzy
msgid "Flip Portals"
@@ -11226,12 +11387,16 @@ msgstr "ΛειτουÏγία ΠεÏιστÏοφής"
msgid "Translate"
msgstr "Μετατόπιση:"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
+#, fuzzy
+msgid "Scaling:"
msgstr "Κλιμάκωση: "
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
+#, fuzzy
+msgid "Translating:"
msgstr "Μετακίνηση: "
#: editor/plugins/spatial_editor_plugin.cpp
@@ -11257,12 +11422,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
-msgid "Size:"
-msgstr "Μέγεθος: "
-
-#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
msgid "Objects Drawn:"
msgstr "ΖωγÏαφισμένα αντικείμενα"
@@ -11763,7 +11922,8 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr "ΆκυÏη γεωμετÏία, αδÏνατη η αντικατάσταση με πλέγμα."
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+#, fuzzy
+msgid "Convert to MeshInstance2D"
msgstr "ΜετατÏοπή σε Mesh2D"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11795,15 +11955,18 @@ msgid "Sprite"
msgstr "Sprite"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
+#, fuzzy
+msgid "Simplification:"
msgstr "Απλοποίηση: "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+#, fuzzy
+msgid "Shrink (Pixels):"
msgstr "ΣμίκÏυνση (Εικονοστοιχεία): "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+#, fuzzy
+msgid "Grow (Pixels):"
msgstr "ΑÏξηση (Εικονοστοιχεία): "
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12786,8 +12949,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr "Επιλογή Ï€ÏοηγοÏμενου σχήματος, υπό-πλακιδίου, ή πλακιδίου."
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr "ΠεÏιοχή"
@@ -14340,37 +14502,10 @@ msgid "Delete preset '%s'?"
msgstr "ΔιαγÏαφή διαμόÏφωσης '%s';"
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-"Αποτυχία εξαγωγής έÏγου στην πλατφόÏμα «%s».\n"
-"Τα Ï€Ïότυπα εξαγωγής λείπουν ή είναι άκυÏα."
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-"Αποτυχία εξαγωγής έÏγου στην πλατφόÏμα «%s».\n"
-"Αυτό μποÏεί να οφείλεται σε λάθος της διαμόÏφωσης εξαγωγής ή στις Ïυθμίσεις "
-"εξαγωγής σας."
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "Εξαγωγή Όλων"
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr "Η δεδομένη διαδÏομή εξαγωγής δεν υπάÏχει:"
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-"Τα Ï€Ïότυπα εξαγωγής για αυτή την πλατφόÏτμα λείπουν ή είναι κατεστÏαμμένα:"
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr "ΔιαδÏομή Εξαγωγής"
@@ -14519,6 +14654,11 @@ msgid "Export templates for this platform are missing:"
msgstr "Τα Ï€Ïότυπα εξαγωγής για αυτή την πλατφόÏτμα λείπουν:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "ΙδÏυτές του έÏγου"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "ΔιαχείÏιση Ï€ÏοτÏπων εξαγωγής"
@@ -16063,7 +16203,8 @@ msgid "Attach Node Script"
msgstr "ΣÏνδεση Δέσμης ΕνεÏγειών Κόμβου"
#: editor/script_editor_debugger.cpp
-msgid "Remote "
+#, fuzzy
+msgid "Remote %s:"
msgstr "ΑπομακÏυσμένο "
#: editor/script_editor_debugger.cpp
@@ -16950,7 +17091,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "ΠολÏγωνα"
@@ -17128,7 +17269,8 @@ msgid "Disabled GDNative Singleton"
msgstr "ΑπενεÏγοποίηση Μονοσυνόλου GDNative"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+#, fuzzy
+msgid "Libraries:"
msgstr "Βιβλιοθήκες: "
#: modules/gdnative/nativescript/nativescript.cpp
@@ -17576,7 +17718,6 @@ msgid "Use In Baked Light"
msgstr "ΠÏοετοιμασία Lightmaps"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17606,6 +17747,19 @@ msgstr "ΚέντÏο"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Πλοήγηση"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "ΔημιουÏγία Πλοήγησης"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Επόμενο επίπεδο"
@@ -18030,7 +18184,8 @@ msgstr ""
"εÏγασίας του κόμβου! ΠαÏακαλοÏμε διοÏθώστε τον κόμβο σας."
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+#, fuzzy
+msgid "Node returned an invalid sequence output:"
msgstr "Ο κόμβος επέστÏεψε μία άκυÏη ακολουθία ως έξοδο: "
#: modules/visual_script/visual_script.cpp
@@ -18040,7 +18195,8 @@ msgstr ""
"αναφέÏετε το bug!"
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+#, fuzzy
+msgid "Stack overflow with stack depth:"
msgstr "ΥπεÏχείλιση στοίβας με βάθος στοίβας: "
#: modules/visual_script/visual_script.cpp
@@ -18419,7 +18575,8 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+#, fuzzy
+msgid "Input type not iterable:"
msgstr "Δεν μποÏεί να γίνει επανάληψη στον εισηγμένο Ï„Ïπο: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18427,7 +18584,8 @@ msgid "Iterator became invalid"
msgstr "Ο επαναλήπτης έγινε άκυÏος"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+#, fuzzy
+msgid "Iterator became invalid:"
msgstr "Ο επαναλήπτης έγινε άκυÏος: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18601,11 +18759,13 @@ msgid "Operator"
msgstr "Τελεστής επικάλυψης."
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
+#, fuzzy
+msgid "Invalid argument of type:"
msgstr ": ΆκυÏη παÏάμετÏος Ï„Ïπου: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
+#, fuzzy
+msgid "Invalid arguments:"
msgstr ": ΆκυÏοι παÏάμετÏοι: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18618,11 +18778,13 @@ msgid "Var Name"
msgstr "Όνομα"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+#, fuzzy
+msgid "VariableGet not found in script:"
msgstr "Το VariableGet δεν βÏέθηκε στη δέσμη ενεÏγειών: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+#, fuzzy
+msgid "VariableSet not found in script:"
msgstr "Το VariableSet δεν βÏέθηκε στη δέσμη ενεÏγειών: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -19183,10 +19345,6 @@ msgid "Could not execute on device."
msgstr "ΑδÏνατη η δημιουÏγία φακέλου."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -19311,12 +19469,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Σήμα"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19333,6 +19495,11 @@ msgid "Could not find keystore, unable to export."
msgstr "Σφάλμα κατά το άνοιγμα Ï€ÏοτÏπου για εξαγωγή:"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "ΑδÏνατη η εκκίνηση της υπό-εÏγασίας!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -19363,7 +19530,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19375,10 +19542,9 @@ msgstr ""
"πληÏοφοÏίες έκδοσης. ΠαÏακαλοÏμε κάντε επανεγκατάσταση από το Î¼ÎµÎ½Î¿Ï Â«ÎˆÏγο»."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
"Ασυμφωνία εκδόσεων δόμησης Android:\n"
@@ -19389,11 +19555,12 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+#, fuzzy
+msgid "Could not export project files to gradle project."
msgstr "Δεν ήταν δυνατή η εξαγωγή των αÏχείων έÏγου στο gradle έÏγο\n"
#: platform/android/export/export_plugin.cpp
@@ -19406,8 +19573,9 @@ msgid "Building Android Project (gradle)"
msgstr "Δόμηση ΈÏγου Android (gradle)"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
"Αποτυχία δόμησης έÏγου Android, ελέγξτε την έξοδο για το σφάλμα.\n"
@@ -19426,7 +19594,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr "Δεν βÏέθηκε η κίνηση: «%s»"
#: platform/android/export/export_plugin.cpp
@@ -19435,17 +19603,15 @@ msgid "Creating APK..."
msgstr "ΔημιουÏγία πεÏιγÏαμμάτων..."
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+#, fuzzy
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
"Δεν βÏέθηκε Ï€Ïότυπο APK για εξαγωγή:\n"
"%s"
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -19457,7 +19623,7 @@ msgstr "ΠÏοσθήκη %s..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr "Απέτυχε η εγγÏαφή σε αÏχείο:"
#: platform/android/export/export_plugin.cpp
@@ -19698,6 +19864,17 @@ msgstr "Αποκοπή κόμβων"
msgid "Custom BG Color"
msgstr "Αποκοπή κόμβων"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "ΔιαχείÏιση ΠÏοτÏπων"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Δεν βÏέθηκε Ï€ÏοσαÏμοσμένο πακέτο διανομής."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -19721,23 +19898,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Εκτέλεση εξαγόμενης HTMP στον Ï€Ïοεπιλεγμένο πεÏιηγητή του συστήματος."
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
msgstr "Σφάλμα κατά το άνοιγμα Ï€ÏοτÏπου για εξαγωγή:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
msgstr "ΆκυÏο Ï€ÏοτÏπο εξαγωγής:"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+#, fuzzy
+msgid "Could not write file: \"%s\"."
msgstr "Απέτυχε η εγγÏαφή σε αÏχείο:"
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "ΟÏισμός ΠεÏιθωÏίου"
+
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read file:"
+msgid "Could not read file: \"%s\"."
msgstr "Απέτυχε η εγγÏαφή σε αÏχείο:"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "ΔιαχωÏισμός:"
@@ -19813,17 +20002,17 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr "Σφάλμα κατά την ανάγνωση Ï€ÏοσαÏμοσμένου κελÏφους HTML:"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr "ΑδÏνατη η δημιουÏγία φακέλου."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr "Σφάλμα κατά την αποθήκευση σκηνής."
#: platform/javascript/export/export.cpp
@@ -20123,9 +20312,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Απέτυχε η εγγÏαφή σε αÏχείο:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "ΑδÏνατη η εκκίνηση της υπό-εÏγασίας!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Τοπική Ï€ÏοσαÏμογή"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -20141,21 +20349,76 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "Δεν βÏέθηκε!"
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Σφάλμα αποθήκευσης αÏχείου: %s"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Κατευθήνσεις"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "ΑδÏνατη η εκκίνηση της υπό-εÏγασίας!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "ΔημιουÏγία μικÏογÏαφίας"
#: platform/osx/export/export.cpp
#, fuzzy
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr "Σφάλμα κατά το άνοιγμα Ï€ÏοτÏπου για εξαγωγή:"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "ΆκυÏο Ï€ÏοτÏπο εξαγωγής:"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -20163,7 +20426,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -20205,6 +20468,16 @@ msgstr ""
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "ZIP Creation"
+msgstr "ΈÏγο"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr "Δεν ήταν δυνατή η εξαγωγή των αÏχείων έÏγου στο gradle έÏγο\n"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Invalid bundle identifier:"
msgstr "ΆκυÏο ΑναγνωÏιστικό:"
@@ -20517,6 +20790,11 @@ msgid "Debug Algorithm"
msgstr "Αποσφαλματωτής"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Αδυναμία αφαίÏεσης Ï€ÏοσωÏÎ¹Î½Î¿Ï Î±Ïχείου:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20564,6 +20842,70 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Τυχαία πεÏιστÏοφή:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "Σφάλμα κατά το άνοιγμα Ï€ÏοτÏπου για εξαγωγή:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "Σφάλμα κατά το άνοιγμα Ï€ÏοτÏπου για εξαγωγή:"
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "Σφάλμα κατά το άνοιγμα Ï€ÏοτÏπου για εξαγωγή:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "Σφάλμα κατά το άνοιγμα Ï€ÏοτÏπου για εξαγωγή:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "ΆκυÏο ΑναγνωÏιστικό:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Μη έγκυÏο όνομα."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "Αδυναμία αφαίÏεσης Ï€ÏοσωÏÎ¹Î½Î¿Ï Î±Ïχείου:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20585,6 +20927,23 @@ msgid "Invalid product version:"
msgstr "ΆκυÏο GUID Ï€Ïοϊόντος."
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "ΆκυÏη επέκταση."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "Îέο ΠαÏάθυÏο"
@@ -20601,6 +20960,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20728,7 +21091,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Επιλογή απόστασης:"
@@ -21598,17 +21962,19 @@ msgstr ""
"λειτουÏγήσει αυτός ο κόμβος. ΟÏίστε μία ιδιότητα ή ζωγÏαφίστε ένα πολÏγωνο."
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-"Το NavigationPolygonInstance Ï€Ïέπει να κληÏονομεί έναν κόμβο Ï„Ïπου "
-"Navigation2D, διότι διαθέτει μόνο δεδομένα πλοήγησης."
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr ""
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "ΚέντÏο Κάτω"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "Ταξίδι"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
#, fuzzy
@@ -22853,14 +23219,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-"Ένας κόμβος Ï„Ïπου στιγμιοτÏπου πλέγματος πλοήγησης Ï€Ïέπει να κληÏονομεί έναν "
-"κόμβο Ï„Ïπου πλοήγηση, διότι διαθέτει μόνο δεδομένα πλοήγησης."
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
#, fuzzy
msgid "NavMesh"
@@ -25583,6 +25941,16 @@ msgid "3D Physics"
msgstr "KαÏέ φυσικής %"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Πλοήγηση"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Πλοήγηση"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -27009,7 +27377,7 @@ msgstr "Μετάβαση: "
msgid "Refraction"
msgstr "Διάθλαση"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -27094,7 +27462,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "Κλιμάκωση: "
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "ΟÏισμός Ï„Ïπου μεταβλητής"
#: scene/resources/navigation_mesh.cpp
@@ -27112,10 +27485,15 @@ msgid "Source Group Name"
msgstr "Πηγή"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "ΟÏίσματα κÏÏιας σκηνής:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -27125,11 +27503,16 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Regions"
+msgstr "ΠεÏιοχή"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Merge Size"
msgstr "Συγχώνευση από σκηνή"
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -27143,6 +27526,11 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Details"
+msgstr "ΦόÏτωση Ï€Ïοεπιλογής"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Sample Distance"
msgstr "Επιλογή απόστασης:"
@@ -27160,7 +27548,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -27575,6 +27963,11 @@ msgid "Scenario"
msgstr "Σκηνή"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Πλοήγηση"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -27592,6 +27985,26 @@ msgstr "ΑÏιστεÏή ΓÏαμμική"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "ΠÏοεπιλεγμένο Βήμα Κινητής Υποδιαστολής"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Ανανέωση ΠÏοεπισκόπησης"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Δοκιμαστικά"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "ΕπεξεÏγασία ΣÏνδεσης:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/en_Shaw.po b/editor/translations/en_Shaw.po
index 9e0b207e53..14388e1c66 100644
--- a/editor/translations/en_Shaw.po
+++ b/editor/translations/en_Shaw.po
@@ -203,9 +203,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr ""
@@ -311,7 +312,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "ð‘¯ð‘ªð‘‘ ð‘¦ð‘¯ð‘³ð‘“ ð‘šð‘²ð‘‘ð‘• ð‘“ ð‘›ð‘°ð‘’ð‘´ð‘›ð‘¦ð‘™ ð‘šð‘²ð‘‘ð‘•, 𑹠ð‘¦ð‘¯ð‘ð‘¨ð‘¤ð‘¦ð‘› ð‘“ð‘¹ð‘¥ð‘¨ð‘‘."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "ð‘¦ð‘¯ð‘ð‘¨ð‘¤ð‘¦ð‘› ð‘¦ð‘¯ð‘ð‘«ð‘‘ %i (ð‘¯ð‘ªð‘‘ ð‘ð‘­ð‘•ð‘‘) ð‘¦ð‘¯ ð‘¦ð‘’ð‘•ð‘ð‘®ð‘§ð‘–ð‘©ð‘¯"
#: core/math/expression.cpp
@@ -355,6 +357,15 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "ð‘’ð‘·ð‘¤ ð‘¥ð‘§ð‘”ð‘©ð‘› ð‘‘ð‘®ð‘¨ð‘’"
+
+#: core/os/input.cpp
+msgid "Use Accumulated Input"
+msgstr ""
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -535,7 +546,8 @@ msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr ""
@@ -618,24 +630,23 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-msgid "Plugin Name"
+msgid "Version Control Plugin Name"
msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
@@ -743,7 +754,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
msgid "Filters"
msgstr ""
@@ -1011,6 +1023,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "ð‘“ð‘®ð‘°"
@@ -1027,7 +1040,7 @@ msgstr "ð‘¥ð‘¦ð‘®ð‘¼"
msgid "Time:"
msgstr "ð‘‘ð‘²ð‘¥:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "ð‘ð‘¨ð‘¤ð‘¿:"
@@ -1271,10 +1284,70 @@ msgid "Remove this track."
msgstr "ð‘®ð‘¦ð‘¥ð‘µð‘ ð‘žð‘¦ð‘• ð‘‘ð‘®ð‘¨ð‘’."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "ð‘‘ð‘²ð‘¥(ð‘Ÿ): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "ð‘“ð‘³ð‘™ð‘’ð‘–ð‘©ð‘¯ð‘Ÿ:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "ð‘¦ð‘¯ð‘‘ð‘»ð‘ð‘©ð‘¤ð‘±ð‘–ð‘©ð‘¯ ð‘¥ð‘´ð‘›"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "ð‘¦ð‘¯ð‘ð‘¨ð‘¤ð‘¦ð‘› ð‘¦ð‘¯ð‘›ð‘§ð‘’ð‘• ð‘ ð‘‘ð‘²ð‘ %s ð‘“ ð‘šð‘±ð‘• ð‘‘ð‘²ð‘ %s"
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Stream:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "ð‘¦ð‘¯ð‘‘ð‘»ð‘ð‘©ð‘¤ð‘±ð‘–ð‘©ð‘¯ ð‘¥ð‘´ð‘›"
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "ð‘¨ð‘¯ð‘¦ð‘¥ð‘±ð‘–ð‘©ð‘¯ ð‘’ð‘¤ð‘¦ð‘ð‘•:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "ð‘‘ð‘ªð‘œð‘©ð‘¤ ð‘‘ð‘®ð‘¨ð‘’ ð‘¦ð‘¯ð‘±ð‘šð‘©ð‘¤ð‘›"
@@ -1481,7 +1554,7 @@ msgid "Add Method Track Key"
msgstr ""
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+msgid "Method not found in object:"
msgstr ""
#: editor/animation_track_editor.cpp
@@ -2073,7 +2146,7 @@ msgid "Open"
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
+msgid "Owners of: %s (Total: %d)"
msgstr ""
#: editor/dependency_editor.cpp
@@ -2364,7 +2437,7 @@ msgid "Bus Options"
msgstr ""
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr ""
@@ -2416,8 +2489,8 @@ msgstr ""
msgid "There is no '%s' file."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+msgid "Layout:"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -2620,6 +2693,22 @@ msgid "Choose"
msgstr ""
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed successfully."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed."
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr ""
@@ -2632,6 +2721,26 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp
+msgid "Save PCK"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Cannot create file \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed to export project files."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Can't open file to read from path \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Save ZIP"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2734,8 +2843,25 @@ msgstr ""
msgid "Custom release template not found."
msgstr ""
+#: editor/editor_export.cpp
+msgid "Prepare Template"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "The given export path doesn't exist."
+msgstr ""
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+msgid "Template file not found: \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed to copy export template."
+msgstr ""
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
msgstr ""
#: editor/editor_export.cpp
@@ -2905,9 +3031,9 @@ msgid "Import"
msgstr ""
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr ""
@@ -3983,14 +4109,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4105,6 +4223,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr ""
@@ -4132,6 +4254,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
@@ -4760,11 +4886,13 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+msgid "Page:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
@@ -4856,6 +4984,10 @@ msgid ""
"as runnable."
msgstr ""
+#: editor/editor_run_native.cpp
+msgid "Project Run"
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -5112,7 +5244,9 @@ msgid "Draw Spaces"
msgstr ""
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr ""
@@ -5646,10 +5780,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Sorting Order"
msgstr ""
@@ -6368,14 +6504,6 @@ msgid "Replace in Files"
msgstr ""
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr ""
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr ""
@@ -6502,7 +6630,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "ð‘‘ð‘ªð‘œð‘©ð‘¤ ð‘‘ð‘®ð‘¨ð‘’ ð‘¦ð‘¯ð‘±ð‘šð‘©ð‘¤ð‘›"
@@ -6745,7 +6873,7 @@ msgid "Generating Lightmaps"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+msgid "Generating for Mesh:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -6773,6 +6901,18 @@ msgid "Saving..."
msgstr ""
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7551,10 +7691,12 @@ msgstr ""
msgid "Directions"
msgstr ""
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr ""
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr ""
@@ -7709,8 +7851,9 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
-msgstr ""
+#, fuzzy
+msgid "Transition:"
+msgstr "ð‘“ð‘³ð‘™ð‘’ð‘–ð‘©ð‘¯ð‘Ÿ:"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Play Mode:"
@@ -7726,11 +7869,6 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr ""
@@ -8611,6 +8749,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr ""
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -8674,6 +8813,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -9415,7 +9558,7 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+msgid "Emission Source:"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
@@ -9645,6 +9788,7 @@ msgid "Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr ""
@@ -9798,13 +9942,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -9813,10 +9950,6 @@ msgstr ""
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -10501,13 +10634,16 @@ msgstr ""
msgid "Translate"
msgstr ""
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
+msgid "Scaling:"
msgstr ""
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "ð‘“ð‘³ð‘™ð‘’ð‘–ð‘©ð‘¯ð‘Ÿ:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -10530,11 +10666,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11009,7 +11140,7 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+msgid "Convert to MeshInstance2D"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11041,15 +11172,15 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
+msgid "Simplification:"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11967,8 +12098,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr ""
@@ -13386,31 +13516,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr ""
@@ -13544,6 +13653,10 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Project Export"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr ""
@@ -14975,7 +15088,7 @@ msgid "Attach Node Script"
msgstr ""
#: editor/script_editor_debugger.cpp
-msgid "Remote "
+msgid "Remote %s:"
msgstr ""
#: editor/script_editor_debugger.cpp
@@ -15792,7 +15905,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
msgid "Polygon"
msgstr ""
@@ -15953,7 +16066,7 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+msgid "Libraries:"
msgstr ""
#: modules/gdnative/nativescript/nativescript.cpp
@@ -16350,7 +16463,6 @@ msgid "Use In Baked Light"
msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -16376,6 +16488,18 @@ msgstr ""
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+msgid "Bake Navigation"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "ð‘ð‘¨ð‘¤ð‘¿:"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -16771,7 +16895,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -16779,7 +16903,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17140,7 +17264,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17148,7 +17272,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17302,12 +17426,14 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
+#, fuzzy
+msgid "Invalid argument of type:"
+msgstr "ð‘¦ð‘¯ð‘ð‘¨ð‘¤ð‘¦ð‘› ð‘¸ð‘œð‘˜ð‘©ð‘¥ð‘©ð‘¯ð‘‘ð‘• ð‘‘ ð‘’ð‘©ð‘¯ð‘•ð‘‘ð‘®ð‘³ð‘’ð‘‘ '%s'"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
+#, fuzzy
+msgid "Invalid arguments:"
+msgstr "ð‘¦ð‘¯ð‘ð‘¨ð‘¤ð‘¦ð‘› ð‘¸ð‘œð‘˜ð‘©ð‘¥ð‘©ð‘¯ð‘‘ð‘• ð‘‘ ð‘’ð‘©ð‘¯ð‘•ð‘‘ð‘®ð‘³ð‘’ð‘‘ '%s'"
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -17318,11 +17444,11 @@ msgid "Var Name"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+msgid "VariableGet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+msgid "VariableSet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
@@ -17810,10 +17936,6 @@ msgid "Could not execute on device."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -17917,12 +18039,15 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Code Signing"
+msgstr ""
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -17938,6 +18063,10 @@ msgid "Could not find keystore, unable to export."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Could not start apksigner executable."
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -17966,7 +18095,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -17977,19 +18106,17 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+msgid "Could not export project files to gradle project."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18002,7 +18129,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -18017,7 +18144,7 @@ msgid ""
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18025,15 +18152,12 @@ msgid "Creating APK..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -18043,7 +18167,7 @@ msgid "Adding files..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18270,6 +18394,15 @@ msgstr "ð‘“ð‘³ð‘™ð‘’ð‘–ð‘©ð‘¯ð‘Ÿ:"
msgid "Custom BG Color"
msgstr "ð‘“ð‘³ð‘™ð‘’ð‘–ð‘©ð‘¯ð‘Ÿ:"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+msgid "Prepare Templates"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Export template not found."
+msgstr ""
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18291,19 +18424,29 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Could not open template for export: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
+msgstr "ð‘¦ð‘¯ð‘ð‘¨ð‘¤ð‘¦ð‘› ð‘¦ð‘¯ð‘›ð‘§ð‘’ð‘• ð‘ ð‘‘ð‘²ð‘ %s ð‘“ ð‘šð‘±ð‘• ð‘‘ð‘²ð‘ %s"
+
+#: platform/javascript/export/export.cpp
+msgid "Could not write file: \"%s\"."
msgstr ""
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "ð‘“ð‘³ð‘™ð‘’ð‘–ð‘©ð‘¯ð‘Ÿ:"
+
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not read file: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+msgid "PWA"
msgstr ""
#: platform/javascript/export/export.cpp
@@ -18376,15 +18519,15 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr ""
#: platform/javascript/export/export.cpp
@@ -18654,9 +18797,26 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Could not open icon file \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Could not start xcrun executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "ð‘¦ð‘¯ð‘‘ð‘»ð‘ð‘©ð‘¤ð‘±ð‘–ð‘©ð‘¯ ð‘¥ð‘´ð‘›"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -18672,18 +18832,71 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
msgid "No identity found."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Cannot sign file %s."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "ð‘“ð‘³ð‘™ð‘’ð‘–ð‘©ð‘¯ð‘Ÿ:"
+
+#: platform/osx/export/export.cpp
+msgid "Could not start hdiutil executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Creating app bundle"
msgstr ""
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "3-ð‘› ð‘‘ð‘®ð‘¨ð‘¯ð‘•ð‘“ð‘¹ð‘¥ ð‘‘ð‘®ð‘¨ð‘’"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -18691,7 +18904,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -18732,6 +18945,14 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+msgid "ZIP Creation"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr ""
@@ -19027,6 +19248,10 @@ msgid "Debug Algorithm"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Failed to rename temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -19067,6 +19292,63 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Resources Modification"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "ð‘¦ð‘¯ð‘ð‘¨ð‘¤ð‘¦ð‘› ð‘¸ð‘œð‘˜ð‘©ð‘¥ð‘©ð‘¯ð‘‘ð‘• ð‘‘ ð‘’ð‘©ð‘¯ð‘•ð‘‘ð‘®ð‘³ð‘’ð‘‘ '%s'"
+
+#: platform/windows/export/export.cpp
+msgid "Invalid timestamp server."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Failed to remove temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19085,6 +19367,22 @@ msgid "Invalid product version:"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Failed to open executable file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Windows"
msgstr ""
@@ -19100,6 +19398,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
msgid "Frames"
@@ -19210,7 +19512,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
@@ -19964,13 +20267,15 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
+msgid "Navpoly"
msgstr ""
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Enter Cost"
+msgstr ""
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Travel Cost"
msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
@@ -21044,12 +21349,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -23462,6 +23761,16 @@ msgid "3D Physics"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "ð‘¦ð‘¯ð‘‘ð‘»ð‘ð‘©ð‘¤ð‘±ð‘–ð‘©ð‘¯ ð‘¥ð‘´ð‘›"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "ð‘¦ð‘¯ð‘‘ð‘»ð‘ð‘©ð‘¤ð‘±ð‘–ð‘©ð‘¯ ð‘¥ð‘´ð‘›"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -24726,7 +25035,7 @@ msgstr ""
msgid "Refraction"
msgstr ""
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -24802,10 +25111,15 @@ msgid "Visible Instance Count"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Sample Partition Type"
+msgid "Sampling"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
+msgstr "ð‘¦ð‘¯ð‘‘ð‘»ð‘ð‘©ð‘¤ð‘±ð‘–ð‘©ð‘¯ ð‘¥ð‘´ð‘›"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Parsed Geometry Type"
msgstr ""
@@ -24818,7 +25132,11 @@ msgid "Source Group Name"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
+msgid "Agents"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -24830,11 +25148,15 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+msgid "Regions"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -24847,6 +25169,10 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+msgid "Details"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -24863,7 +25189,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -25231,6 +25557,11 @@ msgid "Scenario"
msgstr ""
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "ð‘¦ð‘¯ð‘‘ð‘»ð‘ð‘©ð‘¤ð‘±ð‘–ð‘©ð‘¯ ð‘¥ð‘´ð‘›"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -25246,6 +25577,26 @@ msgstr ""
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "ð‘ð‘¨ð‘¤ð‘¿:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "ð‘ð‘¨ð‘¤ð‘¿:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "ð‘ð‘¨ð‘¤ð‘¿:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "ð‘“ð‘³ð‘™ð‘’ð‘–ð‘©ð‘¯ð‘Ÿ:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/eo.po b/editor/translations/eo.po
index 3ecc0d5fab..46e8f898ce 100644
--- a/editor/translations/eo.po
+++ b/editor/translations/eo.po
@@ -14,42 +14,41 @@
# mourning20s <mourning20s@protonmail.com>, 2021.
# Manuel González <mgoopazo@gmail.com>, 2021.
# Wang Tseryui <2251439097@qq.com>, 2021.
+# Kedr <lava20121991@gmail.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2021-10-06 00:12+0000\n"
-"Last-Translator: Manuel González <mgoopazo@gmail.com>\n"
+"PO-Revision-Date: 2022-06-03 02:51+0000\n"
+"Last-Translator: Kedr <lava20121991@gmail.com>\n"
"Language-Team: Esperanto <https://hosted.weblate.org/projects/godot-engine/"
"godot/eo/>\n"
"Language: eo\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.9-dev\n"
+"X-Generator: Weblate 4.13-dev\n"
#: core/bind/core_bind.cpp main/main.cpp
+#, fuzzy
msgid "Tablet Driver"
-msgstr ""
+msgstr "Pelilo de tabulo"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Clipboard"
-msgstr "La tondujo estas malplena!"
+msgstr "Tondujo"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Current Screen"
-msgstr "Aktuala sceno"
+msgstr "Kuranta ekrano"
#: core/bind/core_bind.cpp
msgid "Exit Code"
-msgstr ""
+msgstr "Kodo de eliro"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "V-Sync Enabled"
-msgstr "Åœaltita"
+msgstr "V-sync Åaltita"
#: core/bind/core_bind.cpp main/main.cpp
msgid "V-Sync Via Compositor"
@@ -232,9 +231,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
#, fuzzy
msgid "Network"
msgstr "Reta Profililo"
@@ -348,7 +348,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Ne sufiĉas bitokoj por malĉifri bitokojn, aŭ nevalida formo."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "Nevalida enigo %i (ne pasitis) en esprimo"
#: core/math/expression.cpp
@@ -393,6 +394,15 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Movada reÄimo"
+
+#: core/os/input.cpp
+msgid "Use Accumulated Input"
+msgstr ""
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -592,7 +602,8 @@ msgstr "Priskribo"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "Ruli"
@@ -680,6 +691,11 @@ msgid "Main Run Args"
msgstr "Parametroj de ĉefa sceno:"
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Scena dosierindiko:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -687,19 +703,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Versikontrolo"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Versikontrolo"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Nomo de kromprogramon:"
+msgid "Version Control Plugin Name"
+msgstr "Versikontrolo"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -819,7 +831,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "Filtriloj:"
@@ -1101,6 +1114,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Senkosta"
@@ -1117,7 +1131,7 @@ msgstr "Spegulo"
msgid "Time:"
msgstr "Tempo:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Valoro:"
@@ -1366,10 +1380,74 @@ msgid "Remove this track."
msgstr "Forigi ĉi tiun trakon."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "Fojo (s): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Pozicio de doko"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Rotacia paÅo:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "Skalo:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Nevalida kromprogramo."
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Easing:"
+msgstr "Averto:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "In-Handle:"
+msgstr "Defini stirilon"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Out-Handle:"
+msgstr "Defini stirilon"
+
+#: editor/animation_track_editor.cpp
+msgid "Stream:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Komenci"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "End (s):"
+msgstr "Maldissolvo (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Animado Filmitaĵero:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "Åœalti/malÅalti trakon"
@@ -1582,7 +1660,8 @@ msgid "Add Method Track Key"
msgstr "Aldoni metodan trakan Ålosilon"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "Metodon ne trovis en objekto: "
#: editor/animation_track_editor.cpp
@@ -2194,8 +2273,8 @@ msgid "Open"
msgstr "Malfermi"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Proprietuloj de:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
msgid ""
@@ -2500,7 +2579,7 @@ msgid "Bus Options"
msgstr "Agordoj de buso"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Duobligi"
@@ -2552,8 +2631,9 @@ msgstr "Malfermi aranÄon de aÅ­dia buso"
msgid "There is no '%s' file."
msgstr "Estas neniu dosiero '%s'."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "AranÄo"
#: editor/editor_audio_buses.cpp
@@ -2758,6 +2838,24 @@ msgid "Choose"
msgstr "Elekti"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "Pakaĵo instalis sukcese!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "Eraris:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Memoras dosieron:"
@@ -2770,6 +2868,31 @@ msgid "Packing"
msgstr "Pakas"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Konservi kiel"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "Ne povis krei dosierujon."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Ne eble komencas subprocezon!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Ne malfermeblas dosieron por skribi:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Konservi kiel"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2889,11 +3012,32 @@ msgstr "Propra sencimiga Åablonon ne trovitis."
msgid "Custom release template not found."
msgstr "Propra eldona Åablono ne trovitis."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "Åœablono:"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "La provizinta dosierindiko ne ekzistas."
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "Åœablonan dosieron ne trovis:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "Ne eblas malfermi ZIP de eksportaj Åablonoj."
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr ""
"Sur 32-bita eksportoj la enigita PCK ne eblas esti pli granda ol 4 GiB."
@@ -3065,9 +3209,9 @@ msgid "Import"
msgstr "Enporti"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Eksporti"
@@ -4232,15 +4376,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Sceno"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Scena dosierindiko:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4369,6 +4504,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Versikontrolo"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Renomi"
@@ -4397,6 +4536,10 @@ msgstr "Baskuli sendistran reÄimon."
msgid "Add a new scene."
msgstr "Aldoni novan scenon."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Sceno"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Iri al antaÅ­e malfermitan scenon."
@@ -5074,11 +5217,15 @@ msgid "Selected node is not a Viewport!"
msgstr "Elektinta nodo ne estas Viewport!"
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#, fuzzy
+msgid "Size:"
msgstr "Grando: "
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+#, fuzzy
+msgid "Page:"
msgstr "PaÄo: "
#: editor/editor_properties_array_dict.cpp
@@ -5180,6 +5327,11 @@ msgstr ""
"Bonvolu aldoni ruleblan antaÅ­agordon per la Eksporto menuo aÅ­ defini "
"ekzistantan antaÅ­agordon kiel rulebla."
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Projekto"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Skribu vian logikon en la _run() metodo."
@@ -5461,7 +5613,9 @@ msgid "Draw Spaces"
msgstr "Alvokoj"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
#, fuzzy
msgid "Navigation"
msgstr "Videbla navigacio"
@@ -6045,10 +6199,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Mastrumilo de Projektoj"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -6840,14 +6996,6 @@ msgid "Replace in Files"
msgstr "Anstataŭigi Ĉiujn"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "Trovi: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "AnstataÅ­igi: "
-
-#: editor/find_in_files.cpp
#, fuzzy
msgid "Replace All (NO UNDO)"
msgstr "Anstataŭigi Ĉiujn"
@@ -6977,7 +7125,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Filtriloj:"
@@ -7244,7 +7392,8 @@ msgid "Generating Lightmaps"
msgstr "Naskas lummapojn"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+#, fuzzy
+msgid "Generating for Mesh:"
msgstr "Naskas por maÅo: "
#: editor/import/resource_importer_scene.cpp
@@ -7272,6 +7421,18 @@ msgid "Saving..."
msgstr "Konservas..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -8089,10 +8250,12 @@ msgstr "Cepo-haÅ­tadaj opcioj"
msgid "Directions"
msgstr "Direktoj"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "Pasinteco"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "Estonteco"
@@ -8253,7 +8416,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr "Difinu la finan animacion. Tio ĉi estas utila por sub-transpasoj."
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
+#, fuzzy
+msgid "Transition:"
msgstr "Transpaso: "
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8270,11 +8434,6 @@ msgid "New name:"
msgstr "Nova nomo:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "Skalo:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "Maldissolvo (s):"
@@ -9187,6 +9346,7 @@ msgstr "Krei propra(j)n osto(j)n el nodo(j)"
msgid "Clear Custom Bones"
msgstr "Vakigi proprajn ostojn"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9252,6 +9412,10 @@ msgid "Preview Canvas Scale"
msgstr "AntaÅ­vidi la skalon de kanvaso"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "AranÄo"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr "Translacia masko por enmeti Ålosilojn."
@@ -10029,8 +10193,9 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr ""
+#, fuzzy
+msgid "Emission Source:"
+msgstr "Emisia masko"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
@@ -10259,6 +10424,7 @@ msgid "Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr ""
@@ -10413,13 +10579,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr "Malfermi en la Redaktilo"
@@ -10428,10 +10587,6 @@ msgstr "Malfermi en la Redaktilo"
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -11138,13 +11293,17 @@ msgstr "Rotaciada reÄimo"
msgid "Translate"
msgstr "Tradukoj"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr ""
+#, fuzzy
+msgid "Scaling:"
+msgstr "Skalo:"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "Tradukoj:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -11167,12 +11326,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
-msgid "Size:"
-msgstr "Grando: "
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11664,8 +11817,9 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
-msgstr ""
+#, fuzzy
+msgid "Convert to MeshInstance2D"
+msgstr "Konverti al CPUParticles2D"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Invalid geometry, can't create polygon."
@@ -11696,16 +11850,19 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "Faro"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
-msgstr ""
+#, fuzzy
+msgid "Shrink (Pixels):"
+msgstr "Solidaj rastumeroj"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
-msgstr ""
+#, fuzzy
+msgid "Grow (Pixels):"
+msgstr "Solidaj rastumeroj"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Update Preview"
@@ -12693,8 +12850,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr ""
@@ -14153,31 +14309,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr ""
@@ -14316,6 +14451,11 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Fondintoj de la Projekto"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "Mastrumi eksportaj Åablonoj"
@@ -15822,7 +15962,8 @@ msgid "Attach Node Script"
msgstr "Alligi Noda Skripto"
#: editor/script_editor_debugger.cpp
-msgid "Remote "
+#, fuzzy
+msgid "Remote %s:"
msgstr "Fora "
#: editor/script_editor_debugger.cpp
@@ -16694,7 +16835,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "Redakti plurlateron"
@@ -16870,7 +17011,7 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+msgid "Libraries:"
msgstr ""
#: modules/gdnative/nativescript/nativescript.cpp
@@ -17307,7 +17448,6 @@ msgid "Use In Baked Light"
msgstr "Baki lummapojn"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17337,6 +17477,19 @@ msgstr "Centre"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Videbla navigacio"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Videbla navigacio"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -17745,7 +17898,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17753,7 +17906,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -18131,7 +18284,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18139,7 +18292,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18309,12 +18462,14 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
+#, fuzzy
+msgid "Invalid argument of type:"
+msgstr "Malvalidaj argumentoj por konstrui '%s'"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
+#, fuzzy
+msgid "Invalid arguments:"
+msgstr "Malvalida nomo."
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -18326,12 +18481,14 @@ msgid "Var Name"
msgstr "Nomo"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableGet not found in script:"
+msgstr "Metodon ne trovis en objekto: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableSet not found in script:"
+msgstr "Metodon ne trovis en objekto: "
#: modules/visual_script/visual_script_nodes.cpp
#, fuzzy
@@ -18880,10 +19037,6 @@ msgid "Could not execute on device."
msgstr "Ne povis krei dosierujon."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18987,12 +19140,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Signalo"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19011,6 +19168,11 @@ msgid "Could not find keystore, unable to export."
msgstr ""
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "Ne eble komencas subprocezon!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -19040,7 +19202,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19051,20 +19213,18 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Could not export project files to gradle project\n"
+msgid "Could not export project files to gradle project."
msgstr "Ne eblas redakti project.godot en projekta dosierindiko."
#: platform/android/export/export_plugin.cpp
@@ -19077,7 +19237,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -19093,7 +19253,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr "Enhavo de pakaĵo:"
#: platform/android/export/export_plugin.cpp
@@ -19102,15 +19262,13 @@ msgid "Creating APK..."
msgstr "Konektas..."
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
-msgstr ""
+#, fuzzy
+msgid "Could not find template APK to export: \"%s\"."
+msgstr "Ne eble komencas subprocezon!"
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -19122,7 +19280,7 @@ msgstr "Aldonas %s..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr "Ne eble komencas subprocezon!"
#: platform/android/export/export_plugin.cpp
@@ -19364,6 +19522,17 @@ msgstr "Eltondi nodo(j)n"
msgid "Custom BG Color"
msgstr "Eltondi nodo(j)n"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "Mastrumi eksportaj Åablonoj"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Propra eldona Åablono ne trovitis."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -19385,23 +19554,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
-msgstr ""
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
+msgstr "Ne povis krei dosierujon."
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
-msgstr ""
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
+msgstr "Nevalida kromprogramo."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr ""
+#, fuzzy
+msgid "Could not write file: \"%s\"."
+msgstr "Ne povis krei dosierujon."
+
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Enhavo:"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read file:"
+msgid "Could not read file: \"%s\"."
msgstr "Ne povis krei dosierujon."
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "Versio:"
@@ -19477,17 +19658,17 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr "Ne povis krei dosierujon."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr "Ne povis krei dosierujon."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr "Eraras konservi TileSet!"
#: platform/javascript/export/export.cpp
@@ -19784,9 +19965,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Ne eble komencas subprocezon!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "Ne eble komencas subprocezon!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Lokaĵigado"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19802,18 +20002,74 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "Ne sub-risurcojn trovis."
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Eraris konservi dosieron: %s"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Direktoj"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "Ne eble komencas subprocezon!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "Kreas bildeton"
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
-msgstr ""
+#, fuzzy
+msgid "Could not find template app to export: \"%s\"."
+msgstr "Ne eble komencas subprocezon!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Malvalida baza dosierindiko."
#: platform/osx/export/export.cpp
msgid ""
@@ -19823,7 +20079,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -19864,6 +20120,16 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "Projekto"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr "Ne eblas redakti project.godot en projekta dosierindiko."
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr ""
@@ -20174,6 +20440,11 @@ msgid "Debug Algorithm"
msgstr "Sencimigilo"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Ne eblas forigi provizoran dosieron:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20221,6 +20492,66 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Alglui animacion"
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Malvalidaj argumentoj por konstrui '%s'"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Malvalida nomo."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "Ne eblas forigi provizoran dosieron:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20242,6 +20573,23 @@ msgid "Invalid product version:"
msgstr "Nevalida nomo de projekto."
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Nevalida kromprogramo."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "Nova Fenestro"
@@ -20258,6 +20606,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20382,7 +20734,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Ekzemplodoni"
@@ -21203,15 +21556,19 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr ""
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Centre malsupre"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "VojaÄa"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
#, fuzzy
@@ -22374,12 +22731,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
#, fuzzy
msgid "NavMesh"
@@ -25024,6 +25375,16 @@ msgid "3D Physics"
msgstr "Fiziko-kadro %"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Videbla navigacio"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Videbla navigacio"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -26436,7 +26797,7 @@ msgstr "Transpaso: "
msgid "Refraction"
msgstr "Versio:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -26518,7 +26879,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "Skalo:"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "ÅœanÄu la tipon de %s"
#: scene/resources/navigation_mesh.cpp
@@ -26535,10 +26901,15 @@ msgid "Source Group Name"
msgstr "Fonto"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "Parametroj de ĉefa sceno:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -26548,11 +26919,16 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Regions"
+msgstr "Malfermi lastaj"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Merge Size"
msgstr "Kunigi el sceno"
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26565,6 +26941,11 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Details"
+msgstr "Åœargi defaÅ­lton"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -26581,7 +26962,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -26991,6 +27372,11 @@ msgid "Scenario"
msgstr "Sceno"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Videbla navigacio"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -27008,6 +27394,26 @@ msgstr "Lineara maldekstro"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "DefaÅ­lto"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "DefaÅ­lto"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Testada"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Redakti Konekton:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/es.po b/editor/translations/es.po
index 2d7c46ae36..d419b78e4b 100644
--- a/editor/translations/es.po
+++ b/editor/translations/es.po
@@ -78,12 +78,13 @@
# Luis Alberto Flores Baca <betofloresbaca@gmail.com>, 2022.
# losfroger <emilioranita@gmail.com>, 2022.
# Ventura Pérez García <vetu@protonmail.com>, 2022.
+# David Martínez <goddrinksjava@gmail.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-05-27 16:15+0000\n"
+"PO-Revision-Date: 2022-06-19 11:52+0000\n"
"Last-Translator: Javier Ocampos <xavier.ocampos@gmail.com>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/"
"godot/es/>\n"
@@ -92,7 +93,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.13-dev\n"
+"X-Generator: Weblate 4.13.1-dev\n"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
@@ -276,9 +277,10 @@ msgid "Data"
msgstr "Datos"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr "Red"
@@ -348,7 +350,7 @@ msgstr "Tamaño Máximo del Buffer de Salida"
#: core/io/packet_peer.cpp
msgid "Stream Peer"
-msgstr "Stream Peer"
+msgstr "Stream de Pares"
#: core/io/stream_peer.cpp
msgid "Big Endian"
@@ -385,7 +387,8 @@ msgstr ""
"inválido."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "Entrada inválida %i (no aprobada) en la expresión"
#: core/math/expression.cpp
@@ -429,6 +432,16 @@ msgstr "Cola de Mensajes"
msgid "Max Size (KB)"
msgstr "Tamaño Máximo (KB)"
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Modo de Movimiento"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "Eliminar entrada"
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -608,7 +621,8 @@ msgstr "Descripción"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "Ejecutar"
@@ -640,15 +654,14 @@ msgstr "Nombre de Directorio de Usuario Personalizado"
#: core/project_settings.cpp main/main.cpp
#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
#: platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Display"
-msgstr "Mostrar Todos"
+msgstr "Monitor"
#: core/project_settings.cpp main/main.cpp modules/csg/csg_shape.cpp
#: modules/opensimplex/noise_texture.cpp scene/2d/line_2d.cpp
#: scene/3d/label_3d.cpp scene/gui/text_edit.cpp scene/resources/texture.cpp
msgid "Width"
-msgstr ""
+msgstr "Anchura"
#: core/project_settings.cpp main/main.cpp modules/csg/csg_shape.cpp
#: modules/gltf/gltf_node.cpp modules/opensimplex/noise_texture.cpp
@@ -656,23 +669,20 @@ msgstr ""
#: scene/resources/capsule_shape_2d.cpp scene/resources/cylinder_shape.cpp
#: scene/resources/font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/texture.cpp
-#, fuzzy
msgid "Height"
-msgstr "Luz"
+msgstr "Altura"
#: core/project_settings.cpp
msgid "Always On Top"
-msgstr ""
+msgstr "Siempre Visible"
#: core/project_settings.cpp
-#, fuzzy
msgid "Test Width"
-msgstr "Ancho Izquierda"
+msgstr "Anchura de Prueba"
#: core/project_settings.cpp
-#, fuzzy
msgid "Test Height"
-msgstr "Prueba"
+msgstr "Altura de Prueba"
#: core/project_settings.cpp editor/animation_track_editor.cpp
#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
@@ -695,6 +705,10 @@ msgid "Main Run Args"
msgstr "Argumentos de la Ejecución Principal"
#: core/project_settings.cpp
+msgid "Scene Naming"
+msgstr "Nombres de Escenas"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr "Buscar En Extensiones de Archivos"
@@ -702,18 +716,15 @@ msgstr "Buscar En Extensiones de Archivos"
msgid "Script Templates Search Path"
msgstr "Ruta de Búsqueda de Plantillas de Scripts"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Control de Versiones"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+#, fuzzy
+msgid "Version Control Autoload On Startup"
msgstr "Cargar automáticamente al inicio"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Nombre del Plugin"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Control de Versiones"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -820,7 +831,8 @@ msgid "Quality"
msgstr "Calidad"
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
msgid "Filters"
msgstr "Filtros"
@@ -904,7 +916,7 @@ msgstr "Tiempo de Espera de Conexión en Segundos"
#: core/register_core_types.cpp
msgid "Packet Peer Stream"
-msgstr "Packet Peer Stream"
+msgstr "Stream de Paquetes de Pares"
#: core/register_core_types.cpp
msgid "Max Buffer (Power of 2)"
@@ -1077,7 +1089,7 @@ msgstr "Ponderar Muestras"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Voxel Cone Tracing"
-msgstr "Voxel Cone Tracing"
+msgstr "Trazado de Conos de Vóxeles"
#: drivers/gles3/rasterizer_scene_gles3.cpp scene/resources/environment.cpp
msgid "High Quality"
@@ -1087,6 +1099,7 @@ msgstr "Calidad Alta"
msgid "Blend Shape Max Buffer Size (KB)"
msgstr "Tamaño Máximo del Búfer de Blend Shape"
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Libre"
@@ -1103,7 +1116,7 @@ msgstr "Reflejar"
msgid "Time:"
msgstr "Tiempo:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Valor:"
@@ -1158,9 +1171,8 @@ msgstr "Cambiar Llamada de Animación"
#: editor/animation_track_editor.cpp scene/2d/animated_sprite.cpp
#: scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Frame"
-msgstr "Fotograma %"
+msgstr "Fotograma"
#: editor/animation_track_editor.cpp editor/editor_profiler.cpp
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
@@ -1171,9 +1183,8 @@ msgstr "Tiempo"
#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: platform/osx/export/export.cpp
-#, fuzzy
msgid "Location"
-msgstr "Traducciones"
+msgstr "Ubicación"
#: editor/animation_track_editor.cpp modules/gltf/gltf_node.cpp
#: scene/2d/polygon_2d.cpp scene/2d/remote_transform_2d.cpp
@@ -1187,14 +1198,13 @@ msgid "Value"
msgstr "Valor"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Arg Count"
-msgstr "Cuenta"
+msgstr "Conteo de Argumentos"
#: editor/animation_track_editor.cpp main/main.cpp
#: modules/mono/mono_gd/gd_mono.cpp
msgid "Args"
-msgstr ""
+msgstr "Argumentos"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
#: editor/script_editor_debugger.cpp modules/gltf/gltf_accessor.cpp
@@ -1221,14 +1231,12 @@ msgid "Stream"
msgstr ""
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Start Offset"
-msgstr "Pivote de Desplazamiento"
+msgstr "Desplazamiento de Inicio"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "End Offset"
-msgstr "Desplazamiento H"
+msgstr "Desplazamiento Final"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
#: editor/import/resource_importer_scene.cpp
@@ -1352,8 +1360,65 @@ msgid "Remove this track."
msgstr "Eliminar esta pista."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
-msgstr "Tiempo (s): "
+msgid "Time (s):"
+msgstr "Tiempo (s):"
+
+#: editor/animation_track_editor.cpp
+msgid "Position:"
+msgstr "Posición:"
+
+#: editor/animation_track_editor.cpp
+msgid "Rotation:"
+msgstr "Rotación:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "Escala:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "Tipo:"
+
+#: editor/animation_track_editor.cpp
+msgid "(Invalid, expected type: %s)"
+msgstr "(Inválido, tipo esperado: %s)"
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr "Relajación:"
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr "In-Handle:"
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr "Out-Handle:"
+
+#: editor/animation_track_editor.cpp
+msgid "Stream:"
+msgstr "Stream:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Reiniciar (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "End (s):"
+msgstr "Fundido de entrada (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Animaciones:"
#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
@@ -1570,8 +1635,8 @@ msgid "Add Method Track Key"
msgstr "Añadir Clave de Pista de Método"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
-msgstr "Método no encontrado en el objeto: "
+msgid "Method not found in object:"
+msgstr "Método no encontrado en el objeto:"
#: editor/animation_track_editor.cpp
msgid "Anim Move Keys"
@@ -1657,7 +1722,7 @@ msgstr "Agrupar las pistas por nodo o mostrarlas como una lista plana."
#: editor/animation_track_editor.cpp
msgid "Snap:"
-msgstr "Ajuste:"
+msgstr "Snap:"
#: editor/animation_track_editor.cpp
msgid "Animation step value."
@@ -2183,8 +2248,8 @@ msgid "Open"
msgstr "Abrir"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Propietarios De:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
msgid ""
@@ -2488,7 +2553,7 @@ msgid "Bus Options"
msgstr "Opciones de Bus"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Duplicar"
@@ -2540,9 +2605,9 @@ msgstr "Abrir Layout de Bus de Audio"
msgid "There is no '%s' file."
msgstr "No hay ningún archivo `%s'."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
-msgstr "Layout"
+#: editor/editor_audio_buses.cpp
+msgid "Layout:"
+msgstr "Layout:"
#: editor/editor_audio_buses.cpp
msgid "Invalid file, not an audio bus layout."
@@ -2744,6 +2809,23 @@ msgid "Choose"
msgstr "Elegir"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr "Completado con errores."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "Completado con éxito."
+
+#: editor/editor_export.cpp
+msgid "Failed."
+msgstr "Falló."
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Archivo de Almacenamiento:"
@@ -2757,6 +2839,29 @@ msgid "Packing"
msgstr "Empaquetando"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Guardar Como"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "No se pudo crear la carpeta."
+
+#: editor/editor_export.cpp
+msgid "Failed to export project files."
+msgstr "Fallo en la exportación de los archivos del proyecto."
+
+#: editor/editor_export.cpp
+msgid "Can't open file to read from path \"%s\"."
+msgstr "No se puede abrir el archivo a leer de la ruta \"%s\"."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Guardar Como"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2874,9 +2979,28 @@ msgstr "No se encontró la plantilla de depuración personalizada."
msgid "Custom release template not found."
msgstr "Plantilla release personalizada no encontrada."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "Administrar Plantillas"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "The given export path doesn't exist."
+msgstr "La ruta de exportación proporcionada no existe."
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
-msgstr "Archivo de plantilla no encontrado:"
+msgid "Template file not found: \"%s\"."
+msgstr "Archivo de plantilla no encontrado: \"%s\"."
+
+#: editor/editor_export.cpp
+msgid "Failed to copy export template."
+msgstr "Fallo al copiar la plantilla de exportación."
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+#, fuzzy
+msgid "PCK Embedding"
+msgstr "Relleno"
#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
@@ -3057,9 +3181,9 @@ msgid "Import"
msgstr "Importar"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Exportar"
@@ -4213,14 +4337,6 @@ msgstr ""
"No se puede escribir en el archivo '%s', archivo en uso, bloqueado o sin "
"permisos."
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Escena"
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr "Nombres de Escenas"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4335,6 +4451,10 @@ msgid "Default Color Picker Mode"
msgstr "Modo De Selección De Color Por Defecto"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Control de Versiones"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "Nombre de usuario"
@@ -4362,6 +4482,10 @@ msgstr "Act./Desact. modo sin distracciones."
msgid "Add a new scene."
msgstr "Añadir nueva escena."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Escena"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Ir a la escena abierta previamente."
@@ -5052,12 +5176,14 @@ msgid "Selected node is not a Viewport!"
msgstr "¡El nodo seleccionado no es un Viewport!"
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr "Tamaño: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
+msgstr "Tamaño:"
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr "Página: "
+msgid "Page:"
+msgstr "Página:"
#: editor/editor_properties_array_dict.cpp
#: editor/plugins/theme_editor_plugin.cpp
@@ -5154,6 +5280,11 @@ msgstr ""
"Por favor, añade un preset ejecutable en el menú de exportación o define un "
"preset existente como ejecutable."
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Proyecto"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Escribe tu lógica en el método _run()."
@@ -5358,9 +5489,8 @@ msgid "Subresource Hue Tint"
msgstr "Sub-Recursos"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Color Theme"
-msgstr "Editor de Themes"
+msgstr "Tema de Color"
#: editor/editor_settings.cpp scene/3d/label_3d.cpp
#: scene/resources/default_theme/default_theme.cpp
@@ -5386,7 +5516,7 @@ msgstr "Resaltar la Línea Actual"
#: editor/editor_settings.cpp editor/plugins/script_text_editor.cpp
msgid "Highlight Type Safe Lines"
-msgstr ""
+msgstr "Resaltar Líneas con Tipado Seguro"
#: editor/editor_settings.cpp
msgid "Indent"
@@ -5397,9 +5527,8 @@ msgid "Auto Indent"
msgstr "Auto Sangría"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Convert Indent On Save"
-msgstr "Convertir Sangría en Espacios"
+msgstr "Convertir Sangría al Guardar"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
msgid "Draw Tabs"
@@ -5410,7 +5539,9 @@ msgid "Draw Spaces"
msgstr "Dibujar Espacios"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr "Navegación"
@@ -5448,32 +5579,31 @@ msgstr "Números de Línea con Cero Relleno"
#: editor/editor_settings.cpp
msgid "Show Bookmark Gutter"
-msgstr ""
+msgstr "Mostrar Margen de Marcador"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Show Breakpoint Gutter"
-msgstr "Saltar Breakpoints"
+msgstr "Mostrar Margen de Puntos de Interrupción"
#: editor/editor_settings.cpp
msgid "Show Info Gutter"
-msgstr ""
+msgstr "Mostrar Margen de Información"
#: editor/editor_settings.cpp
msgid "Code Folding"
-msgstr ""
+msgstr "Plegado de Código"
#: editor/editor_settings.cpp
msgid "Word Wrap"
-msgstr ""
+msgstr "Ajuste de Palabras"
#: editor/editor_settings.cpp
msgid "Show Line Length Guidelines"
-msgstr ""
+msgstr "Mostrar Guías de Longitud de Línea"
#: editor/editor_settings.cpp
msgid "Line Length Guideline Soft Column"
-msgstr ""
+msgstr "Directriz de longitud de Línea de Columna Flexible"
#: editor/editor_settings.cpp
msgid "Line Length Guideline Hard Column"
@@ -5485,7 +5615,7 @@ msgstr "Lista de Scripts"
#: editor/editor_settings.cpp
msgid "Show Members Overview"
-msgstr ""
+msgstr "Mostrar Vista General de Miembros"
#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
msgid "Files"
@@ -5497,19 +5627,19 @@ msgstr "Eliminar Espacios Sobrantes al Guardar"
#: editor/editor_settings.cpp
msgid "Autosave Interval Secs"
-msgstr ""
+msgstr "Segundos de Intervalo de Autoguardado"
#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
msgid "Restore Scripts On Load"
-msgstr ""
+msgstr "Restablecer Scripts al Cargar"
#: editor/editor_settings.cpp
msgid "Auto Reload And Parse Scripts On Save"
-msgstr ""
+msgstr "Recarga Automática y Análisis de Scripts al Guardar"
#: editor/editor_settings.cpp
msgid "Auto Reload Scripts On External Change"
-msgstr ""
+msgstr "Recarga Automática de Scripts en Caso de Cambio Externo"
#: editor/editor_settings.cpp
msgid "Create Signal Callbacks"
@@ -5517,27 +5647,27 @@ msgstr "Crear Llamadas de la Señal"
#: editor/editor_settings.cpp
msgid "Sort Members Outline Alphabetically"
-msgstr ""
+msgstr "Ordenar el Esquema de Miembros Alfabéticamente"
#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
msgid "Cursor"
-msgstr ""
+msgstr "Cursor"
#: editor/editor_settings.cpp
msgid "Scroll Past End Of File"
-msgstr ""
+msgstr "Desplazarse Más Allá del Final del Archivo"
#: editor/editor_settings.cpp
msgid "Block Caret"
-msgstr ""
+msgstr "Caret de Bloque"
#: editor/editor_settings.cpp
msgid "Caret Blink"
-msgstr ""
+msgstr "Parpadeo de Caret"
#: editor/editor_settings.cpp
msgid "Caret Blink Speed"
-msgstr ""
+msgstr "Velocidad de Parpadeo de Caret"
#: editor/editor_settings.cpp
msgid "Right Click Moves Caret"
@@ -5551,32 +5681,31 @@ msgstr "Completar"
#: editor/editor_settings.cpp
msgid "Idle Parse Delay"
-msgstr ""
+msgstr "Espera de Análisis Después de Inactividad"
#: editor/editor_settings.cpp
msgid "Auto Brace Complete"
-msgstr ""
+msgstr "Autocompletar Paréntesis"
#: editor/editor_settings.cpp
msgid "Code Complete Delay"
-msgstr ""
+msgstr "Espera de Completado de Código"
#: editor/editor_settings.cpp
msgid "Put Callhint Tooltip Below Current Line"
-msgstr ""
+msgstr "Colocar la Información Sobre la Llamada Debajo de la Línea Actual"
#: editor/editor_settings.cpp
msgid "Callhint Tooltip Offset"
-msgstr ""
+msgstr "Desplazamiento de la Información Sobre la Llamada"
#: editor/editor_settings.cpp
msgid "Complete File Paths"
msgstr "Completar Rutas de Archivos"
#: editor/editor_settings.cpp modules/gdscript/gdscript_editor.cpp
-#, fuzzy
msgid "Add Type Hints"
-msgstr "Añadir Tipo"
+msgstr "Añadir Sugerencias de Tipo"
#: editor/editor_settings.cpp
msgid "Use Single Quotes"
@@ -5588,15 +5717,15 @@ msgstr "Mostrar Ãndice de Ayuda"
#: editor/editor_settings.cpp
msgid "Help Font Size"
-msgstr ""
+msgstr "Tamaño de Fuente de Ayuda"
#: editor/editor_settings.cpp
msgid "Help Source Font Size"
-msgstr ""
+msgstr "Tamaño de Fuente de Código de Ayuda"
#: editor/editor_settings.cpp
msgid "Help Title Font Size"
-msgstr ""
+msgstr "Tamaño de Fuente del Título de Ayuda"
#: editor/editor_settings.cpp modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
@@ -5607,17 +5736,16 @@ msgid "Pick Distance"
msgstr "Distancia de Selección"
#: editor/editor_settings.cpp editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Preview Size"
-msgstr "Vista Previa"
+msgstr "Tamaño de Vista Previa"
#: editor/editor_settings.cpp
msgid "Primary Grid Color"
-msgstr ""
+msgstr "Color Primario de Cuadrícula"
#: editor/editor_settings.cpp
msgid "Secondary Grid Color"
-msgstr ""
+msgstr "Color Secundario de Cuadrícula"
#: editor/editor_settings.cpp
msgid "Selection Box Color"
@@ -5625,26 +5753,22 @@ msgstr "Color de Caja de Selección"
#: editor/editor_settings.cpp editor/plugins/path_editor_plugin.cpp
#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
-#, fuzzy
msgid "3D Gizmos"
-msgstr "Gizmos"
+msgstr "Gizmos 3D"
#: editor/editor_settings.cpp editor/plugins/path_editor_plugin.cpp
#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
-#, fuzzy
msgid "Gizmo Colors"
-msgstr "Colores de Emisión"
+msgstr "Colores de Gizmo"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Instanced"
-msgstr "Instanciar"
+msgstr "Instanciado"
#: editor/editor_settings.cpp modules/gltf/gltf_node.cpp
#: scene/3d/physics_body.cpp
-#, fuzzy
msgid "Joint"
-msgstr "Punto"
+msgstr "Articulación"
#: editor/editor_settings.cpp scene/2d/collision_shape_2d.cpp
#: scene/2d/cpu_particles_2d.cpp scene/2d/touch_screen_button.cpp
@@ -5653,7 +5777,7 @@ msgstr "Punto"
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Shape"
-msgstr ""
+msgstr "Forma"
#: editor/editor_settings.cpp
msgid "Primary Grid Steps"
@@ -5665,11 +5789,11 @@ msgstr "Tamaño de la Cuadrícula"
#: editor/editor_settings.cpp
msgid "Grid Division Level Max"
-msgstr ""
+msgstr "Nivel Máximo de División de Cuadrícula"
#: editor/editor_settings.cpp
msgid "Grid Division Level Min"
-msgstr ""
+msgstr "Nivel Mínimo de División de Cuadrícula"
#: editor/editor_settings.cpp
msgid "Grid Division Level Bias"
@@ -5701,7 +5825,7 @@ msgstr "Z Lejana por Defecto"
#: editor/editor_settings.cpp
msgid "Lightmap Baking Number Of CPU Threads"
-msgstr ""
+msgstr "Número de hilos de la CPU para el Lightmap Baking"
#: editor/editor_settings.cpp
msgid "Navigation Scheme"
@@ -5721,16 +5845,15 @@ msgstr "Estilo de Zoom"
#: editor/editor_settings.cpp
msgid "Emulate Numpad"
-msgstr ""
+msgstr "Emular Teclado Numérico"
#: editor/editor_settings.cpp
msgid "Emulate 3 Button Mouse"
-msgstr ""
+msgstr "Emular Mouse de 3 Botones"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Orbit Modifier"
-msgstr "Ordenar por Primera Modificación"
+msgstr "Modificador de Órbita"
#: editor/editor_settings.cpp
#, fuzzy
@@ -5753,11 +5876,11 @@ msgstr "Modo de Navegación"
#: editor/editor_settings.cpp
msgid "Orbit Sensitivity"
-msgstr ""
+msgstr "Sensibilidad de Órbita"
#: editor/editor_settings.cpp
msgid "Orbit Inertia"
-msgstr ""
+msgstr "Inercia de Órbita"
#: editor/editor_settings.cpp
msgid "Translation Inertia"
@@ -5805,13 +5928,12 @@ msgid "Guides Color"
msgstr "Color de Guías"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Smart Snapping Line Color"
-msgstr "Ajuste Inteligente"
+msgstr "Color de Línea de Snapping Inteligente"
#: editor/editor_settings.cpp
msgid "Bone Width"
-msgstr ""
+msgstr "Anchura de Hueso"
#: editor/editor_settings.cpp
msgid "Bone Color 1"
@@ -5827,11 +5949,11 @@ msgstr "Selección del Color de los Huesos"
#: editor/editor_settings.cpp
msgid "Bone IK Color"
-msgstr ""
+msgstr "Color del hueso IK"
#: editor/editor_settings.cpp
msgid "Bone Outline Color"
-msgstr ""
+msgstr "Color del Contorno del Hueso"
#: editor/editor_settings.cpp
msgid "Bone Outline Size"
@@ -5839,7 +5961,7 @@ msgstr "Tamaño de Contorno de Hueso"
#: editor/editor_settings.cpp
msgid "Viewport Border Color"
-msgstr ""
+msgstr "Color del Borde del Viewport"
#: editor/editor_settings.cpp
msgid "Constrain Editor View"
@@ -5847,11 +5969,11 @@ msgstr ""
#: editor/editor_settings.cpp
msgid "Simple Panning"
-msgstr ""
+msgstr "Paneo Simple"
#: editor/editor_settings.cpp
msgid "Scroll To Pan"
-msgstr ""
+msgstr "Desplazar Para Arrastrar"
#: editor/editor_settings.cpp
msgid "Pan Speed"
@@ -5863,7 +5985,7 @@ msgstr "Editor de Polígonos"
#: editor/editor_settings.cpp
msgid "Point Grab Radius"
-msgstr ""
+msgstr "Radio del Punto de Agarre"
#: editor/editor_settings.cpp editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Show Previous Outline"
@@ -5875,7 +5997,7 @@ msgstr "Autorrenombrar Pistas de Animación"
#: editor/editor_settings.cpp
msgid "Default Create Bezier Tracks"
-msgstr ""
+msgstr "Crear Pistas Bézier Predeterminadas"
#: editor/editor_settings.cpp
msgid "Default Create Reset Tracks"
@@ -5883,11 +6005,11 @@ msgstr "Crear Pistas de Reinicio por Defecto"
#: editor/editor_settings.cpp
msgid "Onion Layers Past Color"
-msgstr ""
+msgstr "Color de Capas de Cebolla Pasadas"
#: editor/editor_settings.cpp
msgid "Onion Layers Future Color"
-msgstr ""
+msgstr "Color de Capas de Cebolla Futuras"
#: editor/editor_settings.cpp
msgid "Visual Editors"
@@ -5895,11 +6017,11 @@ msgstr "Editores Visuales"
#: editor/editor_settings.cpp
msgid "Minimap Opacity"
-msgstr ""
+msgstr "Opacidad del Minimapa"
#: editor/editor_settings.cpp
msgid "Window Placement"
-msgstr ""
+msgstr "Ubicación de la Ventana"
#: editor/editor_settings.cpp scene/2d/back_buffer_copy.cpp scene/2d/sprite.cpp
#: scene/2d/visibility_notifier_2d.cpp scene/3d/sprite_3d.cpp
@@ -5915,7 +6037,7 @@ msgstr "Establecer Posición de Salida de Curva"
#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
-msgstr ""
+msgstr "Pantalla"
#: editor/editor_settings.cpp
msgid "Auto Save"
@@ -5945,33 +6067,35 @@ msgstr "Editor de Certificados SSL"
#: editor/editor_settings.cpp
msgid "HTTP Proxy"
-msgstr ""
+msgstr "Proxy HTTP"
#: editor/editor_settings.cpp
msgid "Host"
-msgstr ""
+msgstr "Host"
#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
#: scene/resources/default_theme/default_theme.cpp
msgid "Port"
-msgstr ""
+msgstr "Puerto"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Administrador de Proyectos"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Sorting Order"
msgstr "Orden de Ordenamiento"
#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
msgid "Symbol Color"
-msgstr ""
+msgstr "Color del Símbolo"
#: editor/editor_settings.cpp
msgid "Keyword Color"
-msgstr ""
+msgstr "Color de Palabra Clave"
#: editor/editor_settings.cpp
msgid "Control Flow Keyword Color"
@@ -6095,9 +6219,8 @@ msgid "Bookmark Color"
msgstr "Marcadores"
#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Breakpoint Color"
-msgstr "Puntos de interrupción"
+msgstr "Puntos de Interrupción"
#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
msgid "Executing Line Color"
@@ -6728,14 +6851,6 @@ msgid "Replace in Files"
msgstr "Reemplazar en Archivos"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "Buscar: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "Reemplazar: "
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr "Reemplazar Todo (NO SE PUEDE DESHACER)"
@@ -6863,7 +6978,7 @@ msgstr "Repetir"
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
msgid "Filter"
msgstr "Filtro"
@@ -7121,8 +7236,8 @@ msgid "Generating Lightmaps"
msgstr "Generando Lightmaps"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
-msgstr "Generando para la Malla: "
+msgid "Generating for Mesh:"
+msgstr "Generar para el Mesh:"
#: editor/import/resource_importer_scene.cpp
msgid "Running Custom Script..."
@@ -7150,6 +7265,18 @@ msgid "Saving..."
msgstr "Guardando..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7643,7 +7770,7 @@ msgstr "Seleccionar y mover puntos, crear puntos con clic derecho."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp scene/gui/graph_edit.cpp
msgid "Enable snap and show grid."
-msgstr "Activar ajuste y mostrar cuadrícula."
+msgstr "Activar snap y mostrar cuadrícula."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
@@ -7967,10 +8094,12 @@ msgstr "Opciones de Papel Cebolla"
msgid "Directions"
msgstr "Direcciones"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "Anterior"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "Posterior"
@@ -8130,8 +8259,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr "Asignar la animación de fin. Esto es útil para sub-transiciones."
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
-msgstr "Transición: "
+msgid "Transition:"
+msgstr "Transición:"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Play Mode:"
@@ -8147,11 +8276,6 @@ msgid "New name:"
msgstr "Nuevo nombre:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "Escala:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "Fundido de entrada (s):"
@@ -8578,7 +8702,7 @@ msgstr "Vista Previa"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Configure Snap"
-msgstr "Configurar Ajuste"
+msgstr "Configurar Snap"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Grid Offset:"
@@ -8943,48 +9067,48 @@ msgstr "Modo de Regla"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Toggle smart snapping."
-msgstr "Act./Desact. ajuste inteligente."
+msgstr "Act./Desact. snap inteligente."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Use Smart Snap"
-msgstr "Usar Ajuste Inteligente"
+msgstr "Usar Snap Inteligente"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Toggle grid snapping."
-msgstr "Act./Desact. ajuste de cuadrícula."
+msgstr "Act./Desact. snapping de cuadrícula."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Use Grid Snap"
-msgstr "Usar Ajuste de Cuadrícula"
+msgstr "Usar Snap de Cuadrícula"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Snapping Options"
-msgstr "Opciones de Ajuste"
+msgstr "Opciones de Snapping"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Use Rotation Snap"
-msgstr "Usar Ajuste de Rotación"
+msgstr "Usar Snap de Rotación"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Use Scale Snap"
-msgstr "Usar Ajuste de Escalado"
+msgstr "Usar Snap de Escala"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Snap Relative"
-msgstr "Ajuste Relativo"
+msgstr "Snap Relativo"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Use Pixel Snap"
-msgstr "Usar Ajuste de Píxeles"
+msgstr "Usar Snap de Píxeles"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Smart Snapping"
-msgstr "Ajuste Inteligente"
+msgstr "Snapping Inteligente"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Configure Snap..."
-msgstr "Configurar Ajuste..."
+msgstr "Configurar Snap..."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Snap to Parent"
@@ -9066,6 +9190,7 @@ msgstr "Crear Hueso(s) Personalizados a partir de Nodo(s)"
msgid "Clear Custom Bones"
msgstr "Borrar Huesos Personalizados"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9077,9 +9202,8 @@ msgid "Show"
msgstr "Ver Cuadrícula"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Show When Snapping"
-msgstr "Ajuste Inteligente"
+msgstr "Mostrar Al Ajustar"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Hide"
@@ -9132,6 +9256,10 @@ msgid "Preview Canvas Scale"
msgstr "Previsualizar Escala de Canvas"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "Layout"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr "Máscara de desplazamiento para insertar claves."
@@ -9443,9 +9571,8 @@ msgid "Swap Gradient Fill Points"
msgstr ""
#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
-#, fuzzy
msgid "Toggle Grid Snap"
-msgstr "Cambiar Modo"
+msgstr "Cambiar Snap de Cuadrícula"
#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
#: scene/3d/label_3d.cpp scene/gui/button.cpp scene/gui/dialogs.cpp
@@ -9911,8 +10038,8 @@ msgid "Volume"
msgstr "Volumen"
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr "Fuente de Emisión: "
+msgid "Emission Source:"
+msgstr "Fuente de Emisión:"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
@@ -10145,6 +10272,7 @@ msgid "Points"
msgstr "Puntos"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr "Polígonos"
@@ -10233,11 +10361,11 @@ msgstr "Configuración de la Cuadrícula"
#: editor/plugins/polygon_2d_editor_plugin.cpp modules/csg/csg_shape.cpp
#: scene/resources/default_theme/default_theme.cpp
msgid "Snap"
-msgstr "Ajuste"
+msgstr "Snap"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Enable Snap"
-msgstr "Activar Ajuste"
+msgstr "Activar Snap"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Show Grid"
@@ -10302,13 +10430,6 @@ msgid "Instance:"
msgstr "Instancia:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "Tipo:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr "Abrir en el Editor"
@@ -10317,10 +10438,6 @@ msgstr "Abrir en el Editor"
msgid "Load Resource"
msgstr "Cargar Recurso"
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr "Precargador de Recursos"
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr "Voltear Portales"
@@ -10746,7 +10863,7 @@ msgstr "Marcadores"
#: editor/plugins/script_text_editor.cpp
msgid "Breakpoints"
-msgstr "Puntos de interrupción"
+msgstr "Puntos de Interrupción"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -11019,13 +11136,15 @@ msgstr "Rotar"
msgid "Translate"
msgstr "Mover"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr "Escalado: "
+msgid "Scaling:"
+msgstr "Escala:"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr "Trasladar: "
+msgid "Translating:"
+msgstr "Trasladar:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -11048,11 +11167,6 @@ msgid "Yaw:"
msgstr "Eje de guiñada:"
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr "Tamaño:"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr "Objetos Dibujados:"
@@ -11541,7 +11655,8 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr "Geometría inválida, no puede ser reemplazada por una malla."
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+#, fuzzy
+msgid "Convert to MeshInstance2D"
msgstr "Convertir a Mesh2D"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11573,16 +11688,16 @@ msgid "Sprite"
msgstr "Sprite"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr "Simplificación: "
+msgid "Simplification:"
+msgstr "Simplificación:"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
-msgstr "Encoger (Píxeles): "
+msgid "Shrink (Pixels):"
+msgstr "Reducción (Píxeles):"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
-msgstr "Crecer (Pixeles): "
+msgid "Grow (Pixels):"
+msgstr "Crecimiento (Píxeles):"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Update Preview"
@@ -12537,8 +12652,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr "Seleccionar la anterior forma, subtile, o Tile."
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr "Región"
@@ -14062,37 +14176,10 @@ msgid "Delete preset '%s'?"
msgstr "¿Eliminar preajuste '%s'?"
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-"No se pudo exportar el proyecto para la plataforma '%s'.\n"
-"Las plantillas de exportación parecen faltar o ser inválidas."
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-"No se pudo exportar el proyecto para la plataforma '%s'.\n"
-"Esto puede ser debido a un problema de configuración en el preset de "
-"exportación o en la configuración de exportación."
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "Exportar Todo"
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr "La ruta de exportación especificada no existe:"
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-"Las plantillas de exportación para esta plataforma faltan/están corruptas:"
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr "Ruta de Exportación"
@@ -14202,28 +14289,24 @@ msgid "More Info..."
msgstr "Mover a..."
#: editor/project_export.cpp
-#, fuzzy
msgid "Export PCK/Zip..."
-msgstr "Exportar PCK/Zip"
+msgstr "Exportar PCK/Zip..."
#: editor/project_export.cpp
-#, fuzzy
msgid "Export Project..."
-msgstr "Exportar Proyecto"
+msgstr "Exportar Proyecto..."
#: editor/project_export.cpp
msgid "Export All"
msgstr "Exportar Todo"
#: editor/project_export.cpp
-#, fuzzy
msgid "Choose an export mode:"
-msgstr "Por favor elija una carpeta vacía."
+msgstr "Elige un modo de exportación:"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export All..."
-msgstr "Exportar Todo"
+msgstr "Exportar Todo..."
#: editor/project_export.cpp editor/project_manager.cpp
msgid "ZIP File"
@@ -14239,6 +14322,11 @@ msgid "Export templates for this platform are missing:"
msgstr "Faltan plantillas de exportación para esta plataforma:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Fundadores del Proyecto"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "Administrar Plantillas de Exportación"
@@ -15791,8 +15879,8 @@ msgid "Attach Node Script"
msgstr "Añadir Script de Nodo"
#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr "Remoto "
+msgid "Remote %s:"
+msgstr "Remoto %s:"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -16665,7 +16753,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "Polígonos"
@@ -16838,8 +16926,8 @@ msgid "Disabled GDNative Singleton"
msgstr "GDNative Singleton desactivado"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
-msgstr "Bibliotecas: "
+msgid "Libraries:"
+msgstr "Librerías:"
#: modules/gdnative/nativescript/nativescript.cpp
msgid "Class Name"
@@ -17274,7 +17362,6 @@ msgid "Use In Baked Light"
msgstr "Calcular Lightmaps"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17304,6 +17391,19 @@ msgstr "Centro"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Navegación"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Modo de Navegación"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Siguiente Plano"
@@ -17718,8 +17818,8 @@ msgstr ""
"trabajo de nodos. Prueba arreglando el nodo."
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
-msgstr "El nodo devolvió una secuencia de salida incorrecta: "
+msgid "Node returned an invalid sequence output:"
+msgstr "El nodo ha devuelto una secuencia de salida inválida:"
#: modules/visual_script/visual_script.cpp
msgid "Found sequence bit but not the node in the stack, report bug!"
@@ -17728,8 +17828,8 @@ msgstr ""
"problema!"
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
-msgstr "Desbordamiento de pila en el nivel: "
+msgid "Stack overflow with stack depth:"
+msgstr "Desbordamiento de pila con profundidad de pila:"
#: modules/visual_script/visual_script.cpp
#, fuzzy
@@ -18099,16 +18199,16 @@ msgid "for (elem) in (input):"
msgstr "for (elem) in (input):"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
-msgstr "El tipo de entrada no es iterable: "
+msgid "Input type not iterable:"
+msgstr "Tipo de entrada no iterable:"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Iterator became invalid"
msgstr "El iterador ya no es correcto"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
-msgstr "El iterador ya no es correcto: "
+msgid "Iterator became invalid:"
+msgstr "El iterador es inválido:"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Sequence"
@@ -18270,12 +18370,12 @@ msgid "Operator"
msgstr "Iterador"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ": Argumento incorrecto de tipo: "
+msgid "Invalid argument of type:"
+msgstr "Argumento inválido de tipo:"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ": Argumentos incorrectos: "
+msgid "Invalid arguments:"
+msgstr "Argumentos inválidos:"
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -18287,12 +18387,12 @@ msgid "Var Name"
msgstr "Nombre"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
-msgstr "VariableGet no encontrado en el script: "
+msgid "VariableGet not found in script:"
+msgstr "VariableGet no encontrada en el script:"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
-msgstr "VariableSet no encontrado en el script: "
+msgid "VariableSet not found in script:"
+msgstr "VariableSet no encontrada en el script:"
#: modules/visual_script/visual_script_nodes.cpp
msgid "Preload"
@@ -18821,10 +18921,6 @@ msgid "Could not execute on device."
msgstr "No se ha podido ejecutar en el dispositivo."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr "No se pudo encontrar la herramienta 'apksigner'."
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18959,17 +19055,20 @@ msgstr ""
"La versión de \"Target Sdk\" debe ser mayor o igual que la versión de \"Min "
"Sdk\"."
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Firma de código DMG"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
-"No se ha encontrado 'apksigner'.\n"
-"Por favor, compruebe que el comando está disponible en el directorio Android "
-"SDK build-tools.\n"
-"El resultado %s es sin firma."
+"No se ha encontrado el 'apksigner'. Por favor, comprueba que el comando está "
+"disponible en el directorio Android SDK build-tools. El resultado %s es sin "
+"firma."
#: platform/android/export/export_plugin.cpp
msgid "Signing debug %s..."
@@ -18984,6 +19083,10 @@ msgid "Could not find keystore, unable to export."
msgstr "No se pudo encontrar la keystore, no se puedo exportar."
#: platform/android/export/export_plugin.cpp
+msgid "Could not start apksigner executable."
+msgstr "No se ha podido iniciar el ejecutable apksigner."
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr "'apksigner' ha retornado con error #%d"
@@ -19013,8 +19116,8 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "¡Nombre de archivo inválido! Android APK requiere la extensión *.apk."
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
-msgstr "¡Formato de exportación no compatible!\n"
+msgid "Unsupported export format!"
+msgstr "¡Formato de exportación no compatible!"
#: platform/android/export/export_plugin.cpp
msgid ""
@@ -19027,27 +19130,23 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
-"La versión de compilación de Android no coincide:\n"
-" Plantilla instalada: %s\n"
-" Versión de Godot: %s\n"
-"Por favor, reinstala la plantilla de compilación de Android desde el menú "
-"'Proyecto'."
+"La versión de compilación de Android no coincide: Plantilla instalada: %s, "
+"versión de Godot: %s. Reinstala la plantilla de compilación de Android desde "
+"el menú \"Proyecto\"."
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
"No se puede sobrescribir los archivos res://android/build/res/*.xml con el "
-"nombre del proyecto"
+"mismo nombre del proyecto."
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
-msgstr "No se pueden exportar los archivos del proyecto a un proyecto gradle\n"
+msgid "Could not export project files to gradle project."
+msgstr "No se pueden exportar los archivos del proyecto a un proyecto gradle."
#: platform/android/export/export_plugin.cpp
msgid "Could not write expansion package file!"
@@ -19059,11 +19158,11 @@ msgstr "Construir Proyecto Android (gradle)"
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
-"La construcción del proyecto Android falló, comprueba la salida del error.\n"
-"También puedes visitar docs.godotengine.org para consultar la documentación "
+"La compilación del proyecto Android ha fallado, comprueba la salida del "
+"error. También puedes visitar docs.godotengine.org para ver la documentación "
"de compilación de Android."
#: platform/android/export/export_plugin.cpp
@@ -19079,40 +19178,35 @@ msgstr ""
"directorio del proyecto de gradle para ver los resultados."
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
-msgstr "Paquete no encontrado:% s"
+msgid "Package not found: \"%s\"."
+msgstr "Paquete no encontrado: \"%s\"."
#: platform/android/export/export_plugin.cpp
msgid "Creating APK..."
msgstr "Creando APK..."
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
-msgstr ""
-"No se pudo encontrar la plantilla APK para exportar:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
+msgstr "No se pudo encontrar la plantilla APK para exportar: \"%s\"."
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
-"Faltan bibliotecas en la plantilla de exportación para las arquitecturas "
-"seleccionadas: %s.\n"
-"Por favor, construya una plantilla con todas las bibliotecas necesarias, o "
-"desmarque las arquitecturas que faltan en el preajuste de exportación."
+"Faltan librerías en la plantilla de exportación para las arquitecturas "
+"seleccionadas: %s. Por favor, crea una plantilla con todas las librerías "
+"necesarias, o desmarca las arquitecturas que faltan en el preset de "
+"exportación."
#: platform/android/export/export_plugin.cpp
msgid "Adding files..."
msgstr "Añadiendo archivos ..."
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
-msgstr "No se pudieron exportar los archivos del proyecto"
+msgid "Could not export project files."
+msgstr "No se han podido exportar los archivos del proyecto."
#: platform/android/export/export_plugin.cpp
msgid "Aligning APK..."
@@ -19351,6 +19445,17 @@ msgstr "CustomNode"
msgid "Custom BG Color"
msgstr "CustomNode"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "Administrar Plantillas"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Plantilla release personalizada no encontrada."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -19373,20 +19478,29 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Ejecutar HTML exportado en el navegador predeterminado del sistema."
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
-msgstr "No se pudo abrir la plantilla para exportar:"
+msgid "Could not open template for export: \"%s\"."
+msgstr "No se pudo abrir la plantilla para la exportación: \"%s\"."
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
-msgstr "Plantilla de exportación inválida:"
+msgid "Invalid export template: \"%s\"."
+msgstr "Plantilla de exportación inválida: \"%s\"."
+
+#: platform/javascript/export/export.cpp
+msgid "Could not write file: \"%s\"."
+msgstr "No se pudo escribir el archivo: \"%s\"."
+
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Asignar Margen"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr "No se puede escribir en el archivo:"
+msgid "Could not read file: \"%s\"."
+msgstr "No se pudo leer el archivo: \"%s\"."
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
-msgstr "No se pudo leer el archivo:"
+msgid "PWA"
+msgstr ""
#: platform/javascript/export/export.cpp
msgid "Variant"
@@ -19462,16 +19576,16 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
-msgstr "No se pudo leer el shell HTML:"
+msgid "Could not read HTML shell: \"%s\"."
+msgstr "No se ha podido leer el HTML shell: \"%s\"."
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
-msgstr "No se pudo crear el directorio del servidor HTTP:"
+msgid "Could not create HTTP server directory: %s."
+msgstr "No se ha podido crear el directorio del servidor HTTP: %s."
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
-msgstr "Error al iniciar el servidor HTTP:"
+msgid "Error starting HTTP server: %d."
+msgstr "Error al iniciar el servidor HTTP: %d."
#: platform/javascript/export/export.cpp
msgid "Web"
@@ -19762,9 +19876,26 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Could not open icon file \"%s\"."
+msgstr "No se ha podido abrir el archivo de icono \"%s\"."
+
+#: platform/osx/export/export.cpp
+msgid "Could not start xcrun executable."
+msgstr "No se ha podido iniciar el ejecutable xcrun."
+
+#: platform/osx/export/export.cpp
+msgid "Notarization failed."
+msgstr "La notarización ha fallado."
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
"Nota: El proceso de notarización generalmente toma menos de una hora. Cuando "
"se complete el proceso, recibirá un correo electrónico."
@@ -19786,16 +19917,76 @@ msgstr ""
"notarial a la aplicación exportada (opcional):"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+"El sellado de tiempo no es compatible con la firma ad-hoc, y se desactivará!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+"Hardened Runtime no es compatible con la firma ad-hoc, y se desactivará!"
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
msgid "No identity found."
msgstr "No se encontró identidad."
#: platform/osx/export/export.cpp
+msgid "Cannot sign file %s."
+msgstr "No se puede firmar el archivo %s."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+"Los enlaces simbólicos relativos no son compatibles con este sistema "
+"operativo, ¡el proyecto exportado podría estar dañado!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Direcciones"
+
+#: platform/osx/export/export.cpp
+msgid "Could not start hdiutil executable."
+msgstr "No se ha podido iniciar el ejecutable hdiutil."
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Creating app bundle"
msgstr "Crear paquete de aplicaciones"
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
-msgstr "No se pudo encontrar la aplicación de plantilla para exportar:"
+msgid "Could not find template app to export: \"%s\"."
+msgstr ""
+"No se ha podido encontrar la plantilla de la aplicación a exportar: \"%s\"."
+
+#: platform/osx/export/export.cpp
+msgid "Invalid export format."
+msgstr "Formato de exportación inválido."
#: platform/osx/export/export.cpp
msgid ""
@@ -19806,8 +19997,9 @@ msgstr ""
"operativo, ¡el proyecto exportado podría estar dañado!"
#: platform/osx/export/export.cpp
+#, fuzzy
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
"Plantilla binaria solicitada '%s' no encontrada. Es posible que falte en el "
@@ -19854,6 +20046,15 @@ msgid "Sending archive for notarization"
msgstr "Enviando archivo para notarización"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "Proyecto"
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr "No se pudo abrir el archivo a leer de la ruta \"%s\"."
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr "Identificador de paquete no válido:"
@@ -20207,6 +20408,10 @@ msgid "Debug Algorithm"
msgstr "Depurador"
#: platform/windows/export/export.cpp
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Fallo al renombrar el archivo temporal \"%s\"."
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20251,6 +20456,76 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Notificaciones Push"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "No se pudo encontrar la keystore, no se puedo exportar."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "No se pudo encontrar la keystore, no se puedo exportar."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+"La herramienta rcedit debe configurarse en la configuración del editor "
+"(Exportar > Windows > Rcedit) para cambiar los datos de información del "
+"ícono o la aplicación."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "No se pudo encontrar la keystore, no se puedo exportar."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "No se pudo encontrar la keystore, no se puedo exportar."
+
+#: platform/windows/export/export.cpp
+msgid "Invalid identity type."
+msgstr "Tipo de identificador inválido."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Nombre inválido."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+"La herramienta rcedit debe configurarse en la configuración del editor "
+"(Exportar > Windows > Rcedit) para cambiar los datos de información del "
+"ícono o la aplicación."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "No se ha podido eliminar el archivo temporal \"%s\"."
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20272,6 +20547,23 @@ msgid "Invalid product version:"
msgstr "Versión de producto no válida:"
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Archivo ejecutable no válido."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "Nueva Ventana"
@@ -20288,6 +20580,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20415,7 +20711,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr "Distancia Maxima"
@@ -21278,17 +21575,19 @@ msgstr ""
"funcione. Por favor, establece la propiedad o dibuja un polígono."
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-"NavigationPolygonInstance debe ser hijo o nieto de un nodo Navigation2D. "
-"Solo provee datos de navegación."
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr ""
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Centro Inferior"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "Viaje"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
msgid "Rotation Degrees"
@@ -22513,14 +22812,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr "El NavigationAgent sólo puede utilizarse bajo un nodo spatial."
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-"NavigationMeshInstance debe ser hijo o nieto de un nodo Navigation. Ya que "
-"sólo proporciona los datos de navegación."
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
#, fuzzy
msgid "NavMesh"
@@ -23531,9 +23822,8 @@ msgid "Cast Shadow"
msgstr "Sombra Proyectada"
#: scene/3d/visual_instance.cpp
-#, fuzzy
msgid "Extra Cull Margin"
-msgstr "Argumentos extras de llamada:"
+msgstr "Margen de Sacrificio Extra"
#: scene/3d/visual_instance.cpp
#, fuzzy
@@ -23624,9 +23914,8 @@ msgid "Delay"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
-#, fuzzy
msgid "Random Delay"
-msgstr "Inclinación al azar:"
+msgstr "Retraso Aleatorio"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
@@ -24111,14 +24400,12 @@ msgid "Right Disconnects"
msgstr "Desconectar"
#: scene/gui/graph_edit.cpp
-#, fuzzy
msgid "Scroll Offset"
-msgstr "Desplazamiento de Cuadrícula:"
+msgstr "Desplazamiento de Scroll"
#: scene/gui/graph_edit.cpp
-#, fuzzy
msgid "Snap Distance"
-msgstr "Seleccionar Distancia:"
+msgstr "Ajustar Distancia"
#: scene/gui/graph_edit.cpp
#, fuzzy
@@ -25218,6 +25505,16 @@ msgid "3D Physics"
msgstr "Física"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Navegación"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Navegación"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -25929,23 +26226,20 @@ msgid "Preset BG Icon"
msgstr "Preajuste"
#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Normal Font"
-msgstr "Formato"
+msgstr "Fuente Normal"
#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Bold Font"
-msgstr "Código Fuente"
+msgstr "Fuente Negrita"
#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Italics Font"
-msgstr "Fuente Principal"
+msgstr "Fuente Cursiva"
#: scene/resources/default_theme/default_theme.cpp
msgid "Bold Italics Font"
-msgstr ""
+msgstr "Fuente Negrita y Cursiva"
#: scene/resources/default_theme/default_theme.cpp
#, fuzzy
@@ -25955,32 +26249,27 @@ msgstr "Fuente Principal"
#: scene/resources/default_theme/default_theme.cpp
#, fuzzy
msgid "Table H Separation"
-msgstr "Separación:"
+msgstr "Separación de Tabla H"
#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Table V Separation"
-msgstr "Separación:"
+msgstr "Separación de Tabla V"
#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Margin Left"
-msgstr "Asignar Margen"
+msgstr "Margen Izquierdo"
#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Margin Top"
-msgstr "Asignar Margen"
+msgstr "Margen Superior"
#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Margin Right"
-msgstr "Indentar a la Derecha"
+msgstr "Margen Derecho"
#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Margin Bottom"
-msgstr "Modo de Selección"
+msgstr "Margen Inferior"
#: scene/resources/default_theme/default_theme.cpp
#, fuzzy
@@ -26223,9 +26512,8 @@ msgid "Max Steps"
msgstr "Paso"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Fade In"
-msgstr "Fundido de entrada (s):"
+msgstr "Fundido de Entrada"
#: scene/resources/environment.cpp
msgid "Fade Out"
@@ -26367,9 +26655,8 @@ msgid "Color Correction"
msgstr "Corrección del Color"
#: scene/resources/font.cpp
-#, fuzzy
msgid "Ascent"
-msgstr "Recientes:"
+msgstr "Aumento"
#: scene/resources/font.cpp
#, fuzzy
@@ -26382,9 +26669,8 @@ msgid "Raw Data"
msgstr "Profundidad"
#: scene/resources/gradient.cpp
-#, fuzzy
msgid "Offsets"
-msgstr "Offset:"
+msgstr "Desplazamientos"
#: scene/resources/height_map_shape.cpp
msgid "Map Width"
@@ -26620,7 +26906,7 @@ msgstr "Transmisión"
msgid "Refraction"
msgstr "Refracción"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -26702,8 +26988,12 @@ msgid "Visible Instance Count"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+msgid "Sampling"
+msgstr "Muestreo"
+
+#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Partition Type"
msgstr "Establecer tipo de base de variación"
#: scene/resources/navigation_mesh.cpp
@@ -26720,10 +27010,15 @@ msgid "Source Group Name"
msgstr "Fuente"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "Segmentos"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -26733,11 +27028,16 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Regions"
+msgstr "Región"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Merge Size"
msgstr "Unir desde escena"
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26749,6 +27049,11 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Details"
+msgstr "Mostrar Por Defecto"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr "Distancia de Muestreo"
@@ -26765,7 +27070,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -27167,6 +27472,11 @@ msgid "Scenario"
msgstr "Escena"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Navegación"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -27184,6 +27494,26 @@ msgstr "Izquierda Lineal"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Escalonado de Flotantes por Defecto"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Vista Previa Por Defecto"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Prueba"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Margen de Conexión de Bordes"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
@@ -27267,9 +27597,8 @@ msgstr ""
#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_delay.cpp
#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
msgid "Pan"
-msgstr "Plano:"
+msgstr "Pan"
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
@@ -27887,7 +28216,7 @@ msgstr "Ver Eliminación de Oclusión"
#: servers/visual_server.cpp
msgid "Max Active Spheres"
-msgstr ""
+msgstr "Esferas Activas Máximas"
#: servers/visual_server.cpp
msgid "Max Active Polygons"
diff --git a/editor/translations/es_AR.po b/editor/translations/es_AR.po
index f523a9f4a8..c79bf0828f 100644
--- a/editor/translations/es_AR.po
+++ b/editor/translations/es_AR.po
@@ -19,13 +19,14 @@
# Joakker <joaquinandresleon108@gmail.com>, 2020.
# M3CG <cgmario1999@gmail.com>, 2021, 2022.
# Manuel González <mgoopazo@gmail.com>, 2021.
+# emnrx <emanuelermancia@gmail.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-02-28 13:54+0000\n"
-"Last-Translator: M3CG <cgmario1999@gmail.com>\n"
+"PO-Revision-Date: 2022-06-16 18:57+0000\n"
+"Last-Translator: emnrx <emanuelermancia@gmail.com>\n"
"Language-Team: Spanish (Argentina) <https://hosted.weblate.org/projects/"
"godot-engine/godot/es_AR/>\n"
"Language: es_AR\n"
@@ -33,19 +34,17 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.11.1-dev\n"
+"X-Generator: Weblate 4.13-dev\n"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
-msgstr ""
+msgstr "Controlador de Tableta"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Clipboard"
-msgstr "El portapapeles está vacío!"
+msgstr "Portapapeles"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Current Screen"
msgstr "Escena Actual"
@@ -54,75 +53,65 @@ msgid "Exit Code"
msgstr ""
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "V-Sync Enabled"
-msgstr "Activar"
+msgstr "V-Sync Activado"
#: core/bind/core_bind.cpp main/main.cpp
msgid "V-Sync Via Compositor"
-msgstr ""
+msgstr "V-Sync Via Compositor"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Delta Smoothing"
-msgstr ""
+msgstr "Suavizado Delta"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Low Processor Usage Mode"
-msgstr "Modo Mover"
+msgstr "Modo de Bajo Uso del Procesador"
#: core/bind/core_bind.cpp
msgid "Low Processor Usage Mode Sleep (µsec)"
msgstr ""
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Keep Screen On"
-msgstr "Mantener el Depurador Abierto"
+msgstr "Mantener Pantalla Encendida"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Min Window Size"
-msgstr "Tamaño de Outline:"
+msgstr "Tamaño Mínimo de Ventana"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Max Window Size"
-msgstr "Tamaño de Outline:"
+msgstr "Tamaño Máximo de Ventana"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Screen Orientation"
-msgstr "Operador Screen(trama)."
+msgstr "Orientación de Pantalla"
#: core/bind/core_bind.cpp core/project_settings.cpp main/main.cpp
#: platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Window"
-msgstr "Nueva Ventana"
+msgstr "Ventana"
#: core/bind/core_bind.cpp core/project_settings.cpp
-#, fuzzy
msgid "Borderless"
-msgstr "Píxeles del Borde"
+msgstr "Sin Bordes"
#: core/bind/core_bind.cpp
msgid "Per Pixel Transparency Enabled"
-msgstr ""
+msgstr "Transparencia Por Píxel Activada"
#: core/bind/core_bind.cpp core/project_settings.cpp
-#, fuzzy
msgid "Fullscreen"
-msgstr "Act./Desact. Pantalla Completa"
+msgstr "Pantalla Completa"
#: core/bind/core_bind.cpp
msgid "Maximized"
-msgstr ""
+msgstr "Maximizada"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Minimized"
-msgstr "Inicializar"
+msgstr "Minimizada"
#: core/bind/core_bind.cpp core/project_settings.cpp scene/gui/dialogs.cpp
#: scene/gui/graph_node.cpp
@@ -134,9 +123,8 @@ msgstr ""
#: scene/3d/physics_body.cpp scene/3d/remote_transform.cpp
#: scene/gui/control.cpp scene/gui/line_edit.cpp
#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Position"
-msgstr "Posición del Panel"
+msgstr "Posición"
#: core/bind/core_bind.cpp core/project_settings.cpp editor/editor_settings.cpp
#: main/main.cpp modules/gridmap/grid_map.cpp
@@ -147,9 +135,8 @@ msgstr "Posición del Panel"
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
#: scene/resources/visual_shader.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Size"
-msgstr "Tamaño:"
+msgstr "Tamaño"
#: core/bind/core_bind.cpp
msgid "Endian Swap"
@@ -162,12 +149,11 @@ msgstr "Editor"
#: core/bind/core_bind.cpp
msgid "Print Error Messages"
-msgstr ""
+msgstr "Imprimir Mensajes de Error"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Iterations Per Second"
-msgstr "Modo de Interpolación"
+msgstr "Iteraciones Por Segundo"
#: core/bind/core_bind.cpp
#, fuzzy
@@ -175,9 +161,8 @@ msgid "Target FPS"
msgstr "Objetivo"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Time Scale"
-msgstr "Nodo TimeScale"
+msgstr "Escala de Tiempo"
#: core/bind/core_bind.cpp main/main.cpp
#, fuzzy
@@ -194,18 +179,16 @@ msgid "Error String"
msgstr "Error al Guardar"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Error Line"
-msgstr "Error al Guardar"
+msgstr "Línea de Error"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Result"
-msgstr "Resultados de la Búsqueda"
+msgstr "Resultado"
#: core/command_queue_mt.cpp core/message_queue.cpp main/main.cpp
msgid "Memory"
-msgstr ""
+msgstr "Memoria"
#: core/command_queue_mt.cpp core/message_queue.cpp
#: core/register_core_types.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
@@ -216,12 +199,11 @@ msgstr ""
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
#: servers/visual_server.cpp
msgid "Limits"
-msgstr ""
+msgstr "Límites"
#: core/command_queue_mt.cpp
-#, fuzzy
msgid "Command Queue"
-msgstr "Command: Rotar"
+msgstr "Cola de comando"
#: core/command_queue_mt.cpp
msgid "Multithreading Queue Size (KB)"
@@ -241,9 +223,10 @@ msgid "Data"
msgstr "Con Data"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
#, fuzzy
msgid "Network"
msgstr "Profiler de Red"
@@ -254,9 +237,8 @@ msgid "Remote FS"
msgstr "Remoto "
#: core/io/file_access_network.cpp
-#, fuzzy
msgid "Page Size"
-msgstr "Página: "
+msgstr "Tamaño de Página"
#: core/io/file_access_network.cpp
msgid "Page Read Ahead"
@@ -267,18 +249,16 @@ msgid "Blocking Mode Enabled"
msgstr ""
#: core/io/http_client.cpp
-#, fuzzy
msgid "Connection"
-msgstr "Conectar"
+msgstr "Conección"
#: core/io/http_client.cpp
msgid "Read Chunk Size"
msgstr ""
#: core/io/marshalls.cpp
-#, fuzzy
msgid "Object ID"
-msgstr "Objetos Dibujados:"
+msgstr "ID de Objeto"
#: core/io/multiplayer_api.cpp core/io/packet_peer.cpp
#, fuzzy
@@ -300,14 +280,12 @@ msgid "Root Node"
msgstr "Nombre del nodo raíz"
#: core/io/networked_multiplayer_peer.cpp
-#, fuzzy
msgid "Refuse New Connections"
-msgstr "Conectar"
+msgstr "Rechazar Nuevas Conexiones"
#: core/io/networked_multiplayer_peer.cpp
-#, fuzzy
msgid "Transfer Mode"
-msgstr "Tipo de Transformación"
+msgstr "Modo de Transferencia"
#: core/io/packet_peer.cpp
msgid "Encode Buffer Max Size"
@@ -360,7 +338,8 @@ msgstr ""
"No hay suficientes bytes para decodificar bytes, o el formato es inválido."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "Entrada inválida %i (no se transmitió) en la expresión"
#: core/math/expression.cpp
@@ -405,28 +384,36 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Modo Mover"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "Eliminar Entrada"
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
msgstr "Dispositivo"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Alt"
-msgstr "Todos"
+msgstr "Alt"
#: core/os/input_event.cpp
msgid "Shift"
-msgstr ""
+msgstr "Shift"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Control"
-msgstr "Control de Versiones"
+msgstr "Control"
#: core/os/input_event.cpp
msgid "Meta"
-msgstr ""
+msgstr "Meta"
#: core/os/input_event.cpp
#, fuzzy
@@ -436,9 +423,8 @@ msgstr "Comunidad"
#: core/os/input_event.cpp scene/2d/touch_screen_button.cpp
#: scene/gui/base_button.cpp scene/gui/texture_button.cpp
#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Pressed"
-msgstr "Preset"
+msgstr "Presionado"
#: core/os/input_event.cpp
#, fuzzy
@@ -452,35 +438,32 @@ msgstr "Tecla Física"
#: core/os/input_event.cpp
msgid "Unicode"
-msgstr ""
+msgstr "Unicode"
#: core/os/input_event.cpp
msgid "Echo"
msgstr ""
#: core/os/input_event.cpp scene/gui/base_button.cpp
-#, fuzzy
msgid "Button Mask"
-msgstr "Botón"
+msgstr "Máscara de Botón"
#: core/os/input_event.cpp scene/2d/node_2d.cpp scene/gui/control.cpp
#, fuzzy
msgid "Global Position"
-msgstr "Constante Global"
+msgstr "Posición Global"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Factor"
-msgstr "Vector"
+msgstr "Factor"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Button Index"
-msgstr "Indice de Botones de Mouse:"
+msgstr "Ãndice de Botones"
#: core/os/input_event.cpp
msgid "Doubleclick"
-msgstr ""
+msgstr "Dobleclick"
#: core/os/input_event.cpp
msgid "Tilt"
@@ -500,9 +483,8 @@ msgstr "Ajuste Relativo"
#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
#: scene/animation/animation_player.cpp scene/resources/environment.cpp
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Speed"
-msgstr "Velocidad:"
+msgstr "Velocidad"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: scene/3d/sprite_3d.cpp
@@ -510,14 +492,12 @@ msgid "Axis"
msgstr "Eje"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Axis Value"
-msgstr "Fijar Valor"
+msgstr "Valor de Eje"
#: core/os/input_event.cpp modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "Index"
-msgstr "Indice:"
+msgstr "Ãndice"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_nodes.cpp
@@ -528,42 +508,38 @@ msgstr "Acción"
#: core/os/input_event.cpp scene/resources/environment.cpp
#: scene/resources/material.cpp
msgid "Strength"
-msgstr ""
+msgstr "Fuerza"
#: core/os/input_event.cpp
msgid "Delta"
msgstr ""
#: core/os/input_event.cpp
-#, fuzzy
msgid "Channel"
-msgstr "Cambiar"
+msgstr "Canal"
#: core/os/input_event.cpp main/main.cpp
-#, fuzzy
msgid "Message"
-msgstr "Mensaje de Commit"
+msgstr "Mensaje"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Pitch"
-msgstr "Cabeceo:"
+msgstr "Tono"
#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
#, fuzzy
msgid "Velocity"
-msgstr "Orbitar Vista Hacia La Derecha"
+msgstr "Velocidad"
#: core/os/input_event.cpp
msgid "Instrument"
msgstr ""
#: core/os/input_event.cpp
-#, fuzzy
msgid "Controller Number"
-msgstr "Numero de Línea:"
+msgstr "Número de Controlador"
#: core/os/input_event.cpp
msgid "Controller Value"
@@ -572,9 +548,8 @@ msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
#: platform/windows/export/export.cpp
-#, fuzzy
msgid "Application"
-msgstr "Acción"
+msgstr "Aplicación"
#: core/project_settings.cpp main/main.cpp
#, fuzzy
@@ -607,7 +582,8 @@ msgstr "Descripción"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "Ejecutar"
@@ -617,26 +593,24 @@ msgid "Main Scene"
msgstr "Escena Principal"
#: core/project_settings.cpp
-#, fuzzy
msgid "Disable stdout"
-msgstr "Desactivar Autotile"
+msgstr "Desactivar stdout"
#: core/project_settings.cpp
-#, fuzzy
msgid "Disable stderr"
-msgstr "Desactivar Ãtem"
+msgstr "Desactivar stderr"
#: core/project_settings.cpp
msgid "Use Hidden Project Data Directory"
-msgstr ""
+msgstr "Utilizar el Directorio de Datos Ocultos del Proyecto"
#: core/project_settings.cpp
msgid "Use Custom User Dir"
-msgstr ""
+msgstr "Utilizar Directorio de Usuario Personalizado"
#: core/project_settings.cpp
msgid "Custom User Dir Name"
-msgstr ""
+msgstr "Nombre de Directorio de Usuario Personalizado"
#: core/project_settings.cpp main/main.cpp
#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
@@ -649,7 +623,7 @@ msgstr "Mostrar Todo"
#: modules/opensimplex/noise_texture.cpp scene/2d/line_2d.cpp
#: scene/3d/label_3d.cpp scene/gui/text_edit.cpp scene/resources/texture.cpp
msgid "Width"
-msgstr ""
+msgstr "Ancho"
#: core/project_settings.cpp main/main.cpp modules/csg/csg_shape.cpp
#: modules/gltf/gltf_node.cpp modules/opensimplex/noise_texture.cpp
@@ -657,9 +631,8 @@ msgstr ""
#: scene/resources/capsule_shape_2d.cpp scene/resources/cylinder_shape.cpp
#: scene/resources/font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/texture.cpp
-#, fuzzy
msgid "Height"
-msgstr "Luz"
+msgstr "Altura"
#: core/project_settings.cpp
msgid "Always On Top"
@@ -698,32 +671,32 @@ msgid "Main Run Args"
msgstr "Argumentos de Escena Principal:"
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Ruta a la Escena:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
-msgstr ""
+msgstr "Buscar En Extensiones de Archivos"
#: core/project_settings.cpp
msgid "Script Templates Search Path"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Control de Versiones"
+msgstr "Ruta de Búsqueda de Plantillas de Scripts"
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Sistema de Control de Versiones"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Nombre del Plugin:"
+msgid "Version Control Plugin Name"
+msgstr "Control de Versiones"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Input"
-msgstr "Agregar Entrada"
+msgstr "Entrada"
#: core/project_settings.cpp
msgid "UI Accept"
@@ -806,12 +779,11 @@ msgstr " (Física)"
#: scene/3d/physics_body.cpp scene/resources/world.cpp
#: servers/physics/space_sw.cpp servers/physics_server.cpp
msgid "3D"
-msgstr ""
+msgstr "3D"
#: core/project_settings.cpp
-#, fuzzy
msgid "Smooth Trimesh Collision"
-msgstr "Crear Collider Triangular Hermano"
+msgstr "Colisión Suave de Trimesh"
#: core/project_settings.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles2/rasterizer_scene_gles2.cpp
@@ -822,9 +794,8 @@ msgstr "Crear Collider Triangular Hermano"
#: modules/lightmapper_cpu/register_types.cpp scene/main/scene_tree.cpp
#: scene/main/viewport.cpp servers/visual/visual_server_scene.cpp
#: servers/visual_server.cpp
-#, fuzzy
msgid "Rendering"
-msgstr "Renderizador:"
+msgstr "Renderización"
#: core/project_settings.cpp drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_scene_gles3.cpp
@@ -834,13 +805,13 @@ msgstr "Renderizador:"
#: scene/resources/multimesh.cpp servers/visual/visual_server_scene.cpp
#: servers/visual_server.cpp
msgid "Quality"
-msgstr ""
+msgstr "Calidad"
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
-#, fuzzy
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
msgid "Filters"
-msgstr "Filtros:"
+msgstr "Filtros"
#: core/project_settings.cpp scene/main/viewport.cpp
msgid "Sharpen Intensity"
@@ -860,9 +831,8 @@ msgstr "Depurar"
#: core/project_settings.cpp main/main.cpp modules/gdscript/gdscript.cpp
#: modules/visual_script/visual_script.cpp scene/resources/dynamic_font.cpp
-#, fuzzy
msgid "Settings"
-msgstr "Configuración:"
+msgstr "Configuración"
#: core/project_settings.cpp editor/script_editor_debugger.cpp main/main.cpp
#: modules/mono/mono_gd/gd_mono.cpp
@@ -870,23 +840,20 @@ msgid "Profiler"
msgstr "Profiler"
#: core/project_settings.cpp
-#, fuzzy
msgid "Max Functions"
-msgstr "Crear Función"
+msgstr "Funciones Máximas"
#: core/project_settings.cpp scene/3d/vehicle_body.cpp
-#, fuzzy
msgid "Compression"
-msgstr "Expresión"
+msgstr "Compresión"
#: core/project_settings.cpp
-#, fuzzy
msgid "Formats"
-msgstr "Formato"
+msgstr "Formatos"
#: core/project_settings.cpp
msgid "Zstd"
-msgstr ""
+msgstr "Zstd"
#: core/project_settings.cpp
msgid "Long Distance Matching"
@@ -894,7 +861,7 @@ msgstr ""
#: core/project_settings.cpp
msgid "Compression Level"
-msgstr ""
+msgstr "Nivel de Compresión"
#: core/project_settings.cpp
msgid "Window Log Size"
@@ -902,23 +869,23 @@ msgstr ""
#: core/project_settings.cpp
msgid "Zlib"
-msgstr ""
+msgstr "Zlib"
#: core/project_settings.cpp
msgid "Gzip"
-msgstr ""
+msgstr "Gzip"
#: core/project_settings.cpp platform/android/export/export.cpp
msgid "Android"
-msgstr ""
+msgstr "Android"
#: core/project_settings.cpp
msgid "Modules"
-msgstr ""
+msgstr "Módulos"
#: core/register_core_types.cpp
msgid "TCP"
-msgstr ""
+msgstr "TCP"
#: core/register_core_types.cpp
#, fuzzy
@@ -931,16 +898,15 @@ msgstr ""
#: core/register_core_types.cpp
msgid "Max Buffer (Power of 2)"
-msgstr ""
+msgstr "Búfer Máximo (Potencia de 2)"
#: core/register_core_types.cpp editor/editor_settings.cpp main/main.cpp
msgid "SSL"
-msgstr ""
+msgstr "SSL"
#: core/register_core_types.cpp main/main.cpp
-#, fuzzy
msgid "Certificates"
-msgstr "Vértices:"
+msgstr "Certificados"
#: core/resource.cpp editor/dependency_editor.cpp
#: editor/editor_resource_picker.cpp
@@ -961,9 +927,8 @@ msgid "Path"
msgstr "Ruta"
#: core/script_language.cpp
-#, fuzzy
msgid "Source Code"
-msgstr "Fuente"
+msgstr "Código Fuente"
#: core/translation.cpp editor/project_settings_editor.cpp
msgid "Locale"
@@ -1012,7 +977,7 @@ msgstr "EiB"
#: drivers/gles3/rasterizer_scene_gles3.cpp
#: drivers/gles3/rasterizer_storage_gles3.cpp modules/gltf/gltf_state.cpp
msgid "Buffers"
-msgstr ""
+msgstr "Búferes"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
@@ -1034,7 +999,7 @@ msgstr ""
#: servers/physics_2d/space_2d_sw.cpp servers/physics_2d_server.cpp
#: servers/visual_server.cpp
msgid "2D"
-msgstr ""
+msgstr "2D"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
@@ -1051,18 +1016,17 @@ msgstr "Usar Ajuste a Pixeles"
#: drivers/gles2/rasterizer_scene_gles2.cpp
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Immediate Buffer Size (KB)"
-msgstr ""
+msgstr "Tamaño de Búfer Inmediato (KB)"
#: drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_storage_gles3.cpp
-#, fuzzy
msgid "Lightmapping"
-msgstr "Bake Lightmaps"
+msgstr "Mapeo de Luz"
#: drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_storage_gles3.cpp
msgid "Use Bicubic Sampling"
-msgstr ""
+msgstr "Usar Muestreo Bicúbico"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Renderable Elements"
@@ -1079,11 +1043,11 @@ msgstr "Centrar Selección"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Lights Per Object"
-msgstr ""
+msgstr "Luces Máximas Por Objeto"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Subsurface Scattering"
-msgstr ""
+msgstr "Dispersión Subsuperficial"
#: drivers/gles3/rasterizer_scene_gles3.cpp editor/animation_track_editor.cpp
#: editor/import/resource_importer_texture.cpp
@@ -1099,9 +1063,8 @@ msgid "Scale"
msgstr "Escalar"
#: drivers/gles3/rasterizer_scene_gles3.cpp
-#, fuzzy
msgid "Follow Surface"
-msgstr "Poblar Superficie"
+msgstr "Seguir Superficie"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Weight Samples"
@@ -1113,12 +1076,13 @@ msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp scene/resources/environment.cpp
msgid "High Quality"
-msgstr ""
+msgstr "Alta Calidad"
#: drivers/gles3/rasterizer_storage_gles3.cpp
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Gratis"
@@ -1135,7 +1099,7 @@ msgstr "Espejar"
msgid "Time:"
msgstr "Tiempo:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Valor:"
@@ -1190,9 +1154,8 @@ msgstr "Cambiar Call de Anim"
#: editor/animation_track_editor.cpp scene/2d/animated_sprite.cpp
#: scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Frame"
-msgstr "Frame %"
+msgstr "Fotograma"
#: editor/animation_track_editor.cpp editor/editor_profiler.cpp
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
@@ -1210,9 +1173,8 @@ msgstr "Localización"
#: editor/animation_track_editor.cpp modules/gltf/gltf_node.cpp
#: scene/2d/polygon_2d.cpp scene/2d/remote_transform_2d.cpp
#: scene/3d/remote_transform.cpp scene/3d/spatial.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Rotation"
-msgstr "Step de Rotación:"
+msgstr "Rotación"
#: editor/animation_track_editor.cpp editor/script_editor_debugger.cpp
#: modules/visual_script/visual_script_nodes.cpp scene/gui/range.cpp
@@ -1220,14 +1182,13 @@ msgid "Value"
msgstr "Valor"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Arg Count"
-msgstr "Cantidad:"
+msgstr "Cantidad de Argumentos"
#: editor/animation_track_editor.cpp main/main.cpp
#: modules/mono/mono_gd/gd_mono.cpp
msgid "Args"
-msgstr ""
+msgstr "Argumentos"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
#: editor/script_editor_debugger.cpp modules/gltf/gltf_accessor.cpp
@@ -1385,10 +1346,75 @@ msgid "Remove this track."
msgstr "Quitar esta pista."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "Tiempo (s): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Posición del Panel"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Step de Rotación:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "Escala:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "Tipo:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Plantilla de exportación inválida:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Easing:"
+msgstr "Easing In-Out"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "In-Handle:"
+msgstr "Setear Handle"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Out-Handle:"
+msgstr "Setear Handle"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "Radio Ãtem"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Reiniciar (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "End (s):"
+msgstr "Fade In (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Animaciones:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "Activar/Desactivar Pista"
@@ -1603,7 +1629,8 @@ msgid "Add Method Track Key"
msgstr "Agregar Clave de Pista de Método"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "Método no encontrado en el objeto: "
#: editor/animation_track_editor.cpp
@@ -2215,8 +2242,8 @@ msgid "Open"
msgstr "Abrir"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Dueños De:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
msgid ""
@@ -2523,7 +2550,7 @@ msgid "Bus Options"
msgstr "Opciones de Bus"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Duplicar"
@@ -2575,8 +2602,9 @@ msgstr "Abrir Layout de Bus de Audio"
msgid "There is no '%s' file."
msgstr "No hay ningún archivo '%s'."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "Layout"
#: editor/editor_audio_buses.cpp
@@ -2780,6 +2808,25 @@ msgid "Choose"
msgstr "Elegir"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "Copiar Ruta del Nodo"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "El Paquete se instaló exitosamente!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "Fallido:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Almacenando Archivo:"
@@ -2792,6 +2839,31 @@ msgid "Packing"
msgstr "Empaquetando"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Guardar Como"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "No se pudo crear la carpeta."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "No se pudieron exportar los archivos del proyecto"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "No se puede abrir el archivo para escribir:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Guardar Como"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2913,11 +2985,33 @@ msgstr "Plantilla debug personalizada no encontrada."
msgid "Custom release template not found."
msgstr "Plantilla release personalizada no encontrada."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "Administrar Plantillas"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "La ruta de exportación especificada no existe:"
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "Plantilla no encontrada:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "Plantilla de exportación inválida:"
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+#, fuzzy
+msgid "PCK Embedding"
+msgstr "Relleno"
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr ""
"En la exportación de 32 bits el PCK embebido no puede ser mayor de 4 GiB."
@@ -3094,9 +3188,9 @@ msgid "Import"
msgstr "Importar"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Exportar"
@@ -4268,15 +4362,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Escena"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Ruta a la Escena:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4405,6 +4490,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Control de Versiones"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "Nombre de usuario"
@@ -4432,6 +4521,10 @@ msgstr "Act./Desact. modo sin distracciones."
msgid "Add a new scene."
msgstr "Agregar nueva escena."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Escena"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Ir a la escena abierta previamente."
@@ -5120,11 +5213,14 @@ msgid "Selected node is not a Viewport!"
msgstr "El nodo seleccionado no es un Viewport!"
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr "Tamaño: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
+msgstr "Tamaño:"
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+#, fuzzy
+msgid "Page:"
msgstr "Página: "
#: editor/editor_properties_array_dict.cpp
@@ -5226,6 +5322,11 @@ msgstr ""
"Por favor agregá un preset ejecutable en el menú Exportar o definí un preset "
"como ejecutable."
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Proyecto"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Escribir tu lógica en el método _run()."
@@ -5509,7 +5610,9 @@ msgid "Draw Spaces"
msgstr "Llamadas de Dibujado:"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr "Navegación"
@@ -6108,10 +6211,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Gestor de Proyectos"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -6891,14 +6996,6 @@ msgid "Replace in Files"
msgstr "eemplazar en Archivos"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "Encontrar: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "Reemplazar: "
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr "Reemplazar Todo (NO SE PUEDE DESHACER)"
@@ -6994,9 +7091,8 @@ msgstr ""
#: editor/import/resource_importer_scene.cpp
#: editor/import/resource_importer_texture.cpp
#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
-#, fuzzy
msgid "Compress"
-msgstr "Componentes"
+msgstr "Comprimir"
#: editor/import/resource_importer_csv_translation.cpp
msgid "Delimiter"
@@ -7027,7 +7123,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Filtros:"
@@ -7295,7 +7391,8 @@ msgid "Generating Lightmaps"
msgstr "Generando Lightmaps"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+#, fuzzy
+msgid "Generating for Mesh:"
msgstr "Generando para Mesh: "
#: editor/import/resource_importer_scene.cpp
@@ -7323,6 +7420,18 @@ msgid "Saving..."
msgstr "Guardando..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -8145,10 +8254,12 @@ msgstr "Opciones de Papel Cebolla"
msgid "Directions"
msgstr "Direcciones"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "Pasado"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "Posterior"
@@ -8308,7 +8419,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr "Asignar la animación de fin. Esto es útil para sub-transiciones."
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
+#, fuzzy
+msgid "Transition:"
msgstr "Transición: "
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8325,11 +8437,6 @@ msgid "New name:"
msgstr "Nuevo nombre:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "Escala:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "Fade In (s):"
@@ -9244,6 +9351,7 @@ msgstr "Crear Hueso(s) Personalizados a partir de Nodo(s)"
msgid "Clear Custom Bones"
msgstr "Restablecer Huesos Personalizados"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9310,6 +9418,10 @@ msgid "Preview Canvas Scale"
msgstr "Vista Previa de Escala de Canvas"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "Layout"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr "Máscara de traslación para insertar claves."
@@ -10085,7 +10197,8 @@ msgid "Volume"
msgstr "Volumen"
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+#, fuzzy
+msgid "Emission Source:"
msgstr "Fuente de Emisión: "
#: editor/plugins/particles_editor_plugin.cpp
@@ -10319,6 +10432,7 @@ msgid "Points"
msgstr "Puntos"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr "Polígonos"
@@ -10476,13 +10590,6 @@ msgid "Instance:"
msgstr "Instancia:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "Tipo:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr "Abrir en Editor"
@@ -10491,10 +10598,6 @@ msgstr "Abrir en Editor"
msgid "Load Resource"
msgstr "Cargar Recurso"
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr "ResourcePreloader"
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr "Invertir Portales"
@@ -11195,12 +11298,16 @@ msgstr "Rotar"
msgid "Translate"
msgstr "Trasladar"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
+#, fuzzy
+msgid "Scaling:"
msgstr "Escalando: "
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
+#, fuzzy
+msgid "Translating:"
msgstr "Trasladar: "
#: editor/plugins/spatial_editor_plugin.cpp
@@ -11224,11 +11331,6 @@ msgid "Yaw:"
msgstr "Guiñada:"
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr "Tamaño:"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr "Objetos Dibujados:"
@@ -11715,7 +11817,8 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr "Geometría inválida, no se puede reemplazar por mesh."
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+#, fuzzy
+msgid "Convert to MeshInstance2D"
msgstr "Convertir a Mesh2D"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11747,15 +11850,18 @@ msgid "Sprite"
msgstr "Sprite"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
+#, fuzzy
+msgid "Simplification:"
msgstr "Simplificación: "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+#, fuzzy
+msgid "Shrink (Pixels):"
msgstr "Achicar (Pixeles): "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+#, fuzzy
+msgid "Grow (Pixels):"
msgstr "Crecer (Pixeles): "
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12710,8 +12816,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr "Seleccionar la forma, subtile o Tile anterior."
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr "Región"
@@ -14236,38 +14341,10 @@ msgid "Delete preset '%s'?"
msgstr "Eliminar preset '%s'?"
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-"No se pudo exportar el proyecto para la plataforma '%s'.\n"
-"Las plantillas de exportación parecen faltar o ser inválidas."
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-"No se pudo exportar el proyecto para la plataforma '%s'.\n"
-"Esto puede ser debido a un problema de configuración en el preset de "
-"exportación o en los ajustes de exportación."
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "Exportar Todo"
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr "La ruta de exportación especificada no existe:"
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-"Las plantillas de exportación para esta plataforma están faltando o "
-"corruptas:"
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr "Ruta de Exportación"
@@ -14415,6 +14492,11 @@ msgid "Export templates for this platform are missing:"
msgstr "Faltan las plantillas de exportación para esta plataforma:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Fundadores del Proyecto"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "Gestionar Plantillas de Exportación"
@@ -15969,7 +16051,8 @@ msgid "Attach Node Script"
msgstr "Adjuntar Script de Nodo"
#: editor/script_editor_debugger.cpp
-msgid "Remote "
+#, fuzzy
+msgid "Remote %s:"
msgstr "Remoto "
#: editor/script_editor_debugger.cpp
@@ -16850,7 +16933,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "Polígonos"
@@ -17028,7 +17111,8 @@ msgid "Disabled GDNative Singleton"
msgstr "GDNative Singleton desactivado"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+#, fuzzy
+msgid "Libraries:"
msgstr "Bibliotecas: "
#: modules/gdnative/nativescript/nativescript.cpp
@@ -17255,7 +17339,7 @@ msgstr "Colores"
#: modules/gltf/gltf_light.cpp scene/3d/reflection_probe.cpp
#: scene/resources/environment.cpp
msgid "Intensity"
-msgstr ""
+msgstr "Intensidad"
#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
@@ -17475,7 +17559,6 @@ msgid "Use In Baked Light"
msgstr "Bake Lightmaps"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17505,6 +17588,19 @@ msgstr "Centro"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Navegación"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Modo Navegación"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Plano siguiente"
@@ -17921,7 +18017,8 @@ msgstr ""
"trabajo nodos! Arreglá tu nodo, por favor."
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+#, fuzzy
+msgid "Node returned an invalid sequence output:"
msgstr "El nodo retornó una secuencia de salida inválida: "
#: modules/visual_script/visual_script.cpp
@@ -17930,7 +18027,8 @@ msgstr ""
"Se encontró un bit de secuencia pero no el nodo en el stack, reportá el bug!"
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+#, fuzzy
+msgid "Stack overflow with stack depth:"
msgstr "Stack overflow con la profundidad del stack: "
#: modules/visual_script/visual_script.cpp
@@ -18301,7 +18399,8 @@ msgid "for (elem) in (input):"
msgstr "for (elem) in (input):"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+#, fuzzy
+msgid "Input type not iterable:"
msgstr "Tipo de input no iterable: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18309,7 +18408,8 @@ msgid "Iterator became invalid"
msgstr "El iterador se volvió inválido"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+#, fuzzy
+msgid "Iterator became invalid:"
msgstr "El iterador se volvió inválido: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18473,11 +18573,13 @@ msgid "Operator"
msgstr "Iterador"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
+#, fuzzy
+msgid "Invalid argument of type:"
msgstr ": Argumento inválido de tipo: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
+#, fuzzy
+msgid "Invalid arguments:"
msgstr ": Argumentos inválidos: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18490,11 +18592,13 @@ msgid "Var Name"
msgstr "Nombre"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+#, fuzzy
+msgid "VariableGet not found in script:"
msgstr "VariableGet no encontrado en el script: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+#, fuzzy
+msgid "VariableSet not found in script:"
msgstr "VariableSet no encontrado en el script: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -19029,10 +19133,6 @@ msgid "Could not execute on device."
msgstr "No se ha podido ejecutar en el dispositivo."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr "No se pudo encontrar la herramienta 'apksigner'."
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -19158,12 +19258,17 @@ msgstr ""
"La versión de \"Target Sdk\" debe ser mayor o igual a la versión de \"Min "
"Sdk\"."
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Firmando código de DMG"
+
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
"No se ha encontrado 'apksigner'.\n"
"Por favor, comprobá que el comando esté disponible en el directorio Android "
@@ -19183,6 +19288,11 @@ msgid "Could not find keystore, unable to export."
msgstr "No se pudo encontrar la keystore, no se puedo exportar."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "No se pudo comenzar el subproceso!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr "'apksigner' ha retornado con error #%d"
@@ -19212,7 +19322,8 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "¡Nombre de archivo inválido! Android APK requiere la extensión *.apk."
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+#, fuzzy
+msgid "Unsupported export format!"
msgstr "¡Formato de exportación no soportado!\n"
#: platform/android/export/export_plugin.cpp
@@ -19225,10 +19336,9 @@ msgstr ""
"'Proyecto'."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
"La versión de compilación de Android no coincide:\n"
@@ -19238,14 +19348,16 @@ msgstr ""
"'Proyecto'."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
"No se pudieron sobrescribir los archivos res://android/build/res/*.xml con "
"el nombre del proyecto"
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+#, fuzzy
+msgid "Could not export project files to gradle project."
msgstr ""
"No se pudieron exportar los archivos del proyecto a un proyecto gradle\n"
@@ -19258,8 +19370,9 @@ msgid "Building Android Project (gradle)"
msgstr "Construir Proyecto Android (gradle)"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
"La construcción del proyecto Android falló, comprueba la salida del error.\n"
@@ -19279,7 +19392,8 @@ msgstr ""
"directorio del proyecto de gradle para ver los resultados."
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+#, fuzzy
+msgid "Package not found: \"%s\"."
msgstr "Paquete no encontrado:% s"
#: platform/android/export/export_plugin.cpp
@@ -19287,17 +19401,16 @@ msgid "Creating APK..."
msgstr "Creando APK..."
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+#, fuzzy
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
"No se pudo encontrar la plantilla APK para exportar:\n"
"%s"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -19311,7 +19424,8 @@ msgid "Adding files..."
msgstr "Agregando archivos..."
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+#, fuzzy
+msgid "Could not export project files."
msgstr "No se pudieron exportar los archivos del proyecto"
#: platform/android/export/export_plugin.cpp
@@ -19457,9 +19571,8 @@ msgid "Push Notifications"
msgstr "Rotación al Azar:"
#: platform/iphone/export/export.cpp
-#, fuzzy
msgid "User Data"
-msgstr "Interfaz de Usuario"
+msgstr "Datos de Usuario"
#: platform/iphone/export/export.cpp
msgid "Accessible From Files App"
@@ -19554,6 +19667,17 @@ msgstr "CustomNode"
msgid "Custom BG Color"
msgstr "CustomNode"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "Administrar Plantillas"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Plantilla release personalizada no encontrada."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -19576,22 +19700,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Ejecutar HTML exportado en el navegador por defecto del sistema."
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
msgstr "No se pudo abrir la plantilla para exportar:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
msgstr "Plantilla de exportación inválida:"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+#, fuzzy
+msgid "Could not write file: \"%s\"."
msgstr "No se pudo escribir el archivo:"
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Asignar Margen"
+
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+#, fuzzy
+msgid "Could not read file: \"%s\"."
msgstr "No se pudo leer el archivo:"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "Separación:"
@@ -19666,15 +19803,18 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+#, fuzzy
+msgid "Could not read HTML shell: \"%s\"."
msgstr "No se pudo leer el shell HTML:"
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+#, fuzzy
+msgid "Could not create HTTP server directory: %s."
msgstr "No se pudo crear el directorio del servidor HTTP:"
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+#, fuzzy
+msgid "Error starting HTTP server: %d."
msgstr "Error al iniciar el servidor HTTP:"
#: platform/javascript/export/export.cpp
@@ -19967,9 +20107,29 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "No se pudieron exportar los archivos del proyecto"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "No se pudo comenzar el subproceso!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Localización"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
"Nota: El proceso de notarización generalmente toma menos de una hora. Cuando "
"se complete el proceso, recibirás un correo electrónico."
@@ -19991,18 +20151,80 @@ msgstr ""
"notarial a la aplicación exportada (opcional):"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr "Timestamping no es compatible con la firma ad-hoc y se desactivará!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+"Hardened Runtime no es compatible con la firma ad-hoc y se desactivará!"
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
msgid "No identity found."
msgstr "No se encontró identidad."
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Error guardando el archivo: %s"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+"Los enlaces simbólicos relativos no son compatibles con este sistema "
+"operativo, ¡el proyecto exportado podría estar dañado!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Direcciones"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "No se pudo comenzar el subproceso!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Creating app bundle"
msgstr "Crearndo paquete de aplicaciones"
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+#, fuzzy
+msgid "Could not find template app to export: \"%s\"."
msgstr "No se pudo encontrar la aplicación de plantilla para exportar:"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Plantilla de exportación inválida:"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -20011,8 +20233,9 @@ msgstr ""
"operativo, ¡el proyecto exportado podría estar dañado!"
#: platform/osx/export/export.cpp
+#, fuzzy
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
"Plantilla binaria solicitada '%s' no encontrada. Es posible que falte en el "
@@ -20059,6 +20282,17 @@ msgid "Sending archive for notarization"
msgstr "Enviando archivo para notarización"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "Proyección"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+"No se pudieron exportar los archivos del proyecto a un proyecto gradle\n"
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr "Identificador de paquete no válido:"
@@ -20409,6 +20643,11 @@ msgid "Debug Algorithm"
msgstr "Depurador"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "No se puede eliminar el archivo temporal:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20456,6 +20695,70 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Rotación al Azar:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "No se pudo encontrar la keystore, no se puedo exportar."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "No se pudo encontrar la keystore, no se puedo exportar."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "No se pudo encontrar la keystore, no se puedo exportar."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "No se pudo encontrar la keystore, no se puedo exportar."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Identificador inválido:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Nombre inválido."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "No se puede eliminar el archivo temporal:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20474,6 +20777,23 @@ msgid "Invalid product version:"
msgstr "versión de producto inválida."
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Archivo ejecutable no válido."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "Nueva Ventana"
@@ -20490,6 +20810,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20606,9 +20930,8 @@ msgstr "Escalar"
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-#, fuzzy
msgid "Autoplay"
-msgstr "Activar/Desact. Autoplay"
+msgstr "Autoreproducción"
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/audio/audio_stream_player.cpp
@@ -20617,7 +20940,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Elegir Instancia:"
@@ -21430,7 +21754,7 @@ msgstr "Multiplicar %s"
#: scene/3d/navigation.cpp scene/animation/root_motion_view.cpp
#: scene/resources/world_2d.cpp servers/physics_2d/physics_2d_server_sw.cpp
msgid "Cell Size"
-msgstr ""
+msgstr "Tamaño de Celda"
#: scene/2d/navigation_2d.cpp scene/3d/navigation.cpp
#, fuzzy
@@ -21447,7 +21771,7 @@ msgstr ""
#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
msgid "Max Neighbors"
-msgstr ""
+msgstr "Vecinos Máximos"
#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
#, fuzzy
@@ -21455,9 +21779,8 @@ msgid "Time Horizon"
msgstr "Espejar Horizontalmente"
#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-#, fuzzy
msgid "Max Speed"
-msgstr "Velocidad:"
+msgstr "Velocidad Máxima"
#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
#, fuzzy
@@ -21494,17 +21817,19 @@ msgstr ""
"funcione. Por favor creá una propiedad o dibujá un polígono."
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-"NavigationPolygonInstance debe ser un hijo o nieto de un nodo Navigation2D. "
-"Solo provee datos de navegación."
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr ""
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Centro Inferior"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "Viaje"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
#, fuzzy
@@ -21574,9 +21899,8 @@ msgstr ""
#: scene/2d/parallax_layer.cpp scene/2d/physics_body_2d.cpp
#: scene/3d/physics_body.cpp scene/3d/vehicle_body.cpp
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Motion"
-msgstr "Acción"
+msgstr "Movimiento"
#: scene/2d/parallax_layer.cpp
#, fuzzy
@@ -21631,9 +21955,8 @@ msgstr ""
#: scene/2d/path_2d.cpp scene/3d/path.cpp scene/resources/sky.cpp
#: scene/resources/texture.cpp
-#, fuzzy
msgid "Curve"
-msgstr "Partir Curva"
+msgstr "Curva"
#: scene/2d/path_2d.cpp
msgid "PathFollow2D only works when set as a child of a Path2D node."
@@ -21641,9 +21964,8 @@ msgstr ""
"PathFollow2D sólo funciona cuando está seteado como hijo de un nodo Path2D."
#: scene/2d/path_2d.cpp scene/3d/path.cpp
-#, fuzzy
msgid "Unit Offset"
-msgstr "Offset de Grilla:"
+msgstr "Desplazamiento de Unidad"
#: scene/2d/path_2d.cpp scene/3d/camera.cpp scene/3d/path.cpp
#, fuzzy
@@ -21664,9 +21986,8 @@ msgid "Lookahead"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/visual_instance.cpp
-#, fuzzy
msgid "Layers"
-msgstr "Capa"
+msgstr "Capas"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
@@ -21680,14 +22001,13 @@ msgstr "Inicializar"
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp scene/3d/physics_body.cpp
#: scene/resources/physics_material.cpp
-#, fuzzy
msgid "Friction"
-msgstr "Función"
+msgstr "Fricción"
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp scene/3d/physics_body.cpp
#: scene/resources/physics_material.cpp
msgid "Bounce"
-msgstr ""
+msgstr "Rebote"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
msgid "Physics Material Override"
@@ -21695,9 +22015,8 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
msgid "Default Gravity"
-msgstr "Vista Previa Por Defecto"
+msgstr "Gravedad Predeterminada"
#: scene/2d/physics_body_2d.cpp
msgid ""
@@ -21711,21 +22030,19 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
msgid "Mass"
-msgstr ""
+msgstr "Masa"
#: scene/2d/physics_body_2d.cpp
-#, fuzzy
msgid "Inertia"
-msgstr "Vertical:"
+msgstr "Inercia"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Weight"
-msgstr "Luz"
+msgstr "Peso"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
msgid "Gravity Scale"
-msgstr ""
+msgstr "Escala de Gravedad"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
@@ -21763,20 +22080,19 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
msgid "Angular"
-msgstr ""
+msgstr "Angular"
#: scene/2d/physics_body_2d.cpp
msgid "Applied Forces"
-msgstr ""
+msgstr "Fuerzas Aplicadas"
#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Safe Margin"
-msgstr "Asignar Margen"
+msgstr "Margen Seguro"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
@@ -21850,7 +22166,7 @@ msgstr ""
#: scene/2d/polygon_2d.cpp
msgid "Invert"
-msgstr ""
+msgstr "Invertir"
#: scene/2d/polygon_2d.cpp
#, fuzzy
@@ -21858,9 +22174,8 @@ msgid "Vertex Colors"
msgstr "Vértice"
#: scene/2d/polygon_2d.cpp
-#, fuzzy
msgid "Internal Vertex Count"
-msgstr "Crear Vértice Interno"
+msgstr "Recuento de Vértices Internos"
#: scene/2d/position_2d.cpp
#, fuzzy
@@ -21878,7 +22193,7 @@ msgstr "Crear Nodo Shader"
#: scene/2d/ray_cast_2d.cpp scene/3d/ray_cast.cpp
msgid "Collide With"
-msgstr ""
+msgstr "Colisionar Con"
#: scene/2d/ray_cast_2d.cpp scene/3d/camera.cpp scene/3d/ray_cast.cpp
msgid "Areas"
@@ -21908,9 +22223,8 @@ msgid "Rest"
msgstr "Reiniciar"
#: scene/2d/skeleton_2d.cpp
-#, fuzzy
msgid "Default Length"
-msgstr "Theme Predeterminado"
+msgstr "Longitud Predeterminada"
#: scene/2d/skeleton_2d.cpp
msgid "This Bone2D chain should end at a Skeleton2D node."
@@ -21930,11 +22244,11 @@ msgstr ""
#: scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
msgid "Hframes"
-msgstr ""
+msgstr "FotogramasH"
#: scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
msgid "Vframes"
-msgstr ""
+msgstr "FotogramasV"
#: scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
#, fuzzy
@@ -22029,9 +22343,8 @@ msgid "Passby Press"
msgstr ""
#: scene/2d/touch_screen_button.cpp
-#, fuzzy
msgid "Visibility Mode"
-msgstr "Modo Prioridad"
+msgstr "Modo de Visibilidad"
#: scene/2d/visibility_notifier_2d.cpp
msgid ""
@@ -22071,7 +22384,7 @@ msgstr ""
#: scene/3d/area.cpp
msgid "Reverb Bus"
-msgstr ""
+msgstr "Bus de Reverberación"
#: scene/3d/area.cpp
#, fuzzy
@@ -22129,9 +22442,8 @@ msgid "World Scale"
msgstr "Escala al Azar:"
#: scene/3d/audio_stream_player_3d.cpp
-#, fuzzy
msgid "Attenuation Model"
-msgstr "Nodo de Animación"
+msgstr "Modelo de Atenuación"
#: scene/3d/audio_stream_player_3d.cpp
msgid "Unit dB"
@@ -22139,20 +22451,19 @@ msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
msgid "Unit Size"
-msgstr ""
+msgstr "Tamaño de Unidad"
#: scene/3d/audio_stream_player_3d.cpp
msgid "Max dB"
-msgstr ""
+msgstr "dB Máximos"
#: scene/3d/audio_stream_player_3d.cpp
msgid "Out Of Range Mode"
-msgstr ""
+msgstr "Modo Fuera de Rango"
#: scene/3d/audio_stream_player_3d.cpp
-#, fuzzy
msgid "Emission Angle"
-msgstr "Colores de Emisión"
+msgstr "Ãngulo de Emisión"
#: scene/3d/audio_stream_player_3d.cpp
#, fuzzy
@@ -22166,7 +22477,7 @@ msgstr "Animación"
#: scene/3d/audio_stream_player_3d.cpp
msgid "Attenuation Filter"
-msgstr ""
+msgstr "Filtro de Atenuación"
#: scene/3d/audio_stream_player_3d.cpp
#: servers/audio/effects/audio_effect_chorus.cpp
@@ -22181,9 +22492,8 @@ msgid "dB"
msgstr "B"
#: scene/3d/audio_stream_player_3d.cpp
-#, fuzzy
msgid "Doppler"
-msgstr "Activar Doppler"
+msgstr "Doppler"
#: scene/3d/audio_stream_player_3d.cpp
#, fuzzy
@@ -22193,7 +22503,7 @@ msgstr "Empaquetando"
#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
#: scene/3d/reflection_probe.cpp
msgid "Interior"
-msgstr ""
+msgstr "Interior"
#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
@@ -22228,15 +22538,15 @@ msgstr "Gizmos"
#: scene/3d/baked_lightmap.cpp
msgid "Tweaks"
-msgstr ""
+msgstr "Ajustes"
#: scene/3d/baked_lightmap.cpp
msgid "Bounces"
-msgstr ""
+msgstr "Rebotes"
#: scene/3d/baked_lightmap.cpp
msgid "Bounce Indirect Energy"
-msgstr ""
+msgstr "Energía Indirecta de Rebotes"
#: scene/3d/baked_lightmap.cpp
#, fuzzy
@@ -22258,9 +22568,8 @@ msgid "Default Texels Per Unit"
msgstr "Theme Predeterminado"
#: scene/3d/baked_lightmap.cpp scene/resources/texture.cpp
-#, fuzzy
msgid "Atlas"
-msgstr "Nuevo Atlas"
+msgstr "Atlas"
#: scene/3d/baked_lightmap.cpp
#, fuzzy
@@ -22298,18 +22607,16 @@ msgid "Min Light"
msgstr "Indentar a la Der"
#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#, fuzzy
msgid "Propagation"
-msgstr "Navegación"
+msgstr "Propagación"
#: scene/3d/baked_lightmap.cpp
msgid "Image Path"
-msgstr ""
+msgstr "Ruta de la Imagen"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Light Data"
-msgstr "Con Data"
+msgstr "Datos de Luz"
#: scene/3d/bone_attachment.cpp scene/3d/physics_body.cpp
#, fuzzy
@@ -22318,7 +22625,7 @@ msgstr "Nombre de Nodo:"
#: scene/3d/camera.cpp
msgid "Keep Aspect"
-msgstr ""
+msgstr "Mantener Aspecto"
#: scene/3d/camera.cpp scene/3d/light.cpp scene/3d/reflection_probe.cpp
msgid "Cull Mask"
@@ -22330,13 +22637,12 @@ msgid "Doppler Tracking"
msgstr "Pista de Propiedades"
#: scene/3d/camera.cpp
-#, fuzzy
msgid "Projection"
-msgstr "Proyecto"
+msgstr "Proyección"
#: scene/3d/camera.cpp
msgid "FOV"
-msgstr ""
+msgstr "FOV"
#: scene/3d/camera.cpp
#, fuzzy
@@ -22344,22 +22650,20 @@ msgid "Frustum Offset"
msgstr "Offset de Grilla:"
#: scene/3d/camera.cpp
-#, fuzzy
msgid "Near"
-msgstr "Mas Cercano"
+msgstr "Cercano"
#: scene/3d/camera.cpp
msgid "Far"
-msgstr ""
+msgstr "Lejano"
#: scene/3d/camera.cpp scene/3d/collision_polygon.cpp scene/3d/spring_arm.cpp
#: scene/gui/control.cpp scene/resources/default_theme/default_theme.cpp
#: scene/resources/shape.cpp scene/resources/style_box.cpp
#: scene/resources/texture.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
-#, fuzzy
msgid "Margin"
-msgstr "Asignar Margen"
+msgstr "Margen"
#: scene/3d/camera.cpp
#, fuzzy
@@ -22484,9 +22788,8 @@ msgid "Flatness"
msgstr ""
#: scene/3d/cull_instance.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Portals"
-msgstr "Invertir Portales"
+msgstr "Portales"
#: scene/3d/cull_instance.cpp
#, fuzzy
@@ -22534,12 +22837,11 @@ msgstr ""
#: scene/3d/gi_probe.cpp
msgid "Subdiv"
-msgstr ""
+msgstr "Subdivisiones"
#: scene/3d/gi_probe.cpp
-#, fuzzy
msgid "Dynamic Range"
-msgstr "Biblioteca Dinámica"
+msgstr "Rango Dinámico"
#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
@@ -22547,9 +22849,8 @@ msgstr ""
#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
#: scene/resources/primitive_meshes.cpp
-#, fuzzy
msgid "Pixel Size"
-msgstr "Ajustar a Pixeles"
+msgstr "Tamaño de Píxel"
#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
msgid "Billboard"
@@ -22745,14 +23046,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-"NavigationMeshInstance debe ser un hijo o nieto de un nodo Navigation. Solo "
-"provee datos de navegación."
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
#, fuzzy
msgid "NavMesh"
@@ -22811,9 +23104,8 @@ msgid "Visibility AABB"
msgstr "Act/Desact. Visibilidad"
#: scene/3d/particles.cpp
-#, fuzzy
msgid "Draw Passes"
-msgstr "Llamadas de Dibujado:"
+msgstr "Pases de Dibujo"
#: scene/3d/particles.cpp
#, fuzzy
@@ -22834,9 +23126,8 @@ msgstr ""
"el recurso Curve de su Path padre."
#: scene/3d/path.cpp
-#, fuzzy
msgid "Rotation Mode"
-msgstr "Modo Rotar"
+msgstr "Modo de Rotación"
#: scene/3d/physics_body.cpp
msgid ""
@@ -23103,17 +23394,15 @@ msgstr "Parámetro Modificado:"
#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
-msgstr ""
+msgstr "Límite Angular"
#: scene/3d/physics_joint.cpp
-#, fuzzy
msgid "Upper"
-msgstr "Mayúsculas"
+msgstr "Superior"
#: scene/3d/physics_joint.cpp
-#, fuzzy
msgid "Lower"
-msgstr "Minúsculas"
+msgstr "Inferior"
#: scene/3d/physics_joint.cpp
msgid "Motor"
@@ -23160,14 +23449,12 @@ msgid "Linear Ortho"
msgstr "Ortogonal Trasera"
#: scene/3d/physics_joint.cpp
-#, fuzzy
msgid "Upper Angle"
-msgstr "Mayúsculas"
+msgstr "Ãngulo Superior"
#: scene/3d/physics_joint.cpp
-#, fuzzy
msgid "Lower Angle"
-msgstr "Minúsculas"
+msgstr "Ãngulo Inferior"
#: scene/3d/physics_joint.cpp
#, fuzzy
@@ -23205,7 +23492,7 @@ msgstr ""
#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
-msgstr ""
+msgstr "Límite Angular X"
#: scene/3d/physics_joint.cpp
msgid "Angular Motor X"
@@ -23232,7 +23519,7 @@ msgstr "Lineal"
#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
-msgstr ""
+msgstr "Límite Angular Y"
#: scene/3d/physics_joint.cpp
msgid "Angular Motor Y"
@@ -23315,18 +23602,16 @@ msgid "Grid Radius"
msgstr "Radio:"
#: scene/3d/ray_cast.cpp
-#, fuzzy
msgid "Debug Shape"
-msgstr "Depurador"
+msgstr "Forma de Depuración"
#: scene/3d/ray_cast.cpp scene/resources/style_box.cpp
msgid "Thickness"
msgstr ""
#: scene/3d/reflection_probe.cpp scene/main/viewport.cpp
-#, fuzzy
msgid "Update Mode"
-msgstr "Modo Rotar"
+msgstr "Modo de Actualización"
#: scene/3d/reflection_probe.cpp
#, fuzzy
@@ -23393,11 +23678,11 @@ msgstr ""
#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
-msgstr ""
+msgstr "Simplificación de Habitación"
#: scene/3d/room.cpp
msgid "Bound"
-msgstr ""
+msgstr "Límite"
#: scene/3d/room_group.cpp
#, fuzzy
@@ -23430,7 +23715,7 @@ msgstr "Sólo debe haber un RoomManager en el SceneTree."
#: scene/3d/room_manager.cpp
msgid "Main"
-msgstr ""
+msgstr "Principal"
#: scene/3d/room_manager.cpp scene/animation/animation_blend_tree.cpp
#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
@@ -23450,14 +23735,12 @@ msgid "PVS"
msgstr "FPS"
#: scene/3d/room_manager.cpp
-#, fuzzy
msgid "PVS Mode"
-msgstr "Modo Paneo"
+msgstr "Modo de CPV"
#: scene/3d/room_manager.cpp
-#, fuzzy
msgid "PVS Filename"
-msgstr "Archivo ZIP"
+msgstr "Nombre de CPV"
#: scene/3d/room_manager.cpp servers/visual_server.cpp
msgid "Gameplay"
@@ -23601,14 +23884,12 @@ msgid "Parent Collision Ignore"
msgstr "Crear Polígono de Colisión"
#: scene/3d/soft_body.cpp
-#, fuzzy
msgid "Simulation Precision"
-msgstr "El árbol de animación es inválido."
+msgstr "Precisión de Simulación"
#: scene/3d/soft_body.cpp
-#, fuzzy
msgid "Total Mass"
-msgstr "Total:"
+msgstr "Masa Total"
#: scene/3d/soft_body.cpp
msgid "Linear Stiffness"
@@ -23628,7 +23909,7 @@ msgstr ""
#: scene/3d/soft_body.cpp
msgid "Damping Coefficient"
-msgstr ""
+msgstr "Coeficiente de Amortiguación"
#: scene/3d/soft_body.cpp
msgid "Drag Coefficient"
@@ -23654,7 +23935,7 @@ msgstr ""
#: scene/3d/spatial.cpp
msgid "Matrix"
-msgstr ""
+msgstr "Matriz"
#: scene/3d/spatial.cpp
#, fuzzy
@@ -23672,7 +23953,7 @@ msgstr ""
#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
msgid "Opacity"
-msgstr ""
+msgstr "Opacidad"
#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
#, fuzzy
@@ -23701,9 +23982,8 @@ msgid "Per-Wheel Motion"
msgstr "Botón Rueda Abajo"
#: scene/3d/vehicle_body.cpp
-#, fuzzy
msgid "Engine Force"
-msgstr "Documentación Online"
+msgstr "Fuerza del Motor"
#: scene/3d/vehicle_body.cpp
msgid "Brake"
@@ -23727,9 +24007,8 @@ msgid "Use As Steering"
msgstr ""
#: scene/3d/vehicle_body.cpp
-#, fuzzy
msgid "Wheel"
-msgstr "Rueda Arriba."
+msgstr "Rueda"
#: scene/3d/vehicle_body.cpp
msgid "Roll Influence"
@@ -23741,9 +24020,8 @@ msgid "Friction Slip"
msgstr "Función"
#: scene/3d/vehicle_body.cpp
-#, fuzzy
msgid "Suspension"
-msgstr "Expresión"
+msgstr "Suspensión"
#: scene/3d/vehicle_body.cpp
#, fuzzy
@@ -23755,9 +24033,8 @@ msgid "AABB"
msgstr ""
#: scene/3d/visual_instance.cpp scene/resources/navigation_mesh.cpp
-#, fuzzy
msgid "Geometry"
-msgstr "Reintentar"
+msgstr "Geometría"
#: scene/3d/visual_instance.cpp
#, fuzzy
@@ -23795,7 +24072,7 @@ msgstr ""
#: scene/3d/visual_instance.cpp
msgid "LOD"
-msgstr ""
+msgstr "LOD"
#: scene/3d/visual_instance.cpp scene/animation/skeleton_ik.cpp
#: scene/resources/material.cpp
@@ -23844,19 +24121,16 @@ msgid "Animation not found: '%s'"
msgstr "No se encontró la animación: '%s'"
#: scene/animation/animation_blend_tree.cpp
-#, fuzzy
msgid "Mix Mode"
-msgstr "Nodo Mix"
+msgstr "Modo de Mezcla"
#: scene/animation/animation_blend_tree.cpp
-#, fuzzy
msgid "Fadein Time"
-msgstr "Tiempo de Crossfade (s):"
+msgstr "Tiempo de Fundido"
#: scene/animation/animation_blend_tree.cpp
-#, fuzzy
msgid "Fadeout Time"
-msgstr "Tiempo de Crossfade (s):"
+msgstr "Tiempo de Desvanecimiento"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
@@ -23899,9 +24173,8 @@ msgstr "Agregar Puerto de Entrada"
#: scene/animation/animation_blend_tree.cpp
#: scene/animation/animation_node_state_machine.cpp
-#, fuzzy
msgid "Xfade Time"
-msgstr "Tiempo de Crossfade (s):"
+msgstr "Tiempo de Fundido Cruzado"
#: scene/animation/animation_node_state_machine.cpp
#, fuzzy
@@ -23923,23 +24196,20 @@ msgid "Anim Apply Reset"
msgstr "Aplicar Reset de Animación"
#: scene/animation/animation_player.cpp
-#, fuzzy
msgid "Current Animation"
-msgstr "Establecer Animación"
+msgstr "Animación Actual"
#: scene/animation/animation_player.cpp
-#, fuzzy
msgid "Assigned Animation"
-msgstr "Agregar Animación"
+msgstr "Animación Asignada"
#: scene/animation/animation_player.cpp
msgid "Reset On Save"
-msgstr ""
+msgstr "Reiniciar al Guardar"
#: scene/animation/animation_player.cpp
-#, fuzzy
msgid "Current Animation Length"
-msgstr "Cambiar Duración de la Animación"
+msgstr "Duración de la Animación Actual"
#: scene/animation/animation_player.cpp
#, fuzzy
@@ -23947,9 +24217,8 @@ msgid "Current Animation Position"
msgstr "Añadir Punto de Animación"
#: scene/animation/animation_player.cpp
-#, fuzzy
msgid "Playback Options"
-msgstr "Opciones de Clase:"
+msgstr "Opciones de Reproducción"
#: scene/animation/animation_player.cpp
#, fuzzy
@@ -23958,7 +24227,7 @@ msgstr "Theme Predeterminado"
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
-msgstr ""
+msgstr "Modo de Llamada del Método"
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
@@ -24049,9 +24318,8 @@ msgid "Tip Bone"
msgstr "Huesos"
#: scene/animation/skeleton_ik.cpp
-#, fuzzy
msgid "Interpolation"
-msgstr "Modo de Interpolación"
+msgstr "Interpolación"
#: scene/animation/skeleton_ik.cpp
#, fuzzy
@@ -24081,9 +24349,8 @@ msgid "Playback Process Mode"
msgstr ""
#: scene/animation/tween.cpp
-#, fuzzy
msgid "Playback Speed"
-msgstr "Reproducir Escena"
+msgstr "Velocidad de Reproducción"
#: scene/audio/audio_stream_player.cpp
#, fuzzy
@@ -24098,13 +24365,12 @@ msgstr "Mantener Proporciones"
#: scene/gui/aspect_ratio_container.cpp scene/gui/texture_button.cpp
#: scene/gui/texture_rect.cpp
-#, fuzzy
msgid "Stretch Mode"
-msgstr "Modo Seleccionar"
+msgstr "Modo de Estiramiento"
#: scene/gui/aspect_ratio_container.cpp scene/gui/box_container.cpp
msgid "Alignment"
-msgstr ""
+msgstr "Alineación"
#: scene/gui/base_button.cpp
#, fuzzy
@@ -24112,9 +24378,8 @@ msgid "Shortcut In Tooltip"
msgstr "Mostrar Orígen"
#: scene/gui/base_button.cpp
-#, fuzzy
msgid "Action Mode"
-msgstr "Modo Icono"
+msgstr "Modo de Acción"
#: scene/gui/base_button.cpp
msgid "Enabled Focus Mode"
@@ -24125,9 +24390,8 @@ msgid "Keep Pressed Outside"
msgstr ""
#: scene/gui/base_button.cpp scene/gui/shortcut.cpp
-#, fuzzy
msgid "Shortcut"
-msgstr "Atajos"
+msgstr "Atajo"
#: scene/gui/base_button.cpp
#, fuzzy
@@ -24142,7 +24406,7 @@ msgstr "Copiar Texto"
#: scene/gui/button.cpp scene/gui/label.cpp scene/gui/line_edit.cpp
#: scene/gui/spin_box.cpp
msgid "Align"
-msgstr ""
+msgstr "Alinear"
#: scene/gui/button.cpp
msgid "Icon Align"
@@ -24306,7 +24570,7 @@ msgstr "Anterior"
#: scene/gui/control.cpp
msgid "Mouse"
-msgstr ""
+msgstr "Ratón"
#: scene/gui/control.cpp
#, fuzzy
@@ -25504,6 +25768,16 @@ msgid "3D Physics"
msgstr " (Física)"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Navegación"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Navegación"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -26931,7 +27205,7 @@ msgstr "Transición: "
msgid "Refraction"
msgstr "Separación:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -27016,7 +27290,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "Escalando: "
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "Editar Tipo de Variable"
#: scene/resources/navigation_mesh.cpp
@@ -27034,10 +27313,15 @@ msgid "Source Group Name"
msgstr "Fuente"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "Argumentos de Escena Principal:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -27047,11 +27331,16 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Regions"
+msgstr "Región"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Merge Size"
msgstr "Mergear desde Escena"
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -27065,6 +27354,11 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Details"
+msgstr "Mostrar Valores por Defecto"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Sample Distance"
msgstr "Elegir Instancia:"
@@ -27082,7 +27376,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -27500,6 +27794,11 @@ msgid "Scenario"
msgstr "Escena"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Navegación"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -27517,6 +27816,26 @@ msgstr "Lineal Izquierda"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Por Defecto"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Tamaño de Celda"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Prueba"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Editar Conexión:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/et.po b/editor/translations/et.po
index 96324c4d91..ca2105aa20 100644
--- a/editor/translations/et.po
+++ b/editor/translations/et.po
@@ -219,9 +219,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
#, fuzzy
msgid "Network"
msgstr "Võrgu profileerija"
@@ -334,7 +335,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Ebapiisav kogus baite nende dekodeerimiseks või kehtetu formaat."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "Väljendis on kehtetu sisend %i (mitte edastatud)"
#: core/math/expression.cpp
@@ -379,6 +381,15 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Liigutamisrežiim"
+
+#: core/os/input.cpp
+msgid "Use Accumulated Input"
+msgstr ""
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -571,7 +582,8 @@ msgstr "Kirjeldus"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "Käivita"
@@ -657,6 +669,11 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Stseeni tee:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -664,19 +681,13 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr ""
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-#, fuzzy
-msgid "Plugin Name"
-msgstr "Pistikprogrammi nimi:"
+msgid "Version Control Plugin Name"
+msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -788,7 +799,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "Filtreeri sõlmed"
@@ -1065,6 +1077,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Vaba"
@@ -1081,7 +1094,7 @@ msgstr "Peegel"
msgid "Time:"
msgstr "Aeg:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Väärtus:"
@@ -1328,10 +1341,71 @@ msgid "Remove this track."
msgstr "Eemalda see rada."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "Aeg (sek): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Doki asukoht"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Pööramisrežiim"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "Tüüp:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Vigane nimi."
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "Heli kuulaja"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Käivita"
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Animatsiooni klipid:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "Lülita rada sisse"
@@ -1546,7 +1620,8 @@ msgid "Add Method Track Key"
msgstr "Lisa meetodi raja võti"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "Meetod ei ole leitud objektis: "
#: editor/animation_track_editor.cpp
@@ -2142,7 +2217,7 @@ msgid "Open"
msgstr "Ava"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
+msgid "Owners of: %s (Total: %d)"
msgstr ""
#: editor/dependency_editor.cpp
@@ -2440,7 +2515,7 @@ msgid "Bus Options"
msgstr "Klassi valikud"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Duplikeeri"
@@ -2492,8 +2567,9 @@ msgstr "Ava heliliinide paigutus"
msgid "There is no '%s' file."
msgstr "Faili '%s' ei ole eksisteeri."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "Paigutus"
#: editor/editor_audio_buses.cpp
@@ -2698,6 +2774,23 @@ msgid "Choose"
msgstr "Vali"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "Kopeeri sõlme tee"
+
+#: editor/editor_export.cpp
+msgid "Completed successfully."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed."
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Salvestan faili:"
@@ -2710,6 +2803,31 @@ msgid "Packing"
msgstr "Pakin"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Salvesta kui"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "Ei saanud luua kausta."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Ei saanud luua kausta."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Faili ei saa kirjutamiseks avada:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Salvesta kui"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2830,11 +2948,29 @@ msgstr ""
msgid "Custom release template not found."
msgstr ""
+#: editor/editor_export.cpp
+msgid "Prepare Template"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "The given export path doesn't exist."
+msgstr ""
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "Mallifaili ei leitud:"
#: editor/editor_export.cpp
+msgid "Failed to copy export template."
+msgstr ""
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr ""
@@ -3012,9 +3148,9 @@ msgid "Import"
msgstr "Impordi"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Ekspordi"
@@ -4128,15 +4264,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Stseen"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Stseeni tee:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4262,6 +4389,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Nimeta ümber"
@@ -4290,6 +4421,10 @@ msgstr ""
msgid "Add a new scene."
msgstr "Lisa uus stseen."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Stseen"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
@@ -4931,11 +5066,14 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#, fuzzy
+msgid "Size:"
msgstr "Suurus: "
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+msgid "Page:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
@@ -5032,6 +5170,11 @@ msgid ""
"as runnable."
msgstr ""
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Projekt"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -5302,7 +5445,9 @@ msgid "Draw Spaces"
msgstr "Kuvamise kutsungid"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr ""
@@ -5865,10 +6010,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "projektihaldur"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -6603,14 +6750,6 @@ msgid "Replace in Files"
msgstr "Ava fail(id)"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr ""
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr ""
@@ -6739,7 +6878,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Filtreeri sõlmed"
@@ -7000,7 +7139,7 @@ msgid "Generating Lightmaps"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+msgid "Generating for Mesh:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -7028,6 +7167,18 @@ msgid "Saving..."
msgstr ""
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7826,10 +7977,12 @@ msgstr ""
msgid "Directions"
msgstr ""
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr ""
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr ""
@@ -7984,8 +8137,9 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
-msgstr ""
+#, fuzzy
+msgid "Transition:"
+msgstr "Tõlked"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Play Mode:"
@@ -8001,11 +8155,6 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr ""
@@ -8894,6 +9043,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr ""
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -8958,6 +9108,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "Paigutus"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -9701,7 +9855,7 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+msgid "Emission Source:"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
@@ -9931,6 +10085,7 @@ msgid "Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr ""
@@ -10084,13 +10239,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "Tüüp:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -10099,10 +10247,6 @@ msgstr ""
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -10805,13 +10949,17 @@ msgstr "Pööramisrežiim"
msgid "Translate"
msgstr "Tõlked"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr ""
+#, fuzzy
+msgid "Scaling:"
+msgstr "Skaleerimisrežiim"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "Tõlked:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -10835,12 +10983,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
-msgid "Size:"
-msgstr "Suurus: "
-
-#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
msgid "Objects Drawn:"
msgstr "Objekte kuvatud"
@@ -11327,8 +11469,9 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
-msgstr ""
+#, fuzzy
+msgid "Convert to MeshInstance2D"
+msgstr "Teisenda..."
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Invalid geometry, can't create polygon."
@@ -11359,15 +11502,16 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "Animatsioon"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12330,8 +12474,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr ""
@@ -13778,31 +13921,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr ""
@@ -13941,6 +14063,11 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Projekti asutajad"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr ""
@@ -15393,8 +15520,9 @@ msgid "Attach Node Script"
msgstr ""
#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr ""
+#, fuzzy
+msgid "Remote %s:"
+msgstr "Eemalda"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -16236,7 +16364,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
msgid "Polygon"
msgstr ""
@@ -16406,7 +16534,8 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+#, fuzzy
+msgid "Libraries:"
msgstr "Teegid: "
#: modules/gdnative/nativescript/nativescript.cpp
@@ -16832,7 +16961,6 @@ msgid "Use In Baked Light"
msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -16862,6 +16990,19 @@ msgstr "Kustuta sõlm(ed)"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Kustuta animatsioon?"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Kustuta sõlm(ed)"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -17270,7 +17411,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17278,7 +17419,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17645,7 +17786,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17653,7 +17794,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17816,12 +17957,14 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
+#, fuzzy
+msgid "Invalid argument of type:"
+msgstr "Kehtetud argumendid '%s' ehitamise jaoks"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
+#, fuzzy
+msgid "Invalid arguments:"
+msgstr "Vigane nimi."
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -17833,12 +17976,14 @@ msgid "Var Name"
msgstr "Nimi"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableGet not found in script:"
+msgstr "Meetod ei ole leitud objektis: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableSet not found in script:"
+msgstr "Meetod ei ole leitud objektis: "
#: modules/visual_script/visual_script_nodes.cpp
msgid "Preload"
@@ -18370,10 +18515,6 @@ msgid "Could not execute on device."
msgstr "Ei saanud luua kausta."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18477,12 +18618,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Signaal"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18498,6 +18643,10 @@ msgid "Could not find keystore, unable to export."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Could not start apksigner executable."
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -18527,7 +18676,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18538,20 +18687,19 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
-msgstr ""
+#, fuzzy
+msgid "Could not export project files to gradle project."
+msgstr "Ei saanud luua kausta."
#: platform/android/export/export_plugin.cpp
msgid "Could not write expansion package file!"
@@ -18563,7 +18711,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -18579,7 +18727,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr "Paigutuse nime ei leitud!"
#: platform/android/export/export_plugin.cpp
@@ -18588,15 +18736,12 @@ msgid "Creating APK..."
msgstr "Sätted..."
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -18607,7 +18752,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr "Ei saanud luua kausta."
#: platform/android/export/export_plugin.cpp
@@ -18848,6 +18993,16 @@ msgstr "Kustuta sõlm(ed)"
msgid "Custom BG Color"
msgstr "Kustuta sõlm(ed)"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+msgid "Prepare Templates"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Mallifaili ei leitud:"
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18869,23 +19024,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
-msgstr ""
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
+msgstr "Ei saanud luua kausta."
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
-msgstr ""
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
+msgstr "Vigane nimi."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr ""
+#, fuzzy
+msgid "Could not write file: \"%s\"."
+msgstr "Ei saanud luua kausta."
+
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Kuva failikuvajas"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read file:"
+msgid "Could not read file: \"%s\"."
msgstr "Ei saanud luua kausta."
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "Versioon:"
@@ -18960,17 +19127,17 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr "Ei saanud luua kausta."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr "Ei saanud luua kausta."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr "Viga TileSeti salvestamisel!"
#: platform/javascript/export/export.cpp
@@ -19261,9 +19428,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Ei saanud luua kausta."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "Ei saanud luua kausta."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Tõlked"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19279,20 +19465,74 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "Ainult konstandid"
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Tõrge faili '%s' salvestamisel"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Kirjeldus"
+
+#: platform/osx/export/export.cpp
+msgid "Could not start hdiutil executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "Loon pisipilti"
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Vigane nimi."
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -19300,7 +19540,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -19341,6 +19581,15 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "Projekt"
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr ""
@@ -19649,6 +19898,11 @@ msgid "Debug Algorithm"
msgstr "Siluja"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Ei saanud luua kausta."
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -19696,6 +19950,65 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Konstant"
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Kehtetud argumendid '%s' ehitamise jaoks"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Vigane nimi."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Failed to remove temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19717,6 +20030,23 @@ msgid "Invalid product version:"
msgstr "Vigane nimi."
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Vigane nimi."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "Uus aken"
@@ -19733,6 +20063,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -19854,7 +20188,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
@@ -20659,13 +20994,16 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
+msgid "Navpoly"
msgstr ""
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Kustuta sõlm(ed)"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Travel Cost"
msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
@@ -21798,12 +22136,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -24367,6 +24699,16 @@ msgid "3D Physics"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Kustuta animatsioon?"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Kustuta animatsioon?"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -25743,7 +26085,7 @@ msgstr "Tõlked"
msgid "Refraction"
msgstr "Versioon:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -25823,8 +26165,14 @@ msgid "Visible Instance Count"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Sample Partition Type"
-msgstr ""
+#, fuzzy
+msgid "Sampling"
+msgstr "Skaleerimisrežiim"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
+msgstr "Versioon:"
#: scene/resources/navigation_mesh.cpp
msgid "Parsed Geometry Type"
@@ -25840,10 +26188,15 @@ msgid "Source Group Name"
msgstr "Skripti nimi:"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "Vidinad"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -25853,11 +26206,16 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Regions"
+msgstr "Hiljuti avatud"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Merge Size"
msgstr "Liida stseenist"
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -25870,6 +26228,11 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Details"
+msgstr "Laadi vaikimisi"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -25886,7 +26249,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -26289,6 +26652,11 @@ msgid "Scenario"
msgstr "Stseen"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Kustuta sõlm(ed)"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -26306,6 +26674,26 @@ msgstr "Vaikimisi"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Vaikimisi"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Kinemaatiline eelvaade"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Testimine"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Ühenda"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/eu.po b/editor/translations/eu.po
index 4ac224b8c8..cfbf2945ff 100644
--- a/editor/translations/eu.po
+++ b/editor/translations/eu.po
@@ -204,9 +204,10 @@ msgid "Data"
msgstr "Datuak"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr "Sarea"
@@ -311,7 +312,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Ez daude byte nahikoa byteak deskodetzeko, edo formatua ez da zuzena."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "%i (onartu gabea) sarrera baliogabea espresioan"
#: core/math/expression.cpp
@@ -356,6 +358,15 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Atxikitze modua:"
+
+#: core/os/input.cpp
+msgid "Use Accumulated Input"
+msgstr ""
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -543,7 +554,8 @@ msgstr "Deskripzioa"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr ""
@@ -627,6 +639,11 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Eszenaren bidea:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -634,18 +651,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Bertsio kontrola"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Bertsio kontrola"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr ""
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Bertsio kontrola"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -753,7 +767,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "Iragazkiak..."
@@ -1027,6 +1042,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Libre"
@@ -1043,7 +1059,7 @@ msgstr "Ispilua"
msgid "Time:"
msgstr "Denbora:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Balioa:"
@@ -1290,10 +1306,70 @@ msgid "Remove this track."
msgstr "Pista hau ezabatu."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "Denbora (s): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Kokapena"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Erabili biraketa atxikitzea"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Animazio izen baliogabea!"
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Stream:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Atxikitze modua:"
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Animazio klipak:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "Pista Akt./Desakt."
@@ -1510,7 +1586,7 @@ msgid "Add Method Track Key"
msgstr ""
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+msgid "Method not found in object:"
msgstr ""
#: editor/animation_track_editor.cpp
@@ -2103,8 +2179,8 @@ msgid "Open"
msgstr "Ireki"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Hauen jabeak:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
#, fuzzy
@@ -2410,7 +2486,7 @@ msgid "Bus Options"
msgstr "Klaseko aukerak"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Bikoiztu"
@@ -2462,8 +2538,8 @@ msgstr ""
msgid "There is no '%s' file."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+msgid "Layout:"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -2666,6 +2742,23 @@ msgid "Choose"
msgstr ""
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "Paketea ondo instalatu da!"
+
+#: editor/editor_export.cpp
+msgid "Failed."
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr ""
@@ -2678,6 +2771,28 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Gorde honela"
+
+#: editor/editor_export.cpp
+msgid "Cannot create file \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed to export project files."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Can't open file to read from path \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Gorde honela"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2781,8 +2896,28 @@ msgstr ""
msgid "Custom release template not found."
msgstr ""
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "Hautatu txantiloi fitxategia"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "The given export path doesn't exist."
+msgstr ""
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
+msgstr "Paketearen edukia:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "Kudeatu esportazio txantiloiak..."
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
msgstr ""
#: editor/editor_export.cpp
@@ -2957,9 +3092,9 @@ msgid "Import"
msgstr ""
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Esportatu"
@@ -4053,15 +4188,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Eszenaren bidea:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4182,6 +4308,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Bertsio kontrola"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr ""
@@ -4209,6 +4339,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
@@ -4847,11 +4981,13 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+msgid "Page:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
@@ -4947,6 +5083,11 @@ msgid ""
"as runnable."
msgstr ""
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Proiektua"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -5212,7 +5353,9 @@ msgid "Draw Spaces"
msgstr ""
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr ""
@@ -5766,10 +5909,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Sorting Order"
msgstr ""
@@ -6512,14 +6657,6 @@ msgid "Replace in Files"
msgstr "Ireki fitxategia(k)"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr ""
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr ""
@@ -6648,7 +6785,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Iragazkiak..."
@@ -6902,7 +7039,7 @@ msgid "Generating Lightmaps"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+msgid "Generating for Mesh:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -6930,6 +7067,18 @@ msgid "Saving..."
msgstr ""
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7723,10 +7872,12 @@ msgstr ""
msgid "Directions"
msgstr ""
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr ""
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr ""
@@ -7881,8 +8032,9 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
-msgstr ""
+#, fuzzy
+msgid "Transition:"
+msgstr "Trantsizio nodoa"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Play Mode:"
@@ -7898,11 +8050,6 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr ""
@@ -8791,6 +8938,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr ""
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -8856,6 +9004,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -9602,8 +9754,9 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr ""
+#, fuzzy
+msgid "Emission Source:"
+msgstr "Talka formak ikusgai"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
@@ -9832,6 +9985,7 @@ msgid "Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr ""
@@ -9985,13 +10139,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -10000,10 +10147,6 @@ msgstr ""
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -10697,13 +10840,16 @@ msgstr ""
msgid "Translate"
msgstr "Translazio atzikitzea:"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
+msgid "Scaling:"
msgstr ""
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "Translazio atzikitzea:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -10726,11 +10872,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11208,7 +11349,7 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+msgid "Convert to MeshInstance2D"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11240,15 +11381,16 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "Bikoiztu animazioa"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12210,8 +12352,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr ""
@@ -13647,31 +13788,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr ""
@@ -13808,6 +13928,11 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Proiektuaren sortzaileak"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr ""
@@ -15260,8 +15385,9 @@ msgid "Attach Node Script"
msgstr ""
#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr ""
+#, fuzzy
+msgid "Remote %s:"
+msgstr "Kendu elementu guztiak"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -16096,7 +16222,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
msgid "Polygon"
msgstr ""
@@ -16267,7 +16393,7 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+msgid "Libraries:"
msgstr ""
#: modules/gdnative/nativescript/nativescript.cpp
@@ -16684,7 +16810,6 @@ msgid "Use In Baked Light"
msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -16713,6 +16838,19 @@ msgstr "Blend4 nodoa"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Ezabatu animazioa?"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Trantsizio nodoa"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -17116,7 +17254,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17124,7 +17262,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17490,7 +17628,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17498,7 +17636,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17657,12 +17795,14 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
+#, fuzzy
+msgid "Invalid argument of type:"
+msgstr "'%s' eraikitzeko argumentu baliogabeak"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
+#, fuzzy
+msgid "Invalid arguments:"
+msgstr "'%s' eraikitzeko argumentu baliogabeak"
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -17673,11 +17813,11 @@ msgid "Var Name"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+msgid "VariableGet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+msgid "VariableSet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
@@ -18197,10 +18337,6 @@ msgid "Could not execute on device."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18304,12 +18440,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Seinalea"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18328,6 +18468,10 @@ msgid "Could not find keystore, unable to export."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Could not start apksigner executable."
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -18356,7 +18500,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18367,19 +18511,17 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+msgid "Could not export project files to gradle project."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18392,7 +18534,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -18408,7 +18550,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr "Paketearen edukia:"
#: platform/android/export/export_plugin.cpp
@@ -18416,15 +18558,12 @@ msgid "Creating APK..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -18434,8 +18573,9 @@ msgid "Adding files..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
-msgstr ""
+#, fuzzy
+msgid "Could not export project files."
+msgstr "Ezin izan da scripta exekutatu:"
#: platform/android/export/export_plugin.cpp
msgid "Aligning APK..."
@@ -18672,6 +18812,17 @@ msgstr "Funtzioak:"
msgid "Custom BG Color"
msgstr "Funtzioak:"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "Godot esportazio-txantiloiak"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Esportazio-txantiloi kudeatzailea"
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18693,23 +18844,34 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Could not open template for export: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
-msgstr ""
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
+msgstr "Animazio izen baliogabea!"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr ""
+#, fuzzy
+msgid "Could not write file: \"%s\"."
+msgstr "Ezin izan da scripta exekutatu:"
+
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Edukiak:"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read file:"
+msgid "Could not read file: \"%s\"."
msgstr "Ezin izan da scripta exekutatu:"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "Enumerazioak"
@@ -18784,15 +18946,16 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
-msgstr ""
+#, fuzzy
+msgid "Could not read HTML shell: \"%s\"."
+msgstr "Ezin izan da scripta exekutatu:"
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr ""
#: platform/javascript/export/export.cpp
@@ -19078,9 +19241,27 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Ezin izan da scripta exekutatu:"
+
+#: platform/osx/export/export.cpp
+msgid "Could not start xcrun executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Erabili biraketa atxikitzea"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19096,19 +19277,72 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "Konstanteak bakarrik"
#: platform/osx/export/export.cpp
+msgid "Cannot sign file %s."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Deskripzioa"
+
+#: platform/osx/export/export.cpp
+msgid "Could not start hdiutil executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Creating app bundle"
msgstr ""
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Animazio izen baliogabea!"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -19116,7 +19350,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -19157,6 +19391,15 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "Proiektua"
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr ""
@@ -19461,6 +19704,10 @@ msgid "Debug Algorithm"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Failed to rename temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -19506,6 +19753,65 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Itsatsi animazioa"
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "'%s' eraikitzeko argumentu baliogabeak"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Animazio izen baliogabea!"
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Failed to remove temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19527,6 +19833,23 @@ msgid "Invalid product version:"
msgstr "Animazio izen baliogabea!"
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Animazio izen baliogabea!"
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Windows"
msgstr ""
@@ -19542,6 +19865,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -19658,7 +19985,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
@@ -20443,13 +20771,16 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
+msgid "Navpoly"
msgstr ""
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Blend4 nodoa"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Travel Cost"
msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
@@ -21567,12 +21898,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -24084,6 +24409,16 @@ msgid "3D Physics"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Trantsizio nodoa"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Trantsizio nodoa"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -25435,7 +25770,7 @@ msgstr "Trantsizio nodoa"
msgid "Refraction"
msgstr "Enumerazioak"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -25513,10 +25848,15 @@ msgid "Visible Instance Count"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Sample Partition Type"
+msgid "Sampling"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
+msgstr "Enumerazioak"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Parsed Geometry Type"
msgstr ""
@@ -25529,10 +25869,15 @@ msgid "Source Group Name"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "Edukiak:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -25541,11 +25886,16 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Regions"
+msgstr "Funtzioak:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -25558,6 +25908,11 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Details"
+msgstr "Inportatu profila(k)"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -25574,7 +25929,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -25969,6 +26324,11 @@ msgid "Scenario"
msgstr "Eszenaren bidea:"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Trantsizio nodoa"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -25986,6 +26346,26 @@ msgstr "Birkargatu azala"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Aurrebista:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Aurrebista:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Birkargatu azala"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Edukiak:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/fa.po b/editor/translations/fa.po
index c46d6a56a2..43d79c6ede 100644
--- a/editor/translations/fa.po
+++ b/editor/translations/fa.po
@@ -240,9 +240,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
#, fuzzy
msgid "Network"
msgstr "صدور پروژه"
@@ -356,7 +357,8 @@ msgstr ""
"است ."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "ورودی نامعتبر i% (تایید نشده) در عبارت"
#: core/math/expression.cpp
@@ -401,6 +403,15 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "انتخاب حالت"
+
+#: core/os/input.cpp
+msgid "Use Accumulated Input"
+msgstr ""
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -600,7 +611,8 @@ msgstr "تعریÙ"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "اجرا"
@@ -689,6 +701,10 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+msgid "Scene Naming"
+msgstr ""
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -696,19 +712,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "مهار نسخه"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "مهار نسخه"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Ø§ÙØ²ÙˆÙ†Ù‡â€ŒÙ‡Ø§"
+msgid "Version Control Plugin Name"
+msgstr "مهار نسخه"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -818,7 +830,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "صاÙÛŒ:"
@@ -1097,6 +1110,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "آزاد کردن"
@@ -1113,7 +1127,7 @@ msgstr "بازتاب"
msgid "Time:"
msgstr "زمان:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "مقدار:"
@@ -1361,10 +1375,72 @@ msgid "Remove this track."
msgstr "این ترک را حذ٠کن."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "زمان(s): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "برداشتن موج"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "وضعیت:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "نام دارایی ایندکس نامعتبر."
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Easing:"
+msgstr "انتقال"
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "Ø§ÙØ²ÙˆØ¯Ù† مورد"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "شروع"
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "گره انیمیشن"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "ضامن ترک ÙØ¹Ø§Ù„ است"
@@ -1577,7 +1653,8 @@ msgid "Add Method Track Key"
msgstr "Ø§ÙØ²ÙˆØ¯Ù† تابع کلید میسر"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "تابع در شئ ÛŒØ§ÙØª نشد: "
#: editor/animation_track_editor.cpp
@@ -2187,8 +2264,8 @@ msgid "Open"
msgstr "باز کن"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "مالکانÙ:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
msgid ""
@@ -2489,7 +2566,7 @@ msgid "Bus Options"
msgstr "گزینه های اتوبوس"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "تکثیر کردن"
@@ -2541,8 +2618,9 @@ msgstr "چیدمان اتوبوس صوتی را باز کنید"
msgid "There is no '%s' file."
msgstr "پرونده '٪ s' وجود ندارد."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "چیدمان"
#: editor/editor_audio_buses.cpp
@@ -2746,6 +2824,24 @@ msgid "Choose"
msgstr "انتخاب کنید"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "کپی کردن مسیر node"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "بسته با موÙقیت نصب شد!"
+
+#: editor/editor_export.cpp
+msgid "Failed."
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "ذخیره ÙØ§ÛŒÙ„:"
@@ -2758,6 +2854,31 @@ msgid "Packing"
msgstr "بسته بندی"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "ذخیره در"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "ناتوان در ساختن پوشه."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "نمی‌تواند یک پوشه ایجاد شود."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "ناتوان در گشودن پروژه"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "ذخیره در"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2873,8 +2994,29 @@ msgstr ""
msgid "Custom release template not found."
msgstr ""
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "مدیریت صدور قالب ها"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "پرونده موجود نیست."
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
+msgstr "طول انیمیشن (به ثانیه)."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "نام دارایی ایندکس نامعتبر."
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
msgstr ""
#: editor/editor_export.cpp
@@ -3051,9 +3193,9 @@ msgid "Import"
msgstr "وارد کردن"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "خروجی"
@@ -4153,14 +4295,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "صحنه"
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4288,6 +4422,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "مهار نسخه"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "تغییر نام"
@@ -4316,6 +4454,10 @@ msgstr ""
msgid "Add a new scene."
msgstr "Ø§ÙØ²ÙˆØ¯Ù† صحنه جدید."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "صحنه"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
@@ -4978,11 +5120,13 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+msgid "Page:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
@@ -5081,6 +5225,11 @@ msgid ""
"as runnable."
msgstr ""
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "پروژه"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -5357,7 +5506,9 @@ msgid "Draw Spaces"
msgstr "ÙØ±Ø§Ø®ÙˆØ§Ù†ÛŒ"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr ""
@@ -5937,10 +6088,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "مدیر پروژه"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -6732,16 +6885,6 @@ msgstr "جایگزینی همه"
#: editor/find_in_files.cpp
#, fuzzy
-msgid "Find: "
-msgstr "ÛŒØ§ÙØªÙ†"
-
-#: editor/find_in_files.cpp
-#, fuzzy
-msgid "Replace: "
-msgstr "جایگزینی"
-
-#: editor/find_in_files.cpp
-#, fuzzy
msgid "Replace All (NO UNDO)"
msgstr "جایگزینی همه"
@@ -6879,7 +7022,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "صاÙÛŒ:"
@@ -7142,7 +7285,7 @@ msgid "Generating Lightmaps"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+msgid "Generating for Mesh:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -7170,6 +7313,18 @@ msgid "Saving..."
msgstr ""
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -8008,11 +8163,13 @@ msgstr ""
msgid "Directions"
msgstr "توضیح"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
msgid "Past"
msgstr "چسباندن"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr ""
@@ -8178,7 +8335,7 @@ msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
#, fuzzy
-msgid "Transition: "
+msgid "Transition:"
msgstr "انتقال"
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8197,11 +8354,6 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr ""
@@ -9137,6 +9289,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr "پخش Ø³ÙØ§Ø±Ø´ÛŒ صحنه"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9201,6 +9354,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "چیدمان"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -9980,8 +10137,9 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr ""
+#, fuzzy
+msgid "Emission Source:"
+msgstr "انتقال را در انیمیشن تغییر بده"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
@@ -10223,6 +10381,7 @@ msgid "Points"
msgstr "برداشتن نقطه"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
#, fuzzy
msgid "Polygons"
msgstr "ویرایش سیگنال"
@@ -10380,13 +10539,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr "گشودن در ویرایشگر"
@@ -10395,11 +10547,6 @@ msgstr "گشودن در ویرایشگر"
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#, fuzzy
-msgid "ResourcePreloader"
-msgstr "منبع"
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -11149,13 +11296,16 @@ msgstr "وضعیت:"
msgid "Translate"
msgstr "ترجمه‌ها"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr ""
+#, fuzzy
+msgid "Scaling:"
+msgstr "بومی"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Translating: "
+msgid "Translating:"
msgstr "انتقال"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -11180,11 +11330,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11688,7 +11833,7 @@ msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
#, fuzzy
-msgid "Convert to Mesh2D"
+msgid "Convert to MeshInstance2D"
msgstr "اتصال به گره:"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11722,15 +11867,16 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "Ø§ÙØ²ÙˆØ¯Ù† وظیÙÙ‡"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12758,8 +12904,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
#, fuzzy
msgid "Region"
msgstr "گره انیمیشن"
@@ -14291,34 +14436,12 @@ msgid "Delete preset '%s'?"
msgstr "آیا پرونده‌های انتخاب شده حذ٠شود؟"
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
#, fuzzy
msgid "Exporting All"
msgstr "صدور"
#: editor/project_export.cpp
#, fuzzy
-msgid "The given export path doesn't exist:"
-msgstr "پرونده موجود نیست."
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
-#, fuzzy
msgid "Export Path"
msgstr "صدور پروژه"
@@ -14461,6 +14584,11 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "بنیان‌گذاران پروژه"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "مدیریت صدور قالب ها"
@@ -15995,7 +16123,7 @@ msgstr "صحنه جدید"
#: editor/script_editor_debugger.cpp
#, fuzzy
-msgid "Remote "
+msgid "Remote %s:"
msgstr "برداشتن"
#: editor/script_editor_debugger.cpp
@@ -16863,7 +16991,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "ویرایش سیگنال"
@@ -17041,8 +17169,9 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
-msgstr ""
+#, fuzzy
+msgid "Libraries:"
+msgstr "صادکردن ÙØ§ÛŒÙ„ کتابخانه ای"
#: modules/gdnative/nativescript/nativescript.cpp
#, fuzzy
@@ -17473,7 +17602,6 @@ msgid "Use In Baked Light"
msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17503,6 +17631,19 @@ msgstr "ساختن گره"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "انیمیشن حذ٠شود؟"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "گره انیمیشن"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Next Plane"
@@ -17931,7 +18072,7 @@ msgstr ""
#: modules/visual_script/visual_script.cpp
#, fuzzy
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr "گره ،‌ یک سلسله خروجی نامعتبر را برگردانده است: "
#: modules/visual_script/visual_script.cpp
@@ -17941,7 +18082,7 @@ msgstr "بیت دنباله پیدا شد ولی گره موجود در پشته
#: modules/visual_script/visual_script.cpp
#, fuzzy
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr "سرریزی پشته با عمق پشته: "
#: modules/visual_script/visual_script.cpp
@@ -18339,7 +18480,8 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+#, fuzzy
+msgid "Input type not iterable:"
msgstr "نوع ورودی قابل تکرار نیست: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18349,7 +18491,7 @@ msgstr "تکرارگر نامعتبر شد"
#: modules/visual_script/visual_script_flow_control.cpp
#, fuzzy
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr "تکرارگر نامعتبر شد: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18518,11 +18660,13 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
+#, fuzzy
+msgid "Invalid argument of type:"
msgstr ": آرگومان نوع نامعتبر "
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
+#, fuzzy
+msgid "Invalid arguments:"
msgstr ": آرگومان‌های نامعتبر: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18535,11 +18679,13 @@ msgid "Var Name"
msgstr "نام"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+#, fuzzy
+msgid "VariableGet not found in script:"
msgstr "VariableGet در اسکریپت پیدا نشد: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+#, fuzzy
+msgid "VariableSet not found in script:"
msgstr "VariableSet در اسکریپت پیدا نشد: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -19082,10 +19228,6 @@ msgid "Could not execute on device."
msgstr "ناتوان در ساختن پوشه."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -19190,12 +19332,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "سیگنال‌"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19212,6 +19358,10 @@ msgid "Could not find keystore, unable to export."
msgstr "نمی‌تواند یک پوشه ایجاد شود."
#: platform/android/export/export_plugin.cpp
+msgid "Could not start apksigner executable."
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -19242,7 +19392,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19253,20 +19403,19 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
-msgstr ""
+#, fuzzy
+msgid "Could not export project files to gradle project."
+msgstr "نمی‌تواند یک پوشه ایجاد شود."
#: platform/android/export/export_plugin.cpp
#, fuzzy
@@ -19279,7 +19428,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -19295,7 +19444,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr "طول انیمیشن (به ثانیه)."
#: platform/android/export/export_plugin.cpp
@@ -19305,15 +19454,12 @@ msgstr "در حال اتصال..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
msgstr "نمی‌تواند یک پوشه ایجاد شود."
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -19325,7 +19471,7 @@ msgstr "ÛŒØ§ÙØªÙ†"
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr "نمی‌تواند یک پوشه ایجاد شود."
#: platform/android/export/export_plugin.cpp
@@ -19568,6 +19714,16 @@ msgstr "ساختن گره"
msgid "Custom BG Color"
msgstr "ساختن گره"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "مدیریت صدور قالب ها"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Export template not found."
+msgstr ""
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -19591,25 +19747,34 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not open template for export:"
+msgid "Could not open template for export: \"%s\"."
msgstr "نمی‌تواند یک پوشه ایجاد شود."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Invalid export template:"
+msgid "Invalid export template: \"%s\"."
msgstr "نام دارایی ایندکس نامعتبر."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not write file:"
+msgid "Could not write file: \"%s\"."
msgstr "نمی‌تواند یک پوشه ایجاد شود."
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "محتواها:"
+
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read file:"
+msgid "Could not read file: \"%s\"."
msgstr "نمی‌تواند یک پوشه ایجاد شود."
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "شمارش ها:"
@@ -19685,17 +19850,17 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr "نمی‌تواند یک پوشه ایجاد شود."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr "ناتوان در ساختن پوشه."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr "خطا در بارگذاری:"
#: platform/javascript/export/export.cpp
@@ -19992,9 +20157,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "نمی‌تواند یک پوشه ایجاد شود."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "ناتوان در ساختن پوشه."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "بومی‌سازی"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -20010,20 +20194,74 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "چیزی ÛŒØ§ÙØª نشد!"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "خطای ذخیره کردن پرونده: %s"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "توضیح"
+
+#: platform/osx/export/export.cpp
+msgid "Could not start hdiutil executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Creating app bundle"
msgstr ""
#: platform/osx/export/export.cpp
#, fuzzy
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr "نمی‌تواند یک پوشه ایجاد شود."
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "نام دارایی ایندکس نامعتبر."
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -20031,7 +20269,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -20073,6 +20311,16 @@ msgstr ""
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "ZIP Creation"
+msgstr "پروژه"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr "نمی‌تواند یک پوشه ایجاد شود."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Invalid bundle identifier:"
msgstr "نام یک شناسه‌ی معتبر نیست:"
@@ -20387,6 +20635,11 @@ msgid "Debug Algorithm"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "امکان حذ٠وجود ندارد :"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20433,6 +20686,70 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "ثابت"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "نمی‌تواند یک پوشه ایجاد شود."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "نمی‌تواند یک پوشه ایجاد شود."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "نمی‌تواند یک پوشه ایجاد شود."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "نمی‌تواند یک پوشه ایجاد شود."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "نام یک شناسه‌ی معتبر نیست:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "نام نامعتبر."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "امکان حذ٠وجود ندارد :"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20454,6 +20771,23 @@ msgid "Invalid product version:"
msgstr "اندازه‌ی قلم نامعتبر."
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "باید از یک پسوند معتبر Ø§Ø³ØªÙØ§Ø¯Ù‡ شود."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "چارچوب جدید"
@@ -20470,6 +20804,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20591,7 +20929,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
@@ -21418,15 +21757,16 @@ msgstr ""
"Ù„Ø·ÙØ§ یک دارایی تعیین یا یک چندضلعی ترسیم کنید."
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
+msgid "Navpoly"
msgstr ""
-"NavigationPolygonInstance باید یک ÙØ±Ø²Ù†Ø¯ یا نوه‌ی یک گره Navigation2D باشد. "
-"این تنها یک داده‌ی پیمایش را ÙØ±Ø§Ù‡Ù… می‌کند."
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "ساختن گره"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Travel Cost"
msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
@@ -22600,14 +22940,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-"NavigationMeshInstance باید یک ÙØ±Ø²Ù†Ø¯ یا نوه‌ی یک گره Navigation باشد. این "
-"تنها داده‌ی پیمایش را ÙØ±Ø§Ù‡Ù… می‌کند."
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -25224,6 +25556,16 @@ msgid "3D Physics"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "گره انیمیشن"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "گره انیمیشن"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -26618,7 +26960,7 @@ msgstr "انتقال"
msgid "Refraction"
msgstr "شمارش ها:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -26699,7 +27041,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "بومی"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "متغیر را ویرایش کن:"
#: scene/resources/navigation_mesh.cpp
@@ -26716,10 +27063,15 @@ msgid "Source Group Name"
msgstr "منبع"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "نشانوندها:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -26729,11 +27081,16 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Regions"
+msgstr "گره انیمیشن"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Merge Size"
msgstr "ادغام از صحنه"
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26746,6 +27103,11 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Details"
+msgstr "بارگیری پیش ÙØ±Ø¶"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -26763,7 +27125,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -27164,6 +27526,11 @@ msgid "Scenario"
msgstr "صحنه"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "گره انیمیشن"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -27181,6 +27548,26 @@ msgstr "خطی"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Ù¾ÛŒØ´ÙØ±Ø¶"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "به‌روزرسانی از صحنه"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "آزمودن"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "ویرایش اتصال:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/fi.po b/editor/translations/fi.po
index f7c3603a1c..7c69731934 100644
--- a/editor/translations/fi.po
+++ b/editor/translations/fi.po
@@ -234,9 +234,10 @@ msgid "Data"
msgstr "Datan kanssa"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
#, fuzzy
msgid "Network"
msgstr "Verkkoprofiloija"
@@ -352,7 +353,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Ei tarpeeksi tavuja tavujen purkamiseksi tai virheellinen formaatti."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "Virheellinen syöte %i (ei välitetty) lausekkeessa"
#: core/math/expression.cpp
@@ -397,6 +399,16 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Siirtotila"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "Poista syöte"
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -599,7 +611,8 @@ msgstr "Kuvaus"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "Suorita"
@@ -690,6 +703,11 @@ msgid "Main Run Args"
msgstr "Pääkohtauksen argumentit:"
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Kohtauspolku:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -697,19 +715,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Versionhallinta"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Versionhallintajärjestelmä"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Liitännäisen nimi:"
+msgid "Version Control Plugin Name"
+msgstr "Versionhallinta"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -829,7 +843,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "Suodattimet:"
@@ -1111,6 +1126,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Vapauta"
@@ -1127,7 +1143,7 @@ msgstr "Peilaa"
msgid "Time:"
msgstr "Aika:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Arvo:"
@@ -1377,10 +1393,75 @@ msgid "Remove this track."
msgstr "Poista tämä raita."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "Aika (s): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Telakan sijainti"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Kierron välistys:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "Skaalaus:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "Tyyppi:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Virheellinen vientimalli:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Easing:"
+msgstr "Helpotus sisään-ulos"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "In-Handle:"
+msgstr "Aseta kahva"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Out-Handle:"
+msgstr "Aseta kahva"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "Valintapainike"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Aloita uudelleen (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "End (s):"
+msgstr "Häivytys sisään (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Animaatiot:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "Aseta raita päälle"
@@ -1593,7 +1674,8 @@ msgid "Add Method Track Key"
msgstr "Lisää metodikutsuraidan avainruutu"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "Metodia ei löydy objektista: "
#: editor/animation_track_editor.cpp
@@ -2201,8 +2283,8 @@ msgid "Open"
msgstr "Avaa"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Omistajat kohteelle:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
msgid ""
@@ -2507,7 +2589,7 @@ msgid "Bus Options"
msgstr "Väylän asetukset"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Monista"
@@ -2559,8 +2641,9 @@ msgstr "Avaa ääniväylän asettelu"
msgid "There is no '%s' file."
msgstr "Tiedostoa '%s' ei ole."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "Asettelu"
#: editor/editor_audio_buses.cpp
@@ -2766,6 +2849,25 @@ msgid "Choose"
msgstr "Valitse"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "Kopioi solmun polku"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "Paketti asennettu onnistuneesti!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "Epäonnistui:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Varastoidaan tiedostoa:"
@@ -2778,6 +2880,31 @@ msgid "Packing"
msgstr "Pakataan"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Tallenna nimellä"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "Kansiota ei voitu luoda."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Ei voitu viedä projektin tiedostoja"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Ei voida avata tiedostoa kirjoitettavaksi:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Tallenna nimellä"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2896,11 +3023,33 @@ msgstr "Mukautettua debug-vientimallia ei löytynyt."
msgid "Custom release template not found."
msgstr "Mukautettua release-vientimallia ei löytynyt."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "Hallinnoi malleja"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "Annettu vientipolku ei ole olemassa:"
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "Mallitiedostoa ei löytynyt:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "Virheellinen vientimalli:"
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+#, fuzzy
+msgid "PCK Embedding"
+msgstr "Täyte"
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr ""
"32-bittisissä vienneissä sisällytetty PCK ei voi olla suurempi kuin 4 Gt."
@@ -3076,9 +3225,9 @@ msgid "Import"
msgstr "Tuo"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Vie"
@@ -4242,15 +4391,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Kohtaus"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Kohtauspolku:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4379,6 +4519,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Versionhallinta"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "Käyttäjänimi"
@@ -4406,6 +4550,10 @@ msgstr "Käytä häiriötöntä tilaa."
msgid "Add a new scene."
msgstr "Lisää uusi kohtaus."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Kohtaus"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Siirry aiemmin avattuun kohtaukseen."
@@ -5091,11 +5239,14 @@ msgid "Selected node is not a Viewport!"
msgstr "Valittu solmu ei ole Viewport!"
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr "Koko: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
+msgstr "Koko:"
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+#, fuzzy
+msgid "Page:"
msgstr "Sivu: "
#: editor/editor_properties_array_dict.cpp
@@ -5195,6 +5346,11 @@ msgstr ""
"Ole hyvä ja lisää ajettava esiasetus Vienti-valikosta tai määrittele "
"olemassa oleva esiasetus ajettavaksi."
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Projekti"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Kirjoita logiikka _run() metodiin."
@@ -5478,7 +5634,9 @@ msgid "Draw Spaces"
msgstr "Piirtokutsuja:"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr "Navigointi"
@@ -6077,10 +6235,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Projektinhallinta"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -6851,14 +7011,6 @@ msgid "Replace in Files"
msgstr "Korvaa tiedostoissa"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "Etsi: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "Korvaa: "
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr "Korvaa kaikki (EI VOI KUMOTA)"
@@ -6987,7 +7139,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Suodattimet:"
@@ -7255,7 +7407,8 @@ msgid "Generating Lightmaps"
msgstr "Luodaan Lightmappeja"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+#, fuzzy
+msgid "Generating for Mesh:"
msgstr "Luodaan meshille: "
#: editor/import/resource_importer_scene.cpp
@@ -7285,6 +7438,18 @@ msgid "Saving..."
msgstr "Tallennetaan..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -8102,10 +8267,12 @@ msgstr "Onion skinning -valinnat"
msgid "Directions"
msgstr "Suunnat"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "Mennyt"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "Tuleva"
@@ -8265,7 +8432,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr "Aseta loppuanimaatio. Tämä on hyödyllistä alisiirtymiä varten."
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
+#, fuzzy
+msgid "Transition:"
msgstr "Siirtymä: "
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8282,11 +8450,6 @@ msgid "New name:"
msgstr "Uusi nimi:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "Skaalaus:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "Häivytys sisään (s):"
@@ -9200,6 +9363,7 @@ msgstr "Luo mukautetut luut solmuista"
msgid "Clear Custom Bones"
msgstr "Poista mukautetut luut"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9266,6 +9430,10 @@ msgid "Preview Canvas Scale"
msgstr "Esikatsele kankaan skaalausta"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "Asettelu"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr "Siirrosmaski avainruutujen lisäämiseen."
@@ -10040,7 +10208,8 @@ msgid "Volume"
msgstr "Tilavuus"
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+#, fuzzy
+msgid "Emission Source:"
msgstr "Emission lähde: "
#: editor/plugins/particles_editor_plugin.cpp
@@ -10274,6 +10443,7 @@ msgid "Points"
msgstr "Pisteet"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr "Polygonit"
@@ -10430,13 +10600,6 @@ msgid "Instance:"
msgstr "Ilmentymä:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "Tyyppi:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr "Avaa editorissa"
@@ -10445,10 +10608,6 @@ msgstr "Avaa editorissa"
msgid "Load Resource"
msgstr "Lataa resurssi"
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr "Resurssien esilataaja"
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr "Käännä portaalit"
@@ -11149,12 +11308,16 @@ msgstr "Kierrä"
msgid "Translate"
msgstr "Siirrä"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
+#, fuzzy
+msgid "Scaling:"
msgstr "Skaalataan: "
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
+#, fuzzy
+msgid "Translating:"
msgstr "Siirretään: "
#: editor/plugins/spatial_editor_plugin.cpp
@@ -11178,11 +11341,6 @@ msgid "Yaw:"
msgstr "Kääntymiskulma:"
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr "Koko:"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr "Objekteja piirretty:"
@@ -11670,7 +11828,8 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr "Virheellinen geometria, ei voida korvata meshillä."
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+#, fuzzy
+msgid "Convert to MeshInstance2D"
msgstr "Muunna Mesh2D resurssiksi"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11702,15 +11861,18 @@ msgid "Sprite"
msgstr "Sprite"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
+#, fuzzy
+msgid "Simplification:"
msgstr "Yksinkertaistus: "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+#, fuzzy
+msgid "Shrink (Pixels):"
msgstr "Kutista (pikseleissä): "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+#, fuzzy
+msgid "Grow (Pixels):"
msgstr "Suurrennus (pikseleissä): "
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12665,8 +12827,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr "Valitse edellinen muoto, alilaatta tai laatta."
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr "Alue"
@@ -14185,36 +14346,10 @@ msgid "Delete preset '%s'?"
msgstr "Poista esiasetus '%s'?"
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-"Projektin vienti alustalle '%s' epäonnistui.\n"
-"Vientimallit näyttävät puuttuvan tai olevan virheellisiä."
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-"Projektin vienti alustalle '%s' epäonnistui.\n"
-"Tämä saattaa johtua asetusongelmista viennin esiasetuksissa tai vientisi "
-"asetuksissa."
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "Viedään kaikki"
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr "Annettu vientipolku ei ole olemassa:"
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr "Vientimallit tälle alustalle puuttuvat tai ovat viallisia:"
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr "Vientipolku"
@@ -14360,6 +14495,11 @@ msgid "Export templates for this platform are missing:"
msgstr "Tälle alustalle ei löytynyt vientipohjia:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Projektin perustajat"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "Hallinnoi vientimalleja"
@@ -15907,7 +16047,8 @@ msgid "Attach Node Script"
msgstr "Liitä solmun skripti"
#: editor/script_editor_debugger.cpp
-msgid "Remote "
+#, fuzzy
+msgid "Remote %s:"
msgstr "Etäinen "
#: editor/script_editor_debugger.cpp
@@ -16787,7 +16928,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "Polygonit"
@@ -16965,7 +17106,8 @@ msgid "Disabled GDNative Singleton"
msgstr "GDNative singleton on poistettu käytöstä"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+#, fuzzy
+msgid "Libraries:"
msgstr "Kirjastot: "
#: modules/gdnative/nativescript/nativescript.cpp
@@ -17413,7 +17555,6 @@ msgid "Use In Baked Light"
msgstr "Kehitä Lightmapit"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17443,6 +17584,19 @@ msgstr "Keskitä"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Navigointi"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Siirtymistila"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Seuraava taso"
@@ -17861,7 +18015,8 @@ msgstr ""
"korjaa solmusi."
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+#, fuzzy
+msgid "Node returned an invalid sequence output:"
msgstr "Solmu palautti virheellisen jakson tulosteen: "
#: modules/visual_script/visual_script.cpp
@@ -17869,7 +18024,8 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr "Jaksobitti löytyi, mutta solmua ei löydy pinosta, raportoi bugi!"
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+#, fuzzy
+msgid "Stack overflow with stack depth:"
msgstr "Pinon ylivuoto pinosyvyydellä: "
#: modules/visual_script/visual_script.cpp
@@ -18240,7 +18396,8 @@ msgid "for (elem) in (input):"
msgstr "kullekin (elementille) (syötteessä):"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+#, fuzzy
+msgid "Input type not iterable:"
msgstr "Syötetyyppi ei ole iteroitavissa: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18248,7 +18405,8 @@ msgid "Iterator became invalid"
msgstr "Iteraattori muuttui epäkelvoksi"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+#, fuzzy
+msgid "Iterator became invalid:"
msgstr "Iteraattori muuttui epäkelvoksi: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18412,11 +18570,13 @@ msgid "Operator"
msgstr "Iteraattori"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
+#, fuzzy
+msgid "Invalid argument of type:"
msgstr ": Virheellinen argumentti tyyppiä: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
+#, fuzzy
+msgid "Invalid arguments:"
msgstr ": Virheelliset argumentit: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18429,11 +18589,13 @@ msgid "Var Name"
msgstr "Nimi"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+#, fuzzy
+msgid "VariableGet not found in script:"
msgstr "VariableGet ei löytynyt skriptistä: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+#, fuzzy
+msgid "VariableSet not found in script:"
msgstr "VariableSet ei löytynyt skriptistä: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18964,10 +19126,6 @@ msgid "Could not execute on device."
msgstr "Ei voitu suorittaa laitteella."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr "'apksigner' työkalua ei löydy."
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -19098,12 +19256,17 @@ msgstr ""
"\"Target Sdk\" versionumeron on oltava suurempi tai yhtä suuri kuin \"Min "
"Sdk\" versionumeron."
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Allekirjoitetaan DMG-koodi"
+
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
"'apksigner' ei löydy.\n"
"Ole hyvä ja tarkista, että komento on saatavilla Android SDK build-tools "
@@ -19123,6 +19286,11 @@ msgid "Could not find keystore, unable to export."
msgstr "Keystorea ei löytynyt, ei voida viedä."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "Aliprosessia ei voitu käynnistää!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr "'apksigner' palautti virheen #%d"
@@ -19154,7 +19322,8 @@ msgstr ""
"Virheellinen tiedostonimi! Android APK tarvitsee *.apk tiedostopäätteen."
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+#, fuzzy
+msgid "Unsupported export format!"
msgstr "Vientiformaatti ei ole tuettu!\n"
#: platform/android/export/export_plugin.cpp
@@ -19166,10 +19335,9 @@ msgstr ""
"versiotietoa. Ole hyvä ja uudelleenasenna se 'Projekti'-valikosta."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
"Androidin käännösversion epäyhteensopivuus:\n"
@@ -19178,14 +19346,16 @@ msgstr ""
"Ole hyvä ja uudelleenasenna Androidin käännösmalli 'Projekti'-valikosta."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
"Ei voitu ylikirjoittaa res://android/build/res/*.xml tiedostoja projektin "
"nimellä"
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+#, fuzzy
+msgid "Could not export project files to gradle project."
msgstr "Ei voitu viedä projektitiedostoja gradle-projektiksi.\n"
#: platform/android/export/export_plugin.cpp
@@ -19197,8 +19367,9 @@ msgid "Building Android Project (gradle)"
msgstr "Käännetään Android-projektia (gradle)"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
"Android-projektin käännös epäonnistui, tarkista virhe tulosteesta.\n"
@@ -19218,7 +19389,8 @@ msgstr ""
"tulosteet gradle-projektin hakemistosta."
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+#, fuzzy
+msgid "Package not found: \"%s\"."
msgstr "Pakettia ei löytynyt: %s"
#: platform/android/export/export_plugin.cpp
@@ -19226,17 +19398,16 @@ msgid "Creating APK..."
msgstr "Luodaan APK:ta..."
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+#, fuzzy
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
"Ei löydetty APK-vientimallia vientiä varten:\n"
"%s"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -19249,7 +19420,8 @@ msgid "Adding files..."
msgstr "Lisätään tiedostoja..."
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+#, fuzzy
+msgid "Could not export project files."
msgstr "Ei voitu viedä projektin tiedostoja"
#: platform/android/export/export_plugin.cpp
@@ -19492,6 +19664,17 @@ msgstr "Mukautettu solmu"
msgid "Custom BG Color"
msgstr "Mukautettu solmu"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "Hallinnoi malleja"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Mukautettua release-vientimallia ei löytynyt."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr "App Store Team ID ei ole määritetty - ei voida konfiguroida projektia."
@@ -19513,22 +19696,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Suorita viety HTML järjestelmän oletusselaimessa."
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
msgstr "Mallin avaus vientiin epäonnistui:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
msgstr "Virheellinen vientimalli:"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+#, fuzzy
+msgid "Could not write file: \"%s\"."
msgstr "Ei voitu kirjoittaa tiedostoa:"
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Aseta marginaali"
+
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+#, fuzzy
+msgid "Could not read file: \"%s\"."
msgstr "Ei voitu lukea tiedostoa:"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "Erotus:"
@@ -19603,15 +19799,18 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+#, fuzzy
+msgid "Could not read HTML shell: \"%s\"."
msgstr "Ei voitu lukea HTML tulkkia:"
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+#, fuzzy
+msgid "Could not create HTTP server directory: %s."
msgstr "Ei voitu luoda HTTP-palvelimen hakemistoa:"
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+#, fuzzy
+msgid "Error starting HTTP server: %d."
msgstr "Virhe käynnistettäessä HTTP-palvelinta:"
#: platform/javascript/export/export.cpp
@@ -19904,9 +20103,29 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Ei voitu viedä projektin tiedostoja"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "Aliprosessia ei voitu käynnistää!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Kääntäminen"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
"Huom: Notarisointiprosessi kestää yleensä alle tunnin. Kun käsittely on "
"valmis, saat sähköpostin."
@@ -19928,18 +20147,83 @@ msgstr ""
"sovellukseen (vapaavalintainen):"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+"Timestamping ei ole yhteensopiva ad-hoc allekirjoituksen kanssa ja kytketään "
+"pois päältä!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+"Hardened Runtime ei ole yhteensopiva ad-hoc allekirjoituksen kanssa ja "
+"kytketään pois päältä!"
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
msgid "No identity found."
msgstr "Identiteettiä ei löytynyt."
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Virhe tallennettaessa tiedostoa: %s"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+"Suhteelliset symboliset linkit eivät ole tuettuja tässä "
+"käyttöjärjestelmässä, viety projekti saattaa olla rikkinäinen!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Suunnat"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "Aliprosessia ei voitu käynnistää!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Creating app bundle"
msgstr "Luodaan app bundlea"
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+#, fuzzy
+msgid "Could not find template app to export: \"%s\"."
msgstr "Ei löydetty app-vientimallia vientiä varten:"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Virheellinen vientimalli:"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -19948,8 +20232,9 @@ msgstr ""
"käyttöjärjestelmässä, viety projekti saattaa olla rikkinäinen!"
#: platform/osx/export/export.cpp
+#, fuzzy
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
"Pyydettyä binäärivientimallia '%s' ei löydy. Se saattaa puuttua "
@@ -19996,6 +20281,16 @@ msgid "Sending archive for notarization"
msgstr "Lähetetään tiedostopaketti notarisointia varten"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "Projekti"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr "Ei voitu viedä projektitiedostoja gradle-projektiksi.\n"
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr "Virheellinen bundle-tunniste:"
@@ -20338,6 +20633,11 @@ msgid "Debug Algorithm"
msgstr "Debuggeri"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Väliaikaista tiedosta ei voida poistaa:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20385,6 +20685,76 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Satunnainen kierto:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "Keystorea ei löytynyt, ei voida viedä."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "Keystorea ei löytynyt, ei voida viedä."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+"rcedit-työkalu täytyy olla konfiguroituna editorin asetuksissa (Export > "
+"Windows > Rcedit) ikonin tai sovelluksen tietojen muuttamiseksi."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "Keystorea ei löytynyt, ei voida viedä."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "Keystorea ei löytynyt, ei voida viedä."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Virheellinen Identifier osio:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Virheellinen nimi."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+"rcedit-työkalu täytyy olla konfiguroituna editorin asetuksissa (Export > "
+"Windows > Rcedit) ikonin tai sovelluksen tietojen muuttamiseksi."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "Väliaikaista tiedosta ei voida poistaa:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20405,6 +20775,23 @@ msgid "Invalid product version:"
msgstr "Virheellinen tuotteen versio:"
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Virheellinen käynnistystiedosto."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "Uusi ikkuna"
@@ -20421,6 +20808,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20548,7 +20939,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Poimintaetäisyys:"
@@ -21426,17 +21818,19 @@ msgstr ""
"se toimisi. Ole hyvä ja aseta ominaisuus tai piirrä monikulmio."
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-"NavigationPolygonInstance solmun täytyy olla Navigation2D solmun "
-"alaisuudessa. Se tarjoaa vain navigointidataa."
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr ""
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Keskitä alas"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "Matkaa"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
#, fuzzy
@@ -22682,14 +23076,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr "NavigationAgent solmua voidaan käyttää ainoastaan Spatial solmun alla."
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-"NavigationMeshInstance solmun täytyy olla Navigation solmun alaisuudessa. Se "
-"tarjoaa vain navigointidataa."
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
#, fuzzy
msgid "NavMesh"
@@ -25444,6 +25830,16 @@ msgid "3D Physics"
msgstr " (fyysinen)"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Navigointi"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Navigointi"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -26871,7 +27267,7 @@ msgstr "Siirtymä: "
msgid "Refraction"
msgstr "Erotus:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -26956,7 +27352,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "Skaalataan: "
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "Aseta muunnoksen kantatyyppi"
#: scene/resources/navigation_mesh.cpp
@@ -26974,10 +27375,15 @@ msgid "Source Group Name"
msgstr "Lähde"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "Pääkohtauksen argumentit:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -26987,11 +27393,16 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Regions"
+msgstr "Alue"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Merge Size"
msgstr "Yhdistä kohtauksesta"
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -27005,6 +27416,11 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Details"
+msgstr "Näytä oletus"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Sample Distance"
msgstr "Poimintaetäisyys:"
@@ -27022,7 +27438,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -27440,6 +27856,11 @@ msgid "Scenario"
msgstr "Kohtaus"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Navigointi"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -27457,6 +27878,26 @@ msgstr "Vasen lineaarinen"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Oletus"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Oletusesikatselu"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Testaus"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Muokkaa yhteyttä:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/fil.po b/editor/translations/fil.po
index f5db6cafc2..19cb3febb0 100644
--- a/editor/translations/fil.po
+++ b/editor/translations/fil.po
@@ -205,9 +205,10 @@ msgid "Data"
msgstr "Data"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr "Network"
@@ -312,7 +313,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Kulang sa bytes para i-decode ang bytes, o invalid na format."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "Invalid na input %i (di pinasa) sa expression"
#: core/math/expression.cpp
@@ -356,6 +358,15 @@ msgstr "Pila ng Mensahe"
msgid "Max Size (KB)"
msgstr "Max na Laki (KB)"
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Kopya"
+
+#: core/os/input.cpp
+msgid "Use Accumulated Input"
+msgstr ""
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -535,7 +546,8 @@ msgstr "Paglalarawan"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "Patakbuhin"
@@ -618,6 +630,10 @@ msgid "Main Run Args"
msgstr "Pangunahing Args sa Pagtakbo"
#: core/project_settings.cpp
+msgid "Scene Naming"
+msgstr ""
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr "Maghanap sa mga File Extension"
@@ -625,18 +641,15 @@ msgstr "Maghanap sa mga File Extension"
msgid "Script Templates Search Path"
msgstr "Path ng mga Hahanaping Script Template"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Version Control"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+#, fuzzy
+msgid "Version Control Autoload On Startup"
msgstr "Kusang i-load sa Simula"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Pangalan ng Plugin"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Version Control"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -743,7 +756,8 @@ msgid "Quality"
msgstr "Kalidad"
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
msgid "Filters"
msgstr "Mga Filter"
@@ -1010,6 +1024,7 @@ msgstr "Mataas na Kalidad"
msgid "Blend Shape Max Buffer Size (KB)"
msgstr "Max na Laki ng Buffer ng Blend Shape (KB)"
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Libre"
@@ -1026,7 +1041,7 @@ msgstr "Salamin"
msgid "Time:"
msgstr "Oras:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Value:"
@@ -1271,10 +1286,71 @@ msgid "Remove this track."
msgstr "Tanggalin ang track na ito."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "Oras (seg): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Posisyon"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Pagulit ng Animation"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Invalid na index ng type na %s para sa base type na %s"
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "Stream Peer"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Kopya"
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Mga Anim Clip:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "Nakabukas ang Toggle Track"
@@ -1482,7 +1558,7 @@ msgid "Add Method Track Key"
msgstr ""
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+msgid "Method not found in object:"
msgstr ""
#: editor/animation_track_editor.cpp
@@ -2075,7 +2151,7 @@ msgid "Open"
msgstr "I-buksan"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
+msgid "Owners of: %s (Total: %d)"
msgstr ""
#: editor/dependency_editor.cpp
@@ -2366,7 +2442,7 @@ msgid "Bus Options"
msgstr ""
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr ""
@@ -2418,8 +2494,8 @@ msgstr ""
msgid "There is no '%s' file."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+msgid "Layout:"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -2622,6 +2698,22 @@ msgid "Choose"
msgstr ""
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed successfully."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed."
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr ""
@@ -2634,6 +2726,26 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp
+msgid "Save PCK"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Cannot create file \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed to export project files."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Can't open file to read from path \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Save ZIP"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2737,8 +2849,25 @@ msgstr ""
msgid "Custom release template not found."
msgstr ""
+#: editor/editor_export.cpp
+msgid "Prepare Template"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "The given export path doesn't exist."
+msgstr ""
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+msgid "Template file not found: \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed to copy export template."
+msgstr ""
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
msgstr ""
#: editor/editor_export.cpp
@@ -2910,9 +3039,9 @@ msgid "Import"
msgstr ""
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr ""
@@ -3994,14 +4123,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4119,6 +4240,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Version Control"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr ""
@@ -4146,6 +4271,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
@@ -4779,11 +4908,14 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+#, fuzzy
+msgid "Page:"
msgstr "Pahina: "
#: editor/editor_properties_array_dict.cpp
@@ -4876,6 +5008,11 @@ msgid ""
"as runnable."
msgstr ""
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Ilipat Ang Mga Bezier Points"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -5133,7 +5270,9 @@ msgid "Draw Spaces"
msgstr ""
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr ""
@@ -5674,10 +5813,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Sorting Order"
msgstr ""
@@ -6403,14 +6544,6 @@ msgid "Replace in Files"
msgstr "Palitan ang Lahat"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr ""
-
-#: editor/find_in_files.cpp
#, fuzzy
msgid "Replace All (NO UNDO)"
msgstr "Palitan ang Lahat"
@@ -6539,7 +6672,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
msgid "Filter"
msgstr ""
@@ -6786,7 +6919,7 @@ msgid "Generating Lightmaps"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+msgid "Generating for Mesh:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -6814,6 +6947,18 @@ msgid "Saving..."
msgstr ""
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7594,10 +7739,12 @@ msgstr ""
msgid "Directions"
msgstr ""
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr ""
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr ""
@@ -7752,8 +7899,9 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
-msgstr ""
+#, fuzzy
+msgid "Transition:"
+msgstr "Pagulit ng Animation"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Play Mode:"
@@ -7769,11 +7917,6 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr ""
@@ -8660,6 +8803,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr ""
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -8723,6 +8867,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -9467,7 +9615,7 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+msgid "Emission Source:"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
@@ -9698,6 +9846,7 @@ msgid "Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr ""
@@ -9851,13 +10000,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -9866,10 +10008,6 @@ msgstr ""
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -10558,13 +10696,17 @@ msgstr ""
msgid "Translate"
msgstr ""
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr ""
+#, fuzzy
+msgid "Scaling:"
+msgstr "Iskala"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "Pagulit ng Animation"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -10587,11 +10729,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11066,7 +11203,7 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+msgid "Convert to MeshInstance2D"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11098,15 +11235,16 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "Application"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12036,8 +12174,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr ""
@@ -13469,31 +13606,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr ""
@@ -13628,6 +13744,10 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Project Export"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr ""
@@ -15061,8 +15181,9 @@ msgid "Attach Node Script"
msgstr ""
#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr ""
+#, fuzzy
+msgid "Remote %s:"
+msgstr "Alisin"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -15887,7 +16008,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
msgid "Polygon"
msgstr ""
@@ -16050,7 +16171,7 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+msgid "Libraries:"
msgstr ""
#: modules/gdnative/nativescript/nativescript.cpp
@@ -16458,7 +16579,6 @@ msgid "Use In Baked Light"
msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -16485,6 +16605,19 @@ msgstr ""
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Burahin ang (mga) Napiling Key"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Halaga:"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -16884,7 +17017,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -16892,7 +17025,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17259,7 +17392,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17267,7 +17400,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17420,12 +17553,14 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
+#, fuzzy
+msgid "Invalid argument of type:"
+msgstr "Mga invalid na argumento para i-construct ang '%s'"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
+#, fuzzy
+msgid "Invalid arguments:"
+msgstr "Mga invalid na argumento para i-construct ang '%s'"
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -17436,11 +17571,11 @@ msgid "Var Name"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+msgid "VariableGet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+msgid "VariableSet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
@@ -17932,10 +18067,6 @@ msgid "Could not execute on device."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18039,12 +18170,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Burahin ang (mga) Napiling Key"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18060,6 +18195,10 @@ msgid "Could not find keystore, unable to export."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Could not start apksigner executable."
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -18088,7 +18227,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18099,19 +18238,17 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+msgid "Could not export project files to gradle project."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18124,7 +18261,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -18139,7 +18276,7 @@ msgid ""
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18147,15 +18284,12 @@ msgid "Creating APK..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -18165,7 +18299,7 @@ msgid "Adding files..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18397,6 +18531,15 @@ msgstr "Mga Functions:"
msgid "Custom BG Color"
msgstr "Mga Functions:"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+msgid "Prepare Templates"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Export template not found."
+msgstr ""
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18418,19 +18561,29 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Could not open template for export: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
+msgstr "Invalid na index ng type na %s para sa base type na %s"
+
+#: platform/javascript/export/export.cpp
+msgid "Could not write file: \"%s\"."
msgstr ""
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Ikabit"
+
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not read file: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+msgid "PWA"
msgstr ""
#: platform/javascript/export/export.cpp
@@ -18505,15 +18658,15 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr ""
#: platform/javascript/export/export.cpp
@@ -18789,9 +18942,26 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Could not open icon file \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Could not start xcrun executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Pagulit ng Animation"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -18807,18 +18977,71 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
msgid "No identity found."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Cannot sign file %s."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Paglalarawan"
+
+#: platform/osx/export/export.cpp
+msgid "Could not start hdiutil executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Creating app bundle"
msgstr ""
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "3D Transform Track"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -18826,7 +19049,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -18867,6 +19090,15 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "Pagulit ng Animation"
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr ""
@@ -19163,6 +19395,10 @@ msgid "Debug Algorithm"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Failed to rename temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -19204,6 +19440,63 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Resources Modification"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Mga invalid na argumento para i-construct ang '%s'"
+
+#: platform/windows/export/export.cpp
+msgid "Invalid timestamp server."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Failed to remove temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19222,6 +19515,22 @@ msgid "Invalid product version:"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Failed to open executable file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Windows"
msgstr ""
@@ -19237,6 +19546,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
msgid "Frames"
@@ -19347,7 +19660,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
@@ -20112,13 +20426,15 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
+msgid "Navpoly"
msgstr ""
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Enter Cost"
+msgstr ""
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Travel Cost"
msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
@@ -21201,12 +21517,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -23610,6 +23920,16 @@ msgid "3D Physics"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Burahin ang (mga) Napiling Key"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Burahin ang (mga) Napiling Key"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -24881,7 +25201,7 @@ msgstr ""
msgid "Refraction"
msgstr ""
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -24958,8 +25278,14 @@ msgid "Visible Instance Count"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Sample Partition Type"
-msgstr ""
+#, fuzzy
+msgid "Sampling"
+msgstr "Iskala"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
+msgstr "Pagulit ng Animation"
#: scene/resources/navigation_mesh.cpp
msgid "Parsed Geometry Type"
@@ -24974,7 +25300,11 @@ msgid "Source Group Name"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
+msgid "Agents"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -24986,11 +25316,16 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Regions"
+msgstr "Mga Functions:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -25003,6 +25338,10 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+msgid "Details"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -25019,7 +25358,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -25390,6 +25729,11 @@ msgid "Scenario"
msgstr ""
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Pagulit ng Animation"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -25405,6 +25749,26 @@ msgstr ""
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Halaga:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Halaga:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Halaga:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Ikabit"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/fr.po b/editor/translations/fr.po
index 2dd863df5b..6b077ba5e4 100644
--- a/editor/translations/fr.po
+++ b/editor/translations/fr.po
@@ -298,9 +298,10 @@ msgid "Data"
msgstr "Données"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr "Réseau"
@@ -405,8 +406,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Pas assez d’octets pour le décodage, ou format invalide."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
-msgstr "Entrée non valide %i (non transmise) dans l’expression"
+msgid "Invalid input %d (not passed) in expression"
+msgstr "Entrée non valide %d (non transmise) dans l’expression"
#: core/math/expression.cpp
msgid "self can't be used because instance is null (not passed)"
@@ -449,6 +450,16 @@ msgstr ""
msgid "Max Size (KB)"
msgstr "Taille Maximale (KB)"
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Mode déplacement"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "Supprimer l'entrée"
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -633,7 +644,8 @@ msgstr "Description"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "Lancer"
@@ -722,6 +734,11 @@ msgid "Main Run Args"
msgstr "Arguments de la scène principale :"
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Chemin de la scène :"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -729,18 +746,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Contrôle de version"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Système de contrôle de version"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Nom du Plugin"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Contrôle de version"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -857,7 +871,8 @@ msgid "Quality"
msgstr "Qualité"
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
msgid "Filters"
msgstr "Filtres"
@@ -1131,6 +1146,7 @@ msgstr "Haute Qualité"
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Libre"
@@ -1147,7 +1163,7 @@ msgstr "Miroir"
msgid "Time:"
msgstr "Temps :"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Valeur :"
@@ -1395,8 +1411,70 @@ msgid "Remove this track."
msgstr "Supprime cette piste."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
-msgstr "Temps (s) : "
+msgid "Time (s):"
+msgstr "Temps (s) :"
+
+#: editor/animation_track_editor.cpp
+msgid "Position:"
+msgstr "Position :"
+
+#: editor/animation_track_editor.cpp
+msgid "Rotation:"
+msgstr "Rotation :"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "Échelle :"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "Type :"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Modèle d'exportation non valide :"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Easing:"
+msgstr "Ease in-out"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "In-Handle:"
+msgstr "Définir la poignée"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Out-Handle:"
+msgstr "Définir la poignée"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "Item radio"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Redémarrer (s) :"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "End (s):"
+msgstr "Fondu entrant (s) :"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Animations :"
#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
@@ -1615,8 +1693,8 @@ msgid "Add Method Track Key"
msgstr "Ajouter une clé de méthode"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
-msgstr "Méthode introuvable dans l’objet : "
+msgid "Method not found in object:"
+msgstr "Méthode introuvable dans l’objet :"
#: editor/animation_track_editor.cpp
msgid "Anim Move Keys"
@@ -2229,8 +2307,8 @@ msgid "Open"
msgstr "Ouvrir"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Propriétaires de :"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
msgid ""
@@ -2537,7 +2615,7 @@ msgid "Bus Options"
msgstr "Options de bus"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Dupliquer"
@@ -2589,9 +2667,9 @@ msgstr "Ouvrir une disposition de bus audio"
msgid "There is no '%s' file."
msgstr "'%s' n'existe pas."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
-msgstr "Disposition sur l'écran"
+#: editor/editor_audio_buses.cpp
+msgid "Layout:"
+msgstr "Disposition :"
#: editor/editor_audio_buses.cpp
msgid "Invalid file, not an audio bus layout."
@@ -2797,6 +2875,25 @@ msgid "Choose"
msgstr "Choisir"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "Copier le chemin du nœud"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "Paquetage installé avec succès !"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "Échec :"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Stockage du fichier :"
@@ -2809,6 +2906,31 @@ msgid "Packing"
msgstr "Empaquetage"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Enregistrer sous"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "Impossible de créer le dossier."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Impossible d'exporter les fichiers du projet"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Impossible d'ouvrir le fichier pour écriture :"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Enregistrer sous"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2926,11 +3048,33 @@ msgstr "Modèle de débogage personnalisé introuvable."
msgid "Custom release template not found."
msgstr "Modèle de version personnalisée introuvable."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "Gérer les modèles"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "Le chemin de l'exportation donné n'existe pas :"
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "Fichier modèle introuvable :"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "Modèle d'exportation non valide :"
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+#, fuzzy
+msgid "PCK Embedding"
+msgstr "Remplissage(Padding)"
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr "Le PCK inclus dans un export 32-bits ne peut dépasser 4 Go."
@@ -3108,9 +3252,9 @@ msgid "Import"
msgstr "Importer"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Exporter"
@@ -4280,15 +4424,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Scène"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Chemin de la scène :"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4416,6 +4551,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Contrôle de version"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "Nom d'utilisateur"
@@ -4443,6 +4582,10 @@ msgstr "Basculer en mode sans distraction."
msgid "Add a new scene."
msgstr "Ajouter une nouvelle scène."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Scène"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Aller à la scène ouverte précédemment."
@@ -5135,12 +5278,14 @@ msgid "Selected node is not a Viewport!"
msgstr "Le nœud sélectionné n'est pas un Viewport !"
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr "Taille : "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
+msgstr "Taille :"
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr "Page : "
+msgid "Page:"
+msgstr "Page :"
#: editor/editor_properties_array_dict.cpp
#: editor/plugins/theme_editor_plugin.cpp
@@ -5238,6 +5383,11 @@ msgstr ""
"Aucun préréglage d'exportation exécutable trouvé pour cette plate-forme. \n"
"Ajoutez un préréglage exécutable dans le menu d'exportation."
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Projet"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Écrivez votre code dans la méthode _run()."
@@ -5513,7 +5663,9 @@ msgid "Draw Spaces"
msgstr "Appels de dessin :"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr "Navigation"
@@ -6097,10 +6249,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Gestionnaire de projets"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Sorting Order"
msgstr "Ordre de Tri"
@@ -6873,14 +7027,6 @@ msgid "Replace in Files"
msgstr "Remplacer dans les fichiers"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "Rechercher : "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "Remplacer : "
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr "Remplacer tout (IRRÉVERSIBLE)"
@@ -7007,7 +7153,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
msgid "Filter"
msgstr "Filtre"
@@ -7262,8 +7408,8 @@ msgid "Generating Lightmaps"
msgstr "Génération des lightmaps"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
-msgstr "Génération pour le Mesh : "
+msgid "Generating for Mesh:"
+msgstr "Génération pour le Mesh :"
#: editor/import/resource_importer_scene.cpp
msgid "Running Custom Script..."
@@ -7291,6 +7437,18 @@ msgid "Saving..."
msgstr "Enregistrement…"
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -8113,10 +8271,12 @@ msgstr "Options effet pelure d'oignon"
msgid "Directions"
msgstr "Directions"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "Passé"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "Futur"
@@ -8277,8 +8437,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr "Définir l'animation de fin. Ceci est utile pour les sous-transitions."
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
-msgstr "Transition : "
+msgid "Transition:"
+msgstr "Transition :"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Play Mode:"
@@ -8294,11 +8454,6 @@ msgid "New name:"
msgstr "Nouveau nom :"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "Échelle :"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "Fondu entrant (s) :"
@@ -9212,6 +9367,7 @@ msgstr "Créer des os personnalisés à partir d'un ou de plusieurs nœuds"
msgid "Clear Custom Bones"
msgstr "Effacer les os personnalisés"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9278,6 +9434,10 @@ msgid "Preview Canvas Scale"
msgstr "Prévisualiser l'échelle du Canvas"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "Disposition sur l'écran"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr "Masque de translation pour l'insertion des clés."
@@ -10064,8 +10224,8 @@ msgid "Volume"
msgstr "Volume"
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr "Source d'émission : "
+msgid "Emission Source:"
+msgstr "Source d'émission :"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
@@ -10299,6 +10459,7 @@ msgid "Points"
msgstr "Points"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr "Polygones"
@@ -10455,13 +10616,6 @@ msgid "Instance:"
msgstr "Instance :"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "Type :"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr "Ouvrir dans l'éditeur"
@@ -10470,10 +10624,6 @@ msgstr "Ouvrir dans l'éditeur"
msgid "Load Resource"
msgstr "Charger une ressource"
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr "ResourcePreloader"
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr "Retourner les Portals"
@@ -11174,13 +11324,15 @@ msgstr "Rotation"
msgid "Translate"
msgstr "Translation"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr "Échelle : "
+msgid "Scaling:"
+msgstr "Mise à l'échelle :"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr "Translation : "
+msgid "Translating:"
+msgstr "Translation :"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -11203,11 +11355,6 @@ msgid "Yaw:"
msgstr "Azimuth :"
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr "Taille :"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr "Objets dessinés :"
@@ -11699,7 +11846,8 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr "Géométrie invalide, impossible de remplacer par un maillage."
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+#, fuzzy
+msgid "Convert to MeshInstance2D"
msgstr "Convertir en Mesh2D"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11731,16 +11879,16 @@ msgid "Sprite"
msgstr "Sprite"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr "Simplification : "
+msgid "Simplification:"
+msgstr "Simplification :"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
-msgstr "Rétrécir (Pixels) : "
+msgid "Shrink (Pixels):"
+msgstr "Rétrécir (Pixels) :"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
-msgstr "Croissance (Pixels) : "
+msgid "Grow (Pixels):"
+msgstr "Agrandir (Pixels) :"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Update Preview"
@@ -12703,8 +12851,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr "Sélectionner la forme précédente, sous-tuile, ou tuile."
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr "Région"
@@ -14232,36 +14379,10 @@ msgid "Delete preset '%s'?"
msgstr "Supprimer le préréglage « %s » ?"
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-"Échec de l'exportation du projet pour la plate-forme « %s ».\n"
-"Les modèles d'exportation semblent être manquants ou invalides."
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-"Échec de l'exportation du projet pour la plate-forme « %s ».\n"
-"Cela peut être dû à un problème de configuration dans le préréglage "
-"d'exportation ou dans vos paramètres d'exportation."
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "Tout exporter"
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr "Le chemin de l'exportation donné n'existe pas :"
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr "Modèles d'exportation manquants ou corrompus pour cette plateforme :"
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr "Chemin d'exportation"
@@ -14408,6 +14529,11 @@ msgid "Export templates for this platform are missing:"
msgstr "Modèles d'exportation manquants pour cette plateforme :"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Fondateurs du projet"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "Gérer les modèles d'exportation"
@@ -15968,8 +16094,8 @@ msgid "Attach Node Script"
msgstr "Attacher un script au nœud"
#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr "Distant "
+msgid "Remote %s:"
+msgstr "%s distant :"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -16849,7 +16975,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "Polygones"
@@ -17026,8 +17152,8 @@ msgid "Disabled GDNative Singleton"
msgstr "Désactiver le Singleton GDNative"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
-msgstr "Bibliothèques : "
+msgid "Libraries:"
+msgstr "Bibliothèques :"
#: modules/gdnative/nativescript/nativescript.cpp
msgid "Class Name"
@@ -17466,7 +17592,6 @@ msgid "Use In Baked Light"
msgstr "Précalculer les lightmaps"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17496,6 +17621,19 @@ msgstr "Centre"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Navigation"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Mode Navigation"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Plan suivant"
@@ -17913,8 +18051,8 @@ msgstr ""
"travail du nœud ! Veuillez rectifier votre nœud."
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
-msgstr "Le nœud a retourné une séquence de sortie invalide : "
+msgid "Node returned an invalid sequence output:"
+msgstr "Le nœud a retourné une séquence de sortie invalide :"
#: modules/visual_script/visual_script.cpp
msgid "Found sequence bit but not the node in the stack, report bug!"
@@ -17923,8 +18061,8 @@ msgstr ""
"le bug !"
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
-msgstr "Débordement de pile avec profondeur de pile : "
+msgid "Stack overflow with stack depth:"
+msgstr "Débordement de pile avec profondeur de pile :"
#: modules/visual_script/visual_script.cpp
#, fuzzy
@@ -18295,16 +18433,16 @@ msgid "for (elem) in (input):"
msgstr "for (elem) in (input) :"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
-msgstr "Type d'entrée non itérable : "
+msgid "Input type not iterable:"
+msgstr "Type d'entrée non itérable :"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Iterator became invalid"
msgstr "L'itérateur est devenu invalide"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
-msgstr "L'itérateur est devenu invalide : "
+msgid "Iterator became invalid:"
+msgstr "L'itérateur est devenu invalide :"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Sequence"
@@ -18466,12 +18604,12 @@ msgid "Operator"
msgstr "Itérateur"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ": Argument invalide de type : "
+msgid "Invalid argument of type:"
+msgstr "Argument invalide de type :"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ": Arguments invalides : "
+msgid "Invalid arguments:"
+msgstr "Arguments invalides :"
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -18483,12 +18621,12 @@ msgid "Var Name"
msgstr "Nom"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
-msgstr "VariableGet introuvable dans le script : "
+msgid "VariableGet not found in script:"
+msgstr "VariableGet introuvable dans le script :"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
-msgstr "VariableSet introuvable dans le script : "
+msgid "VariableSet not found in script:"
+msgstr "VariableSet introuvable dans le script :"
#: modules/visual_script/visual_script_nodes.cpp
msgid "Preload"
@@ -19020,10 +19158,6 @@ msgid "Could not execute on device."
msgstr "Impossible d'exécuter sur l'appareil."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr "Impossible de trouver l'outil 'apksigner'."
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -19155,12 +19289,17 @@ msgstr ""
"La version « Target Sdk » doit être supérieure ou égale à la version « Min "
"Sdk »."
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Signaux"
+
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
"Impossible de trouver 'apksigner'.\n"
"Veuillez vérifier que la commande est disponible dans le dossier build-tools "
@@ -19180,6 +19319,11 @@ msgid "Could not find keystore, unable to export."
msgstr "Impossible de trouver le keystore, impossible d'exporter."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "Impossible de démarrer le sous-processus !"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr "'apksigner' est retourné avec l'erreur #%d"
@@ -19214,7 +19358,8 @@ msgstr ""
"*.apk."
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+#, fuzzy
+msgid "Unsupported export format!"
msgstr "Format d'export non supporté !\n"
#: platform/android/export/export_plugin.cpp
@@ -19227,10 +19372,9 @@ msgstr ""
"menu 'Projet'."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
"La version d'Android ne correspond pas :\n"
@@ -19239,14 +19383,16 @@ msgstr ""
"Veuillez réinstaller la version d'Android depuis le menu 'Projet'."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
"Impossible d'écraser les fichiers res://android/build/res/*.xml avec le nom "
"du projet"
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+#, fuzzy
+msgid "Could not export project files to gradle project."
msgstr "Impossible d'exporter les fichiers du projet vers le projet gradle\n"
#: platform/android/export/export_plugin.cpp
@@ -19258,8 +19404,9 @@ msgid "Building Android Project (gradle)"
msgstr "Construire le Project Android (gradle)"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
"La construction du projet Android a échoué, vérifiez la sortie pour "
@@ -19280,7 +19427,8 @@ msgstr ""
"du projet gradle pour les journaux."
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+#, fuzzy
+msgid "Package not found: \"%s\"."
msgstr "Paquet non trouvé : %s"
#: platform/android/export/export_plugin.cpp
@@ -19288,17 +19436,16 @@ msgid "Creating APK..."
msgstr "Création de l'APK..."
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+#, fuzzy
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
"Impossible de trouver le modèle de l'APK à exporter :\n"
"%s"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -19312,7 +19459,8 @@ msgid "Adding files..."
msgstr "Ajout de fichiers..."
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+#, fuzzy
+msgid "Could not export project files."
msgstr "Impossible d'exporter les fichiers du projet"
#: platform/android/export/export_plugin.cpp
@@ -19553,6 +19701,17 @@ msgstr "Nœud Personnalisé"
msgid "Custom BG Color"
msgstr "Nœud Personnalisé"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "Gérer les modèles"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Modèle de version personnalisée introuvable."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr "App Store Team ID non spécifié - ne peut pas configurer le projet."
@@ -19574,22 +19733,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Exécutez le HTML exporté dans le navigateur par défaut du système."
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
msgstr "Impossible d'ouvrir le modèle pour exportation :"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
msgstr "Modèle d'exportation non valide :"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+#, fuzzy
+msgid "Could not write file: \"%s\"."
msgstr "Impossible d'écrire le fichier :"
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Définir la marge"
+
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+#, fuzzy
+msgid "Could not read file: \"%s\"."
msgstr "Impossible de lire le fichier :"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Variant"
msgstr "Variant"
@@ -19663,15 +19835,18 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+#, fuzzy
+msgid "Could not read HTML shell: \"%s\"."
msgstr "Impossible de lire le shell HTML :"
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+#, fuzzy
+msgid "Could not create HTTP server directory: %s."
msgstr "Impossible de créer le répertoire du serveur HTTP :"
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+#, fuzzy
+msgid "Error starting HTTP server: %d."
msgstr "Erreur de démarrage du serveur HTTP :"
#: platform/javascript/export/export.cpp
@@ -19967,9 +20142,28 @@ msgid "Apple Team ID"
msgstr "Apple Team ID"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Impossible d'exporter les fichiers du projet"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "Impossible de démarrer le sous-processus !"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Localisation"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19985,19 +20179,75 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
msgid "No identity found."
msgstr "Aucune identité trouvée."
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Erreur lors de l'enregistrement du fichier : %s"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Directions"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "Impossible de démarrer le sous-processus !"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "Création de l'aperçu"
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+#, fuzzy
+msgid "Could not find template app to export: \"%s\"."
msgstr "Impossible de trouver le modèle de l'application à exporter :"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Modèle d'exportation non valide :"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -20005,7 +20255,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -20046,6 +20296,16 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "Projet"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr "Impossible d'exporter les fichiers du projet vers le projet gradle\n"
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr "Identificateur de bundle non valide :"
@@ -20384,6 +20644,11 @@ msgid "Debug Algorithm"
msgstr "Débogueur"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Impossible de supprimer le fichier temporaire :"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20428,6 +20693,78 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Rotation aléatoire :"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "Impossible de trouver le keystore, impossible d'exporter."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "Impossible de trouver le keystore, impossible d'exporter."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+"L'outil « rcedit » doit être configuré dans les préférences de l'éditeur "
+"(Exporter > Windows > Rcedit) for modifier l'icône ou les informations de "
+"l'application."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "Impossible de trouver le keystore, impossible d'exporter."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "Impossible de trouver le keystore, impossible d'exporter."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Identifiant invalide :"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Nom invalide."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+"L'outil « rcedit » doit être configuré dans les préférences de l'éditeur "
+"(Exporter > Windows > Rcedit) for modifier l'icône ou les informations de "
+"l'application."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "Impossible de supprimer le fichier temporaire :"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20449,6 +20786,23 @@ msgid "Invalid product version:"
msgstr "Version du produit invalide :"
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Fichier exécutable invalide."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "Nouvelle Fenêtre"
@@ -20465,6 +20819,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20592,7 +20950,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr "Distance Maximale"
@@ -21464,17 +21823,19 @@ msgstr ""
"polygone."
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-"Un NavigationPolygonInstance doit être un enfant ou petit-enfant d'un nœud "
-"Navigation2D. Il fournit seulement des données de navigation."
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr ""
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Centrée en bas"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "Se déplacer"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
msgid "Rotation Degrees"
@@ -22720,14 +23081,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr "Le NavigationAgent ne peut être utilisé que sous un nœud spatial."
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-"Un NavigationMeshInstance doit être enfant ou sous-enfant d'un nœud de type "
-"Navigation. Il fournit uniquement des données de navigation."
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
#, fuzzy
msgid "NavMesh"
@@ -25456,6 +25809,16 @@ msgid "3D Physics"
msgstr "Physique"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Navigation"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Navigation"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -26864,7 +27227,7 @@ msgstr "Transmission"
msgid "Refraction"
msgstr "Réfraction"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -26948,7 +27311,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "Mise à l'échelle :"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "Définir type de variable"
#: scene/resources/navigation_mesh.cpp
@@ -26966,10 +27334,15 @@ msgid "Source Group Name"
msgstr "Source"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "Segments"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -26979,11 +27352,16 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Regions"
+msgstr "Région"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Merge Size"
msgstr "Fusionner depuis la scène"
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26997,6 +27375,11 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Details"
+msgstr "Afficher par défaut"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Sample Distance"
msgstr "Choisissez distance :"
@@ -27014,7 +27397,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -27428,6 +27811,11 @@ msgid "Scenario"
msgstr "Scène"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Navigation"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -27445,6 +27833,26 @@ msgstr "Linéaire gauche"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Défaut"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Aperçu par défaut"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "En période de test"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Modifier la connexion :"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/ga.po b/editor/translations/ga.po
index f7e27900d0..884214d851 100644
--- a/editor/translations/ga.po
+++ b/editor/translations/ga.po
@@ -204,9 +204,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr ""
@@ -313,7 +314,7 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr ""
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+msgid "Invalid input %d (not passed) in expression"
msgstr ""
#: core/math/expression.cpp
@@ -357,6 +358,16 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Scagairí..."
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "Scrios ionchur"
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -541,7 +552,8 @@ msgstr "Cuntas:"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr ""
@@ -624,24 +636,23 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-msgid "Plugin Name"
+msgid "Version Control Plugin Name"
msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
@@ -750,7 +761,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "Scagairí..."
@@ -1022,6 +1034,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Saor"
@@ -1038,7 +1051,7 @@ msgstr ""
msgid "Time:"
msgstr ""
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr ""
@@ -1283,10 +1296,68 @@ msgid "Remove this track."
msgstr ""
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+msgid "Time (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Cruthaigh"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Nód Beochana"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "Scála:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "(Invalid, expected type: %s)"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Stream:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Nód Cumaisc2"
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "CrannBeochan"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr ""
@@ -1494,7 +1565,7 @@ msgid "Add Method Track Key"
msgstr ""
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+msgid "Method not found in object:"
msgstr ""
#: editor/animation_track_editor.cpp
@@ -2087,7 +2158,7 @@ msgid "Open"
msgstr "Oscailte"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
+msgid "Owners of: %s (Total: %d)"
msgstr ""
#: editor/dependency_editor.cpp
@@ -2379,7 +2450,7 @@ msgid "Bus Options"
msgstr "Cruthaigh"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr ""
@@ -2431,8 +2502,8 @@ msgstr ""
msgid "There is no '%s' file."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+msgid "Layout:"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -2635,6 +2706,22 @@ msgid "Choose"
msgstr ""
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed successfully."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed."
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr ""
@@ -2647,6 +2734,27 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp
+msgid "Save PCK"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Cannot create file \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Scagairí..."
+
+#: editor/editor_export.cpp
+msgid "Can't open file to read from path \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Save ZIP"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2747,8 +2855,26 @@ msgstr ""
msgid "Custom release template not found."
msgstr ""
+#: editor/editor_export.cpp
+msgid "Prepare Template"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "The given export path doesn't exist."
+msgstr ""
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
+msgstr "Ãbhar:"
+
+#: editor/editor_export.cpp
+msgid "Failed to copy export template."
+msgstr ""
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
msgstr ""
#: editor/editor_export.cpp
@@ -2919,9 +3045,9 @@ msgid "Import"
msgstr ""
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr ""
@@ -3999,14 +4125,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4123,6 +4241,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Ainm nua:"
@@ -4151,6 +4273,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
@@ -4780,11 +4906,13 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+msgid "Page:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
@@ -4877,6 +5005,11 @@ msgid ""
"as runnable."
msgstr ""
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Cuntas:"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -5131,7 +5264,9 @@ msgid "Draw Spaces"
msgstr ""
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr ""
@@ -5667,10 +5802,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Sorting Order"
msgstr ""
@@ -6390,14 +6527,6 @@ msgid "Replace in Files"
msgstr ""
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr ""
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr ""
@@ -6526,7 +6655,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Scagairí..."
@@ -6772,7 +6901,7 @@ msgid "Generating Lightmaps"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+msgid "Generating for Mesh:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -6800,6 +6929,18 @@ msgid "Saving..."
msgstr ""
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7580,10 +7721,12 @@ msgstr ""
msgid "Directions"
msgstr ""
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr ""
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr ""
@@ -7739,7 +7882,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
+#, fuzzy
+msgid "Transition:"
msgstr "Athrú: "
#: editor/plugins/animation_state_machine_editor.cpp
@@ -7756,11 +7900,6 @@ msgid "New name:"
msgstr "Ainm nua:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "Scála:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr ""
@@ -8642,6 +8781,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr ""
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -8705,6 +8845,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -9445,8 +9589,9 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr ""
+#, fuzzy
+msgid "Emission Source:"
+msgstr "Acmhainn"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
@@ -9675,6 +9820,7 @@ msgid "Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr ""
@@ -9828,13 +9974,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -9843,10 +9982,6 @@ msgstr ""
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -10533,13 +10668,17 @@ msgstr ""
msgid "Translate"
msgstr ""
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr ""
+#, fuzzy
+msgid "Scaling:"
+msgstr "Scála:"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "Athrú: "
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -10562,11 +10701,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11041,7 +11175,7 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+msgid "Convert to MeshInstance2D"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11073,15 +11207,16 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "CrannBeochan"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12008,8 +12143,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr ""
@@ -13434,31 +13568,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr ""
@@ -13591,6 +13704,10 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Project Export"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr ""
@@ -15024,8 +15141,9 @@ msgid "Attach Node Script"
msgstr ""
#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr ""
+#, fuzzy
+msgid "Remote %s:"
+msgstr "Cosán"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -15848,7 +15966,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
msgid "Polygon"
msgstr ""
@@ -16009,7 +16127,7 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+msgid "Libraries:"
msgstr ""
#: modules/gdnative/nativescript/nativescript.cpp
@@ -16416,7 +16534,6 @@ msgid "Use In Baked Light"
msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -16445,6 +16562,19 @@ msgstr "Nód Cumaisc2"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Nód Beochana"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Nód Beochana"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -16842,7 +16972,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -16850,7 +16980,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17216,7 +17346,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17224,7 +17354,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17377,11 +17507,11 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
+msgid "Invalid argument of type:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
+msgid "Invalid arguments:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
@@ -17393,11 +17523,11 @@ msgid "Var Name"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+msgid "VariableGet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+msgid "VariableSet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
@@ -17887,10 +18017,6 @@ msgid "Could not execute on device."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -17994,12 +18120,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Nód Measc"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18015,6 +18145,10 @@ msgid "Could not find keystore, unable to export."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Could not start apksigner executable."
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -18043,7 +18177,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18054,19 +18188,17 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+msgid "Could not export project files to gradle project."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18079,7 +18211,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -18095,7 +18227,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr "Ãbhar:"
#: platform/android/export/export_plugin.cpp
@@ -18103,15 +18235,12 @@ msgid "Creating APK..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -18121,7 +18250,7 @@ msgid "Adding files..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18352,6 +18481,15 @@ msgstr "Cruthaigh"
msgid "Custom BG Color"
msgstr "Cruthaigh"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+msgid "Prepare Templates"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Export template not found."
+msgstr ""
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18373,19 +18511,28 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Could not open template for export: \"%s\"."
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Invalid export template: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+msgid "Could not write file: \"%s\"."
msgstr ""
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Ãbhar:"
+
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not read file: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+msgid "PWA"
msgstr ""
#: platform/javascript/export/export.cpp
@@ -18459,15 +18606,15 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr ""
#: platform/javascript/export/export.cpp
@@ -18745,9 +18892,26 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Could not open icon file \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Could not start xcrun executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "CrannBeochan"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -18763,15 +18927,67 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
msgid "No identity found."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Cannot sign file %s."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Cuntas:"
+
+#: platform/osx/export/export.cpp
+msgid "Could not start hdiutil executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Creating app bundle"
msgstr ""
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Invalid export format."
msgstr ""
#: platform/osx/export/export.cpp
@@ -18782,7 +18998,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -18823,6 +19039,15 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "CrannBeochan"
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr ""
@@ -19120,6 +19345,10 @@ msgid "Debug Algorithm"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Failed to rename temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -19162,6 +19391,62 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Resources Modification"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Invalid identity type."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Invalid timestamp server."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Failed to remove temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19180,6 +19465,22 @@ msgid "Invalid product version:"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Failed to open executable file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Windows"
msgstr ""
@@ -19195,6 +19496,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
msgid "Frames"
@@ -19306,7 +19611,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
@@ -20076,13 +20382,16 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
+msgid "Navpoly"
msgstr ""
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Nód Cumaisc2"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Travel Cost"
msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
@@ -21164,12 +21473,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -23582,6 +23885,16 @@ msgid "3D Physics"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Nód Beochana"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Nód Beochana"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -24879,7 +25192,7 @@ msgstr "Athrú: "
msgid "Refraction"
msgstr "Cuntas:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -24952,8 +25265,14 @@ msgid "Visible Instance Count"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Sample Partition Type"
-msgstr ""
+#, fuzzy
+msgid "Sampling"
+msgstr "Scála:"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
+msgstr "Cuntas:"
#: scene/resources/navigation_mesh.cpp
msgid "Parsed Geometry Type"
@@ -24969,10 +25288,15 @@ msgid "Source Group Name"
msgstr "Acmhainn"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "Ãbhar:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -24981,11 +25305,16 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Regions"
+msgstr "Cruthaigh"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -24997,6 +25326,11 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Details"
+msgstr "Scagairí..."
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -25013,7 +25347,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -25385,6 +25719,11 @@ msgid "Scenario"
msgstr ""
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Nód Beochana"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -25400,6 +25739,26 @@ msgstr ""
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Scrios ionchur"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Nód Cumaisc2"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Scrios ionchur"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Ãbhar:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/gl.po b/editor/translations/gl.po
index ee1362388b..398746ea6a 100644
--- a/editor/translations/gl.po
+++ b/editor/translations/gl.po
@@ -223,9 +223,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
#, fuzzy
msgid "Network"
msgstr "Analítica de Rendemento de Rede"
@@ -340,7 +341,8 @@ msgstr ""
"Non hai insuficientes \"bytes\" para descodificar, ou o formato é inválido."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "Entrada inválida %i (non pasada) na expresión"
#: core/math/expression.cpp
@@ -385,6 +387,16 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Mover Modo"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "Eliminar Entrada"
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -586,7 +598,8 @@ msgstr "Descrición"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "Executar"
@@ -673,6 +686,11 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Ruta da Escena:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -680,19 +698,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Control de Versións"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Control de Versións"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Nome do Plugin:"
+msgid "Version Control Plugin Name"
+msgstr "Control de Versións"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -809,7 +823,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "Filtros:"
@@ -1090,6 +1105,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Libre"
@@ -1106,7 +1122,7 @@ msgstr "Espello"
msgid "Time:"
msgstr "Tempo:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Valor:"
@@ -1353,10 +1369,72 @@ msgid "Remove this track."
msgstr "Eliminar esta pista."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "Tempo (s): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Posición do Panel"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Modo Rotación"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "Escala:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "Tipo:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Extensión inválida."
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Easing:"
+msgstr "Aviso:"
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "Oínte de Son"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Reiniciar (s):"
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Animacións:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "Act./Desact. Pista"
@@ -1570,7 +1648,8 @@ msgid "Add Method Track Key"
msgstr "Engadir Chave de Pista de Método"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "Método non encontrado no obxecto: "
#: editor/animation_track_editor.cpp
@@ -2184,8 +2263,8 @@ msgid "Open"
msgstr "Abrir"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Dono De:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
#, fuzzy
@@ -2497,7 +2576,7 @@ msgid "Bus Options"
msgstr "Opcións de Bus"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Duplicar"
@@ -2549,8 +2628,9 @@ msgstr "Abrir Disposición do Bus de Son"
msgid "There is no '%s' file."
msgstr "Non hai ningún arquivo '%s'."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "Disposición"
#: editor/editor_audio_buses.cpp
@@ -2756,6 +2836,25 @@ msgid "Choose"
msgstr "Elixir"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "Copiar Ruta do Nodo"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "Paquete instalado correctamente!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "Fracasado:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Almacenando Arquivo:"
@@ -2768,6 +2867,31 @@ msgid "Packing"
msgstr "Empaquetando"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Gardar Como"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "Non se puido crear cartafol."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Non se puido iniciar subproceso!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Non se puido abrir o arquivo para escritura:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Gardar Como"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2888,11 +3012,31 @@ msgstr "Non se encontrou un modelo de depuración personalizado."
msgid "Custom release template not found."
msgstr "Non se encontrou un modelo release personalizado."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "Modelo:"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "The given export path doesn't exist."
+msgstr ""
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "Non se encontrou o arquivo do modelo:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "Fallou a carga do Recurso."
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr "Na exportación de 32 bits o PCK integrado non pode ser maior de 4 GiB."
@@ -3067,9 +3211,9 @@ msgid "Import"
msgstr "Importar"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Exportación"
@@ -4244,15 +4388,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Escena"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Ruta da Escena:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4378,6 +4513,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Control de Versións"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Renomear"
@@ -4406,6 +4545,10 @@ msgstr "Act./Desact. modo sen distraccións."
msgid "Add a new scene."
msgstr "Engadir unha nova escena."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Escena"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Ir á escena aberta previamente."
@@ -5077,11 +5220,15 @@ msgid "Selected node is not a Viewport!"
msgstr "O nodo seleccionado non é unha Mini-Ventá (Viewport)!"
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#, fuzzy
+msgid "Size:"
msgstr "Tamaño: "
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+#, fuzzy
+msgid "Page:"
msgstr "Páxina: "
#: editor/editor_properties_array_dict.cpp
@@ -5183,6 +5330,11 @@ msgstr ""
"Engade uns axustes de exportación executables, ou define algún xa existente "
"como executable."
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Proxecto"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Escribe a túa lóxica no método '_run()'."
@@ -5462,7 +5614,9 @@ msgid "Draw Spaces"
msgstr "Chamadas"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr "Navegación"
@@ -6046,10 +6200,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Administrador de Proxectos"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -6817,14 +6973,6 @@ msgid "Replace in Files"
msgstr "Substituír Todo"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "Buscar: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "Substituír: "
-
-#: editor/find_in_files.cpp
#, fuzzy
msgid "Replace All (NO UNDO)"
msgstr "Substituír Todo"
@@ -6954,7 +7102,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Filtros:"
@@ -7221,8 +7369,9 @@ msgid "Generating Lightmaps"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
-msgstr ""
+#, fuzzy
+msgid "Generating for Mesh:"
+msgstr "Renomeando Cartafol:"
#: editor/import/resource_importer_scene.cpp
msgid "Running Custom Script..."
@@ -7249,6 +7398,18 @@ msgid "Saving..."
msgstr "Gardando..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -8054,10 +8215,12 @@ msgstr ""
msgid "Directions"
msgstr "Direccións"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "Pasado"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "Futuro"
@@ -8212,7 +8375,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
+#, fuzzy
+msgid "Transition:"
msgstr "Transición: "
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8229,11 +8393,6 @@ msgid "New name:"
msgstr "Novo nome:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "Escala:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr ""
@@ -9139,6 +9298,7 @@ msgstr "Crear Óso(s) Personalizados a partir de Nodo(s)"
msgid "Clear Custom Bones"
msgstr ""
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9205,6 +9365,10 @@ msgid "Preview Canvas Scale"
msgstr "Vista Previa da Escala do Lenzo (Canvas)"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "Disposición"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -9978,8 +10142,9 @@ msgid "Volume"
msgstr "Volume"
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr ""
+#, fuzzy
+msgid "Emission Source:"
+msgstr "Fonte:"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
@@ -10212,6 +10377,7 @@ msgid "Points"
msgstr "Puntos"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr "Polígonos"
@@ -10365,13 +10531,6 @@ msgid "Instance:"
msgstr "Instancia:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "Tipo:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -10380,10 +10539,6 @@ msgstr ""
msgid "Load Resource"
msgstr "Cargar Recurso"
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -11097,12 +11252,16 @@ msgstr "Modo Rotación"
msgid "Translate"
msgstr "Trasladar:"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
+#, fuzzy
+msgid "Scaling:"
msgstr "Escalado: "
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
+#, fuzzy
+msgid "Translating:"
msgstr "Trasladando: "
#: editor/plugins/spatial_editor_plugin.cpp
@@ -11127,12 +11286,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
-msgid "Size:"
-msgstr "Tamaño: "
-
-#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
msgid "Objects Drawn:"
msgstr "Obxectos Debuxados"
@@ -11631,8 +11784,9 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
-msgstr ""
+#, fuzzy
+msgid "Convert to MeshInstance2D"
+msgstr "Converter a CPUParticles2D"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Invalid geometry, can't create polygon."
@@ -11663,15 +11817,16 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
+#, fuzzy
+msgid "Simplification:"
msgstr "Simplificación: "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12671,8 +12826,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr "Rexión"
@@ -14165,33 +14319,10 @@ msgid "Delete preset '%s'?"
msgstr "Eliminar axustes de exportación '%s'?"
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-"Fallou a exportación do proxecto á plataforma '%s'.\n"
-"Esto pode deberse a un problema cos axustes de exportación."
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr ""
@@ -14335,6 +14466,11 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Fundadores do Proxecto"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr ""
@@ -15828,7 +15964,8 @@ msgid "Attach Node Script"
msgstr "Adxuntar Script de Nodo"
#: editor/script_editor_debugger.cpp
-msgid "Remote "
+#, fuzzy
+msgid "Remote %s:"
msgstr "Remoto "
#: editor/script_editor_debugger.cpp
@@ -16693,7 +16830,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "Polígonos"
@@ -16869,7 +17006,8 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+#, fuzzy
+msgid "Libraries:"
msgstr "Bibliotecas: "
#: modules/gdnative/nativescript/nativescript.cpp
@@ -17308,7 +17446,6 @@ msgid "Use In Baked Light"
msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17338,6 +17475,19 @@ msgstr "Centro"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Navegación"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Navegación"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -17747,7 +17897,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17755,7 +17905,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -18122,7 +18272,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18130,7 +18280,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18299,12 +18449,14 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
+#, fuzzy
+msgid "Invalid argument of type:"
+msgstr "Argumentos inválidos para construir '%s'"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
+#, fuzzy
+msgid "Invalid arguments:"
+msgstr "Nome inválido."
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -18316,12 +18468,14 @@ msgid "Var Name"
msgstr "Nome"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableGet not found in script:"
+msgstr "Método non encontrado no obxecto: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableSet not found in script:"
+msgstr "Método non encontrado no obxecto: "
#: modules/visual_script/visual_script_nodes.cpp
#, fuzzy
@@ -18866,10 +19020,6 @@ msgid "Could not execute on device."
msgstr "Non se puido crear cartafol."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18979,12 +19129,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Sinal"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19003,6 +19157,11 @@ msgid "Could not find keystore, unable to export."
msgstr ""
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "Non se puido iniciar subproceso!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -19032,7 +19191,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19043,20 +19202,18 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Could not export project files to gradle project\n"
+msgid "Could not export project files to gradle project."
msgstr "Non se pudo editar o arquivo 'project.godot' na ruta do proxecto."
#: platform/android/export/export_plugin.cpp
@@ -19068,8 +19225,9 @@ msgid "Building Android Project (gradle)"
msgstr "Construir Proxecto Android (gradle)"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
"A creación do proxecto para Android fallou; comproba a saída para encontrar "
@@ -19089,7 +19247,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr "Contenido do Paquete:"
#: platform/android/export/export_plugin.cpp
@@ -19098,15 +19256,13 @@ msgid "Creating APK..."
msgstr "Conectando..."
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
-msgstr ""
+#, fuzzy
+msgid "Could not find template APK to export: \"%s\"."
+msgstr "Non se puido iniciar subproceso!"
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -19118,7 +19274,7 @@ msgstr "Engadindo %s..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr "Non se puido iniciar subproceso!"
#: platform/android/export/export_plugin.cpp
@@ -19360,6 +19516,17 @@ msgstr "Cortar Nodos"
msgid "Custom BG Color"
msgstr "Cortar Nodos"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "Modelo:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Non se encontrou un modelo release personalizado."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -19382,23 +19549,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
-msgstr ""
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
+msgstr "Non se puido crear cartafol."
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
-msgstr ""
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
+msgstr "Extensión inválida."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr ""
+#, fuzzy
+msgid "Could not write file: \"%s\"."
+msgstr "Non se puido crear cartafol."
+
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Contidos:"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read file:"
+msgid "Could not read file: \"%s\"."
msgstr "Non se puido crear cartafol."
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "Escalar (Razón):"
@@ -19474,17 +19653,17 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr "Non se puido crear cartafol."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr "Non se puido crear cartafol."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr "Erro ao gardar TileSet!"
#: platform/javascript/export/export.cpp
@@ -19782,9 +19961,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Non se puido iniciar subproceso!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "Non se puido iniciar subproceso!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Linguaxe"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19800,18 +19998,74 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "Non se atopou ningún sub-recurso."
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Erro gardando o arquivo: %s"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Direccións"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "Non se puido iniciar subproceso!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "Creando Miniatura"
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
-msgstr ""
+#, fuzzy
+msgid "Could not find template app to export: \"%s\"."
+msgstr "Non se puido iniciar subproceso!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Ruta base inválida."
#: platform/osx/export/export.cpp
msgid ""
@@ -19821,7 +20075,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -19862,6 +20116,16 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "Proxecto"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr "Non se pudo editar o arquivo 'project.godot' na ruta do proxecto."
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr ""
@@ -20171,6 +20435,11 @@ msgid "Debug Algorithm"
msgstr "Depurador"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Non se pode eliminar o arquivo temporal:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20218,6 +20487,66 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Pegar Animación"
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Argumentos inválidos para construir '%s'"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Nome inválido."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "Non se pode eliminar o arquivo temporal:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20239,6 +20568,23 @@ msgid "Invalid product version:"
msgstr "Nome de Proxecto Inválido."
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Extensión inválida."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "Nova Xanela"
@@ -20255,6 +20601,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20380,7 +20730,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Instanciar"
@@ -21218,15 +21569,19 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr ""
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Centro Abaixo"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "Viaxe"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
#, fuzzy
@@ -22421,12 +22776,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
#, fuzzy
msgid "NavMesh"
@@ -25092,6 +25441,16 @@ msgid "3D Physics"
msgstr "Fotograma de Física %"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Navegación"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Navegación"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -26499,7 +26858,7 @@ msgstr "Transición: "
msgid "Refraction"
msgstr "Escalar (Razón):"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -26582,7 +26941,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "Escalado: "
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "Cambiar Tipo Base:"
#: scene/resources/navigation_mesh.cpp
@@ -26599,10 +26963,15 @@ msgid "Source Group Name"
msgstr "Fonte"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "Fragment"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -26611,11 +26980,16 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Regions"
+msgstr "Rexión"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26628,6 +27002,11 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Details"
+msgstr "Cargar Valores por Defecto"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -26644,7 +27023,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -27055,6 +27434,11 @@ msgid "Scenario"
msgstr "Escena"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Navegación"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -27072,6 +27456,26 @@ msgstr "Por Defecto"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Por Defecto"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Vista Previa Cinemática"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Probas"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Editar Conexión:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/he.po b/editor/translations/he.po
index 0de1aa709a..78c74fd01b 100644
--- a/editor/translations/he.po
+++ b/editor/translations/he.po
@@ -21,13 +21,14 @@
# Omer I.S. <omeritzicschwartz@gmail.com>, 2021.
# Ram Tourgeman <ramtorgeman@gmail.com>, 2021.
# Shailee Eliyahu <dev.sle.il@gmail.com>, 2021.
+# Mati Borlak <matiborlak@gmail.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-11-29 20:38+0000\n"
-"Last-Translator: Shailee Eliyahu <dev.sle.il@gmail.com>\n"
+"PO-Revision-Date: 2022-06-08 06:48+0000\n"
+"Last-Translator: Mati Borlak <matiborlak@gmail.com>\n"
"Language-Team: Hebrew <https://hosted.weblate.org/projects/godot-engine/"
"godot/he/>\n"
"Language: he\n"
@@ -36,25 +37,23 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && "
"n % 10 == 0) ? 2 : 3));\n"
-"X-Generator: Weblate 4.10-dev\n"
+"X-Generator: Weblate 4.13-dev\n"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
-msgstr ""
+msgstr "דריבר טבלט"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Clipboard"
-msgstr "לוח העתקה ריק!"
+msgstr "לוח העתקה"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Current Screen"
-msgstr "×©× ×¡×¦× ×” נוכחית"
+msgstr "מסך נוכחית"
#: core/bind/core_bind.cpp
msgid "Exit Code"
-msgstr ""
+msgstr "קוד יצי××”"
#: core/bind/core_bind.cpp
#, fuzzy
@@ -79,66 +78,58 @@ msgid "Low Processor Usage Mode Sleep (µsec)"
msgstr ""
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Keep Screen On"
-msgstr "להש×יר ×ת מנפה השגי×ות פתוח"
+msgstr "לשמור ×ת המסך"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Min Window Size"
-msgstr "מבט קדמי"
+msgstr "גודל חלון מינימלי"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Max Window Size"
-msgstr "מבט קדמי"
+msgstr "גודל חלון מקסימלי"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Screen Orientation"
-msgstr "פתיחת התיעוד"
+msgstr "כוון מסך"
#: core/bind/core_bind.cpp core/project_settings.cpp main/main.cpp
#: platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Window"
-msgstr "חלון חדש"
+msgstr "חלון"
#: core/bind/core_bind.cpp core/project_settings.cpp
msgid "Borderless"
-msgstr ""
+msgstr "בלי קצה"
#: core/bind/core_bind.cpp
msgid "Per Pixel Transparency Enabled"
msgstr ""
#: core/bind/core_bind.cpp core/project_settings.cpp
-#, fuzzy
msgid "Fullscreen"
-msgstr "הפעלת/ביטול מסך מל×"
+msgstr "מסך מל×"
#: core/bind/core_bind.cpp
msgid "Maximized"
-msgstr ""
+msgstr "מקסימלי"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Minimized"
-msgstr "הגדלת ×ות ר×שונה"
+msgstr "מינימלי"
#: core/bind/core_bind.cpp core/project_settings.cpp scene/gui/dialogs.cpp
#: scene/gui/graph_node.cpp
msgid "Resizable"
-msgstr ""
+msgstr "×פשר לשנות ×ת הגודל"
#: core/bind/core_bind.cpp core/os/input_event.cpp scene/2d/node_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/remote_transform_2d.cpp
#: scene/3d/physics_body.cpp scene/3d/remote_transform.cpp
#: scene/gui/control.cpp scene/gui/line_edit.cpp
#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Position"
-msgstr "×ž×™×§×•× ×”×¤× ×œ"
+msgstr "מיקו×"
#: core/bind/core_bind.cpp core/project_settings.cpp editor/editor_settings.cpp
#: main/main.cpp modules/gridmap/grid_map.cpp
@@ -149,27 +140,24 @@ msgstr "×ž×™×§×•× ×”×¤× ×œ"
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
#: scene/resources/visual_shader.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Size"
-msgstr "מבט קדמי"
+msgstr "גודל"
#: core/bind/core_bind.cpp
msgid "Endian Swap"
msgstr ""
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Editor Hint"
-msgstr "עורך"
+msgstr "רמז עורך"
#: core/bind/core_bind.cpp
msgid "Print Error Messages"
-msgstr ""
+msgstr "תדפיס הודעות שגי××”"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Iterations Per Second"
-msgstr "מצב ×ינטרפולציה"
+msgstr "×יטרציות לשניה"
#: core/bind/core_bind.cpp
#, fuzzy
@@ -188,7 +176,7 @@ msgstr "שקופית פיזיקלית %"
#: core/bind/core_bind.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Error"
-msgstr ""
+msgstr "שגי××”"
#: core/bind/core_bind.cpp
#, fuzzy
@@ -196,18 +184,16 @@ msgid "Error String"
msgstr "שגי××” בשמירה"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Error Line"
-msgstr "שגי××” בשמירה"
+msgstr "שורת שגי××”"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Result"
-msgstr "חיפוש בעזרה"
+msgstr "תוצ××”"
#: core/command_queue_mt.cpp core/message_queue.cpp main/main.cpp
msgid "Memory"
-msgstr ""
+msgstr "זכרון"
#: core/command_queue_mt.cpp core/message_queue.cpp
#: core/register_core_types.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
@@ -218,12 +204,11 @@ msgstr ""
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
#: servers/visual_server.cpp
msgid "Limits"
-msgstr ""
+msgstr "תחו×"
#: core/command_queue_mt.cpp
-#, fuzzy
msgid "Command Queue"
-msgstr "Ctrl: הטייה"
+msgstr "תור פיקוד"
#: core/command_queue_mt.cpp
msgid "Multithreading Queue Size (KB)"
@@ -233,22 +218,21 @@ msgstr ""
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: scene/resources/visual_shader_nodes.cpp
-#, fuzzy
msgid "Function"
-msgstr "פונקציות"
+msgstr "פונקציה"
#: core/image.cpp core/packed_data_container.cpp scene/2d/polygon_2d.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
msgid "Data"
-msgstr ""
+msgstr "מידע"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
-#, fuzzy
+#: scene/gui/file_dialog.cpp
msgid "Network"
-msgstr "מ×פיין רשת"
+msgstr "רשת"
#: core/io/file_access_network.cpp
#, fuzzy
@@ -257,7 +241,7 @@ msgstr "מרוחק "
#: core/io/file_access_network.cpp
msgid "Page Size"
-msgstr ""
+msgstr "גודל דף"
#: core/io/file_access_network.cpp
msgid "Page Read Ahead"
@@ -268,9 +252,8 @@ msgid "Blocking Mode Enabled"
msgstr ""
#: core/io/http_client.cpp
-#, fuzzy
msgid "Connection"
-msgstr "התחברות"
+msgstr "חיבור"
#: core/io/http_client.cpp
msgid "Read Chunk Size"
@@ -278,7 +261,7 @@ msgstr ""
#: core/io/marshalls.cpp
msgid "Object ID"
-msgstr ""
+msgstr "זהות ×וביקט"
#: core/io/multiplayer_api.cpp core/io/packet_peer.cpp
#, fuzzy
@@ -358,7 +341,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "×ין מספיק ×‘×ª×™× ×œ×¤×¢× ×•×— בתי×, ×ו פורמט ×œ× ×ª×§×™×Ÿâ€­â€­."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "קלט שגוי %i (×œ× ×”×•×¢×‘×¨) בתוך הביטוי"
#: core/math/expression.cpp
@@ -391,22 +375,31 @@ msgid "Seed"
msgstr ""
#: core/math/random_number_generator.cpp
-#, fuzzy
msgid "State"
-msgstr "הטיית מצולע"
+msgstr "מצב"
#: core/message_queue.cpp
msgid "Message Queue"
-msgstr ""
+msgstr "תור הור×ות"
#: core/message_queue.cpp
msgid "Max Size (KB)"
-msgstr ""
+msgstr "גודל מקסימלי (KB)"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "מצב שינוי קנה מידה (R)"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "מחיקת קלט"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
-msgstr "התקן"
+msgstr "מכשיר"
#: core/os/input_event.cpp
#, fuzzy
@@ -427,16 +420,14 @@ msgid "Meta"
msgstr ""
#: core/os/input_event.cpp
-#, fuzzy
msgid "Command"
-msgstr "קהילה"
+msgstr "פיקוד"
#: core/os/input_event.cpp scene/2d/touch_screen_button.cpp
#: scene/gui/base_button.cpp scene/gui/texture_button.cpp
#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Pressed"
-msgstr "ערכה מוגדרת…"
+msgstr "לחוץ"
#: core/os/input_event.cpp
#, fuzzy
@@ -466,9 +457,8 @@ msgid "Global Position"
msgstr "קבוע"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Factor"
-msgstr "חוקר"
+msgstr "פקטור"
#: core/os/input_event.cpp
#, fuzzy
@@ -484,9 +474,8 @@ msgid "Tilt"
msgstr ""
#: core/os/input_event.cpp
-#, fuzzy
msgid "Pressure"
-msgstr "ערכה מוגדרת…"
+msgstr "לחץ"
#: core/os/input_event.cpp
#, fuzzy
@@ -497,14 +486,13 @@ msgstr "GDNative"
#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
#: scene/animation/animation_player.cpp scene/resources/environment.cpp
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Speed"
-msgstr "מהירות (FPS):"
+msgstr "מהירות"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: scene/3d/sprite_3d.cpp
msgid "Axis"
-msgstr ""
+msgstr "ציר"
#: core/os/input_event.cpp
#, fuzzy
@@ -512,35 +500,31 @@ msgid "Axis Value"
msgstr "(ערך)"
#: core/os/input_event.cpp modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "Index"
-msgstr "×”×–×—×” ×וטומטית"
+msgstr "×נדקס"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: scene/2d/touch_screen_button.cpp
-#, fuzzy
msgid "Action"
-msgstr "כל הבחירה"
+msgstr "פעלה"
#: core/os/input_event.cpp scene/resources/environment.cpp
#: scene/resources/material.cpp
msgid "Strength"
-msgstr ""
+msgstr "×›×—"
#: core/os/input_event.cpp
msgid "Delta"
-msgstr ""
+msgstr "דלת×"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Channel"
-msgstr "שינוי"
+msgstr "ערוץ"
#: core/os/input_event.cpp main/main.cpp
-#, fuzzy
msgid "Message"
-msgstr "סנכרון ×”×©×™× ×•×™×™× ×‘×¡×§×¨×™×¤×˜"
+msgstr "מסר"
#: core/os/input_event.cpp
#, fuzzy
@@ -556,23 +540,21 @@ msgstr "הגדלת ×ות ר×שונה"
#: core/os/input_event.cpp
msgid "Instrument"
-msgstr ""
+msgstr "כלי"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Controller Number"
-msgstr "שורה מספר:"
+msgstr "מספר שלט"
#: core/os/input_event.cpp
msgid "Controller Value"
-msgstr ""
+msgstr "ערך שלט"
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
#: platform/windows/export/export.cpp
-#, fuzzy
msgid "Application"
-msgstr "כל הבחירה"
+msgstr "×פליקציה"
#: core/project_settings.cpp main/main.cpp
#, fuzzy
@@ -605,7 +587,8 @@ msgstr "תי×ור"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "הרצה"
@@ -647,7 +630,7 @@ msgstr "הצג הכל"
#: modules/opensimplex/noise_texture.cpp scene/2d/line_2d.cpp
#: scene/3d/label_3d.cpp scene/gui/text_edit.cpp scene/resources/texture.cpp
msgid "Width"
-msgstr ""
+msgstr "רחב"
#: core/project_settings.cpp main/main.cpp modules/csg/csg_shape.cpp
#: modules/gltf/gltf_node.cpp modules/opensimplex/noise_texture.cpp
@@ -655,23 +638,20 @@ msgstr ""
#: scene/resources/capsule_shape_2d.cpp scene/resources/cylinder_shape.cpp
#: scene/resources/font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/texture.cpp
-#, fuzzy
msgid "Height"
-msgstr "ימין"
+msgstr "גבה"
#: core/project_settings.cpp
msgid "Always On Top"
msgstr ""
#: core/project_settings.cpp
-#, fuzzy
msgid "Test Width"
-msgstr "מבט שמ×לי"
+msgstr "רחב בדיקה"
#: core/project_settings.cpp
-#, fuzzy
msgid "Test Height"
-msgstr "בבדיקה"
+msgstr "גבה בדיקה"
#: core/project_settings.cpp editor/animation_track_editor.cpp
#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
@@ -695,6 +675,11 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "נתיב סצנות:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -702,25 +687,20 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "בקרת גירס×ות"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "בקרת גירס×ות"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "×©× ×”×ž×¤×¨×§:"
+msgid "Version Control Plugin Name"
+msgstr "בקרת גירס×ות"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Input"
-msgstr "הוספת קלט"
+msgstr "קלט"
#: core/project_settings.cpp
msgid "UI Accept"
@@ -789,9 +769,8 @@ msgstr "בסוף"
#: servers/physics_2d/physics_2d_server_wrap_mt.h
#: servers/physics_2d/space_2d_sw.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
-#, fuzzy
msgid "Physics"
-msgstr "שקופית פיזיקלית %"
+msgstr "פיזיקה"
#: core/project_settings.cpp editor/editor_settings.cpp
#: editor/import/resource_importer_layered_texture.cpp
@@ -801,7 +780,7 @@ msgstr "שקופית פיזיקלית %"
#: scene/3d/physics_body.cpp scene/resources/world.cpp
#: servers/physics/space_sw.cpp servers/physics_server.cpp
msgid "3D"
-msgstr ""
+msgstr "3D"
#: core/project_settings.cpp
msgid "Smooth Trimesh Collision"
@@ -827,13 +806,13 @@ msgstr ""
#: scene/resources/multimesh.cpp servers/visual/visual_server_scene.cpp
#: servers/visual_server.cpp
msgid "Quality"
-msgstr ""
+msgstr "×יכות"
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
-#, fuzzy
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
msgid "Filters"
-msgstr "מסנני×..."
+msgstr "מסנני×"
#: core/project_settings.cpp scene/main/viewport.cpp
msgid "Sharpen Intensity"
@@ -903,7 +882,7 @@ msgstr ""
#: core/project_settings.cpp platform/android/export/export.cpp
msgid "Android"
-msgstr ""
+msgstr "Android"
#: core/project_settings.cpp
msgid "Modules"
@@ -963,9 +942,8 @@ msgid "Locale"
msgstr ""
#: core/translation.cpp
-#, fuzzy
msgid "Test"
-msgstr "בבדיקה"
+msgstr "בדיקה"
#: core/translation.cpp scene/resources/font.cpp
msgid "Fallback"
@@ -1027,7 +1005,7 @@ msgstr ""
#: servers/physics_2d/space_2d_sw.cpp servers/physics_2d_server.cpp
#: servers/visual_server.cpp
msgid "2D"
-msgstr ""
+msgstr "2D"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
@@ -1088,9 +1066,8 @@ msgstr ""
#: scene/animation/animation_blend_tree.cpp scene/gui/control.cpp
#: scene/main/canvas_layer.cpp scene/resources/environment.cpp
#: scene/resources/material.cpp scene/resources/particles_material.cpp
-#, fuzzy
msgid "Scale"
-msgstr "קנה מידה:"
+msgstr "קנה מידה"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Follow Surface"
@@ -1106,12 +1083,13 @@ msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp scene/resources/environment.cpp
msgid "High Quality"
-msgstr ""
+msgstr "×יכות גבוה"
#: drivers/gles3/rasterizer_storage_gles3.cpp
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "חופשי"
@@ -1128,7 +1106,7 @@ msgstr "מר××”"
msgid "Time:"
msgstr "זמן:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "ערך:"
@@ -1183,9 +1161,8 @@ msgstr "שינוי קרי×ת ×נימציה"
#: editor/animation_track_editor.cpp scene/2d/animated_sprite.cpp
#: scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Frame"
-msgstr "שקופית %"
+msgstr "שקופית"
#: editor/animation_track_editor.cpp editor/editor_profiler.cpp
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
@@ -1203,9 +1180,8 @@ msgstr "צעד סיבוב:"
#: editor/animation_track_editor.cpp modules/gltf/gltf_node.cpp
#: scene/2d/polygon_2d.cpp scene/2d/remote_transform_2d.cpp
#: scene/3d/remote_transform.cpp scene/3d/spatial.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Rotation"
-msgstr "צעד סיבוב:"
+msgstr "צעד סיבוב"
#: editor/animation_track_editor.cpp editor/script_editor_debugger.cpp
#: modules/visual_script/visual_script_nodes.cpp scene/gui/range.cpp
@@ -1375,10 +1351,73 @@ msgid "Remove this track."
msgstr "הסרת רצועה."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "זמן (שניות): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "מיקו×"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "צעד סיבוב"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "קנה מידה:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "תבנית ×™×¦×•× ×©×’×•×™×”:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Easing:"
+msgstr "×זהרה:"
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "מ×זין לשמע"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "התחלה(ות) מחדש:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "End (s):"
+msgstr "דהייה/יות:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "×נימציות"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "הפעלת/ביטול רצועה"
@@ -1460,9 +1499,8 @@ msgstr "מחיקת רצועת הנפשה"
#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Editors"
-msgstr "עורך"
+msgstr "עורכי×"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
#, fuzzy
@@ -1591,7 +1629,8 @@ msgid "Add Method Track Key"
msgstr "הוסף מפתח רצועת שיטה"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "×œ× × ×ž×¦××” מתודה בעצ×: "
#: editor/animation_track_editor.cpp
@@ -1612,7 +1651,7 @@ msgstr "מתודות"
#: editor/animation_track_editor.cpp
msgid "Bezier"
-msgstr ""
+msgstr "Bezier"
#: editor/animation_track_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
@@ -2195,8 +2234,8 @@ msgid "Open"
msgstr "פתיחה"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "×‘×¢×œ×™× ×©×œ:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
msgid ""
@@ -2495,7 +2534,7 @@ msgid "Bus Options"
msgstr "×פשרויות ×פיק"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "שכפול"
@@ -2547,8 +2586,9 @@ msgstr "פתיחת פריסת ×פיקי שמע"
msgid "There is no '%s' file."
msgstr "קובץ '%s' ×ינו ×§×™×™×."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "פריסה"
#: editor/editor_audio_buses.cpp
@@ -2752,6 +2792,25 @@ msgid "Choose"
msgstr "בחירה"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "העתקת נתיב המפרק"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "החבילה הותקנה בהצלחה!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "נכשל:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "קובץ ×חסון:"
@@ -2764,6 +2823,31 @@ msgid "Packing"
msgstr "×ורז"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "שמירה בש×"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "×œ× × ×™×ª×Ÿ ליצור תיקייה."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "×œ× × ×™×ª×Ÿ לכתוב קובץ:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "×œ× × ×™×ª×Ÿ לפתוח קובץ לכתיבה:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "שמירה בש×"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2879,11 +2963,32 @@ msgstr "תבנית ניפוי שגי×ות מות×מת ×ישית ×œ× × ×ž×¦×
msgid "Custom release template not found."
msgstr "תבנית שחרור מות×מת-×ישית ×œ× × ×ž×¦××”."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "ניהול תבניות"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "הקובץ ×œ× ×§×™×™×."
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "קובץ התבנית ×œ× × ×ž×¦×:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "תבנית ×™×¦×•× ×©×’×•×™×”:"
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr "×‘×™×™×¦×•× ×רכיטקטורת 32 ביט, ×” PCK המובנה ×œ× ×™×›×•×œ לחרוג מעבר ל 4 GiB."
@@ -3052,9 +3157,9 @@ msgid "Import"
msgstr "ייבו×"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "ייצו×"
@@ -4195,15 +4300,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "סצנה"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "נתיב סצנות:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4331,6 +4427,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "בקרת גירס×ות"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "שינוי ש×"
@@ -4359,6 +4459,10 @@ msgstr "הפעל/בטל מצב ×œ×œ× ×”×¡×—×•×ª דעת."
msgid "Add a new scene."
msgstr "הוספת סצנה חדשה."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "סצנה"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "מעבר לסצנה הקודמת."
@@ -5033,11 +5137,14 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#, fuzzy
+msgid "Size:"
+msgstr "מבט קדמי"
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+msgid "Page:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
@@ -5135,6 +5242,11 @@ msgid ""
"as runnable."
msgstr ""
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "מיז×"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "ניתן לכתוב ×ת הלוגיקה שלך בשיטה ‎_run()‎."
@@ -5416,7 +5528,9 @@ msgid "Draw Spaces"
msgstr "קרי×ות"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
#, fuzzy
msgid "Navigation"
msgstr "עריכת מצולע"
@@ -5999,10 +6113,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "מנהל המיזמי×"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -6789,14 +6905,6 @@ msgid "Replace in Files"
msgstr "להחליף הכול"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "×יתור "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "להחליף "
-
-#: editor/find_in_files.cpp
#, fuzzy
msgid "Replace All (NO UNDO)"
msgstr "להחליף הכול"
@@ -6937,7 +7045,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "מסנני×..."
@@ -7202,8 +7310,9 @@ msgid "Generating Lightmaps"
msgstr "נוצרות מפות ת×ורה"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
-msgstr ""
+#, fuzzy
+msgid "Generating for Mesh:"
+msgstr "נוצרות מפות ת×ורה"
#: editor/import/resource_importer_scene.cpp
msgid "Running Custom Script..."
@@ -7230,6 +7339,18 @@ msgid "Saving..."
msgstr "שמירה…"
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -8062,10 +8183,12 @@ msgstr "הגדרות שכבות בצל"
msgid "Directions"
msgstr "כיווני×"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "עבר"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "עתיד"
@@ -8223,7 +8346,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr "קביעת הנפשת הסיו×. ×–×” שימושי למעברי משנה."
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
+#, fuzzy
+msgid "Transition:"
msgstr "מעברון: "
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8240,11 +8364,6 @@ msgid "New name:"
msgstr "×©× ×—×“×©:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "קנה מידה:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
#, fuzzy
msgid "Fade In (s):"
msgstr "דהייה/יות:"
@@ -9184,6 +9303,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr "נגינת סצנה בהת×מה ×ישית"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9248,6 +9368,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "פריסה"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -10022,8 +10146,9 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr ""
+#, fuzzy
+msgid "Emission Source:"
+msgstr "צורות התנגשות גלויי×"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
@@ -10260,6 +10385,7 @@ msgid "Points"
msgstr "הזזת נקודה"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
#, fuzzy
msgid "Polygons"
msgstr "עריכת מצולע"
@@ -10421,13 +10547,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -10436,10 +10555,6 @@ msgstr ""
msgid "Load Resource"
msgstr "טעינת מש×ב"
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -11180,13 +11295,17 @@ msgstr "הטיית מצולע"
msgid "Translate"
msgstr ""
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr ""
+#, fuzzy
+msgid "Scaling:"
+msgstr "קנה מידה:"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "מעברון: "
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -11209,12 +11328,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
-msgid "Size:"
-msgstr "מבט קדמי"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11717,7 +11830,7 @@ msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
#, fuzzy
-msgid "Convert to Mesh2D"
+msgid "Convert to MeshInstance2D"
msgstr "המרה ל×ותיות גדולות"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11751,15 +11864,16 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "×פליקציה"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12783,8 +12897,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
#, fuzzy
msgid "Region"
msgstr "מצב גולמי"
@@ -14312,32 +14425,11 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
#, fuzzy
msgid "Exporting All"
msgstr "ייצו×"
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
#, fuzzy
msgid "Export Path"
msgstr "×™×™×¦×•× ×ž×™×–×"
@@ -14479,6 +14571,11 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "מקימי המיז×"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "ניהול תבניות ייצו×"
@@ -15982,7 +16079,8 @@ msgid "Attach Node Script"
msgstr "חיבור סקריפט למפרק"
#: editor/script_editor_debugger.cpp
-msgid "Remote "
+#, fuzzy
+msgid "Remote %s:"
msgstr "מרוחק "
#: editor/script_editor_debugger.cpp
@@ -16848,7 +16946,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "עריכת מצולע"
@@ -17022,7 +17120,8 @@ msgid "Disabled GDNative Singleton"
msgstr "סינגלטון GDNative ×œ× ×ž×ופשר"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+#, fuzzy
+msgid "Libraries:"
msgstr "ספריות: "
#: modules/gdnative/nativescript/nativescript.cpp
@@ -17465,7 +17564,6 @@ msgid "Use In Baked Light"
msgstr "×פיית Lightmaps"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17495,6 +17593,19 @@ msgstr "×”×–×—×” משמ×ל"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "עריכת מצולע"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "עריכת מצולע"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "המישור הב×"
@@ -17911,7 +18022,8 @@ msgstr ""
"המפרק בבקשה."
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+#, fuzzy
+msgid "Node returned an invalid sequence output:"
msgstr "מפרק החזיר פלט סדר (sequence) ×œ× ×—×•×§×™: "
#: modules/visual_script/visual_script.cpp
@@ -17919,7 +18031,8 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr "סיבית הסדר (sequence bit) נמצ××” ×בל המפרק ×œ× ×‘×ž×—×¡× ×™×ª, דווח על שגי××”!"
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+#, fuzzy
+msgid "Stack overflow with stack depth:"
msgstr "גלישת מחסנית ×¢× ×¢×•×ž×§ מחסנית: "
#: modules/visual_script/visual_script.cpp
@@ -18291,7 +18404,8 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+#, fuzzy
+msgid "Input type not iterable:"
msgstr "סוג הקלט ×œ× ×–×ž×™×Ÿ למחזוריות: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18299,7 +18413,8 @@ msgid "Iterator became invalid"
msgstr "×יטרטור הפך ×œ×œ× ×—×•×§×™"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+#, fuzzy
+msgid "Iterator became invalid:"
msgstr "×יטרטור הפך ×œ×œ× ×—×•×§×™: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18468,11 +18583,13 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
+#, fuzzy
+msgid "Invalid argument of type:"
msgstr ": ×רגומנט שגוי מסוג: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
+#, fuzzy
+msgid "Invalid arguments:"
msgstr ": ××¨×’×•×ž× ×˜×™× ×©×’×•×™×™×: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18485,11 +18602,13 @@ msgid "Var Name"
msgstr "ש×"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+#, fuzzy
+msgid "VariableGet not found in script:"
msgstr "×œ× × ×ž×¦× VariableGet בסקריפט: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+#, fuzzy
+msgid "VariableSet not found in script:"
msgstr "×œ× × ×ž×¦× VariableSet בסקריפט: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -19042,10 +19161,6 @@ msgid "Could not execute on device."
msgstr "×œ× × ×™×ª×Ÿ ליצור תיקייה."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -19157,12 +19272,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "×ות"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19182,6 +19301,11 @@ msgid "Could not find keystore, unable to export."
msgstr "×œ× × ×™×ª×Ÿ לפתוח תבנית לייצו×:"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "×œ× × ×™×ª×Ÿ להפעיל תהליך משנה!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -19212,7 +19336,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19226,9 +19350,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
"חוסר הת×מה בגירסת ×נדרו×יד:\n"
@@ -19238,12 +19360,13 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
-msgstr ""
+#, fuzzy
+msgid "Could not export project files to gradle project."
+msgstr "×œ× × ×™×ª×Ÿ לכתוב קובץ:"
#: platform/android/export/export_plugin.cpp
#, fuzzy
@@ -19255,8 +19378,9 @@ msgid "Building Android Project (gradle)"
msgstr "בניית ×ž×™×–× ×נדרו×יד (gradle)"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
"בניית ×ž×™×–× ×נדרו×יד נכשלה, ניתן לבדוק ×ת הפלט ל×יתור השגי××”.\n"
@@ -19274,7 +19398,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr "הנפשה ×œ× × ×ž×¦××”: '%s'"
#: platform/android/export/export_plugin.cpp
@@ -19284,15 +19408,12 @@ msgstr "יצירת קווי מת×ר..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
msgstr "×œ× × ×™×ª×Ÿ לפתוח תבנית לייצו×:"
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -19304,7 +19425,7 @@ msgstr "×יתור…"
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr "×œ× × ×™×ª×Ÿ לכתוב קובץ:"
#: platform/android/export/export_plugin.cpp
@@ -19546,6 +19667,17 @@ msgstr "גזירת מפרקי×"
msgid "Custom BG Color"
msgstr "גזירת מפרקי×"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "ניהול תבניות"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "תבנית שחרור מות×מת-×ישית ×œ× × ×ž×¦××”."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr "×œ× ×¦×•×™×Ÿ App Store Team ID - ×œ× × ×™×ª×Ÿ להגדיר ×ת המיז×."
@@ -19567,23 +19699,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr "הפעלת ×”Ö¾HTML ×”×ž×™×•×¦× ×‘×“×¤×“×¤×Ÿ בררת המחדל של המערכת."
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
msgstr "×œ× × ×™×ª×Ÿ לפתוח תבנית לייצו×:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
msgstr "תבנית ×™×¦×•× ×©×’×•×™×”:"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+#, fuzzy
+msgid "Could not write file: \"%s\"."
msgstr "×œ× × ×™×ª×Ÿ לכתוב קובץ:"
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "תוכן:"
+
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read file:"
+msgid "Could not read file: \"%s\"."
msgstr "×œ× × ×™×ª×Ÿ לכתוב קובץ:"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "מוני×:"
@@ -19659,17 +19803,17 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr "×œ× × ×™×ª×Ÿ ×œ×§×¨×•× ×ž×¢×˜×¤×ª HTML מות×מת:"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr "×œ× × ×™×ª×Ÿ ליצור תיקייה."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr "שגי××” בשמירת הסצנה."
#: platform/javascript/export/export.cpp
@@ -19967,9 +20111,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "×œ× × ×™×ª×Ÿ לכתוב קובץ:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "×œ× × ×™×ª×Ÿ להפעיל תהליך משנה!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "עריכת מצולע"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19985,21 +20148,76 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "×œ× × ×ž×¦×!"
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "שגי××” בשמירת קובץ: %s"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "כיווני×"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "×œ× × ×™×ª×Ÿ להפעיל תהליך משנה!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "יצירת תמונה ממוזערת"
#: platform/osx/export/export.cpp
#, fuzzy
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr "×œ× × ×™×ª×Ÿ לפתוח תבנית לייצו×:"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "תבנית ×™×¦×•× ×©×’×•×™×”:"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -20007,7 +20225,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -20049,6 +20267,16 @@ msgstr ""
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "ZIP Creation"
+msgstr "מיז×"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr "×œ× × ×™×ª×Ÿ לפתוח תבנית לייצו×:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Invalid bundle identifier:"
msgstr "מזהה ×œ× ×—×•×§×™:"
@@ -20362,6 +20590,11 @@ msgid "Debug Algorithm"
msgstr "ניפוי שגי×ות"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "×œ× × ×™×ª×Ÿ להסיר:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20409,6 +20642,70 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "הדבקת הנפשה"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "×œ× × ×™×ª×Ÿ לפתוח תבנית לייצו×:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "×œ× × ×™×ª×Ÿ לפתוח תבנית לייצו×:"
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "×œ× × ×™×ª×Ÿ לפתוח תבנית לייצו×:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "×œ× × ×™×ª×Ÿ לפתוח תבנית לייצו×:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "מזהה ×œ× ×—×•×§×™:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "×©× ×©×’×•×™."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "×œ× × ×™×ª×Ÿ להסיר:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20430,6 +20727,23 @@ msgid "Invalid product version:"
msgstr "GUID מוצר ×œ× ×—×•×§×™."
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "סיומת ×œ× ×—×•×§×™×ª."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "חלון חדש"
@@ -20446,6 +20760,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20572,7 +20890,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "בחירת מרחק:"
@@ -21413,17 +21732,19 @@ msgstr ""
"מ×פיין ×ו לצייר מצולע."
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-"NavigationPolygonInstance חייב להיות ילד ×ו נכד למפרק Navigation2D. ×”×•× ×ž×¡×¤×§ "
-"רק נתוני ניווט."
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr ""
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "מתחת"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "טיול"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
#, fuzzy
@@ -22629,14 +22950,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-"NavigationMeshInstance חייב להיות ילד ×ו נכד למפרק Navigation. ×”×•× ×ž×¡×¤×§ רק "
-"נתוני ניווט."
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
#, fuzzy
msgid "NavMesh"
@@ -25315,6 +25628,16 @@ msgid "3D Physics"
msgstr "שקופית פיזיקלית %"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "עריכת מצולע"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "עריכת מצולע"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -26727,7 +27050,7 @@ msgstr "מעברון: "
msgid "Refraction"
msgstr "מוני×:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -26809,7 +27132,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "קנה מידה:"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "קביעת סוג משתנה"
#: scene/resources/navigation_mesh.cpp
@@ -26827,10 +27155,15 @@ msgid "Source Group Name"
msgstr "מש×ב"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "תוכן:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -26840,11 +27173,16 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Regions"
+msgstr "מצב גולמי"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Merge Size"
msgstr "מיזוג מסצנה"
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26858,6 +27196,11 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Details"
+msgstr "טעינת בררת המחדל"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Sample Distance"
msgstr "בחירת מרחק:"
@@ -26874,7 +27217,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -27284,6 +27627,11 @@ msgid "Scenario"
msgstr "סצנה"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "עריכת מצולע"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -27301,6 +27649,26 @@ msgstr "ליני×רי"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "בחירת מחדל"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "תצוגה מקדימה:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "בבדיקה"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "עריכת חיבור:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/hi.po b/editor/translations/hi.po
index 07aed65ddd..2486887cac 100644
--- a/editor/translations/hi.po
+++ b/editor/translations/hi.po
@@ -15,13 +15,14 @@
# l4KKY <greenforcesave@gmail.com>, 2020.
# harvinder rathor <harvinderr09@gmail.com>, 2021.
# Sumanyu Aggarwal <sumanyu.code@gmail.com>, 2021.
+# Arin <upadhyay.arin@gmail.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-10-28 22:09+0000\n"
-"Last-Translator: Sumanyu Aggarwal <sumanyu.code@gmail.com>\n"
+"PO-Revision-Date: 2022-06-08 06:48+0000\n"
+"Last-Translator: Arin <upadhyay.arin@gmail.com>\n"
"Language-Team: Hindi <https://hosted.weblate.org/projects/godot-engine/godot/"
"hi/>\n"
"Language: hi\n"
@@ -29,105 +30,97 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.9-dev\n"
+"X-Generator: Weblate 4.13-dev\n"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
-msgstr ""
+msgstr "टैब डà¥à¤°à¤¾à¤‡à¤µà¤°"
#: core/bind/core_bind.cpp
msgid "Clipboard"
-msgstr ""
+msgstr "कà¥à¤²à¤¿à¤ªà¤¬à¥‹à¤°à¥à¤¡"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Current Screen"
-msgstr "अगला टैब"
+msgstr "वरà¥à¤¤à¤®à¤¾à¤¨ सà¥à¤•à¥à¤°à¥€à¤¨"
#: core/bind/core_bind.cpp
msgid "Exit Code"
-msgstr ""
+msgstr "निकास कोड"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "V-Sync Enabled"
-msgstr "सकà¥à¤°à¤¿à¤¯ करे"
+msgstr "वि-सिंक सकà¥à¤°à¤¿à¤¯"
#: core/bind/core_bind.cpp main/main.cpp
msgid "V-Sync Via Compositor"
-msgstr ""
+msgstr "वि-सिंक कंपोज़ीटर के दà¥à¤µà¤¾à¤°à¤¾"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Delta Smoothing"
-msgstr ""
+msgstr "डेलà¥à¤Ÿà¤¾ समरेखण"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Low Processor Usage Mode"
-msgstr "मोड टॉगल कीजिये"
+msgstr "कम पà¥à¤°à¥‹à¤¸à¥‡à¤¸à¤° पà¥à¤°à¤¯à¥‹à¤— मोड"
#: core/bind/core_bind.cpp
msgid "Low Processor Usage Mode Sleep (µsec)"
-msgstr ""
+msgstr "कम पà¥à¤°à¥‹à¤¸à¥‡à¤¸à¤° पà¥à¤°à¤¯à¥‹à¤— मोड निदà¥à¤°à¤¾ (µसेकंडà¥â€Œà¤¸)"
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
msgid "Keep Screen On"
-msgstr ""
+msgstr "सà¥à¤•à¥à¤°à¥€à¤¨ को चालू रखें"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Min Window Size"
-msgstr "आकार: "
+msgstr "नà¥à¤¯à¥‚नतम विंडो माप"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Max Window Size"
-msgstr "आकार: "
+msgstr "अधिकतम विंडो माप"
#: core/bind/core_bind.cpp
msgid "Screen Orientation"
-msgstr ""
+msgstr "सà¥à¤•à¥à¤°à¥€à¤¨ अनà¥à¤¸à¥à¤¥à¤¾à¤ªà¤¨"
#: core/bind/core_bind.cpp core/project_settings.cpp main/main.cpp
#: platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Window"
-msgstr "नया विंडो"
+msgstr "विंडो"
#: core/bind/core_bind.cpp core/project_settings.cpp
msgid "Borderless"
-msgstr ""
+msgstr "सीमा के बिना"
#: core/bind/core_bind.cpp
msgid "Per Pixel Transparency Enabled"
-msgstr ""
+msgstr "पà¥à¤°à¤¤à¤¿ पिकà¥à¤¸à¥‡à¤² पारदरà¥à¤¶à¤¿à¤¤à¤¾ सकà¥à¤°à¤¿à¤¯"
#: core/bind/core_bind.cpp core/project_settings.cpp
-#, fuzzy
msgid "Fullscreen"
-msgstr "पूरà¥à¤£à¤¸à¥à¤•à¥à¤°à¥€à¤¨ चालू करें"
+msgstr "पूरà¥à¤£à¤¸à¥à¤•à¥à¤°à¥€à¤¨"
#: core/bind/core_bind.cpp
msgid "Maximized"
-msgstr ""
+msgstr "अधिकतम"
#: core/bind/core_bind.cpp
msgid "Minimized"
-msgstr ""
+msgstr "नà¥à¤¯à¥‚नतम"
#: core/bind/core_bind.cpp core/project_settings.cpp scene/gui/dialogs.cpp
#: scene/gui/graph_node.cpp
msgid "Resizable"
-msgstr ""
+msgstr "आकार बदलने योगà¥à¤¯"
#: core/bind/core_bind.cpp core/os/input_event.cpp scene/2d/node_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/remote_transform_2d.cpp
#: scene/3d/physics_body.cpp scene/3d/remote_transform.cpp
#: scene/gui/control.cpp scene/gui/line_edit.cpp
#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Position"
-msgstr "डॉक पोजीशन"
+msgstr "सà¥à¤¥à¤¾à¤¨"
#: core/bind/core_bind.cpp core/project_settings.cpp editor/editor_settings.cpp
#: main/main.cpp modules/gridmap/grid_map.cpp
@@ -138,64 +131,56 @@ msgstr "डॉक पोजीशन"
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
#: scene/resources/visual_shader.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Size"
-msgstr "आकार: "
+msgstr "माप"
#: core/bind/core_bind.cpp
msgid "Endian Swap"
-msgstr ""
+msgstr "à¤à¤¨à¥à¤¡à¤¿à¤¯à¤¨ विनिमय"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Editor Hint"
-msgstr "संपादक"
+msgstr "à¤à¤¡à¥€à¤Ÿà¤° संकेत"
#: core/bind/core_bind.cpp
msgid "Print Error Messages"
-msgstr ""
+msgstr "पà¥à¤°à¤¿à¤‚ट à¤à¤°à¤° संदेश"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Iterations Per Second"
-msgstr "इंटरपोलेशन मोड"
+msgstr "यातà¥à¤°à¤¾ पà¥à¤°à¤¤à¤¿ सेकंड"
#: core/bind/core_bind.cpp
msgid "Target FPS"
-msgstr ""
+msgstr "लकà¥à¤·à¥à¤¯ FPS"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Time Scale"
-msgstr "à¤à¤¨à¤¿à¤®à¥‡à¤Ÿà¥‡à¤¡ सà¥à¤•ेल कà¥à¤‚जी"
+msgstr "समय पैमाना"
#: core/bind/core_bind.cpp main/main.cpp
-#, fuzzy
msgid "Physics Jitter Fix"
-msgstr "फिजिकà¥à¤¸ फà¥à¤°à¥‡à¤® %"
+msgstr "भौतिक जिटर फिकà¥à¤¸"
#: core/bind/core_bind.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Error"
-msgstr ""
+msgstr "à¤à¤°à¤°"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Error String"
-msgstr "लोड होने मे तà¥à¤°à¥à¤Ÿà¤¿:"
+msgstr "à¤à¤°à¤° सà¥à¤Ÿà¥à¤°à¤¿à¤‚ग"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Error Line"
-msgstr "लोड होने मे तà¥à¤°à¥à¤Ÿà¤¿:"
+msgstr "à¤à¤°à¤° पंकà¥à¤¤à¤¿"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Result"
-msgstr "खोज के परिणाम"
+msgstr "परिणाम"
#: core/command_queue_mt.cpp core/message_queue.cpp main/main.cpp
msgid "Memory"
-msgstr ""
+msgstr "सà¥à¤®à¥ƒà¤¤à¤¿"
#: core/command_queue_mt.cpp core/message_queue.cpp
#: core/register_core_types.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
@@ -206,58 +191,55 @@ msgstr ""
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
#: servers/visual_server.cpp
msgid "Limits"
-msgstr ""
+msgstr "सीमाà¤à¤‚"
#: core/command_queue_mt.cpp
msgid "Command Queue"
-msgstr ""
+msgstr "कमांड कतार"
#: core/command_queue_mt.cpp
msgid "Multithreading Queue Size (KB)"
-msgstr ""
+msgstr "मलà¥à¤Ÿà¥€à¤¥à¥à¤°à¥‡à¤¡à¤¿à¤‚ग कतार आकार (KB)"
#: core/func_ref.cpp modules/visual_script/visual_script_builtin_funcs.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: scene/resources/visual_shader_nodes.cpp
-#, fuzzy
msgid "Function"
-msgstr "कारà¥à¤¯à¥‹à¤‚"
+msgstr "कारà¥à¤¯"
#: core/image.cpp core/packed_data_container.cpp scene/2d/polygon_2d.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
msgid "Data"
-msgstr ""
+msgstr "डेटा"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
-msgstr ""
+msgstr "संजाल"
#: core/io/file_access_network.cpp
-#, fuzzy
msgid "Remote FS"
-msgstr "मिटाइये"
+msgstr "रिमोट FS"
#: core/io/file_access_network.cpp
-#, fuzzy
msgid "Page Size"
-msgstr "पृषà¥à¤ : "
+msgstr "पृषà¥à¤ : माप"
#: core/io/file_access_network.cpp
msgid "Page Read Ahead"
-msgstr ""
+msgstr "पृषà¥à¤ : आगे पढ़ें"
#: core/io/http_client.cpp
msgid "Blocking Mode Enabled"
-msgstr ""
+msgstr "अवरà¥à¤¦à¥à¤§ मोड सकà¥à¤°à¤¿à¤¯"
#: core/io/http_client.cpp
-#, fuzzy
msgid "Connection"
-msgstr "जोड़िये"
+msgstr "संबंध"
#: core/io/http_client.cpp
msgid "Read Chunk Size"
@@ -343,7 +325,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "अमानà¥à¤¯ फ़ोरà¥à¤®à¥ˆà¤Ÿ, या बाइटà¥à¤¸ डिकोडिंग के लिठपरà¥à¤¯à¤¾à¤ªà¥à¤¤ बाइटà¥à¤¸ नहीं।"
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "à¤à¤•à¥à¤¸à¤ªà¥à¤°à¥‡à¤¶à¤¨ मे अमानà¥à¤¯ इनपà¥à¤Ÿ %i (पास नहीं हो पाया)"
#: core/math/expression.cpp
@@ -387,6 +370,15 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "दृशà¥à¤¯ रोकें"
+
+#: core/os/input.cpp
+msgid "Use Accumulated Input"
+msgstr ""
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -578,7 +570,8 @@ msgstr "विवरण"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr ""
@@ -665,6 +658,11 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "दृशà¥à¤¯ पथ:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -672,19 +670,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "वरà¥à¤œà¤¨ कंटà¥à¤°à¥‹à¤²"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "वरà¥à¤œà¤¨ कंटà¥à¤°à¥‹à¤²"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "पà¥à¤²à¤—इनà¥à¤¸"
+msgid "Version Control Plugin Name"
+msgstr "वरà¥à¤œà¤¨ कंटà¥à¤°à¥‹à¤²"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -798,7 +792,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "फिलà¥à¤Ÿà¤°:"
@@ -1074,6 +1069,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "मà¥à¤«à¥à¤¤"
@@ -1090,7 +1086,7 @@ msgstr "आइना"
msgid "Time:"
msgstr "समय:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "मूलà¥à¤¯ :"
@@ -1336,10 +1332,71 @@ msgid "Remove this track."
msgstr "इस टà¥à¤°à¥ˆà¤• को हटा दें।"
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "समय (à¤à¤¸): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "सà¥à¤¥à¤¾à¤¨"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "कोनà¥à¤¸à¥à¤Ÿà¤¨à¥à¤Ÿ"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "गलत फॉणà¥à¤Ÿ का आकार |"
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "नोड वकà¥à¤° संपादित करें"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "शà¥à¤°à¥‚ कीजिये"
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "कारà¥à¤¯à¥‹à¤‚:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "टॉगल टà¥à¤°à¥ˆà¤• सकà¥à¤·à¤®"
@@ -1554,7 +1611,8 @@ msgid "Add Method Track Key"
msgstr "विधि टà¥à¤°à¥ˆà¤• कà¥à¤‚जी जोड़ें"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "ऑबà¥à¤œà¥‡à¤•à¥à¤Ÿ में नहीं पाया गया विधि: "
#: editor/animation_track_editor.cpp
@@ -2164,8 +2222,8 @@ msgid "Open"
msgstr "खोलो इसे"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "के सà¥à¤µà¤¾à¤®à¥€:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
#, fuzzy
@@ -2473,7 +2531,7 @@ msgid "Bus Options"
msgstr "बस विकलà¥à¤ª"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "पà¥à¤°à¤¤à¤¿à¤²à¤¿à¤ªà¤¿"
@@ -2525,8 +2583,9 @@ msgstr "ऑडियो बस लेआउट खोलिये"
msgid "There is no '%s' file."
msgstr "कोई '%s' फ़ाइल नहीं."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "लेआउट"
#: editor/editor_audio_buses.cpp
@@ -2731,6 +2790,24 @@ msgid "Choose"
msgstr "चà¥à¤¨à¥‡à¤‚"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "पैकेज सफलतापूरà¥à¤µà¤• सà¥à¤¥à¤¾à¤ªà¤¿à¤¤!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "विफल:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "फ़ाइल सà¥à¤Ÿà¥‹à¤° कर रहा है:"
@@ -2743,6 +2820,31 @@ msgid "Packing"
msgstr "पैक कर रहा है"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "इस तरह बचा के रखिये"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "फ़ोलà¥à¤¡à¤° नही बना सकते."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "उपपà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ शà¥à¤°à¥‚ नहीं कर सका!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "फ़ाइल रायटिंग के लिठनहीं खोल सकते:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "इस तरह बचा के रखिये"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2860,11 +2962,31 @@ msgstr "कसà¥à¤Ÿà¤® डिबग टेमà¥à¤ªà¥à¤²à¥‡à¤Ÿ नहीं à¤
msgid "Custom release template not found."
msgstr "कसà¥à¤Ÿà¤® रिलिज टेमà¥à¤ªà¥à¤²à¥‡à¤Ÿ नहीं मिला."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "टेमà¥à¤ªà¤²à¥‡à¤Ÿà¥à¤¸ का पà¥à¤°à¤¬à¤‚धन करें"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "The given export path doesn't exist."
+msgstr ""
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "टेमà¥à¤ªà¥à¤²à¥‡à¤Ÿ फ़ाइल नहीं मिला:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "निरà¥à¤¯à¤¾à¤¤ टेमà¥à¤ªà¤²à¥‡à¤Ÿà¥à¤¸ ज़िप नहीं खोल सकते।"
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr "32-बिट â€à¤à¤•à¥à¤¸à¤ªà¥‹à¤°à¥à¤Ÿ पर à¤à¤®à¤¬à¥‡à¤¡à¥à¤¡à¥‡à¤¡ PCK 4 GiB से बड़ी नहीं इसà¥à¤¤à¥‡à¤®à¤¾à¤² कर सकते."
@@ -3038,9 +3160,9 @@ msgid "Import"
msgstr "आयात"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "â€à¤à¤•à¥à¤¸à¤ªà¥‹à¤°à¥à¤Ÿ"
@@ -4184,15 +4306,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "दृशà¥à¤¯"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "दृशà¥à¤¯ पथ:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4317,6 +4430,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "वरà¥à¤œà¤¨ कंटà¥à¤°à¥‹à¤²"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "नाम बदली"
@@ -4345,6 +4462,10 @@ msgstr "वà¥à¤¯à¤¾à¤•à¥à¤²à¤¤à¤¾ मà¥à¤•à¥à¤¤ मोड टॉगल।"
msgid "Add a new scene."
msgstr "à¤à¤• नया दृशà¥à¤¯ जोड़ें।"
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "दृशà¥à¤¯"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "पहले खोले गठदृशà¥à¤¯ में जाà¤à¤‚।"
@@ -5025,11 +5146,15 @@ msgid "Selected node is not a Viewport!"
msgstr "चयनित नोड वà¥à¤¯à¥‚पोरà¥à¤Ÿ नहीं है!"
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#, fuzzy
+msgid "Size:"
msgstr "आकार: "
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+#, fuzzy
+msgid "Page:"
msgstr "पृषà¥à¤ : "
#: editor/editor_properties_array_dict.cpp
@@ -5130,6 +5255,11 @@ msgstr ""
"कृपया निरà¥à¤¯à¤¾à¤¤ मेनू में à¤à¤• निषà¥à¤ªà¤¾à¤¦à¤¨ योगà¥à¤¯ पà¥à¤°à¥€à¤¸à¥‡à¤Ÿ जोड़ें, या मौजूदा पà¥à¤°à¥€à¤¸à¥‡à¤Ÿ को निषà¥à¤ªà¤¾à¤¦à¤¨ योगà¥à¤¯ के "
"रूप में सेट करें।"
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "परियोजना"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "अपने तरà¥à¤• को _run () विधि में लिखें।"
@@ -5403,7 +5533,9 @@ msgid "Draw Spaces"
msgstr "कॉल"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
#, fuzzy
msgid "Navigation"
msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
@@ -5973,10 +6105,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "पà¥à¤°à¥‹à¤œà¥‡à¤•à¥à¤Ÿ मैनेजर"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -6747,14 +6881,6 @@ msgid "Replace in Files"
msgstr "सबको बदली करें"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "तलाशिये: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "बदली करे: "
-
-#: editor/find_in_files.cpp
#, fuzzy
msgid "Replace All (NO UNDO)"
msgstr "सबको बदली करें"
@@ -6884,7 +7010,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "फिलà¥à¤Ÿà¤°:"
@@ -7144,7 +7270,8 @@ msgid "Generating Lightmaps"
msgstr "लाईटमॅप बना रहा है"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+#, fuzzy
+msgid "Generating for Mesh:"
msgstr "मेश के लिये बना रहा है: "
#: editor/import/resource_importer_scene.cpp
@@ -7172,6 +7299,18 @@ msgid "Saving..."
msgstr ""
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7966,10 +8105,12 @@ msgstr ""
msgid "Directions"
msgstr "निरà¥à¤¦à¥‡à¤¶à¥‹à¤‚"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr ""
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr ""
@@ -8124,7 +8265,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
+#, fuzzy
+msgid "Transition:"
msgstr "संकà¥à¤°à¤®à¤£: "
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8141,11 +8283,6 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr ""
@@ -9039,6 +9176,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr ""
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9103,6 +9241,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "लेआउट"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -9863,8 +10005,9 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr ""
+#, fuzzy
+msgid "Emission Source:"
+msgstr "दृशà¥à¤¯à¤®à¤¾à¤¨ टकराव आकार"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
@@ -10097,6 +10240,7 @@ msgid "Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
#, fuzzy
msgid "Polygons"
msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
@@ -10252,13 +10396,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -10267,11 +10404,6 @@ msgstr ""
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#, fuzzy
-msgid "ResourcePreloader"
-msgstr "संसाधन"
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -10983,13 +11115,17 @@ msgstr ""
msgid "Translate"
msgstr ""
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr ""
+#, fuzzy
+msgid "Scaling:"
+msgstr "सà¥à¤•ेल अनà¥à¤ªà¤¾à¤¤:"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "संकà¥à¤°à¤®à¤£: "
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -11012,12 +11148,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
-msgid "Size:"
-msgstr "आकार: "
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11505,8 +11635,9 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
-msgstr ""
+#, fuzzy
+msgid "Convert to MeshInstance2D"
+msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Invalid geometry, can't create polygon."
@@ -11539,15 +11670,16 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "कारà¥à¤¯"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12536,8 +12668,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr ""
@@ -14030,31 +14161,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr ""
@@ -14193,6 +14303,11 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "परियोजना के संसà¥à¤¥à¤¾à¤ªà¤•"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr ""
@@ -15661,8 +15776,9 @@ msgid "Attach Node Script"
msgstr ""
#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr ""
+#, fuzzy
+msgid "Remote %s:"
+msgstr "मिटाइये"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -16515,7 +16631,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
@@ -16687,7 +16803,7 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+msgid "Libraries:"
msgstr ""
#: modules/gdnative/nativescript/nativescript.cpp
@@ -17109,7 +17225,6 @@ msgid "Use In Baked Light"
msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17139,6 +17254,19 @@ msgstr "को हटा दें"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -17550,7 +17678,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17558,7 +17686,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17939,7 +18067,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17947,7 +18075,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18111,12 +18239,14 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
+#, fuzzy
+msgid "Invalid argument of type:"
+msgstr "'%s' बनाने के लिठअवैध तरà¥à¤•"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
+#, fuzzy
+msgid "Invalid arguments:"
+msgstr "अमानà¥à¤¯ नाम."
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -18128,12 +18258,14 @@ msgid "Var Name"
msgstr "नाम"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableGet not found in script:"
+msgstr "ऑबà¥à¤œà¥‡à¤•à¥à¤Ÿ में नहीं पाया गया विधि: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableSet not found in script:"
+msgstr "ऑबà¥à¤œà¥‡à¤•à¥à¤Ÿ में नहीं पाया गया विधि: "
#: modules/visual_script/visual_script_nodes.cpp
#, fuzzy
@@ -18663,10 +18795,6 @@ msgid "Could not execute on device."
msgstr "फ़ोलà¥à¤¡à¤° नही बना सकते."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18771,12 +18899,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "सिगà¥à¤¨à¤²"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18795,6 +18927,11 @@ msgid "Could not find keystore, unable to export."
msgstr ""
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "उपपà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ शà¥à¤°à¥‚ नहीं कर सका!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -18823,7 +18960,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18834,20 +18971,19 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
-msgstr ""
+#, fuzzy
+msgid "Could not export project files to gradle project."
+msgstr "उपपà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ शà¥à¤°à¥‚ नहीं कर सका!"
#: platform/android/export/export_plugin.cpp
msgid "Could not write expansion package file!"
@@ -18859,7 +18995,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -18875,7 +19011,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr "पैकेज में है:"
#: platform/android/export/export_plugin.cpp
@@ -18884,15 +19020,13 @@ msgid "Creating APK..."
msgstr "जोड़ने..."
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
-msgstr ""
+#, fuzzy
+msgid "Could not find template APK to export: \"%s\"."
+msgstr "उपपà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ शà¥à¤°à¥‚ नहीं कर सका!"
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -18904,7 +19038,7 @@ msgstr "पसंदीदा:"
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr "उपपà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ शà¥à¤°à¥‚ नहीं कर सका!"
#: platform/android/export/export_plugin.cpp
@@ -19146,6 +19280,17 @@ msgstr "पà¥à¤°à¤¤à¤¿à¤²à¤¿à¤ªà¤¿"
msgid "Custom BG Color"
msgstr "पà¥à¤°à¤¤à¤¿à¤²à¤¿à¤ªà¤¿"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "टेमà¥à¤ªà¤²à¥‡à¤Ÿà¥à¤¸ का पà¥à¤°à¤¬à¤‚धन करें"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "कसà¥à¤Ÿà¤® रिलिज टेमà¥à¤ªà¥à¤²à¥‡à¤Ÿ नहीं मिला."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -19168,23 +19313,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
-msgstr ""
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
+msgstr "फ़ोलà¥à¤¡à¤° नही बना सकते."
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
-msgstr ""
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
+msgstr "गलत फॉणà¥à¤Ÿ का आकार |"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr ""
+#, fuzzy
+msgid "Could not write file: \"%s\"."
+msgstr "फ़ोलà¥à¤¡à¤° नही बना सकते."
+
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "शो में फाइल सिसà¥à¤Ÿà¤®"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read file:"
+msgid "Could not read file: \"%s\"."
msgstr "फ़ोलà¥à¤¡à¤° नही बना सकते."
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "संसà¥à¤•रण:"
@@ -19260,17 +19417,17 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr "फ़ोलà¥à¤¡à¤° नही बना सकते."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr "फ़ोलà¥à¤¡à¤° नही बना सकते."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr "तà¥à¤°à¥à¤Ÿà¤¿ बचत टाइलसेट!"
#: platform/javascript/export/export.cpp
@@ -19561,9 +19718,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "उपपà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ शà¥à¤°à¥‚ नहीं कर सका!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "उपपà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ शà¥à¤°à¥‚ नहीं कर सका!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19579,18 +19755,74 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "सब-रिसोरà¥à¤¸ नहीं मिला."
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "फ़ाइल बचाने में चूक: %s"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "निरà¥à¤¦à¥‡à¤¶à¥‹à¤‚"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "उपपà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ शà¥à¤°à¥‚ नहीं कर सका!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "थंबनेल बनाना"
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
-msgstr ""
+#, fuzzy
+msgid "Could not find template app to export: \"%s\"."
+msgstr "उपपà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ शà¥à¤°à¥‚ नहीं कर सका!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "गलत फॉणà¥à¤Ÿ का आकार |"
#: platform/osx/export/export.cpp
msgid ""
@@ -19600,7 +19832,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -19642,6 +19874,15 @@ msgstr ""
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "ZIP Creation"
+msgstr "परियोजना"
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Invalid bundle identifier:"
msgstr "गलत फॉणà¥à¤Ÿ का आकार |"
@@ -19954,6 +20195,11 @@ msgid "Debug Algorithm"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "अलà¥à¤ªà¤•ालिक फ़ाइल निकाली नहीं जा सकà¥à¤¤à¥€:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20000,6 +20246,66 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "कोनà¥à¤¸à¥à¤Ÿà¤¨à¥à¤Ÿ"
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "गलत फॉणà¥à¤Ÿ का आकार |"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "अमानà¥à¤¯ नाम."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "अलà¥à¤ªà¤•ालिक फ़ाइल निकाली नहीं जा सकà¥à¤¤à¥€:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20021,6 +20327,23 @@ msgid "Invalid product version:"
msgstr "गलत फॉणà¥à¤Ÿ का आकार |"
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "गलत फॉणà¥à¤Ÿ का आकार |"
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "नया विंडो"
@@ -20037,6 +20360,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20156,7 +20483,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "इनसà¥à¤Ÿà¤¨à¥à¤¸"
@@ -20961,13 +21289,16 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
+msgid "Navpoly"
msgstr ""
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "को हटा दें"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Travel Cost"
msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
@@ -22101,12 +22432,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -24685,6 +25010,16 @@ msgid "3D Physics"
msgstr "फिजिकà¥à¤¸ फà¥à¤°à¥‡à¤® %"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -26067,7 +26402,7 @@ msgstr "संकà¥à¤°à¤®à¤£: "
msgid "Refraction"
msgstr "संसà¥à¤•रण:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -26146,8 +26481,14 @@ msgid "Visible Instance Count"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Sample Partition Type"
-msgstr ""
+#, fuzzy
+msgid "Sampling"
+msgstr "सà¥à¤•ेल अनà¥à¤ªà¤¾à¤¤:"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
+msgstr "संसà¥à¤•रण:"
#: scene/resources/navigation_mesh.cpp
msgid "Parsed Geometry Type"
@@ -26163,10 +26504,15 @@ msgid "Source Group Name"
msgstr "संसाधन"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "सà¥à¤•à¥à¤°à¤¿à¤ªà¥à¤Ÿ बढ़ाà¤à¤"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -26175,11 +26521,16 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Regions"
+msgstr "खà¥à¤²à¤¾ हाल"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26192,6 +26543,11 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Details"
+msgstr "पà¥à¤°à¤¾à¤¯à¤¿à¤• लोड कीजिये"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -26208,7 +26564,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -26609,6 +26965,11 @@ msgid "Scenario"
msgstr "दृशà¥à¤¯"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -26626,6 +26987,26 @@ msgstr "चूक"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "चूक"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "चूक"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "चूक"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "कनेकà¥à¤¶à¤¨ संपादित करें:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/hr.po b/editor/translations/hr.po
index b903b4afab..c9a87722f5 100644
--- a/editor/translations/hr.po
+++ b/editor/translations/hr.po
@@ -214,9 +214,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr ""
@@ -327,7 +328,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Nedovoljno bajtova za dekodiranje ili neispravan format."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "Neispravan unos %i (nije uspio) u izrazu"
#: core/math/expression.cpp
@@ -371,6 +373,15 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "NaÄin reprodukcije:"
+
+#: core/os/input.cpp
+msgid "Use Accumulated Input"
+msgstr ""
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -557,7 +568,8 @@ msgstr "Opis"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr ""
@@ -642,26 +654,24 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-#, fuzzy
-msgid "Plugin Name"
-msgstr "Naziv ÄŒvora(node):"
+msgid "Version Control Plugin Name"
+msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -769,7 +779,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "Filtriraj signale"
@@ -1041,6 +1052,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Slobodno"
@@ -1057,7 +1069,7 @@ msgstr "Zrcalo"
msgid "Time:"
msgstr "Vrijeme:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Vrijednost:"
@@ -1303,10 +1315,71 @@ msgid "Remove this track."
msgstr "Ukloni ovu stazu."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "Vrijeme/vremena: "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Stvori"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Zalijepi Animaciju"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Nevažeće ime."
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Easing:"
+msgstr "Upozorenje:"
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Stream:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "NaÄin Interpolacije"
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Animacijski Klipovi:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "Upali/Ugasi Stazu"
@@ -1516,7 +1589,8 @@ msgid "Add Method Track Key"
msgstr "Dodaj KljuÄ Metode Staze"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "Metoda nije nađena u objektu: "
#: editor/animation_track_editor.cpp
@@ -2118,8 +2192,8 @@ msgid "Open"
msgstr "Otvori"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Vlasnici:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
#, fuzzy
@@ -2420,7 +2494,7 @@ msgid "Bus Options"
msgstr "Opcije Klase"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Dupliciraj"
@@ -2472,8 +2546,8 @@ msgstr ""
msgid "There is no '%s' file."
msgstr "Datoteka '%s' ne postoji."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+msgid "Layout:"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -2677,6 +2751,23 @@ msgid "Choose"
msgstr ""
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "Paket uspješno instaliran!"
+
+#: editor/editor_export.cpp
+msgid "Failed."
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr ""
@@ -2689,6 +2780,28 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Spremi Kao"
+
+#: editor/editor_export.cpp
+msgid "Cannot create file \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed to export project files."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Can't open file to read from path \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Spremi Kao"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2792,8 +2905,25 @@ msgstr ""
msgid "Custom release template not found."
msgstr ""
+#: editor/editor_export.cpp
+msgid "Prepare Template"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "The given export path doesn't exist."
+msgstr ""
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+msgid "Template file not found: \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed to copy export template."
+msgstr ""
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
msgstr ""
#: editor/editor_export.cpp
@@ -2969,9 +3099,9 @@ msgid "Import"
msgstr "Uvezi"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Izvoz"
@@ -4060,14 +4190,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4188,6 +4310,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Preimenuj zvuÄnu sabirnicu"
@@ -4216,6 +4342,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
@@ -4854,11 +4984,13 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+msgid "Page:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
@@ -4954,6 +5086,11 @@ msgid ""
"as runnable."
msgstr ""
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Direkcije"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -5217,7 +5354,9 @@ msgid "Draw Spaces"
msgstr ""
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr "Navigacija"
@@ -5780,10 +5919,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Sorting Order"
msgstr ""
@@ -6516,14 +6657,6 @@ msgid "Replace in Files"
msgstr "Zamijeni sve"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr ""
-
-#: editor/find_in_files.cpp
#, fuzzy
msgid "Replace All (NO UNDO)"
msgstr "Zamijeni sve"
@@ -6656,7 +6789,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Filtriraj signale"
@@ -6913,7 +7046,7 @@ msgid "Generating Lightmaps"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+msgid "Generating for Mesh:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -6941,6 +7074,18 @@ msgid "Saving..."
msgstr ""
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7732,10 +7877,12 @@ msgstr "\"Onion Skinning\" Opcije"
msgid "Directions"
msgstr "Direkcije"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "Prošlost"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "Budućnost"
@@ -7890,8 +8037,9 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
-msgstr ""
+#, fuzzy
+msgid "Transition:"
+msgstr "Animacija"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Play Mode:"
@@ -7907,11 +8055,6 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr ""
@@ -8799,6 +8942,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr ""
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -8863,6 +9007,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -9613,8 +9761,9 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr ""
+#, fuzzy
+msgid "Emission Source:"
+msgstr "Izvor:"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
@@ -9843,6 +9992,7 @@ msgid "Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr ""
@@ -9996,13 +10146,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -10011,10 +10154,6 @@ msgstr ""
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -10709,13 +10848,17 @@ msgstr ""
msgid "Translate"
msgstr ""
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr ""
+#, fuzzy
+msgid "Scaling:"
+msgstr "Upozorenje:"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "Uredi Tranzicije..."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -10738,11 +10881,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11221,8 +11359,9 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
-msgstr ""
+#, fuzzy
+msgid "Convert to MeshInstance2D"
+msgstr "Spoji '%s' na '%s'"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Invalid geometry, can't create polygon."
@@ -11253,15 +11392,16 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "Animacija"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12208,8 +12348,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr "Regija"
@@ -13663,31 +13802,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr ""
@@ -13824,6 +13942,11 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "OsnivaÄi projekta"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr ""
@@ -15265,8 +15388,9 @@ msgid "Attach Node Script"
msgstr ""
#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr ""
+#, fuzzy
+msgid "Remote %s:"
+msgstr "Ukloni"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -16106,7 +16230,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
msgid "Polygon"
msgstr ""
@@ -16275,7 +16399,7 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+msgid "Libraries:"
msgstr ""
#: modules/gdnative/nativescript/nativescript.cpp
@@ -16691,7 +16815,6 @@ msgid "Use In Baked Light"
msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -16721,6 +16844,19 @@ msgstr "Premjesti Ävor(node)"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Navigacija"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "NaÄin Navigacije"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -17125,7 +17261,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17133,7 +17269,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17506,7 +17642,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17514,7 +17650,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17675,12 +17811,14 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
+#, fuzzy
+msgid "Invalid argument of type:"
+msgstr "Neispravni argumenti za konstrukciju '%s'"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
+#, fuzzy
+msgid "Invalid arguments:"
+msgstr "Nevažeće ime."
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -17692,12 +17830,14 @@ msgid "Var Name"
msgstr "Ime"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableGet not found in script:"
+msgstr "Metoda nije nađena u objektu: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableSet not found in script:"
+msgstr "Metoda nije nađena u objektu: "
#: modules/visual_script/visual_script_nodes.cpp
msgid "Preload"
@@ -18203,10 +18343,6 @@ msgid "Could not execute on device."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18310,12 +18446,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Brisati odabrani kljuÄ/odabrane kljuÄeve"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18331,6 +18471,10 @@ msgid "Could not find keystore, unable to export."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Could not start apksigner executable."
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -18359,7 +18503,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18370,19 +18514,17 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+msgid "Could not export project files to gradle project."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18395,7 +18537,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -18410,7 +18552,7 @@ msgid ""
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18418,15 +18560,12 @@ msgid "Creating APK..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -18436,8 +18575,9 @@ msgid "Adding files..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
-msgstr ""
+#, fuzzy
+msgid "Could not export project files."
+msgstr "Trenutni Profil:"
#: platform/android/export/export_plugin.cpp
msgid "Aligning APK..."
@@ -18673,6 +18813,15 @@ msgstr "Funkcije"
msgid "Custom BG Color"
msgstr "Funkcije"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+msgid "Prepare Templates"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Export template not found."
+msgstr ""
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18694,23 +18843,34 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Could not open template for export: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
-msgstr ""
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
+msgstr "Nevažeće ime."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr ""
+#, fuzzy
+msgid "Could not write file: \"%s\"."
+msgstr "Trenutni Profil:"
+
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Uredi vezu:"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read file:"
+msgid "Could not read file: \"%s\"."
msgstr "Trenutni Profil:"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "Opis:"
@@ -18785,16 +18945,18 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
-msgstr ""
+#, fuzzy
+msgid "Could not read HTML shell: \"%s\"."
+msgstr "Trenutni Profil:"
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
-msgstr ""
+#, fuzzy
+msgid "Error starting HTTP server: %d."
+msgstr "Pogreška prilikom spremanja datoteke: %s"
#: platform/javascript/export/export.cpp
msgid "Web"
@@ -19075,9 +19237,27 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Trenutni Profil:"
+
+#: platform/osx/export/export.cpp
+msgid "Could not start xcrun executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Navigacija"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19093,18 +19273,72 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
msgid "No identity found."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Pogreška prilikom spremanja datoteke: %s"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Direkcije"
+
+#: platform/osx/export/export.cpp
+msgid "Could not start hdiutil executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Creating app bundle"
msgstr ""
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Nevažeće ime."
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -19112,7 +19346,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -19153,6 +19387,15 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "Direkcije"
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr ""
@@ -19454,6 +19697,10 @@ msgid "Debug Algorithm"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Failed to rename temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -19499,6 +19746,65 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Zalijepi Animaciju"
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Neispravni argumenti za konstrukciju '%s'"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Nevažeće ime."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Failed to remove temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19519,6 +19825,23 @@ msgid "Invalid product version:"
msgstr "Nevažeće ime."
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Nevažeće ime."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Windows"
msgstr ""
@@ -19534,6 +19857,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -19649,7 +19976,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
@@ -20442,13 +20770,16 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
+msgid "Navpoly"
msgstr ""
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Premjesti Ävor(node)"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Travel Cost"
msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
@@ -21559,12 +21890,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -24074,6 +24399,16 @@ msgid "3D Physics"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Navigacija"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Navigacija"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -25434,7 +25769,7 @@ msgstr ""
msgid "Refraction"
msgstr "Opis:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -25512,7 +25847,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "Upozorenje:"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "Promijeni vrstu baze:"
#: scene/resources/navigation_mesh.cpp
@@ -25529,7 +25869,11 @@ msgid "Source Group Name"
msgstr "Izvor:"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
+msgid "Agents"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -25541,11 +25885,16 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Regions"
+msgstr "Regija"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -25558,6 +25907,11 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Details"
+msgstr "UÄitaj Zadano"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -25574,7 +25928,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -25962,6 +26316,11 @@ msgid "Scenario"
msgstr ""
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Navigacija"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -25979,6 +26338,26 @@ msgstr "Lijevo Linearno"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Mesh2D Pregled"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Mesh2D Pregled"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Mesh2D Pregled"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Uredi vezu:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/hu.po b/editor/translations/hu.po
index 6be9342287..5ee85051da 100644
--- a/editor/translations/hu.po
+++ b/editor/translations/hu.po
@@ -22,13 +22,15 @@
# Andras Virag <snowflake71@gmail.com>, 2021.
# balintmaci <balintmaci@gmail.com>, 2021.
# Balázs Püspök-Kiss <pkblazsak@gmail.com>, 2021.
+# Mr.Catfood <sipos22@msn.com>, 2022.
+# 6Leoo6 <leo.takacs@yahoo.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-12-23 15:30+0000\n"
-"Last-Translator: Balázs Püspök-Kiss <pkblazsak@gmail.com>\n"
+"PO-Revision-Date: 2022-06-19 11:52+0000\n"
+"Last-Translator: 6Leoo6 <leo.takacs@yahoo.com>\n"
"Language-Team: Hungarian <https://hosted.weblate.org/projects/godot-engine/"
"godot/hu/>\n"
"Language: hu\n"
@@ -36,21 +38,19 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.10.1\n"
+"X-Generator: Weblate 4.13.1-dev\n"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Clipboard"
-msgstr "A vágólap üres!"
+msgstr "Vágólap"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Current Screen"
-msgstr "Jelenlegi Jelenet"
+msgstr "Aktuális képernyő"
#: core/bind/core_bind.cpp
msgid "Exit Code"
@@ -70,9 +70,8 @@ msgid "Delta Smoothing"
msgstr ""
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Low Processor Usage Mode"
-msgstr "Mozgató Mód"
+msgstr "Alacsony processzorhasználati mód"
#: core/bind/core_bind.cpp
msgid "Low Processor Usage Mode Sleep (µsec)"
@@ -243,9 +242,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
#, fuzzy
msgid "Network"
msgstr "Hálózati profilkészítő"
@@ -361,12 +361,13 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Nincs elég bájt a bájtok dekódolására, vagy hibás formátum."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "Érvénytelen bemenet %i (nem átadott) a kifejezésben"
#: core/math/expression.cpp
msgid "self can't be used because instance is null (not passed)"
-msgstr "self nem használható, mert a példány null (nincs átadva)"
+msgstr "Nem használható self mivel nincs megadva"
#: core/math/expression.cpp
msgid "Invalid operands to operator %s, %s and %s."
@@ -406,6 +407,16 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Mozgató Mód"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "Bemenet Törlése"
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -442,9 +453,8 @@ msgid "Pressed"
msgstr "Előre beállított"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Scancode"
-msgstr "Keresés"
+msgstr "beolvasási kód"
#: core/os/input_event.cpp
msgid "Physical Scancode"
@@ -452,7 +462,7 @@ msgstr ""
#: core/os/input_event.cpp
msgid "Unicode"
-msgstr ""
+msgstr "Unicode"
#: core/os/input_event.cpp
msgid "Echo"
@@ -606,7 +616,8 @@ msgstr "Leírás"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "Futtatás"
@@ -695,6 +706,11 @@ msgid "Main Run Args"
msgstr "FÅ‘ Jelenet Argumentumok:"
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Scene elérési Út:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -702,19 +718,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Verziókezelés"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Verziókezelés"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Bővítmény neve:"
+msgid "Version Control Plugin Name"
+msgstr "Verziókezelés"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -833,7 +845,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "Szűrők:"
@@ -1115,6 +1128,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Szabad"
@@ -1131,7 +1145,7 @@ msgstr "Tükör"
msgid "Time:"
msgstr "Idő:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Érték:"
@@ -1380,10 +1394,74 @@ msgid "Remove this track."
msgstr "Jelen sáv eltávolítása."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "Idő (mp): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Dokk Pozíció"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Forgatási Léptetés:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "Skála:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "Típus:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Érvénytelen kiterjesztés."
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "In-Handle:"
+msgstr "Fogantyú Beállítása"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Out-Handle:"
+msgstr "Fogantyú Beállítása"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "Rádió Elem"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Újraindítás (mp):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "End (s):"
+msgstr "Előtűnés (mp):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Animációk:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "Sáv Engedélyezés Kapcsolása"
@@ -1600,7 +1678,8 @@ msgid "Add Method Track Key"
msgstr "Metódus Sáv Kulcs Hozzáadása"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "A metódus nem található az objektumban: "
#: editor/animation_track_editor.cpp
@@ -2087,7 +2166,7 @@ msgstr "Biztosan eltávolítja az összes kapcsolatot a(z) \"%s\" jelzésről?"
#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
-msgstr "Jelzések"
+msgstr "jelek"
#: editor/connections_dialog.cpp
msgid "Filter signals"
@@ -2214,8 +2293,8 @@ msgid "Open"
msgstr "Megnyitás"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Tulajdonosai:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
msgid ""
@@ -2517,7 +2596,7 @@ msgid "Bus Options"
msgstr "Busz Beállítások"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Megkettőzés"
@@ -2569,8 +2648,9 @@ msgstr "Hangbusz Elrendezés Megnyitása"
msgid "There is no '%s' file."
msgstr "Nincs '%s' fájl."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "Elrendezés"
#: editor/editor_audio_buses.cpp
@@ -2777,6 +2857,25 @@ msgid "Choose"
msgstr "Kiválaszt"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "Node Útvonal Másolása"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "A csomag telepítése sikeres volt!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "Sikertelen:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Tároló Fájl:"
@@ -2789,6 +2888,31 @@ msgid "Packing"
msgstr "Csomagolás"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Mentés Másként"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "Nem sikerült létrehozni a mappát."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Az alprocesszt nem lehetett elindítani!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Nem lehet megnyitni a fájlt írásra:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Mentés Másként"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2908,11 +3032,32 @@ msgstr "Az egyéni hibakeresési sablon nem található."
msgid "Custom release template not found."
msgstr "Az egyéni kiadási sablon nem található."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "Sablonok kezelése"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "A megadott útvonal nem létezik."
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "Sablon fájl nem található:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "Nem nyitható meg az export sablon zip."
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr "32-bites exportokon a beágyazott PCK nem lehet nagyobb mint 4 GiB."
@@ -3091,9 +3236,9 @@ msgid "Import"
msgstr "Importálás"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Exportálás"
@@ -4273,15 +4418,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Jelenet"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Scene elérési Út:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4408,6 +4544,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Verziókezelés"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Ãtnevezés"
@@ -4436,6 +4576,10 @@ msgstr "Zavarmentes mód váltása."
msgid "Add a new scene."
msgstr "Hozzáad egy új jelenetet."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Jelenet"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Ugrás az előzőleg megnyitott jelenetre."
@@ -5106,11 +5250,15 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#, fuzzy
+msgid "Size:"
msgstr "Méret: "
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+#, fuzzy
+msgid "Page:"
msgstr "Oldal: "
#: editor/editor_properties_array_dict.cpp
@@ -5209,6 +5357,11 @@ msgstr ""
"Nem található futtatható exportállomány ehhez a platformhoz.\n"
"Kérem adjon hozzá egy futtatható exportállományt az export menüben."
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Projekt"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Ãrja a logikát a _run() metódusba."
@@ -5489,7 +5642,9 @@ msgid "Draw Spaces"
msgstr "Hívások"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr "Navigáció"
@@ -5743,7 +5898,7 @@ msgstr "Pont"
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Shape"
-msgstr ""
+msgstr "Alakzat"
#: editor/editor_settings.cpp
#, fuzzy
@@ -6075,10 +6230,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Projektkezelő"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -6852,14 +7009,6 @@ msgid "Replace in Files"
msgstr "Összes cseréje"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "Keres: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "Csere: "
-
-#: editor/find_in_files.cpp
#, fuzzy
msgid "Replace All (NO UNDO)"
msgstr "Összes cseréje"
@@ -6989,7 +7138,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Szűrők:"
@@ -7008,7 +7157,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp
msgid "sRGB"
-msgstr ""
+msgstr "sRGB"
#: editor/import/resource_importer_layered_texture.cpp
#, fuzzy
@@ -7257,7 +7406,8 @@ msgid "Generating Lightmaps"
msgstr "Fénytérképek Létrehozása"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+#, fuzzy
+msgid "Generating for Mesh:"
msgstr "Létrehozás a Következő Hálóhoz: "
#: editor/import/resource_importer_scene.cpp
@@ -7286,6 +7436,18 @@ msgid "Saving..."
msgstr "Mentés..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -8093,10 +8255,12 @@ msgstr ""
msgid "Directions"
msgstr "Irányok"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "Múlt"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "Jövő"
@@ -8251,7 +8415,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
+#, fuzzy
+msgid "Transition:"
msgstr "Ãtmenet: "
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8268,11 +8433,6 @@ msgid "New name:"
msgstr "Új név:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "Skála:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "Előtűnés (mp):"
@@ -9191,6 +9351,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr "Egyéni csontok törlése"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9257,6 +9418,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "Elrendezés"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -10020,7 +10185,8 @@ msgid "Volume"
msgstr "Mennyiség"
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+#, fuzzy
+msgid "Emission Source:"
msgstr "Kibocsátási Forrás: "
#: editor/plugins/particles_editor_plugin.cpp
@@ -10250,6 +10416,7 @@ msgid "Points"
msgstr "Pontok"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr "Sokszögek"
@@ -10403,13 +10570,6 @@ msgid "Instance:"
msgstr "Példány:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "Típus:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr "Megnyitás Szerkesztőben"
@@ -10418,10 +10578,6 @@ msgstr "Megnyitás Szerkesztőben"
msgid "Load Resource"
msgstr "Erőforrás Betöltése"
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr "ForrásElőtöltö"
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -11138,13 +11294,17 @@ msgstr "Forgató Mód"
msgid "Translate"
msgstr "Fordítások"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr ""
+#, fuzzy
+msgid "Scaling:"
+msgstr "Skála:"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "Fordítások:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -11167,12 +11327,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
-msgid "Size:"
-msgstr "Méret: "
-
-#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
msgid "Objects Drawn:"
msgstr "Rajzolt objektumok"
@@ -11659,8 +11813,9 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
-msgstr ""
+#, fuzzy
+msgid "Convert to MeshInstance2D"
+msgstr "Konvertálás CPUParticles2D-re"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Invalid geometry, can't create polygon."
@@ -11691,15 +11846,16 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "Művelet"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12696,8 +12852,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr "Régió"
@@ -13184,7 +13339,7 @@ msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
msgid "SSH Passphrase"
-msgstr ""
+msgstr "SSH Passphrase"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Detect new changes"
@@ -14152,31 +14307,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "Összes exportálása"
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr "Exportálási Útvonal"
@@ -14316,6 +14450,11 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Projekt Alapítói"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "Export Sablonok Kezelése"
@@ -15767,8 +15906,9 @@ msgid "Attach Node Script"
msgstr ""
#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr ""
+#, fuzzy
+msgid "Remote %s:"
+msgstr "Eltávolítás"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -16646,10 +16786,9 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
-#, fuzzy
+#: scene/3d/collision_polygon.cpp
msgid "Polygon"
-msgstr "Sokszögek"
+msgstr "Sokszög"
#: modules/csg/csg_shape.cpp
msgid "Spin Degrees"
@@ -16822,7 +16961,7 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+msgid "Libraries:"
msgstr ""
#: modules/gdnative/nativescript/nativescript.cpp
@@ -17263,7 +17402,6 @@ msgid "Use In Baked Light"
msgstr "Fény Besütése"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17293,6 +17431,19 @@ msgstr "Középre"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Navigáció"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Navigációs mód"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Következő Síklap"
@@ -17708,7 +17859,8 @@ msgstr ""
"értéke! Javítsa ki a node-ját."
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+#, fuzzy
+msgid "Node returned an invalid sequence output:"
msgstr "Node egy érvénytelen szekvencia kimenettel tért vissza: "
#: modules/visual_script/visual_script.cpp
@@ -17716,7 +17868,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -18069,7 +18221,7 @@ msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
msgid "While"
-msgstr ""
+msgstr "Amíg"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "while (cond):"
@@ -18084,7 +18236,8 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+#, fuzzy
+msgid "Input type not iterable:"
msgstr "Beviteli típus nem iterálható: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18092,7 +18245,8 @@ msgid "Iterator became invalid"
msgstr "Az iterátor érvénytelenné vált"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+#, fuzzy
+msgid "Iterator became invalid:"
msgstr "Az iterátor érvénytelenné vált: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18262,11 +18416,13 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
+#, fuzzy
+msgid "Invalid argument of type:"
msgstr ": Érvénytelen típusargumentum: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
+#, fuzzy
+msgid "Invalid arguments:"
msgstr ": Érvénytelen argumentumok: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18279,11 +18435,13 @@ msgid "Var Name"
msgstr "Név"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+#, fuzzy
+msgid "VariableGet not found in script:"
msgstr "VariableGet nem található a szkriptben: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+#, fuzzy
+msgid "VariableSet not found in script:"
msgstr "VariableSet nem található a szkriptben: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18392,7 +18550,7 @@ msgstr ""
#: modules/visual_script/visual_script_yield_nodes.cpp
msgid "Yield"
-msgstr ""
+msgstr "hozam"
#: modules/visual_script/visual_script_yield_nodes.cpp
msgid "Wait"
@@ -18831,10 +18989,6 @@ msgid "Could not execute on device."
msgstr "Nem sikerült létrehozni a mappát."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18938,12 +19092,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Jelzés"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18962,6 +19120,11 @@ msgid "Could not find keystore, unable to export."
msgstr ""
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "Az alprocesszt nem lehetett elindítani!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -18992,7 +19155,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19003,20 +19166,19 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
-msgstr ""
+#, fuzzy
+msgid "Could not export project files to gradle project."
+msgstr "Az alprocesszt nem lehetett elindítani!"
#: platform/android/export/export_plugin.cpp
msgid "Could not write expansion package file!"
@@ -19028,7 +19190,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -19044,7 +19206,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr "Az animáció nem található: '%s'"
#: platform/android/export/export_plugin.cpp
@@ -19053,15 +19215,13 @@ msgid "Creating APK..."
msgstr "Kontúrok létrehozása…"
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
-msgstr ""
+#, fuzzy
+msgid "Could not find template APK to export: \"%s\"."
+msgstr "Az alprocesszt nem lehetett elindítani!"
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -19073,7 +19233,7 @@ msgstr "%s Hozzáadása..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr "Az alprocesszt nem lehetett elindítani!"
#: platform/android/export/export_plugin.cpp
@@ -19315,6 +19475,17 @@ msgstr "Node-ok kivágása"
msgid "Custom BG Color"
msgstr "Node-ok kivágása"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "Sablonok kezelése"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Az egyéni kiadási sablon nem található."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -19336,23 +19507,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
-msgstr ""
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
+msgstr "Nem sikerült létrehozni a mappát."
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
-msgstr ""
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
+msgstr "Érvénytelen kiterjesztés."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr ""
+#, fuzzy
+msgid "Could not write file: \"%s\"."
+msgstr "Nem sikerült létrehozni a mappát."
+
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Margó Beállítása"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read file:"
+msgid "Could not read file: \"%s\"."
msgstr "Nem sikerült létrehozni a mappát."
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "Felsorolások:"
@@ -19428,17 +19611,17 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr "Nem sikerült létrehozni a mappát."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr "Nem sikerült létrehozni a mappát."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr "Hiba TileSet mentésekor!"
#: platform/javascript/export/export.cpp
@@ -19737,9 +19920,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Az alprocesszt nem lehetett elindítani!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "Az alprocesszt nem lehetett elindítani!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Lokalizáció"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19755,18 +19957,74 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "Nincs Találat!"
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Hiba a fájl mentésekor: %s"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Irányok"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "Az alprocesszt nem lehetett elindítani!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "Indexkép Létrehozása"
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
-msgstr ""
+#, fuzzy
+msgid "Could not find template app to export: \"%s\"."
+msgstr "Az alprocesszt nem lehetett elindítani!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Érvénytelen Alapútvonal."
#: platform/osx/export/export.cpp
msgid ""
@@ -19776,7 +20034,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -19818,6 +20076,15 @@ msgstr ""
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "ZIP Creation"
+msgstr "Projekt"
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Invalid bundle identifier:"
msgstr "Érvénytelen azonosító:"
@@ -20128,6 +20395,11 @@ msgid "Debug Algorithm"
msgstr "Hibakereső"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Az ideiglenes fájl nem távolítható el:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20175,6 +20447,66 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Véletlenszerű Forgatás:"
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Érvénytelen azonosító:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Érvénytelen név."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "Az ideiglenes fájl nem távolítható el:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20196,6 +20528,23 @@ msgid "Invalid product version:"
msgstr "Érvénytelen termék GUID."
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Érvénytelen kiterjesztés."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "Új ablak"
@@ -20212,6 +20561,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20335,7 +20688,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Példány"
@@ -20518,9 +20872,8 @@ msgid "Show Behind Parent"
msgstr ""
#: scene/2d/canvas_item.cpp
-#, fuzzy
msgid "Show On Top"
-msgstr "Origó Megjelenítése"
+msgstr "Megjelenítés felül"
#: scene/2d/canvas_item.cpp scene/2d/light_occluder_2d.cpp
#: scene/2d/tile_map.cpp
@@ -21166,15 +21519,19 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr ""
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Középre lent"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "Utazás"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
#, fuzzy
@@ -22348,12 +22705,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
#, fuzzy
msgid "NavMesh"
@@ -24999,6 +25350,16 @@ msgid "3D Physics"
msgstr "Fizika Keret %"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Navigáció"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Navigáció"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -26411,7 +26772,7 @@ msgstr "Ãtmenet: "
msgid "Refraction"
msgstr "Felsorolások:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -26494,7 +26855,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "Skála:"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "Alaptípus módosítása:"
#: scene/resources/navigation_mesh.cpp
@@ -26512,10 +26878,15 @@ msgid "Source Group Name"
msgstr "Forrás"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "FÅ‘ Jelenet Argumentumok:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -26524,11 +26895,16 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Regions"
+msgstr "Régió"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26541,6 +26917,11 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Details"
+msgstr "Alapértelmezett Betöltése"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -26557,7 +26938,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -26966,6 +27347,11 @@ msgid "Scenario"
msgstr "Jelenet"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Navigáció"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -26983,6 +27369,26 @@ msgstr "Bal lineáris"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Alapértelmezett"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Előnézet frissítése"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Tesztelés"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Kapcsolat szerkesztése:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/id.po b/editor/translations/id.po
index 67d2d8de86..4788d2a7c2 100644
--- a/editor/translations/id.po
+++ b/editor/translations/id.po
@@ -237,9 +237,10 @@ msgid "Data"
msgstr "Data"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr "Jaringan"
@@ -343,7 +344,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Tidak cukup byte untuk decoding byte, atau format tidak valid."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "Masukkan tidak sah %i (tidak diberikan) dalam ekspresi"
#: core/math/expression.cpp
@@ -388,6 +390,16 @@ msgstr "Antrian Pesan"
msgid "Max Size (KB)"
msgstr "Ukuran Maksimum (KB)"
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Mode Pindah"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "Hapus Masukan"
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -567,7 +579,8 @@ msgstr "Deskripsi"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "Jalankan"
@@ -653,6 +666,10 @@ msgid "Main Run Args"
msgstr "Jalan Utama Argumen"
#: core/project_settings.cpp
+msgid "Scene Naming"
+msgstr "Penamaan Skena"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr "Cari dalam Ekstensi File"
@@ -660,18 +677,15 @@ msgstr "Cari dalam Ekstensi File"
msgid "Script Templates Search Path"
msgstr "Jalur Pencarian Template Skrip"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Kontrol Versi"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+#, fuzzy
+msgid "Version Control Autoload On Startup"
msgstr "Muat Otomatis Saat Memulai"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Nama Plugin"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Kontrol Versi"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -780,7 +794,8 @@ msgid "Quality"
msgstr "Kualitas"
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
msgid "Filters"
msgstr "Filter"
@@ -1049,6 +1064,7 @@ msgstr "Kualitas Tinggi"
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Bebas"
@@ -1065,7 +1081,7 @@ msgstr "Cermin"
msgid "Time:"
msgstr "Waktu:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Nilai:"
@@ -1314,10 +1330,75 @@ msgid "Remove this track."
msgstr "Hapus track ini."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "Waktu (d): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Posisi"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Rotasi"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "Skala:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "Jenis:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Templat ekspor tidak valid:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Easing:"
+msgstr "Mempermudah Masuk-Keluar"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "In-Handle:"
+msgstr "Atur Pegangan"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Out-Handle:"
+msgstr "Atur Pegangan"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "Item Radio"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Mulai Ulang:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "End (s):"
+msgstr "Memudar Masuk (d):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Animasi:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "Aktifkan Trek Beralih"
@@ -1532,7 +1613,8 @@ msgid "Add Method Track Key"
msgstr "Tambah Kunci Track Metode"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "Metode tidak ditemukan dalam objek: "
#: editor/animation_track_editor.cpp
@@ -2142,8 +2224,8 @@ msgid "Open"
msgstr "Buka"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Pemilik Dari:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
msgid ""
@@ -2446,7 +2528,7 @@ msgid "Bus Options"
msgstr "Pilihan Bus"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Gandakan"
@@ -2498,8 +2580,9 @@ msgstr "Buka Layout Suara Bus"
msgid "There is no '%s' file."
msgstr "Tidak ada berkas '%s'."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "Tata Letak"
#: editor/editor_audio_buses.cpp
@@ -2705,6 +2788,25 @@ msgid "Choose"
msgstr "Pilih"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "Salin Lokasi Node"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "Paket Sukses Terpasang!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "Gagal:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Menyimpan File:"
@@ -2717,6 +2819,31 @@ msgid "Packing"
msgstr "Mengemas"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Simpan Sebagai"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "Tidak dapat membuat folder."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Tidak dapat ekspor berkas proyek"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Tidak dapat membuka file untuk menulis:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Simpan Sebagai"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2836,11 +2963,33 @@ msgstr "Templat awakutu kustom tidak ditemukan."
msgid "Custom release template not found."
msgstr "Templat rilis kustom tidak ditemukan."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "Kelola Templat"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "Lokasi ekspor yang diberikan tidak ada:"
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "Templat berkas tidak ditemukan:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "Templat ekspor tidak valid:"
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+#, fuzzy
+msgid "PCK Embedding"
+msgstr "Lapisan"
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr "Pada ekspor 32-bit PCK yang ditanamkan tidak boleh lebih dari 4GiB."
@@ -3015,9 +3164,9 @@ msgid "Import"
msgstr "Impor"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Ekspor"
@@ -4182,14 +4331,6 @@ msgstr ""
"Tidak dapat menulis ke file '%s', file sedang digunakan, terkunci atau tidak "
"memiliki izin."
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Scene"
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr "Penamaan Skena"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4318,6 +4459,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Kontrol Versi"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Ubah Nama"
@@ -4346,6 +4491,10 @@ msgstr "Toggle mode tanpa gangguan."
msgid "Add a new scene."
msgstr "Tambah skena baru."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Scene"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Pergi ke skena yang sebelumnya dibuka."
@@ -5033,11 +5182,14 @@ msgid "Selected node is not a Viewport!"
msgstr "Node yang terpilih bukanlah Viewport!"
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr "Ukuran: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
+msgstr "Ukuran:"
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+#, fuzzy
+msgid "Page:"
msgstr "Halaman: "
#: editor/editor_properties_array_dict.cpp
@@ -5137,6 +5289,11 @@ msgstr ""
"Tidak ada preset ekspor yang bisa digunakan untuk platform ini.\n"
"Mohon tambahkan preset yang bisa digunakan di menu ekspor."
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Proyek"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Tulis logika di dalam fungsi _run()."
@@ -5417,7 +5574,9 @@ msgid "Draw Spaces"
msgstr "Gambarkan Spasi"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr "Navigasi"
@@ -5997,10 +6156,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Manajer Proyek"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Sorting Order"
msgstr "Urutan Penyortiran"
@@ -6758,14 +6919,6 @@ msgid "Replace in Files"
msgstr "Ganti Semua"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "Cari: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "Ganti: "
-
-#: editor/find_in_files.cpp
#, fuzzy
msgid "Replace All (NO UNDO)"
msgstr "Ganti Semua"
@@ -6895,7 +7048,7 @@ msgstr "Ulang"
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Filter:"
@@ -7154,7 +7307,8 @@ msgid "Generating Lightmaps"
msgstr "Membuat Pemetaan Cahaya"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+#, fuzzy
+msgid "Generating for Mesh:"
msgstr "Menghasilkan untuk Mesh: "
#: editor/import/resource_importer_scene.cpp
@@ -7183,6 +7337,18 @@ msgid "Saving..."
msgstr "Menyimpan..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
#, fuzzy
msgid "2D, Detect 3D"
msgstr "Deteksi 3D"
@@ -7994,10 +8160,12 @@ msgstr "Opsi Onion Skinning"
msgid "Directions"
msgstr "Arah"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "Sebelum"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "Masa depan"
@@ -8155,7 +8323,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr "Terapkan akhir pada animasi. Berguna untuk sub-transisi."
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
+#, fuzzy
+msgid "Transition:"
msgstr "Transisi: "
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8172,11 +8341,6 @@ msgid "New name:"
msgstr "Nama baru:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "Skala:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "Memudar Masuk (d):"
@@ -9091,6 +9255,7 @@ msgstr "Buat Tulang Kustom(satu/lebih) dari Node(satu/lebih)"
msgid "Clear Custom Bones"
msgstr "Bersihkan Pertulangan Kustom"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9157,6 +9322,10 @@ msgid "Preview Canvas Scale"
msgstr "Pratinjau Skala Kanvas"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "Tata Letak"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr "Masker translasi untuk menyisipkan key."
@@ -9933,7 +10102,8 @@ msgid "Volume"
msgstr "Volume"
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+#, fuzzy
+msgid "Emission Source:"
msgstr "Sumber Emisi: "
#: editor/plugins/particles_editor_plugin.cpp
@@ -10167,6 +10337,7 @@ msgid "Points"
msgstr "Titik"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr "Poligon"
@@ -10322,13 +10493,6 @@ msgid "Instance:"
msgstr "Instansi:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "Jenis:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr "Buka dalam Editor"
@@ -10337,10 +10501,6 @@ msgstr "Buka dalam Editor"
msgid "Load Resource"
msgstr "Muat Resource"
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr "ResourcePreloader"
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr "Balikkan Portal"
@@ -11041,12 +11201,16 @@ msgstr "Putar"
msgid "Translate"
msgstr "Translasi"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
+#, fuzzy
+msgid "Scaling:"
msgstr "Penskalaan: "
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
+#, fuzzy
+msgid "Translating:"
msgstr "Mentranslasi: "
#: editor/plugins/spatial_editor_plugin.cpp
@@ -11070,11 +11234,6 @@ msgid "Yaw:"
msgstr "Yaw:"
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr "Ukuran:"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr "Objek Digambar:"
@@ -11567,7 +11726,8 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr "Geometri tidak valid, tidak dapat diganti dengan mesh."
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+#, fuzzy
+msgid "Convert to MeshInstance2D"
msgstr "Konversikan menjadi Mesh2D"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11599,15 +11759,18 @@ msgid "Sprite"
msgstr "Sprite"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
+#, fuzzy
+msgid "Simplification:"
msgstr "Penyederhanaan: "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+#, fuzzy
+msgid "Shrink (Pixels):"
msgstr "Penciutan (Piksel): "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+#, fuzzy
+msgid "Grow (Pixels):"
msgstr "Pertumbuhan (Piksel): "
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12615,8 +12778,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr "Pilih bentuk sebelumnya, subtile, atau Tile."
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr "Wilayah"
@@ -14160,36 +14322,10 @@ msgid "Delete preset '%s'?"
msgstr "Hapus preset '%s'?"
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-"Gagal mengekspor proyek untuk platform '%s'.\n"
-"Templat Ekspor kelihatannya belum terpasang atau tidak valid."
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-"Gagal mengekspor proyek untuk platform '%s'.\n"
-"Ini mungkin disebabkan oleh masalah konfigurasi dalam preset ekspor atau "
-"pengaturan ekspor Anda."
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "Mengekspor Semua"
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr "Lokasi ekspor yang diberikan tidak ada:"
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr "Templat ekspor untuk platform ini tidak ada / rusak:"
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr "Lokasi Ekspor"
@@ -14340,6 +14476,11 @@ msgid "Export templates for this platform are missing:"
msgstr "Tidak ada templat ekspor untuk platform ini:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Penemu Proyek"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "Mengatur Templat Ekspor"
@@ -15899,7 +16040,8 @@ msgid "Attach Node Script"
msgstr "Lampirkan Skrip Node"
#: editor/script_editor_debugger.cpp
-msgid "Remote "
+#, fuzzy
+msgid "Remote %s:"
msgstr "Remot "
#: editor/script_editor_debugger.cpp
@@ -16763,7 +16905,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "Poligon"
@@ -16941,7 +17083,8 @@ msgid "Disabled GDNative Singleton"
msgstr "Dinonaktifkan Singleton GDNative"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+#, fuzzy
+msgid "Libraries:"
msgstr "Pustaka: "
#: modules/gdnative/nativescript/nativescript.cpp
@@ -17361,7 +17504,6 @@ msgid "Use In Baked Light"
msgstr "Panggang Lightmaps"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr "Sel"
@@ -17388,6 +17530,19 @@ msgstr "Pusat Z"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Navigasi"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Mode Navigasi"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Dataran Selanjutnya"
@@ -17804,7 +17959,8 @@ msgstr ""
"memori! Silahkan perbaiki node anda."
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+#, fuzzy
+msgid "Node returned an invalid sequence output:"
msgstr "Node mengembalikan sebuah keluaran urutan yang tidak sah: "
#: modules/visual_script/visual_script.cpp
@@ -17814,7 +17970,8 @@ msgstr ""
"besar, laporkan bug!"
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+#, fuzzy
+msgid "Stack overflow with stack depth:"
msgstr "Tumpukan melimpah dengan kedalaman tumpukan: "
#: modules/visual_script/visual_script.cpp
@@ -18188,7 +18345,8 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+#, fuzzy
+msgid "Input type not iterable:"
msgstr "Tipe masukan tidak iterable: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18196,7 +18354,8 @@ msgid "Iterator became invalid"
msgstr "Iterator menjadi tidak sah"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+#, fuzzy
+msgid "Iterator became invalid:"
msgstr "Iterator menjadi tidak sah: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18365,11 +18524,13 @@ msgid "Operator"
msgstr "Operator overlay."
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
+#, fuzzy
+msgid "Invalid argument of type:"
msgstr ": Argumen tidak sah dari tipe: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
+#, fuzzy
+msgid "Invalid arguments:"
msgstr ": Argumen-argumen tidak sah: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18382,11 +18543,13 @@ msgid "Var Name"
msgstr "Nama"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+#, fuzzy
+msgid "VariableGet not found in script:"
msgstr "VariableGet tidak ditemukan dalam script: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+#, fuzzy
+msgid "VariableSet not found in script:"
msgstr "VariableSet tidak ditemukan dalam script: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18929,10 +19092,6 @@ msgid "Could not execute on device."
msgstr "Tidak dapat dijalankan di perangkat."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr "Tak dapat menemukan perkakas 'apksigner'."
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -19053,12 +19212,16 @@ msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
"Versi \"Target SDK\" harus lebih tinggi atau sama dengan versi \"Min SDK\"."
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Sinyal"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19074,6 +19237,11 @@ msgid "Could not find keystore, unable to export."
msgstr "Tidak dapat menemukan keystore, tidak bisa ekspor."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "Tidak dapat memulai subproses!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -19104,7 +19272,8 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "Nama berkas tidak valid! APK Android memerlukan ekstensi *.apk ."
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+#, fuzzy
+msgid "Unsupported export format!"
msgstr "Format ekspor tidak didukung!\n"
#: platform/android/export/export_plugin.cpp
@@ -19116,10 +19285,9 @@ msgstr ""
"versinya. Silakan pasang ulang dari menu 'Proyek'."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
"Versi build Android tidak cocok:\n"
@@ -19129,11 +19297,12 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+#, fuzzy
+msgid "Could not export project files to gradle project."
msgstr "Tidak dapat menyunting proyek gradle dalam lokasi proyek\n"
#: platform/android/export/export_plugin.cpp
@@ -19145,8 +19314,9 @@ msgid "Building Android Project (gradle)"
msgstr "Membangun Proyek Android (gradle)"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
"Pembangunan proyek Android gagal, periksa output untuk galatnya.\n"
@@ -19166,7 +19336,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr "Animasi tidak ditemukan: '%s'"
#: platform/android/export/export_plugin.cpp
@@ -19175,17 +19345,15 @@ msgid "Creating APK..."
msgstr "Membuat kontur..."
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+#, fuzzy
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
"Tidak dapat menemukan contoh APK untuk ekspor:\n"
"%s"
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -19196,7 +19364,8 @@ msgid "Adding files..."
msgstr "Menambahkan %s..."
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+#, fuzzy
+msgid "Could not export project files."
msgstr "Tidak dapat ekspor berkas proyek"
#: platform/android/export/export_plugin.cpp
@@ -19442,6 +19611,17 @@ msgstr "Potong Node"
msgid "Custom BG Color"
msgstr "Potong Node"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "Kelola Templat"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Templat rilis kustom tidak ditemukan."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -19464,22 +19644,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Jalankan HTML yang diekspor dalam peramban baku sistem."
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
msgstr "Tidak dapat membuka templat untuk ekspor:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
msgstr "Templat ekspor tidak valid:"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+#, fuzzy
+msgid "Could not write file: \"%s\"."
msgstr "Tidak dapat menulis berkas:"
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Atur Batas"
+
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+#, fuzzy
+msgid "Could not read file: \"%s\"."
msgstr "Tidak dapat membaca berkas:"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Variant"
msgstr "Varian"
@@ -19551,15 +19744,18 @@ msgid "Icon 512 X 512"
msgstr "Ikon 512 X 512"
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+#, fuzzy
+msgid "Could not read HTML shell: \"%s\"."
msgstr "Tidak dapat membaca shell HTML:"
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+#, fuzzy
+msgid "Could not create HTTP server directory: %s."
msgstr "Tidak dapat menciptakan direktori server HTTP:"
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+#, fuzzy
+msgid "Error starting HTTP server: %d."
msgstr "Kesalahan memulai server HTTP:"
#: platform/javascript/export/export.cpp
@@ -19857,9 +20053,29 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Tidak dapat ekspor berkas proyek"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "Tidak dapat memulai subproses!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Notarisasi"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
"Catatan: Proses notaris umumnya memakan waktu kurang dari satu jam. Ketika "
"proses selesai, Anda akan menerima email."
@@ -19881,18 +20097,74 @@ msgstr ""
"diekspor (opsional):"
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
msgid "No identity found."
msgstr "Identitas tidak ditemukan."
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Error menyimpan berkas: %s"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Arah"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "Tidak dapat memulai subproses!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Creating app bundle"
msgstr "Membuat bundel aplikasi"
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+#, fuzzy
+msgid "Could not find template app to export: \"%s\"."
msgstr "Tidak dapat menemukan contoh APK untuk ekspor:"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Templat ekspor tidak valid:"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -19900,7 +20172,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -19943,6 +20215,16 @@ msgid "Sending archive for notarization"
msgstr "Mengirim arsip untuk notaris"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "Proyeksi"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr "Tidak dapat menyunting proyek gradle dalam lokasi proyek\n"
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr "Identifier bundel tidak valid:"
@@ -20262,6 +20544,11 @@ msgid "Debug Algorithm"
msgstr "Algoritma Awakutu"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Tidak dapat menghapus berkas sementara:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr "Tipe Identitas"
@@ -20304,6 +20591,70 @@ msgid "Trademarks"
msgstr "Merek Dagang"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Perputaran Acak:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "Tidak dapat menemukan keystore, tidak bisa ekspor."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "Tidak dapat menemukan keystore, tidak bisa ekspor."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "Tidak dapat menemukan keystore, tidak bisa ekspor."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "Tidak dapat menemukan keystore, tidak bisa ekspor."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Tipe Identitas"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Nama tidak sah."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "Tidak dapat menghapus berkas sementara:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20322,6 +20673,23 @@ msgid "Invalid product version:"
msgstr "Versi produk tidak valid:"
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Ekstensi tidak valid."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "Jendela Baru"
@@ -20338,6 +20706,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
msgid "Frames"
@@ -20461,7 +20833,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr "Jarak Maks"
@@ -21304,17 +21677,19 @@ msgstr ""
"ini bekerja. Silakan atur sebuah properti atau gambar sebuah polygon."
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-"NavigationPolygonInstance harus menjadi sebuah child atau grandchild ke "
-"sebuah node Navigation2D. Ini hanya menyediakan data navigasi."
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr ""
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Bawah Tengah"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "Menjelajah"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
msgid "Rotation Degrees"
@@ -22497,14 +22872,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr "NavigationAgent hanya dapat digunakan di bawah node spasial."
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-"NavigationMeshInstance harus menjadi child atau grandchild untuk sebuah node "
-"Navigation. Ini hanya menyediakan data navigasi."
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
#, fuzzy
msgid "NavMesh"
@@ -25235,6 +25602,16 @@ msgid "3D Physics"
msgstr "Fisika"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Navigasi"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Navigasi"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -26664,7 +27041,7 @@ msgstr "Transisi: "
msgid "Refraction"
msgstr "Enumerasi:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -26749,7 +27126,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "Penskalaan: "
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "Atur Jenis variabel"
#: scene/resources/navigation_mesh.cpp
@@ -26766,8 +27148,14 @@ msgid "Source Group Name"
msgstr "Sumber"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
-msgstr ""
+#, fuzzy
+msgid "Cells"
+msgstr "Sel"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "Argumen Skena Utama:"
#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
@@ -26779,11 +27167,16 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Regions"
+msgstr "Wilayah"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Merge Size"
msgstr "Gabung dari Skena"
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26796,6 +27189,11 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Details"
+msgstr "Detail Bayangan"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr "Jarak sampel"
@@ -26813,7 +27211,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -27220,6 +27618,11 @@ msgid "Scenario"
msgstr "Skena"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Navigasi"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -27237,6 +27640,26 @@ msgstr "Linier ke Kiri"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Langkah Desimal Baku"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Perbarui Pratinjau"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Menguji"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Sunting Koneksi:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/is.po b/editor/translations/is.po
index 4c6bb7d744..ea3301ce7f 100644
--- a/editor/translations/is.po
+++ b/editor/translations/is.po
@@ -209,9 +209,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr ""
@@ -320,7 +321,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Ekki nægt minni til að umskrá bæti eða ógilt snið."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "Ógild inntak % i (ekki sent áfram)"
#: core/math/expression.cpp
@@ -365,6 +367,15 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Breyta Viðbót"
+
+#: core/os/input.cpp
+msgid "Use Accumulated Input"
+msgstr ""
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -550,7 +561,8 @@ msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr ""
@@ -635,24 +647,23 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-msgid "Plugin Name"
+msgid "Version Control Plugin Name"
msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
@@ -761,7 +772,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "Verkefna Stjóri"
@@ -1033,6 +1045,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr ""
@@ -1049,7 +1062,7 @@ msgstr ""
msgid "Time:"
msgstr ""
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr ""
@@ -1308,10 +1321,69 @@ msgid "Remove this track."
msgstr "Fjarlægja Anim track"
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+msgid "Time (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Val á kvarða"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Breyta Viðbót"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "(Invalid, expected type: %s)"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "Breyta hnútnum Ferill"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Breyta Viðbót"
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Stillið breyting á:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr ""
@@ -1531,7 +1603,7 @@ msgid "Add Method Track Key"
msgstr "Anim bæta við lag"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+msgid "Method not found in object:"
msgstr ""
#: editor/animation_track_editor.cpp
@@ -2132,7 +2204,7 @@ msgid "Open"
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
+msgid "Owners of: %s (Total: %d)"
msgstr ""
#: editor/dependency_editor.cpp
@@ -2426,7 +2498,7 @@ msgid "Bus Options"
msgstr "Val á kvarða"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr ""
@@ -2478,8 +2550,8 @@ msgstr ""
msgid "There is no '%s' file."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+msgid "Layout:"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -2682,6 +2754,22 @@ msgid "Choose"
msgstr ""
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed successfully."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed."
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr ""
@@ -2694,6 +2782,27 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp
+msgid "Save PCK"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Cannot create file \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Verkefna Stjóri"
+
+#: editor/editor_export.cpp
+msgid "Can't open file to read from path \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Save ZIP"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2797,8 +2906,25 @@ msgstr ""
msgid "Custom release template not found."
msgstr ""
+#: editor/editor_export.cpp
+msgid "Prepare Template"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "The given export path doesn't exist."
+msgstr ""
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+msgid "Template file not found: \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed to copy export template."
+msgstr ""
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
msgstr ""
#: editor/editor_export.cpp
@@ -2972,9 +3098,9 @@ msgid "Import"
msgstr ""
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr ""
@@ -4060,14 +4186,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4188,6 +4306,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Endurnefning Anim track"
@@ -4216,6 +4338,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
@@ -4851,11 +4977,13 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+msgid "Page:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
@@ -4949,6 +5077,11 @@ msgid ""
"as runnable."
msgstr ""
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Verkefna Stjóri"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -5207,7 +5340,9 @@ msgid "Draw Spaces"
msgstr ""
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
#, fuzzy
msgid "Navigation"
msgstr "Breyta Viðbót"
@@ -5757,10 +5892,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Verkefna Stjóri"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Sorting Order"
msgstr ""
@@ -6485,14 +6622,6 @@ msgid "Replace in Files"
msgstr ""
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr ""
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr ""
@@ -6622,7 +6751,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Verkefna Stjóri"
@@ -6870,7 +6999,7 @@ msgid "Generating Lightmaps"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+msgid "Generating for Mesh:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -6898,6 +7027,18 @@ msgid "Saving..."
msgstr ""
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7690,10 +7831,12 @@ msgstr ""
msgid "Directions"
msgstr ""
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr ""
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr ""
@@ -7854,7 +7997,7 @@ msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
#, fuzzy
-msgid "Transition: "
+msgid "Transition:"
msgstr "Stillið breyting á:"
#: editor/plugins/animation_state_machine_editor.cpp
@@ -7871,11 +8014,6 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr ""
@@ -8773,6 +8911,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr ""
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -8836,6 +8975,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -9583,7 +9726,7 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+msgid "Emission Source:"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
@@ -9816,6 +9959,7 @@ msgid "Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
#, fuzzy
msgid "Polygons"
msgstr "Breyta Viðbót"
@@ -9971,13 +10115,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -9986,10 +10123,6 @@ msgstr ""
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -10678,13 +10811,17 @@ msgstr ""
msgid "Translate"
msgstr ""
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr ""
+#, fuzzy
+msgid "Scaling:"
+msgstr "Val á kvarða"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "Stillið breyting á:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -10707,11 +10844,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11190,8 +11322,9 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
-msgstr ""
+#, fuzzy
+msgid "Convert to MeshInstance2D"
+msgstr "Hreyfa Viðbótar Lykil"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Invalid geometry, can't create polygon."
@@ -11223,15 +11356,16 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "Allt úrvalið"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12178,8 +12312,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr ""
@@ -13638,31 +13771,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr ""
@@ -13799,6 +13911,11 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Verkefna Stjóri"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr ""
@@ -15251,8 +15368,9 @@ msgid "Attach Node Script"
msgstr ""
#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr ""
+#, fuzzy
+msgid "Remote %s:"
+msgstr "Fjarlægja val"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -16083,7 +16201,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "Breyta Viðbót"
@@ -16247,7 +16365,7 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+msgid "Libraries:"
msgstr ""
#: modules/gdnative/nativescript/nativescript.cpp
@@ -16656,7 +16774,6 @@ msgid "Use In Baked Light"
msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -16685,6 +16802,19 @@ msgstr "Anim DELETE-lyklar"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Breyta Viðbót"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Breyta Viðbót"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -17091,7 +17221,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17099,7 +17229,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17474,7 +17604,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17482,7 +17612,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17636,11 +17766,11 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
+msgid "Invalid argument of type:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
+msgid "Invalid arguments:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
@@ -17652,11 +17782,11 @@ msgid "Var Name"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+msgid "VariableGet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+msgid "VariableSet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
@@ -18155,10 +18285,6 @@ msgid "Could not execute on device."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18262,12 +18388,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Tvíteknir lyklar"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18283,6 +18413,10 @@ msgid "Could not find keystore, unable to export."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Could not start apksigner executable."
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -18311,7 +18445,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18322,19 +18456,17 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+msgid "Could not export project files to gradle project."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18347,7 +18479,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -18362,7 +18494,7 @@ msgid ""
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18370,15 +18502,12 @@ msgid "Creating APK..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -18388,7 +18517,7 @@ msgid "Adding files..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18621,6 +18750,15 @@ msgstr "Tvíteknir lyklar"
msgid "Custom BG Color"
msgstr "Tvíteknir lyklar"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+msgid "Prepare Templates"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Export template not found."
+msgstr ""
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18642,19 +18780,28 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Could not open template for export: \"%s\"."
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Invalid export template: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+msgid "Could not write file: \"%s\"."
msgstr ""
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Breyta Tengingu: "
+
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not read file: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+msgid "PWA"
msgstr ""
#: platform/javascript/export/export.cpp
@@ -18731,15 +18878,15 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr ""
#: platform/javascript/export/export.cpp
@@ -19014,9 +19161,26 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Could not open icon file \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Could not start xcrun executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Breyta Viðbót"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19032,18 +19196,71 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
msgid "No identity found."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Cannot sign file %s."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Allt úrvalið"
+
+#: platform/osx/export/export.cpp
+msgid "Could not start hdiutil executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Creating app bundle"
msgstr ""
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Breyta umbreytingu"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -19051,7 +19268,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -19092,6 +19309,15 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "Verkefna Stjóri"
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr ""
@@ -19390,6 +19616,10 @@ msgid "Debug Algorithm"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Failed to rename temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -19433,6 +19663,62 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Resources Modification"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Invalid identity type."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Invalid timestamp server."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Failed to remove temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19451,6 +19737,22 @@ msgid "Invalid product version:"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Failed to open executable file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Windows"
msgstr ""
@@ -19466,6 +19768,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -19579,7 +19885,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
@@ -20361,13 +20668,16 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
+msgid "Navpoly"
msgstr ""
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Anim DELETE-lyklar"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Travel Cost"
msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
@@ -21466,12 +21776,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -23910,6 +24214,16 @@ msgid "3D Physics"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Breyta Viðbót"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Breyta Viðbót"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -25243,7 +25557,7 @@ msgstr "Stillið breyting á:"
msgid "Refraction"
msgstr "Stillið breyting á:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -25319,8 +25633,14 @@ msgid "Visible Instance Count"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Sample Partition Type"
-msgstr ""
+#, fuzzy
+msgid "Sampling"
+msgstr "Val á kvarða"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
+msgstr "Stillið breyting á:"
#: scene/resources/navigation_mesh.cpp
msgid "Parsed Geometry Type"
@@ -25335,7 +25655,11 @@ msgid "Source Group Name"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
+msgid "Agents"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -25347,11 +25671,16 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Regions"
+msgstr "Afrita val"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -25363,6 +25692,10 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+msgid "Details"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -25379,7 +25712,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -25761,6 +26094,11 @@ msgid "Scenario"
msgstr ""
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Breyta Viðbót"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -25776,6 +26114,26 @@ msgstr ""
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Afrita val"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Afrita val"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Afrita val"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Breyta Tengingu: "
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/it.po b/editor/translations/it.po
index d7d47b9430..c529c06241 100644
--- a/editor/translations/it.po
+++ b/editor/translations/it.po
@@ -73,8 +73,8 @@ msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-05-30 16:17+0000\n"
-"Last-Translator: Alessandro Casalino <alessandro.casalino93@gmail.com>\n"
+"PO-Revision-Date: 2022-06-19 11:52+0000\n"
+"Last-Translator: Mirko <miknsop@gmail.com>\n"
"Language-Team: Italian <https://hosted.weblate.org/projects/godot-engine/"
"godot/it/>\n"
"Language: it\n"
@@ -82,7 +82,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.13-dev\n"
+"X-Generator: Weblate 4.13.1-dev\n"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
@@ -266,9 +266,10 @@ msgid "Data"
msgstr "Dati"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr "Reti"
@@ -372,8 +373,9 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Byte insufficienti per decodificarli o formato non valido."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
-msgstr "Input %i non valido (assente) nell'espressione"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
+msgstr "Input %d non valido (assente) nell'espressione"
#: core/math/expression.cpp
msgid "self can't be used because instance is null (not passed)"
@@ -416,6 +418,16 @@ msgstr "Coda Messaggi"
msgid "Max Size (KB)"
msgstr "Dimensione Massima (KB)"
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Modalità spostamento"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "Elimina Input"
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -595,7 +607,8 @@ msgstr "Descrizione"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "Esegui"
@@ -680,6 +693,10 @@ msgid "Main Run Args"
msgstr "Parametri Principali Eseguiti"
#: core/project_settings.cpp
+msgid "Scene Naming"
+msgstr "Nome Scena"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr "Cerca nelle Estensioni dei File"
@@ -687,18 +704,15 @@ msgstr "Cerca nelle Estensioni dei File"
msgid "Script Templates Search Path"
msgstr "Percorso di Ricerca dei Template di Script"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Controllo della versione"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+#, fuzzy
+msgid "Version Control Autoload On Startup"
msgstr "Autocaricamento all'Avvio"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Nome dell'estensione"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Controllo della versione"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -805,7 +819,8 @@ msgid "Quality"
msgstr "Qualità"
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
msgid "Filters"
msgstr "Filtri"
@@ -1072,6 +1087,7 @@ msgstr "Alta Qualità"
msgid "Blend Shape Max Buffer Size (KB)"
msgstr "Dimensione Massima Buffer del Blend Shape (KB)"
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Libere"
@@ -1088,7 +1104,7 @@ msgstr "Specchiate"
msgid "Time:"
msgstr "Tempo:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Valore:"
@@ -1332,8 +1348,73 @@ msgid "Remove this track."
msgstr "Rimuovi questa traccia."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
-msgstr "Tempo (s): "
+#, fuzzy
+msgid "Time (s):"
+msgstr "Tempo (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Posizione"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Rotazione"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "Scala:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "Tipo:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Template di esportazione non valido:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Easing:"
+msgstr "Easing"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "In-Handle:"
+msgstr "Imposta Maniglia"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Out-Handle:"
+msgstr "Imposta Maniglia"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "Stream"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Riavvia (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "End (s):"
+msgstr "Fade In (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Animazioni:"
#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
@@ -1551,8 +1632,9 @@ msgid "Add Method Track Key"
msgstr "Aggiungi una chiave a una traccia di chiamate metodi"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
-msgstr "Metodo non trovato nell'oggetto: "
+#, fuzzy
+msgid "Method not found in object:"
+msgstr "Metodo non trovato nell'oggetto:"
#: editor/animation_track_editor.cpp
msgid "Anim Move Keys"
@@ -2163,8 +2245,8 @@ msgid "Open"
msgstr "Apri"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Proprietari di:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
msgid ""
@@ -2468,7 +2550,7 @@ msgid "Bus Options"
msgstr "Opzioni Bus"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Duplica"
@@ -2520,8 +2602,9 @@ msgstr "Apri la disposizione di un bus audio"
msgid "There is no '%s' file."
msgstr "File \"%s\" assente."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "Disposizione"
#: editor/editor_audio_buses.cpp
@@ -2726,6 +2809,26 @@ msgid "Choose"
msgstr "Scegli"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Project export for platform:"
+msgstr "Esportazione del progetto per la piattaforma:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "Completato con errori."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "Completato con successo."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "Fallito."
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Memorizzazione file:"
@@ -2738,6 +2841,31 @@ msgid "Packing"
msgstr "Impacchettando"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Salva PCK"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "Impossibile creare la cartella."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Impossibile esportare i file del progetto"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Impossibile aprire il file in scrittura:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Salva ZIP"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2856,11 +2984,33 @@ msgstr "Modello di sviluppo personalizzato non trovato."
msgid "Custom release template not found."
msgstr "Modello di rilascio personalizzato non trovato."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "Gestisci i modelli d'esportazione"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "Il percorso di esportazione specificato non esiste:"
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "File del modello non trovato:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "Template di esportazione non valido:"
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+#, fuzzy
+msgid "PCK Embedding"
+msgstr "Padding"
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr ""
"Il PCK integrato non può essere più grande di 4 GiB nelle esportazioni a 32 "
@@ -3038,9 +3188,9 @@ msgid "Import"
msgstr "Importa"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Esporta"
@@ -4197,14 +4347,6 @@ msgid ""
msgstr ""
"Impossibile scrivere sul file '%s', file in uso, bloccato o mancano permessi."
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Scena"
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr "Nome Scena"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4319,6 +4461,10 @@ msgid "Default Color Picker Mode"
msgstr "Modalità di Scelta Colore Predefinita"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Controllo della versione"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "Nome Utente"
@@ -4346,6 +4492,10 @@ msgstr "Commuta la modalità senza distrazioni."
msgid "Add a new scene."
msgstr "Aggiungi una nuova scena."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Scena"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Va alla scena precedentemente aperta."
@@ -5033,12 +5183,15 @@ msgid "Selected node is not a Viewport!"
msgstr "Il nodo selezionato non è un Viewport!"
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr "Dimensione: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
+msgstr "Dimensione:"
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr "Pagina: "
+#, fuzzy
+msgid "Page:"
+msgstr "Pagina:"
#: editor/editor_properties_array_dict.cpp
#: editor/plugins/theme_editor_plugin.cpp
@@ -5135,6 +5288,11 @@ msgstr ""
"Per favore, aggiungerne una nel menù di esportazione o impostarne una già "
"esistente come eseguibile."
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Progetto"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Inserisci la logica dello script nel metodo _run()."
@@ -5388,7 +5546,9 @@ msgid "Draw Spaces"
msgstr "Disegna Spazi"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr "Navigazione"
@@ -5645,8 +5805,9 @@ msgid "Grid Division Level Min"
msgstr "Livello minimo di divisioni della griglia"
#: editor/editor_settings.cpp
+#, fuzzy
msgid "Grid Division Level Bias"
-msgstr ""
+msgstr "Livello di Bias di divisioni della griglia"
#: editor/editor_settings.cpp
msgid "Grid XZ Plane"
@@ -5796,8 +5957,9 @@ msgid "Bone Selected Color"
msgstr "Colore Osso Selezionato"
#: editor/editor_settings.cpp
+#, fuzzy
msgid "Bone IK Color"
-msgstr ""
+msgstr "Colore IK Osso"
#: editor/editor_settings.cpp
msgid "Bone Outline Color"
@@ -5927,10 +6089,12 @@ msgstr "Host"
msgid "Port"
msgstr "Porta"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Gestore dei progetti"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Sorting Order"
msgstr "Tipo di Ordinamento"
@@ -5944,8 +6108,9 @@ msgid "Keyword Color"
msgstr "Colore Parola Chiave"
#: editor/editor_settings.cpp
+#, fuzzy
msgid "Control Flow Keyword Color"
-msgstr ""
+msgstr "Colore Parola Chiave Controllo Flusso"
#: editor/editor_settings.cpp
msgid "Base Type Color"
@@ -6685,14 +6850,6 @@ msgid "Replace in Files"
msgstr "Sostituisci nei file"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "Trova: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "Sostituisci: "
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr "Sostituisci tutto (NESSUN ANNULLA)"
@@ -6808,7 +6965,6 @@ msgstr "No BPTC Se RGB"
#: scene/3d/cpu_particles.cpp scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/texture.cpp scene/resources/visual_shader.cpp
-#, fuzzy
msgid "Flags"
msgstr "Flags"
@@ -6820,13 +6976,12 @@ msgstr "Ripeti"
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
msgid "Filter"
msgstr "Filtro"
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp
-#, fuzzy
msgid "Mipmaps"
msgstr "Mipmaps"
@@ -7055,8 +7210,9 @@ msgid "Generating Lightmaps"
msgstr "Generando Lightmap"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
-msgstr "Generazione della Mesh: "
+#, fuzzy
+msgid "Generating for Mesh:"
+msgstr "Generazione della Mesh:"
#: editor/import/resource_importer_scene.cpp
msgid "Running Custom Script..."
@@ -7084,6 +7240,18 @@ msgid "Saving..."
msgstr "Salvataggio..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr "2D, Rileva 3D"
@@ -7100,8 +7268,9 @@ msgid "HDR Mode"
msgstr "Modalità HDR"
#: editor/import/resource_importer_texture.cpp
+#, fuzzy
msgid "BPTC LDR"
-msgstr ""
+msgstr "BPTC LDR"
#: editor/import/resource_importer_texture.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/cpu_particles_2d.cpp
@@ -7308,7 +7477,7 @@ msgstr "Locale"
#: editor/inspector_dock.cpp
msgid "Localization not available for current language."
-msgstr "Localizzazione non disponibile per la lingua attuale"
+msgstr "Localizzazione non disponibile per la lingua attuale."
#: editor/inspector_dock.cpp
msgid "Copy Properties"
@@ -7885,10 +8054,12 @@ msgstr "Opzioni dell'Onion Skinning"
msgid "Directions"
msgstr "Direzioni"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "Passato"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "Futuro"
@@ -8048,8 +8219,9 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr "Assegna l'animazione finale. Utile per le sotto-transizioni."
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
-msgstr "Transizione: "
+#, fuzzy
+msgid "Transition:"
+msgstr "Transizione:"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Play Mode:"
@@ -8065,11 +8237,6 @@ msgid "New name:"
msgstr "Nuovo nome:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "Scala:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "Fade In (s):"
@@ -8980,6 +9147,7 @@ msgstr "Crea ossa personalizzate a partire da uno o più nodi"
msgid "Clear Custom Bones"
msgstr "Cancella Ossa Personalizzate"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9043,6 +9211,10 @@ msgid "Preview Canvas Scale"
msgstr "Anteprima Dimensione Canvas"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "Disposizione"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr "Maschera di traslazione per inserimento chiavi."
@@ -9373,8 +9545,9 @@ msgid "Icon"
msgstr "Icona"
#: editor/plugins/item_list_editor_plugin.cpp
+#, fuzzy
msgid "ID"
-msgstr ""
+msgstr "ID"
#: editor/plugins/item_list_editor_plugin.cpp
#: scene/resources/default_theme/default_theme.cpp
@@ -9821,8 +9994,9 @@ msgid "Volume"
msgstr "Volume"
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr "Sorgente Emissione: "
+#, fuzzy
+msgid "Emission Source:"
+msgstr "Sorgente Emissione:"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
@@ -10055,6 +10229,7 @@ msgid "Points"
msgstr "Punti"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr "Poligoni"
@@ -10212,13 +10387,6 @@ msgid "Instance:"
msgstr "Istanza:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "Tipo:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr "Apri nell'editor"
@@ -10227,10 +10395,6 @@ msgstr "Apri nell'editor"
msgid "Load Resource"
msgstr "Carica risorsa"
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr "ResourcePreloader"
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr "Ribalta Portali"
@@ -10400,6 +10564,7 @@ msgstr "Script precedente"
#: editor/plugins/script_editor_plugin.cpp
#: scene/resources/default_theme/default_theme.cpp
+#, fuzzy
msgid "File"
msgstr "File"
@@ -10927,13 +11092,17 @@ msgstr "Ruota"
msgid "Translate"
msgstr "Trasla"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr "Scalatura: "
+#, fuzzy
+msgid "Scaling:"
+msgstr "Scalatura:"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr "Traslazione: "
+#, fuzzy
+msgid "Translating:"
+msgstr "Traslazione:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -10956,11 +11125,6 @@ msgid "Yaw:"
msgstr "Imbardata:"
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr "Dimensione:"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr "Oggetti disegnati:"
@@ -10985,6 +11149,7 @@ msgid "Vertices:"
msgstr "Vertici:"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "FPS: %d (%s ms)"
msgstr "FPS: %d (%s ms)"
@@ -11226,7 +11391,7 @@ msgstr "Orbita la visuale in giù"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View Left"
-msgstr "Orbita la visuale in su"
+msgstr "Orbita la visuale a sinistra"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orbit View Right"
@@ -11235,11 +11400,12 @@ msgstr "Orbita la visuale a destra"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
msgid "Orbit View Up"
-msgstr "Vista frontale"
+msgstr "Orbita la visuale in sù"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Orbit View 180"
-msgstr ""
+msgstr "Orbita la visuale 180"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal View"
@@ -11456,7 +11622,8 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr "Geometria non valida, impossibile sostituirla con una mesh."
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+#, fuzzy
+msgid "Convert to MeshInstance2D"
msgstr "Converti in Mesh2D"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11488,16 +11655,19 @@ msgid "Sprite"
msgstr "Sprite"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr "Semplificazione: "
+#, fuzzy
+msgid "Simplification:"
+msgstr "Semplificazione:"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
-msgstr "Rimpicciolisci (Pixels): "
+#, fuzzy
+msgid "Shrink (Pixels):"
+msgstr "Rimpicciolisci (Pixels):"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
-msgstr "Ingrandisci (Pixels): "
+#, fuzzy
+msgid "Grow (Pixels):"
+msgstr "Ingrandisci (Pixels):"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Update Preview"
@@ -12438,8 +12608,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr "Seleziona la precedente forma, sottotile, o Tile."
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr "Regione"
@@ -12770,7 +12939,6 @@ msgstr "Mattonella Selezionata"
#: scene/gui/nine_patch_rect.cpp scene/gui/texture_rect.cpp
#: scene/resources/material.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
-#, fuzzy
msgid "Texture"
msgstr "Texture"
@@ -12925,8 +13093,9 @@ msgid "Select SSH private key path"
msgstr "Seleziona il percorso della chiave privata SSH"
#: editor/plugins/version_control_editor_plugin.cpp
+#, fuzzy
msgid "SSH Passphrase"
-msgstr ""
+msgstr "Frase di accesso SSH"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Detect new changes"
@@ -13005,8 +13174,9 @@ msgid "Pull"
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
+#, fuzzy
msgid "Push"
-msgstr ""
+msgstr "Push"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Force Push"
@@ -13029,8 +13199,9 @@ msgid "Typechange"
msgstr "Cambio di tipo"
#: editor/plugins/version_control_editor_plugin.cpp
+#, fuzzy
msgid "Unmerged"
-msgstr ""
+msgstr "Non mescolato"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "View:"
@@ -13941,49 +14112,26 @@ msgid "Runnable"
msgstr "Eseguibile"
#: editor/project_export.cpp
+#, fuzzy
msgid "Export the project for all the presets defined."
-msgstr ""
+msgstr "Esporta il progetto per tutti i preset definiti."
#: editor/project_export.cpp
+#, fuzzy
msgid "All presets must have an export path defined for Export All to work."
msgstr ""
+"Tutti i preset devono avere un percorso di esportazione definito affinché "
+"\"Esporta tutto\" funzioni."
#: editor/project_export.cpp
msgid "Delete preset '%s'?"
msgstr "Eliminare preset \"%s\"?"
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-"Non è stato possibile esportare il progetto per la piattaforma \"%s\".\n"
-"I template di esportazione sembrano essere mancanti o non validi."
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-"Non è stato possibile esportare il progetto per la piattaforma \"%s\".\n"
-"Questo potrebbe essere dovuto a un problema di configurazione nel preset di "
-"esportazione o nelle impostazioni di esportazione."
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "Esportando Tutto"
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr "Il percorso di esportazione specificato non esiste:"
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-"I template di esportazione per questa piattaforma sono mancanti/corrotti:"
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr "Percorso di Esportazione"
@@ -14096,12 +14244,12 @@ msgstr "Maggiori Informazioni..."
#: editor/project_export.cpp
#, fuzzy
msgid "Export PCK/Zip..."
-msgstr "Esporta PCK/Zip"
+msgstr "Esporta PCK/Zip..."
#: editor/project_export.cpp
#, fuzzy
msgid "Export Project..."
-msgstr "Esporta Progetto"
+msgstr "Esporta Progetto..."
#: editor/project_export.cpp
msgid "Export All"
@@ -14110,12 +14258,12 @@ msgstr "Esporta Tutto"
#: editor/project_export.cpp
#, fuzzy
msgid "Choose an export mode:"
-msgstr "Si prega di scegliere una cartella vuota."
+msgstr "Si prega di scegliere una cartella vuota:"
#: editor/project_export.cpp
#, fuzzy
msgid "Export All..."
-msgstr "Esporta Tutto"
+msgstr "Esporta Tutto..."
#: editor/project_export.cpp editor/project_manager.cpp
msgid "ZIP File"
@@ -14131,6 +14279,11 @@ msgid "Export templates for this platform are missing:"
msgstr "Le export templates per questa piattaforma sono mancanti:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Fondatori del progetto"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "Gestisci template d'esportazione"
@@ -15679,8 +15832,9 @@ msgid "Attach Node Script"
msgstr "Allega Script Nodo"
#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr "Remoto "
+#, fuzzy
+msgid "Remote %s:"
+msgstr "Remoto %s:"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -16208,7 +16362,7 @@ msgstr ""
#: main/main.cpp
msgid "stdout"
-msgstr ""
+msgstr "stdout"
#: main/main.cpp
msgid "Print FPS"
@@ -16240,7 +16394,7 @@ msgstr ""
#: main/main.cpp
msgid "iOS"
-msgstr ""
+msgstr "iOS"
#: main/main.cpp
msgid "Hide Home Indicator"
@@ -16253,7 +16407,7 @@ msgstr "Dispositivi Input"
#: main/main.cpp
#, fuzzy
msgid "Pointing"
-msgstr "Punto"
+msgstr "Puntamento"
#: main/main.cpp
msgid "Touch Delay"
@@ -16261,7 +16415,7 @@ msgstr "Delay Tocco"
#: main/main.cpp servers/visual_server.cpp
msgid "GLES3"
-msgstr ""
+msgstr "GLES3"
#: main/main.cpp servers/visual_server.cpp
msgid "Shaders"
@@ -16410,7 +16564,7 @@ msgstr ""
#: modules/csg/csg_gizmos.cpp
msgid "CSG"
-msgstr ""
+msgstr "CSG"
#: modules/csg/csg_gizmos.cpp
msgid "Change Cylinder Radius"
@@ -16499,7 +16653,7 @@ msgstr "Lati Anello"
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
msgid "Polygon"
msgstr "Poligono"
@@ -16663,8 +16817,9 @@ msgid "Disabled GDNative Singleton"
msgstr "Singleton GDNative disabilitato"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
-msgstr "Librerie: "
+#, fuzzy
+msgid "Libraries:"
+msgstr "Librerie:"
#: modules/gdnative/nativescript/nativescript.cpp
msgid "Class Name"
@@ -17063,7 +17218,6 @@ msgid "Use In Baked Light"
msgstr "Utilizza in Luce Preprocessata"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr "Cella"
@@ -17089,6 +17243,19 @@ msgstr "Centra Z"
msgid "Mask"
msgstr "Maschera"
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Navigazione"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Sensazione Navigazione"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Piano Successivo"
@@ -17298,12 +17465,14 @@ msgid "Oversample"
msgstr ""
#: modules/mobile_vr/mobile_vr_interface.cpp
+#, fuzzy
msgid "K1"
-msgstr ""
+msgstr "K1"
#: modules/mobile_vr/mobile_vr_interface.cpp
+#, fuzzy
msgid "K2"
-msgstr ""
+msgstr "K2"
#: modules/mono/csharp_script.cpp
msgid "Class name can't be a reserved keyword"
@@ -17500,16 +17669,18 @@ msgstr ""
"memoria di lavoro del nodo! Si prega di correggere il nodo."
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
-msgstr "Il nodo ha ritornato una sequenza di output invalida: "
+#, fuzzy
+msgid "Node returned an invalid sequence output:"
+msgstr "Il nodo ha ritornato una sequenza di output invalida:"
#: modules/visual_script/visual_script.cpp
msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr "Trovato bit di sequenza ma non il nodo nello stack, segnalare il bug!"
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
-msgstr "Overflow dello stack con profondità dello stack: "
+#, fuzzy
+msgid "Stack overflow with stack depth:"
+msgstr "Overflow dello stack con profondità dello stack:"
#: modules/visual_script/visual_script.cpp
#, fuzzy
@@ -17837,11 +18008,12 @@ msgstr "Modifica membro"
#: scene/resources/visual_shader.cpp
#, fuzzy
msgid "Expression"
-msgstr "Cambia espressione"
+msgstr "Espressione"
#: modules/visual_script/visual_script_flow_control.cpp
+#, fuzzy
msgid "Return"
-msgstr ""
+msgstr "Ritorno"
#: modules/visual_script/visual_script_flow_control.cpp
#, fuzzy
@@ -17862,8 +18034,9 @@ msgid "if (cond) is:"
msgstr "if (cond) is:"
#: modules/visual_script/visual_script_flow_control.cpp
+#, fuzzy
msgid "While"
-msgstr ""
+msgstr "While"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "while (cond):"
@@ -17878,16 +18051,18 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
-msgstr "Il tipo di input non è iterabile: "
+#, fuzzy
+msgid "Input type not iterable:"
+msgstr "Il tipo di input non è iterabile:"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Iterator became invalid"
msgstr "L'iteratore è diventato invalido"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
-msgstr "L'iteratore è diventato invalido: "
+#, fuzzy
+msgid "Iterator became invalid:"
+msgstr "L'iteratore è diventato invalido:"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Sequence"
@@ -18046,12 +18221,14 @@ msgid "Operator"
msgstr "Operatore"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ": Argomento invalido di tipo: "
+#, fuzzy
+msgid "Invalid argument of type:"
+msgstr "Argomento invalido di tipo:"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ": Argomenti invalidi: "
+#, fuzzy
+msgid "Invalid arguments:"
+msgstr "Argomenti invalidi:"
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -18062,12 +18239,14 @@ msgid "Var Name"
msgstr "Var Nome"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
-msgstr "VariableGet non trovato nello script: "
+#, fuzzy
+msgid "VariableGet not found in script:"
+msgstr "VariableGet non trovato nello script:"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
-msgstr "VariableSet non trovato nello script: "
+#, fuzzy
+msgid "VariableSet not found in script:"
+msgstr "VariableSet non trovato nello script:"
#: modules/visual_script/visual_script_nodes.cpp
msgid "Preload"
@@ -18169,8 +18348,9 @@ msgid "Search VisualScript"
msgstr "Ricerca VisualScript"
#: modules/visual_script/visual_script_yield_nodes.cpp
+#, fuzzy
msgid "Yield"
-msgstr ""
+msgstr "Yield"
#: modules/visual_script/visual_script_yield_nodes.cpp
msgid "Wait"
@@ -18195,17 +18375,17 @@ msgstr "Tempo Di Attesa"
#: modules/visual_script/visual_script_yield_nodes.cpp
#, fuzzy
msgid "WaitSignal"
-msgstr "Segnale"
+msgstr "WaitSignal"
#: modules/visual_script/visual_script_yield_nodes.cpp
#, fuzzy
msgid "WaitNodeSignal"
-msgstr "Segnale"
+msgstr "WaitNodeSignal"
#: modules/visual_script/visual_script_yield_nodes.cpp
#, fuzzy
msgid "WaitInstanceSignal"
-msgstr "Istanza"
+msgstr "WaitInstanceSignal"
#: modules/webrtc/webrtc_data_channel.cpp
#, fuzzy
@@ -18584,10 +18764,6 @@ msgid "Could not execute on device."
msgstr "Impossibile eseguire sul dispositivo."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr "Impossibile trovare lo strumento \"apksigner\"."
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18717,12 +18893,17 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Segnale"
+
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
"Non è stato possibile trovare \"apksigner\".\n"
"Verificare che il comando sia disponibile nella directory degli strumenti di "
@@ -18742,6 +18923,11 @@ msgid "Could not find keystore, unable to export."
msgstr "Non è stato possibile trovare keystore, impossible esportare."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "Non è stato possibile avviare l'eseguibile apksigner."
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr "'apksigner' ha restituito con errore #%d"
@@ -18772,8 +18958,8 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "Nome file non valido! L'APK Android richiede l'estensione *.apk."
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
-msgstr "Formato d'esportazione non supportato!\n"
+msgid "Unsupported export format!"
+msgstr "Formato d'esportazione non supportato!"
#: platform/android/export/export_plugin.cpp
msgid ""
@@ -18785,27 +18971,27 @@ msgstr ""
"\"Progetto\"."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
-"Versione build di Android non coerente:\n"
-" Template installato: %s\n"
-" Versione Godot: %s\n"
-"Per favore, reinstalla il build template di Android dal menu \"Progetto\"."
+"Versione build di Android non coerente: Template installato: %s, Versione "
+"Godot: %s. Per favore, reinstalla il build template di Android dal menu "
+"\"Progetto\"."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
"Impossibile sovrascrivere i file res://android/build/res/*.xml con il nome "
"del progetto"
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
-msgstr "Impossibile esportare i file del progetto in un progetto gradle\n"
+#, fuzzy
+msgid "Could not export project files to gradle project."
+msgstr "Impossibile esportare i file del progetto in un progetto gradle."
#: platform/android/export/export_plugin.cpp
msgid "Could not write expansion package file!"
@@ -18816,8 +19002,9 @@ msgid "Building Android Project (gradle)"
msgstr "Compilazione di un progetto Android (gradle)"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
"Compilazione del progetto Android fallita, controlla l'output per vedere gli "
@@ -18838,7 +19025,8 @@ msgstr ""
"directory del progetto gradle per gli output."
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+#, fuzzy
+msgid "Package not found: \"%s\"."
msgstr "Pacchetto non trovato: \"%s\""
#: platform/android/export/export_plugin.cpp
@@ -18846,17 +19034,14 @@ msgid "Creating APK..."
msgstr "Creazione APK..."
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
-msgstr ""
-"Impossibile trovare il template APK per l'esportazione:\n"
-"%s"
+#, fuzzy
+msgid "Could not find template APK to export: \"%s\"."
+msgstr "Impossibile trovare il template APK per l'esportazione: \"%s\"."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -18870,7 +19055,8 @@ msgid "Adding files..."
msgstr "Aggiungendo file..."
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+#, fuzzy
+msgid "Could not export project files."
msgstr "Impossibile esportare i file del progetto"
#: platform/android/export/export_plugin.cpp
@@ -19113,6 +19299,17 @@ msgstr "Taglia nodi"
msgid "Custom BG Color"
msgstr "Taglia nodi"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "Gestisci i modelli d'esportazione"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Modello di rilascio personalizzato non trovato."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -19135,22 +19332,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Esegui il codice HTML esportato nel browser di sistema predefinito."
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
msgstr "Impossibile aprire il template per l'esportazione:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
msgstr "Template di esportazione non valido:"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+#, fuzzy
+msgid "Could not write file: \"%s\"."
msgstr "Impossibile scrivere il file:"
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Imposta Margine"
+
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+#, fuzzy
+msgid "Could not read file: \"%s\"."
msgstr "Impossibile leggere il file:"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "Separazione:"
@@ -19225,20 +19435,23 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+#, fuzzy
+msgid "Could not read HTML shell: \"%s\"."
msgstr "Impossibile leggere la shell HTML:"
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+#, fuzzy
+msgid "Could not create HTTP server directory: %s."
msgstr "Impossibile creare la directory per il server HTTP:"
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+#, fuzzy
+msgid "Error starting HTTP server: %d."
msgstr "Errore all'avvio del server HTTP:"
#: platform/javascript/export/export.cpp
msgid "Web"
-msgstr ""
+msgstr "Web"
#: platform/javascript/export/export.cpp
msgid "HTTP Host"
@@ -19534,9 +19747,28 @@ msgid "Apple Team ID"
msgstr "ID Apple Team"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Impossibile esportare i file del progetto"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "Impossibile avviare l'eseguibile xcrun."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Localizzazione"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19552,20 +19784,76 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "Nessuna icona trovata."
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Errore nel salvataggio del file: %s"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Direzione"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "Impossibile avviare l'eseguibile hdiutil."
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "Creando la miniatura"
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+#, fuzzy
+msgid "Could not find template app to export: \"%s\"."
msgstr "Impossibile trovare il template dell'app per l'esportazione:"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Template di esportazione non valido:"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -19573,7 +19861,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -19614,6 +19902,16 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "Proiezione"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr "Impossibile aprire il file da leggere dal percorso \"%s\"."
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr "Identificatore del bundle non valido:"
@@ -19751,7 +20049,7 @@ msgstr "Nome Visualizzato del Publisher"
#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Product GUID"
-msgstr "GUID prodotto invalido."
+msgstr "GUID del prodotto"
#: platform/uwp/export/export.cpp
#, fuzzy
@@ -19923,12 +20221,12 @@ msgstr ""
#: platform/uwp/export/export.cpp
msgid "UWP"
-msgstr ""
+msgstr "UWP"
#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "Signtool"
-msgstr "Segnale"
+msgstr "Signtool"
#: platform/uwp/export/export.cpp
msgid "Debug Certificate"
@@ -19940,6 +20238,11 @@ msgid "Debug Algorithm"
msgstr "Debugger"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Impossibile rimuovere il file temporaneo:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -19987,6 +20290,70 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Rotazione Casuale:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "Non è stato possibile trovare keystore, impossible esportare."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "Non è stato possibile trovare keystore, impossible esportare."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "Non è stato possibile trovare keystore, impossible esportare."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "Non è stato possibile trovare keystore, impossible esportare."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Identificatore non valido:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Nome non valido."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "Impossibile rimuovere il file temporaneo:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20005,27 +20372,47 @@ msgid "Invalid product version:"
msgstr "Versione prodotto non valida:"
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Estensione non valida."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Windows"
-msgstr "Nuova Finestra"
+msgstr "Windows"
#: platform/windows/export/export.cpp
msgid "Rcedit"
-msgstr ""
+msgstr "Rcedit"
#: platform/windows/export/export.cpp
msgid "Osslsigncode"
-msgstr ""
+msgstr "Osslsigncode"
#: platform/windows/export/export.cpp
msgid "Wine"
+msgstr "Wine"
+
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
msgstr ""
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
msgid "Frames"
-msgstr "Fotogramma %"
+msgstr "Fotogrammi"
#: scene/2d/animated_sprite.cpp
msgid ""
@@ -20100,8 +20487,9 @@ msgstr "Aggiorna Anteprima"
#: scene/2d/area_2d.cpp scene/2d/cpu_particles_2d.cpp scene/3d/area.cpp
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
msgid "Gravity"
-msgstr ""
+msgstr "Gravità"
#: scene/2d/area_2d.cpp scene/3d/area.cpp
#, fuzzy
@@ -20148,7 +20536,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Scegli la Distanza:"
@@ -20156,7 +20545,7 @@ msgstr "Scegli la Distanza:"
#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
-msgstr "Animazione"
+msgstr "Attenuazione"
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
@@ -20207,8 +20596,9 @@ msgid "Process Mode"
msgstr "Modalità spostamento"
#: scene/2d/camera_2d.cpp
+#, fuzzy
msgid "Limit"
-msgstr ""
+msgstr "Limite"
#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -20559,13 +20949,14 @@ msgstr "Assegna"
#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Direction"
-msgstr "Direzioni"
+msgstr "Direzione"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
+#, fuzzy
msgid "Spread"
-msgstr ""
+msgstr "Propagazione"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -20635,8 +21026,9 @@ msgstr ""
#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
#: scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
+#, fuzzy
msgid "Damping"
-msgstr ""
+msgstr "Smorzamento"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -20651,8 +21043,9 @@ msgstr "Dividi Curva"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
msgid "Angle"
-msgstr ""
+msgstr "Angolo"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -20761,12 +21154,12 @@ msgstr "Nodo A e Nodo B devono essere PhysicsBody2D diversi"
#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
#, fuzzy
msgid "Node A"
-msgstr "Nodo"
+msgstr "Nodo A"
#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
#, fuzzy
msgid "Node B"
-msgstr "Nodo"
+msgstr "Nodo B"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
#: scene/3d/light.cpp scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
@@ -20785,8 +21178,9 @@ msgstr ""
#: scene/2d/joints_2d.cpp scene/resources/animation.cpp
#: scene/resources/ray_shape.cpp scene/resources/segment_shape_2d.cpp
+#, fuzzy
msgid "Length"
-msgstr ""
+msgstr "Lunghezza"
#: scene/2d/joints_2d.cpp
#, fuzzy
@@ -20822,8 +21216,9 @@ msgstr "TextureRegion"
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
#: scene/3d/light.cpp scene/resources/environment.cpp
#: scene/resources/material.cpp scene/resources/sky.cpp
+#, fuzzy
msgid "Energy"
-msgstr ""
+msgstr "Energia"
#: scene/2d/light_2d.cpp
msgid "Z Min"
@@ -20850,7 +21245,7 @@ msgstr ""
#: scene/2d/light_2d.cpp scene/3d/light.cpp scene/resources/style_box.cpp
#, fuzzy
msgid "Shadow"
-msgstr "Shader"
+msgstr "Ombra"
#: scene/2d/light_2d.cpp
#, fuzzy
@@ -20900,13 +21295,14 @@ msgid "Default Color"
msgstr "Predefinito"
#: scene/2d/line_2d.cpp scene/resources/texture.cpp
+#, fuzzy
msgid "Fill"
-msgstr ""
+msgstr "Riempimento"
#: scene/2d/line_2d.cpp scene/resources/texture.cpp
#, fuzzy
msgid "Gradient"
-msgstr "Gradiente Modificato"
+msgstr "Gradiente"
#: scene/2d/line_2d.cpp
#, fuzzy
@@ -20952,8 +21348,9 @@ msgid "Antialiased"
msgstr "Inizializza"
#: scene/2d/multimesh_instance_2d.cpp scene/3d/multimesh_instance.cpp
+#, fuzzy
msgid "Multimesh"
-msgstr ""
+msgstr "Multimesh"
#: scene/2d/navigation_2d.cpp scene/3d/baked_lightmap.cpp
#: scene/3d/navigation.cpp scene/animation/root_motion_view.cpp
@@ -21024,16 +21421,19 @@ msgstr ""
"poligono."
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-"NavigationPolygonInstance deve essere figlio o nipote di un nodo "
-"Navigation2D. Esso fornisce solamente dati di navigazione."
-
-#: scene/2d/navigation_polygon.cpp
+#, fuzzy
msgid "Navpoly"
-msgstr ""
+msgstr "Navpoly"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "In Centro In Basso"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "Spostamento"
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
@@ -21209,7 +21609,7 @@ msgstr "Inizializza"
#: scene/resources/physics_material.cpp
#, fuzzy
msgid "Friction"
-msgstr "Funzioni"
+msgstr "Frizione"
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp scene/3d/physics_body.cpp
#: scene/resources/physics_material.cpp
@@ -21237,18 +21637,19 @@ msgstr ""
"Modifica invece la dimensione nelle forme di collisione figlie."
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
+#, fuzzy
msgid "Mass"
-msgstr ""
+msgstr "Massa"
#: scene/2d/physics_body_2d.cpp
#, fuzzy
msgid "Inertia"
-msgstr "Verticale:"
+msgstr "Inerzia"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
msgid "Weight"
-msgstr "Luce"
+msgstr "Peso"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
msgid "Gravity Scale"
@@ -21289,8 +21690,9 @@ msgid "Damp"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
+#, fuzzy
msgid "Angular"
-msgstr ""
+msgstr "Angolare"
#: scene/2d/physics_body_2d.cpp
msgid "Applied Forces"
@@ -21324,7 +21726,7 @@ msgstr ""
#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
#, fuzzy
msgid "Normal"
-msgstr "Formato"
+msgstr "Normale"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
@@ -21705,7 +22107,7 @@ msgstr ""
#: servers/audio/effects/audio_effect_filter.cpp
#, fuzzy
msgid "dB"
-msgstr "B"
+msgstr "dB"
#: scene/3d/audio_stream_player_3d.cpp
#, fuzzy
@@ -21785,7 +22187,6 @@ msgid "Default Texels Per Unit"
msgstr "Tema Predefinito"
#: scene/3d/baked_lightmap.cpp scene/resources/texture.cpp
-#, fuzzy
msgid "Atlas"
msgstr "Atlas"
@@ -21826,7 +22227,7 @@ msgstr "Indenta a destra"
#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
#, fuzzy
msgid "Propagation"
-msgstr "Navigazione"
+msgstr "Propagazione"
#: scene/3d/baked_lightmap.cpp
msgid "Image Path"
@@ -21858,7 +22259,7 @@ msgstr "Traccia di proprietà"
#: scene/3d/camera.cpp
#, fuzzy
msgid "Projection"
-msgstr "Progetto"
+msgstr "Proiezione"
#: scene/3d/camera.cpp
msgid "FOV"
@@ -21872,7 +22273,7 @@ msgstr "Scostamento della griglia:"
#: scene/3d/camera.cpp
#, fuzzy
msgid "Near"
-msgstr "Più vicino"
+msgstr "Vicino"
#: scene/3d/camera.cpp
msgid "Far"
@@ -21885,7 +22286,7 @@ msgstr ""
#: servers/physics_server.cpp
#, fuzzy
msgid "Margin"
-msgstr "Imposta Margine"
+msgstr "Margine"
#: scene/3d/camera.cpp
#, fuzzy
@@ -22014,7 +22415,7 @@ msgstr ""
#: scene/3d/cull_instance.cpp servers/visual_server.cpp
#, fuzzy
msgid "Portals"
-msgstr "Ribalta orizzontalmente"
+msgstr "Portali"
#: scene/3d/cull_instance.cpp
#, fuzzy
@@ -22272,14 +22673,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-"NavigationMeshInstance deve essere un figlio o nipote di un nodo Navigation. "
-"Fornisce solamente dati per la navigazione."
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
#, fuzzy
msgid "NavMesh"
@@ -22633,12 +23026,12 @@ msgstr ""
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Upper"
-msgstr "Maiuscolo"
+msgstr "Superiore"
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Lower"
-msgstr "Minuscolo"
+msgstr "Minore"
#: scene/3d/physics_joint.cpp
msgid "Motor"
@@ -22971,9 +23364,8 @@ msgid "Roomlist"
msgstr ""
#: scene/3d/room_manager.cpp servers/visual_server.cpp
-#, fuzzy
msgid "PVS"
-msgstr "FPS"
+msgstr "PVS"
#: scene/3d/room_manager.cpp
#, fuzzy
@@ -23271,7 +23663,7 @@ msgstr "Funzioni"
#: scene/3d/vehicle_body.cpp
#, fuzzy
msgid "Suspension"
-msgstr "Cambia espressione"
+msgstr "Sospensione"
#: scene/3d/vehicle_body.cpp
#, fuzzy
@@ -23285,7 +23677,7 @@ msgstr ""
#: scene/3d/visual_instance.cpp scene/resources/navigation_mesh.cpp
#, fuzzy
msgid "Geometry"
-msgstr "Riprova"
+msgstr "Geometria"
#: scene/3d/visual_instance.cpp
#, fuzzy
@@ -23658,7 +24050,7 @@ msgstr ""
#: scene/gui/base_button.cpp scene/gui/shortcut.cpp
#, fuzzy
msgid "Shortcut"
-msgstr "Scorciatoie"
+msgstr "Scorciatoia"
#: scene/gui/base_button.cpp
#, fuzzy
@@ -24498,11 +24890,12 @@ msgstr ""
#: scene/gui/texture_progress.cpp
#, fuzzy
msgid "Fill Mode"
-msgstr "Modalità Riproduzione:"
+msgstr "Modalità di riempimento"
#: scene/gui/texture_progress.cpp scene/resources/material.cpp
+#, fuzzy
msgid "Tint"
-msgstr ""
+msgstr "Tinta"
#: scene/gui/texture_progress.cpp
msgid "Radial Fill"
@@ -24516,7 +24909,7 @@ msgstr "Inizializza"
#: scene/gui/texture_progress.cpp
#, fuzzy
msgid "Fill Degrees"
-msgstr "Ruotando di %s gradi."
+msgstr "Gradi di Riempimento"
#: scene/gui/texture_progress.cpp scene/resources/primitive_meshes.cpp
#, fuzzy
@@ -25004,6 +25397,16 @@ msgid "3D Physics"
msgstr "Fisica"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Navigazione"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Navigazione"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -25390,7 +25793,7 @@ msgstr "Chiamato Separatore"
#: scene/resources/default_theme/default_theme.cpp
#, fuzzy
msgid "Font Separator"
-msgstr "Operatore colore."
+msgstr "Separatore di caratteri"
#: scene/resources/default_theme/default_theme.cpp
#, fuzzy
@@ -25400,7 +25803,7 @@ msgstr "Colore Osso 1"
#: scene/resources/default_theme/default_theme.cpp
#, fuzzy
msgid "Font Color Separator"
-msgstr "Operatore colore."
+msgstr "Separatore del colore del carattere"
#: scene/resources/default_theme/default_theme.cpp
#, fuzzy
@@ -25928,8 +26331,9 @@ msgid "Sky Contribution"
msgstr "Condizione"
#: scene/resources/environment.cpp
+#, fuzzy
msgid "Fog"
-msgstr ""
+msgstr "Nebbia"
#: scene/resources/environment.cpp
#, fuzzy
@@ -26252,7 +26656,7 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
msgid "Disable Ambient Light"
-msgstr "Indenta a destra"
+msgstr "Disattiva la luce ambientale"
#: scene/resources/material.cpp
#, fuzzy
@@ -26432,7 +26836,7 @@ msgstr "Trasmissione"
msgid "Refraction"
msgstr "Separazione:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -26515,7 +26919,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "Scalatura:"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "Imposta Tipo di Variabile"
#: scene/resources/navigation_mesh.cpp
@@ -26532,8 +26941,14 @@ msgid "Source Group Name"
msgstr "Sorgente"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
-msgstr ""
+#, fuzzy
+msgid "Cells"
+msgstr "Cella"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "Argomenti Scena Principale:"
#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
@@ -26545,11 +26960,16 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Regions"
+msgstr "Regione"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Merge Size"
msgstr "Unisci da Scena"
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26563,6 +26983,11 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Details"
+msgstr "Carica i predefiniti"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Sample Distance"
msgstr "Scegli la Distanza:"
@@ -26580,7 +27005,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -26996,6 +27421,11 @@ msgid "Scenario"
msgstr "Scena"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Navigazione"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -27013,6 +27443,26 @@ msgstr "Lineare sinistra"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Passo Predefinito dei Float"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Anteprima Predefinita"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Testing"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Modifica una connessione:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
@@ -27227,7 +27677,7 @@ msgstr ""
#: servers/audio/effects/audio_effect_stereo_enhance.cpp
#, fuzzy
msgid "Time Pullout (ms)"
-msgstr "Timeout."
+msgstr "Estrazione Temporale (ms)"
#: servers/audio/effects/audio_effect_stereo_enhance.cpp
msgid "Surround"
diff --git a/editor/translations/ja.po b/editor/translations/ja.po
index 6481a3d1d2..1ae3c9cf8c 100644
--- a/editor/translations/ja.po
+++ b/editor/translations/ja.po
@@ -38,12 +38,14 @@
# Hiroki Taira <hrk4649@gmail.com>, 2022.
# Juto <mvobujd237@gmail.com>, 2022.
# jp.owo.Manda <admin@alterbaum.net>, 2022.
+# KokiOgawa <mupimupicandy@gmail.com>, 2022.
+# cacapon <takuma.tsubo@amazingengine.co.jp>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-05-22 05:53+0000\n"
+"PO-Revision-Date: 2022-06-06 01:50+0000\n"
"Last-Translator: nitenook <admin@alterbaum.net>\n"
"Language-Team: Japanese <https://hosted.weblate.org/projects/godot-engine/"
"godot/ja/>\n"
@@ -80,7 +82,7 @@ msgstr "コンãƒã‚¸ã‚¿ãƒ¼ã§åž‚ç›´åŒæœŸã™ã‚‹"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Delta Smoothing"
-msgstr ""
+msgstr "デルタスムージング"
#: core/bind/core_bind.cpp
msgid "Low Processor Usage Mode"
@@ -166,7 +168,7 @@ msgstr "エディターã®ãƒ’ント"
#: core/bind/core_bind.cpp
msgid "Print Error Messages"
-msgstr ""
+msgstr "エラーメッセージを表示"
#: core/bind/core_bind.cpp
#, fuzzy
@@ -217,7 +219,7 @@ msgstr "メモリー"
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
#: servers/visual_server.cpp
msgid "Limits"
-msgstr ""
+msgstr "制é™"
#: core/command_queue_mt.cpp
msgid "Command Queue"
@@ -240,9 +242,10 @@ msgid "Data"
msgstr "データ"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯"
@@ -256,7 +259,7 @@ msgstr "ページサイズ"
#: core/io/file_access_network.cpp
msgid "Page Read Ahead"
-msgstr ""
+msgstr "ページã®å…ˆèª­ã¿"
#: core/io/http_client.cpp
msgid "Blocking Mode Enabled"
@@ -323,8 +326,9 @@ msgid "Data Array"
msgstr "データé…列"
#: core/io/stream_peer_ssl.cpp
+#, fuzzy
msgid "Blocking Handshake"
-msgstr ""
+msgstr "ãƒãƒ³ãƒ‰ã‚·ã‚§ã‚¤ã‚¯ã‚’阻止ã™ã‚‹ã“ã¨"
#: core/io/udp_server.cpp
msgid "Max Pending Connections"
@@ -346,7 +350,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "デコードã™ã‚‹ã«ã¯ãƒã‚¤ãƒˆãŒè¶³ã‚Šãªã„ã‹ã€ã¾ãŸã¯ç„¡åйãªå½¢å¼ã§ã™ã€‚"
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "å¼ä¸­ã®ç„¡åйãªå…¥åŠ› %i (渡ã•れã¦ã„ã¾ã›ã‚“)"
#: core/math/expression.cpp
@@ -390,6 +395,16 @@ msgstr "メッセージキュー"
msgid "Max Size (KB)"
msgstr "最大サイズ (KB)"
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "移動モード"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "入力を削除"
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -571,7 +586,8 @@ msgstr "説明"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "実行"
@@ -590,15 +606,16 @@ msgstr "stderrを無効化"
#: core/project_settings.cpp
msgid "Use Hidden Project Data Directory"
-msgstr ""
+msgstr "éžè¡¨ç¤ºã®ãƒ—ロジェクトデータディレクトリを使用"
#: core/project_settings.cpp
msgid "Use Custom User Dir"
-msgstr ""
+msgstr "カスタムユーザディレクトリを使用"
#: core/project_settings.cpp
+#, fuzzy
msgid "Custom User Dir Name"
-msgstr ""
+msgstr "カスタムユーザディレクトリå"
#: core/project_settings.cpp main/main.cpp
#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
@@ -658,25 +675,26 @@ msgid "Main Run Args"
msgstr "メインシーンã®å¼•æ•°:"
#: core/project_settings.cpp
+msgid "Scene Naming"
+msgstr "シーンã®å‘½åè¦å‰‡"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
-msgstr ""
+msgstr "ファイル拡張å­ã§æ¤œç´¢"
#: core/project_settings.cpp
msgid "Script Templates Search Path"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«"
+msgstr "ã‚¹ã‚¯ãƒªãƒ—ãƒˆãƒ†ãƒ³ãƒ—ãƒ¬ãƒ¼ãƒˆã®æ¤œç´¢ãƒ‘ス"
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "起動時ã®è‡ªå‹•読ã¿è¾¼ã¿"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "プラグインå"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -710,39 +728,41 @@ msgstr "パスã«ãƒ•ォーカス"
#: core/project_settings.cpp
#, fuzzy
msgid "UI Left"
-msgstr "左上"
+msgstr "å·¦"
#: core/project_settings.cpp
#, fuzzy
msgid "UI Right"
-msgstr "å³ä¸Š"
+msgstr "å³"
#: core/project_settings.cpp
+#, fuzzy
msgid "UI Up"
-msgstr ""
+msgstr "上"
#: core/project_settings.cpp
#, fuzzy
msgid "UI Down"
-msgstr "下り"
+msgstr "下"
#: core/project_settings.cpp
#, fuzzy
msgid "UI Page Up"
-msgstr "ページ: "
+msgstr "ページアップ"
#: core/project_settings.cpp
+#, fuzzy
msgid "UI Page Down"
-msgstr ""
+msgstr "ページダウン"
#: core/project_settings.cpp
msgid "UI Home"
-msgstr ""
+msgstr "ホーム"
#: core/project_settings.cpp
#, fuzzy
msgid "UI End"
-msgstr "終りã«"
+msgstr "エンド"
#: core/project_settings.cpp main/main.cpp modules/bullet/register_types.cpp
#: modules/bullet/space_bullet.cpp scene/2d/physics_body_2d.cpp
@@ -794,7 +814,8 @@ msgid "Quality"
msgstr "å“質"
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "フィルター:"
@@ -844,7 +865,7 @@ msgstr "Zstd"
#: core/project_settings.cpp
msgid "Long Distance Matching"
-msgstr ""
+msgstr "é è·é›¢ãƒžãƒƒãƒãƒ³ã‚°"
#: core/project_settings.cpp
msgid "Compression Level"
@@ -1029,7 +1050,7 @@ msgstr "オブジェクトã”ã¨ã®ãƒ©ã‚¤ãƒˆæ•°ã®ä¸Šé™"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Subsurface Scattering"
-msgstr ""
+msgstr "サブサーフェススキャタリング"
#: drivers/gles3/rasterizer_scene_gles3.cpp editor/animation_track_editor.cpp
#: editor/import/resource_importer_texture.cpp
@@ -1051,7 +1072,7 @@ msgstr "サーフェスを投入ã™ã‚‹"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Weight Samples"
-msgstr ""
+msgstr "é‡é‡ã‚µãƒ³ãƒ—ル"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Voxel Cone Tracing"
@@ -1065,6 +1086,7 @@ msgstr "高å“質"
msgid "Blend Shape Max Buffer Size (KB)"
msgstr "ブレンドシェイプã®ãƒãƒƒãƒ•ァサイズã®ä¸Šé™ (KB)"
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "自由"
@@ -1081,7 +1103,7 @@ msgstr "ミラー"
msgid "Time:"
msgstr "時間:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "値:"
@@ -1331,10 +1353,75 @@ msgid "Remove this track."
msgstr "ã“ã®ãƒˆãƒ©ãƒƒã‚¯ã‚’除去ã™ã‚‹ã€‚"
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "時間 (秒): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "ä½ç½®"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "回転ã®ã‚¹ãƒ†ãƒƒãƒ—:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "スケール:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "åž‹:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "無効ãªã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ テンプレート:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Easing:"
+msgstr "イージング(In-Out)"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "In-Handle:"
+msgstr "ãƒãƒ³ãƒ‰ãƒ«ã‚’設定ã™ã‚‹"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Out-Handle:"
+msgstr "ãƒãƒ³ãƒ‰ãƒ«ã‚’設定ã™ã‚‹"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "ストリーム"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "リスタート:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "End (s):"
+msgstr "フェードイン:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "アニメーション:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "トラックを有効 / 無効"
@@ -1547,7 +1634,8 @@ msgid "Add Method Track Key"
msgstr "メソッドトラックキーã®è¿½åŠ "
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "オブジェクトã«ãƒ¡ã‚½ãƒƒãƒ‰ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“: "
#: editor/animation_track_editor.cpp
@@ -2158,8 +2246,8 @@ msgid "Open"
msgstr "é–‹ã"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "次ã®ã‚ªãƒ¼ãƒŠãƒ¼:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
msgid ""
@@ -2461,7 +2549,7 @@ msgid "Bus Options"
msgstr "ãƒã‚¹ オプション"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "複製"
@@ -2513,8 +2601,9 @@ msgstr "オーディオãƒã‚¹ã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’é–‹ã"
msgid "There is no '%s' file."
msgstr "'%s' ファイルãŒã‚りã¾ã›ã‚“。"
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "レイアウト"
#: editor/editor_audio_buses.cpp
@@ -2717,6 +2806,25 @@ msgid "Choose"
msgstr "é¸ã¶"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "ノードã®ãƒ‘スをコピー"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "パッケージã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã«æˆåŠŸã—ã¾ã—ãŸï¼"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "失敗:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "ファイルã®ä¿å­˜:"
@@ -2729,6 +2837,31 @@ msgid "Packing"
msgstr "パック中"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "åå‰ã‚’付ã‘ã¦ä¿å­˜"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "フォルダーを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "プロジェクトファイルをエクスãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“ã§ã—ãŸ"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "書ã込むファイルを開ã‘ã¾ã›ã‚“:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "åå‰ã‚’付ã‘ã¦ä¿å­˜"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2849,11 +2982,33 @@ msgstr "カスタム デãƒãƒƒã‚°ãƒ†ãƒ³ãƒ—レートãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
msgid "Custom release template not found."
msgstr "カスタム リリーステンプレートãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "テンプレートã®ç®¡ç†"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "指定ã•れãŸã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆãƒ‘スãŒå­˜åœ¨ã—ã¾ã›ã‚“:"
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "テンプレートファイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "無効ãªã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ テンプレート:"
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+#, fuzzy
+msgid "PCK Embedding"
+msgstr "パディング"
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr ""
"32ビットã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã§ã¯ã€çµ„ã¿è¾¼ã¿PCKã¯4GiBã‚’è¶…ãˆã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。"
@@ -3027,9 +3182,9 @@ msgid "Import"
msgstr "インãƒãƒ¼ãƒˆ"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "エクスãƒãƒ¼ãƒˆ"
@@ -4175,14 +4330,6 @@ msgstr ""
"ファイル '%s'ã«æ›¸ãè¾¼ã‚ã¾ã›ã‚“。ファイルãŒä½¿ç”¨ä¸­ã‹ã€ãƒ­ãƒƒã‚¯ã•れã¦ã„ã‚‹ã‹ã€æ¨©é™ãŒ"
"ã‚りã¾ã›ã‚“。"
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "シーン"
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr "シーンã®å‘½åè¦å‰‡"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4302,6 +4449,10 @@ msgid "Default Color Picker Mode"
msgstr "デフォルトã®ã‚«ãƒ©ãƒ¼ãƒ”ッカーモード"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "ユーザーå"
@@ -4329,6 +4480,10 @@ msgstr "集中モードを切り替ãˆã‚‹ã€‚"
msgid "Add a new scene."
msgstr "æ–°è¦ã‚·ãƒ¼ãƒ³ã‚’追加ã™ã‚‹ã€‚"
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "シーン"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "以å‰ã«é–‹ã„ãŸã‚·ãƒ¼ãƒ³ã«ç§»å‹•ã™ã‚‹ã€‚"
@@ -5015,11 +5170,14 @@ msgid "Selected node is not a Viewport!"
msgstr "é¸æŠžã—ãŸãƒŽãƒ¼ãƒ‰ã¯ãƒ“ューãƒãƒ¼ãƒˆã§ã¯ã‚りã¾ã›ã‚“ï¼"
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr "サイズ: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
+msgstr "サイズ:"
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+#, fuzzy
+msgid "Page:"
msgstr "ページ: "
#: editor/editor_properties_array_dict.cpp
@@ -5118,6 +5276,11 @@ msgstr ""
"エクスãƒãƒ¼ãƒˆãƒ¡ãƒ‹ãƒ¥ãƒ¼ã«å®Ÿè¡Œå¯èƒ½ãªãƒ—リセットを追加ã™ã‚‹ã‹ã€æ—¢å­˜ã®ãƒ—リセットを実"
"行å¯èƒ½ã«ã—ã¦ãã ã•ã„。"
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "プロジェクト"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "ロジックを _run() メソッドã«è¨˜è¿°ã™ã‚‹ã€‚"
@@ -5377,7 +5540,9 @@ msgid "Draw Spaces"
msgstr "スペースをæç”»"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr "ナビゲーション"
@@ -5939,10 +6104,12 @@ msgstr "ホスト"
msgid "Port"
msgstr "ãƒãƒ¼ãƒˆ"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "プロジェクトマãƒãƒ¼ã‚¸ãƒ£ãƒ¼"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Sorting Order"
msgstr "ソート順"
@@ -6694,14 +6861,6 @@ msgid "Replace in Files"
msgstr "複数ファイル内ã§ç½®æ›"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "検索: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "ç½®æ›: "
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr "ã™ã¹ã¦ç½®æ› (å…ƒã«æˆ»ã›ã¾ã›ã‚“)"
@@ -6830,7 +6989,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "フィルター:"
@@ -7097,7 +7256,8 @@ msgid "Generating Lightmaps"
msgstr "ライトマップã®ç”Ÿæˆ"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+#, fuzzy
+msgid "Generating for Mesh:"
msgstr "メッシュã®ç”Ÿæˆ: "
#: editor/import/resource_importer_scene.cpp
@@ -7126,6 +7286,18 @@ msgid "Saving..."
msgstr "ä¿å­˜ä¸­..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7935,10 +8107,12 @@ msgstr "オニオンスキンオプション"
msgid "Directions"
msgstr "æ–¹å‘"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "éŽåŽ»"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "未æ¥"
@@ -8098,7 +8272,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr "終了アニメーションを設定ã™ã‚‹ã€‚ã“れã¯ã‚µãƒ–トランジションã«ä¾¿åˆ©ã§ã™ã€‚"
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
+#, fuzzy
+msgid "Transition:"
msgstr "トランジション: "
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8115,11 +8290,6 @@ msgid "New name:"
msgstr "æ–°ã—ã„åå‰:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "スケール:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "フェードイン:"
@@ -9031,6 +9201,7 @@ msgstr "ノードã‹ã‚‰ã‚«ã‚¹ã‚¿ãƒ ãƒœãƒ¼ãƒ³ã‚’作æˆ"
msgid "Clear Custom Bones"
msgstr "カスタム ボーンをクリア"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9094,6 +9265,10 @@ msgid "Preview Canvas Scale"
msgstr "キャンãƒã‚¹ã‚¹ã‚±ãƒ¼ãƒ«ã®ãƒ—レビュー"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "レイアウト"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr "キーを挿入ã™ã‚‹ãŸã‚ã®å¤‰æ›ãƒžã‚¹ã‚¯ã€‚"
@@ -9866,7 +10041,8 @@ msgid "Volume"
msgstr "ボリューム"
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+#, fuzzy
+msgid "Emission Source:"
msgstr "放出æº: "
#: editor/plugins/particles_editor_plugin.cpp
@@ -10098,6 +10274,7 @@ msgid "Points"
msgstr "点"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr "ãƒãƒªã‚´ãƒ³"
@@ -10253,13 +10430,6 @@ msgid "Instance:"
msgstr "インスタンス:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "åž‹:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr "エディターã§é–‹ã"
@@ -10268,10 +10438,6 @@ msgstr "エディターã§é–‹ã"
msgid "Load Resource"
msgstr "リソースを読ã¿è¾¼ã‚€"
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr "ResourcePreloader"
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr "ãƒãƒ¼ã‚¿ãƒ«ã‚’å転"
@@ -10969,12 +11135,16 @@ msgstr "回転"
msgid "Translate"
msgstr "移動"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
+#, fuzzy
+msgid "Scaling:"
msgstr "縮尺: "
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
+#, fuzzy
+msgid "Translating:"
msgstr "ä½ç½®ã®å¤‰æ›´: "
#: editor/plugins/spatial_editor_plugin.cpp
@@ -10998,11 +11168,6 @@ msgid "Yaw:"
msgstr "ヨー:"
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr "サイズ:"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr "æç”»ã•れãŸã‚ªãƒ–ジェクト:"
@@ -11489,7 +11654,8 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr "ジオメトリãŒç„¡åйã§ã™ã€‚メッシュã«ç½®ãæ›ãˆã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+#, fuzzy
+msgid "Convert to MeshInstance2D"
msgstr "Mesh2Dã«å¤‰æ›ã™ã‚‹"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11521,15 +11687,18 @@ msgid "Sprite"
msgstr "スプライト"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
+#, fuzzy
+msgid "Simplification:"
msgstr "簡略化: "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+#, fuzzy
+msgid "Shrink (Pixels):"
msgstr "ç¸®å° (ピクセル): "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+#, fuzzy
+msgid "Grow (Pixels):"
msgstr "拡大(ピクセル): "
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12476,8 +12645,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr "å‰ã®ã‚·ã‚§ã‚¤ãƒ—ã€ã‚µãƒ–タイルã€ã¾ãŸã¯ã‚¿ã‚¤ãƒ«ã‚’é¸æŠžã—ã¾ã™ã€‚"
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr "領域"
@@ -13987,38 +14155,10 @@ msgid "Delete preset '%s'?"
msgstr "プリセット '%s' を削除ã—ã¾ã™ã‹ï¼Ÿ"
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-"プラットフォーム '%s' ã¸ã®ãƒ—ロジェクトã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã«å¤±æ•—ã—ã¾ã—ãŸã€‚\n"
-"エクスãƒãƒ¼ãƒˆç”¨ãƒ†ãƒ³ãƒ—レートãŒå­˜åœ¨ã—ãªã„ã‹ã€ã‚ã‚‹ã„ã¯ç•°å¸¸ã§ã‚るよã†ã§ã™ã€‚"
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-"プラットフォーム '%s' ã¸ã®ãƒ—ロジェクトã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã«å¤±æ•—ã—ã¾ã—ãŸã€‚\n"
-"エクスãƒãƒ¼ãƒˆç”¨ãƒ—リセットã‚ã‚‹ã„ã¯ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆè¨­å®šã«å•題ãŒã‚ã‚‹å¯èƒ½æ€§ãŒã‚りã¾"
-"ã™ã€‚"
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "ã™ã¹ã¦ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ"
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr "指定ã•れãŸã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆãƒ‘スãŒå­˜åœ¨ã—ã¾ã›ã‚“:"
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-"ã“ã®ãƒ—ラットフォームã«å¯¾ã™ã‚‹ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ テンプレートãŒè¦‹ã¤ã‹ã‚‰ãªã„ã‹ã€ç ´æã—"
-"ã¦ã„ã¾ã™:"
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr "エクスãƒãƒ¼ãƒˆå…ˆã®ãƒ‘ス"
@@ -14165,6 +14305,11 @@ msgid "Export templates for this platform are missing:"
msgstr "ã“ã®ãƒ—ラットフォームã«å¯¾ã™ã‚‹ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ テンプレートãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "プロジェクト創始者"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "エクスãƒãƒ¼ãƒˆãƒ†ãƒ³ãƒ—レートã®ç®¡ç†"
@@ -15707,7 +15852,8 @@ msgid "Attach Node Script"
msgstr "ノードã«ã‚¹ã‚¯ãƒªãƒ—トをアタッãƒã™ã‚‹"
#: editor/script_editor_debugger.cpp
-msgid "Remote "
+#, fuzzy
+msgid "Remote %s:"
msgstr "リモート "
#: editor/script_editor_debugger.cpp
@@ -16550,7 +16696,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
msgid "Polygon"
msgstr "ãƒãƒªã‚´ãƒ³"
@@ -16723,7 +16869,8 @@ msgid "Disabled GDNative Singleton"
msgstr "無効ãªGDNativeシングルトン"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+#, fuzzy
+msgid "Libraries:"
msgstr "ライブラリ: "
#: modules/gdnative/nativescript/nativescript.cpp
@@ -17154,7 +17301,6 @@ msgid "Use In Baked Light"
msgstr "ライトマップを焼ã込む"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17184,6 +17330,19 @@ msgstr "中央"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "ナビゲーション"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "ナビゲーションモード"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "次ã®å¹³é¢"
@@ -17600,7 +17759,8 @@ msgstr ""
"を修正ã—ã¦ãã ã•ã„。"
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+#, fuzzy
+msgid "Node returned an invalid sequence output:"
msgstr "ノードã¯ç„¡åйãªã‚·ãƒ¼ã‚±ãƒ³ã‚¹å‡ºåŠ›ã‚’è¿”ã—ã¾ã—ãŸ: "
#: modules/visual_script/visual_script.cpp
@@ -17610,7 +17770,8 @@ msgstr ""
"ã‚’ï¼"
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+#, fuzzy
+msgid "Stack overflow with stack depth:"
msgstr "スタックオーãƒãƒ¼ãƒ•ロー発生 ã‚¹ã‚¿ãƒƒã‚¯ã®æ·±ã•: "
#: modules/visual_script/visual_script.cpp
@@ -17958,16 +18119,18 @@ msgstr "Return(戻り値)"
#: modules/visual_script/visual_script_flow_control.cpp
#: scene/resources/visual_shader_nodes.cpp
+#, fuzzy
msgid "Condition"
-msgstr ""
+msgstr "コンディション"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "if (cond) is:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
+#, fuzzy
msgid "While"
-msgstr ""
+msgstr "一方"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "while (cond):"
@@ -17982,7 +18145,8 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+#, fuzzy
+msgid "Input type not iterable:"
msgstr "入力タイプã¯å復å¯èƒ½ã§ã¯ã‚りã¾ã›ã‚“: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17990,12 +18154,13 @@ msgid "Iterator became invalid"
msgstr "イテレーターãŒç„¡åйã«ãªã‚Šã¾ã—ãŸ"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+#, fuzzy
+msgid "Iterator became invalid:"
msgstr "イテレーターãŒç„¡åйã«ãªã‚Šã¾ã—ãŸ: "
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Sequence"
-msgstr ""
+msgstr "シーケンス"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "in order:"
@@ -18156,11 +18321,13 @@ msgid "Operator"
msgstr "イテレータ"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
+#, fuzzy
+msgid "Invalid argument of type:"
msgstr ":無効ãªå¼•æ•° 引数ã®åž‹: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
+#, fuzzy
+msgid "Invalid arguments:"
msgstr ": 無効ãªå¼•æ•°: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18173,11 +18340,13 @@ msgid "Var Name"
msgstr "åå‰"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+#, fuzzy
+msgid "VariableGet not found in script:"
msgstr "VariableGetãŒã‚¹ã‚¯ãƒªãƒ—ト内ã«ã‚りã¾ã›ã‚“: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+#, fuzzy
+msgid "VariableSet not found in script:"
msgstr "VariableSetãŒã‚¹ã‚¯ãƒªãƒ—ト内ã«ã‚りã¾ã›ã‚“: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18715,10 +18884,6 @@ msgid "Could not execute on device."
msgstr "デãƒã‚¤ã‚¹ã§å®Ÿè¡Œã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr "'apksigner' ツールãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18837,12 +19002,17 @@ msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
"\"Target Sdk\" ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯ \"Min Sdk\" ãƒãƒ¼ã‚¸ãƒ§ãƒ³ä»¥ä¸Šã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。"
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "DMGをコード署å中"
+
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
"'apksigner' ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚\n"
"ã“ã®ã‚³ãƒžãƒ³ãƒ‰ãŒ Android SDK build-tools ディレクトリã«ã‚ã‚‹ã‹ç¢ºèªã—ã¦ãã ã•"
@@ -18862,6 +19032,11 @@ msgid "Could not find keystore, unable to export."
msgstr "キーストアãŒè¦‹ã¤ã‹ã‚‰ãªã„ãŸã‚ã€ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“。"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "サブプロセスを開始ã§ãã¾ã›ã‚“ã§ã—ãŸï¼"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr "'apksigner' ãŒã‚¨ãƒ©ãƒ¼ #%d ã§çµ‚了ã—ã¾ã—ãŸ"
@@ -18890,7 +19065,8 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "無効ãªãƒ•ァイルåã§ã™ï¼ Android APKã«ã¯æ‹¡å¼µå­ *.apk ãŒå¿…è¦ã§ã™ã€‚"
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+#, fuzzy
+msgid "Unsupported export format!"
msgstr "サãƒãƒ¼ãƒˆã•れã¦ã„ãªã„エクスãƒãƒ¼ãƒˆãƒ•ォーマットã§ã™ï¼\n"
#: platform/android/export/export_plugin.cpp
@@ -18902,10 +19078,9 @@ msgstr ""
"情報ãŒå­˜åœ¨ã—ã¾ã›ã‚“。 「プロジェクトã€ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‹ã‚‰å†ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¦ãã ã•ã„。"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
"Androidビルド ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ä¸ä¸€è‡´:\n"
@@ -18915,13 +19090,15 @@ msgstr ""
"ã ã•ã„。"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
"res://android/build/res/*.xml ファイルをプロジェクトåã§ä¸Šæ›¸ãã§ãã¾ã›ã‚“"
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+#, fuzzy
+msgid "Could not export project files to gradle project."
msgstr ""
"プロジェクトファイルをgladleプロジェクトã«ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“ã§ã—ãŸ\n"
@@ -18934,8 +19111,9 @@ msgid "Building Android Project (gradle)"
msgstr "Androidãƒ—ãƒ­ã‚¸ã‚§ã‚¯ãƒˆã®æ§‹ç¯‰(gradle)"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
"Androidプロジェクトã®ãƒ“ルドã«å¤±æ•—ã—ã¾ã—ãŸã€‚エラーã®å‡ºåŠ›ã‚’ç¢ºèªã—ã¦ãã ã•ã„。\n"
@@ -18955,7 +19133,8 @@ msgstr ""
"gradleã®ãƒ—ロジェクトディレクトリを確èªã—ã¦ãã ã•ã„。"
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+#, fuzzy
+msgid "Package not found: \"%s\"."
msgstr "見ã¤ã‹ã‚‰ãªã„パッケージ: %s"
#: platform/android/export/export_plugin.cpp
@@ -18963,17 +19142,16 @@ msgid "Creating APK..."
msgstr "APK を作æˆã—ã¦ã„ã¾ã™..."
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+#, fuzzy
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
"エクスãƒãƒ¼ãƒˆã™ã‚‹ãƒ†ãƒ³ãƒ—レートAPKãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ:\n"
"%s"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -18987,7 +19165,8 @@ msgid "Adding files..."
msgstr "ファイルを追加中..."
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+#, fuzzy
+msgid "Could not export project files."
msgstr "プロジェクトファイルをエクスãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“ã§ã—ãŸ"
#: platform/android/export/export_plugin.cpp
@@ -19229,6 +19408,17 @@ msgstr "ノードを切りå–ã‚‹"
msgid "Custom BG Color"
msgstr "ノードを切りå–ã‚‹"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "テンプレートã®ç®¡ç†"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "カスタム リリーステンプレートãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr "App Store ãƒãƒ¼ãƒ ID ãŒæœªæŒ‡å®š - プロジェクトを構æˆã§ãã¾ã›ã‚“。"
@@ -19250,22 +19440,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr "エクスãƒãƒ¼ãƒˆã—ãŸHTMLをシステム既定ã®ãƒ–ラウザã§å®Ÿè¡Œã™ã‚‹ã€‚"
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
msgstr "エクスãƒãƒ¼ãƒˆç”¨ã®ãƒ†ãƒ³ãƒ—レートを開ã‘ã¾ã›ã‚“ã§ã—ãŸ:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
msgstr "無効ãªã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ テンプレート:"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+#, fuzzy
+msgid "Could not write file: \"%s\"."
msgstr "ファイルを書ãè¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ:"
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "マージンを設定ã™ã‚‹"
+
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+#, fuzzy
+msgid "Could not read file: \"%s\"."
msgstr "ファイルを読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ:"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "分離:"
@@ -19340,15 +19543,18 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+#, fuzzy
+msgid "Could not read HTML shell: \"%s\"."
msgstr "HTMLシェルを読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ:"
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+#, fuzzy
+msgid "Could not create HTTP server directory: %s."
msgstr "HTTPサーãƒãƒ¼ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®ä½œæˆã«å¤±æ•—:"
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+#, fuzzy
+msgid "Error starting HTTP server: %d."
msgstr "HTTPサーãƒãƒ¼ã®é–‹å§‹ã«å¤±æ•—:"
#: platform/javascript/export/export.cpp
@@ -19645,9 +19851,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "プロジェクトファイルをエクスãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“ã§ã—ãŸ"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "サブプロセスを開始ã§ãã¾ã›ã‚“ã§ã—ãŸï¼"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "ローカライズ"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19663,21 +19888,76 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "アイコンãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚"
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "ファイルã®ä¿å­˜ã‚¨ãƒ©ãƒ¼: %s"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "æ–¹å‘"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "サブプロセスを開始ã§ãã¾ã›ã‚“ã§ã—ãŸï¼"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "サムãƒã‚¤ãƒ«ã‚’作æˆä¸­"
#: platform/osx/export/export.cpp
#, fuzzy
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr "エクスãƒãƒ¼ãƒˆã™ã‚‹ãƒ†ãƒ³ãƒ—レートAPKãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ:"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "無効ãªã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ テンプレート:"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -19685,7 +19965,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -19726,6 +20006,17 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "プロジェクト"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+"プロジェクトファイルをgladleプロジェクトã«ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“ã§ã—ãŸ\n"
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr "無効ãªãƒãƒ³ãƒ‰ãƒ«ID:"
@@ -20048,6 +20339,11 @@ msgid "Debug Algorithm"
msgstr "デãƒãƒƒã‚¬ãƒ¼"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "一時ファイルを削除ã§ãã¾ã›ã‚“:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20095,6 +20391,70 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "ランダムãªå›žè»¢:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "キーストアãŒè¦‹ã¤ã‹ã‚‰ãªã„ãŸã‚ã€ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“。"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "キーストアãŒè¦‹ã¤ã‹ã‚‰ãªã„ãŸã‚ã€ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“。"
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "キーストアãŒè¦‹ã¤ã‹ã‚‰ãªã„ãŸã‚ã€ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“。"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "キーストアãŒè¦‹ã¤ã‹ã‚‰ãªã„ãŸã‚ã€ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“。"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "無効ãªè­˜åˆ¥å­:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "無効ãªåå‰ã§ã™ã€‚"
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "一時ファイルを削除ã§ãã¾ã›ã‚“:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20113,6 +20473,23 @@ msgid "Invalid product version:"
msgstr "無効ãªè£½å“ãƒãƒ¼ã‚¸ãƒ§ãƒ³:"
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "無効ãªå®Ÿè¡Œå¯èƒ½ãƒ•ァイルã§ã™ã€‚"
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Windows"
msgstr "Windows"
@@ -20128,6 +20505,10 @@ msgstr "osslsigncode"
msgid "Wine"
msgstr "Wine"
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20251,7 +20632,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr "最大è·é›¢"
@@ -21110,17 +21492,19 @@ msgstr ""
"プロパティを設定ã™ã‚‹ã‹ã€ãƒãƒªã‚´ãƒ³ã‚’æç”»ã—ã¦ãã ã•ã„。"
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-"NavigationPolygonInstance ã¯ã€å­ã¾ãŸã¯å­« Navigation2D ノードã«ã‚ã‚‹å¿…è¦ãŒã‚り"
-"ã¾ã™ã€‚ナビゲーション データã®ã¿æä¾›ã—ã¾ã™ã€‚"
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr ""
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "中央下"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "トラベル"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
#, fuzzy
@@ -22359,14 +22743,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr "NavigationAgent ã¯Spatialノードã®ä¸‹ã§ã®ã¿ä½¿ç”¨ã•れã¾ã™ã€‚"
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-"NavigationMeshInstance ã¯ã€ãƒŠãƒ“ゲーションノードã®å­ã‚„å­«ã§ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚"
-"ã“れã¯ãƒŠãƒ“ゲーションデータã®ã¿æä¾›ã—ã¾ã™ã€‚"
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
#, fuzzy
msgid "NavMesh"
@@ -25108,6 +25484,16 @@ msgid "3D Physics"
msgstr " (物ç†çš„)"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "ナビゲーション"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "ナビゲーション"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr "hiDPIを使用"
@@ -26028,8 +26414,9 @@ msgid "Sky Contribution"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
msgid "Fog"
-msgstr ""
+msgstr "Fog(霧)"
#: scene/resources/environment.cpp
#, fuzzy
@@ -26534,7 +26921,7 @@ msgstr "トランジション"
msgid "Refraction"
msgstr "分離:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -26619,7 +27006,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "縮尺: "
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "変数ã®åž‹ã‚’設定"
#: scene/resources/navigation_mesh.cpp
@@ -26637,10 +27029,15 @@ msgid "Source Group Name"
msgstr "ソース"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "メインシーンã®å¼•æ•°:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -26650,11 +27047,16 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Regions"
+msgstr "領域"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Merge Size"
msgstr "シーンã‹ã‚‰ãƒžãƒ¼ã‚¸"
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26668,6 +27070,11 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Details"
+msgstr "デフォルトを表示"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Sample Distance"
msgstr "è·é›¢ã‚’å–å¾—:"
@@ -26685,7 +27092,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -27102,6 +27509,11 @@ msgid "Scenario"
msgstr "シーン"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "ナビゲーション"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -27119,6 +27531,26 @@ msgstr "左線形"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "デフォルトã®Z Far"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "デフォルトã®ãƒ—レビュー"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "試験的"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "接続を編集:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/ka.po b/editor/translations/ka.po
index 1616665c3b..34914a67b6 100644
--- a/editor/translations/ka.po
+++ b/editor/translations/ka.po
@@ -216,9 +216,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr ""
@@ -328,7 +329,7 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr ""
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+msgid "Invalid input %d (not passed) in expression"
msgstr ""
#: core/math/expression.cpp
@@ -372,6 +373,15 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
+
+#: core/os/input.cpp
+msgid "Use Accumulated Input"
+msgstr ""
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -562,7 +572,8 @@ msgstr "áƒáƒ¦áƒ¬áƒ”რáƒ:"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr ""
@@ -650,24 +661,23 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-msgid "Plugin Name"
+msgid "Version Control Plugin Name"
msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
@@ -776,7 +786,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "áƒáƒœáƒ˜áƒ› სიგრძის შეცვლáƒ"
@@ -1051,6 +1062,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "თáƒáƒ•ისუფáƒáƒšáƒ˜"
@@ -1067,7 +1079,7 @@ msgstr "სáƒáƒ áƒ™áƒ”"
msgid "Time:"
msgstr ""
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr ""
@@ -1333,10 +1345,70 @@ msgstr "მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ ჩáƒáƒœáƒáƒ¬áƒ”რის წáƒáƒ¨áƒšáƒ.
#: editor/animation_track_editor.cpp
#, fuzzy
-msgid "Time (s): "
+msgid "Time (s):"
msgstr "დრრ(წáƒáƒ›áƒ˜): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "áƒáƒ®áƒáƒšáƒ˜ %s შექმნáƒ"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "მუდმივი"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ."
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "კვáƒáƒœáƒ«áƒ˜áƒ¡ მრუდის რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "ფუნქციები:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr ""
@@ -1564,7 +1636,8 @@ msgid "Add Method Track Key"
msgstr "მეთáƒáƒ“ის გáƒáƒ›áƒáƒ«áƒáƒ®áƒ”ბის დáƒáƒ™áƒ•ირვებáƒ"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "მეთáƒáƒ“ი ვერ მáƒáƒ˜áƒ«áƒ”ბნრáƒáƒ‘იექტში: "
#: editor/animation_track_editor.cpp
@@ -2191,8 +2264,8 @@ msgid "Open"
msgstr "გáƒáƒ®áƒ¡áƒœáƒ˜áƒšáƒ˜"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "მფლáƒáƒ‘ელები:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
#, fuzzy
@@ -2502,7 +2575,7 @@ msgid "Bus Options"
msgstr "áƒáƒ¦áƒ¬áƒ”რáƒ:"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr ""
@@ -2554,8 +2627,8 @@ msgstr ""
msgid "There is no '%s' file."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+msgid "Layout:"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -2760,6 +2833,23 @@ msgid "Choose"
msgstr ""
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "პáƒáƒ™áƒ”ტი დáƒáƒ§áƒ”ნდრწáƒáƒ áƒ›áƒáƒ¢áƒ”ბით!"
+
+#: editor/editor_export.cpp
+msgid "Failed."
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr ""
@@ -2772,6 +2862,28 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp
+msgid "Save PCK"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "ვერ წáƒáƒ•შლით:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "პრáƒáƒ”ქტის დáƒáƒ›áƒ¤áƒ£áƒ«áƒœáƒ”ბლები"
+
+#: editor/editor_export.cpp
+msgid "Can't open file to read from path \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Save ZIP"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2875,8 +2987,27 @@ msgstr ""
msgid "Custom release template not found."
msgstr ""
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "წáƒáƒ•შáƒáƒšáƒáƒ— მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ ფáƒáƒ˜áƒšáƒ”ბი?"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "The given export path doesn't exist."
+msgstr ""
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
+msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ ხáƒáƒœáƒ’რძლივáƒáƒ‘რ(წáƒáƒ›áƒ”ბში)."
+
+#: editor/editor_export.cpp
+msgid "Failed to copy export template."
+msgstr ""
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
msgstr ""
#: editor/editor_export.cpp
@@ -3056,9 +3187,9 @@ msgid "Import"
msgstr ""
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr ""
@@ -4168,14 +4299,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4296,6 +4419,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "áƒáƒ£áƒ“ირგáƒáƒ“áƒáƒ›áƒ¢áƒáƒœáƒ˜áƒ¡ სáƒáƒ®áƒ”ლის ცვლილებáƒ"
@@ -4324,6 +4451,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
@@ -4966,11 +5097,13 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+msgid "Page:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
@@ -5067,6 +5200,11 @@ msgid ""
"as runnable."
msgstr ""
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "პრáƒáƒ”ქტის დáƒáƒ›áƒ¤áƒ£áƒ«áƒœáƒ”ბლები"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -5330,7 +5468,9 @@ msgid "Draw Spaces"
msgstr ""
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
#, fuzzy
msgid "Navigation"
msgstr "შექმნáƒ"
@@ -5893,10 +6033,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Sorting Order"
msgstr ""
@@ -6648,15 +6790,6 @@ msgid "Replace in Files"
msgstr "ყველáƒáƒ¡ ჩáƒáƒœáƒáƒªáƒ•ლებáƒ"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-#, fuzzy
-msgid "Replace: "
-msgstr "ჩáƒáƒœáƒáƒªáƒ•ლებáƒ"
-
-#: editor/find_in_files.cpp
#, fuzzy
msgid "Replace All (NO UNDO)"
msgstr "ყველáƒáƒ¡ ჩáƒáƒœáƒáƒªáƒ•ლებáƒ"
@@ -6794,7 +6927,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "áƒáƒœáƒ˜áƒ› სიგრძის შეცვლáƒ"
@@ -7050,7 +7183,7 @@ msgid "Generating Lightmaps"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+msgid "Generating for Mesh:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -7078,6 +7211,18 @@ msgid "Saving..."
msgstr ""
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7888,10 +8033,12 @@ msgstr ""
msgid "Directions"
msgstr ""
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr ""
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr ""
@@ -8054,7 +8201,7 @@ msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
#, fuzzy
-msgid "Transition: "
+msgid "Transition:"
msgstr "გáƒáƒ áƒ“áƒáƒ¡áƒ•ლáƒ"
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8072,11 +8219,6 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr ""
@@ -8990,6 +9132,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr ""
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9053,6 +9196,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -9819,8 +9966,9 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr ""
+#, fuzzy
+msgid "Emission Source:"
+msgstr "რესურსი"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
@@ -10053,6 +10201,7 @@ msgid "Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
#, fuzzy
msgid "Polygons"
msgstr "შექმნáƒ"
@@ -10208,13 +10357,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -10223,10 +10365,6 @@ msgstr ""
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -10946,13 +11084,17 @@ msgstr ""
msgid "Translate"
msgstr ""
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr ""
+#, fuzzy
+msgid "Scaling:"
+msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "გáƒáƒ áƒ“áƒáƒ¡áƒ•ლáƒ"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -10975,11 +11117,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11465,8 +11602,9 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
-msgstr ""
+#, fuzzy
+msgid "Convert to MeshInstance2D"
+msgstr "შექმნáƒ"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Invalid geometry, can't create polygon."
@@ -11499,15 +11637,16 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "ყველრმáƒáƒœáƒ˜áƒ¨áƒœáƒ•áƒ"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12476,8 +12615,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
#, fuzzy
msgid "Region"
msgstr "ინტერპáƒáƒšáƒáƒªáƒ˜áƒ˜áƒ¡ რეჟიმი"
@@ -13977,31 +14115,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr ""
@@ -14136,6 +14253,11 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "პრáƒáƒ”ქტის დáƒáƒ›áƒ¤áƒ£áƒ«áƒœáƒ”ბლები"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr ""
@@ -15607,8 +15729,9 @@ msgid "Attach Node Script"
msgstr ""
#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr ""
+#, fuzzy
+msgid "Remote %s:"
+msgstr "მáƒáƒ¨áƒáƒ áƒ”ბáƒ"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -16455,7 +16578,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "შექმნáƒ"
@@ -16626,7 +16749,7 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+msgid "Libraries:"
msgstr ""
#: modules/gdnative/nativescript/nativescript.cpp
@@ -17042,7 +17165,6 @@ msgid "Use In Baked Light"
msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17072,6 +17194,19 @@ msgstr "წáƒáƒ¨áƒšáƒ"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "შექმნáƒ"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "შექმნáƒ"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -17480,7 +17615,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17488,7 +17623,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17872,7 +18007,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17880,7 +18015,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18041,12 +18176,14 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
+#, fuzzy
+msgid "Invalid argument of type:"
+msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ."
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
+#, fuzzy
+msgid "Invalid arguments:"
+msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ."
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -18057,12 +18194,14 @@ msgid "Var Name"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableGet not found in script:"
+msgstr "მეთáƒáƒ“ი ვერ მáƒáƒ˜áƒ«áƒ”ბნრáƒáƒ‘იექტში: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableSet not found in script:"
+msgstr "მეთáƒáƒ“ი ვერ მáƒáƒ˜áƒ«áƒ”ბნრáƒáƒ‘იექტში: "
#: modules/visual_script/visual_script_nodes.cpp
msgid "Preload"
@@ -18575,10 +18714,6 @@ msgid "Could not execute on device."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18683,12 +18818,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "სიგნáƒáƒšáƒ”ბი"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18704,6 +18843,10 @@ msgid "Could not find keystore, unable to export."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Could not start apksigner executable."
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -18732,7 +18875,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18743,19 +18886,17 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+msgid "Could not export project files to gradle project."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18768,7 +18909,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -18784,7 +18925,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ ხáƒáƒœáƒ’რძლივáƒáƒ‘რ(წáƒáƒ›áƒ”ბში)."
#: platform/android/export/export_plugin.cpp
@@ -18792,15 +18933,12 @@ msgid "Creating APK..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -18811,7 +18949,7 @@ msgid "Adding files..."
msgstr "სáƒáƒ§áƒ•áƒáƒ áƒšáƒ”ბი:"
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19050,6 +19188,15 @@ msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒ¡áƒáƒ¦áƒ”ბების áƒáƒ¡áƒšá
msgid "Custom BG Color"
msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒ¡áƒáƒ¦áƒ”ბების áƒáƒ¡áƒšáƒ˜áƒ¡ შექმნáƒ"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+msgid "Prepare Templates"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Export template not found."
+msgstr ""
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -19072,19 +19219,29 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Could not open template for export: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
+msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ."
+
+#: platform/javascript/export/export.cpp
+msgid "Could not write file: \"%s\"."
msgstr ""
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "მáƒáƒœáƒ˜áƒ¨áƒ•ნის მრუდის ცვლილებáƒ"
+
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not read file: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+msgid "PWA"
msgstr ""
#: platform/javascript/export/export.cpp
@@ -19161,16 +19318,17 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
-msgstr ""
+#, fuzzy
+msgid "Error starting HTTP server: %d."
+msgstr "ჩáƒáƒ¢áƒ•ირთვის შეცდáƒáƒ›áƒ”ბი!"
#: platform/javascript/export/export.cpp
msgid "Web"
@@ -19453,9 +19611,26 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Could not open icon file \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Could not start xcrun executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "შექმნáƒ"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19471,19 +19646,73 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "მუდმივი"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "ჩáƒáƒ¢áƒ•ირთვის შეცდáƒáƒ›áƒ”ბი!"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "áƒáƒ¦áƒ¬áƒ”რáƒ:"
+
+#: platform/osx/export/export.cpp
+msgid "Could not start hdiutil executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Creating app bundle"
msgstr ""
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ."
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -19491,7 +19720,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -19533,6 +19762,15 @@ msgstr ""
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "ZIP Creation"
+msgstr "პრáƒáƒ”ქტის დáƒáƒ›áƒ¤áƒ£áƒ«áƒœáƒ”ბლები"
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Invalid bundle identifier:"
msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ."
@@ -19842,6 +20080,11 @@ msgid "Debug Algorithm"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "ვერ წáƒáƒ•შლით:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -19888,6 +20131,66 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "მუდმივი"
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "ვერ წáƒáƒ•შლით:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19909,6 +20212,23 @@ msgid "Invalid product version:"
msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ."
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Windows"
msgstr ""
@@ -19924,6 +20244,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
msgid "Frames"
@@ -20038,7 +20362,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
@@ -20836,13 +21161,16 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
+msgid "Navpoly"
msgstr ""
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "წáƒáƒ¨áƒšáƒ"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Travel Cost"
msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
@@ -21966,12 +22294,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -24504,6 +24826,16 @@ msgid "3D Physics"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "შექმნáƒ"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "შექმნáƒ"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -25870,7 +26202,7 @@ msgstr "გáƒáƒ áƒ“áƒáƒ¡áƒ•ლáƒ"
msgid "Refraction"
msgstr "ფუნქციის შექმნáƒ"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -25950,7 +26282,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "%s ტიპის ცვლილებáƒ"
#: scene/resources/navigation_mesh.cpp
@@ -25967,7 +26304,11 @@ msgid "Source Group Name"
msgstr "რესურსი"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
+msgid "Agents"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -25979,11 +26320,16 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Regions"
+msgstr "ინტერპáƒáƒšáƒáƒªáƒ˜áƒ˜áƒ¡ რეჟიმი"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -25996,6 +26342,11 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Details"
+msgstr "áƒáƒœáƒ˜áƒ› სიგრძის შეცვლáƒ"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -26012,7 +26363,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -26407,6 +26758,11 @@ msgid "Scenario"
msgstr ""
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "შექმნáƒ"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -26423,6 +26779,26 @@ msgstr "წრფივი"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "%s ტიპის ცვლილებáƒ"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "%s ტიპის ცვლილებáƒ"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "%s ტიპის ცვლილებáƒ"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "მáƒáƒœáƒ˜áƒ¨áƒ•ნის მრუდის ცვლილებáƒ"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/km.po b/editor/translations/km.po
index b28f3d5d5d..700f4f483c 100644
--- a/editor/translations/km.po
+++ b/editor/translations/km.po
@@ -200,9 +200,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr ""
@@ -306,7 +307,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "ចំនួន bytes សម្រាប់ decoding bytes​ មិនគ្រប់គ្រាន់ ឬ format មិនážáŸ’រឹមážáŸ’រូវ."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "ការបញ្ចូល %i មានបញ្ហា (មិនបានបញ្ចូល) ក្នុង expression"
#: core/math/expression.cpp
@@ -350,6 +352,14 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+msgid "Mouse Mode"
+msgstr ""
+
+#: core/os/input.cpp
+msgid "Use Accumulated Input"
+msgstr ""
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -530,7 +540,8 @@ msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr ""
@@ -613,24 +624,23 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-msgid "Plugin Name"
+msgid "Version Control Plugin Name"
msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
@@ -738,7 +748,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
msgid "Filters"
msgstr ""
@@ -1005,6 +1016,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Free"
@@ -1021,7 +1033,7 @@ msgstr "កញ្ចក់"
msgid "Time:"
msgstr "áž–áŸáž›ážœáŸáž›áž¶:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "ážáž˜áŸ’លៃ:"
@@ -1264,7 +1276,64 @@ msgid "Remove this track."
msgstr ""
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
+msgstr "áž–áŸáž›ážœáŸáž›áž¶:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Anim ផ្លាស់ប្ážáž¼ážš Transition"
+
+#: editor/animation_track_editor.cpp
+msgid "Rotation:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "index នៃ type %s សម្រាប់ base type %s មិនážáŸ’រឺមážáŸ’រូវទáŸ"
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Stream:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Start (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Animation Clip:"
msgstr ""
#: editor/animation_track_editor.cpp
@@ -1474,7 +1543,7 @@ msgid "Add Method Track Key"
msgstr ""
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+msgid "Method not found in object:"
msgstr ""
#: editor/animation_track_editor.cpp
@@ -2066,7 +2135,7 @@ msgid "Open"
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
+msgid "Owners of: %s (Total: %d)"
msgstr ""
#: editor/dependency_editor.cpp
@@ -2357,7 +2426,7 @@ msgid "Bus Options"
msgstr ""
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr ""
@@ -2409,8 +2478,8 @@ msgstr ""
msgid "There is no '%s' file."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+msgid "Layout:"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -2613,6 +2682,22 @@ msgid "Choose"
msgstr ""
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed successfully."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed."
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr ""
@@ -2625,6 +2710,26 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp
+msgid "Save PCK"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Cannot create file \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed to export project files."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Can't open file to read from path \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Save ZIP"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2725,8 +2830,25 @@ msgstr ""
msgid "Custom release template not found."
msgstr ""
+#: editor/editor_export.cpp
+msgid "Prepare Template"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "The given export path doesn't exist."
+msgstr ""
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+msgid "Template file not found: \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed to copy export template."
+msgstr ""
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
msgstr ""
#: editor/editor_export.cpp
@@ -2896,9 +3018,9 @@ msgid "Import"
msgstr ""
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr ""
@@ -3974,14 +4096,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4096,6 +4210,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr ""
@@ -4123,6 +4241,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
@@ -4752,11 +4874,13 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+msgid "Page:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
@@ -4848,6 +4972,10 @@ msgid ""
"as runnable."
msgstr ""
+#: editor/editor_run_native.cpp
+msgid "Project Run"
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -5102,7 +5230,9 @@ msgid "Draw Spaces"
msgstr ""
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr ""
@@ -5637,10 +5767,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Sorting Order"
msgstr ""
@@ -6358,14 +6490,6 @@ msgid "Replace in Files"
msgstr ""
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr ""
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr ""
@@ -6491,7 +6615,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
msgid "Filter"
msgstr ""
@@ -6730,7 +6854,7 @@ msgid "Generating Lightmaps"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+msgid "Generating for Mesh:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -6758,6 +6882,18 @@ msgid "Saving..."
msgstr ""
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7532,10 +7668,12 @@ msgstr ""
msgid "Directions"
msgstr ""
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr ""
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr ""
@@ -7690,8 +7828,9 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
-msgstr ""
+#, fuzzy
+msgid "Transition:"
+msgstr "Anim ផ្លាស់ប្ážáž¼ážš Transition"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Play Mode:"
@@ -7707,11 +7846,6 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr ""
@@ -8596,6 +8730,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr ""
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -8659,6 +8794,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -9401,7 +9540,7 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+msgid "Emission Source:"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
@@ -9631,6 +9770,7 @@ msgid "Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr ""
@@ -9784,13 +9924,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -9799,10 +9932,6 @@ msgstr ""
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -10489,13 +10618,16 @@ msgstr ""
msgid "Translate"
msgstr ""
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
+msgid "Scaling:"
msgstr ""
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "Anim ផ្លាស់ប្ážáž¼ážš Transition"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -10518,11 +10650,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -10997,7 +11124,7 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+msgid "Convert to MeshInstance2D"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11029,15 +11156,15 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
+msgid "Simplification:"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11955,8 +12082,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr ""
@@ -13373,31 +13499,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr ""
@@ -13530,6 +13635,10 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Project Export"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr ""
@@ -14961,7 +15070,7 @@ msgid "Attach Node Script"
msgstr ""
#: editor/script_editor_debugger.cpp
-msgid "Remote "
+msgid "Remote %s:"
msgstr ""
#: editor/script_editor_debugger.cpp
@@ -15777,7 +15886,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
msgid "Polygon"
msgstr ""
@@ -15938,7 +16047,7 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+msgid "Libraries:"
msgstr ""
#: modules/gdnative/nativescript/nativescript.cpp
@@ -16336,7 +16445,6 @@ msgid "Use In Baked Light"
msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -16362,6 +16470,19 @@ msgstr ""
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Key(s) ដែលបានជ្រើសស្ទួន"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "ážáž˜áŸ’លៃ:"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -16757,7 +16878,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -16765,7 +16886,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17125,7 +17246,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17133,7 +17254,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17285,12 +17406,14 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
+#, fuzzy
+msgid "Invalid argument of type:"
+msgstr "arguments ដែលប្រើសំរាប់រៀប '%s' មិនážáŸ’រឹមážáŸ’រូវទáŸ"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
+#, fuzzy
+msgid "Invalid arguments:"
+msgstr "arguments ដែលប្រើសំរាប់រៀប '%s' មិនážáŸ’រឹមážáŸ’រូវទáŸ"
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -17301,11 +17424,11 @@ msgid "Var Name"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+msgid "VariableGet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+msgid "VariableSet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
@@ -17789,10 +17912,6 @@ msgid "Could not execute on device."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -17896,12 +18015,15 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Code Signing"
+msgstr ""
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -17917,6 +18039,10 @@ msgid "Could not find keystore, unable to export."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Could not start apksigner executable."
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -17945,7 +18071,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -17956,19 +18082,17 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+msgid "Could not export project files to gradle project."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -17981,7 +18105,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -17996,7 +18120,7 @@ msgid ""
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18004,15 +18128,12 @@ msgid "Creating APK..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -18022,7 +18143,7 @@ msgid "Adding files..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18246,6 +18367,15 @@ msgstr ""
msgid "Custom BG Color"
msgstr ""
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+msgid "Prepare Templates"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Export template not found."
+msgstr ""
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18267,19 +18397,28 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Could not open template for export: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
+msgstr "index នៃ type %s សម្រាប់ base type %s មិនážáŸ’រឺមážáŸ’រូវទáŸ"
+
+#: platform/javascript/export/export.cpp
+msgid "Could not write file: \"%s\"."
+msgstr ""
+
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+msgid "Icon Creation"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not read file: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+msgid "PWA"
msgstr ""
#: platform/javascript/export/export.cpp
@@ -18351,15 +18490,15 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr ""
#: platform/javascript/export/export.cpp
@@ -18626,9 +18765,25 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Could not open icon file \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Could not start xcrun executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -18644,15 +18799,66 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
msgid "No identity found."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Cannot sign file %s."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "DMG Creation"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Could not start hdiutil executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Creating app bundle"
msgstr ""
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Invalid export format."
msgstr ""
#: platform/osx/export/export.cpp
@@ -18663,7 +18869,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -18704,6 +18910,14 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+msgid "ZIP Creation"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr ""
@@ -19000,6 +19214,10 @@ msgid "Debug Algorithm"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Failed to rename temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -19040,6 +19258,63 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Resources Modification"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "arguments ដែលប្រើសំរាប់រៀប '%s' មិនážáŸ’រឹមážáŸ’រូវទáŸ"
+
+#: platform/windows/export/export.cpp
+msgid "Invalid timestamp server."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Failed to remove temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19058,6 +19333,22 @@ msgid "Invalid product version:"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Failed to open executable file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Windows"
msgstr ""
@@ -19073,6 +19364,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
msgid "Frames"
@@ -19182,7 +19477,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
@@ -19930,13 +20226,15 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
+msgid "Navpoly"
msgstr ""
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Enter Cost"
+msgstr ""
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Travel Cost"
msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
@@ -20993,12 +21291,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -23345,6 +23637,16 @@ msgid "3D Physics"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Key(s) ដែលបានជ្រើសស្ទួន"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Key(s) ដែលបានជ្រើសស្ទួន"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -24573,7 +24875,7 @@ msgstr ""
msgid "Refraction"
msgstr ""
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -24649,10 +24951,15 @@ msgid "Visible Instance Count"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Sample Partition Type"
+msgid "Sampling"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
+msgstr "Anim ផ្លាស់ប្ážáž¼ážš Transition"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Parsed Geometry Type"
msgstr ""
@@ -24665,7 +24972,11 @@ msgid "Source Group Name"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
+msgid "Agents"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -24677,11 +24988,15 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+msgid "Regions"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -24694,6 +25009,10 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+msgid "Details"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -24710,7 +25029,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -25072,6 +25391,11 @@ msgid "Scenario"
msgstr ""
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Anim ផ្លាស់ប្ážáž¼ážš Transition"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -25087,6 +25411,25 @@ msgstr ""
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "ážáž˜áŸ’លៃ:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "ážáž˜áŸ’លៃ:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "ážáž˜áŸ’លៃ:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+msgid "Default Edge Connection Margin"
+msgstr ""
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/ko.po b/editor/translations/ko.po
index 9a79b0e35b..b4a91e0076 100644
--- a/editor/translations/ko.po
+++ b/editor/translations/ko.po
@@ -32,13 +32,15 @@
# Lee Minhak <minarihak@gmail.com>, 2022.
# 한수현 <shh1473@ajou.ac.kr>, 2022.
# Taehun Yun <yooontehoon@naver.com>, 2022.
+# vrSono <global.sonogong@gmail.com>, 2022.
+# Seonghyeon Cho <seonghyeoncho96@gmail.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-05-30 16:17+0000\n"
-"Last-Translator: Myeongjin Lee <aranet100@gmail.com>\n"
+"PO-Revision-Date: 2022-06-12 13:19+0000\n"
+"Last-Translator: Seonghyeon Cho <seonghyeoncho96@gmail.com>\n"
"Language-Team: Korean <https://hosted.weblate.org/projects/godot-engine/"
"godot/ko/>\n"
"Language: ko\n"
@@ -230,9 +232,10 @@ msgid "Data"
msgstr "ë°ì´í„°"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr "네트워í¬"
@@ -337,8 +340,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "디코딩할 ë°”ì´íŠ¸ê°€ 모ìžë¼ê±°ë‚˜ ìž˜ëª»ëœ í˜•ì‹ìž…니다."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
-msgstr "표현ì‹ì˜ ìž…ë ¥ %i (전달ë˜ì§€ 않ìŒ) ì´(ê°€) 올바르지 않습니다"
+msgid "Invalid input %d (not passed) in expression"
+msgstr "표현ì‹ì˜ ìž…ë ¥ %d (전달ë˜ì§€ 않ìŒ) ì´(ê°€) 올바르지 않습니다"
#: core/math/expression.cpp
msgid "self can't be used because instance is null (not passed)"
@@ -381,6 +384,16 @@ msgstr "메시지 대기열"
msgid "Max Size (KB)"
msgstr "최대 í¬ê¸°(KB)"
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "ì´ë™ 모드"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "입력 삭제"
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -560,7 +573,8 @@ msgstr "서술"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "실행"
@@ -643,6 +657,10 @@ msgid "Main Run Args"
msgstr "ë©”ì¸ ì‹¤í–‰ ì¸ìž"
#: core/project_settings.cpp
+msgid "Scene Naming"
+msgstr "씬 ì´ë¦„ 지정"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr "íŒŒì¼ í™•ìž¥ìžë¡œ 찾기"
@@ -650,18 +668,15 @@ msgstr "íŒŒì¼ í™•ìž¥ìžë¡œ 찾기"
msgid "Script Templates Search Path"
msgstr "스í¬ë¦½íЏ 템플릿 검색 경로"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "버전 컨트롤"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+#, fuzzy
+msgid "Version Control Autoload On Startup"
msgstr "스타트업으로 ìžë™ 로드"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "í”ŒëŸ¬ê·¸ì¸ ì´ë¦„"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "버전 컨트롤"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -768,7 +783,8 @@ msgid "Quality"
msgstr "품질"
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
msgid "Filters"
msgstr "í•„í„°"
@@ -1035,6 +1051,7 @@ msgstr "고품질"
msgid "Blend Shape Max Buffer Size (KB)"
msgstr "블렌드 ë„형 최대 ë²„í¼ í¬ê¸° (KB)"
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "ìžìœ "
@@ -1051,7 +1068,7 @@ msgstr "거울"
msgid "Time:"
msgstr "시간:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "ê°’:"
@@ -1292,8 +1309,62 @@ msgid "Remove this track."
msgstr "ì´ íŠ¸ëž™ì„ ì œê±°í•©ë‹ˆë‹¤."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
-msgstr "시간 (초): "
+msgid "Time (s):"
+msgstr "시간 (초):"
+
+#: editor/animation_track_editor.cpp
+msgid "Position:"
+msgstr "위치:"
+
+#: editor/animation_track_editor.cpp
+msgid "Rotation:"
+msgstr "회전:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "스케ì¼:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "타입:"
+
+#: editor/animation_track_editor.cpp
+msgid "(Invalid, expected type: %s)"
+msgstr "(ì¸ì‹ë¶ˆê°€. 예ìƒí•œ 타입: %s)"
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr "Easing:"
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr "입력 핸들:"
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr "출력 핸들:"
+
+#: editor/animation_track_editor.cpp
+msgid "Stream:"
+msgstr "스트림:"
+
+#: editor/animation_track_editor.cpp
+msgid "Start (s):"
+msgstr "시작 (초):"
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr "종료 (초):"
+
+#: editor/animation_track_editor.cpp
+msgid "Animation Clip:"
+msgstr "애니메ì´ì…˜ í´ë¦½:"
#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
@@ -1508,8 +1579,8 @@ msgid "Add Method Track Key"
msgstr "메서드 트랙 키 추가"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
-msgstr "오브ì íŠ¸ì— ë©”ì„œë“œê°€ ì—†ìŒ: "
+msgid "Method not found in object:"
+msgstr "오브ì íŠ¸ì— ë©”ì„œë“œê°€ ì—†ìŒ:"
#: editor/animation_track_editor.cpp
msgid "Anim Move Keys"
@@ -2117,8 +2188,8 @@ msgid "Open"
msgstr "열기"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "소유ìž:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
msgid ""
@@ -2417,7 +2488,7 @@ msgid "Bus Options"
msgstr "버스 옵션"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "복제"
@@ -2469,9 +2540,9 @@ msgstr "오디오 버스 ë ˆì´ì•„웃 열기"
msgid "There is no '%s' file."
msgstr "'%s' 파ì¼ì´ 없습니다."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
-msgstr "ë ˆì´ì•„웃"
+#: editor/editor_audio_buses.cpp
+msgid "Layout:"
+msgstr "ë ˆì´ì•„웃:"
#: editor/editor_audio_buses.cpp
msgid "Invalid file, not an audio bus layout."
@@ -2673,6 +2744,25 @@ msgid "Choose"
msgstr "ì„ íƒ"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "íŒŒì¼ ê²½ë¡œ 완성"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "패키지를 성공ì ìœ¼ë¡œ 설치했습니다!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "실패함:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "저장하려는 파ì¼:"
@@ -2685,6 +2775,31 @@ msgid "Packing"
msgstr "패킹 중"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "다른 ì´ë¦„으로 저장"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "í´ë”를 만들 수 없습니다."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "프로ì íЏ 파ì¼ì„ 내보낼 수 없었습니다"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "파ì¼ì„ 쓰기 모드로 ì—´ 수 ì—†ìŒ:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "다른 ì´ë¦„으로 저장"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2801,11 +2916,33 @@ msgstr "커스텀 디버그 í…œí”Œë¦¿ì„ ì°¾ì„ ìˆ˜ 없습니다."
msgid "Custom release template not found."
msgstr "커스텀 릴리스 í…œí”Œë¦¿ì„ ì°¾ì„ ìˆ˜ 없습니다."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "템플릿 관리"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "주어진 내보내기 경로가 ì—†ìŒ:"
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "템플릿 파ì¼ì„ ì°¾ì„ ìˆ˜ 없습니다:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "ìž˜ëª»ëœ ë‚´ë³´ë‚´ê¸° 템플릿:"
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+#, fuzzy
+msgid "PCK Embedding"
+msgstr "패딩"
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr "32비트 환경ì—서는 4 GiB보다 í° ë‚´ìž¥ PCK를 내보낼 수 없습니다."
@@ -2976,9 +3113,9 @@ msgid "Import"
msgstr "가져오기"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "내보내기"
@@ -4116,14 +4253,6 @@ msgid ""
msgstr ""
"íŒŒì¼ '%s'ì— ì“¸ 수 없습니다. 파ì¼ì´ 사용 중ì´ê±°ë‚˜ 잠겨 있거나 ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤."
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "씬"
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr "씬 ì´ë¦„ 지정"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4238,6 +4367,10 @@ msgid "Default Color Picker Mode"
msgstr "기본 색 고르기 모드"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "버전 컨트롤"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "ì‚¬ìš©ìž ì´ë¦„"
@@ -4265,6 +4398,10 @@ msgstr "집중 모드를 토글합니다."
msgid "Add a new scene."
msgstr "새 ì”¬ì„ ì¶”ê°€í•©ë‹ˆë‹¤."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "씬"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "ì´ì „ì— ì—´ì—ˆë˜ ì”¬ìœ¼ë¡œ ì´ë™í•©ë‹ˆë‹¤."
@@ -4943,12 +5080,14 @@ msgid "Selected node is not a Viewport!"
msgstr "ì„ íƒëœ 노드는 ë·°í¬íŠ¸ê°€ 아닙니다!"
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr "í¬ê¸°: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
+msgstr "í¬ê¸°:"
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr "페ì´ì§€: "
+msgid "Page:"
+msgstr "페ì´ì§€:"
#: editor/editor_properties_array_dict.cpp
#: editor/plugins/theme_editor_plugin.cpp
@@ -5042,6 +5181,11 @@ msgstr ""
"내보내기 메뉴ì—서 실행할 수 있는 í”„ë¦¬ì…‹ì„ ì¶”ê°€í•˜ê±°ë‚˜ 기존 í”„ë¦¬ì…‹ì„ ì‹¤í–‰í•  수 "
"있ë„ë¡ ì •ì˜í•´ì£¼ì„¸ìš”."
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "프로ì íЏ"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "_run() ë©”ì„œë“œì— ë‹¹ì‹ ì˜ ë…¼ë¦¬ë¥¼ 작성하세요."
@@ -5295,7 +5439,9 @@ msgid "Draw Spaces"
msgstr "공백 사용"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr "네비게ì´ì…˜"
@@ -5463,7 +5609,7 @@ msgstr "타입 힌트 추가"
#: editor/editor_settings.cpp
msgid "Use Single Quotes"
-msgstr "ë‹¨ì¼ ì¸ìš© 사용"
+msgstr "홑따옴표 사용"
#: editor/editor_settings.cpp
msgid "Show Help Index"
@@ -5622,9 +5768,8 @@ msgid "Warped Mouse Panning"
msgstr ""
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Navigation Feel"
-msgstr "내비게ì´ì…˜ 모드"
+msgstr "내비게ì´ì…˜ ê°ë„"
#: editor/editor_settings.cpp
msgid "Orbit Sensitivity"
@@ -5680,42 +5825,36 @@ msgid "Freelook Speed Zoom Link"
msgstr "ìžìœ  ì‹œì  ì†ë„ 수정ìž"
#: editor/editor_settings.cpp editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Grid Color"
-msgstr "ìƒ‰ìƒ ì„ íƒ"
+msgstr "ê²©ìž ìƒ‰ìƒ"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Guides Color"
-msgstr "ìƒ‰ìƒ ì„ íƒ"
+msgstr "ê°€ì´ë“œ 색ìƒ"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Smart Snapping Line Color"
-msgstr "스마트 스냅"
+msgstr "스마트 스냅 ë¼ì¸ 색ìƒ"
#: editor/editor_settings.cpp
msgid "Bone Width"
-msgstr ""
+msgstr "본 너비"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Bone Color 1"
-msgstr "ìƒ‰ìƒ í•­ëª© ì´ë¦„ 바꾸기"
+msgstr "본 ìƒ‰ìƒ 1"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Bone Color 2"
-msgstr "ìƒ‰ìƒ í•­ëª© ì´ë¦„ 바꾸기"
+msgstr "본 ìƒ‰ìƒ 2"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Bone Selected Color"
-msgstr "ì„ íƒëœ 프로필 구성:"
+msgstr "ì„ íƒëœ 본 색ìƒ"
#: editor/editor_settings.cpp
msgid "Bone IK Color"
-msgstr ""
+msgstr "본 IK 색ìƒ"
#: editor/editor_settings.cpp
msgid "Bone Outline Color"
@@ -5817,14 +5956,12 @@ msgid "Auto Save"
msgstr "ìžë™ 저장"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Save Before Running"
-msgstr "ì”¬ì„ ì‹¤í–‰í•˜ê¸° ì „ì— ì €ìž¥..."
+msgstr "실행하기 ì „ì— ì €ìž¥"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Font Size"
-msgstr "ì •ë©´ ë·°"
+msgstr "í°íЏ í¬ê¸°"
#: editor/editor_settings.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
@@ -5857,10 +5994,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "프로ì íЏ 매니저"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -6623,14 +6762,6 @@ msgid "Replace in Files"
msgstr "ëª¨ë‘ ë°”ê¾¸ê¸°"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "찾기: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "바꾸기: "
-
-#: editor/find_in_files.cpp
#, fuzzy
msgid "Replace All (NO UNDO)"
msgstr "ëª¨ë‘ ë°”ê¾¸ê¸°"
@@ -6760,7 +6891,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "í•„í„°:"
@@ -7028,7 +7159,8 @@ msgid "Generating Lightmaps"
msgstr "ë¼ì´íŠ¸ë§µ ìƒì„± 중"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+#, fuzzy
+msgid "Generating for Mesh:"
msgstr "메시 용으로 ìƒì„± 중: "
#: editor/import/resource_importer_scene.cpp
@@ -7056,6 +7188,18 @@ msgid "Saving..."
msgstr "저장 중..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7867,10 +8011,12 @@ msgstr "어니언 ìŠ¤í‚¤ë‹ ì„¤ì •"
msgid "Directions"
msgstr "ë°©í–¥"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "과거"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "미래"
@@ -8029,7 +8175,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr "ë 애니메ì´ì…˜ì„ 설정합니다. ì´ê²ƒì€ 하위 ì „í™˜ì— ìœ ìš©í•©ë‹ˆë‹¤."
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
+#, fuzzy
+msgid "Transition:"
msgstr "전환: "
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8046,11 +8193,6 @@ msgid "New name:"
msgstr "새 ì´ë¦„:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "스케ì¼:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "페ì´ë“œ ì¸ (ì´ˆ):"
@@ -8958,6 +9100,7 @@ msgstr "노드ì—서 커스텀 본 만들기"
msgid "Clear Custom Bones"
msgstr "커스텀 본 지우기"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9024,6 +9167,10 @@ msgid "Preview Canvas Scale"
msgstr "캔버스 ìŠ¤ì¼€ì¼ ë¯¸ë¦¬ë³´ê¸°"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "ë ˆì´ì•„웃"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr "키를 삽입하기 위한 전환 마스í¬."
@@ -9794,7 +9941,8 @@ msgid "Volume"
msgstr "볼륨"
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+#, fuzzy
+msgid "Emission Source:"
msgstr "방출 소스: "
#: editor/plugins/particles_editor_plugin.cpp
@@ -10027,6 +10175,7 @@ msgid "Points"
msgstr "ì "
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr "í´ë¦¬ê³¤"
@@ -10182,13 +10331,6 @@ msgid "Instance:"
msgstr "ì¸ìŠ¤í„´ìŠ¤:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "타입:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr "ì—디터ì—서 열기"
@@ -10197,10 +10339,6 @@ msgstr "ì—디터ì—서 열기"
msgid "Load Resource"
msgstr "리소스 불러오기"
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr "리소스 프리로ë”"
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr "í¬í„¸ 뒤집기"
@@ -10902,12 +11040,16 @@ msgstr "회전"
msgid "Translate"
msgstr "ì´ë™"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
+#, fuzzy
+msgid "Scaling:"
msgstr "í¬ê¸° ì¡°ì ˆ 중: "
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
+#, fuzzy
+msgid "Translating:"
msgstr "ì´ë™ 중: "
#: editor/plugins/spatial_editor_plugin.cpp
@@ -10931,11 +11073,6 @@ msgid "Yaw:"
msgstr "Yaw:"
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr "í¬ê¸°:"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr "그려진 오브ì íЏ:"
@@ -11420,7 +11557,8 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr "ìž˜ëª»ëœ ì§€ì˜¤ë©”íŠ¸ë¦¬. 메시로 대체할 수 없습니다."
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+#, fuzzy
+msgid "Convert to MeshInstance2D"
msgstr "Mesh2D로 변환"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11452,15 +11590,18 @@ msgid "Sprite"
msgstr "스프ë¼ì´íЏ"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
+#, fuzzy
+msgid "Simplification:"
msgstr "단순화: "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+#, fuzzy
+msgid "Shrink (Pixels):"
msgstr "수축 (픽셀): "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+#, fuzzy
+msgid "Grow (Pixels):"
msgstr "성장 (픽셀): "
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12412,8 +12553,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr "ì´ì „ 모양, 하위 타ì¼, í˜¹ì€ íƒ€ì¼ì„ ì„ íƒí•˜ì„¸ìš”."
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr "ì˜ì—­"
@@ -13935,35 +14075,10 @@ msgid "Delete preset '%s'?"
msgstr "'%s' í”„ë¦¬ì…‹ì„ ì‚­ì œí•˜ì‹œê² ìŠµë‹ˆê¹Œ?"
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-"'%s' 플랫í¼ì— 프로ì íŠ¸ë¥¼ 내보낼 수 없습니다.\n"
-"내보내기 í…œí”Œë¦¿ì´ ëˆ„ë½ë˜ê±°ë‚˜ ìž˜ëª»ëœ ê²ƒ 같습니다."
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-"'%s' 플랫í¼ì— 프로ì íŠ¸ë¥¼ 내보낼 수 없습니다.\n"
-"내보내기 프리셋ì´ë‚˜ 내보내기 ì„¤ì •ì˜ ë¬¸ì œì¸ ê²ƒ 같습니다."
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "ëª¨ë‘ ë‚´ë³´ë‚´ê¸°"
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr "주어진 내보내기 경로가 ì—†ìŒ:"
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr "ì´ í”Œëž«í¼ì˜ 내보내기 í…œí”Œë¦¿ì´ ëˆ„ë½ë¨/ì†ìƒë¨:"
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr "경로 내보내기"
@@ -14108,6 +14223,11 @@ msgid "Export templates for this platform are missing:"
msgstr "ì´ í”Œëž«í¼ì— 대한 내보내기 í…œí”Œë¦¿ì´ ëˆ„ë½ë¨:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "프로ì íЏ 창립ìž"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "내보내기 템플릿 관리"
@@ -15630,7 +15750,8 @@ msgid "Attach Node Script"
msgstr "노드 스í¬ë¦½íЏ ë¶™ì´ê¸°"
#: editor/script_editor_debugger.cpp
-msgid "Remote "
+#, fuzzy
+msgid "Remote %s:"
msgstr "ì›ê²© "
#: editor/script_editor_debugger.cpp
@@ -16511,7 +16632,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "í´ë¦¬ê³¤"
@@ -16689,7 +16810,8 @@ msgid "Disabled GDNative Singleton"
msgstr "ë¹„í™œì„±í™”ëœ GDNative 싱글톤"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+#, fuzzy
+msgid "Libraries:"
msgstr "ë¼ì´ë¸ŒëŸ¬ë¦¬: "
#: modules/gdnative/nativescript/nativescript.cpp
@@ -17133,7 +17255,6 @@ msgid "Use In Baked Light"
msgstr "ë¼ì´íŠ¸ë§µ 굽기"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17163,6 +17284,19 @@ msgstr "중앙"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "네비게ì´ì…˜"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "내비게ì´ì…˜ ê°ë„"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "ë‹¤ìŒ í‰ë©´"
@@ -17578,7 +17712,8 @@ msgstr ""
"ì³ì£¼ì„¸ìš”."
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+#, fuzzy
+msgid "Node returned an invalid sequence output:"
msgstr "ìž˜ëª»ëœ ì‹œí€€ìŠ¤ ì¶œë ¥ì„ ë°˜í™˜í•œ 노드: "
#: modules/visual_script/visual_script.cpp
@@ -17587,7 +17722,8 @@ msgstr ""
"시퀀스 비트를 발견했지만 ìŠ¤íƒ ì•ˆì˜ ë…¸ë“œì—는 없습니다. 버그를 신고하세요!"
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+#, fuzzy
+msgid "Stack overflow with stack depth:"
msgstr "ìŠ¤íƒ ê¹Šì´ë¡œ 오버플로우한 스íƒ: "
#: modules/visual_script/visual_script.cpp
@@ -17959,7 +18095,8 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+#, fuzzy
+msgid "Input type not iterable:"
msgstr "반복할 수 없는 입력 타입: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17967,7 +18104,8 @@ msgid "Iterator became invalid"
msgstr "Iteratorê°€ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+#, fuzzy
+msgid "Iterator became invalid:"
msgstr "Iteratorê°€ 잘못ë¨: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18141,11 +18279,13 @@ msgid "Operator"
msgstr "ì˜¤ë²„ë ˆì´ ì—°ì‚°ìž."
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
+#, fuzzy
+msgid "Invalid argument of type:"
msgstr ": ìž˜ëª»ëœ ì¸ìˆ˜ 타입: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
+#, fuzzy
+msgid "Invalid arguments:"
msgstr ": ìž˜ëª»ëœ ì¸ìˆ˜: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18158,11 +18298,13 @@ msgid "Var Name"
msgstr "ì´ë¦„"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+#, fuzzy
+msgid "VariableGet not found in script:"
msgstr "VariableGetì„ ìŠ¤í¬ë¦½íЏì—서 ì°¾ì„ ìˆ˜ ì—†ìŒ: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+#, fuzzy
+msgid "VariableSet not found in script:"
msgstr "VariableSetì„ ìŠ¤í¬ë¦½íЏì—서 ì°¾ì„ ìˆ˜ ì—†ìŒ: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18713,10 +18855,6 @@ msgid "Could not execute on device."
msgstr "기기ì—서 실행할 수 없었습니다."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr "'apksigner' íˆ´ì„ ì°¾ì„ ìˆ˜ 없습니다."
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18832,12 +18970,17 @@ msgstr "\"Export AAB\"는 \"Use Custom Build\"ê°€ í™œì„±í™”ëœ ê²½ìš°ì—ë§Œ 유í
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "시그ë„"
+
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
"'apksigner'를 ì°¾ì„ ìˆ˜ 없었습니다.\n"
"ëª…ë ¹ì´ Android SDK build-tools 디렉토리ì—서 사용 가능한지 확ì¸í•´ì£¼ì„¸ìš”.\n"
@@ -18856,6 +18999,11 @@ msgid "Could not find keystore, unable to export."
msgstr "keystore를 ì°¾ì„ ìˆ˜ 없어, 내보낼 수 없었습니다."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "하위 프로세스를 시작할 수 없습니다!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr "'apksigner'ê°€ 오류 #%d로 반환ë˜ì—ˆìŠµë‹ˆë‹¤"
@@ -18884,7 +19032,8 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "ìž˜ëª»ëœ íŒŒì¼ì´ë¦„입니다! Android APK는 *.apk 확장ìžê°€ 필요합니다."
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+#, fuzzy
+msgid "Unsupported export format!"
msgstr "ì§€ì›ë˜ì§€ 않는 내보내기 형ì‹ìž…니다!\n"
#: platform/android/export/export_plugin.cpp
@@ -18896,10 +19045,9 @@ msgstr ""
"(Project)' 메뉴ì—서 다시 설치해주세요."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
"Android 빌드 ë²„ì „ì´ ë§žì§€ 않ìŒ:\n"
@@ -18908,13 +19056,15 @@ msgstr ""
"'프로ì íЏ' 메뉴ì—서 Android 빌드 í…œí”Œë¦¿ì„ ë‹¤ì‹œ 설치해주세요."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
"res://android/build/res/*.xml 파ì¼ì„ 프로ì íЏ ì´ë¦„으로 ë®ì–´ì“¸ 수 없습니다"
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+#, fuzzy
+msgid "Could not export project files to gradle project."
msgstr "프로ì íЏ 파ì¼ì„ gradle 프로ì íŠ¸ë¡œ 내보낼 수 없었습니다\n"
#: platform/android/export/export_plugin.cpp
@@ -18926,8 +19076,9 @@ msgid "Building Android Project (gradle)"
msgstr "Android 프로ì íЏ 빌드 중 (gradle)"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
"Android 프로ì íŠ¸ì˜ ë¹Œë“œì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤, ì¶œë ¥ëœ ì˜¤ë¥˜ë¥¼ 확ì¸í•˜ì„¸ìš”.\n"
@@ -18946,7 +19097,8 @@ msgstr ""
"트 디렉토리를 확ì¸í•˜ì„¸ìš”."
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+#, fuzzy
+msgid "Package not found: \"%s\"."
msgstr "패키지를 ì°¾ì„ ìˆ˜ ì—†ìŒ: %s"
#: platform/android/export/export_plugin.cpp
@@ -18954,17 +19106,16 @@ msgid "Creating APK..."
msgstr "APK를 만드는 중..."
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+#, fuzzy
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
"내보낼 템플릿 APK를 ì°¾ì„ ìˆ˜ ì—†ìŒ:\n"
"%s"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -18978,7 +19129,8 @@ msgid "Adding files..."
msgstr "파ì¼ì„ 추가하는 중..."
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+#, fuzzy
+msgid "Could not export project files."
msgstr "프로ì íЏ 파ì¼ì„ 내보낼 수 없었습니다"
#: platform/android/export/export_plugin.cpp
@@ -19221,6 +19373,17 @@ msgstr "노드 잘ë¼ë‚´ê¸°"
msgid "Custom BG Color"
msgstr "노드 잘ë¼ë‚´ê¸°"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "템플릿 관리"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "커스텀 릴리스 í…œí”Œë¦¿ì„ ì°¾ì„ ìˆ˜ 없습니다."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr "App Store 팀 ID를 지정하지 않았습니다 - 프로ì íŠ¸ë¥¼ 구성할 수 없습니다."
@@ -19242,22 +19405,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr "내보낸 HTMLì„ ì‹œìŠ¤í…œì˜ ê¸°ë³¸ 브ë¼ìš°ì €ë¥¼ 사용하여 실행합니다."
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
msgstr "내보내기 í…œí”Œë¦¿ì„ ì—´ 수 ì—†ìŒ:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
msgstr "ìž˜ëª»ëœ ë‚´ë³´ë‚´ê¸° 템플릿:"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+#, fuzzy
+msgid "Could not write file: \"%s\"."
msgstr "파ì¼ì— 쓸 수 ì—†ìŒ:"
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "여백 설정"
+
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+#, fuzzy
+msgid "Could not read file: \"%s\"."
msgstr "파ì¼ì„ ì½ì„ 수 ì—†ìŒ:"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "간격:"
@@ -19332,15 +19508,18 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+#, fuzzy
+msgid "Could not read HTML shell: \"%s\"."
msgstr "HTML shellì„ ì½ì„ 수 ì—†ìŒ:"
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+#, fuzzy
+msgid "Could not create HTTP server directory: %s."
msgstr "HTTP 서버 디렉토리를 만들 수 ì—†ìŒ:"
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+#, fuzzy
+msgid "Error starting HTTP server: %d."
msgstr "HTTP 서버를 시작하는 중 오류:"
#: platform/javascript/export/export.cpp
@@ -19640,9 +19819,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "프로ì íЏ 파ì¼ì„ 내보낼 수 없었습니다"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "하위 프로세스를 시작할 수 없습니다!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "현지화"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19658,23 +19856,78 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "ì•„ì´ì½˜ì„ ì°¾ì„ ìˆ˜ 없습니다."
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "íŒŒì¼ ì €ìž¥ 중 오류: %s"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "ë°©í–¥"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "하위 프로세스를 시작할 수 없습니다!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "ì¸ë„¤ì¼ 만드는 중"
#: platform/osx/export/export.cpp
#, fuzzy
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr ""
"내보낼 템플릿 APK를 ì°¾ì„ ìˆ˜ ì—†ìŒ:\n"
"%s"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "ìž˜ëª»ëœ ë‚´ë³´ë‚´ê¸° 템플릿:"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -19682,7 +19935,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -19723,6 +19976,16 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "프로ì íЏ"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr "프로ì íЏ 파ì¼ì„ gradle 프로ì íŠ¸ë¡œ 내보낼 수 없었습니다\n"
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr "ìž˜ëª»ëœ bundle ì‹ë³„ìž:"
@@ -20038,6 +20301,11 @@ msgid "Debug Algorithm"
msgstr "디버거"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "임시 파ì¼ì„ 제거할 수 ì—†ìŒ:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20085,6 +20353,70 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "무작위 회전:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "keystore를 ì°¾ì„ ìˆ˜ 없어, 내보낼 수 없었습니다."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "keystore를 ì°¾ì„ ìˆ˜ 없어, 내보낼 수 없었습니다."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "keystore를 ì°¾ì„ ìˆ˜ 없어, 내보낼 수 없었습니다."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "keystore를 ì°¾ì„ ìˆ˜ 없어, 내보낼 수 없었습니다."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "ìž˜ëª»ëœ ì‹ë³„ìž:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "올바르지 ì•Šì€ ì´ë¦„입니다."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "임시 파ì¼ì„ 제거할 수 ì—†ìŒ:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20106,6 +20438,23 @@ msgid "Invalid product version:"
msgstr "ìž˜ëª»ëœ ì œí’ˆ GUID."
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "ìž˜ëª»ëœ í™•ìž¥ìž."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "새 창"
@@ -20122,6 +20471,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20246,7 +20599,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "거리 ì„ íƒ:"
@@ -21110,17 +21464,19 @@ msgstr ""
"ì†ì„±ì„ 설정하거나 í´ë¦¬ê³¤ì„ 그려주세요."
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-"NavigationPolygonInstance는 Navigation2D ë…¸ë“œì˜ ìžì‹ì´ë‚˜ ì†ì£¼ì— 있어야 합니"
-"다. ì´ê²ƒì€ 내비게ì´ì…˜ ë°ì´í„°ë§Œì„ 제공합니다."
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr ""
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "아래쪽 중앙"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "ì§„í–‰"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
#, fuzzy
@@ -22352,14 +22708,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-"NavigationMeshInstance는 Navigation ë…¸ë“œì˜ ìžì‹ì´ë‚˜ ì†ì£¼ì— 있어야 합니다. ì´"
-"ê²ƒì€ ë‚´ë¹„ê²Œì´ì…˜ ë°ì´í„°ë§Œ 제공합니다."
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
#, fuzzy
msgid "NavMesh"
@@ -24842,9 +25190,8 @@ msgid "Draw 2D Outlines"
msgstr "윤곽선 만들기"
#: scene/main/scene_tree.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Reflections"
-msgstr "ë°©í–¥"
+msgstr "반사"
#: scene/main/scene_tree.cpp
#, fuzzy
@@ -25093,6 +25440,16 @@ msgid "3D Physics"
msgstr " (물리)"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "네비게ì´ì…˜"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "네비게ì´ì…˜"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -26519,7 +26876,7 @@ msgstr "전환: "
msgid "Refraction"
msgstr "간격:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -26604,7 +26961,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "í¬ê¸° ì¡°ì ˆ 중: "
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "변수 타입 설정"
#: scene/resources/navigation_mesh.cpp
@@ -26622,10 +26984,15 @@ msgid "Source Group Name"
msgstr "소스"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "ë©”ì¸ ì”¬ ì¸ìˆ˜:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -26635,11 +27002,16 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Regions"
+msgstr "ì˜ì—­"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Merge Size"
msgstr "씬ì—서 병합하기"
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26653,6 +27025,11 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Details"
+msgstr "ë””í´íЏ ë³´ì´ê¸°"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Sample Distance"
msgstr "거리 ì„ íƒ:"
@@ -26670,7 +27047,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -27087,6 +27464,11 @@ msgid "Scenario"
msgstr "씬"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "네비게ì´ì…˜"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -27104,6 +27486,26 @@ msgstr "왼쪽 선형"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "기본 ë¶€ë™ ì†Œìˆ˜ì  ë‹¨ê³„"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "ë””í´íЏ 미리보기"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "테스트"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "연결 변경:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/lt.po b/editor/translations/lt.po
index f3472fc6b9..5f0e9b24ad 100644
--- a/editor/translations/lt.po
+++ b/editor/translations/lt.po
@@ -220,9 +220,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
#, fuzzy
msgid "Network"
msgstr "Importuoti iš Nodo:"
@@ -334,7 +335,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Nepakanka baitų iššifruoti baitams, arba netinkamas formatas."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "Netinkama įvestis išraiškoje %i (nepraleista)"
#: core/math/expression.cpp
@@ -378,6 +380,15 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "TimeScale Nodas"
+
+#: core/os/input.cpp
+msgid "Use Accumulated Input"
+msgstr ""
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -571,7 +582,8 @@ msgstr "Aprašymas:"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr ""
@@ -656,6 +668,11 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Kelias iki Scenos:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -663,20 +680,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
+#: core/project_settings.cpp
#, fuzzy
-msgid "Version Control"
+msgid "Version Control Autoload On Startup"
msgstr "Versija:"
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
-
-#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Priedai"
+msgid "Version Control Plugin Name"
+msgstr "Versija:"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -787,7 +799,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "Filtrai..."
@@ -1061,6 +1074,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Nemokama"
@@ -1077,7 +1091,7 @@ msgstr "AtspindÄ—ti"
msgid "Time:"
msgstr "TrukmÄ—:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Reikšmė:"
@@ -1331,10 +1345,70 @@ msgid "Remove this track."
msgstr "Panaikinti šį įrašą."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "Laikas (-ai): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Sukurti NaujÄ…"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Konstanta"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "SkalÄ—:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Netinkamas šrifto dydis."
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Stream:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "PradÄ—ti!"
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Animacija"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "Koreguoti įrašą į įjungtas"
@@ -1549,7 +1623,7 @@ msgid "Add Method Track Key"
msgstr "Animacija: Pridėti Takelį"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+msgid "Method not found in object:"
msgstr ""
#: editor/animation_track_editor.cpp
@@ -2167,7 +2241,7 @@ msgid "Open"
msgstr "Atidaryti"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
+msgid "Owners of: %s (Total: %d)"
msgstr ""
#: editor/dependency_editor.cpp
@@ -2461,7 +2535,7 @@ msgid "Bus Options"
msgstr "Aprašymas:"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Duplikuoti"
@@ -2513,8 +2587,8 @@ msgstr ""
msgid "There is no '%s' file."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+msgid "Layout:"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -2718,6 +2792,22 @@ msgid "Choose"
msgstr "Pasirinkite"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed successfully."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed."
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr ""
@@ -2730,6 +2820,28 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp
+msgid "Save PCK"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "Nepavyko pašalinti laikino failo:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Filtrai..."
+
+#: editor/editor_export.cpp
+msgid "Can't open file to read from path \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Save ZIP"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2833,8 +2945,27 @@ msgstr ""
msgid "Custom release template not found."
msgstr ""
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "Pasirinkite Nodus, kuriuos norite importuoti"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "The given export path doesn't exist."
+msgstr ""
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
+msgstr "Animacijos Nodas"
+
+#: editor/editor_export.cpp
+msgid "Failed to copy export template."
+msgstr ""
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
msgstr ""
#: editor/editor_export.cpp
@@ -3018,9 +3149,9 @@ msgid "Import"
msgstr ""
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr ""
@@ -4132,15 +4263,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Kelias iki Scenos:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4263,6 +4385,11 @@ msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
+msgid "Version Control"
+msgstr "Versija:"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+#, fuzzy
msgid "Username"
msgstr "Naujas pavadinimas:"
@@ -4290,6 +4417,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
@@ -4938,11 +5069,13 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+msgid "Page:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
@@ -5041,6 +5174,11 @@ msgid ""
"as runnable."
msgstr ""
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Aprašymas:"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -5307,7 +5445,9 @@ msgid "Draw Spaces"
msgstr ""
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
#, fuzzy
msgid "Navigation"
msgstr "Animacijos Nodas"
@@ -5869,10 +6009,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Sorting Order"
msgstr ""
@@ -6634,14 +6776,6 @@ msgid "Replace in Files"
msgstr "Pakeisti Visus"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr ""
-
-#: editor/find_in_files.cpp
#, fuzzy
msgid "Replace All (NO UNDO)"
msgstr "Pakeisti Visus"
@@ -6773,7 +6907,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Filtrai..."
@@ -7031,7 +7165,7 @@ msgid "Generating Lightmaps"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+msgid "Generating for Mesh:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -7059,6 +7193,18 @@ msgid "Saving..."
msgstr ""
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7873,10 +8019,12 @@ msgstr ""
msgid "Directions"
msgstr "Aprašymas:"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr ""
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr ""
@@ -8041,7 +8189,7 @@ msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
#, fuzzy
-msgid "Transition: "
+msgid "Transition:"
msgstr "Transition Nodas"
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8060,11 +8208,6 @@ msgid "New name:"
msgstr "Naujas pavadinimas:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "SkalÄ—:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr ""
@@ -8978,6 +9121,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr ""
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9041,6 +9185,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -9805,7 +9953,7 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+msgid "Emission Source:"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
@@ -10042,6 +10190,7 @@ msgid "Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
#, fuzzy
msgid "Polygons"
msgstr "Priedai"
@@ -10199,13 +10348,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -10214,10 +10356,6 @@ msgstr ""
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -10934,13 +11072,17 @@ msgstr ""
msgid "Translate"
msgstr ""
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr ""
+#, fuzzy
+msgid "Scaling:"
+msgstr "SkalÄ—:"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "Transition Nodas"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -10963,11 +11105,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11453,8 +11590,9 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
-msgstr ""
+#, fuzzy
+msgid "Convert to MeshInstance2D"
+msgstr "Keisti Poligono SkalÄ™"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Invalid geometry, can't create polygon."
@@ -11487,15 +11625,16 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "Animacija"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12468,8 +12607,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
#, fuzzy
msgid "Region"
msgstr "Animacijos Nodas"
@@ -13967,31 +14105,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
#, fuzzy
msgid "Export Path"
msgstr "Importuoti iš Nodo:"
@@ -14131,6 +14248,11 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Aprašymas:"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr ""
@@ -15598,8 +15720,9 @@ msgid "Attach Node Script"
msgstr ""
#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr ""
+#, fuzzy
+msgid "Remote %s:"
+msgstr "Panaikinti"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -16445,7 +16568,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "Priedai"
@@ -16616,7 +16739,7 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+msgid "Libraries:"
msgstr ""
#: modules/gdnative/nativescript/nativescript.cpp
@@ -17038,7 +17161,6 @@ msgid "Use In Baked Light"
msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17068,6 +17190,19 @@ msgstr "Ištrinti Efektą"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Animacijos Nodas"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Animacijos Nodas"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -17478,7 +17613,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17486,7 +17621,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17868,7 +18003,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17876,7 +18011,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18035,12 +18170,14 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
+#, fuzzy
+msgid "Invalid argument of type:"
+msgstr "Netinkami argumentai sukurti '%s'"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
+#, fuzzy
+msgid "Invalid arguments:"
+msgstr "Netinkamas šrifto dydis."
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -18052,11 +18189,11 @@ msgid "Var Name"
msgstr "Vardas"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+msgid "VariableGet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+msgid "VariableSet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
@@ -18579,10 +18716,6 @@ msgid "Could not execute on device."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18687,12 +18820,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Signalai"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18708,6 +18845,10 @@ msgid "Could not find keystore, unable to export."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Could not start apksigner executable."
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -18736,7 +18877,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18747,19 +18888,17 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+msgid "Could not export project files to gradle project."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18772,7 +18911,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -18788,7 +18927,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr "Animacijos Nodas"
#: platform/android/export/export_plugin.cpp
@@ -18796,15 +18935,12 @@ msgid "Creating APK..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -18815,8 +18951,9 @@ msgid "Adding files..."
msgstr "Filtrai..."
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
-msgstr ""
+#, fuzzy
+msgid "Could not export project files."
+msgstr "PradÄ—ti ProfiliavimÄ…"
#: platform/android/export/export_plugin.cpp
msgid "Aligning APK..."
@@ -19056,6 +19193,15 @@ msgstr "Transition Nodas"
msgid "Custom BG Color"
msgstr "Transition Nodas"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+msgid "Prepare Templates"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Export template not found."
+msgstr ""
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -19078,23 +19224,34 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Could not open template for export: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
-msgstr ""
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
+msgstr "Netinkamas šrifto dydis."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr ""
+#, fuzzy
+msgid "Could not write file: \"%s\"."
+msgstr "PradÄ—ti ProfiliavimÄ…"
+
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Prijungti"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read file:"
+msgid "Could not read file: \"%s\"."
msgstr "PradÄ—ti ProfiliavimÄ…"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "Versija:"
@@ -19169,16 +19326,18 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
-msgstr ""
+#, fuzzy
+msgid "Could not read HTML shell: \"%s\"."
+msgstr "PradÄ—ti ProfiliavimÄ…"
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
-msgstr ""
+#, fuzzy
+msgid "Error starting HTTP server: %d."
+msgstr "Įvyko klaida kraunant šriftą."
#: platform/javascript/export/export.cpp
msgid "Web"
@@ -19470,9 +19629,27 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "PradÄ—ti ProfiliavimÄ…"
+
+#: platform/osx/export/export.cpp
+msgid "Could not start xcrun executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Animacijos Nodas"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19488,19 +19665,73 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "Konstanta"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Įvyko klaida kraunant šriftą."
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Aprašymas:"
+
+#: platform/osx/export/export.cpp
+msgid "Could not start hdiutil executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Creating app bundle"
msgstr ""
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Netinkamas šrifto dydis."
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -19508,7 +19739,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -19550,6 +19781,15 @@ msgstr ""
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "ZIP Creation"
+msgstr "Aprašymas:"
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Invalid bundle identifier:"
msgstr "Netinkamas šrifto dydis."
@@ -19861,6 +20101,11 @@ msgid "Debug Algorithm"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Nepavyko pašalinti laikino failo:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -19907,6 +20152,66 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Konstanta"
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Netinkamas šrifto dydis."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Netinkamas šrifto dydis."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "Nepavyko pašalinti laikino failo:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19928,6 +20233,23 @@ msgid "Invalid product version:"
msgstr "Netinkamas šrifto dydis."
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Netinkamas šrifto dydis."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Windows"
msgstr ""
@@ -19943,6 +20265,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20061,7 +20387,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
@@ -20858,13 +21185,16 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
+msgid "Navpoly"
msgstr ""
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Ištrinti Efektą"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Travel Cost"
msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
@@ -21994,12 +22324,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -24540,6 +24864,16 @@ msgid "3D Physics"
msgstr "Fizikos Kadro %"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Animacijos Nodas"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Animacijos Nodas"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -25911,7 +26245,7 @@ msgstr "Transition Nodas"
msgid "Refraction"
msgstr "Versija:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -25991,8 +26325,14 @@ msgid "Visible Instance Count"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Sample Partition Type"
-msgstr ""
+#, fuzzy
+msgid "Sampling"
+msgstr "SkalÄ—:"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
+msgstr "Versija:"
#: scene/resources/navigation_mesh.cpp
msgid "Parsed Geometry Type"
@@ -26007,10 +26347,15 @@ msgid "Source Group Name"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "Atidaryti Skriptų Editorių"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -26019,11 +26364,16 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Regions"
+msgstr "Animacijos Nodas"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26036,6 +26386,11 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Details"
+msgstr "Redaguoti Filtrus"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -26052,7 +26407,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -26447,6 +26802,11 @@ msgid "Scenario"
msgstr "Kelias iki Scenos:"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Animacijos Nodas"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -26464,6 +26824,26 @@ msgstr "Redaguoti Filtrus"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Atnaujinti"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Atnaujinti"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Redaguoti Filtrus"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Prijungti"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/lv.po b/editor/translations/lv.po
index 31c69fd929..7397c083fa 100644
--- a/editor/translations/lv.po
+++ b/editor/translations/lv.po
@@ -222,9 +222,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr ""
@@ -335,7 +336,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Nepietiekams skaits baitu lai dekodÄ“tu baitus vai nepareizs formÄts."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "NederÄ«ga ievade %i (nav padota) izteikumÄ"
#: core/math/expression.cpp
@@ -380,6 +382,15 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Mēroga Režīms"
+
+#: core/os/input.cpp
+msgid "Use Accumulated Input"
+msgstr ""
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -574,7 +585,8 @@ msgstr "Apraksts"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "Palaist"
@@ -663,6 +675,11 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Ainas ceļš:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -670,19 +687,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Versiju Kontrole"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Versiju Kontrole"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Spraudņi"
+msgid "Version Control Plugin Name"
+msgstr "Versiju Kontrole"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -797,7 +810,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "Filtrs:"
@@ -1073,6 +1087,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Bezmaksas"
@@ -1089,7 +1104,7 @@ msgstr "Spogulis"
msgid "Time:"
msgstr "Laiks:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Vērtība:"
@@ -1336,10 +1351,71 @@ msgid "Remove this track."
msgstr "Noņemt šo celiņu."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "Laiks (s): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Doka pozīcija"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "LokalizÄcija"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "Mērogs:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "Tips:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "NederÄ«gs paplaÅ¡inÄjums."
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Easing:"
+msgstr "Mērogs: "
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Stream:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "SÄkt"
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "AnimÄcijas:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "PÄrslÄ“gt Celiņu uz IespÄ“jotu"
@@ -1552,7 +1628,8 @@ msgid "Add Method Track Key"
msgstr "Pievienot Celiņa Metodes Atslēgu"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "Metode objektÄ netika atrasta: "
#: editor/animation_track_editor.cpp
@@ -2163,8 +2240,8 @@ msgid "Open"
msgstr "Atvērt"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Īpašnieki:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
msgid ""
@@ -2467,7 +2544,7 @@ msgid "Bus Options"
msgstr "Kopnes Iestatījumi"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Izveidot dublikÄtu"
@@ -2519,8 +2596,9 @@ msgstr "AtvÄ“rt audio kopnes izkÄrtojumu"
msgid "There is no '%s' file."
msgstr "Fails '%s' neeksistē."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "IzkÄrtojums"
#: editor/editor_audio_buses.cpp
@@ -2726,6 +2804,25 @@ msgid "Choose"
msgstr "Izvēlaties"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "Kopēt mezgla ceļu"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "Pakete instalēta sekmīgi!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "NeizdevÄs:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Faila saglabÄÅ¡ana:"
@@ -2738,6 +2835,31 @@ msgid "Packing"
msgstr "Pako"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "SaglabÄt KÄ"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "NeizdevÄs izveidot mapi."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Filtrēt projektus"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Nevar atvērt failu rakstīšanai:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "SaglabÄt KÄ"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2857,11 +2979,30 @@ msgstr "PielÄgots atkļūdoÅ¡anas Å¡ablons nav atrasts."
msgid "Custom release template not found."
msgstr "PielÄgots relÄ«zes Å¡ablons nav atrasts."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "PÄrvaldÄ«t Å¡ablonus"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "The given export path doesn't exist."
+msgstr ""
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "Å ablona fails nav atrasts:"
#: editor/editor_export.cpp
+msgid "Failed to copy export template."
+msgstr ""
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr "Pie 32-bitu eksportēšanas, iepakotais PCK nevar bÅ«t lielÄks par 4GB."
@@ -3033,9 +3174,9 @@ msgid "Import"
msgstr "Importēt"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Eksportēt"
@@ -4187,15 +4328,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Aina"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Ainas ceļš:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4320,6 +4452,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Versiju Kontrole"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "PÄrsaukt"
@@ -4348,6 +4484,10 @@ msgstr "PÄrslÄ“gt traucÄ“jumu brÄ«vo režīmu."
msgid "Add a new scene."
msgstr "Pievienot jaunu ainu."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Aina"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Iet uz iepriekš atvērto ainu."
@@ -4998,11 +5138,14 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr "Izmērs: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
+msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+#, fuzzy
+msgid "Page:"
msgstr "Lapa: "
#: editor/editor_properties_array_dict.cpp
@@ -5098,6 +5241,11 @@ msgid ""
"as runnable."
msgstr ""
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Projekts"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Raksti savu loģiku _run() metodē."
@@ -5368,7 +5516,9 @@ msgid "Draw Spaces"
msgstr ""
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr "NavigÄcija"
@@ -5941,10 +6091,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -6684,14 +6836,6 @@ msgid "Replace in Files"
msgstr "Aizvietot failos"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "Aizvietot: "
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr "Aizvietot visu (Nevar atsaukt)"
@@ -6820,7 +6964,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Filtrs:"
@@ -7081,7 +7225,7 @@ msgid "Generating Lightmaps"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+msgid "Generating for Mesh:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -7109,6 +7253,18 @@ msgid "Saving..."
msgstr "SaglabÄ..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7897,10 +8053,12 @@ msgstr ""
msgid "Directions"
msgstr "Virzieni"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "PagÄtne"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "NÄkotne"
@@ -8055,8 +8213,9 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
-msgstr ""
+#, fuzzy
+msgid "Transition:"
+msgstr "Pievienot PÄreju"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Play Mode:"
@@ -8072,11 +8231,6 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "Mērogs:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr ""
@@ -8964,6 +9118,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr ""
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9028,6 +9183,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "IzkÄrtojums"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -9772,8 +9931,9 @@ msgid "Volume"
msgstr "Tilpums"
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr ""
+#, fuzzy
+msgid "Emission Source:"
+msgstr "Redzamas sadursmes formas"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
@@ -10002,6 +10162,7 @@ msgid "Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr "Daudzstūri"
@@ -10155,13 +10316,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "Tips:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -10170,10 +10324,6 @@ msgstr ""
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -10866,13 +11016,17 @@ msgstr ""
msgid "Translate"
msgstr ""
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
+#, fuzzy
+msgid "Scaling:"
msgstr "Mērogs: "
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "PÄreja eksistÄ“!"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -10895,11 +11049,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11375,8 +11524,9 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
-msgstr ""
+#, fuzzy
+msgid "Convert to MeshInstance2D"
+msgstr "Konvertēt uz CPUParticles2D"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Invalid geometry, can't create polygon."
@@ -11407,15 +11557,16 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "Darbība"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12348,8 +12499,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr "Reģions"
@@ -13792,31 +13942,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr ""
@@ -13954,6 +14083,11 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Projekta DibinÄtÄji"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "PÄrvaldÄ«t Eksporta Å ablonus"
@@ -15390,8 +15524,9 @@ msgid "Attach Node Script"
msgstr "Pievienot mezgla skriptu"
#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr ""
+#, fuzzy
+msgid "Remote %s:"
+msgstr "Noņemt"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -16244,7 +16379,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "Daudzstūri"
@@ -16416,7 +16551,8 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+#, fuzzy
+msgid "Libraries:"
msgstr "Bibliotēkas: "
#: modules/gdnative/nativescript/nativescript.cpp
@@ -16839,7 +16975,6 @@ msgid "Use In Baked Light"
msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -16869,6 +17004,19 @@ msgstr "Centrēt mezglu"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "NavigÄcija"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "NavigÄcijas režīms"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -17274,7 +17422,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17282,7 +17430,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17646,7 +17794,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17654,7 +17802,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17821,12 +17969,14 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
+#, fuzzy
+msgid "Invalid argument of type:"
+msgstr "Nederīgs arguments, lai izveidotu '%s'"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
+#, fuzzy
+msgid "Invalid arguments:"
+msgstr "Nederīgs nosaukums."
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -17838,12 +17988,14 @@ msgid "Var Name"
msgstr "Nosaukums"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableGet not found in script:"
+msgstr "Metode objektÄ netika atrasta: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableSet not found in script:"
+msgstr "Metode objektÄ netika atrasta: "
#: modules/visual_script/visual_script_nodes.cpp
#, fuzzy
@@ -18371,10 +18523,6 @@ msgid "Could not execute on device."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18478,12 +18626,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "SignÄls"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18499,6 +18651,11 @@ msgid "Could not find keystore, unable to export."
msgstr ""
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "Nevar palaist sub-procesu!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -18527,7 +18684,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18538,19 +18695,17 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+msgid "Could not export project files to gradle project."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18563,7 +18718,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -18578,7 +18733,8 @@ msgid ""
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+#, fuzzy
+msgid "Package not found: \"%s\"."
msgstr "Paka nav atrasta: %s"
#: platform/android/export/export_plugin.cpp
@@ -18586,15 +18742,12 @@ msgid "Creating APK..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -18604,8 +18757,9 @@ msgid "Adding files..."
msgstr "Failu pievienošana..."
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
-msgstr ""
+#, fuzzy
+msgid "Could not export project files."
+msgstr "Nevar palaist sub-procesu!"
#: platform/android/export/export_plugin.cpp
msgid "Aligning APK..."
@@ -18846,6 +19000,17 @@ msgstr "Izgriezt mezglu(s)"
msgid "Custom BG Color"
msgstr "Izgriezt mezglu(s)"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "PÄrvaldÄ«t Å¡ablonus"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "PielÄgots relÄ«zes Å¡ablons nav atrasts."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18867,19 +19032,32 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
-msgstr ""
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
+msgstr "NeizdevÄs izveidot mapi."
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
-msgstr ""
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
+msgstr "NederÄ«gs paplaÅ¡inÄjums."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr ""
+#, fuzzy
+msgid "Could not write file: \"%s\"."
+msgstr "NeizdevÄs izveidot mapi."
+
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Saturs:"
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+#, fuzzy
+msgid "Could not read file: \"%s\"."
+msgstr "NeizdevÄs izveidot mapi."
+
+#: platform/javascript/export/export.cpp
+msgid "PWA"
msgstr ""
#: platform/javascript/export/export.cpp
@@ -18957,16 +19135,18 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
-msgstr ""
+#, fuzzy
+msgid "Could not create HTTP server directory: %s."
+msgstr "NeizdevÄs izveidot mapi."
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
-msgstr ""
+#, fuzzy
+msgid "Error starting HTTP server: %d."
+msgstr "Kļūda saglabÄjot failu: %s"
#: platform/javascript/export/export.cpp
msgid "Web"
@@ -19256,9 +19436,27 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Could not open icon file \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "Nevar palaist sub-procesu!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "LokalizÄcija"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19274,19 +19472,74 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
msgid "No identity found."
msgstr ""
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Kļūda saglabÄjot failu: %s"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Virzieni"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "Nevar palaist sub-procesu!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "Izveido sīktēlu"
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "NederÄ«gs bÄzes ceļš."
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -19294,7 +19547,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -19335,6 +19588,15 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "Projekts"
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr "Nederīgs bunduļa identifikators:"
@@ -19645,6 +19907,11 @@ msgid "Debug Algorithm"
msgstr "AtkļūdotÄjs"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Nevar noņemt pagaidu failu:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -19692,6 +19959,66 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Konstante"
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Nederīgs Identifikators:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Nederīgs nosaukums."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "Nevar noņemt pagaidu failu:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19713,6 +20040,23 @@ msgid "Invalid product version:"
msgstr "Nederīgs produkta GUID."
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "NederÄ«gs paplaÅ¡inÄjums."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "Jauns logs"
@@ -19729,6 +20073,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -19850,7 +20198,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Å ablons"
@@ -20660,13 +21009,16 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
+msgid "Navpoly"
msgstr ""
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Centrēt mezglu"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Travel Cost"
msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
@@ -21807,12 +22159,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -24397,6 +24743,16 @@ msgid "3D Physics"
msgstr "Fizikas kadrs %"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "NavigÄcija"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "NavigÄcija"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -25780,7 +26136,7 @@ msgstr "Pievienot PÄreju"
msgid "Refraction"
msgstr "Atdalījums:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -25860,7 +26216,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "Mērogs: "
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "NomainÄ«t BÄzes Tipu:"
#: scene/resources/navigation_mesh.cpp
@@ -25877,10 +26238,15 @@ msgid "Source Group Name"
msgstr "Avots"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "Saturs:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -25890,11 +26256,16 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Regions"
+msgstr "Reģions"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Merge Size"
msgstr "SapludinÄt no ainas"
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -25907,6 +26278,11 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Details"
+msgstr "RÄdÄ«t noklusÄ“jumu"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -25923,7 +26299,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -26324,6 +26700,11 @@ msgid "Scenario"
msgstr "Aina"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "NavigÄcija"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -26340,6 +26721,26 @@ msgstr "Pa Kreisi, LineÄrs"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Noklusējuma"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Noklusējuma motīvs"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Testē"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Izmainīt Savienojumu:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/mi.po b/editor/translations/mi.po
deleted file mode 100644
index 3d793d8bab..0000000000
--- a/editor/translations/mi.po
+++ /dev/null
@@ -1,25656 +0,0 @@
-# MÄori translation of the Godot Engine editor
-# Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur.
-# Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md).
-# This file is distributed under the same license as the Godot source code.
-# follower <follower@rancidbacon.com>, 2019.
-msgid ""
-msgstr ""
-"Project-Id-Version: Godot Engine editor\n"
-"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"Language: mi\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
-
-#: core/bind/core_bind.cpp main/main.cpp
-msgid "Tablet Driver"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Clipboard"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Current Screen"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Exit Code"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "V-Sync Enabled"
-msgstr ""
-
-#: core/bind/core_bind.cpp main/main.cpp
-msgid "V-Sync Via Compositor"
-msgstr ""
-
-#: core/bind/core_bind.cpp main/main.cpp
-msgid "Delta Smoothing"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Low Processor Usage Mode"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Low Processor Usage Mode Sleep (µsec)"
-msgstr ""
-
-#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
-msgid "Keep Screen On"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Min Window Size"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Max Window Size"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Screen Orientation"
-msgstr ""
-
-#: core/bind/core_bind.cpp core/project_settings.cpp main/main.cpp
-#: platform/uwp/os_uwp.cpp
-msgid "Window"
-msgstr ""
-
-#: core/bind/core_bind.cpp core/project_settings.cpp
-msgid "Borderless"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Per Pixel Transparency Enabled"
-msgstr ""
-
-#: core/bind/core_bind.cpp core/project_settings.cpp
-msgid "Fullscreen"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Maximized"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Minimized"
-msgstr ""
-
-#: core/bind/core_bind.cpp core/project_settings.cpp scene/gui/dialogs.cpp
-#: scene/gui/graph_node.cpp
-msgid "Resizable"
-msgstr ""
-
-#: core/bind/core_bind.cpp core/os/input_event.cpp scene/2d/node_2d.cpp
-#: scene/2d/physics_body_2d.cpp scene/2d/remote_transform_2d.cpp
-#: scene/3d/physics_body.cpp scene/3d/remote_transform.cpp
-#: scene/gui/control.cpp scene/gui/line_edit.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Position"
-msgstr ""
-
-#: core/bind/core_bind.cpp core/project_settings.cpp editor/editor_settings.cpp
-#: main/main.cpp modules/gridmap/grid_map.cpp
-#: modules/visual_script/visual_script_nodes.cpp scene/2d/tile_map.cpp
-#: scene/3d/camera.cpp scene/3d/light.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
-#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/texture.cpp
-#: scene/resources/visual_shader.cpp servers/visual_server.cpp
-msgid "Size"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Endian Swap"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Editor Hint"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Print Error Messages"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Iterations Per Second"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Target FPS"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Time Scale"
-msgstr ""
-
-#: core/bind/core_bind.cpp main/main.cpp
-msgid "Physics Jitter Fix"
-msgstr ""
-
-#: core/bind/core_bind.cpp editor/plugins/version_control_editor_plugin.cpp
-msgid "Error"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Error String"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Error Line"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Result"
-msgstr ""
-
-#: core/command_queue_mt.cpp core/message_queue.cpp main/main.cpp
-msgid "Memory"
-msgstr ""
-
-#: core/command_queue_mt.cpp core/message_queue.cpp
-#: core/register_core_types.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles2/rasterizer_scene_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-#: drivers/gles3/rasterizer_storage_gles3.cpp main/main.cpp
-#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
-#: servers/visual_server.cpp
-msgid "Limits"
-msgstr ""
-
-#: core/command_queue_mt.cpp
-msgid "Command Queue"
-msgstr ""
-
-#: core/command_queue_mt.cpp
-msgid "Multithreading Queue Size (KB)"
-msgstr ""
-
-#: core/func_ref.cpp modules/visual_script/visual_script_builtin_funcs.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Function"
-msgstr ""
-
-#: core/image.cpp core/packed_data_container.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-msgid "Data"
-msgstr ""
-
-#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
-msgid "Network"
-msgstr ""
-
-#: core/io/file_access_network.cpp
-msgid "Remote FS"
-msgstr ""
-
-#: core/io/file_access_network.cpp
-msgid "Page Size"
-msgstr ""
-
-#: core/io/file_access_network.cpp
-msgid "Page Read Ahead"
-msgstr ""
-
-#: core/io/http_client.cpp
-msgid "Blocking Mode Enabled"
-msgstr ""
-
-#: core/io/http_client.cpp
-msgid "Connection"
-msgstr ""
-
-#: core/io/http_client.cpp
-msgid "Read Chunk Size"
-msgstr ""
-
-#: core/io/marshalls.cpp
-msgid "Object ID"
-msgstr ""
-
-#: core/io/multiplayer_api.cpp core/io/packet_peer.cpp
-msgid "Allow Object Decoding"
-msgstr ""
-
-#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
-msgid "Refuse New Network Connections"
-msgstr ""
-
-#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
-msgid "Network Peer"
-msgstr ""
-
-#: core/io/multiplayer_api.cpp scene/animation/animation_player.cpp
-msgid "Root Node"
-msgstr ""
-
-#: core/io/networked_multiplayer_peer.cpp
-msgid "Refuse New Connections"
-msgstr ""
-
-#: core/io/networked_multiplayer_peer.cpp
-msgid "Transfer Mode"
-msgstr ""
-
-#: core/io/packet_peer.cpp
-msgid "Encode Buffer Max Size"
-msgstr ""
-
-#: core/io/packet_peer.cpp
-msgid "Input Buffer Max Size"
-msgstr ""
-
-#: core/io/packet_peer.cpp
-msgid "Output Buffer Max Size"
-msgstr ""
-
-#: core/io/packet_peer.cpp
-msgid "Stream Peer"
-msgstr ""
-
-#: core/io/stream_peer.cpp
-msgid "Big Endian"
-msgstr ""
-
-#: core/io/stream_peer.cpp
-msgid "Data Array"
-msgstr ""
-
-#: core/io/stream_peer_ssl.cpp
-msgid "Blocking Handshake"
-msgstr ""
-
-#: core/io/udp_server.cpp
-msgid "Max Pending Connections"
-msgstr ""
-
-#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
-#: modules/visual_script/visual_script_builtin_funcs.cpp
-msgid "Invalid type argument to convert(), use TYPE_* constants."
-msgstr ""
-
-#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
-msgid "Expected a string of length 1 (a character)."
-msgstr ""
-
-#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
-#: modules/mono/glue/gd_glue.cpp
-#: modules/visual_script/visual_script_builtin_funcs.cpp
-msgid "Not enough bytes for decoding bytes, or invalid format."
-msgstr ""
-
-#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
-msgstr ""
-
-#: core/math/expression.cpp
-msgid "self can't be used because instance is null (not passed)"
-msgstr ""
-
-#: core/math/expression.cpp
-msgid "Invalid operands to operator %s, %s and %s."
-msgstr ""
-
-#: core/math/expression.cpp
-msgid "Invalid index of type %s for base type %s"
-msgstr ""
-
-#: core/math/expression.cpp
-msgid "Invalid named index '%s' for base type %s"
-msgstr ""
-
-#: core/math/expression.cpp
-msgid "Invalid arguments to construct '%s'"
-msgstr ""
-
-#: core/math/expression.cpp
-msgid "On call to '%s':"
-msgstr ""
-
-#: core/math/random_number_generator.cpp
-#: modules/opensimplex/open_simplex_noise.cpp
-msgid "Seed"
-msgstr ""
-
-#: core/math/random_number_generator.cpp
-msgid "State"
-msgstr ""
-
-#: core/message_queue.cpp
-msgid "Message Queue"
-msgstr ""
-
-#: core/message_queue.cpp
-msgid "Max Size (KB)"
-msgstr ""
-
-#: core/os/input_event.cpp editor/project_settings_editor.cpp
-#: servers/audio_server.cpp
-msgid "Device"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Alt"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Shift"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Control"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Meta"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Command"
-msgstr ""
-
-#: core/os/input_event.cpp scene/2d/touch_screen_button.cpp
-#: scene/gui/base_button.cpp scene/gui/texture_button.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Pressed"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Scancode"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Physical Scancode"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Unicode"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Echo"
-msgstr ""
-
-#: core/os/input_event.cpp scene/gui/base_button.cpp
-msgid "Button Mask"
-msgstr ""
-
-#: core/os/input_event.cpp scene/2d/node_2d.cpp scene/gui/control.cpp
-msgid "Global Position"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Factor"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Button Index"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Doubleclick"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Tilt"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Pressure"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Relative"
-msgstr ""
-
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/animation_player.cpp scene/resources/environment.cpp
-#: scene/resources/particles_material.cpp
-msgid "Speed"
-msgstr ""
-
-#: core/os/input_event.cpp editor/project_settings_editor.cpp
-#: scene/3d/sprite_3d.cpp
-msgid "Axis"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Axis Value"
-msgstr ""
-
-#: core/os/input_event.cpp modules/visual_script/visual_script_func_nodes.cpp
-msgid "Index"
-msgstr ""
-
-#: core/os/input_event.cpp editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/touch_screen_button.cpp
-msgid "Action"
-msgstr ""
-
-#: core/os/input_event.cpp scene/resources/environment.cpp
-#: scene/resources/material.cpp
-msgid "Strength"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Delta"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Channel"
-msgstr ""
-
-#: core/os/input_event.cpp main/main.cpp
-msgid "Message"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Pitch"
-msgstr ""
-
-#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
-msgid "Velocity"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Instrument"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Controller Number"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Controller Value"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-#: platform/windows/export/export.cpp
-msgid "Application"
-msgstr ""
-
-#: core/project_settings.cpp main/main.cpp
-msgid "Config"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Project Settings Override"
-msgstr ""
-
-#: core/project_settings.cpp core/resource.cpp
-#: editor/animation_track_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/editor_help_search.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_profiler.cpp editor/plugins/tile_set_editor_plugin.cpp
-#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp
-#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
-#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
-#: scene/3d/skeleton.cpp scene/main/node.cpp scene/resources/mesh_library.cpp
-#: scene/resources/skin.cpp
-msgid "Name"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
-msgid "Description"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
-msgid "Run"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/run_settings_dialog.cpp main/main.cpp
-msgid "Main Scene"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Disable stdout"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Disable stderr"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Use Hidden Project Data Directory"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Use Custom User Dir"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Custom User Dir Name"
-msgstr ""
-
-#: core/project_settings.cpp main/main.cpp
-#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
-#: platform/uwp/os_uwp.cpp
-msgid "Display"
-msgstr ""
-
-#: core/project_settings.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/opensimplex/noise_texture.cpp scene/2d/line_2d.cpp
-#: scene/3d/label_3d.cpp scene/gui/text_edit.cpp scene/resources/texture.cpp
-msgid "Width"
-msgstr ""
-
-#: core/project_settings.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/gltf/gltf_node.cpp modules/opensimplex/noise_texture.cpp
-#: scene/2d/light_2d.cpp scene/resources/capsule_shape.cpp
-#: scene/resources/capsule_shape_2d.cpp scene/resources/cylinder_shape.cpp
-#: scene/resources/font.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/primitive_meshes.cpp scene/resources/texture.cpp
-msgid "Height"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Always On Top"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Test Width"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Test Height"
-msgstr ""
-
-#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
-msgid "Audio"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Default Bus Layout"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_export.cpp
-#: editor/editor_file_system.cpp editor/editor_node.cpp
-#: editor/editor_settings.cpp editor/script_create_dialog.cpp
-#: scene/2d/camera_2d.cpp scene/3d/light.cpp scene/main/node.cpp
-msgid "Editor"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Main Run Args"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Search In File Extensions"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Script Templates Search Path"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr ""
-
-#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
-#: scene/3d/collision_object.cpp scene/gui/control.cpp
-msgid "Input"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Accept"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Select"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Cancel"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Focus Next"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Focus Prev"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Left"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Right"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Up"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Down"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Page Up"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Page Down"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Home"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI End"
-msgstr ""
-
-#: core/project_settings.cpp main/main.cpp modules/bullet/register_types.cpp
-#: modules/bullet/space_bullet.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp scene/main/scene_tree.cpp scene/main/viewport.cpp
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#: servers/physics/space_sw.cpp servers/physics_2d/physics_2d_server_sw.cpp
-#: servers/physics_2d/physics_2d_server_wrap_mt.h
-#: servers/physics_2d/space_2d_sw.cpp servers/physics_2d_server.cpp
-#: servers/physics_server.cpp
-msgid "Physics"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_settings.cpp
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp
-#: editor/plugins/spatial_editor_plugin.cpp main/main.cpp
-#: modules/bullet/register_types.cpp modules/bullet/space_bullet.cpp
-#: scene/3d/physics_body.cpp scene/resources/world.cpp
-#: servers/physics/space_sw.cpp servers/physics_server.cpp
-msgid "3D"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Smooth Trimesh Collision"
-msgstr ""
-
-#: core/project_settings.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles2/rasterizer_scene_gles2.cpp
-#: drivers/gles2/rasterizer_storage_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-#: drivers/gles3/rasterizer_storage_gles3.cpp main/main.cpp
-#: modules/lightmapper_cpu/register_types.cpp scene/main/scene_tree.cpp
-#: scene/main/viewport.cpp servers/visual/visual_server_scene.cpp
-#: servers/visual_server.cpp
-msgid "Rendering"
-msgstr ""
-
-#: core/project_settings.cpp drivers/gles2/rasterizer_storage_gles2.cpp
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-#: drivers/gles3/rasterizer_storage_gles3.cpp main/main.cpp
-#: modules/lightmapper_cpu/register_types.cpp scene/3d/baked_lightmap.cpp
-#: scene/main/scene_tree.cpp scene/resources/environment.cpp
-#: scene/resources/multimesh.cpp servers/visual/visual_server_scene.cpp
-#: servers/visual_server.cpp
-msgid "Quality"
-msgstr ""
-
-#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
-msgid "Filters"
-msgstr ""
-
-#: core/project_settings.cpp scene/main/viewport.cpp
-msgid "Sharpen Intensity"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
-#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp
-#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
-#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
-#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
-#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
-#: servers/visual_server.cpp
-msgid "Debug"
-msgstr ""
-
-#: core/project_settings.cpp main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/resources/dynamic_font.cpp
-msgid "Settings"
-msgstr ""
-
-#: core/project_settings.cpp editor/script_editor_debugger.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Profiler"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Max Functions"
-msgstr ""
-
-#: core/project_settings.cpp scene/3d/vehicle_body.cpp
-msgid "Compression"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Formats"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Zstd"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Long Distance Matching"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Compression Level"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Window Log Size"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Zlib"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Gzip"
-msgstr ""
-
-#: core/project_settings.cpp platform/android/export/export.cpp
-msgid "Android"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Modules"
-msgstr ""
-
-#: core/register_core_types.cpp
-msgid "TCP"
-msgstr ""
-
-#: core/register_core_types.cpp
-msgid "Connect Timeout Seconds"
-msgstr ""
-
-#: core/register_core_types.cpp
-msgid "Packet Peer Stream"
-msgstr ""
-
-#: core/register_core_types.cpp
-msgid "Max Buffer (Power of 2)"
-msgstr ""
-
-#: core/register_core_types.cpp editor/editor_settings.cpp main/main.cpp
-msgid "SSL"
-msgstr ""
-
-#: core/register_core_types.cpp main/main.cpp
-msgid "Certificates"
-msgstr ""
-
-#: core/resource.cpp editor/dependency_editor.cpp
-#: editor/editor_resource_picker.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Resource"
-msgstr ""
-
-#: core/resource.cpp
-msgid "Local To Scene"
-msgstr ""
-
-#: core/resource.cpp editor/dependency_editor.cpp
-#: editor/editor_autoload_settings.cpp editor/plugins/path_editor_plugin.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Path"
-msgstr ""
-
-#: core/script_language.cpp
-msgid "Source Code"
-msgstr ""
-
-#: core/translation.cpp editor/project_settings_editor.cpp
-msgid "Locale"
-msgstr ""
-
-#: core/translation.cpp
-msgid "Test"
-msgstr ""
-
-#: core/translation.cpp scene/resources/font.cpp
-msgid "Fallback"
-msgstr ""
-
-#: core/ustring.cpp scene/resources/segment_shape_2d.cpp
-msgid "B"
-msgstr ""
-
-#: core/ustring.cpp
-msgid "KiB"
-msgstr ""
-
-#: core/ustring.cpp
-msgid "MiB"
-msgstr ""
-
-#: core/ustring.cpp
-msgid "GiB"
-msgstr ""
-
-#: core/ustring.cpp
-msgid "TiB"
-msgstr ""
-
-#: core/ustring.cpp
-msgid "PiB"
-msgstr ""
-
-#: core/ustring.cpp
-msgid "EiB"
-msgstr ""
-
-#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles2/rasterizer_scene_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-#: drivers/gles3/rasterizer_storage_gles3.cpp modules/gltf/gltf_state.cpp
-msgid "Buffers"
-msgstr ""
-
-#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-msgid "Canvas Polygon Buffer Size (KB)"
-msgstr ""
-
-#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-msgid "Canvas Polygon Index Buffer Size (KB)"
-msgstr ""
-
-#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp editor/editor_settings.cpp
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp main/main.cpp
-#: scene/2d/physics_body_2d.cpp scene/resources/world_2d.cpp
-#: servers/physics_2d/physics_2d_server_sw.cpp
-#: servers/physics_2d/physics_2d_server_wrap_mt.h
-#: servers/physics_2d/space_2d_sw.cpp servers/physics_2d_server.cpp
-#: servers/visual_server.cpp
-msgid "2D"
-msgstr ""
-
-#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-msgid "Snapping"
-msgstr ""
-
-#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-msgid "Use GPU Pixel Snap"
-msgstr ""
-
-#: drivers/gles2/rasterizer_scene_gles2.cpp
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Immediate Buffer Size (KB)"
-msgstr ""
-
-#: drivers/gles2/rasterizer_storage_gles2.cpp
-#: drivers/gles3/rasterizer_storage_gles3.cpp
-msgid "Lightmapping"
-msgstr ""
-
-#: drivers/gles2/rasterizer_storage_gles2.cpp
-#: drivers/gles3/rasterizer_storage_gles3.cpp
-msgid "Use Bicubic Sampling"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Max Renderable Elements"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Max Renderable Lights"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Max Renderable Reflections"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Max Lights Per Object"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Subsurface Scattering"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp editor/animation_track_editor.cpp
-#: editor/import/resource_importer_texture.cpp
-#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
-#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
-#: scene/2d/remote_transform_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/remote_transform.cpp scene/3d/spatial.cpp
-#: scene/animation/animation_blend_tree.cpp scene/gui/control.cpp
-#: scene/main/canvas_layer.cpp scene/resources/environment.cpp
-#: scene/resources/material.cpp scene/resources/particles_material.cpp
-msgid "Scale"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Follow Surface"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Weight Samples"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Voxel Cone Tracing"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp scene/resources/environment.cpp
-msgid "High Quality"
-msgstr ""
-
-#: drivers/gles3/rasterizer_storage_gles3.cpp
-msgid "Blend Shape Max Buffer Size (KB)"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Free"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Balanced"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Mirror"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp editor/editor_profiler.cpp
-msgid "Time:"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Value:"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Insert Key Here"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Duplicate Selected Key(s)"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Delete Selected Key(s)"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Add Bezier Point"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Move Bezier Points"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
-msgid "Anim Duplicate Keys"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
-msgid "Anim Delete Keys"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Change Keyframe Time"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Change Transition"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Change Transform"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Change Keyframe Value"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Change Call"
-msgstr ""
-
-#: editor/animation_track_editor.cpp scene/2d/animated_sprite.cpp
-#: scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Frame"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_profiler.cpp
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/particles_material.cpp servers/visual_server.cpp
-msgid "Time"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
-#: platform/osx/export/export.cpp
-msgid "Location"
-msgstr ""
-
-#: editor/animation_track_editor.cpp modules/gltf/gltf_node.cpp
-#: scene/2d/polygon_2d.cpp scene/2d/remote_transform_2d.cpp
-#: scene/3d/remote_transform.cpp scene/3d/spatial.cpp scene/gui/control.cpp
-msgid "Rotation"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_nodes.cpp scene/gui/range.cpp
-msgid "Value"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Arg Count"
-msgstr ""
-
-#: editor/animation_track_editor.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Args"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_settings.cpp
-#: editor/script_editor_debugger.cpp modules/gltf/gltf_accessor.cpp
-#: modules/gltf/gltf_light.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/3d/physics_body.cpp scene/resources/visual_shader_nodes.cpp
-msgid "Type"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "In Handle"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Out Handle"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#: editor/import/resource_importer_texture.cpp
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Start Offset"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "End Offset"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_settings.cpp
-#: editor/import/resource_importer_scene.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
-#: scene/animation/animation_blend_tree.cpp
-#: scene/resources/particles_material.cpp
-msgid "Animation"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Easing"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Multi Change Keyframe Time"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Multi Change Transition"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Multi Change Transform"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Multi Change Keyframe Value"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Multi Change Call"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Change Animation Length"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Change Animation Loop"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Property Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "3D Transform Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Call Method Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Bezier Curve Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Audio Playback Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation Playback Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation length (frames)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation length (seconds)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Add Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation Looping"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Functions:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Audio Clips:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Clips:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Change Track Path"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Toggle this track on/off."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Update Mode (How this property is set)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp scene/resources/gradient.cpp
-msgid "Interpolation Mode"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Loop Wrap Mode (Interpolate end with beginning on loop)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Remove this track."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Time (s): "
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Toggle Track Enabled"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Continuous"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Discrete"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Trigger"
-msgstr ""
-
-#: editor/animation_track_editor.cpp scene/3d/baked_lightmap.cpp
-msgid "Capture"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Nearest"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/plugins/curve_editor_plugin.cpp
-#: editor/property_editor.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
-msgid "Linear"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Cubic"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Clamp Loop Interp"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Wrap Loop Interp"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Insert Key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Duplicate Key(s)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Add RESET Value(s)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Delete Key(s)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Change Animation Update Mode"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Change Animation Interpolation Mode"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Change Animation Loop Mode"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Remove Anim Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_settings.cpp
-#: editor/plugins/path_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Editors"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_settings.cpp
-msgid "Confirm Insert Track"
-msgstr ""
-
-#. TRANSLATORS: %s will be replaced by a phrase describing the target of track.
-#: editor/animation_track_editor.cpp
-msgid "Create NEW track for %s and insert key?"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Create %d NEW tracks and insert keys?"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp editor/editor_feature_profile.cpp
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#: editor/script_create_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Create"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Insert"
-msgstr ""
-
-#. TRANSLATORS: This describes the target of new animation track, will be inserted into another string.
-#: editor/animation_track_editor.cpp
-msgid "node '%s'"
-msgstr ""
-
-#. TRANSLATORS: This describes the target of new animation track, will be inserted into another string.
-#: editor/animation_track_editor.cpp
-msgid "animation"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "AnimationPlayer can't animate itself, only other players."
-msgstr ""
-
-#. TRANSLATORS: This describes the target of new animation track, will be inserted into another string.
-#: editor/animation_track_editor.cpp
-msgid "property '%s'"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Create & Insert"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Insert Track & Key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Insert Key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Change Animation Step"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Rearrange Tracks"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Transform tracks only apply to Spatial-based nodes."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid ""
-"Audio tracks can only point to nodes of type:\n"
-"-AudioStreamPlayer\n"
-"-AudioStreamPlayer2D\n"
-"-AudioStreamPlayer3D"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation tracks can only point to AnimationPlayer nodes."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Not possible to add a new track without a root"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Invalid track for Bezier (no suitable sub-properties)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Add Bezier Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Track path is invalid, so can't add a key."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Track is not of type Spatial, can't insert key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Add Transform Track Key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Add Track Key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Track path is invalid, so can't add a method key."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Add Method Track Key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Move Keys"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp scene/2d/node_2d.cpp
-#: scene/3d/spatial.cpp scene/main/canvas_layer.cpp
-#: servers/camera/camera_feed.cpp servers/physics_2d_server.cpp
-#: servers/physics_server.cpp
-msgid "Transform"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_help.cpp
-msgid "Methods"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Bezier"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Clipboard is empty!"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Paste Tracks"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Scale Keys"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid ""
-"This option does not work for Bezier editing, as it's only a single track."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Add RESET Keys"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid ""
-"This animation belongs to an imported scene, so changes to imported tracks "
-"will not be saved.\n"
-"\n"
-"To enable the ability to add custom tracks, navigate to the scene's import "
-"settings and set\n"
-"\"Animation > Storage\" to \"Files\", enable \"Animation > Keep Custom "
-"Tracks\", then re-import.\n"
-"Alternatively, use an import preset that imports animations to separate "
-"files."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Warning: Editing imported animation"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Select an AnimationPlayer node to create and edit animations."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Only show tracks from nodes selected in tree."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Group tracks by node or display them as plain list."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Snap:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation step value."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Seconds"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
-#: scene/resources/texture.cpp
-msgid "FPS"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation properties."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Copy Tracks"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Scale Selection"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Scale From Cursor"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Duplicate Selection"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Duplicate Transposed"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Delete Selection"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Go to Next Step"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Go to Previous Step"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Apply Reset"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Optimize Animation"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Clean-Up Animation"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Pick the node that will be animated:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Use Bezier Curves"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Create RESET Track(s)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim. Optimizer"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Max. Linear Error:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Max. Angular Error:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Max Optimizable Angle:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp scene/3d/room_manager.cpp
-#: servers/visual_server.cpp
-msgid "Optimize"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Remove invalid keys"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Remove unresolved and empty tracks"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Clean-up all animations"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Clean-Up Animation(s) (NO UNDO!)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Clean-Up"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Scale Ratio:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Select Tracks to Copy"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_resource_picker.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Copy"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Select All/None"
-msgstr ""
-
-#: editor/animation_track_editor_plugins.cpp
-msgid "Add Audio Track Clip"
-msgstr ""
-
-#: editor/animation_track_editor_plugins.cpp
-msgid "Change Audio Track Clip Start Offset"
-msgstr ""
-
-#: editor/animation_track_editor_plugins.cpp
-msgid "Change Audio Track Clip End Offset"
-msgstr ""
-
-#: editor/array_property_edit.cpp
-msgid "Resize Array"
-msgstr ""
-
-#: editor/array_property_edit.cpp
-msgid "Change Array Value Type"
-msgstr ""
-
-#: editor/array_property_edit.cpp
-msgid "Change Array Value"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Go to Line"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Line Number:"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "%d replaced."
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "%d match."
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "%d matches."
-msgstr ""
-
-#: editor/code_editor.cpp editor/find_in_files.cpp
-msgid "Match Case"
-msgstr ""
-
-#: editor/code_editor.cpp editor/find_in_files.cpp
-msgid "Whole Words"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr ""
-
-#: editor/code_editor.cpp editor/plugins/script_text_editor.cpp
-#: editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
-#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Toggle Scripts Panel"
-msgstr ""
-
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/texture_region_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
-msgid "Zoom In"
-msgstr ""
-
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/texture_region_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
-msgid "Zoom Out"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Reset Zoom"
-msgstr ""
-
-#: editor/code_editor.cpp modules/gdscript/gdscript.cpp
-msgid "Warnings"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Line and column numbers."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Method in target node must be specified."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Method name must be a valid identifier."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid ""
-"Target method not found. Specify a valid method or attach a script to the "
-"target node."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Connect to Node:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Connect to Script:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "From Signal:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Scene does not contain any script."
-msgstr ""
-
-#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
-#: editor/groups_editor.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Add"
-msgstr ""
-
-#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-msgid "Remove"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Add Extra Call Argument:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Extra Call Arguments:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Receiver Method:"
-msgstr ""
-
-#: editor/connections_dialog.cpp scene/3d/room_manager.cpp
-#: servers/visual_server.cpp
-msgid "Advanced"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Deferred"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid ""
-"Defers the signal, storing it in a queue and only firing it at idle time."
-msgstr ""
-
-#: editor/connections_dialog.cpp scene/resources/texture.cpp
-msgid "Oneshot"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Disconnects the signal after its first emission."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Cannot connect signal"
-msgstr ""
-
-#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/export_template_manager.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Close"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Connect"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Signal:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Connect '%s' to '%s'"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Disconnect '%s' from '%s'"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Disconnect all from signal: '%s'"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Connect..."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Disconnect"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Connect a Signal to a Method"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Edit Connection:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
-msgstr ""
-
-#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
-msgid "Signals"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Filter signals"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Are you sure you want to remove all connections from this signal?"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Disconnect All"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Edit..."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Go to Method"
-msgstr ""
-
-#: editor/create_dialog.cpp
-msgid "Change %s Type"
-msgstr ""
-
-#: editor/create_dialog.cpp editor/project_settings_editor.cpp
-msgid "Change"
-msgstr ""
-
-#: editor/create_dialog.cpp
-msgid "Create New %s"
-msgstr ""
-
-#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr ""
-
-#: editor/create_dialog.cpp editor/property_selector.cpp
-msgid "No description available for %s."
-msgstr ""
-
-#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/filesystem_dock.cpp
-msgid "Favorites:"
-msgstr ""
-
-#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
-msgid "Recent:"
-msgstr ""
-
-#: editor/create_dialog.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp editor/rename_dialog.cpp
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Search:"
-msgstr ""
-
-#: editor/create_dialog.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Matches:"
-msgstr ""
-
-#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Description:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Search Replacement For:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Dependencies For:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid ""
-"Scene '%s' is currently being edited.\n"
-"Changes will only take effect when reloaded."
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid ""
-"Resource '%s' is in use.\n"
-"Changes will only take effect when reloaded."
-msgstr ""
-
-#: editor/dependency_editor.cpp
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Dependencies"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Dependencies:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Fix Broken"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Dependency Editor"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Search Replacement Resource:"
-msgstr ""
-
-#: editor/dependency_editor.cpp editor/editor_file_dialog.cpp
-#: editor/editor_help_search.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/script_create_dialog.cpp
-#: modules/visual_script/visual_script_property_selector.cpp
-#: scene/gui/file_dialog.cpp
-msgid "Open"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid ""
-"Remove the selected files from the project? (Cannot be undone.)\n"
-"Depending on your filesystem configuration, the files will either be moved "
-"to the system trash or deleted permanently."
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid ""
-"The files being removed are required by other resources in order for them to "
-"work.\n"
-"Remove them anyway? (Cannot be undone.)\n"
-"Depending on your filesystem configuration, the files will either be moved "
-"to the system trash or deleted permanently."
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Cannot remove:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Error loading:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Load failed due to missing dependencies:"
-msgstr ""
-
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-msgid "Open Anyway"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Which action should be taken?"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Fix Dependencies"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Errors loading!"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Permanently delete %d item(s)? (No undo!)"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Show Dependencies"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Orphan Resource Explorer"
-msgstr ""
-
-#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
-#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
-#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
-msgid "Delete"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Owns"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Resources Without Explicit Ownership:"
-msgstr ""
-
-#: editor/dictionary_property_edit.cpp
-msgid "Change Dictionary Key"
-msgstr ""
-
-#: editor/dictionary_property_edit.cpp
-msgid "Change Dictionary Value"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Thanks from the Godot community!"
-msgstr ""
-
-#: editor/editor_about.cpp editor/editor_node.cpp editor/project_manager.cpp
-msgid "Click to copy."
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Project Founders"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Lead Developer"
-msgstr ""
-
-#. TRANSLATORS: This refers to a job title.
-#: editor/editor_about.cpp
-msgctxt "Job Title"
-msgid "Project Manager"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Authors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Platinum Sponsors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Gold Sponsors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Silver Sponsors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Bronze Sponsors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Mini Sponsors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Gold Donors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Silver Donors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Bronze Donors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Donors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "License"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Third-party Licenses"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid ""
-"Godot Engine relies on a number of third-party free and open source "
-"libraries, all compatible with the terms of its MIT license. The following "
-"is an exhaustive list of all such third-party components with their "
-"respective copyright statements and license terms."
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "All Components"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Components"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Licenses"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "Error opening asset file for \"%s\" (not in ZIP format)."
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "%s (already exists)"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "Contents of asset \"%s\" - No files conflict with your project:"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "Uncompressing Assets"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "The following files failed extraction from asset \"%s\":"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "(and %s more files)"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "Asset \"%s\" installed successfully!"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Success!"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp editor/editor_node.cpp
-msgid "Install"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "Asset Installer"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Speakers"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Add Effect"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Rename Audio Bus"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Change Audio Bus Volume"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Toggle Audio Bus Solo"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Toggle Audio Bus Mute"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Toggle Audio Bus Bypass Effects"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Select Audio Bus Send"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Add Audio Bus Effect"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Move Bus Effect"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Delete Bus Effect"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Drag & drop to rearrange."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Solo"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Mute"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Bypass"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Bus Options"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
-msgid "Duplicate"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Reset Volume"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Delete Effect"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Add Audio Bus"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Master bus can't be deleted!"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Delete Audio Bus"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Duplicate Audio Bus"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Reset Bus Volume"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Move Audio Bus"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Save Audio Bus Layout As..."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Location for New Layout..."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Open Audio Bus Layout"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "There is no '%s' file."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Invalid file, not an audio bus layout."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Error saving file: %s"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Add Bus"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Add a new Audio Bus to this layout."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_create_dialog.cpp
-msgid "Load"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Load an existing Bus Layout."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Save As"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Save this Bus Layout to a file."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp editor/import_dock.cpp
-msgid "Load Default"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Load the default Bus Layout."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Create a new Bus Layout."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Audio Bus Layout"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Invalid name."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Cannot begin with a digit."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Valid characters:"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Must not collide with an existing engine class name."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Must not collide with an existing built-in type name."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Must not collide with an existing global constant name."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Keyword cannot be used as an autoload name."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Autoload '%s' already exists!"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Rename Autoload"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Toggle AutoLoad Globals"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Move Autoload"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Remove Autoload"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
-#: platform/osx/export/export.cpp platform/windows/export/export.cpp
-#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
-#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
-#: scene/resources/material.cpp servers/visual_server.cpp
-msgid "Enable"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Rearrange Autoloads"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Can't add autoload:"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "%s is an invalid path. File does not exist."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "%s is an invalid path. Not in resource path (res://)."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Add AutoLoad"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp
-#: editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/script_create_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Path:"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Node Name:"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Global Variable"
-msgstr ""
-
-#: editor/editor_data.cpp
-msgid "Paste Params"
-msgstr ""
-
-#: editor/editor_data.cpp
-msgid "Updating Scene"
-msgstr ""
-
-#: editor/editor_data.cpp
-msgid "Storing local changes..."
-msgstr ""
-
-#: editor/editor_data.cpp
-msgid "Updating scene..."
-msgstr ""
-
-#: editor/editor_data.cpp editor/editor_resource_picker.cpp
-msgid "[empty]"
-msgstr ""
-
-#: editor/editor_data.cpp editor/plugins/script_text_editor.cpp
-#: editor/plugins/text_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "[unsaved]"
-msgstr ""
-
-#: editor/editor_dir_dialog.cpp
-msgid "Please select a base directory first."
-msgstr ""
-
-#: editor/editor_dir_dialog.cpp
-msgid "Choose a Directory"
-msgstr ""
-
-#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/filesystem_dock.cpp editor/project_manager.cpp
-#: scene/gui/file_dialog.cpp
-msgid "Create Folder"
-msgstr ""
-
-#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
-#: editor/script_create_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp scene/gui/file_dialog.cpp
-msgid "Name:"
-msgstr ""
-
-#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
-msgid "Could not create folder."
-msgstr ""
-
-#: editor/editor_dir_dialog.cpp
-msgid "Choose"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Storing File:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "No export template found at the expected path:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Packing"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid ""
-"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
-"Etc' in Project Settings."
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid ""
-"Target platform requires 'ETC2' texture compression for GLES3. Enable "
-"'Import Etc 2' in Project Settings."
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid ""
-"Target platform requires 'ETC' texture compression for the driver fallback "
-"to GLES2.\n"
-"Enable 'Import Etc' in Project Settings, or disable 'Driver Fallback "
-"Enabled'."
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid ""
-"Target platform requires 'PVRTC' texture compression for GLES2. Enable "
-"'Import Pvrtc' in Project Settings."
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid ""
-"Target platform requires 'ETC2' or 'PVRTC' texture compression for GLES3. "
-"Enable 'Import Etc 2' or 'Import Pvrtc' in Project Settings."
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid ""
-"Target platform requires 'PVRTC' texture compression for the driver fallback "
-"to GLES2.\n"
-"Enable 'Import Pvrtc' in Project Settings, or disable 'Driver Fallback "
-"Enabled'."
-msgstr ""
-
-#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
-#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-msgid "Custom Template"
-msgstr ""
-
-#: editor/editor_export.cpp editor/project_export.cpp
-#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
-#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
-#: platform/uwp/export/export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Binary Format"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "64 Bits"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Embed PCK"
-msgstr ""
-
-#: editor/editor_export.cpp platform/osx/export/export.cpp
-msgid "Texture Format"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "BPTC"
-msgstr ""
-
-#: editor/editor_export.cpp platform/osx/export/export.cpp
-msgid "S3TC"
-msgstr ""
-
-#: editor/editor_export.cpp platform/osx/export/export.cpp
-msgid "ETC"
-msgstr ""
-
-#: editor/editor_export.cpp platform/osx/export/export.cpp
-msgid "ETC2"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "No BPTC Fallbacks"
-msgstr ""
-
-#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
-#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-msgid "Custom debug template not found."
-msgstr ""
-
-#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
-#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-msgid "Custom release template not found."
-msgstr ""
-
-#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Convert Text Resources To Binary On Export"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "3D Editor"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Script Editor"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
-msgid "Asset Library"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Scene Tree Editing"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Node Dock"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "FileSystem Dock"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Import Dock"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Allows to view and edit 3D scenes."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Allows to edit scripts using the integrated script editor."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Provides built-in access to the Asset Library."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Allows editing the node hierarchy in the Scene dock."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid ""
-"Allows to work with signals and groups of the node selected in the Scene "
-"dock."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Allows to browse the local file system via a dedicated dock."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid ""
-"Allows to configure import settings for individual assets. Requires the "
-"FileSystem dock to function."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "(current)"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "(none)"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Remove currently selected profile, '%s'? Cannot be undone."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Profile must be a valid filename and must not contain '.'"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Profile with this name already exists."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "(Editor Disabled, Properties Disabled)"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "(Properties Disabled)"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "(Editor Disabled)"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Class Options:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Enable Contextual Editor"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Class Properties:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Main Features:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Nodes and Classes:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "File '%s' format is invalid, import aborted."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid ""
-"Profile '%s' already exists. Remove it first before importing, import "
-"aborted."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Error saving profile to path: '%s'."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Reset to Default"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Current Profile:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Create Profile"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Remove Profile"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/import/resource_importer_scene.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: modules/fbx/editor_scene_importer_fbx.cpp
-msgid "Import"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
-msgid "Export"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Configure Selected Profile:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Extra Options:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Create or import a profile to edit available classes and properties."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Godot Feature Profile"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Import Profile(s)"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Export Profile"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Manage Editor Feature Profiles"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Default Feature Profile"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Select Current Folder"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File exists, overwrite?"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Select This Folder"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-msgid "Copy Path"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-msgid "Open in File Manager"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/project_manager.cpp
-msgid "Show in File Manager"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-msgid "New Folder..."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/find_in_files.cpp
-msgid "Refresh"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "All Recognized"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "All Files (*)"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
-msgid "Save"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Save a File"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Access"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/editor_settings.cpp
-msgid "Display Mode"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp
-#: editor/import/resource_importer_wav.cpp main/main.cpp
-#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/light_2d.cpp scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
-#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
-#: scene/gui/control.cpp scene/gui/file_dialog.cpp
-#: scene/resources/environment.cpp scene/resources/material.cpp
-#: scene/resources/visual_shader.cpp
-#: servers/audio/effects/audio_effect_distortion.cpp
-msgid "Mode"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Current Dir"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Current File"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Current Path"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/editor_settings.cpp
-#: scene/gui/file_dialog.cpp
-msgid "Show Hidden Files"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Disable Overwrite Warning"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Go Back"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Go Forward"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Go Up"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Toggle Hidden Files"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Toggle Favorite"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/editor_resource_picker.cpp
-#: scene/gui/base_button.cpp
-msgid "Toggle Mode"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Focus Path"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Move Favorite Up"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Move Favorite Down"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Go to previous folder."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Go to next folder."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Go to parent folder."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Refresh files."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "(Un)favorite current folder."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Toggle the visibility of hidden files."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-msgid "View items as a grid of thumbnails."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-msgid "View items as a list."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Directories & Files:"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Preview:"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-#: editor/plugins/version_control_editor_plugin.cpp scene/gui/file_dialog.cpp
-msgid "File:"
-msgstr ""
-
-#: editor/editor_file_system.cpp
-msgid "ScanSources"
-msgstr ""
-
-#: editor/editor_file_system.cpp
-msgid ""
-"There are multiple importers for different types pointing to file %s, import "
-"aborted"
-msgstr ""
-
-#: editor/editor_file_system.cpp
-msgid "(Re)Importing Assets"
-msgstr ""
-
-#: editor/editor_file_system.cpp
-msgid "Reimport Missing Imported Files"
-msgstr ""
-
-#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
-#: scene/resources/style_box.cpp scene/resources/texture.cpp
-msgid "Top"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Class:"
-msgstr ""
-
-#: editor/editor_help.cpp editor/scene_tree_editor.cpp
-#: editor/script_create_dialog.cpp
-msgid "Inherits:"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Inherited by:"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Online Tutorials"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Properties"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "overrides %s:"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "default:"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Theme Properties"
-msgstr ""
-
-#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/gradient.cpp
-msgid "Colors"
-msgstr ""
-
-#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Constants"
-msgstr ""
-
-#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Fonts"
-msgstr ""
-
-#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
-#: platform/iphone/export/export.cpp
-msgid "Icons"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Styles"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Enumerations"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Property Descriptions"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "(value)"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid ""
-"There is currently no description for this property. Please help us by "
-"[color=$color][url=$url]contributing one[/url][/color]!"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Method Descriptions"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid ""
-"There is currently no description for this method. Please help us by "
-"[color=$color][url=$url]contributing one[/url][/color]!"
-msgstr ""
-
-#: editor/editor_help.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: modules/gdscript/editor/gdscript_highlighter.cpp
-#: modules/gdscript/gdscript_editor.cpp
-msgid "Text Editor"
-msgstr ""
-
-#: editor/editor_help.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Help"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Sort Functions Alphabetically"
-msgstr ""
-
-#: editor/editor_help_search.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Search Help"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Case Sensitive"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Show Hierarchy"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Display All"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Classes Only"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Methods Only"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Signals Only"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Constants Only"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Properties Only"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Theme Properties Only"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Member Type"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Class"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Method"
-msgstr ""
-
-#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Signal"
-msgstr ""
-
-#: editor/editor_help_search.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Constant"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Property"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Theme Property"
-msgstr ""
-
-#: editor/editor_inspector.cpp editor/project_settings_editor.cpp
-msgid "Property:"
-msgstr ""
-
-#: editor/editor_inspector.cpp editor/editor_spin_slider.cpp
-msgid "Label"
-msgstr ""
-
-#: editor/editor_inspector.cpp editor/editor_spin_slider.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Read Only"
-msgstr ""
-
-#: editor/editor_inspector.cpp editor/plugins/item_list_editor_plugin.cpp
-msgid "Checkable"
-msgstr ""
-
-#: editor/editor_inspector.cpp editor/plugins/item_list_editor_plugin.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Checked"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Draw Red"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Keying"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Pin value"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid ""
-"Pinning a value forces it to be saved even if it's equal to the default."
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Pin value [Disabled because '%s' is editor-only]"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Set Multiple:"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Pinned %s"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Unpinned %s"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Copy Property"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Paste Property"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Copy Property Path"
-msgstr ""
-
-#: editor/editor_log.cpp
-msgid "Output:"
-msgstr ""
-
-#: editor/editor_log.cpp editor/plugins/tile_map_editor_plugin.cpp
-msgid "Copy Selection"
-msgstr ""
-
-#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/property_editor.cpp editor/scene_tree_dock.cpp
-#: editor/script_editor_debugger.cpp
-#: modules/gdnative/gdnative_library_editor_plugin.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Clear"
-msgstr ""
-
-#: editor/editor_log.cpp
-msgid "Clear Output"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp editor/editor_node.cpp
-#: editor/editor_profiler.cpp
-msgid "Stop"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp editor/editor_profiler.cpp
-#: editor/plugins/animation_state_machine_editor.cpp editor/rename_dialog.cpp
-msgid "Start"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "%s/s"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "Down"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "Up"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp editor/editor_node.cpp
-#: scene/main/node.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Node"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "Incoming RPC"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "Incoming RSET"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "Outgoing RPC"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "Outgoing RSET"
-msgstr ""
-
-#: editor/editor_node.cpp editor/project_manager.cpp
-msgid "New Window"
-msgstr ""
-
-#: editor/editor_node.cpp editor/project_manager.cpp
-msgid "Unnamed Project"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Spins when the editor window redraws.\n"
-"Update Continuously is enabled, which can increase power usage. Click to "
-"disable it."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Spins when the editor window redraws."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Imported resources can't be saved."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-msgid "Error saving resource!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This resource can't be saved because it does not belong to the edited scene. "
-"Make it unique first."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-msgid "Save Resource As..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Can't open file for writing:"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Requested file format unknown:"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Error while saving."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Can't open '%s'. The file could have been moved or deleted."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Error while parsing '%s'."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Unexpected end of file '%s'."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Missing '%s' or its dependencies."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Error while loading '%s'."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Saving Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Analyzing"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Creating Thumbnail"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "This operation can't be done without a tree root."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This scene can't be saved because there is a cyclic instancing inclusion.\n"
-"Please resolve it and then attempt to save again."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
-"be satisfied."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Could not save one or more scenes!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
-msgid "Can't overwrite scene that is still open!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Can't load MeshLibrary for merging!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Error saving MeshLibrary!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Can't load TileSet for merging!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Error saving TileSet!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"An error occurred while trying to save the editor layout.\n"
-"Make sure the editor's user data path is writable."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Default editor layout overridden.\n"
-"To restore the Default layout to its base settings, use the Delete Layout "
-"option and delete the Default layout."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Layout name not found!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Restored the Default layout to its base settings."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This resource belongs to a scene that was imported, so it's not editable.\n"
-"Please read the documentation relevant to importing scenes to better "
-"understand this workflow."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This resource belongs to a scene that was instanced or inherited.\n"
-"Changes to it won't be kept when saving the current scene."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This resource was imported, so it's not editable. Change its settings in the "
-"import panel and then re-import."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This scene was imported, so changes to it won't be kept.\n"
-"Instancing it or inheriting will allow making changes to it.\n"
-"Please read the documentation relevant to importing scenes to better "
-"understand this workflow."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This is a remote object, so changes to it won't be kept.\n"
-"Please read the documentation relevant to debugging to better understand "
-"this workflow."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "There is no defined scene to run."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save scene before running..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Could not start subprocess!"
-msgstr ""
-
-#: editor/editor_node.cpp editor/filesystem_dock.cpp
-msgid "Open Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Base Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Quick Open..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Quick Open Scene..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Quick Open Script..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save & Reload"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save changes to '%s' before reloading?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save & Close"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save changes to '%s' before closing?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "%s no longer exists! Please specify a new save location."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"The current scene has no root node, but %d modified external resource(s) "
-"were saved anyway."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"A root node is required to save the scene. You can add a root node using the "
-"Scene tree dock."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save Scene As..."
-msgstr ""
-
-#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
-msgid "This operation can't be done without a scene."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Export Mesh Library"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "This operation can't be done without a root node."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Export Tile Set"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "This operation can't be done without a selected node."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Current scene not saved. Open anyway?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Can't undo while mouse buttons are pressed."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Nothing to undo."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Undo: %s"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Can't redo while mouse buttons are pressed."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Nothing to redo."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Redo: %s"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Can't reload a scene that was never saved."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Reload Saved Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"The current scene has unsaved changes.\n"
-"Reload the saved scene anyway? This action cannot be undone."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Quick Run Scene..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Quit"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Yes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Exit the editor?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Project Manager?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save changes to the following scene(s) before reloading?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save & Quit"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save changes to the following scene(s) before quitting?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save changes to the following scene(s) before opening Project Manager?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This option is deprecated. Situations where refresh must be forced are now "
-"considered a bug. Please report."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Pick a Main Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Close Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Reopen Closed Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: '%s'."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '%s'."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Unable to load addon script from path: '%s'. This might be due to a code "
-"error in that script.\n"
-"Disabling the addon at '%s' to prevent further errors."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Scene '%s' was automatically imported, so it can't be modified.\n"
-"To make changes to it, a new inherited scene can be created."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Error loading scene, it must be inside the project path. Use 'Import' to "
-"open the scene, then save it inside the project path."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene '%s' has broken dependencies:"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Clear Recent Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"No main scene has ever been defined, select one?\n"
-"You can change it later in \"Project Settings\" under the 'application' "
-"category."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Selected scene '%s' does not exist, select a valid one?\n"
-"You can change it later in \"Project Settings\" under the 'application' "
-"category."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Selected scene '%s' is not a scene file, select a valid one?\n"
-"You can change it later in \"Project Settings\" under the 'application' "
-"category."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save Layout"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Delete Layout"
-msgstr ""
-
-#: editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_resource_picker.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
-msgid "Show in FileSystem"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play This Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Close Tab"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Undo Close Tab"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Close Other Tabs"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Close Tabs to the Right"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Close All Tabs"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Switch Scene Tab"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "%d more files or folders"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "%d more folders"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "%d more files"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Unable to write to file '%s', file in use, locked or lacking permissions."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
-#: servers/arvr/arvr_interface.cpp
-msgid "Interface"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Scene Tabs"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Always Show Close Button"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Resize If Many Tabs"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Minimum Width"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Output"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Always Clear Output On Play"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Always Open Output On Play"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Always Close Output On Stop"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save On Focus Loss"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Save Each Scene On Quit"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Quit Confirmation"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Show Update Spinner"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Update Continuously"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Update Vital Only"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Localize Settings"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Restore Scenes On Load"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Show Thumbnail On Hover"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Inspector"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Default Property Name Style"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Default Float Step"
-msgstr ""
-
-#: editor/editor_node.cpp scene/gui/tree.cpp
-msgid "Disable Folding"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Auto Unfold Foreign Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Horizontal Vector2 Editing"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Horizontal Vector Types Editing"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Resources In Current Inspector"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Resources To Open In New Inspector"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Default Color Picker Mode"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
-msgid "Username"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
-msgid "SSH Public Key Path"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
-msgid "SSH Private Key Path"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Dock Position"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_plugin.cpp
-msgid "Distraction Free Mode"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Toggle distraction-free mode."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Add a new scene."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Go to previously opened scene."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Copy Text"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Next tab"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Previous tab"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Filter Files..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Operations with scene files."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "New Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "New Inherited Scene..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Scene..."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Open Recent"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Convert To..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "MeshLibrary..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "TileSet..."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Undo"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Redo"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Miscellaneous project or scene-wide tools."
-msgstr ""
-
-#: editor/editor_node.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp modules/mono/editor/csharp_project.cpp
-msgid "Project"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Project Settings..."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
-msgid "Set Up Version Control"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Shut Down Version Control"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Export..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Install Android Build Template..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open User Data Folder"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tools"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Orphan Resource Explorer..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Reload Current Project"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Quit to Project List"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Deploy with Remote Debug"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, using one-click deploy will make the executable "
-"attempt to connect to this computer's IP so the running project can be "
-"debugged.\n"
-"This option is intended to be used for remote debugging (typically with a "
-"mobile device).\n"
-"You don't need to enable it to use the GDScript debugger locally."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Small Deploy with Network Filesystem"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, using one-click deploy for Android will only "
-"export an executable without the project data.\n"
-"The filesystem will be provided from the project by the editor over the "
-"network.\n"
-"On Android, deploying will use the USB cable for faster performance. This "
-"option speeds up testing for projects with large assets."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Visible Collision Shapes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, collision shapes and raycast nodes (for 2D and "
-"3D) will be visible in the running project."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Visible Navigation"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, navigation meshes and polygons will be visible "
-"in the running project."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Force Shader Fallbacks"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, shaders will be used in their fallback form "
-"(either visible via an ubershader or hidden) during all the run time.\n"
-"This is useful for verifying the look and performance of fallbacks, which "
-"are normally displayed briefly.\n"
-"Asynchronous shader compilation must be enabled in the project settings for "
-"this option to make a difference."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Synchronize Scene Changes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, any changes made to the scene in the editor "
-"will be replicated in the running project.\n"
-"When used remotely on a device, this is more efficient when the network "
-"filesystem option is enabled."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Synchronize Script Changes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, any script that is saved will be reloaded in "
-"the running project.\n"
-"When used remotely on a device, this is more efficient when the network "
-"filesystem option is enabled."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Editor Settings..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Editor Layout"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Take Screenshot"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Screenshots are stored in the Editor Data/Settings Folder."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Toggle Fullscreen"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Editor Data/Settings Folder"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Editor Data Folder"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Editor Settings Folder"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Manage Editor Features..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Manage Export Templates..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Online Documentation"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Questions & Answers"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Report a Bug"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Suggest a Feature"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Send Docs Feedback"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
-msgid "Community"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "About Godot"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Support Godot Development"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play the project."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Pause the scene execution for debugging."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Pause Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Stop the scene."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play the edited scene."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play custom scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play Custom Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Changing the video driver requires restarting the editor."
-msgstr ""
-
-#: editor/editor_node.cpp editor/project_settings_editor.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Save & Restart"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Update All Changes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Update Vital Changes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Hide Update Spinner"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/fileserver/editor_file_server.cpp
-#: modules/fbx/editor_scene_importer_fbx.cpp
-msgid "FileSystem"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Expand Bottom Panel"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Don't Save"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Android build template is missing, please install relevant templates."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Manage Templates"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Install from file"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Select android sources file"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This will set up your project for custom Android builds by installing the "
-"source template to \"res://android/build\".\n"
-"You can then apply modifications and build your own custom APK on export "
-"(adding modules, changing the AndroidManifest.xml, etc.).\n"
-"Note that in order to make custom builds instead of using pre-built APKs, "
-"the \"Use Custom Build\" option should be enabled in the Android export "
-"preset."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"The Android build template is already installed in this project and it won't "
-"be overwritten.\n"
-"Remove the \"res://android/build\" directory manually before attempting this "
-"operation again."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Import Templates From ZIP File"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Template Package"
-msgstr ""
-
-#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
-msgid "Export Library"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Merge With Existing"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Apply MeshInstance Transforms"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open & Run a Script"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"The following files are newer on disk.\n"
-"What action should be taken?"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Reload"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Resave"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "New Inherited"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Load Errors"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Select"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Select Current"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open 2D Editor"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open 3D Editor"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Script Editor"
-msgstr ""
-
-#: editor/editor_node.cpp editor/project_manager.cpp
-msgid "Open Asset Library"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open the next Editor"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open the previous Editor"
-msgstr ""
-
-#: editor/editor_node.h
-msgid "Warning!"
-msgstr ""
-
-#: editor/editor_path.cpp
-msgid "No sub-resources found."
-msgstr ""
-
-#: editor/editor_path.cpp
-msgid "Open a list of sub-resources."
-msgstr ""
-
-#: editor/editor_plugin.cpp
-msgid "Creating Mesh Previews"
-msgstr ""
-
-#: editor/editor_plugin.cpp
-msgid "Thumbnail..."
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp
-msgid "Main Script:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp
-msgid "Edit Plugin"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp
-msgid "Installed Plugins:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: scene/2d/remote_transform_2d.cpp scene/3d/remote_transform.cpp
-msgid "Update"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-#: platform/uwp/export/export.cpp
-msgid "Version"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp
-msgid "Author"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Measure:"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Frame Time (ms)"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Average Time (ms)"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Frame %"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Physics Frame %"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Inclusive"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Self"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid ""
-"Inclusive: Includes time from other functions called by this function.\n"
-"Use this to spot bottlenecks.\n"
-"\n"
-"Self: Only count the time spent in the function itself, not in other "
-"functions called by that function.\n"
-"Use this to find individual functions to optimize."
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Frame #:"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Calls"
-msgstr ""
-
-#: editor/editor_profiler.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Debugger"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Profiler Frame History Size"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Profiler Frame Max Functions"
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid "Edit Text:"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/script_create_dialog.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "On"
-msgstr ""
-
-#: editor/editor_properties.cpp modules/gridmap/grid_map.cpp
-#: scene/2d/collision_object_2d.cpp scene/2d/tile_map.cpp
-#: scene/3d/collision_object.cpp scene/3d/soft_body.cpp
-#: scene/main/canvas_layer.cpp
-msgid "Layer"
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid "Bit %d, value %d"
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid "[Empty]"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/plugins/root_motion_editor_plugin.cpp
-msgid "Assign..."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid "Invalid RID"
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
-"Can't create a ViewportTexture on resources saved as a file.\n"
-"Resource needs to belong to a scene."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
-"Can't create a ViewportTexture on this resource because it's not set as "
-"local to scene.\n"
-"Please switch on the 'local to scene' property on it (and all resources "
-"containing it up to a node)."
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Pick a Viewport"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Selected node is not a Viewport!"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Item"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "New Key:"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "New Value:"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Add Key/Value Pair"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp
-msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_resource_picker.cpp
-msgid "Quick Load"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp editor/property_editor.cpp
-msgid "Convert to %s"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp editor/plugins/theme_editor_plugin.cpp
-#: modules/visual_script/visual_script_flow_control.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Base Type"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp
-msgid "Edited Resource"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp scene/gui/line_edit.cpp
-#: scene/gui/slider.cpp scene/gui/spin_box.cpp
-msgid "Editable"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp
-msgid "Script Owner"
-msgstr ""
-
-#: editor/editor_run_native.cpp
-msgid ""
-"No runnable export preset found for this platform.\n"
-"Please add a runnable preset in the Export menu or define an existing preset "
-"as runnable."
-msgstr ""
-
-#: editor/editor_run_script.cpp
-msgid "Write your logic in the _run() method."
-msgstr ""
-
-#: editor/editor_run_script.cpp
-msgid "There is an edited scene already."
-msgstr ""
-
-#: editor/editor_run_script.cpp
-msgid "Couldn't instance script:"
-msgstr ""
-
-#: editor/editor_run_script.cpp
-msgid "Did you forget the 'tool' keyword?"
-msgstr ""
-
-#: editor/editor_run_script.cpp
-msgid "Couldn't run script:"
-msgstr ""
-
-#: editor/editor_run_script.cpp
-msgid "Did you forget the '_run' method?"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Editor Language"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Display Scale"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Custom Display Scale"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Main Font Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Code Font Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Font Antialiased"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Font Hinting"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Main Font"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Main Font Bold"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Code Font"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Dim Editor On Dialog Popup"
-msgstr ""
-
-#: editor/editor_settings.cpp main/main.cpp
-msgid "Low Processor Mode Sleep (µsec)"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Unfocused Low Processor Mode Sleep (µsec)"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Separate Distraction Mode"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Automatically Open Screenshots"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Max Array Dictionary Items Per Page"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp scene/gui/control.cpp
-#: scene/register_scene_types.cpp
-msgid "Theme"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/import_dock.cpp
-msgid "Preset"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Icon And Font Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Base Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Accent Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/environment.cpp
-msgid "Contrast"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Relationship Line Opacity"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Highlight Tabs"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Border Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Use Graph Node Headers"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Additional Spacing"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Custom Theme"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Script Button"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Directories"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Autoscan Project Path"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Default Project Path"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "On Save"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Compress Binary Resources"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Safe Save On Backup Then Rename"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "File Dialog"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Thumbnail Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Docks"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Scene Tree"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Start Create Dialog Fully Expanded"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Always Show Folders"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Property Editor"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Auto Refresh Interval"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Subresource Hue Tint"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Color Theme"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/3d/label_3d.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Line Spacing"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_text_editor.cpp
-#: modules/gdscript/editor/gdscript_highlighter.cpp
-msgid "Highlighting"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Syntax Highlighting"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Highlight All Occurrences"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Highlight Current Line"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_text_editor.cpp
-msgid "Highlight Type Safe Lines"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Indent"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_text_editor.cpp
-msgid "Auto Indent"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Convert Indent On Save"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Draw Tabs"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Draw Spaces"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
-msgid "Navigation"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Smooth Scrolling"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "V Scroll Speed"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Minimap"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Minimap Width"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Mouse Extra Buttons Navigate History"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Appearance"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Show Line Numbers"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Line Numbers Zero Padded"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Bookmark Gutter"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Breakpoint Gutter"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Info Gutter"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Code Folding"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Word Wrap"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Line Length Guidelines"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Line Length Guideline Soft Column"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Line Length Guideline Hard Column"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Script List"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Members Overview"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Files"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Trim Trailing Whitespace On Save"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Autosave Interval Secs"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Restore Scripts On Load"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Auto Reload And Parse Scripts On Save"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Auto Reload Scripts On External Change"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Create Signal Callbacks"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Sort Members Outline Alphabetically"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Cursor"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Scroll Past End Of File"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Block Caret"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Caret Blink"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Caret Blink Speed"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Right Click Moves Caret"
-msgstr ""
-
-#: editor/editor_settings.cpp modules/gdscript/gdscript.cpp
-#: modules/gdscript/gdscript_editor.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Completion"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Idle Parse Delay"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Auto Brace Complete"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Code Complete Delay"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Put Callhint Tooltip Below Current Line"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Callhint Tooltip Offset"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Complete File Paths"
-msgstr ""
-
-#: editor/editor_settings.cpp modules/gdscript/gdscript_editor.cpp
-msgid "Add Type Hints"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Use Single Quotes"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Help Index"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Help Font Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Help Source Font Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Help Title Font Size"
-msgstr ""
-
-#: editor/editor_settings.cpp modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Grid Map"
-msgstr ""
-
-#: editor/editor_settings.cpp modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Pick Distance"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/tile_map_editor_plugin.cpp
-msgid "Preview Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Primary Grid Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Secondary Grid Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Selection Box Color"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/path_editor_plugin.cpp
-#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
-msgid "3D Gizmos"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/path_editor_plugin.cpp
-#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
-msgid "Gizmo Colors"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Instanced"
-msgstr ""
-
-#: editor/editor_settings.cpp modules/gltf/gltf_node.cpp
-#: scene/3d/physics_body.cpp
-msgid "Joint"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/2d/collision_shape_2d.cpp
-#: scene/2d/cpu_particles_2d.cpp scene/2d/touch_screen_button.cpp
-#: scene/3d/collision_shape.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/occluder.cpp scene/3d/spring_arm.cpp
-#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
-#: servers/physics_server.cpp
-msgid "Shape"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Primary Grid Steps"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid Division Level Max"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid Division Level Min"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid Division Level Bias"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid XZ Plane"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid XY Plane"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid YZ Plane"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Default FOV"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Default Z Near"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Default Z Far"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Lightmap Baking Number Of CPU Threads"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Navigation Scheme"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Invert Y Axis"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Invert X Axis"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Zoom Style"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Emulate Numpad"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Emulate 3 Button Mouse"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Orbit Modifier"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Pan Modifier"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Zoom Modifier"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-msgid "Warped Mouse Panning"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Navigation Feel"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Orbit Sensitivity"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Orbit Inertia"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Translation Inertia"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Zoom Inertia"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook Navigation Scheme"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook Sensitivity"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook Inertia"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook Base Speed"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook Activation Modifier"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook Speed Zoom Link"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/tile_map_editor_plugin.cpp
-msgid "Grid Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Guides Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Smart Snapping Line Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone Width"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone Color 1"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone Color 2"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone Selected Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone IK Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone Outline Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone Outline Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Viewport Border Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Constrain Editor View"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Simple Panning"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Scroll To Pan"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Pan Speed"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Poly Editor"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Point Grab Radius"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Previous Outline"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/scene_tree_dock.cpp
-msgid "Autorename Animation Tracks"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Default Create Bezier Tracks"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Default Create Reset Tracks"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Onion Layers Past Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Onion Layers Future Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Visual Editors"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Minimap Opacity"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Window Placement"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/2d/back_buffer_copy.cpp scene/2d/sprite.cpp
-#: scene/2d/visibility_notifier_2d.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/control.cpp
-msgid "Rect"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Rect Custom Position"
-msgstr ""
-
-#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
-msgid "Screen"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Auto Save"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Save Before Running"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Font Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-msgid "Remote Host"
-msgstr ""
-
-#: editor/editor_settings.cpp
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-msgid "Remote Port"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Editor SSL Certificates"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Project Manager"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Sorting Order"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Symbol Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Keyword Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Control Flow Keyword Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Base Type Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Engine Type Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "User Type Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Comment Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "String Color"
-msgstr ""
-
-#: editor/editor_settings.cpp platform/javascript/export/export.cpp
-#: platform/uwp/export/export.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Background Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Completion Background Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Completion Selected Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Completion Existing Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Completion Scroll Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Completion Font Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Text Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Line Number Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Safe Line Number Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Caret Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Caret Background Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Text Selected Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Selection Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Brace Mismatch Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Current Line Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Line Length Guideline Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Word Highlighted Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Number Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Function Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Member Variable Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Mark Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Bookmark Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Breakpoint Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Executing Line Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Code Folding Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Search Result Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Search Result Border Color"
-msgstr ""
-
-#: editor/editor_spin_slider.cpp
-msgid "Hold %s to round to integers. Hold Shift for more precise changes."
-msgstr ""
-
-#: editor/editor_spin_slider.cpp scene/gui/button.cpp
-msgid "Flat"
-msgstr ""
-
-#: editor/editor_spin_slider.cpp
-msgid "Hide Slider"
-msgstr ""
-
-#: editor/editor_sub_scene.cpp
-msgid "Select Node(s) to Import"
-msgstr ""
-
-#: editor/editor_sub_scene.cpp editor/project_manager.cpp
-msgid "Browse"
-msgstr ""
-
-#: editor/editor_sub_scene.cpp
-msgid "Scene Path:"
-msgstr ""
-
-#: editor/editor_sub_scene.cpp
-msgid "Import From Node:"
-msgstr ""
-
-#. TRANSLATORS: %s refers to the name of a version control system (e.g. "Git").
-#: editor/editor_vcs_interface.cpp
-msgid "%s Error"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Open the folder containing these templates."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall these templates."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "There are no mirrors available."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Retrieving the mirror list..."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Starting the download..."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Connecting to the mirror..."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Can't resolve the requested address."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Can't connect to the mirror."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "No response from the mirror."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Request ended up in a redirect loop."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Request failed:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Download complete; extracting templates..."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Best available mirror"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Disconnected"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Resolving"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Can't Connect"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Connected"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Downloading"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Connection Error"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Can't open the export templates file."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside the export templates file: %s."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside the export templates file."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for extracting templates:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Remove templates for the version '%s'?"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Uncompressing Android Build Sources"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Current Version:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Export templates are missing. Download them or install from a file."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Export templates are installed and ready to be used."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Open Folder"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Open the folder containing installed templates for the current version."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall templates for the current version."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Download from:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Open in Web Browser"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Copy Mirror URL"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Download and Install"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid ""
-"Download and install templates for the current version from the best "
-"possible mirror."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Install from File"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Install templates from a local file."
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/find_in_files.cpp
-#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Cancel the download of the templates."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Other Installed Versions:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall Template"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid ""
-"The templates will continue to download.\n"
-"You may experience a short editor freeze when they finish."
-msgstr ""
-
-#: editor/fileserver/editor_file_server.cpp
-msgid "File Server"
-msgstr ""
-
-#: editor/fileserver/editor_file_server.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
-msgid "Password"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Favorites"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Status: Import of file failed. Please fix file and reimport manually."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid ""
-"Importing has been disabled for this file, so it can't be opened for editing."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Cannot move/rename resources root."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Error moving:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Error duplicating:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/scene_tree_editor.cpp
-msgid "No name provided."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Provided name contains invalid characters."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "A file or folder with this name already exists."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Name contains invalid characters."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid ""
-"This file extension is not recognized by the editor.\n"
-"If you want to rename it anyway, use your operating system's file manager.\n"
-"After renaming to an unknown extension, the file won't be shown in the "
-"editor anymore."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid ""
-"The following files or folders conflict with items in the target location "
-"'%s':\n"
-"\n"
-"%s\n"
-"\n"
-"Do you wish to overwrite them?"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Renaming file:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Renaming folder:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Duplicating file:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Duplicating folder:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "New Inherited Scene"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Set As Main Scene"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Open Scenes"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Instance"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Add to Favorites"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Remove from Favorites"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "View Owners..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Move To..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "New Scene..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
-msgid "New Script..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "New Resource..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Expand All"
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Collapse All"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort files"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort by Name (Ascending)"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort by Name (Descending)"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort by Type (Ascending)"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort by Type (Descending)"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort by Last Modified"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort by First Modified"
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-msgid "Duplicate..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-msgid "Rename..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Focus the search box"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Previous Folder/File"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Next Folder/File"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Re-Scan Filesystem"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Toggle Split Mode"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Search files"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid ""
-"Scanning Files,\n"
-"Please Wait..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Move"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/project_manager.cpp editor/rename_dialog.cpp
-#: editor/scene_tree_dock.cpp
-msgid "Rename"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Overwrite"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Create Scene"
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Create Script"
-msgstr ""
-
-#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Find in Files"
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Find:"
-msgstr ""
-
-#: editor/find_in_files.cpp editor/rename_dialog.cpp
-msgid "Replace:"
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Folder:"
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Filters:"
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid ""
-"Include the files with the following extensions. Add or remove them in "
-"ProjectSettings."
-msgstr ""
-
-#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-msgid "Find..."
-msgstr ""
-
-#: editor/find_in_files.cpp editor/plugins/script_text_editor.cpp
-msgid "Replace..."
-msgstr ""
-
-#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Replace in Files"
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Replace All (NO UNDO)"
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Searching..."
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "%d match in %d file."
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "%d matches in %d file."
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "%d matches in %d files."
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Add to Group"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Remove from Group"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Group name already exists."
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Invalid group name."
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Rename Group"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Delete Group"
-msgstr ""
-
-#: editor/groups_editor.cpp editor/node_dock.cpp
-msgid "Groups"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Nodes Not in Group"
-msgstr ""
-
-#: editor/groups_editor.cpp editor/scene_tree_dock.cpp
-#: editor/scene_tree_editor.cpp
-msgid "Filter nodes"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Nodes in Group"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Empty groups will be automatically removed."
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Group Editor"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Manage Groups"
-msgstr ""
-
-#: editor/import/editor_import_collada.cpp
-msgid "Collada"
-msgstr ""
-
-#: editor/import/editor_import_collada.cpp
-msgid "Use Ambient"
-msgstr ""
-
-#: editor/import/resource_importer_bitmask.cpp
-msgid "Create From"
-msgstr ""
-
-#: editor/import/resource_importer_bitmask.cpp
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
-msgstr ""
-
-#: editor/import/resource_importer_csv_translation.cpp
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_scene.cpp
-#: editor/import/resource_importer_texture.cpp
-#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
-msgid "Compress"
-msgstr ""
-
-#: editor/import/resource_importer_csv_translation.cpp
-msgid "Delimiter"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-msgid "ColorCorrect"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-msgid "No BPTC If RGB"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
-#: scene/resources/material.cpp scene/resources/particles_material.cpp
-#: scene/resources/texture.cpp scene/resources/visual_shader.cpp
-msgid "Flags"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
-#: scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
-msgid "Filter"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp
-msgid "Mipmaps"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp
-msgid "Anisotropic"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp
-msgid "sRGB"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-msgid "Slices"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Horizontal"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Vertical"
-msgstr ""
-
-#: editor/import/resource_importer_obj.cpp
-msgid "Generate Tangents"
-msgstr ""
-
-#: editor/import/resource_importer_obj.cpp
-msgid "Scale Mesh"
-msgstr ""
-
-#: editor/import/resource_importer_obj.cpp
-msgid "Offset Mesh"
-msgstr ""
-
-#: editor/import/resource_importer_obj.cpp
-#: editor/import/resource_importer_scene.cpp
-msgid "Octahedral Compression"
-msgstr ""
-
-#: editor/import/resource_importer_obj.cpp
-msgid "Optimize Mesh Flags"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import as Single Scene"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Animations"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Materials"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Objects"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Objects+Materials"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Objects+Animations"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Materials+Animations"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Objects+Materials+Animations"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import as Multiple Scenes"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import as Multiple Scenes+Materials"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
-#: scene/3d/physics_joint.cpp
-msgid "Nodes"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Root Type"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Root Name"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Root Scale"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Custom Script"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
-msgid "Storage"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Use Legacy Names"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Keep On Reimport"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Ensure Tangents"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Light Baking"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Lightmap Texel Size"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Use Named Skins"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "External Files"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Store In Subdir"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Filter Script"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Keep Custom Tracks"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Optimizer"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-#: editor/plugins/item_list_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
-#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
-#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
-#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
-#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/skeleton.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp scene/resources/material.cpp
-msgid "Enabled"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Max Linear Error"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Max Angular Error"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Max Angle"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Remove Unused Tracks"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Clips"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/particles.cpp scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Import Scene"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Importing Scene..."
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Generating Lightmaps"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Running Custom Script..."
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Couldn't load post-import script:"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Invalid/broken script for post-import (check console):"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Error running post-import script:"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Did you return a Node-derived object in the `post_import()` method?"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Saving..."
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "2D, Detect 3D"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "2D Pixel"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "HDR Mode"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "BPTC LDR"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
-#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Process"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Fix Alpha Border"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Premult Alpha"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Hdr As Srgb"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Invert Color"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Normal Map Invert Y"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Size Limit"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Detect 3D"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "SVG"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid ""
-"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
-"texture will not display correctly on PC."
-msgstr ""
-
-#: editor/import/resource_importer_texture_atlas.cpp
-msgid "Atlas File"
-msgstr ""
-
-#: editor/import/resource_importer_texture_atlas.cpp
-msgid "Import Mode"
-msgstr ""
-
-#: editor/import/resource_importer_texture_atlas.cpp
-msgid "Crop To Region"
-msgstr ""
-
-#: editor/import/resource_importer_texture_atlas.cpp
-msgid "Trim Alpha Border From Region"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-msgid "8 Bit"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp main/main.cpp
-#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-msgid "Max Rate"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-msgid "Max Rate Hz"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-msgid "Trim"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-msgid "Normalize"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Mode"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Begin"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop End"
-msgstr ""
-
-#: editor/import_defaults_editor.cpp
-msgid "Select Importer"
-msgstr ""
-
-#: editor/import_defaults_editor.cpp
-msgid "Importer:"
-msgstr ""
-
-#: editor/import_defaults_editor.cpp
-msgid "Reset to Defaults"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Keep File (No Import)"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "%d Files"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Set as Default for '%s'"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Clear Default for '%s'"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid ""
-"You have pending changes that haven't been applied yet. Click Reimport to "
-"apply changes made to the import options.\n"
-"Selecting another resource in the FileSystem dock without clicking Reimport "
-"first will discard changes made in the Import dock."
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Import As:"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Save Scenes, Re-Import, and Restart"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Changing the type of an imported file requires editor restart."
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid ""
-"WARNING: Assets exist that use this resource, they may stop loading properly."
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid ""
-"Select a resource file in the filesystem or in the inspector to adjust "
-"import settings."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Failed to load resource."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Property Name Style"
-msgstr ""
-
-#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Capitalized"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Localized"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Localization not available for current language."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Copy Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Paste Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Save As..."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Extra resource options."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Edit Resource from Clipboard"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Make Resource Built-In"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Go to the previous edited object in history."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Go to the next edited object in history."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "History of recently edited objects."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Open documentation for this object."
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Filter properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Manage object properties."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Changes may be lost!"
-msgstr ""
-
-#: editor/multi_node_edit.cpp
-msgid "MultiNode Set"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Select a single node to edit its signals and groups."
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-msgid "Edit a Plugin"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-msgid "Create a Plugin"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-msgid "Plugin Name:"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-msgid "Subfolder:"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Author:"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
-msgid "Language:"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-msgid "Script Name:"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-msgid "Activate now?"
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Polygon"
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Create points."
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid ""
-"Edit points.\n"
-"LMB: Move Point\n"
-"RMB: Erase Point"
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Edit Polygon"
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Insert Point"
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Edit Polygon (Remove Point)"
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Polygon And Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Add Animation"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Add %s"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Load..."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Move Node Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Change BlendSpace1D Limits"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Change BlendSpace1D Labels"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "This type of node can't be used. Only root nodes are allowed."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Add Node Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Add Animation Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Remove BlendSpace1D Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Move BlendSpace1D Node Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid ""
-"AnimationTree is inactive.\n"
-"Activate to enable playback, check node warnings if activation fails."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Set the blending position within the space"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Select and move points, create points with RMB."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp scene/gui/graph_edit.cpp
-msgid "Enable snap and show grid."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Open Editor"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Open Animation Node"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Triangle already exists."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Add Triangle"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Change BlendSpace2D Limits"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Change BlendSpace2D Labels"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Remove BlendSpace2D Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Remove BlendSpace2D Triangle"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "BlendSpace2D does not belong to an AnimationTree node."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "No triangles exist, so no blending can take place."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Toggle Auto Triangles"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Create triangles by connecting points."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Erase points and triangles."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Generate blend triangles automatically (instead of manually)"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Blend:"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed:"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Edit Filters"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Output node can't be added to the blend tree."
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Add Node to BlendTree"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Node Moved"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Unable to connect, port may be in use or connection may be invalid."
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Nodes Connected"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Nodes Disconnected"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Set Animation"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Delete Node"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
-msgid "Delete Node(s)"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Toggle Filter On/Off"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Change Filter"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "No animation player set, so unable to retrieve track names."
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Player path set is invalid, so unable to retrieve track names."
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/root_motion_editor_plugin.cpp
-msgid ""
-"Animation player has no valid root node path, so unable to retrieve track "
-"names."
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Anim Clips"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Audio Clips"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Functions"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Node Renamed"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Add Node..."
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/root_motion_editor_plugin.cpp
-msgid "Edit Filtered Tracks:"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Enable Filtering"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Toggle Autoplay"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "New Animation Name:"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "New Anim"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Change Animation Name:"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Delete Animation?"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Remove Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Invalid animation name!"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Animation name already exists!"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Rename Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Duplicate Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Blend Next Changed"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Change Blend Time"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Load Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "No animation resource on clipboard!"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Pasted Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Paste Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Play selected animation backwards from current pos. (A)"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Play selected animation backwards from end. (Shift+A)"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Stop animation playback. (S)"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Play selected animation from start. (Shift+D)"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Play selected animation from current pos. (D)"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Animation position (in seconds)."
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Scale animation playback globally for the node."
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Animation Tools"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Paste As Reference"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Edit Transitions..."
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Open in Inspector"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Display list of animations in player."
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Autoplay on Load"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Enable Onion Skinning"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Onion Skinning Options"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Directions"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Past"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Future"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp modules/csg/csg_shape.cpp
-#: scene/3d/collision_polygon.cpp scene/main/scene_tree.cpp
-#: scene/resources/material.cpp scene/resources/primitive_meshes.cpp
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Depth"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "1 step"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "2 steps"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "3 steps"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Differences Only"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Force White Modulate"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Include Gizmos (3D)"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Pin AnimationPlayer"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Create New Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Animation Name:"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-msgid "Error!"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Blend Times:"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Next (Auto Queue):"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Cross-Animation Blend Times"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Move Node"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition exists!"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Add Transition"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Node"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "End"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Immediate"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-#: scene/animation/animation_blend_tree.cpp
-msgid "Sync"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "At End"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: scene/3d/vehicle_body.cpp
-msgid "Travel"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Start and end nodes are needed for a sub-transition."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "No playback resource set at path: %s."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Node Removed"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition Removed"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Set Start Node (Autoplay)"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid ""
-"Select and move nodes.\n"
-"RMB to add new nodes.\n"
-"Shift+LMB to create connections."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Create new nodes."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Connect nodes."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Remove selected node or transition."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Toggle autoplay this animation on start, restart or seek to zero."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Set the end animation. This is useful for sub-transitions."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Play Mode:"
-msgstr ""
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "AnimationTree"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "New name:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Fade In (s):"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Fade Out (s):"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader.cpp
-msgid "Blend"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Auto Restart:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Restart (s):"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Random Restart (s):"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Start!"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Amount:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Blend 0:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Blend 1:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "X-Fade Time (s):"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Input"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Clear Auto-Advance"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Set Auto-Advance"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Delete Input"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Animation tree is valid."
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Animation tree is invalid."
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Animation Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "OneShot Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Mix Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Blend2 Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Blend3 Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Blend4 Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "TimeScale Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "TimeSeek Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Transition Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Import Animations..."
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Edit Node Filters"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Filters..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp scene/main/http_request.cpp
-msgid "Use Threads"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Contents:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "View Files"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect to host:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Cannot save response to:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Write error."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Redirect loop."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, timeout"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Timeout."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed SHA-256 hash check"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Downloading (%s / %s)..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Downloading..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Resolving..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Error making request"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Install..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download Error"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Available URLs"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Recently Updated"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Least Recently Updated"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Name (A-Z)"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Name (Z-A)"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "License (A-Z)"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "License (Z-A)"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Loading..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgctxt "Pagination"
-msgid "First"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgctxt "Pagination"
-msgid "Previous"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgctxt "Pagination"
-msgid "Next"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgctxt "Pagination"
-msgid "Last"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Search templates, projects, and demos"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Search assets (excluding templates, projects, and demos)"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Import..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Plugins..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
-msgid "Sort:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Category:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Support"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed to get repository configuration."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr ""
-
-#: editor/plugins/audio_stream_editor_plugin.cpp
-msgid "Audio Preview Play/Pause"
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid ""
-"Can't determine a save path for lightmap images.\n"
-"Save your scene and try again."
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
-"In Baked Light' and 'Generate Lightmap' flags are on."
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid "Failed creating lightmap images, make sure path is writable."
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid "Failed determining lightmap size. Maximum lightmap size too small?"
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid ""
-"Some mesh is invalid. Make sure the UV2 channel values are contained within "
-"the [0.0,1.0] square region."
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid ""
-"Godot editor was built without ray tracing support, lightmaps can't be baked."
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid "Bake Lightmaps"
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid "LightMap Bake"
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid "Select lightmap bake file:"
-msgstr ""
-
-#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp scene/resources/mesh_library.cpp
-msgid "Preview"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Configure Snap"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Grid Offset:"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Grid Step:"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Primary Line Every:"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "steps"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Rotation Offset:"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Rotation Step:"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Scale Step:"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Move Vertical Guide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Create Vertical Guide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Remove Vertical Guide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Move Horizontal Guide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Create Horizontal Guide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Remove Horizontal Guide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Create Horizontal and Vertical Guides"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set CanvasItem \"%s\" Pivot Offset to (%d, %d)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Rotate %d CanvasItems"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Rotate CanvasItem \"%s\" to %d degrees"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Move CanvasItem \"%s\" Anchor"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Scale Node2D \"%s\" to (%s, %s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Resize Control \"%s\" to (%d, %d)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Scale %d CanvasItems"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Scale CanvasItem \"%s\" to (%s, %s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Move %d CanvasItems"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Move CanvasItem \"%s\" to (%d, %d)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Locked"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Grouped"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid ""
-"Children of containers have their anchors and margins values overridden by "
-"their parent."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Presets for the anchors and margins values of a Control node."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid ""
-"When active, moving Control nodes changes their anchors instead of their "
-"margins."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
-msgid "Top Left"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
-msgid "Top Right"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
-msgid "Bottom Right"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
-msgid "Bottom Left"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Center Left"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Center Top"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Center Right"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Center Bottom"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Center"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Left Wide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Top Wide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Right Wide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Bottom Wide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "VCenter Wide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "HCenter Wide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Full Rect"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Keep Ratio"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchors only"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors and Margins"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Project Camera Override\n"
-"Overrides the running project's camera with the editor viewport camera."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Project Camera Override\n"
-"No project instance running. Run the project from the editor to use this "
-"feature."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Lock Selected"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Unlock Selected"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Group Selected"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Ungroup Selected"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Paste Pose"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Clear Guides"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Create Custom Bone(s) from Node(s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Clear Bones"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Make IK Chain"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Clear IK Chain"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid ""
-"Warning: Children of a container get their position and size determined only "
-"by their parent."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/texture_region_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
-msgid "Zoom Reset"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp scene/gui/item_list.cpp
-#: scene/gui/tree.cpp
-msgid "Select Mode"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Drag: Rotate selected node around pivot."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move selected node."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Scale selected node."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "V: Set selected node's pivot position."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "RMB: Add node at position clicked."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Move Mode"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rotate Mode"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scale Mode"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Shift: Scale proportionally."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Show a list of all objects at the position clicked\n"
-"(same as Alt+RMB in select mode)."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Click to change object's rotation pivot."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Pan Mode"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Ruler Mode"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Toggle smart snapping."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Smart Snap"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Toggle grid snapping."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Grid Snap"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snapping Options"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Scale Snap"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Smart Snapping"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap..."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap to Parent"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap to Node Anchor"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap to Node Sides"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap to Node Center"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap to Other Nodes"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap to Guides"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Lock Selected Node(s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Unlock Selected Node(s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Group Selected Node(s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Ungroup Selected Node(s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton Options"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Bones"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Make Custom Bone(s) from Node(s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Clear Custom Bones"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show When Snapping"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Hide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Toggle Grid"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Grid"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Helpers"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Rulers"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Guides"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Origin"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Viewport"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Group And Lock Icons"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Center Selection"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Frame Selection"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Preview Canvas Scale"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Translation mask for inserting keys."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Rotation mask for inserting keys."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Scale mask for inserting keys."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Insert keys (based on mask)."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid ""
-"Auto insert keys when objects are translated, rotated or scaled (based on "
-"mask).\n"
-"Keys are only added to existing tracks, no new tracks will be created.\n"
-"Keys must be inserted manually for the first time."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Auto Insert Key"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Animation Key and Pose Options"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Insert Key (Existing Tracks)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Copy Pose"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Clear Pose"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Add Node Here"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Instance Scene Here"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Multiply grid step by 2"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Divide grid step by 2"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Pan View"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 3.125%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 6.25%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 12.5%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 25%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 50%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 100%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 200%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 400%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 800%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 1600%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Adding %s..."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Cannot instantiate multiple nodes without root."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Create Node"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Error instancing scene from %s"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Default Type"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid ""
-"Drag & drop + Shift : Add node as sibling\n"
-"Drag & drop + Alt : Change node type"
-msgstr ""
-
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Polygon3D"
-msgstr ""
-
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr ""
-
-#: editor/plugins/collision_shape_2d_editor_plugin.cpp
-msgid "Set Handle"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Load Emission Mask"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/cpu_particles_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Restart"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Clear Emission Mask"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/spatial_editor_gizmos.cpp
-msgid "Particles"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Generated Point Count:"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Emission Mask"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Solid Pixels"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Border Pixels"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Directed Border Pixels"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Capture from Pixel"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Emission Colors"
-msgstr ""
-
-#: editor/plugins/cpu_particles_editor_plugin.cpp
-msgid "CPUParticles"
-msgstr ""
-
-#: editor/plugins/cpu_particles_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Create Emission Points From Mesh"
-msgstr ""
-
-#: editor/plugins/cpu_particles_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Create Emission Points From Node"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Flat 0"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Flat 1"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp
-msgid "Ease In"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp
-msgid "Ease Out"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Smoothstep"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve Point"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve Tangent"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Load Curve Preset"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Add Point"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Remove Point"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Left Linear"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Right Linear"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Load Preset"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Remove Curve Point"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Toggle Curve Linear Tangent"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Hold Shift to edit tangents individually"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Right click to add point"
-msgstr ""
-
-#: editor/plugins/gi_probe_editor_plugin.cpp
-msgid "Bake GI Probe"
-msgstr ""
-
-#: editor/plugins/gradient_editor_plugin.cpp
-msgid "Gradient Edited"
-msgstr ""
-
-#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
-msgid "Swap GradientTexture2D Fill Points"
-msgstr ""
-
-#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
-msgid "Swap Gradient Fill Points"
-msgstr ""
-
-#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
-msgid "Toggle Grid Snap"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
-#: scene/3d/label_3d.cpp scene/gui/button.cpp scene/gui/dialogs.cpp
-#: scene/gui/label.cpp scene/gui/line_edit.cpp scene/gui/link_button.cpp
-#: scene/gui/rich_text_label.cpp scene/gui/text_edit.cpp
-#: scene/resources/primitive_meshes.cpp
-msgid "Text"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
-#: platform/osx/export/export.cpp platform/windows/export/export.cpp
-#: scene/gui/button.cpp scene/gui/item_list.cpp
-msgid "Icon"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp
-msgid "ID"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Separator"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp
-msgid "Item %d"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp
-msgid "Items"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp
-msgid "Item List Editor"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Occluder Polygon"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh is empty!"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Couldn't create a Trimesh collision shape."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Static Trimesh Body"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "This doesn't work on scene root!"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Trimesh Static Shape"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Can't create a single convex collision shape for the scene root."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Couldn't create a single convex collision shape."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Simplified Convex Shape"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Single Convex Shape"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Can't create multiple convex collision shapes for the scene root."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Couldn't create any collision shapes."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Multiple Convex Shapes"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Navigation Mesh"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Contained Mesh is not of type ArrayMesh."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "UV Unwrap failed, mesh may not be manifold?"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "No mesh to debug."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh has no UV in layer %d."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "MeshInstance lacks a Mesh!"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh has not surface to create outlines from!"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh primitive type is not PRIMITIVE_TRIANGLES!"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Could not create outline!"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Outline"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp modules/csg/csg_shape.cpp
-#: modules/gltf/gltf_mesh.cpp modules/gltf/gltf_node.cpp
-#: scene/2d/mesh_instance_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/mesh_instance.cpp scene/resources/mesh_library.cpp
-#: scene/resources/multimesh.cpp scene/resources/primitive_meshes.cpp
-#: scene/resources/texture.cpp
-msgid "Mesh"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Trimesh Static Body"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid ""
-"Creates a StaticBody and assigns a polygon-based collision shape to it "
-"automatically.\n"
-"This is the most accurate (but slowest) option for collision detection."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Trimesh Collision Sibling"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid ""
-"Creates a polygon-based collision shape.\n"
-"This is the most accurate (but slowest) option for collision detection."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Single Convex Collision Sibling"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid ""
-"Creates a single convex collision shape.\n"
-"This is the fastest (but least accurate) option for collision detection."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Simplified Convex Collision Sibling"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid ""
-"Creates a simplified convex collision shape.\n"
-"This is similar to single collision shape, but can result in a simpler "
-"geometry in some cases, at the cost of accuracy."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Multiple Convex Collision Siblings"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid ""
-"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between a single convex collision and a "
-"polygon-based collision."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Outline Mesh..."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid ""
-"Creates a static outline mesh. The outline mesh will have its normals "
-"flipped automatically.\n"
-"This can be used instead of the SpatialMaterial Grow property when using "
-"that property isn't possible."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "View UV1"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "View UV2"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Unwrap UV2 for Lightmap/AO"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Outline Mesh"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Outline Size:"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "UV Channel Debug"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Remove item %d?"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid ""
-"Update from existing scene?:\n"
-"%s"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "MeshLibrary"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Add Item"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Remove Selected Item"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Import from Scene (Ignore Transforms)"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Import from Scene (Apply Transforms)"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Update from Scene"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Apply without Transforms"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Apply with Transforms"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "No mesh source specified (and no MultiMesh set in node)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "No mesh source specified (and MultiMesh contains no Mesh)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Mesh source is invalid (invalid path)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Mesh source is invalid (not a MeshInstance)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Mesh source is invalid (contains no Mesh resource)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "No surface source specified."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Surface source is invalid (invalid path)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Surface source is invalid (no geometry)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Surface source is invalid (no faces)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Select a Source Mesh:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Select a Target Surface:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Populate Surface"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Populate MultiMesh"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Target Surface:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Source Mesh:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "X-Axis"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Y-Axis"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Z-Axis"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Mesh Up Axis:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Random Rotation:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Random Tilt:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Random Scale:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Populate"
-msgstr ""
-
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create Navigation Polygon"
-msgstr ""
-
-#: editor/plugins/particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Convert to CPUParticles"
-msgstr ""
-
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Generating Visibility Rect"
-msgstr ""
-
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Generate Visibility Rect"
-msgstr ""
-
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Can only set point into a ParticlesMaterial process material"
-msgstr ""
-
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Convert to CPUParticles2D"
-msgstr ""
-
-#: editor/plugins/particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Generation Time (sec):"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "The geometry's faces don't contain any area."
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "The geometry doesn't contain any faces."
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "\"%s\" doesn't inherit from Spatial."
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "\"%s\" doesn't contain geometry."
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "\"%s\" doesn't contain face geometry."
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Create Emitter"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Points:"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Surface Points"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Surface Points+Normal (Directed)"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp scene/gui/video_player.cpp
-msgid "Volume"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "A processor material of type 'ParticlesMaterial' is required."
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Generating AABB"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Generate Visibility AABB"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Remove Point from Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Remove Out-Control from Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Remove In-Control from Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Add Point to Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Split Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Move Point in Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Move In-Control in Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Move Out-Control in Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Select Points"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Shift+Drag: Select Control Points"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Click: Add Point"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Left Click: Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Right Click: Delete Point"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Select Control Points (Shift+Drag)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Add Point (in empty space)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Delete Point"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Close Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-#: editor/plugins/theme_editor_preview.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp servers/visual_server.cpp
-msgid "Options"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Mirror Handle Angles"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Mirror Handle Lengths"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Curve Point #"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Set Curve Point Position"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Set Curve In Position"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Set Curve Out Position"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Path"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Remove Path Point"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Remove Out-Control Point"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Remove In-Control Point"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/physical_bone_plugin.cpp
-msgid "Move Joint"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid ""
-"The skeleton property of the Polygon2D does not point to a Skeleton2D node"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync Bones"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid ""
-"No texture in this polygon.\n"
-"Set a texture to be able to edit UV."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create UV Map"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid ""
-"Polygon 2D has internal vertices, so it can no longer be edited in the "
-"viewport."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Polygon & UV"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Internal Vertex"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Remove Internal Vertex"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Invalid Polygon (need 3 different vertices)"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Add Custom Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Remove Custom Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Transform UV Map"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Transform Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint Bone Weights"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Open Polygon 2D UV editor."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Polygon 2D UV Editor"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
-msgid "UV"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/line_2d.cpp scene/3d/cpu_particles.cpp scene/3d/portal.cpp
-#: scene/3d/room.cpp scene/resources/convex_polygon_shape.cpp
-#: scene/resources/convex_polygon_shape_2d.cpp
-msgid "Points"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
-msgid "Polygons"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp scene/3d/skeleton.cpp
-msgid "Bones"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Points"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Command: Rotate"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Shift: Move All"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Shift+Command: Scale"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Ctrl: Rotate"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Shift+Ctrl: Scale"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Rotate Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Scale Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create a custom polygon. Enables custom polygon rendering."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid ""
-"Remove a custom polygon. If none remain, custom polygon rendering is "
-"disabled."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Unpaint weights with specified intensity."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Radius:"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Copy Polygon to UV"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Copy UV to Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Clear UV"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Grid Settings"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp modules/csg/csg_shape.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Snap"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Enable Snap"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Configure Grid:"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Grid Offset X:"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Grid Offset Y:"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Grid Step X:"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Grid Step Y:"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync Bones to Polygon"
-msgstr ""
-
-#: editor/plugins/ray_cast_2d_editor_plugin.cpp
-msgid "Set cast_to"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ERROR: Couldn't load resource!"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "Add Resource"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "Rename Resource"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Delete Resource"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "Resource clipboard is empty!"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "Paste Resource"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/scene_tree_editor.cpp
-msgid "Instance:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "Load Resource"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
-#: editor/plugins/room_manager_editor_plugin.cpp
-msgid "Flip Portals"
-msgstr ""
-
-#: editor/plugins/room_manager_editor_plugin.cpp
-msgid "Room Generate Points"
-msgstr ""
-
-#: editor/plugins/room_manager_editor_plugin.cpp
-msgid "Generate Points"
-msgstr ""
-
-#: editor/plugins/room_manager_editor_plugin.cpp
-msgid "Flip Portal"
-msgstr ""
-
-#: editor/plugins/room_manager_editor_plugin.cpp
-msgid "Occluder Set Transform"
-msgstr ""
-
-#: editor/plugins/room_manager_editor_plugin.cpp
-msgid "Center Node"
-msgstr ""
-
-#: editor/plugins/root_motion_editor_plugin.cpp
-msgid "AnimationTree has no path set to an AnimationPlayer"
-msgstr ""
-
-#: editor/plugins/root_motion_editor_plugin.cpp
-msgid "Path to AnimationPlayer is invalid"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Clear Recent Files"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Close and save changes?"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error writing TextFile:"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Could not load file at:"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving file!"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error Saving"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error Importing"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "New Text File..."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Open File"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save File As..."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Can't obtain the script for running."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Script failed reloading, check console for errors."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Script is not in tool mode, will not be able to run."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"To run this script, it must inherit EditorScript and be set to tool mode."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Import Theme"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As..."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "%s Class Reference"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-msgid "Find Next"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-msgid "Find Previous"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Filter scripts"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Toggle alphabetical sorting of the method list."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Filter methods"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp scene/2d/y_sort.cpp
-msgid "Sort"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Move Up"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Move Down"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Next Script"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous Script"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "File"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Open..."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Reopen Closed Script"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save All"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Soft Reload Script"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Copy Script Path"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "History Previous"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "History Next"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Import Theme..."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Reload Theme"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Close All"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Close Docs"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-msgid "Search"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
-msgid "Step Into"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
-msgid "Step Over"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
-msgid "Break"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Continue"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Keep Debugger Open"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Debug with External Editor"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Open Godot online documentation."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Search the reference documentation."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Go to previous edited document."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Go to next edited document."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Discard"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"The following files are newer on disk.\n"
-"What action should be taken?:"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Search Results"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Open Dominant Script On Scene Change"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "External"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Use External Editor"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Exec Path"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Script Temperature Enabled"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Highlight Current Script"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Script Temperature History Size"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Current Script Background Color"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Group Help Pages"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Sort Scripts By"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "List Script Names As"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Exec Flags"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Clear Recent Scripts"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Connections to method:"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/script_editor_debugger.cpp
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Source"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
-msgid "Target"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid ""
-"Missing connected method '%s' for signal '%s' from node '%s' to node '%s'."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "[Ignore]"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Line"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Function"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Only resources from filesystem can be dropped."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Can't drop nodes because script '%s' is not used in this scene."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Lookup Symbol"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Pick Color"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Convert Case"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-#: scene/3d/label_3d.cpp scene/gui/label.cpp
-#: scene/resources/primitive_meshes.cpp
-msgid "Uppercase"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Lowercase"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Capitalize"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Syntax Highlighter"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-msgid "Bookmarks"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Breakpoints"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-msgid "Go To"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Cut"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Select All"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Delete Line"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Indent Left"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Indent Right"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Toggle Comment"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Fold/Unfold Line"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Fold All Lines"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Unfold All Lines"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Complete Symbol"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Evaluate Selection"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Trim Trailing Whitespace"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Convert Indent to Spaces"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Convert Indent to Tabs"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Find in Files..."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Replace in Files..."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Contextual Help"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Toggle Bookmark"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Next Bookmark"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Previous Bookmark"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Remove All Bookmarks"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Function..."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Line..."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Toggle Breakpoint"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Remove All Breakpoints"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Next Breakpoint"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Previous Breakpoint"
-msgstr ""
-
-#: editor/plugins/shader_editor_plugin.cpp
-msgid ""
-"This shader has been modified on on disk.\n"
-"What action should be taken?"
-msgstr ""
-
-#: editor/plugins/shader_editor_plugin.cpp scene/resources/material.cpp
-msgid "Shader"
-msgstr ""
-
-#: editor/plugins/skeleton_2d_editor_plugin.cpp
-msgid "This skeleton has no bones, create some children Bone2D nodes."
-msgstr ""
-
-#: editor/plugins/skeleton_2d_editor_plugin.cpp
-msgid "Set Rest Pose to Bones"
-msgstr ""
-
-#: editor/plugins/skeleton_2d_editor_plugin.cpp
-msgid "Create Rest Pose from Bones"
-msgstr ""
-
-#: editor/plugins/skeleton_2d_editor_plugin.cpp
-msgid "Skeleton2D"
-msgstr ""
-
-#: editor/plugins/skeleton_2d_editor_plugin.cpp
-msgid "Reset to Rest Pose"
-msgstr ""
-
-#: editor/plugins/skeleton_2d_editor_plugin.cpp
-msgid "Overwrite Rest Pose"
-msgstr ""
-
-#: editor/plugins/skeleton_editor_plugin.cpp
-msgid "Create physical bones"
-msgstr ""
-
-#: editor/plugins/skeleton_editor_plugin.cpp editor/spatial_editor_gizmos.cpp
-#: modules/gltf/gltf_node.cpp modules/gltf/gltf_skin.cpp
-#: scene/2d/polygon_2d.cpp scene/3d/mesh_instance.cpp
-msgid "Skeleton"
-msgstr ""
-
-#: editor/plugins/skeleton_editor_plugin.cpp
-msgid "Create physical skeleton"
-msgstr ""
-
-#: editor/plugins/skeleton_ik_editor_plugin.cpp
-msgid "Play IK"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_camera.cpp
-msgid "Perspective"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top Perspective"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom Perspective"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left Perspective"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front Perspective"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear Perspective"
-msgstr ""
-
-#. TRANSLATORS: This will be appended to the view name when Auto Orthogonal is enabled.
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid " [auto]"
-msgstr ""
-
-#. TRANSLATORS: This will be appended to the view name when Portal Occulusion is enabled.
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid " [portals active]"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Transform Aborted."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "X-Axis Transform."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Y-Axis Transform."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Z-Axis Transform."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Plane Transform."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/texture_region_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp scene/2d/path_2d.cpp
-msgid "Rotate"
-msgstr ""
-
-#. TRANSLATORS: This refers to the movement that changes the position of an object.
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translate"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rotating %s degrees."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS: %d (%s ms)"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Align Transform with View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Align Rotation with View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "No parent to instance a child at."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Auto Orthogonal Enabled"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Lock View Rotation"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Normal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Wireframe"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Overdraw"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Unshaded"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Environment"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Gizmos"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Information"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View FPS"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Half Resolution"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp scene/main/viewport.cpp
-msgid "Audio Listener"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Enable Doppler"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Cinematic Preview"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "(Not in GLES2)"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Debug draw modes are only available when using the GLES3 renderer, not GLES2."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Forward"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Backwards"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Down"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Slow Modifier"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Toggle Camera Preview"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Rotation Locked"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"To zoom further, change the camera's clipping planes (View -> Settings...)"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Note: The FPS value displayed is the editor's framerate.\n"
-"It cannot be used as a reliable indication of in-game performance."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Convert Rooms"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "XForm Dialog"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Click to toggle between visibility states.\n"
-"\n"
-"Open eye: Gizmo is visible.\n"
-"Closed eye: Gizmo is hidden.\n"
-"Half-open eye: Gizmo is also visible through opaque surfaces (\"x-ray\")."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes to Floor"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Couldn't find a solid floor to snap the selection to."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp scene/gui/graph_edit.cpp
-msgid "Use Snap"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Converts rooms for portal culling."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Orbit View Down"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Orbit View Left"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Orbit View Right"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Orbit View Up"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Orbit View 180"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Switch Perspective/Orthogonal View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Insert Animation Key"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Focus Origin"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Focus Selection"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Toggle Freelook"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Decrease Field of View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Increase Field of View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Reset Field of View to Default"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Object to Floor"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Transform Dialog..."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "1 Viewport"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "2 Viewports"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "2 Viewports (Alt)"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "3 Viewports"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "3 Viewports (Alt)"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "4 Viewports"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Gizmos"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Origin"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Grid"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Portal Culling"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Occlusion Culling"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Settings..."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Settings"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translate Snap:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rotate Snap (deg.):"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scale Snap (%):"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Viewport Settings"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Perspective FOV (deg.):"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Z-Near:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Z-Far:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Transform Change"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translate:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rotate (deg.):"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scale (ratio):"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Transform Type"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pre"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Post"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Manipulator Gizmo Size"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Manipulator Gizmo Opacity"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Show Viewport Rotation Gizmo"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Unnamed Gizmo"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Create Mesh2D"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Mesh2D Preview"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Create Polygon2D"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Polygon2D Preview"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Create CollisionPolygon2D"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "CollisionPolygon2D Preview"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Create LightOccluder2D"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "LightOccluder2D Preview"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Sprite is empty!"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Can't convert a sprite using animation frames to mesh."
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Invalid geometry, can't replace by mesh."
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Invalid geometry, can't create polygon."
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Polygon2D"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Invalid geometry, can't create collision polygon."
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Create CollisionPolygon2D Sibling"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Invalid geometry, can't create light occluder."
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Create LightOccluder2D Sibling"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Sprite"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Update Preview"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Settings:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "No Frames Selected"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Add %d Frame(s)"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Add Frame"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Unable to load images"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "ERROR: Couldn't load frame resource!"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Resource clipboard is empty or not a texture!"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Paste Frame"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Add Empty"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Change Animation FPS"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "(empty)"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Move Frame"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Animations:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "New Animation"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Speed:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/minimp3/resource_importer_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
-#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
-#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
-msgid "Loop"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Animation Frames:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Add a Texture from File"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Add Frames from a Sprite Sheet"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Insert Empty (Before)"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Insert Empty (After)"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Move (Before)"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Move (After)"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Select Frames"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Horizontal:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Vertical:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Separation:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Offset:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Select/Clear All Frames"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Create Frames from Sprite Sheet"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "SpriteFrames"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Set Region Rect"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Set Margin"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Snap Mode:"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Pixel Snap"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Grid Snap"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Auto Slice"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Step:"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "TextureRegion"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Styleboxes"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "{num} color(s)"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "No colors found."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "{num} constant(s)"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "No constants found."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "{num} font(s)"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "No fonts found."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "{num} icon(s)"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "No icons found."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "{num} stylebox(es)"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "No styleboxes found."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "{num} currently selected"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Nothing was selected for the import."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Importing Theme Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Importing items {n}/{n}"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Updating the editor"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Finalizing"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Filter:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "With Data"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select by data type:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible color items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible color items and their data."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect all visible color items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible constant items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible constant items and their data."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect all visible constant items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible font items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible font items and their data."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect all visible font items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible icon items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible icon items and their data."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect all visible icon items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible stylebox items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible stylebox items and their data."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect all visible stylebox items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid ""
-"Caution: Adding icon data may considerably increase the size of your Theme "
-"resource."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Collapse types."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Expand types."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all Theme items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select With Data"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all Theme items with item data."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect All"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect all Theme items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Import Selected"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid ""
-"Import Items tab has some items selected. Selection will be lost upon "
-"closing this window.\n"
-"Close anyway?"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Type"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid ""
-"Select a theme type from the list to edit its items.\n"
-"You can add a custom type or import a type with its items from another theme."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Color Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Rename Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Constant Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Font Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Icon Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All StyleBox Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid ""
-"This theme type is empty.\n"
-"Add more items to it manually or by importing from another theme."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Theme Type"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Theme Type"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Color Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Constant Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Font Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Icon Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Stylebox Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Rename Color Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Rename Constant Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Rename Font Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Rename Icon Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Rename Stylebox Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Invalid file, not a Theme resource."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Invalid file, same as the edited Theme resource."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Manage Theme Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Types:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Type:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Item:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add StyleBox Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Items:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Custom Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Theme Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Old Name:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Import Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Default Theme"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editor Theme"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select Another Theme Resource:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme Resource"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Another Theme"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Type"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Filter the list of types or create a new custom type:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Available Node-based types:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Type name is empty!"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Are you sure you want to create an empty type?"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Confirm Item Rename"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Cancel Item Rename"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Override Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Unpin this StyleBox as a main style."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid ""
-"Pin this StyleBox as a main style. Editing its properties will update the "
-"same properties in all other StyleBoxes of this type."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Item Type"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Set Variation Base Type"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Set Base Type"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Show Default"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Show default type items alongside items that have been overridden."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Override All"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Override all default type items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select the variation base type from a list of available types."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid ""
-"A type associated with a built-in class cannot be marked as a variation of "
-"another type."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Manage Items..."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add, remove, organize and import Theme items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Preview"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Default Preview"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select UI Scene:"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid ""
-"Toggle the control picker, allowing to visually select control types for "
-"edit."
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Toggle Button"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Disabled Button"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp scene/resources/mesh_library.cpp
-msgid "Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Disabled Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Check Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Checked Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Radio Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Checked Radio Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Named Separator"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Submenu"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Subitem 1"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Subitem 2"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Has"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Many"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Disabled LineEdit"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Tab 1"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Tab 2"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Tab 3"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Editable Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Subtree"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Has,Many,Options"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Invalid path, the PackedScene resource was probably moved or removed."
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Invalid PackedScene resource, must have a Control node at its root."
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Invalid file, not a PackedScene resource."
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Reload the scene to reflect its most actual state."
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Erase Selection"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Fix Invalid Tiles"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cut Selection"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Paint TileMap"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Line Draw"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Rectangle Paint"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket Fill"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Erase TileMap"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Find Tile"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Transpose"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Disable Autotile"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Enable Priority"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Filter tiles"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Give a TileSet resource to this TileMap to use its tiles."
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Paint Tile"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid ""
-"Shift+LMB: Line Draw\n"
-"Shift+Command+LMB: Rectangle Paint"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid ""
-"Shift+LMB: Line Draw\n"
-"Shift+Ctrl+LMB: Rectangle Paint"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Pick Tile"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Rotate Left"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Rotate Right"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Flip Horizontally"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Flip Vertically"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Clear Transform"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Tile Map"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Palette Min Width"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Palette Item H Separation"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Show Tile Names"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Show Tile Ids"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Sort Tiles By Name"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket Fill Preview"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Editor Side"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Display Grid"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Axis Color"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove selected Texture from TileSet."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create from Scene"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Merge from Scene"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "New Single Tile"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "New Autotile"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "New Atlas"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Next Coordinate"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Select the next shape, subtile, or Tile."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Previous Coordinate"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Select the previous shape, subtile, or Tile."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
-msgid "Region"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp modules/csg/csg_shape.cpp
-#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
-#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
-#: scene/3d/collision_object.cpp scene/3d/physics_body.cpp
-#: scene/3d/physics_joint.cpp scene/3d/soft_body.cpp scene/main/scene_tree.cpp
-#: scene/resources/shape_2d.cpp
-msgid "Collision"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Occlusion"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/touch_screen_button.cpp
-msgid "Bitmask"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/3d/physics_joint.cpp
-#: scene/animation/animation_node_state_machine.cpp
-msgid "Priority"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/node_2d.cpp
-msgid "Z Index"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Region Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Collision Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Occlusion Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Navigation Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Bitmask Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Priority Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/item_list.cpp
-msgid "Icon Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Z Index Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Copy bitmask."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Paste bitmask."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Erase bitmask."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create a new rectangle."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "New Rectangle"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create a new polygon."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "New Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Delete Selected Shape"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Keep polygon inside region Rect."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Enable snap and show grid (configurable via the Inspector)."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display Tile Names (Hold Alt Key)"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Add or select a texture on the left panel to edit the tiles bound to it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove selected texture? This will remove all tiles which use it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "You haven't selected a texture to remove."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create from scene? This will overwrite all current tiles."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Merge from scene?"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove Texture"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "%s file(s) were not added because was already on the list."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Drag handles to edit Rect.\n"
-"Click on another Tile to edit it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Delete selected Rect."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select current edited sub-tile.\n"
-"Click on another Tile to edit it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Delete polygon."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"LMB: Set bit on.\n"
-"RMB: Set bit off.\n"
-"Shift+LMB: Set wildcard bit.\n"
-"Click on another Tile to edit it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings.\n"
-"Click on another Tile to edit it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to change its priority.\n"
-"Click on another Tile to edit it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to change its z index.\n"
-"Click on another Tile to edit it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Set Tile Region"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create Tile"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Set Tile Icon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Edit Tile Bitmask"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Edit Collision Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Edit Occlusion Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Edit Navigation Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Paste Tile Bitmask"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Clear Tile Bitmask"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Make Polygon Concave"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Make Polygon Convex"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove Tile"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove Collision Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove Occlusion Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove Navigation Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Edit Tile Priority"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Edit Tile Z Index"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Make Convex"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Make Concave"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create Collision Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create Occlusion Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "This property can't be changed."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Snap Options"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/animated_sprite.cpp
-#: scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
-#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
-#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/label_3d.cpp scene/3d/path.cpp
-#: scene/3d/physics_body.cpp scene/3d/soft_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/style_box.cpp
-msgid "Offset"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp editor/rename_dialog.cpp
-#: scene/gui/range.cpp scene/resources/animation.cpp
-#: scene/resources/visual_shader_nodes.cpp servers/physics_2d_server.cpp
-#: servers/physics_server.cpp
-msgid "Step"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Separation"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Selected Tile"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/line_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/polygon_2d.cpp scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/texture_rect.cpp
-#: scene/resources/material.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
-msgid "Texture"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tex Offset"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp modules/csg/csg_shape.cpp
-#: scene/2d/canvas_item.cpp scene/2d/particles_2d.cpp
-#: scene/3d/mesh_instance.cpp scene/resources/primitive_meshes.cpp
-msgid "Material"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/canvas_item.cpp
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp scene/resources/style_box.cpp
-msgid "Modulate"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Autotile Bitmask Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Subtile Size"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Subtile Spacing"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Occluder Offset"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Navigation Offset"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Shape Offset"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Shape Transform"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Selected Collision"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Selected Collision One Way"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Selected Collision One Way Margin"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Selected Navigation"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Selected Occlusion"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tileset Script"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "TileSet"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "No VCS plugins are available."
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid ""
-"Remote settings are empty. VCS features that use the network may not work."
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "No commit message was provided."
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Commit"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Staged Changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Unstaged Changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Commit:"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Date:"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Subtitle:"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Do you want to remove the %s branch?"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Do you want to remove the %s remote?"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Apply"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control System"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Initialize"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Remote Login"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Select SSH public key path"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Select SSH private key path"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "SSH Passphrase"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Detect new changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Discard all changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Stage all changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Unstage all changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Commit Message"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Commit Changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Commit List"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Commit list size"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Branches"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Create New Branch"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Remove Branch"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Branch Name"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Remotes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Create New Remote"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Remove Remote"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Remote Name"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Remote URL"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Fetch"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Pull"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Push"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Force Push"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Modified"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Renamed"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Deleted"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Typechange"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Unmerged"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "View:"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Split"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Unified"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "(GLES3 only)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Add Output"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Scalar"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Vector"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Boolean"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Sampler"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Add input port"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Add output port"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Change input port type"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Change output port type"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Change input port name"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Change output port name"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Remove input port"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Remove output port"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Set expression"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Resize VisualShader node"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Set Uniform Name"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Set Input Default Port"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Add Node to Visual Shader"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Node(s) Moved"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Duplicate Nodes"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Paste Nodes"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Delete Nodes"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Visual Shader Input Type Changed"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "UniformRef Name Changed"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Vertex"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Fragment"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp modules/gltf/gltf_node.cpp
-#: scene/3d/light.cpp
-msgid "Light"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Show resulted shader code."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Create Shader Node"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Color function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Color operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Grayscale function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Converts HSV vector to RGB equivalent."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Converts RGB vector to HSV equivalent."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Sepia function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Burn operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Darken operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Difference operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Dodge operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "HardLight operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Lighten operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Overlay operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Screen operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "SoftLight operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Color constant."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Color uniform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the boolean result of the %s comparison between two parameters."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Equal (==)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Greater Than (>)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Greater Than or Equal (>=)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns an associated vector if the provided scalars are equal, greater or "
-"less."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns the boolean result of the comparison between INF and a scalar "
-"parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns the boolean result of the comparison between NaN and a scalar "
-"parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Less Than (<)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Less Than or Equal (<=)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Not Equal (!=)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns an associated vector if the provided boolean value is true or false."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns an associated scalar if the provided boolean value is true or false."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the boolean result of the comparison between two parameters."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns the boolean result of the comparison between INF (or NaN) and a "
-"scalar parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Boolean constant."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Boolean uniform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for all shader modes."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Input parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for vertex and fragment shader modes."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for fragment and light shader modes."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for fragment shader mode."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for light shader mode."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for vertex shader mode."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for vertex and fragment shader mode."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Scalar function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Scalar operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "E constant (2.718282). Represents the base of the natural logarithm."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Epsilon constant (0.00001). Smallest possible scalar number."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Phi constant (1.618034). Golden ratio."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Pi/4 constant (0.785398) or 45 degrees."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Pi/2 constant (1.570796) or 90 degrees."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Pi constant (3.141593) or 180 degrees."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Tau constant (6.283185) or 360 degrees."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Sqrt2 constant (1.414214). Square root of 2."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the absolute value of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the arc-cosine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the inverse hyperbolic cosine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the arc-sine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the inverse hyperbolic sine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the arc-tangent of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the arc-tangent of the parameters."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the inverse hyperbolic tangent of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Finds the nearest integer that is greater than or equal to the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Constrains a value to lie between two further values."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the cosine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the hyperbolic cosine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Converts a quantity in radians to degrees."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Base-e Exponential."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Base-2 Exponential."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Finds the nearest integer less than or equal to the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Computes the fractional part of the argument."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the inverse of the square root of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Natural logarithm."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Base-2 logarithm."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the greater of two values."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the lesser of two values."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Linear interpolation between two scalars."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the opposite value of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "1.0 - scalar"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns the value of the first parameter raised to the power of the second."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Converts a quantity in degrees to radians."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "1.0 / scalar"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Finds the nearest integer to the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Finds the nearest even integer to the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Clamps the value between 0.0 and 1.0."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Extracts the sign of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the sine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the hyperbolic sine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the square root of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"SmoothStep function( scalar(edge0), scalar(edge1), scalar(x) ).\n"
-"\n"
-"Returns 0.0 if 'x' is smaller than 'edge0' and 1.0 if x is larger than "
-"'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 "
-"using Hermite polynomials."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Step function( scalar(edge), scalar(x) ).\n"
-"\n"
-"Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the tangent of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the hyperbolic tangent of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Finds the truncated value of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Adds scalar to scalar."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Divides scalar by scalar."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Multiplies scalar by scalar."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the remainder of the two scalars."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Subtracts scalar from scalar."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Scalar constant."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Scalar uniform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Perform the cubic texture lookup."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Perform the texture lookup."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Cubic texture uniform lookup."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "2D texture uniform lookup."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "2D texture uniform lookup with triplanar."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Transform function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Calculate the outer product of a pair of vectors.\n"
-"\n"
-"OuterProduct treats the first parameter 'c' as a column vector (matrix with "
-"one column) and the second parameter 'r' as a row vector (matrix with one "
-"row) and does a linear algebraic matrix multiply 'c * r', yielding a matrix "
-"whose number of rows is the number of components in 'c' and whose number of "
-"columns is the number of components in 'r'."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Composes transform from four vectors."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Decomposes transform to four vectors."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the determinant of a transform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the inverse of a transform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the transpose of a transform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Multiplies transform by transform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Multiplies vector by transform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Transform constant."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Transform uniform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Vector function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Vector operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Composes vector from three scalars."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Decomposes vector to three scalars."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the cross product of two vectors."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the distance between two points."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the dot product of two vectors."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns the vector that points in the same direction as a reference vector. "
-"The function has three vector parameters : N, the vector to orient, I, the "
-"incident vector, and Nref, the reference vector. If the dot product of I and "
-"Nref is smaller than zero the return value is N. Otherwise -N is returned."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the length of a vector."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Linear interpolation between two vectors."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Linear interpolation between two vectors using scalar."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the normalize product of vector."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "1.0 - vector"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "1.0 / vector"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns the vector that points in the direction of reflection ( a : incident "
-"vector, b : normal vector )."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the vector that points in the direction of refraction."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"SmoothStep function( vector(edge0), vector(edge1), vector(x) ).\n"
-"\n"
-"Returns 0.0 if 'x' is smaller than 'edge0' and 1.0 if 'x' is larger than "
-"'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 "
-"using Hermite polynomials."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"SmoothStep function( scalar(edge0), scalar(edge1), vector(x) ).\n"
-"\n"
-"Returns 0.0 if 'x' is smaller than 'edge0' and 1.0 if 'x' is larger than "
-"'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 "
-"using Hermite polynomials."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Step function( vector(edge), vector(x) ).\n"
-"\n"
-"Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Step function( scalar(edge), vector(x) ).\n"
-"\n"
-"Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Adds vector to vector."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Divides vector by vector."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Multiplies vector by vector."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the remainder of the two vectors."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Subtracts vector from vector."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Vector constant."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Vector uniform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Custom Godot Shader Language expression, with custom amount of input and "
-"output ports. This is a direct injection of code into the vertex/fragment/"
-"light function, do not use it to write the function declarations inside."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns falloff based on the dot product of surface normal and view "
-"direction of camera (pass associated inputs to it)."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Custom Godot Shader Language expression, which is placed on top of the "
-"resulted shader. You can place various function definitions inside and call "
-"it later in the Expressions. You can also declare varyings, uniforms and "
-"constants."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "A reference to an existing uniform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "(Fragment/Light mode only) Scalar derivative function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "(Fragment/Light mode only) Vector derivative function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"(Fragment/Light mode only) (Vector) Derivative in 'x' using local "
-"differencing."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"(Fragment/Light mode only) (Scalar) Derivative in 'x' using local "
-"differencing."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"(Fragment/Light mode only) (Vector) Derivative in 'y' using local "
-"differencing."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"(Fragment/Light mode only) (Scalar) Derivative in 'y' using local "
-"differencing."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"(Fragment/Light mode only) (Vector) Sum of absolute derivative in 'x' and "
-"'y'."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"(Fragment/Light mode only) (Scalar) Sum of absolute derivative in 'x' and "
-"'y'."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "VisualShader"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property:"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Visual Shader Mode Changed"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Runnable"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export the project for all the presets defined."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "All presets must have an export path defined for Export All to work."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Delete preset '%s'?"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Exporting All"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export Path"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Presets"
-msgstr ""
-
-#: editor/project_export.cpp editor/project_settings_editor.cpp
-msgid "Add..."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"If checked, the preset will be available for use in one-click deploy.\n"
-"Only one preset per platform may be marked as runnable."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Resources"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export all resources in the project"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export selected scenes (and dependencies)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export selected resources (and dependencies)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export Mode:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Resources to export:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Filters to export non-resource files/folders\n"
-"(comma-separated, e.g: *.json, *.txt, docs/*)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Filters to exclude files/folders from project\n"
-"(comma-separated, e.g: *.json, *.txt, docs/*)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Features"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Custom (comma-separated):"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Feature List:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Script"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "GDScript Export Mode:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Compiled Bytecode (Faster Loading)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Encrypted (Provide Key Below)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "GDScript Encryption Key (256-bits as hexadecimal):"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Note: Encryption key needs to be stored in the binary,\n"
-"you need to build the export templates from source."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "More Info..."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export PCK/Zip..."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export Project..."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export All"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Choose an export mode:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export All..."
-msgstr ""
-
-#: editor/project_export.cpp editor/project_manager.cpp
-msgid "ZIP File"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Godot Project Pack"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Manage Export Templates"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export With Debug"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "The path specified doesn't exist."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Error opening package file (it's not in ZIP format)."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Invalid \".zip\" project file; it doesn't contain a \"project.godot\" file."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Please choose an empty folder."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Please choose a \"project.godot\" or \".zip\" file."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "This directory already contains a Godot project."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "New Game Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Imported Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Invalid project name."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Couldn't create folder."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "There is already a folder in this path with the specified name."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "It would be a good idea to name your project."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Invalid project path (changed anything?)."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Couldn't load project.godot in project path (error %d). It may be missing or "
-"corrupted."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Couldn't edit project.godot in project path."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Couldn't create project.godot in project path."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Package installed successfully!"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Rename Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Import Existing Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Import & Edit"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Create New Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Create & Edit"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Install Project:"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Install & Edit"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Project Name:"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Project Path:"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Project Installation Path:"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Renderer:"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "OpenGL ES 3.0"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Not supported by your GPU drivers."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Higher visual quality\n"
-"All features available\n"
-"Incompatible with older hardware\n"
-"Not recommended for web games"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "OpenGL ES 2.0"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Lower visual quality\n"
-"Some features not available\n"
-"Works on most hardware\n"
-"Recommended for web games"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Renderer can be changed later, but scenes may need to be adjusted."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Missing Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Error: Project is missing on the filesystem."
-msgstr ""
-
-#: editor/project_manager.cpp editor/scene_tree_dock.cpp
-msgid "Local"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Local Projects"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Asset Library Projects"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Can't open project at '%s'."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Are you sure to open more than one project?"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"The following project settings file does not specify the version of Godot "
-"through which it was created.\n"
-"\n"
-"%s\n"
-"\n"
-"If you proceed with opening it, it will be converted to Godot's current "
-"configuration file format.\n"
-"Warning: You won't be able to open the project with previous versions of the "
-"engine anymore."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"The following project settings file was generated by an older engine "
-"version, and needs to be converted for this version:\n"
-"\n"
-"%s\n"
-"\n"
-"Do you want to convert it?\n"
-"Warning: You won't be able to open the project with previous versions of the "
-"engine anymore."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"The project settings were created by a newer engine version, whose settings "
-"are not compatible with this version."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Can't run project: no main scene defined.\n"
-"Please edit the project and set the main scene in the Project Settings under "
-"the \"Application\" category."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Can't run project: Assets need to be imported.\n"
-"Please edit the project to trigger the initial import."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Are you sure to run %d projects at once?"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Remove %d projects from the list?"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Remove this project from the list?"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Remove all missing projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Language changed.\n"
-"The interface will update after restarting the editor or project manager."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Are you sure to scan %s folders for existing Godot projects?\n"
-"This could take a while."
-msgstr ""
-
-#. TRANSLATORS: This refers to the application where users manage their Godot projects.
-#: editor/project_manager.cpp
-msgctxt "Application"
-msgid "Project Manager"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Last Modified"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Loading, please wait..."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Edit Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Run Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Scan"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Scan Projects"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Select a Folder to Scan"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "New Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Import Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Remove Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Remove Missing"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "About"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Restart Now"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Remove All"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Also delete project contents (no undo!)"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Can't run project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"You currently don't have any projects.\n"
-"Would you like to explore official example projects in the Asset Library?"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Filter projects"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"This field filters projects by name and last path component.\n"
-"To filter projects by name and full path, the query must contain at least "
-"one `/` character."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Physical Key"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Key "
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Joy Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Joy Axis"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Mouse Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid ""
-"Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or "
-"'\"'"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "An action with the name '%s' already exists."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Rename Input Action Event"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Change Action deadzone"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Add Input Action Event"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "All Devices"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid " (Physical)"
-msgstr ""
-
-#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-msgid "Press a Key..."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Mouse Button Index:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Left Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Right Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Middle Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Wheel Up Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Wheel Down Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Wheel Left Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Wheel Right Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "X Button 1"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "X Button 2"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Joypad Axis Index:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Joypad Button Index:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Erase Input Action"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Erase Input Action Event"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Add Event"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Left Button."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Right Button."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Middle Button."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Wheel Up."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Wheel Down."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Add Global Property"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Select a setting item first!"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "No property '%s' exists."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Setting '%s' is internal, and it can't be deleted."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Delete Item"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid ""
-"Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or "
-"'\"'."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Add Input Action"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Error saving settings."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Settings saved OK."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Moved Input Action Event"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Override for Feature"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Add %d Translations"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Remove Translation"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Translation Resource Remap: Add %d Path(s)"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Translation Resource Remap: Add %d Remap(s)"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Change Resource Remap Language"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Remove Resource Remap"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Remove Resource Remap Option"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Changed Locale Filter"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Changed Locale Filter Mode"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Project Settings (project.godot)"
-msgstr ""
-
-#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-msgid "General"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Override For..."
-msgstr ""
-
-#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-msgid "The editor must be restarted for changes to take effect."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Input Map"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Action:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp scene/gui/scroll_container.cpp
-msgid "Deadzone"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Device:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Index:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Localization"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Translations"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Translations:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Remaps"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Resources:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Remaps by Locale:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Locales Filter"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Show All Locales"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Show Selected Locales Only"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Filter mode:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Locales:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "AutoLoad"
-msgstr ""
-
-#: editor/project_settings_editor.cpp platform/android/export/export_plugin.cpp
-#: platform/iphone/export/export.cpp
-msgid "Plugins"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Import Defaults"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Preset..."
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Zero"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Easing In-Out"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Easing Out-In"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "File..."
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Dir..."
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Assign"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Select Node"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Error loading file: Not a resource!"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Pick a Node"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Bit %d, val %d."
-msgstr ""
-
-#: editor/property_selector.cpp
-msgid "Select Property"
-msgstr ""
-
-#: editor/property_selector.cpp
-msgid "Select Virtual Method"
-msgstr ""
-
-#: editor/property_selector.cpp
-msgid "Select Method"
-msgstr ""
-
-#: editor/rename_dialog.cpp editor/scene_tree_dock.cpp
-msgid "Batch Rename"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Prefix:"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Suffix:"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Use Regular Expressions"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Advanced Options"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Substitute"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Node name"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Node's parent name, if available"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Node type"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Current scene name"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Root node name"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid ""
-"Sequential integer counter.\n"
-"Compare counter options."
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Per-level Counter"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "If set, the counter restarts for each group of child nodes."
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Initial value for the counter"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Amount by which counter is incremented for each node"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Padding"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid ""
-"Minimum number of digits for the counter.\n"
-"Missing digits are padded with leading zeros."
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Post-Process"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Style"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Keep"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "PascalCase to snake_case"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "snake_case to PascalCase"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Case"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "To Lowercase"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "To Uppercase"
-msgstr ""
-
-#: editor/rename_dialog.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Reset"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Regular Expression Error:"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "At character %s"
-msgstr ""
-
-#: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp
-msgid "Reparent Node"
-msgstr ""
-
-#: editor/reparent_dialog.cpp
-msgid "Reparent Location (Select new Parent):"
-msgstr ""
-
-#: editor/reparent_dialog.cpp
-msgid "Keep Global Transform"
-msgstr ""
-
-#: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp
-msgid "Reparent"
-msgstr ""
-
-#: editor/run_settings_dialog.cpp
-msgid "Run Mode:"
-msgstr ""
-
-#: editor/run_settings_dialog.cpp scene/main/scene_tree.cpp
-msgid "Current Scene"
-msgstr ""
-
-#: editor/run_settings_dialog.cpp
-msgid "Main Scene Arguments:"
-msgstr ""
-
-#: editor/run_settings_dialog.cpp
-msgid "Scene Run Settings"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "No parent to instance the scenes at."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Error loading scene from %s"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Cannot instance the scene '%s' because the current scene exists within one "
-"of its nodes."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Instance Scene(s)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Replace with Branch Scene"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Instance Child Scene"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Can't paste root node into the same scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Paste Node(s)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Detach Script"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on the tree root."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Move Node In Parent"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Move Nodes In Parent"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Duplicate Node(s)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Node must belong to the edited scene to become root."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Instantiated scenes can't become root"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Make node as Root"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Delete %d nodes and any children?"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Delete %d nodes?"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Delete the root node \"%s\"?"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Delete node \"%s\" and its children?"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Delete node \"%s\"?"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Saving the branch as a scene requires having a scene open in the editor."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Saving the branch as a scene requires selecting only one node, but you have "
-"selected %d nodes."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Can't save the root node branch as an instanced scene.\n"
-"To create an editable copy of the current scene, duplicate it using the "
-"FileSystem dock context menu\n"
-"or create an inherited scene using Scene > New Inherited Scene... instead."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Can't save the branch of an already instanced scene.\n"
-"To create a variation of a scene, you can make an inherited scene based on "
-"the instanced scene using Scene > New Inherited Scene... instead."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Can't save a branch which is a child of an already instantiated scene.\n"
-"To save this branch into its own scene, open the original scene, right click "
-"on this branch, and select \"Save Branch as Scene\"."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Can't save a branch which is part of an inherited scene.\n"
-"To save this branch into its own scene, open the original scene, right click "
-"on this branch, and select \"Save Branch as Scene\"."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Save New Scene As..."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Disabling \"editable_instance\" will cause all properties of the node to be "
-"reverted to their default."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Enabling \"Load As Placeholder\" will disable \"Editable Children\" and "
-"cause all properties of the node to be reverted to their default."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Make Local"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
-msgid "Another node already uses this unique name in the scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Enable Scene Unique Name"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
-msgid "Disable Scene Unique Name"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "New Scene Root"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Create Root Node:"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "2D Scene"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "3D Scene"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "User Interface"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Other Node"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Can't operate on nodes from a foreign scene!"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Can't operate on nodes the current scene inherits from!"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Attach Script"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Cut Node(s)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Remove Node(s)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Change type of node(s)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Couldn't save new scene. Likely dependencies (instances) couldn't be "
-"satisfied."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Error saving scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Error duplicating scene to save it."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Access as Scene Unique Name"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Clear Inheritance"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Editable Children"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Load As Placeholder"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Cannot attach a script: there are no languages registered.\n"
-"This is probably because this editor was built with all language modules "
-"disabled."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Add Child Node"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Expand/Collapse All"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Change Type"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Reparent to New Node"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Make Scene Root"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Merge From Scene"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp editor/script_editor_debugger.cpp
-msgid "Save Branch as Scene"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp editor/script_editor_debugger.cpp
-msgid "Copy Node Path"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Delete (No Confirm)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Add/Create a New Node."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Instance a scene file as a Node. Creates an inherited scene if no root node "
-"exists."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Attach a new or existing script to the selected node."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Detach the script from the selected node."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Remote"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"If selected, the Remote scene tree dock will cause the project to stutter "
-"every time it updates.\n"
-"Switch back to the Local scene tree dock to improve performance."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Show Scene Tree Root Selection"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Derive Script Globals By Name"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Use Favorites Root Selection"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Toggle Visible"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Unlock Node"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Button Group"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "(Connecting From)"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Node configuration warning:"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"This node can be accessed from within anywhere in the scene by preceding it "
-"with the '%s' prefix in a node path.\n"
-"Click to disable this."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"Node has %s connection(s) and %s group(s).\n"
-"Click to show signals dock."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"Node has %s connection(s).\n"
-"Click to show signals dock."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"Node is in %s group(s).\n"
-"Click to show groups dock."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Open Script:"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"Node is locked.\n"
-"Click to unlock it."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"Children are not selectable.\n"
-"Click to make selectable."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Toggle Visibility"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"AnimationPlayer is pinned.\n"
-"Click to unpin."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Invalid node name, the following characters are not allowed:"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Rename Node"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Scene Tree (Nodes):"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Node Configuration Warning!"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Select a Node"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Path is empty."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Filename is empty."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Path is not local."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Invalid base path."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "A directory with the same name exists."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "File does not exist."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Invalid extension."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Wrong extension chosen."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Error loading template '%s'"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Error - Could not create script in filesystem."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Error loading script from %s"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Overrides"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Open Script / Choose Location"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Open Script"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "File exists, it will be reused."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Invalid path."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Invalid class name."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Invalid inherited parent name or path."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Script path/name is valid."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Allowed: a-z, A-Z, 0-9, _ and ."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Built-in script (into scene file)."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Will create a new script file."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Will load an existing script file."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Script file already exists."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid ""
-"Note: Built-in scripts have some limitations and can't be edited using an "
-"external editor."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid ""
-"Warning: Having the script name be the same as a built-in type is usually "
-"not desired."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Class Name:"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Template:"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Built-in Script:"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Attach Node Script"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Bytes:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Warning:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Error:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "C++ Error"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "C++ Error:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "C++ Source"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Source:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "C++ Source:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Stack Trace"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Errors"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Child process connected."
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Copy Error"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Open C++ Source on GitHub"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Video RAM"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Skip Breakpoints"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Inspect Previous Instance"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Inspect Next Instance"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Stack Frames"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Filter stack variables"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Auto Switch To Remote Scene Tree"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Remote Scene Tree Refresh Interval"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Remote Inspect Refresh Interval"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Network Profiler"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Monitor"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Monitors"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Pick one or more items from the list to display the graph."
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "List of Video Memory Usage by Resource:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Total:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Export list to a CSV file"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Resource Path"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp scene/resources/audio_stream_sample.cpp
-#: servers/audio/effects/audio_effect_record.cpp
-msgid "Format"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp scene/main/viewport.cpp
-msgid "Usage"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp servers/visual_server.cpp
-msgid "Misc"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Clicked Control:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Clicked Control Type:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Live Edit Root:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Set From Tree"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Export measures as CSV"
-msgstr ""
-
-#: editor/settings_config_dialog.cpp
-msgid "Erase Shortcut"
-msgstr ""
-
-#: editor/settings_config_dialog.cpp
-msgid "Restore Shortcut"
-msgstr ""
-
-#: editor/settings_config_dialog.cpp
-msgid "Change Shortcut"
-msgstr ""
-
-#: editor/settings_config_dialog.cpp
-msgid "Editor Settings"
-msgstr ""
-
-#: editor/settings_config_dialog.cpp
-msgid "Shortcuts"
-msgstr ""
-
-#: editor/settings_config_dialog.cpp
-msgid "Binding"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Light Radius"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Stream Player 3D"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change AudioStreamPlayer3D Emission Angle"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
-#: platform/osx/export/export.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Camera"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Camera FOV"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Camera Size"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Visibility Notifier"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Notifier AABB"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Particles AABB"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Reflection Probe"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Probe Extents"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "GI Probe"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Baked Indirect Light"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
-msgid "Change Sphere Shape Radius"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
-msgid "Change Box Shape Extents"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Capsule Shape Radius"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Capsule Shape Height"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Cylinder Shape Radius"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Cylinder Shape Height"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Ray Shape Length"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Navigation Edge"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Navigation Edge Disabled"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Navigation Solid"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Navigation Solid Disabled"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Joint Body A"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Joint Body B"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Room Edge"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Room Overlap"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Set Room Point Position"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp scene/3d/portal.cpp
-msgid "Portal Margin"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Portal Edge"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Portal Arrow"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Set Portal Point Position"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Portal Front"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Portal Back"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp scene/2d/light_occluder_2d.cpp
-#: scene/2d/tile_map.cpp
-msgid "Occluder"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Set Occluder Sphere Radius"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Set Occluder Sphere Position"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Set Occluder Polygon Point Position"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Set Occluder Hole Point Position"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Occluder Polygon Front"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Occluder Polygon Back"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Occluder Hole"
-msgstr ""
-
-#: main/main.cpp
-msgid "Godot Physics"
-msgstr ""
-
-#: main/main.cpp servers/physics_2d/physics_2d_server_sw.cpp
-#: servers/visual/visual_server_scene.cpp
-msgid "Use BVH"
-msgstr ""
-
-#: main/main.cpp servers/physics_2d/physics_2d_server_sw.cpp
-#: servers/visual/visual_server_scene.cpp
-msgid "BVH Collision Margin"
-msgstr ""
-
-#: main/main.cpp
-msgid "Crash Handler"
-msgstr ""
-
-#: main/main.cpp
-msgid "Multithreaded Server"
-msgstr ""
-
-#: main/main.cpp
-msgid "RID Pool Prealloc"
-msgstr ""
-
-#: main/main.cpp
-msgid "Debugger stdout"
-msgstr ""
-
-#: main/main.cpp
-msgid "Max Chars Per Second"
-msgstr ""
-
-#: main/main.cpp
-msgid "Max Messages Per Frame"
-msgstr ""
-
-#: main/main.cpp
-msgid "Max Errors Per Second"
-msgstr ""
-
-#: main/main.cpp
-msgid "Max Warnings Per Second"
-msgstr ""
-
-#: main/main.cpp
-msgid "Flush stdout On Print"
-msgstr ""
-
-#: main/main.cpp servers/visual_server.cpp
-msgid "Logging"
-msgstr ""
-
-#: main/main.cpp
-msgid "File Logging"
-msgstr ""
-
-#: main/main.cpp
-msgid "Enable File Logging"
-msgstr ""
-
-#: main/main.cpp
-msgid "Log Path"
-msgstr ""
-
-#: main/main.cpp
-msgid "Max Log Files"
-msgstr ""
-
-#: main/main.cpp
-msgid "Driver"
-msgstr ""
-
-#: main/main.cpp
-msgid "Driver Name"
-msgstr ""
-
-#: main/main.cpp
-msgid "Fallback To GLES2"
-msgstr ""
-
-#: main/main.cpp
-msgid "Use Nvidia Rect Flicker Workaround"
-msgstr ""
-
-#: main/main.cpp
-msgid "DPI"
-msgstr ""
-
-#: main/main.cpp
-msgid "Allow hiDPI"
-msgstr ""
-
-#: main/main.cpp
-msgid "V-Sync"
-msgstr ""
-
-#: main/main.cpp
-msgid "Use V-Sync"
-msgstr ""
-
-#: main/main.cpp
-msgid "Per Pixel Transparency"
-msgstr ""
-
-#: main/main.cpp
-msgid "Allowed"
-msgstr ""
-
-#: main/main.cpp
-msgid "Intended Usage"
-msgstr ""
-
-#: main/main.cpp
-msgid "Framebuffer Allocation"
-msgstr ""
-
-#: main/main.cpp platform/uwp/os_uwp.cpp
-msgid "Energy Saving"
-msgstr ""
-
-#: main/main.cpp
-msgid "Threads"
-msgstr ""
-
-#: main/main.cpp servers/physics_2d/physics_2d_server_wrap_mt.h
-msgid "Thread Model"
-msgstr ""
-
-#: main/main.cpp
-msgid "Thread Safe BVH"
-msgstr ""
-
-#: main/main.cpp
-msgid "Handheld"
-msgstr ""
-
-#: main/main.cpp platform/javascript/export/export.cpp
-#: platform/uwp/export/export.cpp
-msgid "Orientation"
-msgstr ""
-
-#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
-msgid "Common"
-msgstr ""
-
-#: main/main.cpp
-msgid "Physics FPS"
-msgstr ""
-
-#: main/main.cpp
-msgid "Force FPS"
-msgstr ""
-
-#: main/main.cpp
-msgid "Enable Pause Aware Picking"
-msgstr ""
-
-#: main/main.cpp scene/gui/item_list.cpp scene/gui/popup_menu.cpp
-#: scene/gui/scroll_container.cpp scene/gui/text_edit.cpp scene/gui/tree.cpp
-#: scene/main/viewport.cpp scene/register_scene_types.cpp
-msgid "GUI"
-msgstr ""
-
-#: main/main.cpp
-msgid "Drop Mouse On GUI Input Disabled"
-msgstr ""
-
-#: main/main.cpp
-msgid "stdout"
-msgstr ""
-
-#: main/main.cpp
-msgid "Print FPS"
-msgstr ""
-
-#: main/main.cpp
-msgid "Verbose stdout"
-msgstr ""
-
-#: main/main.cpp scene/main/scene_tree.cpp scene/resources/multimesh.cpp
-msgid "Physics Interpolation"
-msgstr ""
-
-#: main/main.cpp
-msgid "Enable Warnings"
-msgstr ""
-
-#: main/main.cpp
-msgid "Frame Delay Msec"
-msgstr ""
-
-#: main/main.cpp
-msgid "Low Processor Mode"
-msgstr ""
-
-#: main/main.cpp
-msgid "Delta Sync After Draw"
-msgstr ""
-
-#: main/main.cpp
-msgid "iOS"
-msgstr ""
-
-#: main/main.cpp
-msgid "Hide Home Indicator"
-msgstr ""
-
-#: main/main.cpp
-msgid "Input Devices"
-msgstr ""
-
-#: main/main.cpp
-msgid "Pointing"
-msgstr ""
-
-#: main/main.cpp
-msgid "Touch Delay"
-msgstr ""
-
-#: main/main.cpp servers/visual_server.cpp
-msgid "GLES3"
-msgstr ""
-
-#: main/main.cpp servers/visual_server.cpp
-msgid "Shaders"
-msgstr ""
-
-#: main/main.cpp
-msgid "Debug Shader Fallbacks"
-msgstr ""
-
-#: main/main.cpp scene/3d/baked_lightmap.cpp scene/3d/camera.cpp
-#: scene/3d/world_environment.cpp scene/main/scene_tree.cpp
-#: scene/resources/world.cpp
-msgid "Environment"
-msgstr ""
-
-#: main/main.cpp
-msgid "Default Clear Color"
-msgstr ""
-
-#: main/main.cpp
-msgid "Boot Splash"
-msgstr ""
-
-#: main/main.cpp
-msgid "Show Image"
-msgstr ""
-
-#: main/main.cpp
-msgid "Image"
-msgstr ""
-
-#: main/main.cpp
-msgid "Fullsize"
-msgstr ""
-
-#: main/main.cpp scene/resources/dynamic_font.cpp
-msgid "Use Filter"
-msgstr ""
-
-#: main/main.cpp scene/resources/style_box.cpp
-msgid "BG Color"
-msgstr ""
-
-#: main/main.cpp
-msgid "macOS Native Icon"
-msgstr ""
-
-#: main/main.cpp
-msgid "Windows Native Icon"
-msgstr ""
-
-#: main/main.cpp
-msgid "Buffering"
-msgstr ""
-
-#: main/main.cpp
-msgid "Agile Event Flushing"
-msgstr ""
-
-#: main/main.cpp
-msgid "Emulate Touch From Mouse"
-msgstr ""
-
-#: main/main.cpp
-msgid "Emulate Mouse From Touch"
-msgstr ""
-
-#: main/main.cpp
-msgid "Mouse Cursor"
-msgstr ""
-
-#: main/main.cpp
-msgid "Custom Image"
-msgstr ""
-
-#: main/main.cpp
-msgid "Custom Image Hotspot"
-msgstr ""
-
-#: main/main.cpp
-msgid "Tooltip Position Offset"
-msgstr ""
-
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
-msgid "Debugger Agent"
-msgstr ""
-
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
-msgid "Wait For Debugger"
-msgstr ""
-
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
-msgid "Wait Timeout"
-msgstr ""
-
-#: main/main.cpp
-msgid "Runtime"
-msgstr ""
-
-#: main/main.cpp
-msgid "Unhandled Exception Policy"
-msgstr ""
-
-#: main/main.cpp
-msgid "Main Loop Type"
-msgstr ""
-
-#: main/main.cpp scene/gui/texture_progress.cpp
-#: scene/gui/viewport_container.cpp
-msgid "Stretch"
-msgstr ""
-
-#: main/main.cpp
-msgid "Aspect"
-msgstr ""
-
-#: main/main.cpp
-msgid "Shrink"
-msgstr ""
-
-#: main/main.cpp scene/main/scene_tree.cpp
-msgid "Auto Accept Quit"
-msgstr ""
-
-#: main/main.cpp scene/main/scene_tree.cpp
-msgid "Quit On Go Back"
-msgstr ""
-
-#: main/main.cpp scene/main/viewport.cpp
-msgid "Snap Controls To Pixels"
-msgstr ""
-
-#: main/main.cpp
-msgid "Dynamic Fonts"
-msgstr ""
-
-#: main/main.cpp
-msgid "Use Oversampling"
-msgstr ""
-
-#: modules/bullet/register_types.cpp modules/bullet/space_bullet.cpp
-msgid "Active Soft World"
-msgstr ""
-
-#: modules/csg/csg_gizmos.cpp
-msgid "CSG"
-msgstr ""
-
-#: modules/csg/csg_gizmos.cpp
-msgid "Change Cylinder Radius"
-msgstr ""
-
-#: modules/csg/csg_gizmos.cpp
-msgid "Change Cylinder Height"
-msgstr ""
-
-#: modules/csg/csg_gizmos.cpp
-msgid "Change Torus Inner Radius"
-msgstr ""
-
-#: modules/csg/csg_gizmos.cpp
-msgid "Change Torus Outer Radius"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Operation"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Calculate Tangents"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Use Collision"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp servers/physics_2d_server.cpp
-msgid "Collision Layer"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp scene/2d/ray_cast_2d.cpp scene/3d/camera.cpp
-#: scene/3d/ray_cast.cpp scene/3d/spring_arm.cpp
-#: scene/resources/navigation_mesh.cpp servers/physics_server.cpp
-msgid "Collision Mask"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Invert Faces"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp scene/2d/navigation_agent_2d.cpp
-#: scene/2d/navigation_obstacle_2d.cpp scene/3d/navigation_agent.cpp
-#: scene/3d/navigation_obstacle.cpp scene/3d/vehicle_body.cpp
-#: scene/animation/root_motion_view.cpp scene/resources/capsule_shape.cpp
-#: scene/resources/capsule_shape_2d.cpp scene/resources/circle_shape_2d.cpp
-#: scene/resources/cylinder_shape.cpp scene/resources/environment.cpp
-#: scene/resources/navigation_mesh.cpp scene/resources/primitive_meshes.cpp
-#: scene/resources/sphere_shape.cpp
-msgid "Radius"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp scene/resources/primitive_meshes.cpp
-msgid "Radial Segments"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp scene/resources/primitive_meshes.cpp
-msgid "Rings"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Smooth Faces"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Sides"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Cone"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Inner Radius"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Outer Radius"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Ring Sides"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
-#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
-msgid "Polygon"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Spin Degrees"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Spin Sides"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Node"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Interval Type"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Interval"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Simplify Angle"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Rotation"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Local"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Continuous U"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path U Distance"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Joined"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "Compression Mode"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "Transfer Channel"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "Channel Count"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "Always Ordered"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "Server Relay"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "DTLS Verify"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "DTLS Hostname"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "Use DTLS"
-msgstr ""
-
-#: modules/fbx/editor_scene_importer_fbx.cpp
-msgid "FBX"
-msgstr ""
-
-#: modules/fbx/editor_scene_importer_fbx.cpp
-msgid "Use FBX"
-msgstr ""
-
-#: modules/gdnative/gdnative.cpp
-msgid "Config File"
-msgstr ""
-
-#: modules/gdnative/gdnative.cpp
-msgid "Load Once"
-msgstr ""
-
-#: modules/gdnative/gdnative.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Singleton"
-msgstr ""
-
-#: modules/gdnative/gdnative.cpp
-msgid "Symbol Prefix"
-msgstr ""
-
-#: modules/gdnative/gdnative.cpp
-msgid "Reloadable"
-msgstr ""
-
-#: modules/gdnative/gdnative.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-#: modules/gdnative/nativescript/nativescript.cpp
-msgid "Library"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Select the dynamic library for this entry"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Select dependencies of the library for this entry"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Remove current entry"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Double click to create a new entry"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Platform:"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Platform"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Dynamic Library"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Add an architecture entry"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "GDNativeLibrary"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Enabled GDNative Singleton"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Disabled GDNative Singleton"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
-msgstr ""
-
-#: modules/gdnative/nativescript/nativescript.cpp
-msgid "Class Name"
-msgstr ""
-
-#: modules/gdnative/nativescript/nativescript.cpp
-msgid "Script Class"
-msgstr ""
-
-#: modules/gdnative/nativescript/nativescript.cpp
-msgid "Icon Path"
-msgstr ""
-
-#: modules/gdnative/register_types.cpp
-msgid "GDNative"
-msgstr ""
-
-#: modules/gdscript/editor/gdscript_highlighter.cpp
-#: modules/gdscript/gdscript.cpp
-msgid "GDScript"
-msgstr ""
-
-#: modules/gdscript/editor/gdscript_highlighter.cpp
-msgid "Function Definition Color"
-msgstr ""
-
-#: modules/gdscript/editor/gdscript_highlighter.cpp
-msgid "Node Path Color"
-msgstr ""
-
-#: modules/gdscript/gdscript.cpp modules/visual_script/visual_script.cpp
-msgid "Max Call Stack"
-msgstr ""
-
-#: modules/gdscript/gdscript.cpp
-msgid "Treat Warnings As Errors"
-msgstr ""
-
-#: modules/gdscript/gdscript.cpp
-msgid "Exclude Addons"
-msgstr ""
-
-#: modules/gdscript/gdscript.cpp
-msgid "Autocomplete Setters And Getters"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Step argument is zero!"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Not a script with an instance"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Not based on a script"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Not based on a resource file"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Invalid instance dictionary format (missing @path)"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Invalid instance dictionary format (can't load script at @path)"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Invalid instance dictionary format (invalid script at @path)"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Invalid instance dictionary (invalid subclasses)"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Object can't provide a length."
-msgstr ""
-
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-msgid "Language Server"
-msgstr ""
-
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-msgid "Enable Smart Resolve"
-msgstr ""
-
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-msgid "Show Native Symbols In Editor"
-msgstr ""
-
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-msgid "Use Thread"
-msgstr ""
-
-#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
-msgid "Export Mesh GLTF2"
-msgstr ""
-
-#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
-msgid "Export GLTF..."
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Buffer View"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp modules/gltf/gltf_buffer_view.cpp
-msgid "Byte Offset"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Component Type"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Normalized"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Count"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp scene/resources/visual_shader_nodes.cpp
-msgid "Min"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp scene/resources/visual_shader_nodes.cpp
-msgid "Max"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Sparse Count"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Sparse Indices Buffer View"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Sparse Indices Byte Offset"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Sparse Indices Component Type"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Sparse Values Buffer View"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Sparse Values Byte Offset"
-msgstr ""
-
-#: modules/gltf/gltf_buffer_view.cpp
-msgid "Buffer"
-msgstr ""
-
-#: modules/gltf/gltf_buffer_view.cpp
-msgid "Byte Length"
-msgstr ""
-
-#: modules/gltf/gltf_buffer_view.cpp
-msgid "Byte Stride"
-msgstr ""
-
-#: modules/gltf/gltf_buffer_view.cpp
-msgid "Indices"
-msgstr ""
-
-#: modules/gltf/gltf_camera.cpp
-msgid "FOV Size"
-msgstr ""
-
-#: modules/gltf/gltf_camera.cpp
-msgid "Zfar"
-msgstr ""
-
-#: modules/gltf/gltf_camera.cpp
-msgid "Znear"
-msgstr ""
-
-#: modules/gltf/gltf_light.cpp scene/2d/canvas_modulate.cpp
-#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/light.cpp
-#: scene/animation/root_motion_view.cpp scene/gui/color_picker.cpp
-#: scene/gui/color_rect.cpp scene/gui/rich_text_effect.cpp
-#: scene/resources/environment.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp
-msgid "Color"
-msgstr ""
-
-#: modules/gltf/gltf_light.cpp scene/3d/reflection_probe.cpp
-#: scene/resources/environment.cpp
-msgid "Intensity"
-msgstr ""
-
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
-msgid "Range"
-msgstr ""
-
-#: modules/gltf/gltf_light.cpp
-msgid "Inner Cone Angle"
-msgstr ""
-
-#: modules/gltf/gltf_light.cpp
-msgid "Outer Cone Angle"
-msgstr ""
-
-#: modules/gltf/gltf_mesh.cpp
-msgid "Blend Weights"
-msgstr ""
-
-#: modules/gltf/gltf_mesh.cpp
-msgid "Instance Materials"
-msgstr ""
-
-#: modules/gltf/gltf_node.cpp scene/3d/skeleton.cpp
-msgid "Parent"
-msgstr ""
-
-#: modules/gltf/gltf_node.cpp
-msgid "Xform"
-msgstr ""
-
-#: modules/gltf/gltf_node.cpp scene/3d/mesh_instance.cpp
-msgid "Skin"
-msgstr ""
-
-#: modules/gltf/gltf_node.cpp scene/3d/spatial.cpp
-msgid "Translation"
-msgstr ""
-
-#: modules/gltf/gltf_node.cpp
-msgid "Children"
-msgstr ""
-
-#: modules/gltf/gltf_skeleton.cpp modules/gltf/gltf_skin.cpp
-msgid "Joints"
-msgstr ""
-
-#: modules/gltf/gltf_skeleton.cpp modules/gltf/gltf_skin.cpp
-msgid "Roots"
-msgstr ""
-
-#: modules/gltf/gltf_skeleton.cpp modules/gltf/gltf_state.cpp
-msgid "Unique Names"
-msgstr ""
-
-#: modules/gltf/gltf_skeleton.cpp
-msgid "Godot Bone Node"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Skin Root"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Joints Original"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Inverse Binds"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Non Joints"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Joint I To Bone I"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Joint I To Name"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Godot Skin"
-msgstr ""
-
-#: modules/gltf/gltf_spec_gloss.cpp
-msgid "Diffuse Img"
-msgstr ""
-
-#: modules/gltf/gltf_spec_gloss.cpp
-msgid "Diffuse Factor"
-msgstr ""
-
-#: modules/gltf/gltf_spec_gloss.cpp
-msgid "Gloss Factor"
-msgstr ""
-
-#: modules/gltf/gltf_spec_gloss.cpp
-msgid "Specular Factor"
-msgstr ""
-
-#: modules/gltf/gltf_spec_gloss.cpp
-msgid "Spec Gloss Img"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Json"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Major Version"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Minor Version"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "GLB Data"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Use Named Skin Binds"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Buffer Views"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Accessors"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Scene Name"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Root Nodes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp scene/2d/particles_2d.cpp
-#: scene/gui/texture_button.cpp scene/gui/texture_progress.cpp
-msgid "Textures"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
-msgid "Images"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Cameras"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp servers/visual_server.cpp
-msgid "Lights"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Unique Animation Names"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Skeletons"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Skeleton To Node"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Animations"
-msgstr ""
-
-#: modules/gltf/gltf_texture.cpp
-msgid "Src Image"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp
-msgid "Physics Material"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
-msgid "Use In Baked Light"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
-msgid "Cell"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp
-msgid "Octant Size"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp
-msgid "Center X"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp
-msgid "Center Y"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp
-msgid "Center Z"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
-#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
-#: scene/resources/material.cpp
-msgid "Mask"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Next Plane"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Previous Plane"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Plane:"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Next Floor"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Previous Floor"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Floor:"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Delete Selection"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Fill Selection"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paste Selection"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Selection"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Snap View"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Clip Disabled"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Clip Above"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Clip Below"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Edit X Axis"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Edit Y Axis"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Edit Z Axis"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Rotate X"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Rotate Y"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Rotate Z"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Back Rotate X"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Back Rotate Y"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Back Rotate Z"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Clear Rotation"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Paste Selects"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Clear Selection"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Fill Selection"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Settings"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Pick Distance:"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Filter meshes"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Give a MeshLibrary resource to this GridMap to use its meshes."
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Begin Bake"
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Preparing data structures"
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Generate buffers"
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Direct lighting"
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Indirect lighting"
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Post processing"
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Plotting lightmaps"
-msgstr ""
-
-#: modules/lightmapper_cpu/register_types.cpp
-msgid "CPU Lightmapper"
-msgstr ""
-
-#: modules/lightmapper_cpu/register_types.cpp
-msgid "Low Quality Ray Count"
-msgstr ""
-
-#: modules/lightmapper_cpu/register_types.cpp
-msgid "Medium Quality Ray Count"
-msgstr ""
-
-#: modules/lightmapper_cpu/register_types.cpp
-msgid "High Quality Ray Count"
-msgstr ""
-
-#: modules/lightmapper_cpu/register_types.cpp
-msgid "Ultra Quality Ray Count"
-msgstr ""
-
-#: modules/minimp3/audio_stream_mp3.cpp
-#: modules/minimp3/resource_importer_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
-#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
-msgid "Loop Offset"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "Eye Height"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "IOD"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "Display Width"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "Display To Lens"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "Oversample"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "K1"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "K2"
-msgstr ""
-
-#: modules/mono/csharp_script.cpp
-msgid "Class name can't be a reserved keyword"
-msgstr ""
-
-#: modules/mono/csharp_script.cpp
-msgid "Build Solution"
-msgstr ""
-
-#: modules/mono/editor/csharp_project.cpp
-msgid "Auto Update Project"
-msgstr ""
-
-#: modules/mono/mono_gd/gd_mono_utils.cpp
-msgid "End of inner exception stack trace"
-msgstr ""
-
-#: modules/navigation/navigation_mesh_editor_plugin.cpp
-#: scene/3d/navigation_mesh_instance.cpp
-msgid "A NavigationMesh resource must be set or created for this node to work."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_editor_plugin.cpp
-msgid "Bake NavMesh"
-msgstr ""
-
-#: modules/navigation/navigation_mesh_editor_plugin.cpp
-msgid "Clear the navigation mesh."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Setting up Configuration..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Calculating grid size..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Creating heightfield..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Marking walkable triangles..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Constructing compact heightfield..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Eroding walkable area..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Partitioning..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Creating contours..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Creating polymesh..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Converting to native navigation mesh..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Navigation Mesh Generator Setup:"
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Parsing Geometry..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Done!"
-msgstr ""
-
-#: modules/opensimplex/noise_texture.cpp
-msgid "Seamless"
-msgstr ""
-
-#: modules/opensimplex/noise_texture.cpp
-msgid "As Normal Map"
-msgstr ""
-
-#: modules/opensimplex/noise_texture.cpp
-msgid "Bump Strength"
-msgstr ""
-
-#: modules/opensimplex/noise_texture.cpp
-msgid "Noise"
-msgstr ""
-
-#: modules/opensimplex/noise_texture.cpp
-msgid "Noise Offset"
-msgstr ""
-
-#: modules/opensimplex/open_simplex_noise.cpp
-msgid "Octaves"
-msgstr ""
-
-#: modules/opensimplex/open_simplex_noise.cpp
-msgid "Period"
-msgstr ""
-
-#: modules/opensimplex/open_simplex_noise.cpp
-msgid "Persistence"
-msgstr ""
-
-#: modules/opensimplex/open_simplex_noise.cpp
-msgid "Lacunarity"
-msgstr ""
-
-#: modules/regex/regex.cpp
-msgid "Subject"
-msgstr ""
-
-#: modules/regex/regex.cpp
-msgid "Names"
-msgstr ""
-
-#: modules/regex/regex.cpp
-msgid "Strings"
-msgstr ""
-
-#: modules/upnp/upnp.cpp
-msgid "Discover Multicast If"
-msgstr ""
-
-#: modules/upnp/upnp.cpp
-msgid "Discover Local Port"
-msgstr ""
-
-#: modules/upnp/upnp.cpp
-msgid "Discover IPv6"
-msgstr ""
-
-#: modules/upnp/upnp_device.cpp
-msgid "Description URL"
-msgstr ""
-
-#: modules/upnp/upnp_device.cpp
-msgid "Service Type"
-msgstr ""
-
-#: modules/upnp/upnp_device.cpp
-msgid "IGD Control URL"
-msgstr ""
-
-#: modules/upnp/upnp_device.cpp
-msgid "IGD Service Type"
-msgstr ""
-
-#: modules/upnp/upnp_device.cpp
-msgid "IGD Our Addr"
-msgstr ""
-
-#: modules/upnp/upnp_device.cpp
-msgid "IGD Status"
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid ""
-"A node yielded without working memory, please read the docs on how to yield "
-"properly!"
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid ""
-"Node yielded, but did not return a function state in the first working "
-"memory."
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid ""
-"Return value must be assigned to first element of node working memory! Fix "
-"your node please."
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid "Found sequence bit but not the node in the stack, report bug!"
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid "Visual Script"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Signal Arguments"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Argument Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Argument name"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Set Variable Default Value"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Set Variable Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Input Port"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Output Port"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Port Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Port Name"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Override an existing built-in function."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Create a new function."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Variables:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Create a new variable."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Signals:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Create a new signal."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Name is not a valid identifier:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Name already in use by another func/var/signal:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Rename Function"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Rename Variable"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Rename Signal"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Function"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Delete input port"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Variable"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Signal"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Input Port"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Output Port"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Expression"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Can't copy the function node."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Paste VisualScript Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove VisualScript Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Duplicate VisualScript Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Hold %s to drop a Getter. Hold Shift to drop a generic signature."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Hold %s to drop a simple reference to the node."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Hold Ctrl to drop a simple reference to the node."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Hold %s to drop a Variable Setter."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Hold Ctrl to drop a Variable Setter."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Preload Node"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Node(s)"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Node(s) From Tree"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid ""
-"Can't drop properties because script '%s' is not used in this scene.\n"
-"Drop holding 'Shift' to just copy the signature."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Getter Property"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Setter Property"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Base Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Move Node(s)"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove VisualScript Node"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Connect Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Disconnect Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Connect Node Data"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Connect Node Sequence"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Script already has function '%s'"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Input Value"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Resize Comment"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Can't create function with a function node."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Can't create function of nodes from nodes of multiple functions."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Select at least one node with sequence port."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Try to only have one sequence input in selection."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Create Function"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Make Tool:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Members:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Base Type:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Nodes..."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Function..."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "function_name"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Select or create a function to edit its graph."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Delete Selected"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Find Node Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Copy Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Cut Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Make Function"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Refresh Graph"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit Member"
-msgstr ""
-
-#: modules/visual_script/visual_script_expression.cpp
-#: scene/resources/visual_shader.cpp
-msgid "Expression"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Return"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Return Enabled"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Return Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Condition"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "if (cond) is:"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "While"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "while (cond):"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "for (elem) in (input):"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Sequence"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "in order:"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Steps"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Switch"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "'input' is:"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Type Cast"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Is %s?"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Base Script"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "On %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "On Self"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Call Mode"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Basic Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Node Path"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Use Default Args"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Validate"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "RPC Call Mode"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Subtract %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Multiply %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Divide %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Mod %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "ShiftLeft %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "ShiftRight %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "BitAnd %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "BitOr %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "BitXor %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Set Mode"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Assign Op"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Get %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Invalid index property name."
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Base object is not a Node!"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Path does not lead to Node!"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Invalid index property name '%s' in node %s."
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Emit %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Compose Array"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp scene/resources/material.cpp
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Operator"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "a if cond, else b"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Var Name"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Preload"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Get Index"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Set Index"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Global Constant"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Class Constant"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Basic Constant"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Math Constant"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Get Engine Singleton"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Get Scene Node"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Get Scene Tree"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Get Self"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "CustomNode"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Custom node has no _step() method, can't process graph."
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid ""
-"Invalid return value from _step(), must be integer (seq out), or string "
-"(error)."
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "SubCall"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp scene/gui/graph_node.cpp
-msgid "Title"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Construct %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Get Local Var"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Set Local Var"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Action %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Deconstruct %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Search VisualScript"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Yield"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Wait"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Next Frame"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Next Physics Frame"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "%s sec(s)"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp scene/main/timer.cpp
-msgid "Wait Time"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "WaitSignal"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "WaitNodeSignal"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "WaitInstanceSignal"
-msgstr ""
-
-#: modules/webrtc/webrtc_data_channel.cpp
-msgid "Write Mode"
-msgstr ""
-
-#: modules/webrtc/webrtc_data_channel.h
-msgid "WebRTC"
-msgstr ""
-
-#: modules/webrtc/webrtc_data_channel.h
-msgid "Max Channel In Buffer (KB)"
-msgstr ""
-
-#: modules/websocket/websocket_client.cpp
-msgid "Verify SSL"
-msgstr ""
-
-#: modules/websocket/websocket_client.cpp
-msgid "Trusted SSL Certificate"
-msgstr ""
-
-#: modules/websocket/websocket_macros.h
-msgid "WebSocket Client"
-msgstr ""
-
-#: modules/websocket/websocket_macros.h
-msgid "Max In Buffer (KB)"
-msgstr ""
-
-#: modules/websocket/websocket_macros.h
-msgid "Max In Packets"
-msgstr ""
-
-#: modules/websocket/websocket_macros.h
-msgid "Max Out Buffer (KB)"
-msgstr ""
-
-#: modules/websocket/websocket_macros.h
-msgid "Max Out Packets"
-msgstr ""
-
-#: modules/websocket/websocket_macros.h
-msgid "WebSocket Server"
-msgstr ""
-
-#: modules/websocket/websocket_server.cpp
-msgid "Bind IP"
-msgstr ""
-
-#: modules/websocket/websocket_server.cpp
-msgid "Private Key"
-msgstr ""
-
-#: modules/websocket/websocket_server.cpp platform/javascript/export/export.cpp
-msgid "SSL Certificate"
-msgstr ""
-
-#: modules/websocket/websocket_server.cpp
-msgid "CA Chain"
-msgstr ""
-
-#: modules/websocket/websocket_server.cpp
-msgid "Handshake Timeout"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Session Mode"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Required Features"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Optional Features"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Requested Reference Space Types"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Reference Space Type"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Visibility State"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Bounds Geometry"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "XR Standard Mapping"
-msgstr ""
-
-#: platform/android/export/export.cpp
-msgid "Android SDK Path"
-msgstr ""
-
-#: platform/android/export/export.cpp
-msgid "Debug Keystore"
-msgstr ""
-
-#: platform/android/export/export.cpp
-msgid "Debug Keystore User"
-msgstr ""
-
-#: platform/android/export/export.cpp
-msgid "Debug Keystore Pass"
-msgstr ""
-
-#: platform/android/export/export.cpp
-msgid "Force System User"
-msgstr ""
-
-#: platform/android/export/export.cpp
-msgid "Shutdown ADB On Exit"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Launcher Icons"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Main 192 X 192"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Adaptive Foreground 432 X 432"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Adaptive Background 432 X 432"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Package name is missing."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Package segments must be of non-zero length."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "The character '%s' is not allowed in Android application package names."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "A digit cannot be the first character in a package segment."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "The character '%s' cannot be the first character in a package segment."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "The package must have at least one '.' separator."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Use Custom Build"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Export Format"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
-msgid "Architectures"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Keystore"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Debug User"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
-msgid "Debug Password"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Release User"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Release Password"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "One Click Deploy"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Clear Previous Install"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Code"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Min SDK"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Target SDK"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
-msgid "Package"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
-msgid "Unique Name"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Signed"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Classify As Game"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Retain Data On Uninstall"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Exclude From Recents"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Graphics"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "OpenGL Debug"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "XR Features"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "XR Mode"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Hand Tracking"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Hand Tracking Frequency"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Passthrough"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Immersive Mode"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Support Small"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Support Normal"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Support Large"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Support Xlarge"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "User Data Backup"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Allow"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
-msgid "Command Line"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
-msgid "Extra Args"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "APK Expansion"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Salt"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Public Key"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Permissions"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Custom Permissions"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Select device from the list"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Running on %s"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Exporting APK..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Uninstalling..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Installing to device, please wait..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not install to device: %s"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Running on device..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not execute on device."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Android build template not installed in the project. Install it from the "
-"Project menu."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Either Debug Keystore, Debug User AND Debug Password settings must be "
-"configured OR none of them."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Debug keystore not configured in the Editor Settings nor in the preset."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Either Release Keystore, Release User AND Release Password settings must be "
-"configured OR none of them."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Release keystore incorrectly configured in the export preset."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "A valid Android SDK path is required in Editor Settings."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Invalid Android SDK path in Editor Settings."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Missing 'platform-tools' directory!"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Unable to find Android SDK platform-tools' adb command."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Please check in the Android SDK directory specified in Editor Settings."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Missing 'build-tools' directory!"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Unable to find Android SDK build-tools' apksigner command."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Invalid public key for APK expansion."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Invalid package name:"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Invalid \"GodotPaymentV3\" module included in the \"android/modules\" "
-"project setting (changed in Godot 3.2.2).\n"
-"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n"
-"Note that the singleton was also renamed from \"GodotPayments\" to "
-"\"GodotGooglePlayBilling\"."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "\"Use Custom Build\" must be enabled to use the plugins."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"\"Hand Tracking\" is only valid when \"Xr Mode\" is \"Oculus Mobile VrApi\" "
-"or \"OpenXR\"."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "\"Passthrough\" is only valid when \"Xr Mode\" is \"OpenXR\"."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Changing the \"Min Sdk\" is only valid when \"Use Custom Build\" is enabled."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Changing the \"Target Sdk\" is only valid when \"Use Custom Build\" is "
-"enabled."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Signing debug %s..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Signing release %s..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not find keystore, unable to export."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "'apksigner' returned with error #%d"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Verifying %s..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "'apksigner' verification of %s failed."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Exporting for Android"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Invalid filename! Android App Bundle requires the *.aab extension."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "APK Expansion not compatible with Android App Bundle."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Invalid filename! Android APK requires the *.apk extension."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Trying to build from a custom built template, but no version info for it "
-"exists. Please reinstall from the 'Project' menu."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
-"Please reinstall Android build template from 'Project' menu."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not write expansion package file!"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Building Android Project (gradle)"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Building of Android project failed, check output for the error.\n"
-"Alternatively visit docs.godotengine.org for Android build documentation."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Moving output"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Unable to copy and rename export file, check gradle project directory for "
-"outputs."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Creating APK..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
-"Please build a template with all required libraries, or uncheck the missing "
-"architectures in the export preset."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Adding files..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Aligning APK..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not unzip temporary unaligned APK."
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Identifier is missing."
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "The character '%s' is not allowed in Identifier."
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Landscape Launch Screens"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 2436 X 1125"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 2208 X 1242"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 1024 X 768"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 2048 X 1536"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Portrait Launch Screens"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 640 X 960"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 640 X 1136"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 750 X 1334"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 1125 X 2436"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 768 X 1024"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 1536 X 2048"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 1242 X 2208"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "App Store Team ID"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Provisioning Profile UUID Debug"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Code Sign Identity Debug"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Export Method Debug"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Provisioning Profile UUID Release"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Code Sign Identity Release"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Export Method Release"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Targeted Device Family"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Info"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Identifier"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Signature"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Short Version"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-#: platform/windows/export/export.cpp
-msgid "Copyright"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Capabilities"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Access Wi-Fi"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Push Notifications"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "User Data"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Accessible From Files App"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Accessible From iTunes Sharing"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Privacy"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Camera Usage Description"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Microphone Usage Description"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Photolibrary Usage Description"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 120 X 120"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 180 X 180"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 76 X 76"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 152 X 152"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 167 X 167"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "App Store 1024 X 1024"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Spotlight 40 X 40"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Spotlight 80 X 80"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Storyboard"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Use Launch Screen Storyboard"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Image Scale Mode"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Custom Image @2x"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Custom Image @3x"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Use Custom BG Color"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Custom BG Color"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "App Store Team ID not specified - cannot configure the project."
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Invalid Identifier:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Stop HTTP Server"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Run in Browser"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Run exported HTML in the system's default browser."
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Variant"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Export Type"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "VRAM Texture Compression"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "For Desktop"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "For Mobile"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "HTML"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Export Icon"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Custom HTML Shell"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Head Include"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Canvas Resize Policy"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Focus Canvas On Start"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Experimental Virtual Keyboard"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Progressive Web App"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Offline Page"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Icon 144 X 144"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Icon 180 X 180"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Icon 512 X 512"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Web"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "HTTP Host"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "HTTP Port"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Use SSL"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "SSL Key"
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Can't get filesystem access."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to get Info.plist hash."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Invalid Info.plist, no exe name."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Invalid Info.plist, no bundle id."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Invalid Info.plist, can't load."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to create \"%s\" subfolder."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to extract thin binary."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Invalid binary format."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Already signed!"
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to process nested resources."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to create _CodeSignature subfolder."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to get CodeResources hash."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp platform/osx/export/export.cpp
-msgid "Invalid entitlements file."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Invalid executable file."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Can't resize signature load command."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to create fat binary."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Unknown bundle type."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Unknown object type."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "App Category"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "High Res"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Location Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Address Book Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Calendar Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Photos Library Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Desktop Folder Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Documents Folder Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Downloads Folder Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Network Volumes Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Removable Volumes Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp platform/windows/export/export.cpp
-msgid "Codesign"
-msgstr ""
-
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
-msgid "Identity"
-msgstr ""
-
-#: platform/osx/export/export.cpp platform/windows/export/export.cpp
-msgid "Timestamp"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Hardened Runtime"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Replace Existing Signature"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Entitlements"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Custom File"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Allow JIT Code Execution"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Allow Unsigned Executable Memory"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Allow Dyld Environment Variables"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Disable Library Validation"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Audio Input"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Address Book"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Calendars"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Photos Library"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Apple Events"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Debugging"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "App Sandbox"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Network Server"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Network Client"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Device USB"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Device Bluetooth"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Files Downloads"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Files Pictures"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Files Music"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Files Movies"
-msgstr ""
-
-#: platform/osx/export/export.cpp platform/windows/export/export.cpp
-msgid "Custom Options"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Apple ID Name"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Apple ID Password"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Apple Team ID"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"You can check progress manually by opening a Terminal and running the "
-"following command:"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Run the following command to staple the notarization ticket to the exported "
-"application (optional):"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "No identity found."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Creating app bundle"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Relative symlinks are not supported on this OS, the exported project might "
-"be broken!"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
-"template archive."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Making PKG"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Ad-hoc signed applications require the 'Disable Library Validation' "
-"entitlement to load dynamic libraries."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Code signing bundle"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Making DMG"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Code signing DMG"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Making ZIP"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Notarization requires the app to be archived first, select the DMG or ZIP "
-"export format instead."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Sending archive for notarization"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Invalid bundle identifier:"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Warning: Built-in \"codesign\" is selected in the Editor Settings. Code "
-"signing is limited to ad-hoc signature only."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Warning: Xcode command line tools are not installed, using built-in "
-"\"codesign\". Code signing is limited to ad-hoc signature only."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization: Notarization with an ad-hoc signature is not supported."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization: Code signing is required for notarization."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization: Hardened runtime is required for notarization."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization: Timestamp runtime is required for notarization."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization: Apple ID name not specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization: Apple ID password not specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Warning: Notarization is disabled. The exported project will be blocked by "
-"Gatekeeper if it's downloaded from an unknown source."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Code signing is disabled. The exported project will not run on Macs with "
-"enabled Gatekeeper and Apple Silicon powered Macs."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Hardened Runtime is not compatible with ad-hoc signature, and will be "
-"disabled!"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Timestamping is not compatible with ad-hoc signature, and will be disabled!"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Warning: Notarization is not supported from this OS. The exported project "
-"will be blocked by Gatekeeper if it's downloaded from an unknown source."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Privacy: Microphone access is enabled, but usage description is not "
-"specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Privacy: Camera access is enabled, but usage description is not specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Privacy: Location information access is enabled, but usage description is "
-"not specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Privacy: Address book access is enabled, but usage description is not "
-"specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Privacy: Calendar access is enabled, but usage description is not specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Privacy: Photo library access is enabled, but usage description is not "
-"specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "macOS"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Force Builtin Codesign"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Architecture"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Display Name"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Short Name"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Publisher"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Publisher Display Name"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Product GUID"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Publisher GUID"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Signing"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Certificate"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Algorithm"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Major"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Minor"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Build"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Revision"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Landscape"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Portrait"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Landscape Flipped"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Portrait Flipped"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Store Logo"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Square 44 X 44 Logo"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Square 71 X 71 Logo"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Square 150 X 150 Logo"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Square 310 X 310 Logo"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Wide 310 X 150 Logo"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Splash Screen"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Tiles"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Show Name On Square 150 X 150"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Show Name On Wide 310 X 150"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Show Name On Square 310 X 310"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid package short name."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid package unique name."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid package publisher display name."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid product GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "UWP"
-msgstr ""
-
-#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
-msgid "Signtool"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Debug Certificate"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Identity Type"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Timestamp Server URL"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Digest Algorithm"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Modify Resources"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "File Version"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Product Version"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Company Name"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Product Name"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "File Description"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Trademarks"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid ""
-"The rcedit tool must be configured in the Editor Settings (Export > Windows "
-"> Rcedit) to change the icon or app information data."
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Invalid icon path:"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Invalid file version:"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Invalid product version:"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Windows"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Rcedit"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Osslsigncode"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Wine"
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
-#: scene/resources/texture.cpp
-msgid "Frames"
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp
-msgid ""
-"A SpriteFrames resource must be created or set in the \"Frames\" property in "
-"order for AnimatedSprite to display frames."
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Speed Scale"
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp scene/2d/audio_stream_player_2d.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/sprite_3d.cpp
-#: scene/audio/audio_stream_player.cpp
-msgid "Playing"
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-msgid "Centered"
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/texture_button.cpp scene/gui/texture_rect.cpp
-msgid "Flip H"
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/texture_button.cpp scene/gui/texture_rect.cpp
-msgid "Flip V"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Monitoring"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Monitorable"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Physics Overrides"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Space Override"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Gravity Point"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Gravity Distance Scale"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Gravity Vec"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/2d/cpu_particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Gravity"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Linear Damp"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Angular Damp"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Audio Bus"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Override"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
-#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
-msgid "Volume dB"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp
-#: servers/audio/effects/audio_effect_pitch_shift.cpp
-msgid "Pitch Scale"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Autoplay"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp
-msgid "Stream Paused"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
-msgid "Max Distance"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
-msgid "Attenuation"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Bus"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-msgid "Area Mask"
-msgstr ""
-
-#: scene/2d/back_buffer_copy.cpp
-msgid "Copy Mode"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Anchor Mode"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Rotating"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/2d/listener_2d.cpp scene/3d/camera.cpp
-#: scene/3d/listener.cpp scene/animation/animation_blend_tree.cpp
-msgid "Current"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/gui/graph_edit.cpp
-msgid "Zoom"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/main/canvas_layer.cpp
-msgid "Custom Viewport"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/3d/camera.cpp
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp scene/main/timer.cpp
-msgid "Process Mode"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Limit"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
-#: scene/resources/style_box.cpp scene/resources/texture.cpp
-msgid "Left"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
-#: scene/resources/style_box.cpp scene/resources/texture.cpp
-msgid "Right"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
-#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
-#: scene/resources/texture.cpp
-msgid "Bottom"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Smoothed"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Draw Margin"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Drag Margin H Enabled"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Drag Margin V Enabled"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Smoothing"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "H"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "V"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Drag Margin"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Draw Screen"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Draw Limits"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Draw Drag Margin"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp scene/resources/environment.cpp
-#: scene/resources/material.cpp
-msgid "Blend Mode"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Light Mode"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Particles Animation"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Particles Anim H Frames"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Particles Anim V Frames"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Particles Anim Loop"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp scene/3d/spatial.cpp
-msgid "Visibility"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp scene/3d/spatial.cpp scene/gui/progress_bar.cpp
-#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
-msgid "Visible"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Self Modulate"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Show Behind Parent"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Show On Top"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp scene/2d/light_occluder_2d.cpp
-#: scene/2d/tile_map.cpp
-msgid "Light Mask"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Use Parent Material"
-msgstr ""
-
-#: scene/2d/canvas_modulate.cpp
-msgid ""
-"Only one visible CanvasModulate is allowed per scene (or set of instanced "
-"scenes). The first created one will work, while the rest will be ignored."
-msgstr ""
-
-#: scene/2d/collision_object_2d.cpp
-msgid ""
-"This node has no shape, so it can't collide or interact with other objects.\n"
-"Consider adding a CollisionShape2D or CollisionPolygon2D as a child to "
-"define its shape."
-msgstr ""
-
-#: scene/2d/collision_object_2d.cpp
-msgid "Pickable"
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp
-msgid ""
-"CollisionPolygon2D only serves to provide a collision shape to a "
-"CollisionObject2D derived node. Please only use it as a child of Area2D, "
-"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape."
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp
-msgid "An empty CollisionPolygon2D has no effect on collision."
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp
-msgid "Invalid polygon. At least 3 points are needed in 'Solids' build mode."
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp
-msgid "Invalid polygon. At least 2 points are needed in 'Segments' build mode."
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp scene/2d/collision_shape_2d.cpp
-msgid ""
-"The One Way Collision property will be ignored when the parent is an Area2D."
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp
-msgid "Build Mode"
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp scene/2d/collision_shape_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/3d/collision_shape.cpp
-#: scene/animation/animation_node_state_machine.cpp scene/gui/base_button.cpp
-#: scene/gui/texture_button.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Disabled"
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp scene/2d/collision_shape_2d.cpp
-msgid "One Way Collision"
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp scene/2d/collision_shape_2d.cpp
-msgid "One Way Collision Margin"
-msgstr ""
-
-#: scene/2d/collision_shape_2d.cpp
-msgid ""
-"CollisionShape2D only serves to provide a collision shape to a "
-"CollisionObject2D derived node. Please only use it as a child of Area2D, "
-"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape."
-msgstr ""
-
-#: scene/2d/collision_shape_2d.cpp
-msgid ""
-"A shape must be provided for CollisionShape2D to function. Please create a "
-"shape resource for it!"
-msgstr ""
-
-#: scene/2d/collision_shape_2d.cpp
-msgid ""
-"Polygon-based shapes are not meant be used nor edited directly through the "
-"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp
-msgid ""
-"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
-"\"Particles Animation\" enabled."
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Emitting"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Lifetime"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp scene/main/timer.cpp
-msgid "One Shot"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Preprocess"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Explosiveness"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Randomness"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Lifetime Randomness"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Fixed FPS"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Fract Delta"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Drawing"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Local Coords"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Draw Order"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Emission Shape"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Sphere Radius"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp
-msgid "Rect Extents"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-msgid "Normals"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Align Y"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Direction"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Spread"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Initial Velocity"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Velocity Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
-#: servers/physics_server.cpp
-msgid "Angular Velocity"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Velocity Curve"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Orbit Velocity"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Linear Accel"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Accel"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Accel Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Accel Curve"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Radial Accel"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Tangential Accel"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/physics_body.cpp
-#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Damping"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Damping Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Damping Curve"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
-#: scene/resources/particles_material.cpp
-msgid "Angle"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Angle Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Angle Curve"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-msgid "Scale Amount"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-msgid "Scale Amount Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-msgid "Scale Amount Curve"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Color Ramp"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Color Initial Ramp"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Hue Variation"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Variation"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Variation Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Variation Curve"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Speed Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Speed Curve"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Offset Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Offset Curve"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Node A and Node B must be PhysicsBody2Ds"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Node A must be a PhysicsBody2D"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Node B must be a PhysicsBody2D"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Joint is not connected to two PhysicsBody2Ds"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Node A and Node B must be different PhysicsBody2Ds"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
-msgid "Node A"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
-msgid "Node B"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/3d/light.cpp scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-#: scene/resources/environment.cpp
-msgid "Bias"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Disable Collision"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-msgid "Softness"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp scene/resources/animation.cpp
-#: scene/resources/ray_shape.cpp scene/resources/segment_shape_2d.cpp
-msgid "Length"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Initial Offset"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
-msgid "Rest Length"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
-msgid "Stiffness"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid ""
-"A texture with the shape of the light must be supplied to the \"Texture\" "
-"property."
-msgstr ""
-
-#: scene/2d/light_2d.cpp scene/3d/light.cpp scene/gui/reference_rect.cpp
-msgid "Editor Only"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Texture Scale"
-msgstr ""
-
-#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/3d/light.cpp scene/resources/environment.cpp
-#: scene/resources/material.cpp scene/resources/sky.cpp
-msgid "Energy"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Z Min"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Z Max"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Layer Min"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Layer Max"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Item Cull Mask"
-msgstr ""
-
-#: scene/2d/light_2d.cpp scene/3d/light.cpp scene/resources/style_box.cpp
-msgid "Shadow"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Buffer Size"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Gradient Length"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Filter Smooth"
-msgstr ""
-
-#: scene/2d/light_occluder_2d.cpp
-msgid "Closed"
-msgstr ""
-
-#: scene/2d/light_occluder_2d.cpp scene/resources/material.cpp
-msgid "Cull Mode"
-msgstr ""
-
-#: scene/2d/light_occluder_2d.cpp
-msgid ""
-"An occluder polygon must be set (or drawn) for this occluder to take effect."
-msgstr ""
-
-#: scene/2d/light_occluder_2d.cpp
-msgid "The occluder polygon for this occluder is empty. Please draw a polygon."
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Width Curve"
-msgstr ""
-
-#: scene/2d/line_2d.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Default Color"
-msgstr ""
-
-#: scene/2d/line_2d.cpp scene/resources/texture.cpp
-msgid "Fill"
-msgstr ""
-
-#: scene/2d/line_2d.cpp scene/resources/texture.cpp
-msgid "Gradient"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Texture Mode"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Capping"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Joint Mode"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Begin Cap Mode"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "End Cap Mode"
-msgstr ""
-
-#: scene/2d/line_2d.cpp scene/2d/polygon_2d.cpp scene/resources/style_box.cpp
-msgid "Border"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Sharp Limit"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Round Precision"
-msgstr ""
-
-#: scene/2d/line_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Antialiased"
-msgstr ""
-
-#: scene/2d/multimesh_instance_2d.cpp scene/3d/multimesh_instance.cpp
-msgid "Multimesh"
-msgstr ""
-
-#: scene/2d/navigation_2d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/navigation.cpp scene/animation/root_motion_view.cpp
-#: scene/resources/world_2d.cpp servers/physics_2d/physics_2d_server_sw.cpp
-msgid "Cell Size"
-msgstr ""
-
-#: scene/2d/navigation_2d.cpp scene/3d/navigation.cpp
-msgid "Edge Connection Margin"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Target Desired Distance"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Neighbor Dist"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Max Neighbors"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Time Horizon"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Max Speed"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Path Max Distance"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Avoidance Enabled"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp
-msgid ""
-"The NavigationAgent2D can be used only under a Node2D inheriting parent node."
-msgstr ""
-
-#: scene/2d/navigation_obstacle_2d.cpp scene/3d/navigation_obstacle.cpp
-msgid "Estimate Radius"
-msgstr ""
-
-#: scene/2d/navigation_obstacle_2d.cpp
-msgid ""
-"The NavigationObstacle2D only serves to provide collision avoidance to a "
-"Node2D object."
-msgstr ""
-
-#: scene/2d/navigation_polygon.cpp
-msgid ""
-"A NavigationPolygon resource must be set or created for this node to work. "
-"Please set a property or draw a polygon."
-msgstr ""
-
-#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
-msgstr ""
-
-#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
-#: scene/main/canvas_layer.cpp
-msgid "Rotation Degrees"
-msgstr ""
-
-#: scene/2d/node_2d.cpp
-msgid "Global Rotation"
-msgstr ""
-
-#: scene/2d/node_2d.cpp
-msgid "Global Rotation Degrees"
-msgstr ""
-
-#: scene/2d/node_2d.cpp
-msgid "Global Scale"
-msgstr ""
-
-#: scene/2d/node_2d.cpp scene/3d/spatial.cpp
-msgid "Global Transform"
-msgstr ""
-
-#: scene/2d/node_2d.cpp
-msgid "Z As Relative"
-msgstr ""
-
-#: scene/2d/parallax_background.cpp scene/gui/scroll_container.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Scroll"
-msgstr ""
-
-#: scene/2d/parallax_background.cpp
-msgid "Base Offset"
-msgstr ""
-
-#: scene/2d/parallax_background.cpp
-msgid "Base Scale"
-msgstr ""
-
-#: scene/2d/parallax_background.cpp
-msgid "Limit Begin"
-msgstr ""
-
-#: scene/2d/parallax_background.cpp
-msgid "Limit End"
-msgstr ""
-
-#: scene/2d/parallax_background.cpp
-msgid "Ignore Camera Zoom"
-msgstr ""
-
-#: scene/2d/parallax_layer.cpp
-msgid ""
-"ParallaxLayer node only works when set as child of a ParallaxBackground node."
-msgstr ""
-
-#: scene/2d/parallax_layer.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp scene/3d/vehicle_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Motion"
-msgstr ""
-
-#: scene/2d/parallax_layer.cpp
-msgid "Mirroring"
-msgstr ""
-
-#: scene/2d/particles_2d.cpp
-msgid ""
-"GPU-based particles are not supported by the GLES2 video driver.\n"
-"Use the CPUParticles2D node instead. You can use the \"Convert to "
-"CPUParticles2D\" toolbar option for this purpose."
-msgstr ""
-
-#: scene/2d/particles_2d.cpp
-msgid ""
-"On macOS, Particles2D rendering is much slower than CPUParticles2D due to "
-"transform feedback being implemented on the CPU instead of the GPU.\n"
-"Consider using CPUParticles2D instead when targeting macOS.\n"
-"You can use the \"Convert to CPUParticles2D\" toolbar option for this "
-"purpose."
-msgstr ""
-
-#: scene/2d/particles_2d.cpp scene/3d/particles.cpp
-msgid ""
-"A material to process the particles is not assigned, so no behavior is "
-"imprinted."
-msgstr ""
-
-#: scene/2d/particles_2d.cpp
-msgid ""
-"Particles2D animation requires the usage of a CanvasItemMaterial with "
-"\"Particles Animation\" enabled."
-msgstr ""
-
-#: scene/2d/particles_2d.cpp
-msgid "Visibility Rect"
-msgstr ""
-
-#: scene/2d/particles_2d.cpp scene/3d/particles.cpp
-msgid "Process Material"
-msgstr ""
-
-#: scene/2d/path_2d.cpp scene/3d/path.cpp scene/resources/sky.cpp
-#: scene/resources/texture.cpp
-msgid "Curve"
-msgstr ""
-
-#: scene/2d/path_2d.cpp
-msgid "PathFollow2D only works when set as a child of a Path2D node."
-msgstr ""
-
-#: scene/2d/path_2d.cpp scene/3d/path.cpp
-msgid "Unit Offset"
-msgstr ""
-
-#: scene/2d/path_2d.cpp scene/3d/camera.cpp scene/3d/path.cpp
-msgid "H Offset"
-msgstr ""
-
-#: scene/2d/path_2d.cpp scene/3d/camera.cpp scene/3d/path.cpp
-msgid "V Offset"
-msgstr ""
-
-#: scene/2d/path_2d.cpp scene/3d/path.cpp
-msgid "Cubic Interp"
-msgstr ""
-
-#: scene/2d/path_2d.cpp
-msgid "Lookahead"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/visual_instance.cpp
-msgid "Layers"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Constant Linear Velocity"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Constant Angular Velocity"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp scene/3d/physics_body.cpp
-#: scene/resources/physics_material.cpp
-msgid "Friction"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp scene/3d/physics_body.cpp
-#: scene/resources/physics_material.cpp
-msgid "Bounce"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Physics Material Override"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Default Gravity"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
-msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
-"by the physics engine when running.\n"
-"Change the size in children collision shapes instead."
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Mass"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
-msgid "Inertia"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Weight"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Gravity Scale"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Custom Integrator"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Continuous CD"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Contacts Reported"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Contact Monitor"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Sleeping"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Can Sleep"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Damp"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Angular"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
-msgid "Applied Forces"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
-msgid "Torque"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Safe Margin"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Sync To Physics"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving Platform"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Apply Velocity On Leave"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
-#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/default_theme/default_theme.cpp
-#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
-msgid "Normal"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Remainder"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Local Shape"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collider"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collider ID"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collider RID"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collider Shape"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Collider Shape Index"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collider Velocity"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Collider Metadata"
-msgstr ""
-
-#: scene/2d/polygon_2d.cpp
-msgid "Invert"
-msgstr ""
-
-#: scene/2d/polygon_2d.cpp
-msgid "Vertex Colors"
-msgstr ""
-
-#: scene/2d/polygon_2d.cpp
-msgid "Internal Vertex Count"
-msgstr ""
-
-#: scene/2d/position_2d.cpp
-msgid "Gizmo Extents"
-msgstr ""
-
-#: scene/2d/ray_cast_2d.cpp scene/3d/ray_cast.cpp
-msgid "Exclude Parent"
-msgstr ""
-
-#: scene/2d/ray_cast_2d.cpp scene/3d/ray_cast.cpp
-msgid "Cast To"
-msgstr ""
-
-#: scene/2d/ray_cast_2d.cpp scene/3d/ray_cast.cpp
-msgid "Collide With"
-msgstr ""
-
-#: scene/2d/ray_cast_2d.cpp scene/3d/camera.cpp scene/3d/ray_cast.cpp
-msgid "Areas"
-msgstr ""
-
-#: scene/2d/ray_cast_2d.cpp scene/3d/camera.cpp scene/3d/ray_cast.cpp
-msgid "Bodies"
-msgstr ""
-
-#: scene/2d/remote_transform_2d.cpp
-msgid "Path property must point to a valid Node2D node to work."
-msgstr ""
-
-#: scene/2d/remote_transform_2d.cpp scene/3d/remote_transform.cpp
-msgid "Remote Path"
-msgstr ""
-
-#: scene/2d/remote_transform_2d.cpp scene/3d/remote_transform.cpp
-msgid "Use Global Coordinates"
-msgstr ""
-
-#: scene/2d/skeleton_2d.cpp scene/3d/skeleton.cpp
-msgid "Rest"
-msgstr ""
-
-#: scene/2d/skeleton_2d.cpp
-msgid "Default Length"
-msgstr ""
-
-#: scene/2d/skeleton_2d.cpp
-msgid "This Bone2D chain should end at a Skeleton2D node."
-msgstr ""
-
-#: scene/2d/skeleton_2d.cpp
-msgid "A Bone2D only works with a Skeleton2D or another Bone2D as parent node."
-msgstr ""
-
-#: scene/2d/skeleton_2d.cpp
-msgid ""
-"This bone lacks a proper REST pose. Go to the Skeleton2D node and set one."
-msgstr ""
-
-#: scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-msgid "Hframes"
-msgstr ""
-
-#: scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-msgid "Vframes"
-msgstr ""
-
-#: scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-msgid "Frame Coords"
-msgstr ""
-
-#: scene/2d/sprite.cpp scene/resources/texture.cpp
-msgid "Filter Clip"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid ""
-"TileMap with Use Parent on needs a parent CollisionObject2D to give shapes "
-"to. Please use it as a child of Area2D, StaticBody2D, RigidBody2D, "
-"KinematicBody2D, etc. to give them a shape."
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Tile Set"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Quadrant Size"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Custom Transform"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Half Offset"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Tile Origin"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Y Sort"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Show Collision"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Compatibility Mode"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Centered Textures"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Cell Clip UV"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Use Parent"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Use Kinematic"
-msgstr ""
-
-#: scene/2d/touch_screen_button.cpp
-msgid "Shape Centered"
-msgstr ""
-
-#: scene/2d/touch_screen_button.cpp
-msgid "Shape Visible"
-msgstr ""
-
-#: scene/2d/touch_screen_button.cpp
-msgid "Passby Press"
-msgstr ""
-
-#: scene/2d/touch_screen_button.cpp
-msgid "Visibility Mode"
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp
-msgid ""
-"VisibilityEnabler2D works best when used with the edited scene root directly "
-"as parent."
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
-msgid "Pause Animations"
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
-msgid "Freeze Bodies"
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp
-msgid "Pause Particles"
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp
-msgid "Pause Animated Sprites"
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp
-msgid "Process Parent"
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp
-msgid "Physics Process Parent"
-msgstr ""
-
-#: scene/3d/area.cpp
-msgid "Reverb Bus"
-msgstr ""
-
-#: scene/3d/area.cpp
-msgid "Uniformity"
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid "ARVRCamera must have an ARVROrigin node as its parent."
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid "Controller ID"
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp servers/arvr/arvr_positional_tracker.cpp
-msgid "Rumble"
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid "ARVRController must have an ARVROrigin node as its parent."
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid ""
-"The controller ID must not be 0 or this controller won't be bound to an "
-"actual controller."
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid "Anchor ID"
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid "ARVRAnchor must have an ARVROrigin node as its parent."
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid ""
-"The anchor ID must not be 0 or this anchor won't be bound to an actual "
-"anchor."
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid "ARVROrigin requires an ARVRCamera child node."
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp servers/arvr_server.cpp
-msgid "World Scale"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Attenuation Model"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Unit dB"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Unit Size"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Max dB"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Out Of Range Mode"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Emission Angle"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Degrees"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Filter Attenuation dB"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Attenuation Filter"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_filter.cpp
-msgid "Cutoff Hz"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-#: servers/audio/effects/audio_effect_filter.cpp
-msgid "dB"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Doppler"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Tracking"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/3d/reflection_probe.cpp
-msgid "Interior"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Finding meshes and lights"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Preparing geometry (%d/%d)"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Preparing environment"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Generating capture"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Saving lightmaps"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Done"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/3d/reflection_probe.cpp scene/resources/box_shape.cpp
-#: scene/resources/rectangle_shape_2d.cpp
-msgid "Extents"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Tweaks"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Bounces"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Bounce Indirect Energy"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Use Denoiser"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp scene/resources/texture.cpp
-msgid "Use HDR"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Use Color"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Default Texels Per Unit"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp scene/resources/texture.cpp
-msgid "Atlas"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Generate"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Max Size"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Custom Sky"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Custom Sky Rotation Degrees"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp scene/3d/ray_cast.cpp
-msgid "Custom Color"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Custom Energy"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Min Light"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-msgid "Propagation"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Image Path"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Light Data"
-msgstr ""
-
-#: scene/3d/bone_attachment.cpp scene/3d/physics_body.cpp
-msgid "Bone Name"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Keep Aspect"
-msgstr ""
-
-#: scene/3d/camera.cpp scene/3d/light.cpp scene/3d/reflection_probe.cpp
-msgid "Cull Mask"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Doppler Tracking"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Projection"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "FOV"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Frustum Offset"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Near"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Far"
-msgstr ""
-
-#: scene/3d/camera.cpp scene/3d/collision_polygon.cpp scene/3d/spring_arm.cpp
-#: scene/gui/control.cpp scene/resources/default_theme/default_theme.cpp
-#: scene/resources/shape.cpp scene/resources/style_box.cpp
-#: scene/resources/texture.cpp servers/physics_2d_server.cpp
-#: servers/physics_server.cpp
-msgid "Margin"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Clip To"
-msgstr ""
-
-#: scene/3d/collision_object.cpp scene/3d/soft_body.cpp
-msgid "Ray Pickable"
-msgstr ""
-
-#: scene/3d/collision_object.cpp
-msgid "Capture On Drag"
-msgstr ""
-
-#: scene/3d/collision_object.cpp
-msgid ""
-"This node has no shape, so it can't collide or interact with other objects.\n"
-"Consider adding a CollisionShape or CollisionPolygon as a child to define "
-"its shape."
-msgstr ""
-
-#: scene/3d/collision_polygon.cpp
-msgid ""
-"CollisionPolygon only serves to provide a collision shape to a "
-"CollisionObject derived node. Please only use it as a child of Area, "
-"StaticBody, RigidBody, KinematicBody, etc. to give them a shape."
-msgstr ""
-
-#: scene/3d/collision_polygon.cpp
-msgid "An empty CollisionPolygon has no effect on collision."
-msgstr ""
-
-#: scene/3d/collision_shape.cpp
-msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
-msgstr ""
-
-#: scene/3d/collision_shape.cpp
-msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it."
-msgstr ""
-
-#: scene/3d/collision_shape.cpp
-msgid ""
-"Plane shapes don't work well and will be removed in future versions. Please "
-"don't use them."
-msgstr ""
-
-#: scene/3d/collision_shape.cpp
-msgid ""
-"ConcavePolygonShape doesn't support RigidBody in another mode than static."
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has been assigned."
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp
-msgid ""
-"CPUParticles animation requires the usage of a SpatialMaterial whose "
-"Billboard Mode is set to \"Particle Billboard\"."
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Box Extents"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Ring Radius"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Ring Inner Radius"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Ring Height"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Ring Axis"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Rotate Y"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Disable Z"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Flatness"
-msgstr ""
-
-#: scene/3d/cull_instance.cpp servers/visual_server.cpp
-msgid "Portals"
-msgstr ""
-
-#: scene/3d/cull_instance.cpp
-msgid "Portal Mode"
-msgstr ""
-
-#: scene/3d/cull_instance.cpp
-msgid "Include In Bound"
-msgstr ""
-
-#: scene/3d/cull_instance.cpp
-msgid "Allow Merging"
-msgstr ""
-
-#: scene/3d/cull_instance.cpp
-msgid "Autoplace Priority"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
-msgid "Plotting Meshes"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
-msgid "Finishing Plot"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
-msgid ""
-"GIProbes are not supported by the GLES2 video driver.\n"
-"Use a BakedLightmap instead."
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
-msgid ""
-"The GIProbe Compress property has been deprecated due to known bugs and no "
-"longer has any effect.\n"
-"To remove this warning, disable the GIProbe's Compress property."
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
-msgid "Subdiv"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
-msgid "Dynamic Range"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp scene/3d/light.cpp
-msgid "Normal Bias"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
-#: scene/resources/primitive_meshes.cpp
-msgid "Pixel Size"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
-msgid "Billboard"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
-msgid "Shaded"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
-msgid "Double Sided"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp scene/resources/material.cpp
-msgid "No Depth Test"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp scene/resources/material.cpp
-msgid "Fixed Size"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
-msgid "Alpha Cut"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/resources/material.cpp
-msgid "Alpha Scissor Threshold"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp scene/resources/material.cpp
-msgid "Render Priority"
-msgstr ""
-
-#: scene/3d/label_3d.cpp
-msgid "Outline Render Priority"
-msgstr ""
-
-#: scene/3d/label_3d.cpp
-msgid "Outline Modulate"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/resources/default_theme/default_theme.cpp
-#: scene/resources/dynamic_font.cpp scene/resources/primitive_meshes.cpp
-msgid "Font"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/resources/primitive_meshes.cpp
-msgid "Horizontal Alignment"
-msgstr ""
-
-#: scene/3d/label_3d.cpp
-msgid "Vertical Alignment"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/gui/dialogs.cpp scene/gui/label.cpp
-msgid "Autowrap"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Indirect Energy"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Negative"
-msgstr ""
-
-#: scene/3d/light.cpp scene/resources/material.cpp
-#: scene/resources/visual_shader.cpp
-msgid "Specular"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Bake Mode"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Contact"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Reverse Cull Face"
-msgstr ""
-
-#: scene/3d/light.cpp servers/visual_server.cpp
-msgid "Directional Shadow"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Split 1"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Split 2"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Split 3"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Blend Splits"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Bias Split Scale"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Depth Range"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Omni"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Shadow Mode"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Shadow Detail"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Spot"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Angle Attenuation"
-msgstr ""
-
-#: scene/3d/mesh_instance.cpp
-msgid "Software Skinning"
-msgstr ""
-
-#: scene/3d/mesh_instance.cpp
-msgid "Transform Normals"
-msgstr ""
-
-#: scene/3d/navigation.cpp scene/resources/curve.cpp
-msgid "Up Vector"
-msgstr ""
-
-#: scene/3d/navigation.cpp
-msgid "Cell Height"
-msgstr ""
-
-#: scene/3d/navigation_agent.cpp
-msgid "Agent Height Offset"
-msgstr ""
-
-#: scene/3d/navigation_agent.cpp
-msgid "Ignore Y"
-msgstr ""
-
-#: scene/3d/navigation_agent.cpp
-msgid ""
-"The NavigationAgent can be used only under a Spatial inheriting parent node."
-msgstr ""
-
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
-#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
-msgid "NavMesh"
-msgstr ""
-
-#: scene/3d/navigation_obstacle.cpp
-msgid ""
-"The NavigationObstacle only serves to provide collision avoidance to a "
-"Spatial inheriting parent object."
-msgstr ""
-
-#: scene/3d/occluder.cpp
-msgid "No shape is set."
-msgstr ""
-
-#: scene/3d/occluder.cpp
-msgid "Only uniform scales are supported."
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid ""
-"GPU-based particles are not supported by the GLES2 video driver.\n"
-"Use the CPUParticles node instead. You can use the \"Convert to "
-"CPUParticles\" toolbar option for this purpose."
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid ""
-"On macOS, Particles rendering is much slower than CPUParticles due to "
-"transform feedback being implemented on the CPU instead of the GPU.\n"
-"Consider using CPUParticles instead when targeting macOS.\n"
-"You can use the \"Convert to CPUParticles\" toolbar option for this purpose."
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid ""
-"Nothing is visible because meshes have not been assigned to draw passes."
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid ""
-"Particles animation requires the usage of a SpatialMaterial whose Billboard "
-"Mode is set to \"Particle Billboard\"."
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid "Visibility AABB"
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid "Draw Passes"
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid "Passes"
-msgstr ""
-
-#: scene/3d/path.cpp
-msgid "PathFollow only works when set as a child of a Path node."
-msgstr ""
-
-#: scene/3d/path.cpp
-msgid ""
-"PathFollow's ROTATION_ORIENTED requires \"Up Vector\" to be enabled in its "
-"parent Path's Curve resource."
-msgstr ""
-
-#: scene/3d/path.cpp
-msgid "Rotation Mode"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overridden "
-"by the physics engine when running.\n"
-"Change the size in children collision shapes instead."
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Axis Lock"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear X"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Y"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Z"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular X"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Y"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Z"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Motion X"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Motion Y"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Motion Z"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Joint Constraints"
-msgstr ""
-
-#: scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-msgid "Impulse Clamp"
-msgstr ""
-
-#: scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-msgid "Swing Span"
-msgstr ""
-
-#: scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-msgid "Twist Span"
-msgstr ""
-
-#: scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-#: scene/3d/vehicle_body.cpp
-msgid "Relaxation"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Enabled"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Upper"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Lower"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Bias"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Softness"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Relaxation"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Limit Upper"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Limit Lower"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Limit Softness"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Limit Restitution"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Limit Damping"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Restitution"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Damping"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "X"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Y"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Z"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Limit Enabled"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Spring Enabled"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Spring Stiffness"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Spring Damping"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Equilibrium Point"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Restitution"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Damping"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Restitution"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Damping"
-msgstr ""
-
-#: scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-msgid "ERP"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Spring Enabled"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Spring Stiffness"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Spring Damping"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Equilibrium Point"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Body Offset"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Node A and Node B must be PhysicsBodies"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Node A must be a PhysicsBody"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Node B must be a PhysicsBody"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Joint is not connected to any PhysicsBodies"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Node A and Node B must be different PhysicsBodies"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Solver"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Exclude Nodes"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Params"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Limit"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Upper"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Lower"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Motor"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Target Velocity"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Max Impulse"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Limit"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Upper Distance"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Lower Distance"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Restitution"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Motion"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Ortho"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Upper Angle"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Lower Angle"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Motion"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Ortho"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Limit X"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Motor X"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Force Limit"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Spring X"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Equilibrium Point"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Limit X"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Motor X"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Spring X"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Limit Y"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Motor Y"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Spring Y"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Limit Y"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Motor Y"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Spring Y"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Limit Z"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Motor Z"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Spring Z"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Limit Z"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Motor Z"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Spring Z"
-msgstr ""
-
-#: scene/3d/portal.cpp
-msgid "The RoomManager should not be a child or grandchild of a Portal."
-msgstr ""
-
-#: scene/3d/portal.cpp
-msgid "A Room should not be a child or grandchild of a Portal."
-msgstr ""
-
-#: scene/3d/portal.cpp
-msgid "A RoomGroup should not be a child or grandchild of a Portal."
-msgstr ""
-
-#: scene/3d/portal.cpp
-msgid "Portal Active"
-msgstr ""
-
-#: scene/3d/portal.cpp scene/resources/occluder_shape_polygon.cpp
-msgid "Two Way"
-msgstr ""
-
-#: scene/3d/portal.cpp
-msgid "Linked Room"
-msgstr ""
-
-#: scene/3d/portal.cpp
-msgid "Use Default Margin"
-msgstr ""
-
-#: scene/3d/proximity_group.cpp
-msgid "Group Name"
-msgstr ""
-
-#: scene/3d/proximity_group.cpp
-msgid "Dispatch Mode"
-msgstr ""
-
-#: scene/3d/proximity_group.cpp
-msgid "Grid Radius"
-msgstr ""
-
-#: scene/3d/ray_cast.cpp
-msgid "Debug Shape"
-msgstr ""
-
-#: scene/3d/ray_cast.cpp scene/resources/style_box.cpp
-msgid "Thickness"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp scene/main/viewport.cpp
-msgid "Update Mode"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp
-msgid "Origin Offset"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp
-msgid "Box Projection"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp
-msgid "Enable Shadows"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp
-msgid "Ambient Color"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp
-msgid "Ambient Energy"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp
-msgid "Ambient Contrib"
-msgstr ""
-
-#: scene/3d/remote_transform.cpp
-msgid ""
-"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
-"derived node to work."
-msgstr ""
-
-#: scene/3d/room.cpp
-msgid "A Room cannot have another Room as a child or grandchild."
-msgstr ""
-
-#: scene/3d/room.cpp
-msgid "The RoomManager should not be placed inside a Room."
-msgstr ""
-
-#: scene/3d/room.cpp
-msgid "A RoomGroup should not be placed inside a Room."
-msgstr ""
-
-#: scene/3d/room.cpp
-msgid ""
-"Room convex hull contains a large number of planes.\n"
-"Consider simplifying the room bound in order to increase performance."
-msgstr ""
-
-#: scene/3d/room.cpp
-msgid "Use Default Simplify"
-msgstr ""
-
-#: scene/3d/room.cpp scene/3d/room_manager.cpp
-msgid "Room Simplify"
-msgstr ""
-
-#: scene/3d/room.cpp
-msgid "Bound"
-msgstr ""
-
-#: scene/3d/room_group.cpp
-msgid "Roomgroup Priority"
-msgstr ""
-
-#: scene/3d/room_group.cpp
-msgid "The RoomManager should not be placed inside a RoomGroup."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "The RoomList has not been assigned."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "The RoomList node should be a Spatial (or derived from Spatial)."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid ""
-"Portal Depth Limit is set to Zero.\n"
-"Only the Room that the Camera is in will render."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "There should only be one RoomManager in the SceneTree."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Main"
-msgstr ""
-
-#: scene/3d/room_manager.cpp scene/animation/animation_blend_tree.cpp
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Active"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Roomlist"
-msgstr ""
-
-#: scene/3d/room_manager.cpp servers/visual_server.cpp
-msgid "PVS"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "PVS Mode"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "PVS Filename"
-msgstr ""
-
-#: scene/3d/room_manager.cpp servers/visual_server.cpp
-msgid "Gameplay"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Gameplay Monitor"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Use Secondary PVS"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Merge Meshes"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Show Margins"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Debug Sprawl"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Overlap Warning Threshold"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Preview Camera"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Portal Depth Limit"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Default Portal Margin"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Roaming Expansion Margin"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid ""
-"RoomList path is invalid.\n"
-"Please check the RoomList branch has been assigned in the RoomManager."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "RoomList contains no Rooms, aborting."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Misnamed nodes detected, check output log for details. Aborting."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Portal link room not found, check output log for details."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid ""
-"Portal autolink failed, check output log for details.\n"
-"Check the portal is facing outwards from the source room."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid ""
-"Room overlap detected, cameras may work incorrectly in overlapping area.\n"
-"Check output log for details."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid ""
-"Error calculating room bounds.\n"
-"Ensure all rooms contain geometry or manual bounds."
-msgstr ""
-
-#: scene/3d/skeleton.cpp scene/resources/skin.cpp
-msgid "Pose"
-msgstr ""
-
-#: scene/3d/skeleton.cpp
-msgid "Bound Children"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Pinned Points"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Attachments"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Point Index"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Spatial Attachment Path"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Physics Enabled"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Parent Collision Ignore"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Simulation Precision"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Total Mass"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Linear Stiffness"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Areaangular Stiffness"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Volume Stiffness"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Pressure Coefficient"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Damping Coefficient"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Drag Coefficient"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Pose Matching Coefficient"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "This body will be ignored until you set a mesh."
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid ""
-"Size changes to SoftBody will be overridden by the physics engine when "
-"running.\n"
-"Change the size in children collision shapes instead."
-msgstr ""
-
-#: scene/3d/spatial.cpp
-msgid "Matrix"
-msgstr ""
-
-#: scene/3d/spatial.cpp
-msgid "Gizmo"
-msgstr ""
-
-#: scene/3d/spatial_velocity_tracker.cpp
-msgid "Track Physics Step"
-msgstr ""
-
-#: scene/3d/spring_arm.cpp
-msgid "Spring Length"
-msgstr ""
-
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-msgid "Opacity"
-msgstr ""
-
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-msgid "Transparent"
-msgstr ""
-
-#: scene/3d/sprite_3d.cpp
-msgid ""
-"A SpriteFrames resource must be created or set in the \"Frames\" property in "
-"order for AnimatedSprite3D to display frames."
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid ""
-"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
-"it as a child of a VehicleBody."
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Per-Wheel Motion"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Engine Force"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Brake"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Steering"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "VehicleBody Motion"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Use As Traction"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Use As Steering"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Wheel"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Roll Influence"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Friction Slip"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Suspension"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Max Force"
-msgstr ""
-
-#: scene/3d/visibility_notifier.cpp
-msgid "AABB"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp scene/resources/navigation_mesh.cpp
-msgid "Geometry"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Material Override"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Material Overlay"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Cast Shadow"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Extra Cull Margin"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Baked Light"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Generate Lightmap"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Lightmap Scale"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "LOD"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp scene/animation/skeleton_ik.cpp
-#: scene/resources/material.cpp
-msgid "Min Distance"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Min Hysteresis"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Max Hysteresis"
-msgstr ""
-
-#: scene/3d/world_environment.cpp
-msgid ""
-"WorldEnvironment requires its \"Environment\" property to contain an "
-"Environment to have a visible effect."
-msgstr ""
-
-#: scene/3d/world_environment.cpp
-msgid ""
-"Only one WorldEnvironment is allowed per scene (or set of instanced scenes)."
-msgstr ""
-
-#: scene/3d/world_environment.cpp
-msgid ""
-"This WorldEnvironment is ignored. Either add a Camera (for 3D scenes) or set "
-"this environment's Background Mode to Canvas (for 2D scenes)."
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "On BlendTree node '%s', animation not found: '%s'"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Animation not found: '%s'"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Mix Mode"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Fadein Time"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Fadeout Time"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Auto Restart"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Autorestart"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Delay"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Random Delay"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Add Amount"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Blend Amount"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Seek Position"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Input Count"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-#: scene/animation/animation_node_state_machine.cpp
-msgid "Xfade Time"
-msgstr ""
-
-#: scene/animation/animation_node_state_machine.cpp
-msgid "Switch Mode"
-msgstr ""
-
-#: scene/animation/animation_node_state_machine.cpp
-msgid "Auto Advance"
-msgstr ""
-
-#: scene/animation/animation_node_state_machine.cpp
-msgid "Advance Condition"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Anim Apply Reset"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Current Animation"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Assigned Animation"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Reset On Save"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Current Animation Length"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Current Animation Position"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Playback Options"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Default Blend Time"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Method Call Mode"
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "In node '%s', invalid animation: '%s'."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Invalid animation: '%s'."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Nothing connected to input '%s' of node '%s'."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "No root AnimationNode for the graph is set."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Path to an AnimationPlayer node containing animations is not set."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Path set for AnimationPlayer does not lead to an AnimationPlayer node."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "The AnimationPlayer root node is not a valid node."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Tree Root"
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Anim Player"
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Root Motion"
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Track"
-msgstr ""
-
-#: scene/animation/animation_tree_player.cpp
-msgid "This node has been deprecated. Use AnimationTree instead."
-msgstr ""
-
-#: scene/animation/animation_tree_player.cpp
-msgid "Playback"
-msgstr ""
-
-#: scene/animation/animation_tree_player.cpp
-msgid "Master Player"
-msgstr ""
-
-#: scene/animation/animation_tree_player.cpp
-msgid "Base Path"
-msgstr ""
-
-#: scene/animation/root_motion_view.cpp
-msgid "Animation Path"
-msgstr ""
-
-#: scene/animation/root_motion_view.cpp
-msgid "Zero Y"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Root Bone"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Tip Bone"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Interpolation"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Override Tip Basis"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Use Magnet"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Magnet"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Target Node"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Max Iterations"
-msgstr ""
-
-#: scene/animation/tween.cpp
-msgid "Playback Process Mode"
-msgstr ""
-
-#: scene/animation/tween.cpp
-msgid "Playback Speed"
-msgstr ""
-
-#: scene/audio/audio_stream_player.cpp
-msgid "Mix Target"
-msgstr ""
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/range.cpp
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Ratio"
-msgstr ""
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/texture_button.cpp
-#: scene/gui/texture_rect.cpp
-msgid "Stretch Mode"
-msgstr ""
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/box_container.cpp
-msgid "Alignment"
-msgstr ""
-
-#: scene/gui/base_button.cpp
-msgid "Shortcut In Tooltip"
-msgstr ""
-
-#: scene/gui/base_button.cpp
-msgid "Action Mode"
-msgstr ""
-
-#: scene/gui/base_button.cpp
-msgid "Enabled Focus Mode"
-msgstr ""
-
-#: scene/gui/base_button.cpp
-msgid "Keep Pressed Outside"
-msgstr ""
-
-#: scene/gui/base_button.cpp scene/gui/shortcut.cpp
-msgid "Shortcut"
-msgstr ""
-
-#: scene/gui/base_button.cpp
-msgid "Group"
-msgstr ""
-
-#: scene/gui/button.cpp scene/gui/label.cpp
-msgid "Clip Text"
-msgstr ""
-
-#: scene/gui/button.cpp scene/gui/label.cpp scene/gui/line_edit.cpp
-#: scene/gui/spin_box.cpp
-msgid "Align"
-msgstr ""
-
-#: scene/gui/button.cpp
-msgid "Icon Align"
-msgstr ""
-
-#: scene/gui/button.cpp
-msgid "Expand Icon"
-msgstr ""
-
-#: scene/gui/center_container.cpp
-msgid "Use Top Left"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid ""
-"Color: #%s\n"
-"LMB: Apply color\n"
-"RMB: Remove preset"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Edit Alpha"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "HSV Mode"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Raw Mode"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Deferred Mode"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Presets Enabled"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Presets Visible"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Pick a color from the editor window."
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "HSV"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Switch between hexadecimal and code values."
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Add current color as a preset."
-msgstr ""
-
-#: scene/gui/container.cpp
-msgid ""
-"Container by itself serves no purpose unless a script configures its "
-"children placement behavior.\n"
-"If you don't intend to add a script, use a plain Control node instead."
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Theme Overrides"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid ""
-"The Hint Tooltip won't be displayed as the control's Mouse Filter is set to "
-"\"Ignore\". To solve this, set the Mouse Filter to \"Stop\" or \"Pass\"."
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Anchor"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Grow Direction"
-msgstr ""
-
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
-msgid "Min Size"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Pivot Offset"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Clip Content"
-msgstr ""
-
-#: scene/gui/control.cpp scene/resources/visual_shader_nodes.cpp
-msgid "Hint"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Tooltip"
-msgstr ""
-
-#: scene/gui/control.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Focus"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Neighbour Left"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Neighbour Top"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Neighbour Right"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Neighbour Bottom"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Next"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Previous"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Mouse"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Default Cursor Shape"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Pass On Modal Close Click"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Size Flags"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Stretch Ratio"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Theme Type Variation"
-msgstr ""
-
-#: scene/gui/dialogs.cpp
-msgid "Window Title"
-msgstr ""
-
-#: scene/gui/dialogs.cpp
-msgid "Dialog"
-msgstr ""
-
-#: scene/gui/dialogs.cpp
-msgid "Hide On OK"
-msgstr ""
-
-#: scene/gui/dialogs.cpp
-msgid "Alert!"
-msgstr ""
-
-#: scene/gui/dialogs.cpp
-msgid "Please Confirm..."
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Mode Overrides Title"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Must use a valid extension."
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Right Disconnects"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Scroll Offset"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Snap Distance"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Zoom Min"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Zoom Max"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Zoom Step"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Show Zoom Label"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp scene/gui/text_edit.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Minimap"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Enable grid minimap."
-msgstr ""
-
-#: scene/gui/graph_node.cpp
-msgid "Show Close"
-msgstr ""
-
-#: scene/gui/graph_node.cpp scene/gui/option_button.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Selected"
-msgstr ""
-
-#: scene/gui/graph_node.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Comment"
-msgstr ""
-
-#: scene/gui/graph_node.cpp
-msgid "Overlay"
-msgstr ""
-
-#: scene/gui/grid_container.cpp scene/gui/item_list.cpp scene/gui/tree.cpp
-msgid "Columns"
-msgstr ""
-
-#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/text_edit.cpp
-#: scene/gui/tree.cpp scene/main/viewport.cpp
-msgid "Timers"
-msgstr ""
-
-#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval Msec"
-msgstr ""
-
-#: scene/gui/item_list.cpp scene/gui/tree.cpp
-msgid "Allow Reselect"
-msgstr ""
-
-#: scene/gui/item_list.cpp scene/gui/tree.cpp
-msgid "Allow RMB Select"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Max Text Lines"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Auto Height"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Max Columns"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Same Column Width"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Fixed Column Width"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Icon Scale"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Fixed Icon Size"
-msgstr ""
-
-#: scene/gui/label.cpp
-msgid "V Align"
-msgstr ""
-
-#: scene/gui/label.cpp scene/gui/rich_text_label.cpp
-msgid "Visible Characters"
-msgstr ""
-
-#: scene/gui/label.cpp scene/gui/rich_text_label.cpp
-msgid "Percent Visible"
-msgstr ""
-
-#: scene/gui/label.cpp
-msgid "Lines Skipped"
-msgstr ""
-
-#: scene/gui/label.cpp
-msgid "Max Lines Visible"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/resources/navigation_mesh.cpp
-msgid "Max Length"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Secret"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Secret Character"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Expand To Text Length"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Context Menu Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Virtual Keyboard Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Clear Button Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Shortcut Keys Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Middle Mouse Paste Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Selecting Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/rich_text_label.cpp
-#: scene/gui/text_edit.cpp
-msgid "Deselect On Focus Loss Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Right Icon"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Placeholder"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Alpha"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Caret"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Blink"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Blink Speed"
-msgstr ""
-
-#: scene/gui/link_button.cpp
-msgid "Underline"
-msgstr ""
-
-#: scene/gui/menu_button.cpp
-msgid "Switch On Hover"
-msgstr ""
-
-#: scene/gui/nine_patch_rect.cpp scene/resources/style_box.cpp
-msgid "Draw Center"
-msgstr ""
-
-#: scene/gui/nine_patch_rect.cpp scene/resources/style_box.cpp
-msgid "Region Rect"
-msgstr ""
-
-#: scene/gui/nine_patch_rect.cpp
-msgid "Patch Margin"
-msgstr ""
-
-#: scene/gui/nine_patch_rect.cpp scene/resources/style_box.cpp
-msgid "Axis Stretch"
-msgstr ""
-
-#: scene/gui/nine_patch_rect.cpp
-msgid ""
-"The Tile and Tile Fit options for Axis Stretch properties are only effective "
-"when using the GLES3 rendering backend.\n"
-"The GLES2 backend is currently in use, so these modes will act like Stretch "
-"instead."
-msgstr ""
-
-#: scene/gui/popup.cpp
-msgid "Popup"
-msgstr ""
-
-#: scene/gui/popup.cpp
-msgid "Exclusive"
-msgstr ""
-
-#: scene/gui/popup.cpp
-msgid ""
-"Popups will hide by default unless you call popup() or any of the popup*() "
-"functions. Making them visible for editing is fine, but they will hide upon "
-"running."
-msgstr ""
-
-#: scene/gui/popup_menu.cpp
-msgid "Hide On Item Selection"
-msgstr ""
-
-#: scene/gui/popup_menu.cpp
-msgid "Hide On Checkable Item Selection"
-msgstr ""
-
-#: scene/gui/popup_menu.cpp
-msgid "Hide On State Item Selection"
-msgstr ""
-
-#: scene/gui/popup_menu.cpp
-msgid "Submenu Popup Delay"
-msgstr ""
-
-#: scene/gui/popup_menu.cpp
-msgid "Allow Search"
-msgstr ""
-
-#: scene/gui/progress_bar.cpp
-msgid "Percent"
-msgstr ""
-
-#: scene/gui/range.cpp
-msgid "If \"Exp Edit\" is enabled, \"Min Value\" must be greater than 0."
-msgstr ""
-
-#: scene/gui/range.cpp scene/resources/curve.cpp
-msgid "Min Value"
-msgstr ""
-
-#: scene/gui/range.cpp scene/resources/curve.cpp
-msgid "Max Value"
-msgstr ""
-
-#: scene/gui/range.cpp
-msgid "Page"
-msgstr ""
-
-#: scene/gui/range.cpp
-msgid "Exp Edit"
-msgstr ""
-
-#: scene/gui/range.cpp
-msgid "Rounded"
-msgstr ""
-
-#: scene/gui/range.cpp
-msgid "Allow Greater"
-msgstr ""
-
-#: scene/gui/range.cpp
-msgid "Allow Lesser"
-msgstr ""
-
-#: scene/gui/reference_rect.cpp
-msgid "Border Color"
-msgstr ""
-
-#: scene/gui/reference_rect.cpp scene/resources/style_box.cpp
-msgid "Border Width"
-msgstr ""
-
-#: scene/gui/rich_text_effect.cpp
-msgid "Relative Index"
-msgstr ""
-
-#: scene/gui/rich_text_effect.cpp
-msgid "Absolute Index"
-msgstr ""
-
-#: scene/gui/rich_text_effect.cpp
-msgid "Elapsed Time"
-msgstr ""
-
-#: scene/gui/rich_text_effect.cpp
-msgid "Env"
-msgstr ""
-
-#: scene/gui/rich_text_effect.cpp
-msgid "Character"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "BBCode"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Meta Underlined"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Tab Size"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Fit Content Height"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Scroll Active"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Scroll Following"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Selection Enabled"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp scene/gui/text_edit.cpp
-msgid "Override Selected Font Color"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Custom Effects"
-msgstr ""
-
-#: scene/gui/scroll_bar.cpp
-msgid "Custom Step"
-msgstr ""
-
-#: scene/gui/scroll_container.cpp
-msgid ""
-"ScrollContainer is intended to work with a single child control.\n"
-"Use a container as child (VBox, HBox, etc.), or a Control and set the custom "
-"minimum size manually."
-msgstr ""
-
-#: scene/gui/scroll_container.cpp
-msgid "Follow Focus"
-msgstr ""
-
-#: scene/gui/scroll_container.cpp
-msgid "Horizontal Enabled"
-msgstr ""
-
-#: scene/gui/scroll_container.cpp
-msgid "Vertical Enabled"
-msgstr ""
-
-#: scene/gui/scroll_container.cpp
-msgid "Default Scroll Deadzone"
-msgstr ""
-
-#: scene/gui/slider.cpp
-msgid "Scrollable"
-msgstr ""
-
-#: scene/gui/slider.cpp
-msgid "Tick Count"
-msgstr ""
-
-#: scene/gui/slider.cpp
-msgid "Ticks On Borders"
-msgstr ""
-
-#: scene/gui/spin_box.cpp
-msgid "Prefix"
-msgstr ""
-
-#: scene/gui/spin_box.cpp
-msgid "Suffix"
-msgstr ""
-
-#: scene/gui/split_container.cpp
-msgid "Split Offset"
-msgstr ""
-
-#: scene/gui/split_container.cpp scene/gui/tree.cpp
-msgid "Collapsed"
-msgstr ""
-
-#: scene/gui/split_container.cpp
-msgid "Dragger Visibility"
-msgstr ""
-
-#: scene/gui/tab_container.cpp scene/gui/tabs.cpp
-msgid "Tab Align"
-msgstr ""
-
-#: scene/gui/tab_container.cpp scene/gui/tabs.cpp
-msgid "Current Tab"
-msgstr ""
-
-#: scene/gui/tab_container.cpp
-msgid "Tabs Visible"
-msgstr ""
-
-#: scene/gui/tab_container.cpp
-msgid "All Tabs In Front"
-msgstr ""
-
-#: scene/gui/tab_container.cpp scene/gui/tabs.cpp
-msgid "Drag To Rearrange Enabled"
-msgstr ""
-
-#: scene/gui/tab_container.cpp
-msgid "Use Hidden Tabs For Min Size"
-msgstr ""
-
-#: scene/gui/tabs.cpp
-msgid "Tab Close Display Policy"
-msgstr ""
-
-#: scene/gui/tabs.cpp
-msgid "Scrolling Enabled"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Readonly"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Bookmark Gutter"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Breakpoint Gutter"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Fold Gutter"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Hiding Enabled"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Wrap Enabled"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Scroll Vertical"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Scroll Horizontal"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Draw"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Block Mode"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Moving By Right Click"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Text Edit Idle Detect (sec)"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Text Edit Undo Stack Max Size"
-msgstr ""
-
-#: scene/gui/texture_button.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Hover"
-msgstr ""
-
-#: scene/gui/texture_button.cpp
-msgid "Focused"
-msgstr ""
-
-#: scene/gui/texture_button.cpp
-msgid "Click Mask"
-msgstr ""
-
-#: scene/gui/texture_button.cpp scene/gui/texture_rect.cpp
-#: scene/gui/video_player.cpp
-msgid "Expand"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Under"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Over"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Progress"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Progress Offset"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Fill Mode"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp scene/resources/material.cpp
-msgid "Tint"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Radial Fill"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Initial Angle"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Fill Degrees"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp scene/resources/primitive_meshes.cpp
-msgid "Center Offset"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Nine Patch Stretch"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Stretch Margin Left"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Stretch Margin Top"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Stretch Margin Right"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Stretch Margin Bottom"
-msgstr ""
-
-#: scene/gui/tree.cpp
-msgid "Custom Minimum Height"
-msgstr ""
-
-#: scene/gui/tree.cpp
-msgid "(Other)"
-msgstr ""
-
-#: scene/gui/tree.cpp
-msgid "Column Titles Visible"
-msgstr ""
-
-#: scene/gui/tree.cpp
-msgid "Hide Folding"
-msgstr ""
-
-#: scene/gui/tree.cpp
-msgid "Hide Root"
-msgstr ""
-
-#: scene/gui/tree.cpp
-msgid "Drop Mode Flags"
-msgstr ""
-
-#: scene/gui/video_player.cpp
-msgid "Audio Track"
-msgstr ""
-
-#: scene/gui/video_player.cpp scene/main/scene_tree.cpp scene/main/timer.cpp
-msgid "Paused"
-msgstr ""
-
-#: scene/gui/video_player.cpp
-msgid "Buffering Msec"
-msgstr ""
-
-#: scene/gui/video_player.cpp
-msgid "Stream Position"
-msgstr ""
-
-#: scene/gui/viewport_container.cpp
-msgid "Stretch Shrink"
-msgstr ""
-
-#: scene/main/canvas_layer.cpp
-msgid "Follow Viewport"
-msgstr ""
-
-#: scene/main/http_request.cpp
-msgid "Download File"
-msgstr ""
-
-#: scene/main/http_request.cpp
-msgid "Download Chunk Size"
-msgstr ""
-
-#: scene/main/http_request.cpp
-msgid "Body Size Limit"
-msgstr ""
-
-#: scene/main/http_request.cpp
-msgid "Max Redirects"
-msgstr ""
-
-#: scene/main/http_request.cpp
-msgid "Timeout"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid ""
-"Setting node name '%s' to be unique within scene for '%s', but it's already "
-"claimed by '%s'. This node is no longer set unique."
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Name Num Separator"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Name Casing"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Editor Description"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Pause Mode"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Physics Interpolation Mode"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Display Folded"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Filename"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Owner"
-msgstr ""
-
-#: scene/main/node.cpp scene/main/scene_tree.cpp
-msgid "Multiplayer"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Custom Multiplayer"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Process Priority"
-msgstr ""
-
-#: scene/main/scene_tree.cpp scene/main/timer.cpp
-msgid "Time Left"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Debug Collisions Hint"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Debug Navigation Hint"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Use Font Oversampling"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Edited Scene Root"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Root"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Multiplayer Poll"
-msgstr ""
-
-#: scene/main/scene_tree.cpp scene/resources/mesh_library.cpp
-#: scene/resources/shape_2d.cpp
-msgid "Shapes"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Shape Color"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Contact Color"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Geometry Color"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Disabled Geometry Color"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Max Contacts Displayed"
-msgstr ""
-
-#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
-msgid "Draw 2D Outlines"
-msgstr ""
-
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
-msgid "Reflections"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Atlas Size"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Atlas Subdiv"
-msgstr ""
-
-#: scene/main/scene_tree.cpp scene/main/viewport.cpp
-msgid "MSAA"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Use FXAA"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Use Debanding"
-msgstr ""
-
-#: scene/main/scene_tree.cpp scene/main/viewport.cpp
-msgid "HDR"
-msgstr ""
-
-#: scene/main/scene_tree.cpp scene/main/viewport.cpp
-msgid "Use 32 BPC Depth"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Default Environment"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid ""
-"Default Environment as specified in Project Settings (Rendering -> "
-"Environment -> Default Environment) could not be loaded."
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Enable Object Picking"
-msgstr ""
-
-#: scene/main/timer.cpp
-msgid ""
-"Very low timer wait times (< 0.05 seconds) may behave in significantly "
-"different ways depending on the rendered or physics frame rate.\n"
-"Consider using a script's process loop instead of relying on a Timer for "
-"very low wait times."
-msgstr ""
-
-#: scene/main/timer.cpp
-msgid "Autostart"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Viewport Path"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid ""
-"This viewport is not set as render target. If you intend for it to display "
-"its contents directly to the screen, make it a child of a Control so it can "
-"obtain a size. Otherwise, make it a RenderTarget and assign its internal "
-"texture to some node for display."
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid ""
-"The Viewport size must be greater than or equal to 2 pixels on both "
-"dimensions to render anything."
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "ARVR"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Size Override Stretch"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Own World"
-msgstr ""
-
-#: scene/main/viewport.cpp scene/resources/world_2d.cpp
-msgid "World"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "World 2D"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Transparent BG"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Handle Input Locally"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "FXAA"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Debanding"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Disable 3D"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Keep 3D Linear"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Render Direct To Screen"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Debug Draw"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Render Target"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "V Flip"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Clear Mode"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Enable 2D"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Enable 3D"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Object Picking"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Disable Input"
-msgstr ""
-
-#: scene/main/viewport.cpp servers/visual_server.cpp
-msgid "Shadow Atlas"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Quad 0"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Quad 1"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Quad 2"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Quad 3"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Canvas Transform"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Global Canvas Transform"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Tooltip Delay (sec)"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "Swap OK Cancel"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "Layer Names"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "2D Render"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "3D Render"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "2D Physics"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "3D Physics"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "Use hiDPI"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "Custom"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "Custom Font"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
-msgid "Mix Rate"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Stereo"
-msgstr ""
-
-#: scene/resources/concave_polygon_shape_2d.cpp
-msgid "Segments"
-msgstr ""
-
-#: scene/resources/curve.cpp
-msgid "Bake Resolution"
-msgstr ""
-
-#: scene/resources/curve.cpp
-msgid "Bake Interval"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Panel"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Hover"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Focus"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "H Separation"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Underline Spacing"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Arrow"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Arrow Margin"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Hover Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Checked Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Unchecked"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Unchecked Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Radio Checked"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Radio Checked Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Radio Unchecked"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Radio Unchecked Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Hover Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Check V Adjust"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "On Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Off"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Off Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Shadow"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Outline Modulate"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Shadow Offset X"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Shadow Offset Y"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Shadow As Outline"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Selected"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Uneditable"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Cursor Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Clear Button Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Clear Button Color Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Minimum Spaces"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "BG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "FG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Tab"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
-#: scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Folded"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Fold"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Readonly"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Completion Lines"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Completion Max Width"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Completion Scroll Width"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Scroll Focus"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grabber"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grabber Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grabber Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Increment"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Increment Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Increment Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Decrement"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Decrement Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Decrement Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Slider"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grabber Area"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grabber Area Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grabber Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Tick"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Updown"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Scaleborder Size"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Font"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Height"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Close Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Close H Offset"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Close V Offset"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Parent Folder"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Toggle Hidden"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Panel Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Labeled Separator Left"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Labeled Separator Right"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Separator"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Accel"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Separator"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "V Separation"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Selected Frame"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Default Frame"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Default Focus"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Comment Focus"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Breakpoint"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Resizer"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Close Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Resizer Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Offset"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Close Offset"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Port Offset"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "BG Focus"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Selected Focus"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Cursor Unfocused"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Button Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Button Normal"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Button Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Button Hover"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Custom Button"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Custom Button Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Custom Button Hover"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Select Arrow"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Arrow Collapsed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Button Font"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Button Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Guide Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Drop Position Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Relationship Line Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Custom Button Font Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Item Margin"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Button Margin"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Draw Relationship Lines"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Draw Guides"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Scroll Border"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Scroll Speed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Icon Margin"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Line Separation"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Tab FG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Tab BG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Tab Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Menu"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Menu Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color FG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color BG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Side Margin"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Top Margin"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Label V Align FG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Label V Align BG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Large"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Folder"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Folder Icon Modulate"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "File Icon Modulate"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Files Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "SV Width"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "SV Height"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "H Width"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Label Width"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Screen Picker"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Add Preset"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Color Hue"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Color Sample"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Preset BG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Overbright Indicator"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Preset FG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Preset BG Icon"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Normal Font"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Bold Font"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Italics Font"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Bold Italics Font"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Mono Font"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Table H Separation"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Table V Separation"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Margin Left"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Margin Top"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Margin Right"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Margin Bottom"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Autohide"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Minus"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "More"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grid Minor"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grid Major"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Selection Fill"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Selection Stroke"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Activity"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Bezier Len Pos"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Bezier Len Neg"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Port Grab Distance Horizontal"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Port Grab Distance Vertical"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Hinting"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Override Oversampling"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Font Path"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Outline Size"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Outline Color"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Use Mipmaps"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Extra Spacing"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Char"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Font Data"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Background"
-msgstr ""
-
-#: scene/resources/environment.cpp scene/resources/sky.cpp
-msgid "Sky"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Sky Custom FOV"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Sky Orientation"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Sky Rotation"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Sky Rotation Degrees"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Canvas Max Layer"
-msgstr ""
-
-#: scene/resources/environment.cpp scene/resources/texture.cpp
-msgid "Camera Feed ID"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Ambient Light"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Sky Contribution"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Fog"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Sun Color"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Sun Amount"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Depth Enabled"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Depth Begin"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Depth End"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Depth Curve"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Transmit Enabled"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Transmit Curve"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Height Enabled"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Height Min"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Height Max"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Height Curve"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Tonemap"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Exposure"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "White"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Auto Exposure"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Min Luma"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Max Luma"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "SS Reflections"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Max Steps"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Fade In"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Fade Out"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Depth Tolerance"
-msgstr ""
-
-#: scene/resources/environment.cpp scene/resources/material.cpp
-msgid "Roughness"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "SSAO"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Radius 2"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Intensity 2"
-msgstr ""
-
-#: scene/resources/environment.cpp scene/resources/material.cpp
-msgid "Light Affect"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "AO Channel Affect"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Blur"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Edge Sharpness"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "DOF Far Blur"
-msgstr ""
-
-#: scene/resources/environment.cpp scene/resources/material.cpp
-msgid "Distance"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Transition"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "DOF Near Blur"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Glow"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Levels"
-msgstr ""
-
-#: scene/resources/environment.cpp
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "1"
-msgstr ""
-
-#: scene/resources/environment.cpp
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "2"
-msgstr ""
-
-#: scene/resources/environment.cpp
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "3"
-msgstr ""
-
-#: scene/resources/environment.cpp
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "4"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "5"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "6"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "7"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Bloom"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "HDR Threshold"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "HDR Luminance Cap"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "HDR Scale"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Bicubic Upscale"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Adjustments"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Brightness"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Saturation"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Color Correction"
-msgstr ""
-
-#: scene/resources/font.cpp
-msgid "Ascent"
-msgstr ""
-
-#: scene/resources/font.cpp
-msgid "Distance Field"
-msgstr ""
-
-#: scene/resources/gradient.cpp
-msgid "Raw Data"
-msgstr ""
-
-#: scene/resources/gradient.cpp
-msgid "Offsets"
-msgstr ""
-
-#: scene/resources/height_map_shape.cpp
-msgid "Map Width"
-msgstr ""
-
-#: scene/resources/height_map_shape.cpp
-msgid "Map Depth"
-msgstr ""
-
-#: scene/resources/height_map_shape.cpp
-msgid "Map Data"
-msgstr ""
-
-#: scene/resources/line_shape_2d.cpp
-msgid "D"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Next Pass"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Use Shadow To Opacity"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Unshaded"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Vertex Lighting"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Use Point Size"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "World Triplanar"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Albedo Tex Force sRGB"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Do Not Receive Shadows"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Disable Ambient Light"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Ensure Correct Normals"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Albedo Tex MSDF"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Vertex Color"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Use As Albedo"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Is sRGB"
-msgstr ""
-
-#: scene/resources/material.cpp servers/visual_server.cpp
-msgid "Parameters"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Diffuse Mode"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Specular Mode"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Depth Draw Mode"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Line Width"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Point Size"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Billboard Mode"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Billboard Keep Scale"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Grow"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Grow Amount"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Use Alpha Scissor"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Particles Anim"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "H Frames"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "V Frames"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Albedo"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Metallic"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Texture Channel"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Emission"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "On UV2"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "NormalMap"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Rim"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Clearcoat"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Gloss"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Anisotropy"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Flowmap"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Ambient Occlusion"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Deep Parallax"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Min Layers"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Max Layers"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Flip Tangent"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Flip Binormal"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Subsurf Scatter"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Transmission"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Refraction"
-msgstr ""
-
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
-msgid "Detail"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "UV Layer"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "UV1"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Triplanar"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Triplanar Sharpness"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "UV2"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Proximity Fade"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Distance Fade"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Async Mode"
-msgstr ""
-
-#: scene/resources/mesh.cpp
-msgid "Lightmap Size Hint"
-msgstr ""
-
-#: scene/resources/mesh.cpp scene/resources/primitive_meshes.cpp
-msgid "Custom AABB"
-msgstr ""
-
-#: scene/resources/mesh_library.cpp
-msgid "Mesh Transform"
-msgstr ""
-
-#: scene/resources/mesh_library.cpp
-msgid "NavMesh Transform"
-msgstr ""
-
-#: scene/resources/multimesh.cpp
-msgid "Color Format"
-msgstr ""
-
-#: scene/resources/multimesh.cpp
-msgid "Transform Format"
-msgstr ""
-
-#: scene/resources/multimesh.cpp
-msgid "Custom Data Format"
-msgstr ""
-
-#: scene/resources/multimesh.cpp
-msgid "Instance Count"
-msgstr ""
-
-#: scene/resources/multimesh.cpp
-msgid "Visible Instance Count"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Sample Partition Type"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Parsed Geometry Type"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Source Geometry Mode"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Source Group Name"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Max Climb"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Max Slope"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Merge Size"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Max Error"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Verts Per Poly"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Sample Distance"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Sample Max Error"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Low Hanging Obstacles"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Ledge Spans"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
-msgstr ""
-
-#: scene/resources/occluder_shape.cpp
-msgid "Spheres"
-msgstr ""
-
-#: scene/resources/occluder_shape.cpp
-msgid "OccluderShapeSphere Set Spheres"
-msgstr ""
-
-#: scene/resources/occluder_shape_polygon.cpp
-msgid "Polygon Points"
-msgstr ""
-
-#: scene/resources/occluder_shape_polygon.cpp
-msgid "Hole Points"
-msgstr ""
-
-#: scene/resources/packed_scene.cpp
-msgid "Bundled"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Trail"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Divisor"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Size Modifier"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Color Modifier"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Point Texture"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Normal Texture"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Color Texture"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Point Count"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Scale Random"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Scale Curve"
-msgstr ""
-
-#: scene/resources/physics_material.cpp
-msgid "Rough"
-msgstr ""
-
-#: scene/resources/physics_material.cpp
-msgid "Absorbent"
-msgstr ""
-
-#: scene/resources/plane_shape.cpp
-msgid "Plane"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Flip Faces"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Mid Height"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Subdivide Width"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Subdivide Height"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Subdivide Depth"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Top Radius"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Bottom Radius"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Left To Right"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Is Hemisphere"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Curve Step"
-msgstr ""
-
-#: scene/resources/ray_shape.cpp scene/resources/segment_shape_2d.cpp
-msgid "Slips On Slope"
-msgstr ""
-
-#: scene/resources/segment_shape_2d.cpp
-msgid "A"
-msgstr ""
-
-#: scene/resources/shape_2d.cpp
-msgid "Custom Solver Bias"
-msgstr ""
-
-#: scene/resources/skin.cpp
-msgid "Bind Count"
-msgstr ""
-
-#: scene/resources/skin.cpp
-msgid "Bind"
-msgstr ""
-
-#: scene/resources/skin.cpp
-msgid "Bone"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Radiance Size"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Panorama"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Top Color"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Horizon Color"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Ground"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Bottom Color"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Sun"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Latitude"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Longitude"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Angle Min"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Angle Max"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Content Margin"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Expand Margin"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Skew"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Corner Radius"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Corner Detail"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Anti Aliasing"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Grow Begin"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Grow End"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Load Path"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Base Texture"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Image Size"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Side"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Front"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Back"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Storage Mode"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Lossy Storage Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "From"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "To"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Base"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Current Frame"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Pause"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Which Feed"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Camera Is Active"
-msgstr ""
-
-#: scene/resources/theme.cpp
-msgid "Default Font"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Output Port For Preview"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Depth Draw"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Cull"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Diffuse"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Async"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Modes"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Input Name"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Uniform Name"
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid ""
-"The sampler port is connected but not used. Consider changing the source to "
-"'SamplerPort'."
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Invalid source for preview."
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Invalid source for shader."
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Texture Type"
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Cube Map"
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Default Value Enabled"
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Default Value"
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Color Default"
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Invalid comparison function for that type."
-msgstr ""
-
-#: scene/resources/world.cpp
-msgid "Fallback Environment"
-msgstr ""
-
-#: scene/resources/world.cpp
-msgid "Scenario"
-msgstr ""
-
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Direct Space State"
-msgstr ""
-
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Default Gravity Vector"
-msgstr ""
-
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Default Linear Damp"
-msgstr ""
-
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Default Angular Damp"
-msgstr ""
-
-#: scene/resources/world_2d.cpp
-msgid "Canvas"
-msgstr ""
-
-#: servers/arvr/arvr_interface.cpp
-msgid "Is Primary"
-msgstr ""
-
-#: servers/arvr/arvr_interface.cpp
-msgid "Is Initialized"
-msgstr ""
-
-#: servers/arvr/arvr_interface.cpp
-msgid "AR"
-msgstr ""
-
-#: servers/arvr/arvr_interface.cpp
-msgid "Is Anchor Detection Enabled"
-msgstr ""
-
-#: servers/arvr_server.cpp
-msgid "Primary Interface"
-msgstr ""
-
-#: servers/audio/audio_stream.cpp
-msgid "Audio Stream"
-msgstr ""
-
-#: servers/audio/audio_stream.cpp
-msgid "Random Pitch"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_capture.cpp
-#: servers/audio/effects/audio_effect_spectrum_analyzer.cpp
-#: servers/audio/effects/audio_stream_generator.cpp
-msgid "Buffer Length"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "Voice Count"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Dry"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Wet"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "Voice"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "Depth (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-msgid "Pan"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_compressor.cpp
-#: servers/audio/effects/audio_effect_filter.cpp
-msgid "Gain"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Attack (µs)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Release (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Mix"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Sidechain"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Tap 1"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Tap 2"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_phaser.cpp
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Feedback"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Low-pass"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_distortion.cpp
-msgid "Pre Gain"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_distortion.cpp
-msgid "Keep Hf Hz"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_distortion.cpp
-msgid "Drive"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_distortion.cpp
-msgid "Post Gain"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_filter.cpp
-msgid "Resonance"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_limiter.cpp
-msgid "Ceiling dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_limiter.cpp
-msgid "Threshold dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_limiter.cpp
-msgid "Soft Clip dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_limiter.cpp
-msgid "Soft Clip Ratio"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Range Min Hz"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Range Max Hz"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_pitch_shift.cpp
-msgid "Oversampling"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_pitch_shift.cpp
-#: servers/audio/effects/audio_effect_spectrum_analyzer.cpp
-msgid "FFT Size"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Predelay"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Msec"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Room Size"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "High-pass"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_spectrum_analyzer.cpp
-msgid "Tap Back Pos"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_stereo_enhance.cpp
-msgid "Pan Pullout"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_stereo_enhance.cpp
-msgid "Time Pullout (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_stereo_enhance.cpp
-msgid "Surround"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Enable Audio Input"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Output Latency"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Channel Disable Threshold dB"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Channel Disable Time"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Video Delay Compensation (ms)"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Bus Count"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Capture Device"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Global Rate Scale"
-msgstr ""
-
-#: servers/camera/camera_feed.cpp
-msgid "Feed"
-msgstr ""
-
-#: servers/camera/camera_feed.cpp
-msgid "Is Active"
-msgstr ""
-
-#: servers/physics/space_sw.cpp servers/physics_2d/space_2d_sw.cpp
-msgid "Sleep Threshold Linear"
-msgstr ""
-
-#: servers/physics/space_sw.cpp servers/physics_2d/space_2d_sw.cpp
-msgid "Sleep Threshold Angular"
-msgstr ""
-
-#: servers/physics/space_sw.cpp servers/physics_2d/space_2d_sw.cpp
-msgid "Time Before Sleep"
-msgstr ""
-
-#: servers/physics_2d/physics_2d_server_sw.cpp
-msgid "BP Hash Table Size"
-msgstr ""
-
-#: servers/physics_2d/physics_2d_server_sw.cpp
-msgid "Large Object Surface Threshold In Cells"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Inverse Mass"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Inverse Inertia"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Total Angular Damp"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Total Linear Damp"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Total Gravity"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Linear Velocity"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Exclude"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Shape RID"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collide With Bodies"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collide With Areas"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Motion Remainder"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collision Point"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collision Normal"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collision Depth"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collision Safe Fraction"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collision Unsafe Fraction"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Physics Engine"
-msgstr ""
-
-#: servers/physics_server.cpp
-msgid "Center Of Mass"
-msgstr ""
-
-#: servers/physics_server.cpp
-msgid "Principal Inertia Axes"
-msgstr ""
-
-#: servers/visual/shader_language.cpp
-msgid "Varying may not be assigned in the '%s' function."
-msgstr ""
-
-#: servers/visual/shader_language.cpp
-msgid ""
-"Varyings which were assigned in 'vertex' function may not be reassigned in "
-"'fragment' or 'light'."
-msgstr ""
-
-#: servers/visual/shader_language.cpp
-msgid ""
-"Varyings which were assigned in 'fragment' function may not be reassigned in "
-"'vertex' or 'light'."
-msgstr ""
-
-#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
-msgstr ""
-
-#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
-msgstr ""
-
-#: servers/visual/shader_language.cpp
-msgid "Constants cannot be modified."
-msgstr ""
-
-#: servers/visual/visual_server_scene.cpp
-msgid "Spatial Partitioning"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Render Loop Enabled"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "VRAM Compression"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Import BPTC"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Import S3TC"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Import ETC"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Import ETC2"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Import PVRTC"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Lossless Compression"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Force PNG"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "WebP Compression Level"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Time Rollover Secs"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Cubemap Size"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Quadrant 0 Subdiv"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Quadrant 1 Subdiv"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Quadrant 2 Subdiv"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Quadrant 3 Subdiv"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Shadows"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Filter Mode"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Texture Array Reflections"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "High Quality GGX"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Irradiance Max Size"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Shading"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Force Vertex Shading"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Force Lambert Over Burley"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Force Blinn Over GGX"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Mesh Storage"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Split Stream"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Physical Light Attenuation"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Depth Prepass"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Disable For Vendors"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Anisotropic Filter Level"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Nearest Mipmap Filter"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Skinning"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Software Skinning Fallback"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Force Software Skinning"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Software Skinning"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Ninepatch Mode"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "OpenGL"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Batching Send Null"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Batching Stream"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Legacy Orphan Buffers"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Legacy Stream"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Batching"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Batching"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Batching In Editor"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Single Rect Fallback"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Max Join Item Commands"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Colored Vertex Format Threshold"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Scissor Area Threshold"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Max Join Items"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Batch Buffer Size"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Item Reordering Lookahead"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Flash Batching"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Diagnose Frame"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "GLES2"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Compatibility"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Disable Half Float"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Enable High Float"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Precision"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "UV Contract"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "UV Contract Amount"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Simple PVS"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "PVS Logging"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Signals"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Remove Danglers"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Flip Imported Portals"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Occlusion Culling"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Max Active Spheres"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Max Active Polygons"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Shader Compilation Mode"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Max Simultaneous Compiles"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Log Active Async Compiles Count"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Shader Cache Size (MB)"
-msgstr ""
diff --git a/editor/translations/mk.po b/editor/translations/mk.po
index c75398aee6..e37eadfeaf 100644
--- a/editor/translations/mk.po
+++ b/editor/translations/mk.po
@@ -203,9 +203,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr ""
@@ -311,7 +312,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Ðема доволно бајти за декодирање бајтови, или невалиден формат."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "Ðевалидено внеÑување %i (не додадено) во израз"
#: core/math/expression.cpp
@@ -355,6 +357,15 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "СвојÑтва на анимацијата."
+
+#: core/os/input.cpp
+msgid "Use Accumulated Input"
+msgstr ""
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -536,7 +547,8 @@ msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr ""
@@ -619,24 +631,23 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-msgid "Plugin Name"
+msgid "Version Control Plugin Name"
msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
@@ -744,7 +755,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
msgid "Filters"
msgstr ""
@@ -1011,6 +1023,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Слободно"
@@ -1027,7 +1040,7 @@ msgstr "Огледало"
msgid "Time:"
msgstr "Време:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "ВредноÑÑ‚:"
@@ -1271,10 +1284,69 @@ msgid "Remove this track."
msgstr ""
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
+msgstr "Време:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Ðнимација Промени Прелаз"
+
+#: editor/animation_track_editor.cpp
+msgid "Rotation:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Ðевалиден Ð¸Ð½Ð´ÐµÐºÑ Ð¾Ð´ тип %s за оÑновен тип %s"
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Stream:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "СвојÑтва на анимацијата."
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
msgstr ""
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "СвојÑтва на анимацијата."
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr ""
@@ -1482,7 +1554,7 @@ msgid "Add Method Track Key"
msgstr ""
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+msgid "Method not found in object:"
msgstr ""
#: editor/animation_track_editor.cpp
@@ -2074,7 +2146,7 @@ msgid "Open"
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
+msgid "Owners of: %s (Total: %d)"
msgstr ""
#: editor/dependency_editor.cpp
@@ -2365,7 +2437,7 @@ msgid "Bus Options"
msgstr ""
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr ""
@@ -2417,8 +2489,8 @@ msgstr ""
msgid "There is no '%s' file."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+msgid "Layout:"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -2621,6 +2693,22 @@ msgid "Choose"
msgstr ""
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed successfully."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed."
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr ""
@@ -2633,6 +2721,26 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp
+msgid "Save PCK"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Cannot create file \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed to export project files."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Can't open file to read from path \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Save ZIP"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2733,8 +2841,25 @@ msgstr ""
msgid "Custom release template not found."
msgstr ""
+#: editor/editor_export.cpp
+msgid "Prepare Template"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "The given export path doesn't exist."
+msgstr ""
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+msgid "Template file not found: \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed to copy export template."
+msgstr ""
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
msgstr ""
#: editor/editor_export.cpp
@@ -2905,9 +3030,9 @@ msgid "Import"
msgstr "Импортирај"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr ""
@@ -3987,14 +4112,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4109,6 +4226,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr ""
@@ -4136,6 +4257,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
@@ -4765,11 +4890,13 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+msgid "Page:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
@@ -4862,6 +4989,10 @@ msgid ""
"as runnable."
msgstr ""
+#: editor/editor_run_native.cpp
+msgid "Project Run"
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -5118,7 +5249,9 @@ msgid "Draw Spaces"
msgstr ""
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr ""
@@ -5655,10 +5788,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Sorting Order"
msgstr ""
@@ -6376,14 +6511,6 @@ msgid "Replace in Files"
msgstr ""
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr ""
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr ""
@@ -6509,7 +6636,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
msgid "Filter"
msgstr ""
@@ -6754,7 +6881,7 @@ msgid "Generating Lightmaps"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+msgid "Generating for Mesh:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -6782,6 +6909,18 @@ msgid "Saving..."
msgstr ""
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7561,10 +7700,12 @@ msgstr ""
msgid "Directions"
msgstr ""
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr ""
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr ""
@@ -7719,8 +7860,9 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
-msgstr ""
+#, fuzzy
+msgid "Transition:"
+msgstr "Ðнимација Промени Прелаз"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Play Mode:"
@@ -7736,11 +7878,6 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr ""
@@ -8625,6 +8762,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr ""
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -8688,6 +8826,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -9428,7 +9570,7 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+msgid "Emission Source:"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
@@ -9658,6 +9800,7 @@ msgid "Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr ""
@@ -9811,13 +9954,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -9826,10 +9962,6 @@ msgstr ""
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -10516,13 +10648,16 @@ msgstr ""
msgid "Translate"
msgstr ""
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
+msgid "Scaling:"
msgstr ""
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "Ðнимација Промени Прелаз"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -10545,11 +10680,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11024,7 +11154,7 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+msgid "Convert to MeshInstance2D"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11056,15 +11186,15 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
+msgid "Simplification:"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11984,8 +12114,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr ""
@@ -13405,31 +13534,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr ""
@@ -13563,6 +13671,10 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Project Export"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr ""
@@ -14994,8 +15106,9 @@ msgid "Attach Node Script"
msgstr ""
#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr ""
+#, fuzzy
+msgid "Remote %s:"
+msgstr "Избриши невалидни клучеви"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -15810,7 +15923,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
msgid "Polygon"
msgstr ""
@@ -15972,7 +16085,8 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+#, fuzzy
+msgid "Libraries:"
msgstr "Библиотеки: "
#: modules/gdnative/nativescript/nativescript.cpp
@@ -16372,7 +16486,6 @@ msgid "Use In Baked Light"
msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -16398,6 +16511,19 @@ msgstr ""
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Дуплирај избран(и) клуч(еви)"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "ВредноÑÑ‚:"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -16793,7 +16919,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -16801,7 +16927,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17161,7 +17287,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17169,7 +17295,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17322,12 +17448,14 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
+#, fuzzy
+msgid "Invalid argument of type:"
+msgstr "Ðевалидни аргументи на конÑтрукт '%s'"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
+#, fuzzy
+msgid "Invalid arguments:"
+msgstr "Ðевалидни аргументи на конÑтрукт '%s'"
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -17338,11 +17466,11 @@ msgid "Var Name"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+msgid "VariableGet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+msgid "VariableSet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
@@ -17829,10 +17957,6 @@ msgid "Could not execute on device."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -17936,12 +18060,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Јазол"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -17957,6 +18085,10 @@ msgid "Could not find keystore, unable to export."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Could not start apksigner executable."
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -17985,7 +18117,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -17996,19 +18128,17 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+msgid "Could not export project files to gradle project."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18021,7 +18151,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -18036,7 +18166,7 @@ msgid ""
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18044,15 +18174,12 @@ msgid "Creating APK..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -18062,7 +18189,7 @@ msgid "Adding files..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18288,6 +18415,15 @@ msgstr ""
msgid "Custom BG Color"
msgstr ""
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+msgid "Prepare Templates"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Export template not found."
+msgstr ""
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18309,19 +18445,28 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Could not open template for export: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
+msgstr "Ðевалиден Ð¸Ð½Ð´ÐµÐºÑ Ð¾Ð´ тип %s за оÑновен тип %s"
+
+#: platform/javascript/export/export.cpp
+msgid "Could not write file: \"%s\"."
+msgstr ""
+
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+msgid "Icon Creation"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not read file: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+msgid "PWA"
msgstr ""
#: platform/javascript/export/export.cpp
@@ -18393,15 +18538,15 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr ""
#: platform/javascript/export/export.cpp
@@ -18668,9 +18813,25 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Could not open icon file \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Could not start xcrun executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -18686,15 +18847,66 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
msgid "No identity found."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Cannot sign file %s."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "DMG Creation"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Could not start hdiutil executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Creating app bundle"
msgstr ""
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Invalid export format."
msgstr ""
#: platform/osx/export/export.cpp
@@ -18705,7 +18917,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -18746,6 +18958,14 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+msgid "ZIP Creation"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr ""
@@ -19042,6 +19262,10 @@ msgid "Debug Algorithm"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Failed to rename temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -19082,6 +19306,63 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Resources Modification"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Ðевалидни аргументи на конÑтрукт '%s'"
+
+#: platform/windows/export/export.cpp
+msgid "Invalid timestamp server."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Failed to remove temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19100,6 +19381,22 @@ msgid "Invalid product version:"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Failed to open executable file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Windows"
msgstr ""
@@ -19115,6 +19412,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
msgid "Frames"
@@ -19224,7 +19525,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
@@ -19978,13 +20280,15 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
+msgid "Navpoly"
msgstr ""
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Enter Cost"
+msgstr ""
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Travel Cost"
msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
@@ -21045,12 +21349,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -23407,6 +23705,16 @@ msgid "3D Physics"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Дуплирај избран(и) клуч(еви)"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Дуплирај избран(и) клуч(еви)"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -24635,7 +24943,7 @@ msgstr ""
msgid "Refraction"
msgstr ""
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -24709,10 +25017,15 @@ msgid "Visible Instance Count"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Sample Partition Type"
+msgid "Sampling"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
+msgstr "СвојÑтва на анимацијата."
+
+#: scene/resources/navigation_mesh.cpp
msgid "Parsed Geometry Type"
msgstr ""
@@ -24725,7 +25038,11 @@ msgid "Source Group Name"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
+msgid "Agents"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -24737,11 +25054,15 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+msgid "Regions"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -24754,6 +25075,10 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+msgid "Details"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -24770,7 +25095,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -25135,6 +25460,11 @@ msgid "Scenario"
msgstr ""
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "СвојÑтва на анимацијата."
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -25150,6 +25480,25 @@ msgstr ""
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "ВредноÑÑ‚:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "ВредноÑÑ‚:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "ВредноÑÑ‚:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+msgid "Default Edge Connection Margin"
+msgstr ""
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/ml.po b/editor/translations/ml.po
index 87197b2d24..74ea6168e4 100644
--- a/editor/translations/ml.po
+++ b/editor/translations/ml.po
@@ -206,9 +206,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr ""
@@ -314,7 +315,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "തെറàµà´±à´¾à´¯ ഫോർമാറàµà´±à´¿à´™àµ à´…à´²àµà´²àµ†à´™àµà´•ിൽ ഡീകàµà´•ോഡിങàµà´™à´¿à´¨àµ ആവശàµà´¯à´¤àµà´¤à´¿à´¨àµ ബെറàµà´±àµà´•ൾ ഇലàµà´²."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "à´Žà´•àµà´¸àµà´ªàµà´°àµ†à´·à´¨à´¿àµ½ അസാധàµà´µà´¾à´¯ ഇൻപàµà´Ÿàµà´Ÿàµ %i (പാസാകàµà´•ിയിടàµà´Ÿà´¿à´²àµà´²)"
#: core/math/expression.cpp
@@ -358,6 +360,15 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "വിളി രീതി നോകàµà´•àµà´•"
+
+#: core/os/input.cpp
+msgid "Use Accumulated Input"
+msgstr ""
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -540,7 +551,8 @@ msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr ""
@@ -623,24 +635,23 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-msgid "Plugin Name"
+msgid "Version Control Plugin Name"
msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
@@ -748,7 +759,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
msgid "Filters"
msgstr ""
@@ -1016,6 +1028,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "സൗജനàµà´¯à´‚"
@@ -1032,7 +1045,7 @@ msgstr "à´•à´£àµà´£à´¾à´Ÿà´¿"
msgid "Time:"
msgstr "സമയം:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "വില:"
@@ -1277,10 +1290,70 @@ msgid "Remove this track."
msgstr ""
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
+msgstr "സമയം:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "ചലനം à´šàµà´±àµà´±àµ½"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "ചലനം à´šàµà´±àµà´±àµ½"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
msgstr ""
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "à´…à´Ÿà´¿à´¸àµà´¥à´¾à´¨ തരം% sഇനൠഅസാധàµà´µà´¾à´¯ സൂചിക തരം"
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Stream:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "വിളി രീതി നോകàµà´•àµà´•"
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "ചലനരേഖകൾ:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr ""
@@ -1489,7 +1562,7 @@ msgid "Add Method Track Key"
msgstr ""
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+msgid "Method not found in object:"
msgstr ""
#: editor/animation_track_editor.cpp
@@ -2081,7 +2154,7 @@ msgid "Open"
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
+msgid "Owners of: %s (Total: %d)"
msgstr ""
#: editor/dependency_editor.cpp
@@ -2373,7 +2446,7 @@ msgid "Bus Options"
msgstr "à´ªàµà´°à´µàµƒà´¤àµà´¤à´¿à´•ൾ:"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr ""
@@ -2425,8 +2498,8 @@ msgstr ""
msgid "There is no '%s' file."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+msgid "Layout:"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -2629,6 +2702,22 @@ msgid "Choose"
msgstr ""
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed successfully."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed."
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr ""
@@ -2641,6 +2730,26 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp
+msgid "Save PCK"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Cannot create file \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed to export project files."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Can't open file to read from path \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Save ZIP"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2743,8 +2852,25 @@ msgstr ""
msgid "Custom release template not found."
msgstr ""
+#: editor/editor_export.cpp
+msgid "Prepare Template"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "The given export path doesn't exist."
+msgstr ""
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+msgid "Template file not found: \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed to copy export template."
+msgstr ""
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
msgstr ""
#: editor/editor_export.cpp
@@ -2914,9 +3040,9 @@ msgid "Import"
msgstr ""
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr ""
@@ -3999,14 +4125,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4122,6 +4240,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr ""
@@ -4149,6 +4271,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
@@ -4778,11 +4904,13 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+msgid "Page:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
@@ -4874,6 +5002,10 @@ msgid ""
"as runnable."
msgstr ""
+#: editor/editor_run_native.cpp
+msgid "Project Run"
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -5131,7 +5263,9 @@ msgid "Draw Spaces"
msgstr ""
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr ""
@@ -5667,10 +5801,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Sorting Order"
msgstr ""
@@ -6390,14 +6526,6 @@ msgid "Replace in Files"
msgstr ""
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr ""
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr ""
@@ -6524,7 +6652,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
msgid "Filter"
msgstr ""
@@ -6765,7 +6893,7 @@ msgid "Generating Lightmaps"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+msgid "Generating for Mesh:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -6793,6 +6921,18 @@ msgid "Saving..."
msgstr ""
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7576,10 +7716,12 @@ msgstr ""
msgid "Directions"
msgstr ""
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr ""
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr ""
@@ -7734,8 +7876,9 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
-msgstr ""
+#, fuzzy
+msgid "Transition:"
+msgstr "ചലനം à´šàµà´±àµà´±àµ½"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Play Mode:"
@@ -7751,11 +7894,6 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr ""
@@ -8640,6 +8778,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr ""
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -8703,6 +8842,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -9446,7 +9589,7 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+msgid "Emission Source:"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
@@ -9676,6 +9819,7 @@ msgid "Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr ""
@@ -9829,13 +9973,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -9844,10 +9981,6 @@ msgstr ""
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -10534,13 +10667,16 @@ msgstr ""
msgid "Translate"
msgstr ""
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
+msgid "Scaling:"
msgstr ""
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "ചലനം à´šàµà´±àµà´±àµ½"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -10563,11 +10699,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11042,7 +11173,7 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+msgid "Convert to MeshInstance2D"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11074,15 +11205,16 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "ചലനം à´šàµà´±àµà´±àµ½"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12000,8 +12132,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr ""
@@ -13423,31 +13554,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr ""
@@ -13582,6 +13692,10 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Project Export"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr ""
@@ -15013,8 +15127,9 @@ msgid "Attach Node Script"
msgstr ""
#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr ""
+#, fuzzy
+msgid "Remote %s:"
+msgstr "à´—àµà´£à´‚ നോകàµà´•àµà´•"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -15831,7 +15946,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
msgid "Polygon"
msgstr ""
@@ -15992,7 +16107,7 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+msgid "Libraries:"
msgstr ""
#: modules/gdnative/nativescript/nativescript.cpp
@@ -16393,7 +16508,6 @@ msgid "Use In Baked Light"
msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -16419,6 +16533,19 @@ msgstr ""
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "സൂചികകൾ നീകàµà´•à´‚ ചെയàµà´¯àµà´•"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "വില:"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -16814,7 +16941,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -16822,7 +16949,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17185,7 +17312,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17193,7 +17320,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17347,12 +17474,14 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
+#, fuzzy
+msgid "Invalid argument of type:"
+msgstr "'%s' നിർമികàµà´•àµà´µà´¾àµ» à´•à´¿à´Ÿàµà´Ÿà´¿à´¯ വിവരങàµà´™àµ¾ തെറàµà´±à´¾à´£àµ"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
+#, fuzzy
+msgid "Invalid arguments:"
+msgstr "'%s' നിർമികàµà´•àµà´µà´¾àµ» à´•à´¿à´Ÿàµà´Ÿà´¿à´¯ വിവരങàµà´™àµ¾ തെറàµà´±à´¾à´£àµ"
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -17363,11 +17492,11 @@ msgid "Var Name"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+msgid "VariableGet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+msgid "VariableSet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
@@ -17855,10 +17984,6 @@ msgid "Could not execute on device."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -17962,12 +18087,15 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Code Signing"
+msgstr ""
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -17983,6 +18111,10 @@ msgid "Could not find keystore, unable to export."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Could not start apksigner executable."
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -18011,7 +18143,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18022,19 +18154,17 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+msgid "Could not export project files to gradle project."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18047,7 +18177,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -18062,7 +18192,7 @@ msgid ""
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18070,15 +18200,12 @@ msgid "Creating APK..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -18088,7 +18215,7 @@ msgid "Adding files..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18315,6 +18442,15 @@ msgstr "à´ªàµà´°à´µàµƒà´¤àµà´¤à´¿à´•ൾ:"
msgid "Custom BG Color"
msgstr "à´ªàµà´°à´µàµƒà´¤àµà´¤à´¿à´•ൾ:"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+msgid "Prepare Templates"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Export template not found."
+msgstr ""
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18336,19 +18472,29 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Could not open template for export: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
+msgstr "à´…à´Ÿà´¿à´¸àµà´¥à´¾à´¨ തരം% sഇനൠഅസാധàµà´µà´¾à´¯ സൂചിക തരം"
+
+#: platform/javascript/export/export.cpp
+msgid "Could not write file: \"%s\"."
msgstr ""
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "ചലനം à´šàµà´±àµà´±àµ½"
+
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not read file: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+msgid "PWA"
msgstr ""
#: platform/javascript/export/export.cpp
@@ -18421,15 +18567,15 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr ""
#: platform/javascript/export/export.cpp
@@ -18699,9 +18845,26 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Could not open icon file \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Could not start xcrun executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "ചലനം à´šàµà´±àµà´±àµ½"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -18717,18 +18880,71 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
msgid "No identity found."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Cannot sign file %s."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "à´ªàµà´°à´µàµƒà´¤àµà´¤à´¿à´•ൾ:"
+
+#: platform/osx/export/export.cpp
+msgid "Could not start hdiutil executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Creating app bundle"
msgstr ""
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "à´¤àµà´°à´¿à´®à´¾à´¨ പരിവർതàµà´¤à´¨à´‚ നോകàµà´•àµà´•"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -18736,7 +18952,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -18777,6 +18993,15 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "ചലനം à´šàµà´±àµà´±àµ½"
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr ""
@@ -19073,6 +19298,10 @@ msgid "Debug Algorithm"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Failed to rename temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -19113,6 +19342,63 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Resources Modification"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "'%s' നിർമികàµà´•àµà´µà´¾àµ» à´•à´¿à´Ÿàµà´Ÿà´¿à´¯ വിവരങàµà´™àµ¾ തെറàµà´±à´¾à´£àµ"
+
+#: platform/windows/export/export.cpp
+msgid "Invalid timestamp server."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Failed to remove temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19131,6 +19417,22 @@ msgid "Invalid product version:"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Failed to open executable file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Windows"
msgstr ""
@@ -19146,6 +19448,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
msgid "Frames"
@@ -19256,7 +19562,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
@@ -20014,13 +20321,15 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
+msgid "Navpoly"
msgstr ""
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Enter Cost"
+msgstr ""
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Travel Cost"
msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
@@ -21092,12 +21401,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -23481,6 +23784,16 @@ msgid "3D Physics"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "സൂചികകൾ നീകàµà´•à´‚ ചെയàµà´¯àµà´•"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "സൂചികകൾ നീകàµà´•à´‚ ചെയàµà´¯àµà´•"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -24742,7 +25055,7 @@ msgstr ""
msgid "Refraction"
msgstr ""
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -24819,10 +25132,15 @@ msgid "Visible Instance Count"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Sample Partition Type"
+msgid "Sampling"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
+msgstr "ചലനം à´šàµà´±àµà´±àµ½"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Parsed Geometry Type"
msgstr ""
@@ -24835,7 +25153,11 @@ msgid "Source Group Name"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
+msgid "Agents"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -24847,11 +25169,16 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Regions"
+msgstr "à´ªàµà´°à´µàµƒà´¤àµà´¤à´¿à´•ൾ:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -24864,6 +25191,10 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+msgid "Details"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -24880,7 +25211,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -25247,6 +25578,11 @@ msgid "Scenario"
msgstr ""
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "ചലനം à´šàµà´±àµà´±àµ½"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -25262,6 +25598,26 @@ msgstr ""
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "വില:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "വില:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "വില:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "ചലനം à´šàµà´±àµà´±àµ½"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/mr.po b/editor/translations/mr.po
index 1528f8eca7..005f8a3177 100644
--- a/editor/translations/mr.po
+++ b/editor/translations/mr.po
@@ -204,9 +204,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr ""
@@ -313,7 +314,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "डिकोड करणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ पà¥à¤°à¤¸à¥‡ बाईटसॠनाहित, किंवा अवैध फ़ोरमैट."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "à¤à¤•à¥à¤¸à¤ªà¥à¤°à¥‡à¤¶à¤¨ मधे अवैध इनपà¥à¤Ÿ %i (पास नाही à¤à¤¾à¤²à¥‡)"
#: core/math/expression.cpp
@@ -357,6 +359,15 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "पà¥à¤²à¥‡ मोड:"
+
+#: core/os/input.cpp
+msgid "Use Accumulated Input"
+msgstr ""
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -542,7 +553,8 @@ msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr ""
@@ -625,24 +637,23 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-msgid "Plugin Name"
+msgid "Version Control Plugin Name"
msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
@@ -751,7 +762,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
msgid "Filters"
msgstr ""
@@ -1019,6 +1031,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "मोफत"
@@ -1035,7 +1048,7 @@ msgstr ""
msgid "Time:"
msgstr "वेळ:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "मूलà¥à¤¯:"
@@ -1279,10 +1292,70 @@ msgid "Remove this track."
msgstr ""
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
+msgstr "वेळ:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "अâ€à¥…निमेशन टà¥à¤°à¥€"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "अâ€à¥…निमेशन टà¥à¤°à¥€"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "सà¥à¤•ेल:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "बेस पà¥à¤°à¤•ार %s साठी %s पà¥à¤°à¤•ाराची अवैध अनà¥à¤•à¥à¤°à¤®à¤£à¤¿à¤•ा"
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Stream:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "नोड हलवा"
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "अâ€à¥…निमेशन नाव:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr ""
@@ -1490,7 +1563,7 @@ msgid "Add Method Track Key"
msgstr ""
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+msgid "Method not found in object:"
msgstr ""
#: editor/animation_track_editor.cpp
@@ -2082,7 +2155,7 @@ msgid "Open"
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
+msgid "Owners of: %s (Total: %d)"
msgstr ""
#: editor/dependency_editor.cpp
@@ -2373,7 +2446,7 @@ msgid "Bus Options"
msgstr ""
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr ""
@@ -2425,8 +2498,8 @@ msgstr ""
msgid "There is no '%s' file."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+msgid "Layout:"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -2629,6 +2702,22 @@ msgid "Choose"
msgstr ""
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed successfully."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed."
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr ""
@@ -2641,6 +2730,26 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp
+msgid "Save PCK"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Cannot create file \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed to export project files."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Can't open file to read from path \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Save ZIP"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2741,8 +2850,25 @@ msgstr ""
msgid "Custom release template not found."
msgstr ""
+#: editor/editor_export.cpp
+msgid "Prepare Template"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "The given export path doesn't exist."
+msgstr ""
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+msgid "Template file not found: \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed to copy export template."
+msgstr ""
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
msgstr ""
#: editor/editor_export.cpp
@@ -2912,9 +3038,9 @@ msgid "Import"
msgstr ""
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr ""
@@ -3992,14 +4118,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4116,6 +4234,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr ""
@@ -4143,6 +4265,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
@@ -4772,11 +4898,13 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+msgid "Page:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
@@ -4868,6 +4996,10 @@ msgid ""
"as runnable."
msgstr ""
+#: editor/editor_run_native.cpp
+msgid "Project Run"
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -5121,7 +5253,9 @@ msgid "Draw Spaces"
msgstr ""
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr ""
@@ -5661,10 +5795,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Sorting Order"
msgstr ""
@@ -6383,14 +6519,6 @@ msgid "Replace in Files"
msgstr ""
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr ""
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr ""
@@ -6517,7 +6645,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "नोड हलवा"
@@ -6762,7 +6890,7 @@ msgid "Generating Lightmaps"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+msgid "Generating for Mesh:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -6790,6 +6918,18 @@ msgid "Saving..."
msgstr ""
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7567,10 +7707,12 @@ msgstr ""
msgid "Directions"
msgstr ""
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr ""
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr ""
@@ -7725,7 +7867,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr "शेवटचे अâ€à¥…निमेशन सेट करा. हे उप-संकà¥à¤°à¤®à¤£à¤¾à¤‚साठी उपयà¥à¤•à¥à¤¤ आहे."
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
+#, fuzzy
+msgid "Transition:"
msgstr "संकà¥à¤°à¤®à¤£: "
#: editor/plugins/animation_state_machine_editor.cpp
@@ -7742,11 +7885,6 @@ msgid "New name:"
msgstr "नवीन नाव:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "सà¥à¤•ेल:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr ""
@@ -8630,6 +8768,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr ""
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -8693,6 +8832,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -9434,7 +9577,7 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+msgid "Emission Source:"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
@@ -9664,6 +9807,7 @@ msgid "Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr ""
@@ -9817,13 +9961,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -9832,10 +9969,6 @@ msgstr ""
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -10521,13 +10654,17 @@ msgstr ""
msgid "Translate"
msgstr ""
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr ""
+#, fuzzy
+msgid "Scaling:"
+msgstr "सà¥à¤•ेल:"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "संकà¥à¤°à¤®à¤£: "
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -10550,11 +10687,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11029,7 +11161,7 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+msgid "Convert to MeshInstance2D"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11061,15 +11193,16 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "अâ€à¥…निमेशन टà¥à¤°à¥€"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11992,8 +12125,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr ""
@@ -13417,31 +13549,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr ""
@@ -13574,6 +13685,10 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Project Export"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr ""
@@ -15006,8 +15121,9 @@ msgid "Attach Node Script"
msgstr ""
#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr ""
+#, fuzzy
+msgid "Remote %s:"
+msgstr "नोड काढला"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -15827,7 +15943,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
msgid "Polygon"
msgstr ""
@@ -15988,7 +16104,7 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+msgid "Libraries:"
msgstr ""
#: modules/gdnative/nativescript/nativescript.cpp
@@ -16390,7 +16506,6 @@ msgid "Use In Baked Light"
msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -16419,6 +16534,19 @@ msgstr "नोड हलवा"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "संकà¥à¤°à¤®à¤£: "
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "नोड हलवा"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -16814,7 +16942,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -16822,7 +16950,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17184,7 +17312,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17192,7 +17320,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17347,11 +17475,11 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
+msgid "Invalid argument of type:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
+msgid "Invalid arguments:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
@@ -17363,11 +17491,11 @@ msgid "Var Name"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+msgid "VariableGet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+msgid "VariableSet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
@@ -17857,10 +17985,6 @@ msgid "Could not execute on device."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -17964,12 +18088,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "नोड जोडा"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -17985,6 +18113,10 @@ msgid "Could not find keystore, unable to export."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Could not start apksigner executable."
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -18013,7 +18145,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18024,19 +18156,17 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+msgid "Could not export project files to gradle project."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18049,7 +18179,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -18064,7 +18194,7 @@ msgid ""
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18072,15 +18202,12 @@ msgid "Creating APK..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -18090,7 +18217,7 @@ msgid "Adding files..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18316,6 +18443,15 @@ msgstr ""
msgid "Custom BG Color"
msgstr ""
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+msgid "Prepare Templates"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Export template not found."
+msgstr ""
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18337,19 +18473,29 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Could not open template for export: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
+msgstr "बेस पà¥à¤°à¤•ार %s साठी %s पà¥à¤°à¤•ाराची अवैध अनà¥à¤•à¥à¤°à¤®à¤£à¤¿à¤•ा"
+
+#: platform/javascript/export/export.cpp
+msgid "Could not write file: \"%s\"."
msgstr ""
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "अâ€à¥…निमेशन टà¥à¤°à¥€"
+
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not read file: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+msgid "PWA"
msgstr ""
#: platform/javascript/export/export.cpp
@@ -18422,15 +18568,15 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr ""
#: platform/javascript/export/export.cpp
@@ -18699,9 +18845,26 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Could not open icon file \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Could not start xcrun executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "अâ€à¥…निमेशन टà¥à¤°à¥€"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -18717,15 +18880,67 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
msgid "No identity found."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Cannot sign file %s."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "संकà¥à¤°à¤®à¤£: "
+
+#: platform/osx/export/export.cpp
+msgid "Could not start hdiutil executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Creating app bundle"
msgstr ""
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Invalid export format."
msgstr ""
#: platform/osx/export/export.cpp
@@ -18736,7 +18951,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -18777,6 +18992,15 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "अâ€à¥…निमेशन टà¥à¤°à¥€"
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr ""
@@ -19075,6 +19299,10 @@ msgid "Debug Algorithm"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Failed to rename temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -19115,6 +19343,63 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Resources Modification"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "बेस पà¥à¤°à¤•ार %s साठी %s पà¥à¤°à¤•ाराची अवैध अनà¥à¤•à¥à¤°à¤®à¤£à¤¿à¤•ा"
+
+#: platform/windows/export/export.cpp
+msgid "Invalid timestamp server."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Failed to remove temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19133,6 +19418,22 @@ msgid "Invalid product version:"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Failed to open executable file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Windows"
msgstr ""
@@ -19148,6 +19449,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
msgid "Frames"
@@ -19259,7 +19564,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
@@ -20029,15 +20335,19 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr ""
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "नोड हलवा"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "पà¥à¤°à¤µà¤¾à¤¸"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
msgid "Rotation Degrees"
@@ -21109,12 +21419,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -23507,6 +23811,16 @@ msgid "3D Physics"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "नोड हलवा"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "नोड हलवा"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -24769,7 +25083,7 @@ msgstr "संकà¥à¤°à¤®à¤£: "
msgid "Refraction"
msgstr "संकà¥à¤°à¤®à¤£: "
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -24843,8 +25157,14 @@ msgid "Visible Instance Count"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Sample Partition Type"
-msgstr ""
+#, fuzzy
+msgid "Sampling"
+msgstr "सà¥à¤•ेल:"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
+msgstr "संकà¥à¤°à¤®à¤£: "
#: scene/resources/navigation_mesh.cpp
msgid "Parsed Geometry Type"
@@ -24859,7 +25179,11 @@ msgid "Source Group Name"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
+msgid "Agents"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -24871,11 +25195,15 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+msgid "Regions"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -24888,6 +25216,10 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+msgid "Details"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -24904,7 +25236,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -25274,6 +25606,11 @@ msgid "Scenario"
msgstr ""
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "नोड हलवा"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -25289,6 +25626,26 @@ msgstr ""
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "मूलà¥à¤¯:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "बà¥à¤²à¥‡à¤‚ड टाइमà¥à¤¸:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "मूलà¥à¤¯:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "अâ€à¥…निमेशन टà¥à¤°à¥€"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/ms.po b/editor/translations/ms.po
index 02963f521b..3ef25ef863 100644
--- a/editor/translations/ms.po
+++ b/editor/translations/ms.po
@@ -16,7 +16,7 @@ msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-05-31 22:33+0000\n"
+"PO-Revision-Date: 2022-06-12 13:19+0000\n"
"Last-Translator: Keviindran Ramachandran <keviinx@yahoo.com>\n"
"Language-Team: Malay <https://hosted.weblate.org/projects/godot-engine/godot/"
"ms/>\n"
@@ -28,7 +28,6 @@ msgstr ""
"X-Generator: Weblate 4.13-dev\n"
#: core/bind/core_bind.cpp main/main.cpp
-#, fuzzy
msgid "Tablet Driver"
msgstr "Pemacu Tablet"
@@ -91,34 +90,32 @@ msgstr "Tanpa sempadan"
#: core/bind/core_bind.cpp
msgid "Per Pixel Transparency Enabled"
-msgstr ""
+msgstr "Ketelusan Per Piksel Didayakan"
#: core/bind/core_bind.cpp core/project_settings.cpp
-#, fuzzy
msgid "Fullscreen"
-msgstr "Togol Skrin Penuh"
+msgstr "Skrin penuh"
#: core/bind/core_bind.cpp
msgid "Maximized"
-msgstr ""
+msgstr "Dimaksimumkan"
#: core/bind/core_bind.cpp
msgid "Minimized"
-msgstr ""
+msgstr "Diminimumkan"
#: core/bind/core_bind.cpp core/project_settings.cpp scene/gui/dialogs.cpp
#: scene/gui/graph_node.cpp
msgid "Resizable"
-msgstr ""
+msgstr "Boleh diubah saiz"
#: core/bind/core_bind.cpp core/os/input_event.cpp scene/2d/node_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/remote_transform_2d.cpp
#: scene/3d/physics_body.cpp scene/3d/remote_transform.cpp
#: scene/gui/control.cpp scene/gui/line_edit.cpp
#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Position"
-msgstr "Kedudukan Dok"
+msgstr "Kedudukan"
#: core/bind/core_bind.cpp core/project_settings.cpp editor/editor_settings.cpp
#: main/main.cpp modules/gridmap/grid_map.cpp
@@ -129,63 +126,56 @@ msgstr "Kedudukan Dok"
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
#: scene/resources/visual_shader.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Size"
-msgstr "Saiz:"
+msgstr "Saiz"
#: core/bind/core_bind.cpp
msgid "Endian Swap"
-msgstr ""
+msgstr "Endian Swap"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Editor Hint"
-msgstr "Editor"
+msgstr "Petunjuk Editor"
#: core/bind/core_bind.cpp
msgid "Print Error Messages"
-msgstr ""
+msgstr "Cetak Mesej Ralat"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Iterations Per Second"
-msgstr "Mod Interpolasi"
+msgstr "Lelaran Sesaat"
#: core/bind/core_bind.cpp
msgid "Target FPS"
-msgstr ""
+msgstr "FPS Sasaran"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Time Scale"
-msgstr "Nod TimeScale"
+msgstr "Skala Masa"
#: core/bind/core_bind.cpp main/main.cpp
-#, fuzzy
msgid "Physics Jitter Fix"
-msgstr "Bingkai Fizik %"
+msgstr "Betulkan Fizik Jitter"
#: core/bind/core_bind.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Error"
-msgstr ""
+msgstr "Ralat"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Error String"
-msgstr "Ralat semasa memindahkan:"
+msgstr "Ralat String"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Error Line"
-msgstr "Ralat semasa memindahkan:"
+msgstr "Baris Ralat"
#: core/bind/core_bind.cpp
msgid "Result"
-msgstr ""
+msgstr "Hasil"
#: core/command_queue_mt.cpp core/message_queue.cpp main/main.cpp
msgid "Memory"
-msgstr ""
+msgstr "Memori"
#: core/command_queue_mt.cpp core/message_queue.cpp
#: core/register_core_types.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
@@ -196,127 +186,119 @@ msgstr ""
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
#: servers/visual_server.cpp
msgid "Limits"
-msgstr ""
+msgstr "Had-had"
#: core/command_queue_mt.cpp
msgid "Command Queue"
-msgstr ""
+msgstr "Barisan Perintah"
#: core/command_queue_mt.cpp
msgid "Multithreading Queue Size (KB)"
-msgstr ""
+msgstr "Saiz Baris Multithreading (KB)"
#: core/func_ref.cpp modules/visual_script/visual_script_builtin_funcs.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: scene/resources/visual_shader_nodes.cpp
-#, fuzzy
msgid "Function"
msgstr "Fungsi"
#: core/image.cpp core/packed_data_container.cpp scene/2d/polygon_2d.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
msgid "Data"
-msgstr ""
+msgstr "Data"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
-msgstr ""
+msgstr "Rangkaian"
#: core/io/file_access_network.cpp
-#, fuzzy
msgid "Remote FS"
-msgstr "Keluarkan"
+msgstr "FS Jauh"
#: core/io/file_access_network.cpp
-#, fuzzy
msgid "Page Size"
-msgstr "Halaman: "
+msgstr "Saiz Halaman"
#: core/io/file_access_network.cpp
msgid "Page Read Ahead"
-msgstr ""
+msgstr "Halaman Baca Di Hadapan"
#: core/io/http_client.cpp
msgid "Blocking Mode Enabled"
-msgstr ""
+msgstr "Mod Penyekatan Didayakan"
#: core/io/http_client.cpp
-#, fuzzy
msgid "Connection"
-msgstr "Sambung"
+msgstr "Sambungan"
#: core/io/http_client.cpp
msgid "Read Chunk Size"
-msgstr ""
+msgstr "Baca Saiz Chunk"
#: core/io/marshalls.cpp
msgid "Object ID"
-msgstr ""
+msgstr "ID Objek"
#: core/io/multiplayer_api.cpp core/io/packet_peer.cpp
-#, fuzzy
msgid "Allow Object Decoding"
-msgstr "Aktifkan Kulit Bawang"
+msgstr "Benarkan Penyahkodan Objek"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
msgid "Refuse New Network Connections"
-msgstr ""
+msgstr "Tolak Sambungan Rangkaian Baharu"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
msgid "Network Peer"
-msgstr ""
+msgstr "Rakan Rangkaian"
#: core/io/multiplayer_api.cpp scene/animation/animation_player.cpp
-#, fuzzy
msgid "Root Node"
-msgstr "Nod OneShot"
+msgstr "Nod Akar"
#: core/io/networked_multiplayer_peer.cpp
-#, fuzzy
msgid "Refuse New Connections"
-msgstr "Sambung"
+msgstr "Tolak Sambungan Baharu"
#: core/io/networked_multiplayer_peer.cpp
-#, fuzzy
msgid "Transfer Mode"
-msgstr "Mod Pan"
+msgstr "Mod Pemindahan"
#: core/io/packet_peer.cpp
msgid "Encode Buffer Max Size"
-msgstr ""
+msgstr "Saiz Maks Encode Buffer"
#: core/io/packet_peer.cpp
msgid "Input Buffer Max Size"
-msgstr ""
+msgstr "Saiz Maks Input Buffer"
#: core/io/packet_peer.cpp
msgid "Output Buffer Max Size"
-msgstr ""
+msgstr "Saiz Maks Output Buffer"
#: core/io/packet_peer.cpp
msgid "Stream Peer"
-msgstr ""
+msgstr "Rakan Strim"
#: core/io/stream_peer.cpp
msgid "Big Endian"
-msgstr ""
+msgstr "Endian Besar"
#: core/io/stream_peer.cpp
msgid "Data Array"
-msgstr ""
+msgstr "Data Array"
#: core/io/stream_peer_ssl.cpp
msgid "Blocking Handshake"
-msgstr ""
+msgstr "Menyekat Handshake"
#: core/io/udp_server.cpp
-#, fuzzy
msgid "Max Pending Connections"
-msgstr "Edit Sambungan:"
+msgstr "Sambungan Tertunda Maks"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -334,12 +316,12 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Bait tidak mencukupi untuk menyahkod bait, atau format tidak sah."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
-msgstr "Input %i tidak sah (tidak lulus) dalam ungkapan"
+msgid "Invalid input %d (not passed) in expression"
+msgstr "Input %d tidak sah (tidak lulus) dalam ungkapan"
#: core/math/expression.cpp
msgid "self can't be used because instance is null (not passed)"
-msgstr "self tidak boleh digunakan kerana instance adalah null (tidak lulus)"
+msgstr "self tidak boleh digunakan kerana contol adalah null (tidak lulus)"
#: core/math/expression.cpp
msgid "Invalid operands to operator %s, %s and %s."
@@ -364,130 +346,128 @@ msgstr "Atas panggilan ke '%s':"
#: core/math/random_number_generator.cpp
#: modules/opensimplex/open_simplex_noise.cpp
msgid "Seed"
-msgstr ""
+msgstr "Benih"
#: core/math/random_number_generator.cpp
-#, fuzzy
msgid "State"
-msgstr "Status"
+msgstr "Keadaan"
#: core/message_queue.cpp
msgid "Message Queue"
-msgstr ""
+msgstr "Barisan Mesej"
#: core/message_queue.cpp
msgid "Max Size (KB)"
-msgstr ""
+msgstr "Saiz Maksimum (KB)"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Mod Alih"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "Padam Input"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
-msgstr ""
+msgstr "Peranti"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Alt"
-msgstr "Semua"
+msgstr "Alt"
#: core/os/input_event.cpp
msgid "Shift"
-msgstr ""
+msgstr "Shift"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Control"
-msgstr "Kawalan Versi"
+msgstr "Kawalan"
#: core/os/input_event.cpp
msgid "Meta"
-msgstr ""
+msgstr "Meta"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Command"
-msgstr "Komuniti"
+msgstr "Perintah"
#: core/os/input_event.cpp scene/2d/touch_screen_button.cpp
#: scene/gui/base_button.cpp scene/gui/texture_button.cpp
#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Pressed"
-msgstr "Pratetap"
+msgstr "Ditekan"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Scancode"
-msgstr "Sumber Imbas"
+msgstr "Kod imbasan"
#: core/os/input_event.cpp
msgid "Physical Scancode"
-msgstr ""
+msgstr "Kod Imbasan Fizikal"
#: core/os/input_event.cpp
msgid "Unicode"
-msgstr ""
+msgstr "Unicode"
#: core/os/input_event.cpp
msgid "Echo"
-msgstr ""
+msgstr "Gema"
#: core/os/input_event.cpp scene/gui/base_button.cpp
-#, fuzzy
msgid "Button Mask"
-msgstr "Butang X 1"
+msgstr "Mask Butang"
#: core/os/input_event.cpp scene/2d/node_2d.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Global Position"
-msgstr "Pemalar"
+msgstr "Kedudukan Global"
#: core/os/input_event.cpp
msgid "Factor"
-msgstr ""
+msgstr "Faktor"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Button Index"
-msgstr "Butang X 1"
+msgstr "Indeks Butang"
#: core/os/input_event.cpp
msgid "Doubleclick"
-msgstr ""
+msgstr "Klik dua kali"
#: core/os/input_event.cpp
msgid "Tilt"
-msgstr ""
+msgstr "Tilt"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Pressure"
-msgstr "Pratetap"
+msgstr "Tekanan"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Relative"
-msgstr "Snap Relatif"
+msgstr "Relatif"
#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
#: scene/animation/animation_player.cpp scene/resources/environment.cpp
#: scene/resources/particles_material.cpp
msgid "Speed"
-msgstr ""
+msgstr "Kelajuan"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: scene/3d/sprite_3d.cpp
msgid "Axis"
-msgstr ""
+msgstr "Paksi"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Axis Value"
-msgstr "Nilai pin"
+msgstr "Nilai Paksi"
#: core/os/input_event.cpp modules/visual_script/visual_script_func_nodes.cpp
msgid "Index"
-msgstr ""
+msgstr "Indeks"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_nodes.cpp
@@ -498,61 +478,55 @@ msgstr "Aksi"
#: core/os/input_event.cpp scene/resources/environment.cpp
#: scene/resources/material.cpp
msgid "Strength"
-msgstr ""
+msgstr "Kekuatan"
#: core/os/input_event.cpp
msgid "Delta"
-msgstr ""
+msgstr "Delta"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Channel"
-msgstr "Ubah"
+msgstr "Saluran"
#: core/os/input_event.cpp main/main.cpp
-#, fuzzy
msgid "Message"
-msgstr "Komuniti"
+msgstr "Mesej"
#: core/os/input_event.cpp
msgid "Pitch"
-msgstr ""
+msgstr "Pitch"
#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
-msgstr ""
+msgstr "Kelajuan"
#: core/os/input_event.cpp
msgid "Instrument"
-msgstr ""
+msgstr "Instrumen"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Controller Number"
-msgstr "Nombor Baris:"
+msgstr "Nombor Pengawal"
#: core/os/input_event.cpp
msgid "Controller Value"
-msgstr ""
+msgstr "Nilai Pengawal"
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
#: platform/windows/export/export.cpp
-#, fuzzy
msgid "Application"
-msgstr "Aksi"
+msgstr "Aplikasi"
#: core/project_settings.cpp main/main.cpp
-#, fuzzy
msgid "Config"
-msgstr "Konfigurasikan Snap"
+msgstr "Konfigurasi"
#: core/project_settings.cpp
-#, fuzzy
msgid "Project Settings Override"
-msgstr "Tetapan Projek..."
+msgstr "Penggantian Tetapan Projek"
#: core/project_settings.cpp core/resource.cpp
#: editor/animation_track_editor.cpp editor/editor_autoload_settings.cpp
@@ -575,49 +549,47 @@ msgstr "Keterangan"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
-msgstr ""
+msgstr "Jalankan"
#: core/project_settings.cpp editor/editor_node.cpp
#: editor/run_settings_dialog.cpp main/main.cpp
msgid "Main Scene"
-msgstr ""
+msgstr "Adegan Utama"
#: core/project_settings.cpp
-#, fuzzy
msgid "Disable stdout"
-msgstr "Tidak Aktif"
+msgstr "Lumpuhkan stdout"
#: core/project_settings.cpp
-#, fuzzy
msgid "Disable stderr"
-msgstr "Tidak Aktif"
+msgstr "Lumpuhkan stderr"
#: core/project_settings.cpp
msgid "Use Hidden Project Data Directory"
-msgstr ""
+msgstr "Gunakan Direktori Data Projek Tersembunyi"
#: core/project_settings.cpp
msgid "Use Custom User Dir"
-msgstr ""
+msgstr "Guna Dir Pengguna Tersuai"
#: core/project_settings.cpp
msgid "Custom User Dir Name"
-msgstr ""
+msgstr "Nama Dir Pengguna Tersuai"
#: core/project_settings.cpp main/main.cpp
#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
#: platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Display"
-msgstr "Paparkan Semua"
+msgstr "Paparan"
#: core/project_settings.cpp main/main.cpp modules/csg/csg_shape.cpp
#: modules/opensimplex/noise_texture.cpp scene/2d/line_2d.cpp
#: scene/3d/label_3d.cpp scene/gui/text_edit.cpp scene/resources/texture.cpp
msgid "Width"
-msgstr ""
+msgstr "Lebar"
#: core/project_settings.cpp main/main.cpp modules/csg/csg_shape.cpp
#: modules/gltf/gltf_node.cpp modules/opensimplex/noise_texture.cpp
@@ -626,21 +598,19 @@ msgstr ""
#: scene/resources/font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/texture.cpp
msgid "Height"
-msgstr ""
+msgstr "Tinggi"
#: core/project_settings.cpp
msgid "Always On Top"
-msgstr ""
+msgstr "Sentiasa Di Atas"
#: core/project_settings.cpp
-#, fuzzy
msgid "Test Width"
-msgstr "Kiri Lebar"
+msgstr "Uji Lebar"
#: core/project_settings.cpp
-#, fuzzy
msgid "Test Height"
-msgstr "Menguji"
+msgstr "Uji Tinggi"
#: core/project_settings.cpp editor/animation_track_editor.cpp
#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
@@ -648,9 +618,8 @@ msgid "Audio"
msgstr "Audio"
#: core/project_settings.cpp
-#, fuzzy
msgid "Default Bus Layout"
-msgstr "Muatkan Susun Atur Bas lalai."
+msgstr "Susun Atur Bas Lalai"
#: core/project_settings.cpp editor/editor_export.cpp
#: editor/editor_file_system.cpp editor/editor_node.cpp
@@ -661,96 +630,87 @@ msgstr "Editor"
#: core/project_settings.cpp
msgid "Main Run Args"
-msgstr ""
+msgstr "Jalan Utama Args"
+
+#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Laluan Adegan:"
#: core/project_settings.cpp
msgid "Search In File Extensions"
-msgstr ""
+msgstr "Cari Dalam Sambungan Fail"
#: core/project_settings.cpp
msgid "Script Templates Search Path"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Kawalan Versi"
+msgstr "Laluan Carian Templat Skrip"
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Muatkan Automatik Semasa Permulaan"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Nama Plugin:"
+msgid "Version Control Plugin Name"
+msgstr "Kawalan Versi"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Input"
-msgstr "Tambah Input"
+msgstr "Input"
#: core/project_settings.cpp
msgid "UI Accept"
-msgstr ""
+msgstr "UI Terima"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Select"
-msgstr "Pilih"
+msgstr "UI Pilih"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Cancel"
-msgstr "Batal"
+msgstr "UI Batal"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Focus Next"
-msgstr "Laluan Fokus"
+msgstr "Fokus UI Seterusnya"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Focus Prev"
-msgstr "Laluan Fokus"
+msgstr "Fokus UI Sebelumnya"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Left"
-msgstr "Atas Kiri"
+msgstr "UI Kiri"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Right"
-msgstr "Atas Kanan"
+msgstr "UI Kanan"
#: core/project_settings.cpp
msgid "UI Up"
-msgstr ""
+msgstr "UI Atas"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Down"
-msgstr "Bawah"
+msgstr "UI Bawah"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Page Up"
-msgstr "Halaman: "
+msgstr "UI Halaman Atas"
#: core/project_settings.cpp
msgid "UI Page Down"
-msgstr ""
+msgstr "UI Halaman Bawah"
#: core/project_settings.cpp
msgid "UI Home"
-msgstr ""
+msgstr "UI Laman Utama"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI End"
-msgstr "Pada Akhir"
+msgstr "UI Akhir"
#: core/project_settings.cpp main/main.cpp modules/bullet/register_types.cpp
#: modules/bullet/space_bullet.cpp scene/2d/physics_body_2d.cpp
@@ -760,9 +720,8 @@ msgstr "Pada Akhir"
#: servers/physics_2d/physics_2d_server_wrap_mt.h
#: servers/physics_2d/space_2d_sw.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
-#, fuzzy
msgid "Physics"
-msgstr "Bingkai Fizik %"
+msgstr "Fizik"
#: core/project_settings.cpp editor/editor_settings.cpp
#: editor/import/resource_importer_layered_texture.cpp
@@ -772,11 +731,11 @@ msgstr "Bingkai Fizik %"
#: scene/3d/physics_body.cpp scene/resources/world.cpp
#: servers/physics/space_sw.cpp servers/physics_server.cpp
msgid "3D"
-msgstr ""
+msgstr "3D"
#: core/project_settings.cpp
msgid "Smooth Trimesh Collision"
-msgstr ""
+msgstr "Perlanggaran Trimesh Lancar"
#: core/project_settings.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles2/rasterizer_scene_gles2.cpp
@@ -788,7 +747,7 @@ msgstr ""
#: scene/main/viewport.cpp servers/visual/visual_server_scene.cpp
#: servers/visual_server.cpp
msgid "Rendering"
-msgstr ""
+msgstr "Render"
#: core/project_settings.cpp drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_scene_gles3.cpp
@@ -798,17 +757,17 @@ msgstr ""
#: scene/resources/multimesh.cpp servers/visual/visual_server_scene.cpp
#: servers/visual_server.cpp
msgid "Quality"
-msgstr ""
+msgstr "Kualiti"
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
-#, fuzzy
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
msgid "Filters"
-msgstr "Penapis:"
+msgstr "Penapis"
#: core/project_settings.cpp scene/main/viewport.cpp
msgid "Sharpen Intensity"
-msgstr ""
+msgstr "Tajamkan Intensiti"
#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
@@ -824,85 +783,81 @@ msgstr "Nyahpepijat"
#: core/project_settings.cpp main/main.cpp modules/gdscript/gdscript.cpp
#: modules/visual_script/visual_script.cpp scene/resources/dynamic_font.cpp
-#, fuzzy
msgid "Settings"
-msgstr "Menguji"
+msgstr "Tetapan"
#: core/project_settings.cpp editor/script_editor_debugger.cpp main/main.cpp
#: modules/mono/mono_gd/gd_mono.cpp
msgid "Profiler"
-msgstr ""
+msgstr "Profiler"
#: core/project_settings.cpp
-#, fuzzy
msgid "Max Functions"
-msgstr "Buat Fungsi"
+msgstr "Fungsi Maks"
#: core/project_settings.cpp scene/3d/vehicle_body.cpp
msgid "Compression"
-msgstr ""
+msgstr "Mampatan"
#: core/project_settings.cpp
msgid "Formats"
-msgstr ""
+msgstr "Format"
#: core/project_settings.cpp
msgid "Zstd"
-msgstr ""
+msgstr "Zstd"
#: core/project_settings.cpp
msgid "Long Distance Matching"
-msgstr ""
+msgstr "Padanan Jarak Jauh"
#: core/project_settings.cpp
msgid "Compression Level"
-msgstr ""
+msgstr "Tahap Mampatan"
#: core/project_settings.cpp
msgid "Window Log Size"
-msgstr ""
+msgstr "Saiz Tetingkap Log"
#: core/project_settings.cpp
msgid "Zlib"
-msgstr ""
+msgstr "Zlib"
#: core/project_settings.cpp
msgid "Gzip"
-msgstr ""
+msgstr "Gzip"
#: core/project_settings.cpp platform/android/export/export.cpp
msgid "Android"
-msgstr ""
+msgstr "Android"
#: core/project_settings.cpp
msgid "Modules"
-msgstr ""
+msgstr "Modul"
#: core/register_core_types.cpp
msgid "TCP"
-msgstr ""
+msgstr "TCP"
#: core/register_core_types.cpp
-#, fuzzy
msgid "Connect Timeout Seconds"
-msgstr "Sambung ke Nod:"
+msgstr "Sambungkan Masa Tamat Saat"
#: core/register_core_types.cpp
msgid "Packet Peer Stream"
-msgstr ""
+msgstr "Aliran Rakan Sebaya Paket"
#: core/register_core_types.cpp
msgid "Max Buffer (Power of 2)"
-msgstr ""
+msgstr "Buffer Maksimum (Kuasa 2)"
#: core/register_core_types.cpp editor/editor_settings.cpp main/main.cpp
msgid "SSL"
-msgstr ""
+msgstr "SSL"
#: core/register_core_types.cpp main/main.cpp
-#, fuzzy
msgid "Certificates"
-msgstr "Bucu:"
+msgstr "Sijil"
#: core/resource.cpp editor/dependency_editor.cpp
#: editor/editor_resource_picker.cpp
@@ -911,9 +866,8 @@ msgid "Resource"
msgstr "Sumber"
#: core/resource.cpp
-#, fuzzy
msgid "Local To Scene"
-msgstr "Tutup Adegan"
+msgstr "Tempatan Ke Adegan"
#: core/resource.cpp editor/dependency_editor.cpp
#: editor/editor_autoload_settings.cpp editor/plugins/path_editor_plugin.cpp
@@ -924,20 +878,19 @@ msgstr "Laluan"
#: core/script_language.cpp
msgid "Source Code"
-msgstr ""
+msgstr "Kod Sumber"
#: core/translation.cpp editor/project_settings_editor.cpp
msgid "Locale"
-msgstr ""
+msgstr "Tempatan"
#: core/translation.cpp
-#, fuzzy
msgid "Test"
-msgstr "Menguji"
+msgstr "Ujian"
#: core/translation.cpp scene/resources/font.cpp
msgid "Fallback"
-msgstr ""
+msgstr "Fallback"
#: core/ustring.cpp scene/resources/segment_shape_2d.cpp
msgid "B"
@@ -973,17 +926,17 @@ msgstr "EiB"
#: drivers/gles3/rasterizer_scene_gles3.cpp
#: drivers/gles3/rasterizer_storage_gles3.cpp modules/gltf/gltf_state.cpp
msgid "Buffers"
-msgstr ""
+msgstr "Penampan"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
msgid "Canvas Polygon Buffer Size (KB)"
-msgstr ""
+msgstr "Saiz Penampan Poligon Kanvas (KB)"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
msgid "Canvas Polygon Index Buffer Size (KB)"
-msgstr ""
+msgstr "Saiz Penampan Indeks Poligon Kanvas (KB)"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp editor/editor_settings.cpp
@@ -995,56 +948,52 @@ msgstr ""
#: servers/physics_2d/space_2d_sw.cpp servers/physics_2d_server.cpp
#: servers/visual_server.cpp
msgid "2D"
-msgstr ""
+msgstr "2D"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-#, fuzzy
msgid "Snapping"
-msgstr "Snap Pintar"
+msgstr "Snapping"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-#, fuzzy
msgid "Use GPU Pixel Snap"
-msgstr "Gunakan Pixel Snap"
+msgstr "Gunakan Snap Piksel GPU"
#: drivers/gles2/rasterizer_scene_gles2.cpp
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Immediate Buffer Size (KB)"
-msgstr ""
+msgstr "Saiz Penampan Segera (KB)"
#: drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_storage_gles3.cpp
-#, fuzzy
msgid "Lightmapping"
-msgstr "Bake Lightmap"
+msgstr "Pemetaan cahaya"
#: drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_storage_gles3.cpp
msgid "Use Bicubic Sampling"
-msgstr ""
+msgstr "Gunakan Persampelan Bicubic"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Renderable Elements"
-msgstr ""
+msgstr "Elemen Boleh Render Maks"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Renderable Lights"
-msgstr ""
+msgstr "Lampu Boleh Render Maks"
#: drivers/gles3/rasterizer_scene_gles3.cpp
-#, fuzzy
msgid "Max Renderable Reflections"
-msgstr "Pemilihan Pusat"
+msgstr "Refleksi Maks Boleh Render"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Lights Per Object"
-msgstr ""
+msgstr "Lampu Maks Setiap Objek"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Subsurface Scattering"
-msgstr ""
+msgstr "Scattering Subpermukaan"
#: drivers/gles3/rasterizer_scene_gles3.cpp editor/animation_track_editor.cpp
#: editor/import/resource_importer_texture.cpp
@@ -1057,28 +1006,29 @@ msgstr ""
#: scene/main/canvas_layer.cpp scene/resources/environment.cpp
#: scene/resources/material.cpp scene/resources/particles_material.cpp
msgid "Scale"
-msgstr ""
+msgstr "Skala"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Follow Surface"
-msgstr ""
+msgstr "Ikut Permukaan"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Weight Samples"
-msgstr ""
+msgstr "Sampel Berat"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Voxel Cone Tracing"
-msgstr ""
+msgstr "Pengesanan Kon Voxel"
#: drivers/gles3/rasterizer_scene_gles3.cpp scene/resources/environment.cpp
msgid "High Quality"
-msgstr ""
+msgstr "Kualiti Tinggi"
#: drivers/gles3/rasterizer_storage_gles3.cpp
msgid "Blend Shape Max Buffer Size (KB)"
-msgstr ""
+msgstr "Saiz Penampan Maks Bentuk Campuran (KB)"
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Bebas"
@@ -1095,7 +1045,7 @@ msgstr "Cermin"
msgid "Time:"
msgstr "Masa:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Nilai:"
@@ -1150,9 +1100,8 @@ msgstr "Anim Ubah Panggilan"
#: editor/animation_track_editor.cpp scene/2d/animated_sprite.cpp
#: scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Frame"
-msgstr "Bingkai %"
+msgstr "Bingkai"
#: editor/animation_track_editor.cpp editor/editor_profiler.cpp
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
@@ -1163,65 +1112,58 @@ msgstr "Masa"
#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: platform/osx/export/export.cpp
-#, fuzzy
msgid "Location"
-msgstr "Langkah Putaran:"
+msgstr "Lokasi"
#: editor/animation_track_editor.cpp modules/gltf/gltf_node.cpp
#: scene/2d/polygon_2d.cpp scene/2d/remote_transform_2d.cpp
#: scene/3d/remote_transform.cpp scene/3d/spatial.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Rotation"
-msgstr "Langkah Putaran:"
+msgstr "Putaran"
#: editor/animation_track_editor.cpp editor/script_editor_debugger.cpp
#: modules/visual_script/visual_script_nodes.cpp scene/gui/range.cpp
msgid "Value"
-msgstr ""
+msgstr "Nilai"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Arg Count"
-msgstr "Jumlah:"
+msgstr "Kiraan Arg"
#: editor/animation_track_editor.cpp main/main.cpp
#: modules/mono/mono_gd/gd_mono.cpp
msgid "Args"
-msgstr ""
+msgstr "Args"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
#: editor/script_editor_debugger.cpp modules/gltf/gltf_accessor.cpp
#: modules/gltf/gltf_light.cpp modules/visual_script/visual_script_nodes.cpp
#: scene/3d/physics_body.cpp scene/resources/visual_shader_nodes.cpp
msgid "Type"
-msgstr ""
+msgstr "Jenis"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "In Handle"
-msgstr "Tetapkan Pemegang"
+msgstr "Dalam Pemegang"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Out Handle"
-msgstr "Tetapkan Pemegang"
+msgstr "Keluar Pemegang"
#: editor/animation_track_editor.cpp
#: editor/import/resource_importer_texture.cpp
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
msgid "Stream"
-msgstr ""
+msgstr "Aliran"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Start Offset"
-msgstr "Grid Offset:"
+msgstr "Mulakan Offset"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "End Offset"
-msgstr "Grid Offset:"
+msgstr "Tamat Offset"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
#: editor/import/resource_importer_scene.cpp
@@ -1235,7 +1177,7 @@ msgstr "Animasi"
#: editor/animation_track_editor.cpp
msgid "Easing"
-msgstr ""
+msgstr "Pelonggaran"
#: editor/animation_track_editor.cpp
msgid "Anim Multi Change Keyframe Time"
@@ -1344,8 +1286,62 @@ msgid "Remove this track."
msgstr "Keluarkan trek ini."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
-msgstr "Masa (s): "
+msgid "Time (s):"
+msgstr "Masa (s):"
+
+#: editor/animation_track_editor.cpp
+msgid "Position:"
+msgstr "Kedudukan:"
+
+#: editor/animation_track_editor.cpp
+msgid "Rotation:"
+msgstr "Putaran:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "Skala:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "Jenis:"
+
+#: editor/animation_track_editor.cpp
+msgid "(Invalid, expected type: %s)"
+msgstr "(Tidak sah, jenis dijangka: %s)"
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr "Pelonggaran:"
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr "Dalam-Pemegang:"
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr "Keluar-Pemegang:"
+
+#: editor/animation_track_editor.cpp
+msgid "Stream:"
+msgstr "Aliran:"
+
+#: editor/animation_track_editor.cpp
+msgid "Start (s):"
+msgstr "Mula (s):"
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr "Tamat (s):"
+
+#: editor/animation_track_editor.cpp
+msgid "Animation Clip:"
+msgstr "Klip Animasi:"
#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
@@ -1429,14 +1425,12 @@ msgstr "Keluarkan Trek Anim"
#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Editors"
msgstr "Editor"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Confirm Insert Track"
-msgstr "Anim Masukkan Trek & Kunci"
+msgstr "Sahkan Sisipkan Trek"
#. TRANSLATORS: %s will be replaced by a phrase describing the target of track.
#: editor/animation_track_editor.cpp
@@ -1560,8 +1554,8 @@ msgid "Add Method Track Key"
msgstr "Tambah Kunci Trek Kaedah"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
-msgstr "Kaedah tidak ditemui dalam objek: "
+msgid "Method not found in object:"
+msgstr "Kaedah tidak ditemui dalam objek:"
#: editor/animation_track_editor.cpp
msgid "Anim Move Keys"
@@ -2174,8 +2168,8 @@ msgid "Open"
msgstr "Buka"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Pemilik:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
msgid ""
@@ -2478,7 +2472,7 @@ msgid "Bus Options"
msgstr "Pilihan Bas"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Pendua"
@@ -2530,8 +2524,9 @@ msgstr "Buka Susun Atur Bas Audio"
msgid "There is no '%s' file."
msgstr "Tiada fail '%s'."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "Susun atur"
#: editor/editor_audio_buses.cpp
@@ -2736,6 +2731,24 @@ msgid "Choose"
msgstr "Pilih"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "Pakej berjaya dipasang!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "Gagal:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Menyimpan Fail:"
@@ -2748,6 +2761,31 @@ msgid "Packing"
msgstr "Pembungkusan"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Simpan sebagai"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "Tidak dapat mencipta folder."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Tidak dapat mengeksport fail projek"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Tidak dapat membuka fail untuk ditulis:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Simpan sebagai"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2868,11 +2906,31 @@ msgstr "Templat nyahpepijat tersuai tidak dijumpai."
msgid "Custom release template not found."
msgstr "Templat pelepasan tersuai tidak dijumpai."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "Urus Templat-templat"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "The given export path doesn't exist."
+msgstr ""
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "Fail templat tidak dijumpai:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "Tidak dapat membuka fail templat eksport."
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr ""
"Pada eksport 32-bit PCK terbenam tidak boleh lebih besar daripada 4 GiB."
@@ -3044,12 +3102,12 @@ msgstr "Buat Semasa"
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
#: modules/fbx/editor_scene_importer_fbx.cpp
msgid "Import"
-msgstr "import"
+msgstr "Import"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Eksport"
@@ -4212,15 +4270,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Adegan"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Laluan Adegan:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4348,6 +4397,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Kawalan Versi"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Namakan Semula"
@@ -4376,6 +4429,10 @@ msgstr "Togol mod bebas gangguan."
msgid "Add a new scene."
msgstr "Tambah adegan baru."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Adegan"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Pergi ke adegan yang dibuka sebelum ini."
@@ -5064,11 +5121,14 @@ msgid "Selected node is not a Viewport!"
msgstr "Node yang dipilih bukan Viewport!"
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr "Saiz: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
+msgstr "Saiz:"
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+#, fuzzy
+msgid "Page:"
msgstr "Halaman: "
#: editor/editor_properties_array_dict.cpp
@@ -5169,6 +5229,11 @@ msgstr ""
"Sila tambah pratetap yang dapat dijalankan di menu Eksport atau tentukan "
"pratetap yang ada sebagai yang dapat dijalankan."
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Projek"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Tulis logik anda dalam kaedah _run()."
@@ -5444,7 +5509,9 @@ msgid "Draw Spaces"
msgstr "Cabutan Panggilan:"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr ""
@@ -6022,10 +6089,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -6779,14 +6848,6 @@ msgid "Replace in Files"
msgstr "Gantikan dalam Fail-fail"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "Cari: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "Ganti: "
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr "Gantikan Semua (TIADA BUAT ASAL)"
@@ -6915,7 +6976,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Penapis:"
@@ -7180,7 +7241,8 @@ msgid "Generating Lightmaps"
msgstr "Menjana Peta Cahaya"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+#, fuzzy
+msgid "Generating for Mesh:"
msgstr "Menjana untuk Mesh: "
#: editor/import/resource_importer_scene.cpp
@@ -7210,6 +7272,18 @@ msgid "Saving..."
msgstr "Menyimpan..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -8020,10 +8094,12 @@ msgstr "Pilihan Kulit Bawang"
msgid "Directions"
msgstr "Arah"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "Sebelum"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "Masa depan"
@@ -8182,7 +8258,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr "Tetapkan hujung animasi. Ini adalah berguna untuk sub-peralihan."
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
+#, fuzzy
+msgid "Transition:"
msgstr "Peralihan: "
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8199,11 +8276,6 @@ msgid "New name:"
msgstr "Nama baru:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "Skala:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "Pudar Masuk (s):"
@@ -9112,6 +9184,7 @@ msgstr "Buat Tulang(-tulang) Tersuai dari Nod(-nod)"
msgid "Clear Custom Bones"
msgstr "Kosongkan Tulang Tersuai"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9177,6 +9250,10 @@ msgid "Preview Canvas Scale"
msgstr "Pratonton Skala Kanvas"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "Susun atur"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr "Topeng terjemahan untuk memasukkan kekunci."
@@ -9928,8 +10005,9 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr ""
+#, fuzzy
+msgid "Emission Source:"
+msgstr "Topeng Emission"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
@@ -10158,6 +10236,7 @@ msgid "Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr ""
@@ -10311,13 +10390,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -10326,10 +10398,6 @@ msgstr ""
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -11029,13 +11097,17 @@ msgstr ""
msgid "Translate"
msgstr ""
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr ""
+#, fuzzy
+msgid "Scaling:"
+msgstr "Skala:"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "Peralihan: "
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -11058,11 +11130,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr "Saiz:"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11543,8 +11610,9 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
-msgstr ""
+#, fuzzy
+msgid "Convert to MeshInstance2D"
+msgstr "Tukar ke %s"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Invalid geometry, can't create polygon."
@@ -11575,16 +11643,19 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "Aksi"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
-msgstr ""
+#, fuzzy
+msgid "Shrink (Pixels):"
+msgstr "Piksel Pepejal"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
-msgstr ""
+#, fuzzy
+msgid "Grow (Pixels):"
+msgstr "Piksel Pepejal"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Update Preview"
@@ -12560,8 +12631,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr ""
@@ -14017,31 +14087,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr ""
@@ -14180,6 +14229,11 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Pengasas Projek"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr ""
@@ -15629,8 +15683,9 @@ msgid "Attach Node Script"
msgstr ""
#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr ""
+#, fuzzy
+msgid "Remote %s:"
+msgstr "Keluarkan"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -16490,7 +16545,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "Semua Pilihan"
@@ -16664,7 +16719,7 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+msgid "Libraries:"
msgstr ""
#: modules/gdnative/nativescript/nativescript.cpp
@@ -17097,7 +17152,6 @@ msgid "Use In Baked Light"
msgstr "Bake Lightmap"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17127,6 +17181,19 @@ msgstr "Tengah"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Navigasi Yang Boleh Dilihat"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Navigasi Yang Boleh Dilihat"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -17539,7 +17606,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17547,7 +17614,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17918,7 +17985,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17926,7 +17993,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18094,12 +18161,14 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
+#, fuzzy
+msgid "Invalid argument of type:"
+msgstr "Argumen tidak sah untuk binaan '%s'"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
+#, fuzzy
+msgid "Invalid arguments:"
+msgstr "Nama tidak sah."
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -18111,12 +18180,14 @@ msgid "Var Name"
msgstr "Nama"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableGet not found in script:"
+msgstr "Kaedah tidak ditemui dalam objek: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableSet not found in script:"
+msgstr "Kaedah tidak ditemui dalam objek: "
#: modules/visual_script/visual_script_nodes.cpp
#, fuzzy
@@ -18653,10 +18724,6 @@ msgid "Could not execute on device."
msgstr "Tidak dapat mencipta folder."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18760,12 +18827,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Isyarat"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18781,6 +18852,11 @@ msgid "Could not find keystore, unable to export."
msgstr ""
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "Tidak dapat memulakan subproses!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -18809,7 +18885,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18820,20 +18896,19 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
-msgstr ""
+#, fuzzy
+msgid "Could not export project files to gradle project."
+msgstr "Tidak dapat mengeksport fail projek"
#: platform/android/export/export_plugin.cpp
msgid "Could not write expansion package file!"
@@ -18845,7 +18920,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -18860,7 +18935,8 @@ msgid ""
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+#, fuzzy
+msgid "Package not found: \"%s\"."
msgstr "Pakej tidak ditemui: %s"
#: platform/android/export/export_plugin.cpp
@@ -18869,15 +18945,13 @@ msgid "Creating APK..."
msgstr "Menyambung..."
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
-msgstr ""
+#, fuzzy
+msgid "Could not find template APK to export: \"%s\"."
+msgstr "Tidak dapat memasang ke peranti: %s"
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -18888,7 +18962,8 @@ msgid "Adding files..."
msgstr "Tapis Fail-fail..."
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+#, fuzzy
+msgid "Could not export project files."
msgstr "Tidak dapat mengeksport fail projek"
#: platform/android/export/export_plugin.cpp
@@ -19129,6 +19204,17 @@ msgstr "Potong Nod"
msgid "Custom BG Color"
msgstr "Potong Nod"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "Urus Templat-templat"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Templat pelepasan tersuai tidak dijumpai."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -19150,22 +19236,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
-msgstr ""
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
+msgstr "Tidak dapat mencipta folder."
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
-msgstr ""
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
+msgstr "(Tidak sah, jenis dijangka: %s)"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr ""
+#, fuzzy
+msgid "Could not write file: \"%s\"."
+msgstr "Tidak dapat membaca fail:"
+
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Kandungan:"
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+#, fuzzy
+msgid "Could not read file: \"%s\"."
msgstr "Tidak dapat membaca fail:"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "Versi:"
@@ -19239,15 +19338,18 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+#, fuzzy
+msgid "Could not read HTML shell: \"%s\"."
msgstr "Tidak dapat membaca shell HTML:"
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+#, fuzzy
+msgid "Could not create HTTP server directory: %s."
msgstr "Tidak dapat mencipta direktori server HTTP:"
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+#, fuzzy
+msgid "Error starting HTTP server: %d."
msgstr "Ralat memulakan server HTTP:"
#: platform/javascript/export/export.cpp
@@ -19539,9 +19641,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Tidak dapat mengeksport fail projek"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "Tidak dapat memulakan subproses!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Langkah Putaran:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19557,18 +19678,74 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "Tiada sub-sumber dijumpai."
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Ralat semasa menyimpan fail: %s"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Arah"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "Tidak dapat memulakan subproses!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "Mencipta Gambar Kecil"
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
-msgstr ""
+#, fuzzy
+msgid "Could not find template app to export: \"%s\"."
+msgstr "Tidak dapat memasang ke peranti: %s"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Nama tidak sah."
#: platform/osx/export/export.cpp
msgid ""
@@ -19578,7 +19755,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -19619,6 +19796,15 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "Projek"
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr ""
@@ -19926,6 +20112,11 @@ msgid "Debug Algorithm"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Tidak dapat membuang fail sementara:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -19972,6 +20163,66 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Tampal Animasi"
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Argumen tidak sah untuk binaan '%s'"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Nama tidak sah."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "Tidak dapat membuang fail sementara:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19993,6 +20244,23 @@ msgid "Invalid product version:"
msgstr "Nama kumpulan tidak sah."
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Nama kumpulan tidak sah."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "Tetingkap Baru"
@@ -20009,6 +20277,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20129,7 +20401,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Contoh"
@@ -20946,15 +21219,19 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr ""
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Tengah Bawah"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "Perjalanan"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
#, fuzzy
@@ -22108,12 +22385,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -24722,6 +24993,16 @@ msgid "3D Physics"
msgstr "Bingkai Fizik %"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Navigasi Yang Boleh Dilihat"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Navigasi Yang Boleh Dilihat"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -26129,7 +26410,7 @@ msgstr "Peralihan: "
msgid "Refraction"
msgstr "Versi:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -26210,8 +26491,14 @@ msgid "Visible Instance Count"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Sample Partition Type"
-msgstr ""
+#, fuzzy
+msgid "Sampling"
+msgstr "Skala:"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
+msgstr "Versi:"
#: scene/resources/navigation_mesh.cpp
msgid "Parsed Geometry Type"
@@ -26227,10 +26514,15 @@ msgid "Source Group Name"
msgstr "Nama Skrip:"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "Kandungan:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -26239,11 +26531,16 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Regions"
+msgstr "Buka Terkini"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26256,6 +26553,11 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Details"
+msgstr "Muatkan Lalai"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -26272,7 +26574,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -26677,6 +26979,11 @@ msgid "Scenario"
msgstr "Adegan"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Navigasi Yang Boleh Dilihat"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -26694,6 +27001,26 @@ msgstr "Linear Kiri"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Lalai"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Lalai"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Menguji"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Edit Sambungan:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/nb.po b/editor/translations/nb.po
index f0d20130ed..e5b0dcc26f 100644
--- a/editor/translations/nb.po
+++ b/editor/translations/nb.po
@@ -222,9 +222,10 @@ msgid "Data"
msgstr "Data"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr "Nettverk"
@@ -331,7 +332,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Ikke nok bytes til å dekode, eller ugyldig format."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "Ugyldig input %i (ikke bestått) i utrykket"
#: core/math/expression.cpp
@@ -375,6 +377,16 @@ msgstr "Melding Kø"
msgid "Max Size (KB)"
msgstr "Maks Størrelse (KB)"
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Flytt Modus"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "Slett Input"
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -568,7 +580,8 @@ msgstr "Beskrivelse"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "Kjør"
@@ -657,6 +670,11 @@ msgid "Main Run Args"
msgstr "Hovedkjøringsargumenter"
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Scene-Sti:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr "Søk I Filetternavn"
@@ -664,18 +682,15 @@ msgstr "Søk I Filetternavn"
msgid "Script Templates Search Path"
msgstr "Skriptmaler Søkesti"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Versjonskontroll"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+#, fuzzy
+msgid "Version Control Autoload On Startup"
msgstr "Automatisk Lasting Ved Oppstart"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Navn PÃ¥ Programvareutvidelse"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Versjonskontroll"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -785,7 +800,8 @@ msgid "Quality"
msgstr "Kvalitet"
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
msgid "Filters"
msgstr "Filter"
@@ -1063,6 +1079,7 @@ msgstr "Høy Kvalitet"
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Fri"
@@ -1079,7 +1096,7 @@ msgstr "Speil"
msgid "Time:"
msgstr "Tid:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Verdi:"
@@ -1347,10 +1364,75 @@ msgid "Remove this track."
msgstr "Fjern dette sporet."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "Tid (s): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Posisjon"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Rotasjon Steg:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "Skala:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "Type:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "HÃ¥ndter Eksportmaler"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Easing:"
+msgstr "Advarsel:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "In-Handle:"
+msgstr "Sett Handle"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Out-Handle:"
+msgstr "Sett Handle"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "Legg til Element"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Omstart (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "End (s):"
+msgstr "Fade Inn (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Animasjoner"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "Veksl Aktivering Av Spor"
@@ -1566,7 +1648,8 @@ msgid "Add Method Track Key"
msgstr "Legg til metode-spornøkkel"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "Metode ikke funnet i objekt: "
#: editor/animation_track_editor.cpp
@@ -2191,8 +2274,8 @@ msgid "Open"
msgstr "Ã…pne"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Eiere Av:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
#, fuzzy
@@ -2510,7 +2593,7 @@ msgid "Bus Options"
msgstr "Bus valg"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Dupliser"
@@ -2562,8 +2645,9 @@ msgstr "Ã…pne Audio Bus oppsett"
msgid "There is no '%s' file."
msgstr "Det finnes ingen «%s»-fil"
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "Utforming"
#: editor/editor_audio_buses.cpp
@@ -2777,6 +2861,25 @@ msgid "Choose"
msgstr "Velg"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "Kopier Node-bane"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "Vellykket Installering av Pakke!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "Feilet:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Lagrer Fil:"
@@ -2789,6 +2892,31 @@ msgid "Packing"
msgstr "Pakking"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Lagre som"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "Kunne ikke opprette mappe."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Kunne ikke opprette mappe."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Kan ikke åpne fil for skriving:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Lagre som"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2913,11 +3041,33 @@ msgstr "Tilpasset feilsøkingsmal ble ikke funnet."
msgid "Custom release template not found."
msgstr "Fant ikke tilpasset utgivelsesmal."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "HÃ¥ndter Eksportmaler"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "Fil eksisterer ikke."
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "Malfil ble ikke funnet:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "HÃ¥ndter Eksportmaler"
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+#, fuzzy
+msgid "PCK Embedding"
+msgstr "Fyll"
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr ""
@@ -3099,9 +3249,9 @@ msgid "Import"
msgstr "Importer"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Eksporter"
@@ -4291,15 +4441,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Scene"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Scene-Sti:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4429,6 +4570,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Versjonskontroll"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Gi nytt navn"
@@ -4457,6 +4602,10 @@ msgstr "Vis/skjul distraksjonsfri modus."
msgid "Add a new scene."
msgstr "Legg til ny scene."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Scene"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Gå til forrige åpne scene."
@@ -5145,11 +5294,14 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr "Størrelse: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
+msgstr "Størrelse:"
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+#, fuzzy
+msgid "Page:"
msgstr "Side: "
#: editor/editor_properties_array_dict.cpp
@@ -5255,6 +5407,11 @@ msgstr ""
"Ingen kjørbar eksport-preset funnet for denne plattformen.\n"
"Vennligst legg til en kjørbar preset i eksportmenyen."
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Prosjekt"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Skriv logikken din i _run() metoden."
@@ -5536,7 +5693,9 @@ msgid "Draw Spaces"
msgstr "Ring"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr "Navigasjon"
@@ -6119,10 +6278,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Prosjekthåndterer"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -6925,14 +7086,6 @@ msgid "Replace in Files"
msgstr "Erstatt Alle"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "Finn: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "Erstatt: "
-
-#: editor/find_in_files.cpp
#, fuzzy
msgid "Replace All (NO UNDO)"
msgstr "Erstatt Alle"
@@ -7071,7 +7224,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Lim inn Noder"
@@ -7337,7 +7490,8 @@ msgid "Generating Lightmaps"
msgstr "Genererer lyskart"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+#, fuzzy
+msgid "Generating for Mesh:"
msgstr "Genererer for Maske: "
#: editor/import/resource_importer_scene.cpp
@@ -7366,6 +7520,18 @@ msgid "Saving..."
msgstr "Lagrer..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -8222,10 +8388,12 @@ msgstr "Løk-lag"
msgid "Directions"
msgstr "Retninger"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "Fortid"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "Fremtid"
@@ -8391,7 +8559,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
+#, fuzzy
+msgid "Transition:"
msgstr "Overgang: "
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8409,11 +8578,6 @@ msgid "New name:"
msgstr "Nytt navn:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "Skala:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "Fade Inn (s):"
@@ -9378,6 +9542,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr "Fjern Ben"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9447,6 +9612,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "Utforming"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -10232,8 +10401,9 @@ msgid "Volume"
msgstr "Volum"
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr ""
+#, fuzzy
+msgid "Emission Source:"
+msgstr "Synlige kollisjons-former"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
@@ -10476,6 +10646,7 @@ msgid "Points"
msgstr "Poeng"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
#, fuzzy
msgid "Polygons"
msgstr "Rediger Poly"
@@ -10642,13 +10813,6 @@ msgid "Instance:"
msgstr "Instans:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "Type:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr "Åpne i Redigeringsverktøy"
@@ -10657,11 +10821,6 @@ msgstr "Åpne i Redigeringsverktøy"
msgid "Load Resource"
msgstr "Last Ressurs"
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#, fuzzy
-msgid "ResourcePreloader"
-msgstr "Ressurs"
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -11393,12 +11552,16 @@ msgstr "Roter"
msgid "Translate"
msgstr "Oversett"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
+#, fuzzy
+msgid "Scaling:"
msgstr "Skalerer: "
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
+#, fuzzy
+msgid "Translating:"
msgstr "Oversetter: "
#: editor/plugins/spatial_editor_plugin.cpp
@@ -11423,11 +11586,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr "Størrelse:"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11929,7 +12087,7 @@ msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
#, fuzzy
-msgid "Convert to Mesh2D"
+msgid "Convert to MeshInstance2D"
msgstr "Konverter til store versaler"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11963,15 +12121,16 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "Applikasjon"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12992,8 +13151,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr "Region"
@@ -14526,32 +14684,11 @@ msgid "Delete preset '%s'?"
msgstr "Slett forhåndsinnstillingen «%s»?"
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
#, fuzzy
msgid "Exporting All"
msgstr "Eksporter"
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
#, fuzzy
msgid "Export Path"
msgstr "Eksporter Prosjekt"
@@ -14694,6 +14831,11 @@ msgstr ""
#: editor/project_export.cpp
#, fuzzy
+msgid "Project Export"
+msgstr "Prosjektgrunnleggere"
+
+#: editor/project_export.cpp
+#, fuzzy
msgid "Manage Export Templates"
msgstr "HÃ¥ndter Eksportmaler"
@@ -16222,7 +16364,7 @@ msgstr ""
#: editor/script_editor_debugger.cpp
#, fuzzy
-msgid "Remote "
+msgid "Remote %s:"
msgstr "Fjern-funksjon "
#: editor/script_editor_debugger.cpp
@@ -17111,7 +17253,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "Rediger Poly"
@@ -17289,8 +17431,9 @@ msgid "Disabled GDNative Singleton"
msgstr "Deaktiver Oppdateringsspinner"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
-msgstr ""
+#, fuzzy
+msgid "Libraries:"
+msgstr "Bibliotek"
#: modules/gdnative/nativescript/nativescript.cpp
#, fuzzy
@@ -17733,7 +17876,6 @@ msgid "Use In Baked Light"
msgstr "Lys"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17763,6 +17905,19 @@ msgstr "I midten"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Navigasjon"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Navigasjon Modus"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Next Plane"
@@ -18188,7 +18343,7 @@ msgstr ""
"Fiks noden din vær så snill."
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -18196,7 +18351,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -18598,7 +18753,8 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+#, fuzzy
+msgid "Input type not iterable:"
msgstr "Tilførseltype ikke itererbar: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18606,7 +18762,8 @@ msgid "Iterator became invalid"
msgstr "Iterator ble ugyldig"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+#, fuzzy
+msgid "Iterator became invalid:"
msgstr "Iterator ble ugyldig: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18777,11 +18934,13 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
+#, fuzzy
+msgid "Invalid argument of type:"
msgstr ": Ugyldig argument av type: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
+#, fuzzy
+msgid "Invalid arguments:"
msgstr ": Ugyldige argumenter: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18794,12 +18953,14 @@ msgid "Var Name"
msgstr "Navn"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableGet not found in script:"
+msgstr "Metode ikke funnet i objekt: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableSet not found in script:"
+msgstr "Metode ikke funnet i objekt: "
#: modules/visual_script/visual_script_nodes.cpp
#, fuzzy
@@ -19353,10 +19514,6 @@ msgid "Could not execute on device."
msgstr "Kunne ikke opprette mappe."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -19461,12 +19618,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Signal"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19486,6 +19647,11 @@ msgid "Could not find keystore, unable to export."
msgstr "Kunne ikke opprette mappe."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "Kunne ikke starta subprosess!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -19516,7 +19682,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19527,19 +19693,18 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+#, fuzzy
+msgid "Could not export project files to gradle project."
msgstr "Klarte ikke eksportere prosjektfiler til gradle-prosjekt\n"
#: platform/android/export/export_plugin.cpp
@@ -19553,7 +19718,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -19569,7 +19734,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr "Animasjonsverktøy"
#: platform/android/export/export_plugin.cpp
@@ -19579,15 +19744,12 @@ msgstr "Lager konturer..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
msgstr "Kunne ikke opprette mappe."
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -19599,7 +19761,7 @@ msgstr "Legger til %s..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr "Kunne ikke opprette mappe."
#: platform/android/export/export_plugin.cpp
@@ -19842,6 +20004,17 @@ msgstr "Klipp ut Noder"
msgid "Custom BG Color"
msgstr "Klipp ut Noder"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "HÃ¥ndter Eksportmaler"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Fant ikke tilpasset utgivelsesmal."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -19865,25 +20038,34 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not open template for export:"
+msgid "Could not open template for export: \"%s\"."
msgstr "Kunne ikke opprette mappe."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Invalid export template:"
+msgid "Invalid export template: \"%s\"."
msgstr "HÃ¥ndter Eksportmaler"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not write file:"
+msgid "Could not write file: \"%s\"."
msgstr "Kunne ikke opprette mappe."
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Sett Handle"
+
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read file:"
+msgid "Could not read file: \"%s\"."
msgstr "Kunne ikke opprette mappe."
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "Nummereringer:"
@@ -19959,17 +20141,17 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr "Kunne ikke opprette mappe."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr "Kunne ikke opprette mappe."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr "Feil ved lagring av TextFile:"
#: platform/javascript/export/export.cpp
@@ -20268,9 +20450,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Kunne ikke opprette mappe."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "Kunne ikke starta subprosess!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Lokalisering"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -20286,21 +20487,76 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "Ikke funnet!"
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Feil ved lagring av filen: %s"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Retninger"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "Kunne ikke starta subprosess!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "Lager Thumbnail"
#: platform/osx/export/export.cpp
#, fuzzy
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr "Kunne ikke opprette mappe."
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "HÃ¥ndter Eksportmaler"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -20308,7 +20564,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -20350,6 +20606,16 @@ msgstr ""
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "ZIP Creation"
+msgstr "Prosjekt"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr "Klarte ikke eksportere prosjektfiler til gradle-prosjekt\n"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Invalid bundle identifier:"
msgstr "Navn er ikke en gyldig identifikator:"
@@ -20666,6 +20932,11 @@ msgid "Debug Algorithm"
msgstr "Feilsøkingsprogram"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Kan ikke fjerne:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20713,6 +20984,70 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Tilfeldig Rotasjon:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "Kunne ikke opprette mappe."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "Kunne ikke opprette mappe."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "Kunne ikke opprette mappe."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "Kunne ikke opprette mappe."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Navn er ikke en gyldig identifikator:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Ugyldig navn."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "Kan ikke fjerne:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20734,6 +21069,23 @@ msgid "Invalid product version:"
msgstr "Prosjektnavn:"
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "MÃ¥ ha en gyldig filutvidelse."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "Nytt vindu"
@@ -20750,6 +21102,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20875,7 +21231,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Instans"
@@ -21712,15 +22069,19 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr ""
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Plasser Utvalg I Midten"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "Reise"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
#, fuzzy
@@ -22905,12 +23266,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -25566,6 +25921,16 @@ msgid "3D Physics"
msgstr "Fysikk"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Navigasjon"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Navigasjon"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -26984,7 +27349,7 @@ msgstr "Overgang: "
msgid "Refraction"
msgstr "Nummereringer:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -27066,7 +27431,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "Skalerer: "
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "Rediger Variabel:"
#: scene/resources/navigation_mesh.cpp
@@ -27083,10 +27453,15 @@ msgid "Source Group Name"
msgstr "Kilde"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "Innhold:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -27095,11 +27470,16 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Regions"
+msgstr "Region"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -27112,6 +27492,11 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Details"
+msgstr "Last Standard"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -27128,7 +27513,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -27540,6 +27925,11 @@ msgid "Scenario"
msgstr "Scene"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Navigasjon"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -27557,6 +27947,26 @@ msgstr "Venstrelineær"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Standard"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Forhåndsvis"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Tester"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Tilkoblingsfeil"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/nl.po b/editor/translations/nl.po
index ec5eaca8e9..6d43002a17 100644
--- a/editor/translations/nl.po
+++ b/editor/translations/nl.po
@@ -280,9 +280,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
#, fuzzy
msgid "Network"
msgstr "Netwerk Profiler"
@@ -397,7 +398,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Niet genoeg bytes voor het decoderen van bytes, of ongeldig formaat."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "Ongeldige invoer %i (niet doorgegeven) in expressie"
#: core/math/expression.cpp
@@ -444,6 +446,16 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Verplaatsingsmodus"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "Invoer verwijderen"
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -645,7 +657,8 @@ msgstr "Beschrijving"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "Uitvoeren"
@@ -736,6 +749,11 @@ msgid "Main Run Args"
msgstr "Startscène argumenten:"
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Scènepad:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -743,19 +761,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Versiebeheer"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Versiebeheersysteem"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Pluginnaam:"
+msgid "Version Control Plugin Name"
+msgstr "Versiebeheer"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -875,7 +889,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "Filters:"
@@ -1158,6 +1173,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Vrij"
@@ -1174,7 +1190,7 @@ msgstr "Spiegel"
msgid "Time:"
msgstr "Tijd:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Waarde:"
@@ -1424,10 +1440,75 @@ msgid "Remove this track."
msgstr "Verwijder deze track."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "Tijd (en): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Tabbladpositie"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Rotatie Stap:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "Schaal:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "Type:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Ongeldige export template:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Easing:"
+msgstr "In-uit vloeien"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "In-Handle:"
+msgstr "Stel Handgreep In"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Out-Handle:"
+msgstr "Stel Handgreep In"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "Radio Item"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Herstarten (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "End (s):"
+msgstr "Fade-In (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Animaties:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "Track in-/uit schakelen"
@@ -1640,7 +1721,8 @@ msgid "Add Method Track Key"
msgstr "Voeg Methode Track sleutel toe"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "Methode niet gevonden in object: "
#: editor/animation_track_editor.cpp
@@ -2255,8 +2337,8 @@ msgid "Open"
msgstr "Openen"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Eigenaren van:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
msgid ""
@@ -2562,7 +2644,7 @@ msgid "Bus Options"
msgstr "Audiobusopties"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Dupliceren"
@@ -2614,8 +2696,9 @@ msgstr "Audiobusindeling openen"
msgid "There is no '%s' file."
msgstr "Het '%s' bestand bestaat niet."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "Indeling"
#: editor/editor_audio_buses.cpp
@@ -2818,6 +2901,25 @@ msgid "Choose"
msgstr "Kies"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "Knooppad kopiëren"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "Pakket succesvol geïnstalleerd!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "Mislukt:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Bestand Opslaan:"
@@ -2830,6 +2932,31 @@ msgid "Packing"
msgstr "Inpakken"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Opslaan Als"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "Map kon niet gemaakt worden."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Kon bestand niet schrijven:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Kan bestand niet openen om te schrijven:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Opslaan Als"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2949,11 +3076,33 @@ msgstr "Aangepast debug pakket niet gevonden."
msgid "Custom release template not found."
msgstr "Aangepast release pakket niet gevonden."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "Sjablonen beheren"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "Het gegeven exportpad bestaat niet:"
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "Template bestand niet gevonden:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "Ongeldige export template:"
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+#, fuzzy
+msgid "PCK Embedding"
+msgstr "Vulling"
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr "Bij 32-bit export mag de ingebouwde PCK niet groter zijn dan 4 GiB."
@@ -3131,9 +3280,9 @@ msgid "Import"
msgstr "Importeren"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Exporteren"
@@ -4299,15 +4448,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Scène"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Scènepad:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4436,6 +4576,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Versiebeheer"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Naam wijzigen"
@@ -4464,6 +4608,10 @@ msgstr "Afleidingsvrijemodus omschakelen."
msgid "Add a new scene."
msgstr "Nieuwe scène toevoegen."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Scène"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Ga naar de eerder geopende scène."
@@ -5142,11 +5290,15 @@ msgid "Selected node is not a Viewport!"
msgstr "Geselecteerde knoop is geen Viewport!"
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#, fuzzy
+msgid "Size:"
msgstr "Grootte: "
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+#, fuzzy
+msgid "Page:"
msgstr "Pagina: "
#: editor/editor_properties_array_dict.cpp
@@ -5246,6 +5398,11 @@ msgstr ""
"Geen uitvoerbare exporteer preset gevonden voor dit platform.\n"
"Voeg een uitvoerbare preset toe in het exportmenu."
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Project"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Schrijf je logica in de _run() methode."
@@ -5529,7 +5686,9 @@ msgid "Draw Spaces"
msgstr "Teken Aanroepingen"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr "Navigatie"
@@ -6127,10 +6286,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Projectbeheer"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -6918,14 +7079,6 @@ msgid "Replace in Files"
msgstr "Alles vervangen"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "Zoeken: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "Vervangen: "
-
-#: editor/find_in_files.cpp
#, fuzzy
msgid "Replace All (NO UNDO)"
msgstr "Alles vervangen"
@@ -7055,7 +7208,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Filters:"
@@ -7323,7 +7476,8 @@ msgid "Generating Lightmaps"
msgstr "Bouw Lightmappen"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+#, fuzzy
+msgid "Generating for Mesh:"
msgstr "Bouw voor Mesh: "
#: editor/import/resource_importer_scene.cpp
@@ -7352,6 +7506,18 @@ msgid "Saving..."
msgstr "Opslaan..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -8165,10 +8331,12 @@ msgstr "Onion Skinning Opties"
msgid "Directions"
msgstr "Richtingen"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "Verleden"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "Toekomst"
@@ -8328,7 +8496,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr "Stel eindanimatie in. Dit is handig voor sub-transities."
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
+#, fuzzy
+msgid "Transition:"
msgstr "Overgang: "
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8345,11 +8514,6 @@ msgid "New name:"
msgstr "Nieuwe naam:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "Schaal:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "Fade-In (s):"
@@ -9270,6 +9434,7 @@ msgstr "Stel bot(ten) op uit knoop/knopen"
msgid "Clear Custom Bones"
msgstr "Aangepaste Botten Wissen"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9337,6 +9502,10 @@ msgid "Preview Canvas Scale"
msgstr "Voorbeeld Canvas Schaal"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "Indeling"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr "Translatiemasker voor sleutelinvoer."
@@ -10119,7 +10288,8 @@ msgid "Volume"
msgstr "Volume"
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+#, fuzzy
+msgid "Emission Source:"
msgstr "Emissiebron: "
#: editor/plugins/particles_editor_plugin.cpp
@@ -10355,6 +10525,7 @@ msgid "Points"
msgstr "Punten"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr "Polygonen"
@@ -10512,13 +10683,6 @@ msgid "Instance:"
msgstr "Instantie:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "Type:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr "Openen in Editor"
@@ -10527,10 +10691,6 @@ msgstr "Openen in Editor"
msgid "Load Resource"
msgstr "Bron laden"
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr "Bronnen-voorlader"
-
#: editor/plugins/room_manager_editor_plugin.cpp
#, fuzzy
msgid "Flip Portals"
@@ -11253,12 +11413,16 @@ msgstr "Rotatiemodus"
msgid "Translate"
msgstr "Verplaats:"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
+#, fuzzy
+msgid "Scaling:"
msgstr "Schaling: "
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
+#, fuzzy
+msgid "Translating:"
msgstr "Transitie: "
#: editor/plugins/spatial_editor_plugin.cpp
@@ -11283,12 +11447,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
-msgid "Size:"
-msgstr "Grootte: "
-
-#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
msgid "Objects Drawn:"
msgstr "Objecten Getekend"
@@ -11788,7 +11946,8 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr "Ongeldige geometrie, kan niet worden vervangen door Mesh."
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+#, fuzzy
+msgid "Convert to MeshInstance2D"
msgstr "Converteren naar Mesh2D"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11820,15 +11979,18 @@ msgid "Sprite"
msgstr "Sprite"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
+#, fuzzy
+msgid "Simplification:"
msgstr "Simplificatie: "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+#, fuzzy
+msgid "Shrink (Pixels):"
msgstr "Krimpen (Pixels): "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+#, fuzzy
+msgid "Grow (Pixels):"
msgstr "Vergroot (Pixels): "
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12837,8 +12999,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr "Selecteer de vorige shape, subtegel of Tegel."
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr "Gebied"
@@ -14391,36 +14552,10 @@ msgid "Delete preset '%s'?"
msgstr "Verwijder voorinstelling '%s'?"
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-"Exporteren van project voor platform '%s' is mislukt.\n"
-"Exportsjablonen zijn mogelijk niet aanwezig of ongeldig."
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-"Exporteren van project voor platform '%s' is mislukt.\n"
-"Dit probleem wordt mogelijk veroorzaakt door een foutieve instelling in de "
-"vooraf ingestelde exportinstellingen of uw eigen exportinstellingen."
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "Exporteer alles"
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr "Het gegeven exportpad bestaat niet:"
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr "Exportsjablonen voor dit platform zijn niet aanwezig of corrupt:"
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr "Export Pad"
@@ -14568,6 +14703,11 @@ msgid "Export templates for this platform are missing:"
msgstr "Vermiste Exportsjablonen voor dit platform:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Projectoprichters"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "Beheer Export Templates"
@@ -16104,7 +16244,8 @@ msgid "Attach Node Script"
msgstr "Verbind knoopscript"
#: editor/script_editor_debugger.cpp
-msgid "Remote "
+#, fuzzy
+msgid "Remote %s:"
msgstr "Remote "
#: editor/script_editor_debugger.cpp
@@ -16989,7 +17130,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "Polygonen"
@@ -17167,7 +17308,8 @@ msgid "Disabled GDNative Singleton"
msgstr "Schakel GDNative Singleton uit"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+#, fuzzy
+msgid "Libraries:"
msgstr "Bibliotheken: "
#: modules/gdnative/nativescript/nativescript.cpp
@@ -17614,7 +17756,6 @@ msgid "Use In Baked Light"
msgstr "Bak Lichtmappen"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17644,6 +17785,19 @@ msgstr "Center"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Navigatie"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Navigatiemodus"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Volgend Blad"
@@ -18061,7 +18215,8 @@ msgstr ""
"zijn werkgeheugen! Repareer de knoop."
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+#, fuzzy
+msgid "Node returned an invalid sequence output:"
msgstr "Knoop gaf een ongeldige sequentie uitvoer: "
#: modules/visual_script/visual_script.cpp
@@ -18071,7 +18226,8 @@ msgstr ""
"een bug!"
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+#, fuzzy
+msgid "Stack overflow with stack depth:"
msgstr "Stapeloverloop met stapeldiepte: "
#: modules/visual_script/visual_script.cpp
@@ -18448,7 +18604,8 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+#, fuzzy
+msgid "Input type not iterable:"
msgstr "Invoer type is niet iterabel: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18456,7 +18613,8 @@ msgid "Iterator became invalid"
msgstr "Iterator werd ongeldig"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+#, fuzzy
+msgid "Iterator became invalid:"
msgstr "Iterator werd ongeldig: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18630,11 +18788,13 @@ msgid "Operator"
msgstr "Overlap operator."
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
+#, fuzzy
+msgid "Invalid argument of type:"
msgstr ": Ongeldig argument van type: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
+#, fuzzy
+msgid "Invalid arguments:"
msgstr ": Ongeldige argumenten: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18647,11 +18807,13 @@ msgid "Var Name"
msgstr "Naam"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+#, fuzzy
+msgid "VariableGet not found in script:"
msgstr "VariableGet niet gevonden in script: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+#, fuzzy
+msgid "VariableSet not found in script:"
msgstr "VariableSet niet gevonden in script: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -19211,10 +19373,6 @@ msgid "Could not execute on device."
msgstr "Map kon niet gemaakt worden."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr "Het hulpmiddel 'apksigner' kon niet gevonden worden."
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -19329,12 +19487,16 @@ msgstr "\"Export AAB\" is alleen geldig als \"Use Custom Build\" aan staat."
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Signaal"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19354,6 +19516,11 @@ msgid "Could not find keystore, unable to export."
msgstr "Kon template niet openen voor export:"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "Kon het subproces niet opstarten!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -19385,7 +19552,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "Bestandsnaam niet toegestaan! Android APK vereist een *.apk extensie."
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19397,10 +19564,9 @@ msgstr ""
"Installeer alstublieft opnieuw vanuit het 'Project' menu."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
"Android buildversie onverenigbaar:\n"
@@ -19410,12 +19576,12 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Could not export project files to gradle project\n"
+msgid "Could not export project files to gradle project."
msgstr "Kan project.godot niet bewerken in projectpad."
#: platform/android/export/export_plugin.cpp
@@ -19428,8 +19594,9 @@ msgid "Building Android Project (gradle)"
msgstr "Bouwen van Android Project (gradle)"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
"Bouwen van Androidproject mislukt, bekijk de foutmelding in de uitvoer.\n"
@@ -19449,7 +19616,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr "Animatie niet gevonden: '%s'"
#: platform/android/export/export_plugin.cpp
@@ -19459,15 +19626,12 @@ msgstr "Contouren aan het creëeren..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
msgstr "Kon template niet openen voor export:"
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -19479,7 +19643,7 @@ msgstr "%s aan het toevoegen..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr "Kon bestand niet schrijven:"
#: platform/android/export/export_plugin.cpp
@@ -19721,6 +19885,17 @@ msgstr "Knopen knippen"
msgid "Custom BG Color"
msgstr "Knopen knippen"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "Sjablonen beheren"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Aangepast release pakket niet gevonden."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -19744,23 +19919,35 @@ msgstr ""
"Voer de geëxporteerde HTML uit in de standaard browser van het systeem."
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
msgstr "Kon template niet openen voor export:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
msgstr "Ongeldige export template:"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+#, fuzzy
+msgid "Could not write file: \"%s\"."
msgstr "Kon bestand niet schrijven:"
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Stel Marge In"
+
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read file:"
+msgid "Could not read file: \"%s\"."
msgstr "Kon bestand niet schrijven:"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "Afzondering:"
@@ -19836,17 +20023,17 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr "Kon de custom HTML shell niet lezen:"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr "Map kon niet gemaakt worden."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr "Fout bij het opslaan van de scène."
#: platform/javascript/export/export.cpp
@@ -20147,9 +20334,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Kon bestand niet schrijven:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "Kon het subproces niet opstarten!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Lokalisatie"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -20165,21 +20371,76 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "Niet gevonden!"
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Fout bij het opslaan van bestand: %s"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Richtingen"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "Kon het subproces niet opstarten!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "Thumbnail Aan Het Maken"
#: platform/osx/export/export.cpp
#, fuzzy
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr "Kon template niet openen voor export:"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Ongeldige export template:"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -20187,7 +20448,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -20229,6 +20490,16 @@ msgstr ""
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "ZIP Creation"
+msgstr "Project"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr "Kan project.godot niet bewerken in projectpad."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Invalid bundle identifier:"
msgstr "Ongeldige identifier:"
@@ -20548,6 +20819,11 @@ msgid "Debug Algorithm"
msgstr "Debugger"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Kan het tijdelijke bestand niet verwijderen:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20595,6 +20871,70 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Willekeurige Rotatie:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "Kon template niet openen voor export:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "Kon template niet openen voor export:"
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "Kon template niet openen voor export:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "Kon template niet openen voor export:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Ongeldige identifier:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Ongeldige naam."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "Kan het tijdelijke bestand niet verwijderen:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20616,6 +20956,23 @@ msgid "Invalid product version:"
msgstr "Ongeldig product GUID."
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Ongeldige extentie."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "Nieuw Venster"
@@ -20632,6 +20989,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20759,7 +21120,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Selecteerafstand:"
@@ -21631,17 +21993,19 @@ msgstr ""
"bron in de geschikte eigenschap in of teken een polygoon."
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-"NavigationPolygonInstance moet een (klein)kind zijn van een Navigation2D-"
-"knoop om navigatiegegevens door te geven."
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr ""
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Center onder"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "Verplaats"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
#, fuzzy
@@ -22875,14 +23239,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr "De NavigationAgent2D kan alleen worden gebruikt als een Node2D Node."
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-"NavigationMeshInstance moet een (klein)kind zijn van een Navigation-knoop om "
-"navigatiegevens door te geven."
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
#, fuzzy
msgid "NavMesh"
@@ -25604,6 +25960,16 @@ msgid "3D Physics"
msgstr "Physics Frame %"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Navigatie"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Navigatie"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -27031,7 +27397,7 @@ msgstr "Overgang: "
msgid "Refraction"
msgstr "Afzondering:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -27116,7 +27482,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "Schaling: "
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "Zet variabele type"
#: scene/resources/navigation_mesh.cpp
@@ -27134,10 +27505,15 @@ msgid "Source Group Name"
msgstr "Bron"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "Startscène argumenten:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -27147,11 +27523,16 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Regions"
+msgstr "Gebied"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Merge Size"
msgstr "Vanuit scène samenvoegen"
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -27165,6 +27546,11 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Details"
+msgstr "Laad standaard"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Sample Distance"
msgstr "Selecteerafstand:"
@@ -27182,7 +27568,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -27597,6 +27983,11 @@ msgid "Scenario"
msgstr "Scène"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Navigatie"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -27614,6 +28005,26 @@ msgstr "Links Lineair"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Standaard"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Voorbeeld bijwerken"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Testen"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Verbinding bewerken:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/or.po b/editor/translations/or.po
deleted file mode 100644
index 1d6f22ae5f..0000000000
--- a/editor/translations/or.po
+++ /dev/null
@@ -1,25662 +0,0 @@
-# Odia translation of the Godot Engine editor
-# Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur.
-# Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md).
-# This file is distributed under the same license as the Godot source code.
-# Pro Neon <proneon267@gmail.com>, 2019.
-msgid ""
-msgstr ""
-"Project-Id-Version: Godot Engine editor\n"
-"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2019-08-11 10:23+0000\n"
-"Last-Translator: Pro Neon <proneon267@gmail.com>\n"
-"Language-Team: Odia <https://hosted.weblate.org/projects/godot-engine/godot/"
-"or/>\n"
-"Language: or\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.8-dev\n"
-
-#: core/bind/core_bind.cpp main/main.cpp
-msgid "Tablet Driver"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Clipboard"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Current Screen"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Exit Code"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "V-Sync Enabled"
-msgstr ""
-
-#: core/bind/core_bind.cpp main/main.cpp
-msgid "V-Sync Via Compositor"
-msgstr ""
-
-#: core/bind/core_bind.cpp main/main.cpp
-msgid "Delta Smoothing"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Low Processor Usage Mode"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Low Processor Usage Mode Sleep (µsec)"
-msgstr ""
-
-#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
-msgid "Keep Screen On"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Min Window Size"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Max Window Size"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Screen Orientation"
-msgstr ""
-
-#: core/bind/core_bind.cpp core/project_settings.cpp main/main.cpp
-#: platform/uwp/os_uwp.cpp
-msgid "Window"
-msgstr ""
-
-#: core/bind/core_bind.cpp core/project_settings.cpp
-msgid "Borderless"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Per Pixel Transparency Enabled"
-msgstr ""
-
-#: core/bind/core_bind.cpp core/project_settings.cpp
-msgid "Fullscreen"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Maximized"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Minimized"
-msgstr ""
-
-#: core/bind/core_bind.cpp core/project_settings.cpp scene/gui/dialogs.cpp
-#: scene/gui/graph_node.cpp
-msgid "Resizable"
-msgstr ""
-
-#: core/bind/core_bind.cpp core/os/input_event.cpp scene/2d/node_2d.cpp
-#: scene/2d/physics_body_2d.cpp scene/2d/remote_transform_2d.cpp
-#: scene/3d/physics_body.cpp scene/3d/remote_transform.cpp
-#: scene/gui/control.cpp scene/gui/line_edit.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Position"
-msgstr ""
-
-#: core/bind/core_bind.cpp core/project_settings.cpp editor/editor_settings.cpp
-#: main/main.cpp modules/gridmap/grid_map.cpp
-#: modules/visual_script/visual_script_nodes.cpp scene/2d/tile_map.cpp
-#: scene/3d/camera.cpp scene/3d/light.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
-#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/texture.cpp
-#: scene/resources/visual_shader.cpp servers/visual_server.cpp
-msgid "Size"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Endian Swap"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Editor Hint"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Print Error Messages"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Iterations Per Second"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Target FPS"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Time Scale"
-msgstr ""
-
-#: core/bind/core_bind.cpp main/main.cpp
-msgid "Physics Jitter Fix"
-msgstr ""
-
-#: core/bind/core_bind.cpp editor/plugins/version_control_editor_plugin.cpp
-msgid "Error"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Error String"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Error Line"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Result"
-msgstr ""
-
-#: core/command_queue_mt.cpp core/message_queue.cpp main/main.cpp
-msgid "Memory"
-msgstr ""
-
-#: core/command_queue_mt.cpp core/message_queue.cpp
-#: core/register_core_types.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles2/rasterizer_scene_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-#: drivers/gles3/rasterizer_storage_gles3.cpp main/main.cpp
-#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
-#: servers/visual_server.cpp
-msgid "Limits"
-msgstr ""
-
-#: core/command_queue_mt.cpp
-msgid "Command Queue"
-msgstr ""
-
-#: core/command_queue_mt.cpp
-msgid "Multithreading Queue Size (KB)"
-msgstr ""
-
-#: core/func_ref.cpp modules/visual_script/visual_script_builtin_funcs.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Function"
-msgstr ""
-
-#: core/image.cpp core/packed_data_container.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-msgid "Data"
-msgstr ""
-
-#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
-msgid "Network"
-msgstr ""
-
-#: core/io/file_access_network.cpp
-msgid "Remote FS"
-msgstr ""
-
-#: core/io/file_access_network.cpp
-msgid "Page Size"
-msgstr ""
-
-#: core/io/file_access_network.cpp
-msgid "Page Read Ahead"
-msgstr ""
-
-#: core/io/http_client.cpp
-msgid "Blocking Mode Enabled"
-msgstr ""
-
-#: core/io/http_client.cpp
-msgid "Connection"
-msgstr ""
-
-#: core/io/http_client.cpp
-msgid "Read Chunk Size"
-msgstr ""
-
-#: core/io/marshalls.cpp
-msgid "Object ID"
-msgstr ""
-
-#: core/io/multiplayer_api.cpp core/io/packet_peer.cpp
-msgid "Allow Object Decoding"
-msgstr ""
-
-#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
-msgid "Refuse New Network Connections"
-msgstr ""
-
-#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
-msgid "Network Peer"
-msgstr ""
-
-#: core/io/multiplayer_api.cpp scene/animation/animation_player.cpp
-msgid "Root Node"
-msgstr ""
-
-#: core/io/networked_multiplayer_peer.cpp
-msgid "Refuse New Connections"
-msgstr ""
-
-#: core/io/networked_multiplayer_peer.cpp
-msgid "Transfer Mode"
-msgstr ""
-
-#: core/io/packet_peer.cpp
-msgid "Encode Buffer Max Size"
-msgstr ""
-
-#: core/io/packet_peer.cpp
-msgid "Input Buffer Max Size"
-msgstr ""
-
-#: core/io/packet_peer.cpp
-msgid "Output Buffer Max Size"
-msgstr ""
-
-#: core/io/packet_peer.cpp
-msgid "Stream Peer"
-msgstr ""
-
-#: core/io/stream_peer.cpp
-msgid "Big Endian"
-msgstr ""
-
-#: core/io/stream_peer.cpp
-msgid "Data Array"
-msgstr ""
-
-#: core/io/stream_peer_ssl.cpp
-msgid "Blocking Handshake"
-msgstr ""
-
-#: core/io/udp_server.cpp
-msgid "Max Pending Connections"
-msgstr ""
-
-#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
-#: modules/visual_script/visual_script_builtin_funcs.cpp
-msgid "Invalid type argument to convert(), use TYPE_* constants."
-msgstr "convert() କୠଅବୈଧ ପà­à¬°à¬•ାର ଯà­à¬•à­à¬¤à¬¿, ବà­à­Ÿà¬¬à¬¹à¬¾à¬° କର TYPE_* ସà­à¬¥à¬¿à¬°à¬¾à¬™à­à¬• |"
-
-#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
-msgid "Expected a string of length 1 (a character)."
-msgstr ""
-
-#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
-#: modules/mono/glue/gd_glue.cpp
-#: modules/visual_script/visual_script_builtin_funcs.cpp
-msgid "Not enough bytes for decoding bytes, or invalid format."
-msgstr ""
-
-#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
-msgstr ""
-
-#: core/math/expression.cpp
-msgid "self can't be used because instance is null (not passed)"
-msgstr ""
-
-#: core/math/expression.cpp
-msgid "Invalid operands to operator %s, %s and %s."
-msgstr ""
-
-#: core/math/expression.cpp
-msgid "Invalid index of type %s for base type %s"
-msgstr ""
-
-#: core/math/expression.cpp
-msgid "Invalid named index '%s' for base type %s"
-msgstr ""
-
-#: core/math/expression.cpp
-msgid "Invalid arguments to construct '%s'"
-msgstr ""
-
-#: core/math/expression.cpp
-msgid "On call to '%s':"
-msgstr ""
-
-#: core/math/random_number_generator.cpp
-#: modules/opensimplex/open_simplex_noise.cpp
-msgid "Seed"
-msgstr ""
-
-#: core/math/random_number_generator.cpp
-msgid "State"
-msgstr ""
-
-#: core/message_queue.cpp
-msgid "Message Queue"
-msgstr ""
-
-#: core/message_queue.cpp
-msgid "Max Size (KB)"
-msgstr ""
-
-#: core/os/input_event.cpp editor/project_settings_editor.cpp
-#: servers/audio_server.cpp
-msgid "Device"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Alt"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Shift"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Control"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Meta"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Command"
-msgstr ""
-
-#: core/os/input_event.cpp scene/2d/touch_screen_button.cpp
-#: scene/gui/base_button.cpp scene/gui/texture_button.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Pressed"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Scancode"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Physical Scancode"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Unicode"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Echo"
-msgstr ""
-
-#: core/os/input_event.cpp scene/gui/base_button.cpp
-msgid "Button Mask"
-msgstr ""
-
-#: core/os/input_event.cpp scene/2d/node_2d.cpp scene/gui/control.cpp
-msgid "Global Position"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Factor"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Button Index"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Doubleclick"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Tilt"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Pressure"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Relative"
-msgstr ""
-
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/animation_player.cpp scene/resources/environment.cpp
-#: scene/resources/particles_material.cpp
-msgid "Speed"
-msgstr ""
-
-#: core/os/input_event.cpp editor/project_settings_editor.cpp
-#: scene/3d/sprite_3d.cpp
-msgid "Axis"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Axis Value"
-msgstr ""
-
-#: core/os/input_event.cpp modules/visual_script/visual_script_func_nodes.cpp
-msgid "Index"
-msgstr ""
-
-#: core/os/input_event.cpp editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/touch_screen_button.cpp
-msgid "Action"
-msgstr ""
-
-#: core/os/input_event.cpp scene/resources/environment.cpp
-#: scene/resources/material.cpp
-msgid "Strength"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Delta"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Channel"
-msgstr ""
-
-#: core/os/input_event.cpp main/main.cpp
-msgid "Message"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Pitch"
-msgstr ""
-
-#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
-msgid "Velocity"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Instrument"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Controller Number"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Controller Value"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-#: platform/windows/export/export.cpp
-msgid "Application"
-msgstr ""
-
-#: core/project_settings.cpp main/main.cpp
-msgid "Config"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Project Settings Override"
-msgstr ""
-
-#: core/project_settings.cpp core/resource.cpp
-#: editor/animation_track_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/editor_help_search.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_profiler.cpp editor/plugins/tile_set_editor_plugin.cpp
-#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp
-#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
-#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
-#: scene/3d/skeleton.cpp scene/main/node.cpp scene/resources/mesh_library.cpp
-#: scene/resources/skin.cpp
-msgid "Name"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
-msgid "Description"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
-msgid "Run"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/run_settings_dialog.cpp main/main.cpp
-msgid "Main Scene"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Disable stdout"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Disable stderr"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Use Hidden Project Data Directory"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Use Custom User Dir"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Custom User Dir Name"
-msgstr ""
-
-#: core/project_settings.cpp main/main.cpp
-#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
-#: platform/uwp/os_uwp.cpp
-msgid "Display"
-msgstr ""
-
-#: core/project_settings.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/opensimplex/noise_texture.cpp scene/2d/line_2d.cpp
-#: scene/3d/label_3d.cpp scene/gui/text_edit.cpp scene/resources/texture.cpp
-msgid "Width"
-msgstr ""
-
-#: core/project_settings.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/gltf/gltf_node.cpp modules/opensimplex/noise_texture.cpp
-#: scene/2d/light_2d.cpp scene/resources/capsule_shape.cpp
-#: scene/resources/capsule_shape_2d.cpp scene/resources/cylinder_shape.cpp
-#: scene/resources/font.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/primitive_meshes.cpp scene/resources/texture.cpp
-msgid "Height"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Always On Top"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Test Width"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Test Height"
-msgstr ""
-
-#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
-msgid "Audio"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Default Bus Layout"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_export.cpp
-#: editor/editor_file_system.cpp editor/editor_node.cpp
-#: editor/editor_settings.cpp editor/script_create_dialog.cpp
-#: scene/2d/camera_2d.cpp scene/3d/light.cpp scene/main/node.cpp
-msgid "Editor"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Main Run Args"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Search In File Extensions"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Script Templates Search Path"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr ""
-
-#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
-#: scene/3d/collision_object.cpp scene/gui/control.cpp
-msgid "Input"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Accept"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Select"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Cancel"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Focus Next"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Focus Prev"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Left"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Right"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Up"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Down"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Page Up"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Page Down"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Home"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI End"
-msgstr ""
-
-#: core/project_settings.cpp main/main.cpp modules/bullet/register_types.cpp
-#: modules/bullet/space_bullet.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp scene/main/scene_tree.cpp scene/main/viewport.cpp
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#: servers/physics/space_sw.cpp servers/physics_2d/physics_2d_server_sw.cpp
-#: servers/physics_2d/physics_2d_server_wrap_mt.h
-#: servers/physics_2d/space_2d_sw.cpp servers/physics_2d_server.cpp
-#: servers/physics_server.cpp
-msgid "Physics"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_settings.cpp
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp
-#: editor/plugins/spatial_editor_plugin.cpp main/main.cpp
-#: modules/bullet/register_types.cpp modules/bullet/space_bullet.cpp
-#: scene/3d/physics_body.cpp scene/resources/world.cpp
-#: servers/physics/space_sw.cpp servers/physics_server.cpp
-msgid "3D"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Smooth Trimesh Collision"
-msgstr ""
-
-#: core/project_settings.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles2/rasterizer_scene_gles2.cpp
-#: drivers/gles2/rasterizer_storage_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-#: drivers/gles3/rasterizer_storage_gles3.cpp main/main.cpp
-#: modules/lightmapper_cpu/register_types.cpp scene/main/scene_tree.cpp
-#: scene/main/viewport.cpp servers/visual/visual_server_scene.cpp
-#: servers/visual_server.cpp
-msgid "Rendering"
-msgstr ""
-
-#: core/project_settings.cpp drivers/gles2/rasterizer_storage_gles2.cpp
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-#: drivers/gles3/rasterizer_storage_gles3.cpp main/main.cpp
-#: modules/lightmapper_cpu/register_types.cpp scene/3d/baked_lightmap.cpp
-#: scene/main/scene_tree.cpp scene/resources/environment.cpp
-#: scene/resources/multimesh.cpp servers/visual/visual_server_scene.cpp
-#: servers/visual_server.cpp
-msgid "Quality"
-msgstr ""
-
-#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
-msgid "Filters"
-msgstr ""
-
-#: core/project_settings.cpp scene/main/viewport.cpp
-msgid "Sharpen Intensity"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
-#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp
-#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
-#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
-#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
-#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
-#: servers/visual_server.cpp
-msgid "Debug"
-msgstr ""
-
-#: core/project_settings.cpp main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/resources/dynamic_font.cpp
-msgid "Settings"
-msgstr ""
-
-#: core/project_settings.cpp editor/script_editor_debugger.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Profiler"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Max Functions"
-msgstr ""
-
-#: core/project_settings.cpp scene/3d/vehicle_body.cpp
-msgid "Compression"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Formats"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Zstd"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Long Distance Matching"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Compression Level"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Window Log Size"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Zlib"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Gzip"
-msgstr ""
-
-#: core/project_settings.cpp platform/android/export/export.cpp
-msgid "Android"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Modules"
-msgstr ""
-
-#: core/register_core_types.cpp
-msgid "TCP"
-msgstr ""
-
-#: core/register_core_types.cpp
-msgid "Connect Timeout Seconds"
-msgstr ""
-
-#: core/register_core_types.cpp
-msgid "Packet Peer Stream"
-msgstr ""
-
-#: core/register_core_types.cpp
-msgid "Max Buffer (Power of 2)"
-msgstr ""
-
-#: core/register_core_types.cpp editor/editor_settings.cpp main/main.cpp
-msgid "SSL"
-msgstr ""
-
-#: core/register_core_types.cpp main/main.cpp
-msgid "Certificates"
-msgstr ""
-
-#: core/resource.cpp editor/dependency_editor.cpp
-#: editor/editor_resource_picker.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Resource"
-msgstr ""
-
-#: core/resource.cpp
-msgid "Local To Scene"
-msgstr ""
-
-#: core/resource.cpp editor/dependency_editor.cpp
-#: editor/editor_autoload_settings.cpp editor/plugins/path_editor_plugin.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Path"
-msgstr ""
-
-#: core/script_language.cpp
-msgid "Source Code"
-msgstr ""
-
-#: core/translation.cpp editor/project_settings_editor.cpp
-msgid "Locale"
-msgstr ""
-
-#: core/translation.cpp
-msgid "Test"
-msgstr ""
-
-#: core/translation.cpp scene/resources/font.cpp
-msgid "Fallback"
-msgstr ""
-
-#: core/ustring.cpp scene/resources/segment_shape_2d.cpp
-msgid "B"
-msgstr ""
-
-#: core/ustring.cpp
-msgid "KiB"
-msgstr ""
-
-#: core/ustring.cpp
-msgid "MiB"
-msgstr ""
-
-#: core/ustring.cpp
-msgid "GiB"
-msgstr ""
-
-#: core/ustring.cpp
-msgid "TiB"
-msgstr ""
-
-#: core/ustring.cpp
-msgid "PiB"
-msgstr ""
-
-#: core/ustring.cpp
-msgid "EiB"
-msgstr ""
-
-#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles2/rasterizer_scene_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-#: drivers/gles3/rasterizer_storage_gles3.cpp modules/gltf/gltf_state.cpp
-msgid "Buffers"
-msgstr ""
-
-#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-msgid "Canvas Polygon Buffer Size (KB)"
-msgstr ""
-
-#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-msgid "Canvas Polygon Index Buffer Size (KB)"
-msgstr ""
-
-#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp editor/editor_settings.cpp
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp main/main.cpp
-#: scene/2d/physics_body_2d.cpp scene/resources/world_2d.cpp
-#: servers/physics_2d/physics_2d_server_sw.cpp
-#: servers/physics_2d/physics_2d_server_wrap_mt.h
-#: servers/physics_2d/space_2d_sw.cpp servers/physics_2d_server.cpp
-#: servers/visual_server.cpp
-msgid "2D"
-msgstr ""
-
-#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-msgid "Snapping"
-msgstr ""
-
-#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-msgid "Use GPU Pixel Snap"
-msgstr ""
-
-#: drivers/gles2/rasterizer_scene_gles2.cpp
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Immediate Buffer Size (KB)"
-msgstr ""
-
-#: drivers/gles2/rasterizer_storage_gles2.cpp
-#: drivers/gles3/rasterizer_storage_gles3.cpp
-msgid "Lightmapping"
-msgstr ""
-
-#: drivers/gles2/rasterizer_storage_gles2.cpp
-#: drivers/gles3/rasterizer_storage_gles3.cpp
-msgid "Use Bicubic Sampling"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Max Renderable Elements"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Max Renderable Lights"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Max Renderable Reflections"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Max Lights Per Object"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Subsurface Scattering"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp editor/animation_track_editor.cpp
-#: editor/import/resource_importer_texture.cpp
-#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
-#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
-#: scene/2d/remote_transform_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/remote_transform.cpp scene/3d/spatial.cpp
-#: scene/animation/animation_blend_tree.cpp scene/gui/control.cpp
-#: scene/main/canvas_layer.cpp scene/resources/environment.cpp
-#: scene/resources/material.cpp scene/resources/particles_material.cpp
-msgid "Scale"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Follow Surface"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Weight Samples"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Voxel Cone Tracing"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp scene/resources/environment.cpp
-msgid "High Quality"
-msgstr ""
-
-#: drivers/gles3/rasterizer_storage_gles3.cpp
-msgid "Blend Shape Max Buffer Size (KB)"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Free"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Balanced"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Mirror"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp editor/editor_profiler.cpp
-msgid "Time:"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Value:"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Insert Key Here"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Duplicate Selected Key(s)"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Delete Selected Key(s)"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Add Bezier Point"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Move Bezier Points"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
-msgid "Anim Duplicate Keys"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
-msgid "Anim Delete Keys"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Change Keyframe Time"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Change Transition"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Change Transform"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Change Keyframe Value"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Change Call"
-msgstr ""
-
-#: editor/animation_track_editor.cpp scene/2d/animated_sprite.cpp
-#: scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Frame"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_profiler.cpp
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/particles_material.cpp servers/visual_server.cpp
-msgid "Time"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
-#: platform/osx/export/export.cpp
-msgid "Location"
-msgstr ""
-
-#: editor/animation_track_editor.cpp modules/gltf/gltf_node.cpp
-#: scene/2d/polygon_2d.cpp scene/2d/remote_transform_2d.cpp
-#: scene/3d/remote_transform.cpp scene/3d/spatial.cpp scene/gui/control.cpp
-msgid "Rotation"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_nodes.cpp scene/gui/range.cpp
-msgid "Value"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Arg Count"
-msgstr ""
-
-#: editor/animation_track_editor.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Args"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_settings.cpp
-#: editor/script_editor_debugger.cpp modules/gltf/gltf_accessor.cpp
-#: modules/gltf/gltf_light.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/3d/physics_body.cpp scene/resources/visual_shader_nodes.cpp
-msgid "Type"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "In Handle"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Out Handle"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#: editor/import/resource_importer_texture.cpp
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Start Offset"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "End Offset"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_settings.cpp
-#: editor/import/resource_importer_scene.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
-#: scene/animation/animation_blend_tree.cpp
-#: scene/resources/particles_material.cpp
-msgid "Animation"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Easing"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Multi Change Keyframe Time"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Multi Change Transition"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Multi Change Transform"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Multi Change Keyframe Value"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Multi Change Call"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Change Animation Length"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Change Animation Loop"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Property Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "3D Transform Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Call Method Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Bezier Curve Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Audio Playback Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation Playback Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation length (frames)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation length (seconds)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Add Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation Looping"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Functions:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Audio Clips:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Clips:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Change Track Path"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Toggle this track on/off."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Update Mode (How this property is set)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp scene/resources/gradient.cpp
-msgid "Interpolation Mode"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Loop Wrap Mode (Interpolate end with beginning on loop)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Remove this track."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Time (s): "
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Toggle Track Enabled"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Continuous"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Discrete"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Trigger"
-msgstr ""
-
-#: editor/animation_track_editor.cpp scene/3d/baked_lightmap.cpp
-msgid "Capture"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Nearest"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/plugins/curve_editor_plugin.cpp
-#: editor/property_editor.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
-msgid "Linear"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Cubic"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Clamp Loop Interp"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Wrap Loop Interp"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Insert Key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Duplicate Key(s)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Add RESET Value(s)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Delete Key(s)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Change Animation Update Mode"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Change Animation Interpolation Mode"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Change Animation Loop Mode"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Remove Anim Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_settings.cpp
-#: editor/plugins/path_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Editors"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_settings.cpp
-msgid "Confirm Insert Track"
-msgstr ""
-
-#. TRANSLATORS: %s will be replaced by a phrase describing the target of track.
-#: editor/animation_track_editor.cpp
-msgid "Create NEW track for %s and insert key?"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Create %d NEW tracks and insert keys?"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp editor/editor_feature_profile.cpp
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#: editor/script_create_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Create"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Insert"
-msgstr ""
-
-#. TRANSLATORS: This describes the target of new animation track, will be inserted into another string.
-#: editor/animation_track_editor.cpp
-msgid "node '%s'"
-msgstr ""
-
-#. TRANSLATORS: This describes the target of new animation track, will be inserted into another string.
-#: editor/animation_track_editor.cpp
-msgid "animation"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "AnimationPlayer can't animate itself, only other players."
-msgstr ""
-
-#. TRANSLATORS: This describes the target of new animation track, will be inserted into another string.
-#: editor/animation_track_editor.cpp
-msgid "property '%s'"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Create & Insert"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Insert Track & Key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Insert Key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Change Animation Step"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Rearrange Tracks"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Transform tracks only apply to Spatial-based nodes."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid ""
-"Audio tracks can only point to nodes of type:\n"
-"-AudioStreamPlayer\n"
-"-AudioStreamPlayer2D\n"
-"-AudioStreamPlayer3D"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation tracks can only point to AnimationPlayer nodes."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Not possible to add a new track without a root"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Invalid track for Bezier (no suitable sub-properties)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Add Bezier Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Track path is invalid, so can't add a key."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Track is not of type Spatial, can't insert key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Add Transform Track Key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Add Track Key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Track path is invalid, so can't add a method key."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Add Method Track Key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Move Keys"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp scene/2d/node_2d.cpp
-#: scene/3d/spatial.cpp scene/main/canvas_layer.cpp
-#: servers/camera/camera_feed.cpp servers/physics_2d_server.cpp
-#: servers/physics_server.cpp
-msgid "Transform"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_help.cpp
-msgid "Methods"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Bezier"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Clipboard is empty!"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Paste Tracks"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Scale Keys"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid ""
-"This option does not work for Bezier editing, as it's only a single track."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Add RESET Keys"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid ""
-"This animation belongs to an imported scene, so changes to imported tracks "
-"will not be saved.\n"
-"\n"
-"To enable the ability to add custom tracks, navigate to the scene's import "
-"settings and set\n"
-"\"Animation > Storage\" to \"Files\", enable \"Animation > Keep Custom "
-"Tracks\", then re-import.\n"
-"Alternatively, use an import preset that imports animations to separate "
-"files."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Warning: Editing imported animation"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Select an AnimationPlayer node to create and edit animations."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Only show tracks from nodes selected in tree."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Group tracks by node or display them as plain list."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Snap:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation step value."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Seconds"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
-#: scene/resources/texture.cpp
-msgid "FPS"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation properties."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Copy Tracks"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Scale Selection"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Scale From Cursor"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Duplicate Selection"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Duplicate Transposed"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Delete Selection"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Go to Next Step"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Go to Previous Step"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Apply Reset"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Optimize Animation"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Clean-Up Animation"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Pick the node that will be animated:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Use Bezier Curves"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Create RESET Track(s)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim. Optimizer"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Max. Linear Error:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Max. Angular Error:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Max Optimizable Angle:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp scene/3d/room_manager.cpp
-#: servers/visual_server.cpp
-msgid "Optimize"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Remove invalid keys"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Remove unresolved and empty tracks"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Clean-up all animations"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Clean-Up Animation(s) (NO UNDO!)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Clean-Up"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Scale Ratio:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Select Tracks to Copy"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_resource_picker.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Copy"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Select All/None"
-msgstr ""
-
-#: editor/animation_track_editor_plugins.cpp
-msgid "Add Audio Track Clip"
-msgstr ""
-
-#: editor/animation_track_editor_plugins.cpp
-msgid "Change Audio Track Clip Start Offset"
-msgstr ""
-
-#: editor/animation_track_editor_plugins.cpp
-msgid "Change Audio Track Clip End Offset"
-msgstr ""
-
-#: editor/array_property_edit.cpp
-msgid "Resize Array"
-msgstr ""
-
-#: editor/array_property_edit.cpp
-msgid "Change Array Value Type"
-msgstr ""
-
-#: editor/array_property_edit.cpp
-msgid "Change Array Value"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Go to Line"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Line Number:"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "%d replaced."
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "%d match."
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "%d matches."
-msgstr ""
-
-#: editor/code_editor.cpp editor/find_in_files.cpp
-msgid "Match Case"
-msgstr ""
-
-#: editor/code_editor.cpp editor/find_in_files.cpp
-msgid "Whole Words"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr ""
-
-#: editor/code_editor.cpp editor/plugins/script_text_editor.cpp
-#: editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
-#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Toggle Scripts Panel"
-msgstr ""
-
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/texture_region_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
-msgid "Zoom In"
-msgstr ""
-
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/texture_region_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
-msgid "Zoom Out"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Reset Zoom"
-msgstr ""
-
-#: editor/code_editor.cpp modules/gdscript/gdscript.cpp
-msgid "Warnings"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Line and column numbers."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Method in target node must be specified."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Method name must be a valid identifier."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid ""
-"Target method not found. Specify a valid method or attach a script to the "
-"target node."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Connect to Node:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Connect to Script:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "From Signal:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Scene does not contain any script."
-msgstr ""
-
-#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
-#: editor/groups_editor.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Add"
-msgstr ""
-
-#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-msgid "Remove"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Add Extra Call Argument:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Extra Call Arguments:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Receiver Method:"
-msgstr ""
-
-#: editor/connections_dialog.cpp scene/3d/room_manager.cpp
-#: servers/visual_server.cpp
-msgid "Advanced"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Deferred"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid ""
-"Defers the signal, storing it in a queue and only firing it at idle time."
-msgstr ""
-
-#: editor/connections_dialog.cpp scene/resources/texture.cpp
-msgid "Oneshot"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Disconnects the signal after its first emission."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Cannot connect signal"
-msgstr ""
-
-#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/export_template_manager.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Close"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Connect"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Signal:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Connect '%s' to '%s'"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Disconnect '%s' from '%s'"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Disconnect all from signal: '%s'"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Connect..."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Disconnect"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Connect a Signal to a Method"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Edit Connection:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
-msgstr ""
-
-#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
-msgid "Signals"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Filter signals"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Are you sure you want to remove all connections from this signal?"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Disconnect All"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Edit..."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Go to Method"
-msgstr ""
-
-#: editor/create_dialog.cpp
-msgid "Change %s Type"
-msgstr ""
-
-#: editor/create_dialog.cpp editor/project_settings_editor.cpp
-msgid "Change"
-msgstr ""
-
-#: editor/create_dialog.cpp
-msgid "Create New %s"
-msgstr ""
-
-#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr ""
-
-#: editor/create_dialog.cpp editor/property_selector.cpp
-msgid "No description available for %s."
-msgstr ""
-
-#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/filesystem_dock.cpp
-msgid "Favorites:"
-msgstr ""
-
-#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
-msgid "Recent:"
-msgstr ""
-
-#: editor/create_dialog.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp editor/rename_dialog.cpp
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Search:"
-msgstr ""
-
-#: editor/create_dialog.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Matches:"
-msgstr ""
-
-#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Description:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Search Replacement For:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Dependencies For:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid ""
-"Scene '%s' is currently being edited.\n"
-"Changes will only take effect when reloaded."
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid ""
-"Resource '%s' is in use.\n"
-"Changes will only take effect when reloaded."
-msgstr ""
-
-#: editor/dependency_editor.cpp
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Dependencies"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Dependencies:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Fix Broken"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Dependency Editor"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Search Replacement Resource:"
-msgstr ""
-
-#: editor/dependency_editor.cpp editor/editor_file_dialog.cpp
-#: editor/editor_help_search.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/script_create_dialog.cpp
-#: modules/visual_script/visual_script_property_selector.cpp
-#: scene/gui/file_dialog.cpp
-msgid "Open"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid ""
-"Remove the selected files from the project? (Cannot be undone.)\n"
-"Depending on your filesystem configuration, the files will either be moved "
-"to the system trash or deleted permanently."
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid ""
-"The files being removed are required by other resources in order for them to "
-"work.\n"
-"Remove them anyway? (Cannot be undone.)\n"
-"Depending on your filesystem configuration, the files will either be moved "
-"to the system trash or deleted permanently."
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Cannot remove:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Error loading:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Load failed due to missing dependencies:"
-msgstr ""
-
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-msgid "Open Anyway"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Which action should be taken?"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Fix Dependencies"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Errors loading!"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Permanently delete %d item(s)? (No undo!)"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Show Dependencies"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Orphan Resource Explorer"
-msgstr ""
-
-#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
-#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
-#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
-msgid "Delete"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Owns"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Resources Without Explicit Ownership:"
-msgstr ""
-
-#: editor/dictionary_property_edit.cpp
-msgid "Change Dictionary Key"
-msgstr ""
-
-#: editor/dictionary_property_edit.cpp
-msgid "Change Dictionary Value"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Thanks from the Godot community!"
-msgstr ""
-
-#: editor/editor_about.cpp editor/editor_node.cpp editor/project_manager.cpp
-msgid "Click to copy."
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Project Founders"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Lead Developer"
-msgstr ""
-
-#. TRANSLATORS: This refers to a job title.
-#: editor/editor_about.cpp
-msgctxt "Job Title"
-msgid "Project Manager"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Authors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Platinum Sponsors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Gold Sponsors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Silver Sponsors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Bronze Sponsors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Mini Sponsors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Gold Donors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Silver Donors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Bronze Donors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Donors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "License"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Third-party Licenses"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid ""
-"Godot Engine relies on a number of third-party free and open source "
-"libraries, all compatible with the terms of its MIT license. The following "
-"is an exhaustive list of all such third-party components with their "
-"respective copyright statements and license terms."
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "All Components"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Components"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Licenses"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "Error opening asset file for \"%s\" (not in ZIP format)."
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "%s (already exists)"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "Contents of asset \"%s\" - No files conflict with your project:"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "Uncompressing Assets"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "The following files failed extraction from asset \"%s\":"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "(and %s more files)"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "Asset \"%s\" installed successfully!"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Success!"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp editor/editor_node.cpp
-msgid "Install"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "Asset Installer"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Speakers"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Add Effect"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Rename Audio Bus"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Change Audio Bus Volume"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Toggle Audio Bus Solo"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Toggle Audio Bus Mute"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Toggle Audio Bus Bypass Effects"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Select Audio Bus Send"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Add Audio Bus Effect"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Move Bus Effect"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Delete Bus Effect"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Drag & drop to rearrange."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Solo"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Mute"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Bypass"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Bus Options"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
-msgid "Duplicate"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Reset Volume"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Delete Effect"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Add Audio Bus"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Master bus can't be deleted!"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Delete Audio Bus"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Duplicate Audio Bus"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Reset Bus Volume"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Move Audio Bus"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Save Audio Bus Layout As..."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Location for New Layout..."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Open Audio Bus Layout"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "There is no '%s' file."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Invalid file, not an audio bus layout."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Error saving file: %s"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Add Bus"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Add a new Audio Bus to this layout."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_create_dialog.cpp
-msgid "Load"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Load an existing Bus Layout."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Save As"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Save this Bus Layout to a file."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp editor/import_dock.cpp
-msgid "Load Default"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Load the default Bus Layout."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Create a new Bus Layout."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Audio Bus Layout"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Invalid name."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Cannot begin with a digit."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Valid characters:"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Must not collide with an existing engine class name."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Must not collide with an existing built-in type name."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Must not collide with an existing global constant name."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Keyword cannot be used as an autoload name."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Autoload '%s' already exists!"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Rename Autoload"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Toggle AutoLoad Globals"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Move Autoload"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Remove Autoload"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
-#: platform/osx/export/export.cpp platform/windows/export/export.cpp
-#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
-#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
-#: scene/resources/material.cpp servers/visual_server.cpp
-msgid "Enable"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Rearrange Autoloads"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Can't add autoload:"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "%s is an invalid path. File does not exist."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "%s is an invalid path. Not in resource path (res://)."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Add AutoLoad"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp
-#: editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/script_create_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Path:"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Node Name:"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Global Variable"
-msgstr ""
-
-#: editor/editor_data.cpp
-msgid "Paste Params"
-msgstr ""
-
-#: editor/editor_data.cpp
-msgid "Updating Scene"
-msgstr ""
-
-#: editor/editor_data.cpp
-msgid "Storing local changes..."
-msgstr ""
-
-#: editor/editor_data.cpp
-msgid "Updating scene..."
-msgstr ""
-
-#: editor/editor_data.cpp editor/editor_resource_picker.cpp
-msgid "[empty]"
-msgstr ""
-
-#: editor/editor_data.cpp editor/plugins/script_text_editor.cpp
-#: editor/plugins/text_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "[unsaved]"
-msgstr ""
-
-#: editor/editor_dir_dialog.cpp
-msgid "Please select a base directory first."
-msgstr ""
-
-#: editor/editor_dir_dialog.cpp
-msgid "Choose a Directory"
-msgstr ""
-
-#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/filesystem_dock.cpp editor/project_manager.cpp
-#: scene/gui/file_dialog.cpp
-msgid "Create Folder"
-msgstr ""
-
-#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
-#: editor/script_create_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp scene/gui/file_dialog.cpp
-msgid "Name:"
-msgstr ""
-
-#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
-msgid "Could not create folder."
-msgstr ""
-
-#: editor/editor_dir_dialog.cpp
-msgid "Choose"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Storing File:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "No export template found at the expected path:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Packing"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid ""
-"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
-"Etc' in Project Settings."
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid ""
-"Target platform requires 'ETC2' texture compression for GLES3. Enable "
-"'Import Etc 2' in Project Settings."
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid ""
-"Target platform requires 'ETC' texture compression for the driver fallback "
-"to GLES2.\n"
-"Enable 'Import Etc' in Project Settings, or disable 'Driver Fallback "
-"Enabled'."
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid ""
-"Target platform requires 'PVRTC' texture compression for GLES2. Enable "
-"'Import Pvrtc' in Project Settings."
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid ""
-"Target platform requires 'ETC2' or 'PVRTC' texture compression for GLES3. "
-"Enable 'Import Etc 2' or 'Import Pvrtc' in Project Settings."
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid ""
-"Target platform requires 'PVRTC' texture compression for the driver fallback "
-"to GLES2.\n"
-"Enable 'Import Pvrtc' in Project Settings, or disable 'Driver Fallback "
-"Enabled'."
-msgstr ""
-
-#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
-#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-msgid "Custom Template"
-msgstr ""
-
-#: editor/editor_export.cpp editor/project_export.cpp
-#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
-#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
-#: platform/uwp/export/export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Binary Format"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "64 Bits"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Embed PCK"
-msgstr ""
-
-#: editor/editor_export.cpp platform/osx/export/export.cpp
-msgid "Texture Format"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "BPTC"
-msgstr ""
-
-#: editor/editor_export.cpp platform/osx/export/export.cpp
-msgid "S3TC"
-msgstr ""
-
-#: editor/editor_export.cpp platform/osx/export/export.cpp
-msgid "ETC"
-msgstr ""
-
-#: editor/editor_export.cpp platform/osx/export/export.cpp
-msgid "ETC2"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "No BPTC Fallbacks"
-msgstr ""
-
-#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
-#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-msgid "Custom debug template not found."
-msgstr ""
-
-#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
-#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-msgid "Custom release template not found."
-msgstr ""
-
-#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Convert Text Resources To Binary On Export"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "3D Editor"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Script Editor"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
-msgid "Asset Library"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Scene Tree Editing"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Node Dock"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "FileSystem Dock"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Import Dock"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Allows to view and edit 3D scenes."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Allows to edit scripts using the integrated script editor."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Provides built-in access to the Asset Library."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Allows editing the node hierarchy in the Scene dock."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid ""
-"Allows to work with signals and groups of the node selected in the Scene "
-"dock."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Allows to browse the local file system via a dedicated dock."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid ""
-"Allows to configure import settings for individual assets. Requires the "
-"FileSystem dock to function."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "(current)"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "(none)"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Remove currently selected profile, '%s'? Cannot be undone."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Profile must be a valid filename and must not contain '.'"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Profile with this name already exists."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "(Editor Disabled, Properties Disabled)"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "(Properties Disabled)"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "(Editor Disabled)"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Class Options:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Enable Contextual Editor"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Class Properties:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Main Features:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Nodes and Classes:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "File '%s' format is invalid, import aborted."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid ""
-"Profile '%s' already exists. Remove it first before importing, import "
-"aborted."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Error saving profile to path: '%s'."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Reset to Default"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Current Profile:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Create Profile"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Remove Profile"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/import/resource_importer_scene.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: modules/fbx/editor_scene_importer_fbx.cpp
-msgid "Import"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
-msgid "Export"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Configure Selected Profile:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Extra Options:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Create or import a profile to edit available classes and properties."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Godot Feature Profile"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Import Profile(s)"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Export Profile"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Manage Editor Feature Profiles"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Default Feature Profile"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Select Current Folder"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File exists, overwrite?"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Select This Folder"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-msgid "Copy Path"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-msgid "Open in File Manager"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/project_manager.cpp
-msgid "Show in File Manager"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-msgid "New Folder..."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/find_in_files.cpp
-msgid "Refresh"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "All Recognized"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "All Files (*)"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
-msgid "Save"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Save a File"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Access"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/editor_settings.cpp
-msgid "Display Mode"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp
-#: editor/import/resource_importer_wav.cpp main/main.cpp
-#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/light_2d.cpp scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
-#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
-#: scene/gui/control.cpp scene/gui/file_dialog.cpp
-#: scene/resources/environment.cpp scene/resources/material.cpp
-#: scene/resources/visual_shader.cpp
-#: servers/audio/effects/audio_effect_distortion.cpp
-msgid "Mode"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Current Dir"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Current File"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Current Path"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/editor_settings.cpp
-#: scene/gui/file_dialog.cpp
-msgid "Show Hidden Files"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Disable Overwrite Warning"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Go Back"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Go Forward"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Go Up"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Toggle Hidden Files"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Toggle Favorite"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/editor_resource_picker.cpp
-#: scene/gui/base_button.cpp
-msgid "Toggle Mode"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Focus Path"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Move Favorite Up"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Move Favorite Down"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Go to previous folder."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Go to next folder."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Go to parent folder."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Refresh files."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "(Un)favorite current folder."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Toggle the visibility of hidden files."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-msgid "View items as a grid of thumbnails."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-msgid "View items as a list."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Directories & Files:"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Preview:"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-#: editor/plugins/version_control_editor_plugin.cpp scene/gui/file_dialog.cpp
-msgid "File:"
-msgstr ""
-
-#: editor/editor_file_system.cpp
-msgid "ScanSources"
-msgstr ""
-
-#: editor/editor_file_system.cpp
-msgid ""
-"There are multiple importers for different types pointing to file %s, import "
-"aborted"
-msgstr ""
-
-#: editor/editor_file_system.cpp
-msgid "(Re)Importing Assets"
-msgstr ""
-
-#: editor/editor_file_system.cpp
-msgid "Reimport Missing Imported Files"
-msgstr ""
-
-#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
-#: scene/resources/style_box.cpp scene/resources/texture.cpp
-msgid "Top"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Class:"
-msgstr ""
-
-#: editor/editor_help.cpp editor/scene_tree_editor.cpp
-#: editor/script_create_dialog.cpp
-msgid "Inherits:"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Inherited by:"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Online Tutorials"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Properties"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "overrides %s:"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "default:"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Theme Properties"
-msgstr ""
-
-#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/gradient.cpp
-msgid "Colors"
-msgstr ""
-
-#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Constants"
-msgstr ""
-
-#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Fonts"
-msgstr ""
-
-#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
-#: platform/iphone/export/export.cpp
-msgid "Icons"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Styles"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Enumerations"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Property Descriptions"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "(value)"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid ""
-"There is currently no description for this property. Please help us by "
-"[color=$color][url=$url]contributing one[/url][/color]!"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Method Descriptions"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid ""
-"There is currently no description for this method. Please help us by "
-"[color=$color][url=$url]contributing one[/url][/color]!"
-msgstr ""
-
-#: editor/editor_help.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: modules/gdscript/editor/gdscript_highlighter.cpp
-#: modules/gdscript/gdscript_editor.cpp
-msgid "Text Editor"
-msgstr ""
-
-#: editor/editor_help.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Help"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Sort Functions Alphabetically"
-msgstr ""
-
-#: editor/editor_help_search.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Search Help"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Case Sensitive"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Show Hierarchy"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Display All"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Classes Only"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Methods Only"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Signals Only"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Constants Only"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Properties Only"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Theme Properties Only"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Member Type"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Class"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Method"
-msgstr ""
-
-#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Signal"
-msgstr ""
-
-#: editor/editor_help_search.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Constant"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Property"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Theme Property"
-msgstr ""
-
-#: editor/editor_inspector.cpp editor/project_settings_editor.cpp
-msgid "Property:"
-msgstr ""
-
-#: editor/editor_inspector.cpp editor/editor_spin_slider.cpp
-msgid "Label"
-msgstr ""
-
-#: editor/editor_inspector.cpp editor/editor_spin_slider.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Read Only"
-msgstr ""
-
-#: editor/editor_inspector.cpp editor/plugins/item_list_editor_plugin.cpp
-msgid "Checkable"
-msgstr ""
-
-#: editor/editor_inspector.cpp editor/plugins/item_list_editor_plugin.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Checked"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Draw Red"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Keying"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Pin value"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid ""
-"Pinning a value forces it to be saved even if it's equal to the default."
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Pin value [Disabled because '%s' is editor-only]"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Set Multiple:"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Pinned %s"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Unpinned %s"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Copy Property"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Paste Property"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Copy Property Path"
-msgstr ""
-
-#: editor/editor_log.cpp
-msgid "Output:"
-msgstr ""
-
-#: editor/editor_log.cpp editor/plugins/tile_map_editor_plugin.cpp
-msgid "Copy Selection"
-msgstr ""
-
-#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/property_editor.cpp editor/scene_tree_dock.cpp
-#: editor/script_editor_debugger.cpp
-#: modules/gdnative/gdnative_library_editor_plugin.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Clear"
-msgstr ""
-
-#: editor/editor_log.cpp
-msgid "Clear Output"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp editor/editor_node.cpp
-#: editor/editor_profiler.cpp
-msgid "Stop"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp editor/editor_profiler.cpp
-#: editor/plugins/animation_state_machine_editor.cpp editor/rename_dialog.cpp
-msgid "Start"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "%s/s"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "Down"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "Up"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp editor/editor_node.cpp
-#: scene/main/node.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Node"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "Incoming RPC"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "Incoming RSET"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "Outgoing RPC"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "Outgoing RSET"
-msgstr ""
-
-#: editor/editor_node.cpp editor/project_manager.cpp
-msgid "New Window"
-msgstr ""
-
-#: editor/editor_node.cpp editor/project_manager.cpp
-msgid "Unnamed Project"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Spins when the editor window redraws.\n"
-"Update Continuously is enabled, which can increase power usage. Click to "
-"disable it."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Spins when the editor window redraws."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Imported resources can't be saved."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-msgid "Error saving resource!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This resource can't be saved because it does not belong to the edited scene. "
-"Make it unique first."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-msgid "Save Resource As..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Can't open file for writing:"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Requested file format unknown:"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Error while saving."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Can't open '%s'. The file could have been moved or deleted."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Error while parsing '%s'."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Unexpected end of file '%s'."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Missing '%s' or its dependencies."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Error while loading '%s'."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Saving Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Analyzing"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Creating Thumbnail"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "This operation can't be done without a tree root."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This scene can't be saved because there is a cyclic instancing inclusion.\n"
-"Please resolve it and then attempt to save again."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
-"be satisfied."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Could not save one or more scenes!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
-msgid "Can't overwrite scene that is still open!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Can't load MeshLibrary for merging!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Error saving MeshLibrary!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Can't load TileSet for merging!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Error saving TileSet!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"An error occurred while trying to save the editor layout.\n"
-"Make sure the editor's user data path is writable."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Default editor layout overridden.\n"
-"To restore the Default layout to its base settings, use the Delete Layout "
-"option and delete the Default layout."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Layout name not found!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Restored the Default layout to its base settings."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This resource belongs to a scene that was imported, so it's not editable.\n"
-"Please read the documentation relevant to importing scenes to better "
-"understand this workflow."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This resource belongs to a scene that was instanced or inherited.\n"
-"Changes to it won't be kept when saving the current scene."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This resource was imported, so it's not editable. Change its settings in the "
-"import panel and then re-import."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This scene was imported, so changes to it won't be kept.\n"
-"Instancing it or inheriting will allow making changes to it.\n"
-"Please read the documentation relevant to importing scenes to better "
-"understand this workflow."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This is a remote object, so changes to it won't be kept.\n"
-"Please read the documentation relevant to debugging to better understand "
-"this workflow."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "There is no defined scene to run."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save scene before running..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Could not start subprocess!"
-msgstr ""
-
-#: editor/editor_node.cpp editor/filesystem_dock.cpp
-msgid "Open Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Base Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Quick Open..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Quick Open Scene..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Quick Open Script..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save & Reload"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save changes to '%s' before reloading?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save & Close"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save changes to '%s' before closing?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "%s no longer exists! Please specify a new save location."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"The current scene has no root node, but %d modified external resource(s) "
-"were saved anyway."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"A root node is required to save the scene. You can add a root node using the "
-"Scene tree dock."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save Scene As..."
-msgstr ""
-
-#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
-msgid "This operation can't be done without a scene."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Export Mesh Library"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "This operation can't be done without a root node."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Export Tile Set"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "This operation can't be done without a selected node."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Current scene not saved. Open anyway?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Can't undo while mouse buttons are pressed."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Nothing to undo."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Undo: %s"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Can't redo while mouse buttons are pressed."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Nothing to redo."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Redo: %s"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Can't reload a scene that was never saved."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Reload Saved Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"The current scene has unsaved changes.\n"
-"Reload the saved scene anyway? This action cannot be undone."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Quick Run Scene..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Quit"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Yes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Exit the editor?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Project Manager?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save changes to the following scene(s) before reloading?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save & Quit"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save changes to the following scene(s) before quitting?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save changes to the following scene(s) before opening Project Manager?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This option is deprecated. Situations where refresh must be forced are now "
-"considered a bug. Please report."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Pick a Main Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Close Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Reopen Closed Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: '%s'."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '%s'."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Unable to load addon script from path: '%s'. This might be due to a code "
-"error in that script.\n"
-"Disabling the addon at '%s' to prevent further errors."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Scene '%s' was automatically imported, so it can't be modified.\n"
-"To make changes to it, a new inherited scene can be created."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Error loading scene, it must be inside the project path. Use 'Import' to "
-"open the scene, then save it inside the project path."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene '%s' has broken dependencies:"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Clear Recent Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"No main scene has ever been defined, select one?\n"
-"You can change it later in \"Project Settings\" under the 'application' "
-"category."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Selected scene '%s' does not exist, select a valid one?\n"
-"You can change it later in \"Project Settings\" under the 'application' "
-"category."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Selected scene '%s' is not a scene file, select a valid one?\n"
-"You can change it later in \"Project Settings\" under the 'application' "
-"category."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save Layout"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Delete Layout"
-msgstr ""
-
-#: editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_resource_picker.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
-msgid "Show in FileSystem"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play This Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Close Tab"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Undo Close Tab"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Close Other Tabs"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Close Tabs to the Right"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Close All Tabs"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Switch Scene Tab"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "%d more files or folders"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "%d more folders"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "%d more files"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Unable to write to file '%s', file in use, locked or lacking permissions."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
-#: servers/arvr/arvr_interface.cpp
-msgid "Interface"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Scene Tabs"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Always Show Close Button"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Resize If Many Tabs"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Minimum Width"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Output"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Always Clear Output On Play"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Always Open Output On Play"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Always Close Output On Stop"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save On Focus Loss"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Save Each Scene On Quit"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Quit Confirmation"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Show Update Spinner"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Update Continuously"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Update Vital Only"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Localize Settings"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Restore Scenes On Load"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Show Thumbnail On Hover"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Inspector"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Default Property Name Style"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Default Float Step"
-msgstr ""
-
-#: editor/editor_node.cpp scene/gui/tree.cpp
-msgid "Disable Folding"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Auto Unfold Foreign Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Horizontal Vector2 Editing"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Horizontal Vector Types Editing"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Resources In Current Inspector"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Resources To Open In New Inspector"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Default Color Picker Mode"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
-msgid "Username"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
-msgid "SSH Public Key Path"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
-msgid "SSH Private Key Path"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Dock Position"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_plugin.cpp
-msgid "Distraction Free Mode"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Toggle distraction-free mode."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Add a new scene."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Go to previously opened scene."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Copy Text"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Next tab"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Previous tab"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Filter Files..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Operations with scene files."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "New Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "New Inherited Scene..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Scene..."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Open Recent"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Convert To..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "MeshLibrary..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "TileSet..."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Undo"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Redo"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Miscellaneous project or scene-wide tools."
-msgstr ""
-
-#: editor/editor_node.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp modules/mono/editor/csharp_project.cpp
-msgid "Project"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Project Settings..."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
-msgid "Set Up Version Control"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Shut Down Version Control"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Export..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Install Android Build Template..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open User Data Folder"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tools"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Orphan Resource Explorer..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Reload Current Project"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Quit to Project List"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Deploy with Remote Debug"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, using one-click deploy will make the executable "
-"attempt to connect to this computer's IP so the running project can be "
-"debugged.\n"
-"This option is intended to be used for remote debugging (typically with a "
-"mobile device).\n"
-"You don't need to enable it to use the GDScript debugger locally."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Small Deploy with Network Filesystem"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, using one-click deploy for Android will only "
-"export an executable without the project data.\n"
-"The filesystem will be provided from the project by the editor over the "
-"network.\n"
-"On Android, deploying will use the USB cable for faster performance. This "
-"option speeds up testing for projects with large assets."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Visible Collision Shapes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, collision shapes and raycast nodes (for 2D and "
-"3D) will be visible in the running project."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Visible Navigation"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, navigation meshes and polygons will be visible "
-"in the running project."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Force Shader Fallbacks"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, shaders will be used in their fallback form "
-"(either visible via an ubershader or hidden) during all the run time.\n"
-"This is useful for verifying the look and performance of fallbacks, which "
-"are normally displayed briefly.\n"
-"Asynchronous shader compilation must be enabled in the project settings for "
-"this option to make a difference."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Synchronize Scene Changes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, any changes made to the scene in the editor "
-"will be replicated in the running project.\n"
-"When used remotely on a device, this is more efficient when the network "
-"filesystem option is enabled."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Synchronize Script Changes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, any script that is saved will be reloaded in "
-"the running project.\n"
-"When used remotely on a device, this is more efficient when the network "
-"filesystem option is enabled."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Editor Settings..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Editor Layout"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Take Screenshot"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Screenshots are stored in the Editor Data/Settings Folder."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Toggle Fullscreen"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Editor Data/Settings Folder"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Editor Data Folder"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Editor Settings Folder"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Manage Editor Features..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Manage Export Templates..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Online Documentation"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Questions & Answers"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Report a Bug"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Suggest a Feature"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Send Docs Feedback"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
-msgid "Community"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "About Godot"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Support Godot Development"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play the project."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Pause the scene execution for debugging."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Pause Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Stop the scene."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play the edited scene."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play custom scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play Custom Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Changing the video driver requires restarting the editor."
-msgstr ""
-
-#: editor/editor_node.cpp editor/project_settings_editor.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Save & Restart"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Update All Changes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Update Vital Changes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Hide Update Spinner"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/fileserver/editor_file_server.cpp
-#: modules/fbx/editor_scene_importer_fbx.cpp
-msgid "FileSystem"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Expand Bottom Panel"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Don't Save"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Android build template is missing, please install relevant templates."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Manage Templates"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Install from file"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Select android sources file"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This will set up your project for custom Android builds by installing the "
-"source template to \"res://android/build\".\n"
-"You can then apply modifications and build your own custom APK on export "
-"(adding modules, changing the AndroidManifest.xml, etc.).\n"
-"Note that in order to make custom builds instead of using pre-built APKs, "
-"the \"Use Custom Build\" option should be enabled in the Android export "
-"preset."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"The Android build template is already installed in this project and it won't "
-"be overwritten.\n"
-"Remove the \"res://android/build\" directory manually before attempting this "
-"operation again."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Import Templates From ZIP File"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Template Package"
-msgstr ""
-
-#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
-msgid "Export Library"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Merge With Existing"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Apply MeshInstance Transforms"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open & Run a Script"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"The following files are newer on disk.\n"
-"What action should be taken?"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Reload"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Resave"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "New Inherited"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Load Errors"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Select"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Select Current"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open 2D Editor"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open 3D Editor"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Script Editor"
-msgstr ""
-
-#: editor/editor_node.cpp editor/project_manager.cpp
-msgid "Open Asset Library"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open the next Editor"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open the previous Editor"
-msgstr ""
-
-#: editor/editor_node.h
-msgid "Warning!"
-msgstr ""
-
-#: editor/editor_path.cpp
-msgid "No sub-resources found."
-msgstr ""
-
-#: editor/editor_path.cpp
-msgid "Open a list of sub-resources."
-msgstr ""
-
-#: editor/editor_plugin.cpp
-msgid "Creating Mesh Previews"
-msgstr ""
-
-#: editor/editor_plugin.cpp
-msgid "Thumbnail..."
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp
-msgid "Main Script:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp
-msgid "Edit Plugin"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp
-msgid "Installed Plugins:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: scene/2d/remote_transform_2d.cpp scene/3d/remote_transform.cpp
-msgid "Update"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-#: platform/uwp/export/export.cpp
-msgid "Version"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp
-msgid "Author"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Measure:"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Frame Time (ms)"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Average Time (ms)"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Frame %"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Physics Frame %"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Inclusive"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Self"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid ""
-"Inclusive: Includes time from other functions called by this function.\n"
-"Use this to spot bottlenecks.\n"
-"\n"
-"Self: Only count the time spent in the function itself, not in other "
-"functions called by that function.\n"
-"Use this to find individual functions to optimize."
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Frame #:"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Calls"
-msgstr ""
-
-#: editor/editor_profiler.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Debugger"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Profiler Frame History Size"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Profiler Frame Max Functions"
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid "Edit Text:"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/script_create_dialog.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "On"
-msgstr ""
-
-#: editor/editor_properties.cpp modules/gridmap/grid_map.cpp
-#: scene/2d/collision_object_2d.cpp scene/2d/tile_map.cpp
-#: scene/3d/collision_object.cpp scene/3d/soft_body.cpp
-#: scene/main/canvas_layer.cpp
-msgid "Layer"
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid "Bit %d, value %d"
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid "[Empty]"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/plugins/root_motion_editor_plugin.cpp
-msgid "Assign..."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid "Invalid RID"
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
-"Can't create a ViewportTexture on resources saved as a file.\n"
-"Resource needs to belong to a scene."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
-"Can't create a ViewportTexture on this resource because it's not set as "
-"local to scene.\n"
-"Please switch on the 'local to scene' property on it (and all resources "
-"containing it up to a node)."
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Pick a Viewport"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Selected node is not a Viewport!"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Item"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "New Key:"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "New Value:"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Add Key/Value Pair"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp
-msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_resource_picker.cpp
-msgid "Quick Load"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp editor/property_editor.cpp
-msgid "Convert to %s"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp editor/plugins/theme_editor_plugin.cpp
-#: modules/visual_script/visual_script_flow_control.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Base Type"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp
-msgid "Edited Resource"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp scene/gui/line_edit.cpp
-#: scene/gui/slider.cpp scene/gui/spin_box.cpp
-msgid "Editable"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp
-msgid "Script Owner"
-msgstr ""
-
-#: editor/editor_run_native.cpp
-msgid ""
-"No runnable export preset found for this platform.\n"
-"Please add a runnable preset in the Export menu or define an existing preset "
-"as runnable."
-msgstr ""
-
-#: editor/editor_run_script.cpp
-msgid "Write your logic in the _run() method."
-msgstr ""
-
-#: editor/editor_run_script.cpp
-msgid "There is an edited scene already."
-msgstr ""
-
-#: editor/editor_run_script.cpp
-msgid "Couldn't instance script:"
-msgstr ""
-
-#: editor/editor_run_script.cpp
-msgid "Did you forget the 'tool' keyword?"
-msgstr ""
-
-#: editor/editor_run_script.cpp
-msgid "Couldn't run script:"
-msgstr ""
-
-#: editor/editor_run_script.cpp
-msgid "Did you forget the '_run' method?"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Editor Language"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Display Scale"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Custom Display Scale"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Main Font Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Code Font Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Font Antialiased"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Font Hinting"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Main Font"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Main Font Bold"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Code Font"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Dim Editor On Dialog Popup"
-msgstr ""
-
-#: editor/editor_settings.cpp main/main.cpp
-msgid "Low Processor Mode Sleep (µsec)"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Unfocused Low Processor Mode Sleep (µsec)"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Separate Distraction Mode"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Automatically Open Screenshots"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Max Array Dictionary Items Per Page"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp scene/gui/control.cpp
-#: scene/register_scene_types.cpp
-msgid "Theme"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/import_dock.cpp
-msgid "Preset"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Icon And Font Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Base Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Accent Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/environment.cpp
-msgid "Contrast"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Relationship Line Opacity"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Highlight Tabs"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Border Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Use Graph Node Headers"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Additional Spacing"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Custom Theme"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Script Button"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Directories"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Autoscan Project Path"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Default Project Path"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "On Save"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Compress Binary Resources"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Safe Save On Backup Then Rename"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "File Dialog"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Thumbnail Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Docks"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Scene Tree"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Start Create Dialog Fully Expanded"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Always Show Folders"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Property Editor"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Auto Refresh Interval"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Subresource Hue Tint"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Color Theme"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/3d/label_3d.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Line Spacing"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_text_editor.cpp
-#: modules/gdscript/editor/gdscript_highlighter.cpp
-msgid "Highlighting"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Syntax Highlighting"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Highlight All Occurrences"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Highlight Current Line"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_text_editor.cpp
-msgid "Highlight Type Safe Lines"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Indent"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_text_editor.cpp
-msgid "Auto Indent"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Convert Indent On Save"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Draw Tabs"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Draw Spaces"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
-msgid "Navigation"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Smooth Scrolling"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "V Scroll Speed"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Minimap"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Minimap Width"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Mouse Extra Buttons Navigate History"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Appearance"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Show Line Numbers"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Line Numbers Zero Padded"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Bookmark Gutter"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Breakpoint Gutter"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Info Gutter"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Code Folding"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Word Wrap"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Line Length Guidelines"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Line Length Guideline Soft Column"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Line Length Guideline Hard Column"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Script List"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Members Overview"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Files"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Trim Trailing Whitespace On Save"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Autosave Interval Secs"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Restore Scripts On Load"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Auto Reload And Parse Scripts On Save"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Auto Reload Scripts On External Change"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Create Signal Callbacks"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Sort Members Outline Alphabetically"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Cursor"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Scroll Past End Of File"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Block Caret"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Caret Blink"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Caret Blink Speed"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Right Click Moves Caret"
-msgstr ""
-
-#: editor/editor_settings.cpp modules/gdscript/gdscript.cpp
-#: modules/gdscript/gdscript_editor.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Completion"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Idle Parse Delay"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Auto Brace Complete"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Code Complete Delay"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Put Callhint Tooltip Below Current Line"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Callhint Tooltip Offset"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Complete File Paths"
-msgstr ""
-
-#: editor/editor_settings.cpp modules/gdscript/gdscript_editor.cpp
-msgid "Add Type Hints"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Use Single Quotes"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Help Index"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Help Font Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Help Source Font Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Help Title Font Size"
-msgstr ""
-
-#: editor/editor_settings.cpp modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Grid Map"
-msgstr ""
-
-#: editor/editor_settings.cpp modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Pick Distance"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/tile_map_editor_plugin.cpp
-msgid "Preview Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Primary Grid Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Secondary Grid Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Selection Box Color"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/path_editor_plugin.cpp
-#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
-msgid "3D Gizmos"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/path_editor_plugin.cpp
-#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
-msgid "Gizmo Colors"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Instanced"
-msgstr ""
-
-#: editor/editor_settings.cpp modules/gltf/gltf_node.cpp
-#: scene/3d/physics_body.cpp
-msgid "Joint"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/2d/collision_shape_2d.cpp
-#: scene/2d/cpu_particles_2d.cpp scene/2d/touch_screen_button.cpp
-#: scene/3d/collision_shape.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/occluder.cpp scene/3d/spring_arm.cpp
-#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
-#: servers/physics_server.cpp
-msgid "Shape"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Primary Grid Steps"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid Division Level Max"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid Division Level Min"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid Division Level Bias"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid XZ Plane"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid XY Plane"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid YZ Plane"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Default FOV"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Default Z Near"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Default Z Far"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Lightmap Baking Number Of CPU Threads"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Navigation Scheme"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Invert Y Axis"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Invert X Axis"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Zoom Style"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Emulate Numpad"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Emulate 3 Button Mouse"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Orbit Modifier"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Pan Modifier"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Zoom Modifier"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-msgid "Warped Mouse Panning"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Navigation Feel"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Orbit Sensitivity"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Orbit Inertia"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Translation Inertia"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Zoom Inertia"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook Navigation Scheme"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook Sensitivity"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook Inertia"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook Base Speed"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook Activation Modifier"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook Speed Zoom Link"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/tile_map_editor_plugin.cpp
-msgid "Grid Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Guides Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Smart Snapping Line Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone Width"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone Color 1"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone Color 2"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone Selected Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone IK Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone Outline Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone Outline Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Viewport Border Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Constrain Editor View"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Simple Panning"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Scroll To Pan"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Pan Speed"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Poly Editor"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Point Grab Radius"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Previous Outline"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/scene_tree_dock.cpp
-msgid "Autorename Animation Tracks"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Default Create Bezier Tracks"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Default Create Reset Tracks"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Onion Layers Past Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Onion Layers Future Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Visual Editors"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Minimap Opacity"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Window Placement"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/2d/back_buffer_copy.cpp scene/2d/sprite.cpp
-#: scene/2d/visibility_notifier_2d.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/control.cpp
-msgid "Rect"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Rect Custom Position"
-msgstr ""
-
-#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
-msgid "Screen"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Auto Save"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Save Before Running"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Font Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-msgid "Remote Host"
-msgstr ""
-
-#: editor/editor_settings.cpp
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-msgid "Remote Port"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Editor SSL Certificates"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Project Manager"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Sorting Order"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Symbol Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Keyword Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Control Flow Keyword Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Base Type Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Engine Type Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "User Type Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Comment Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "String Color"
-msgstr ""
-
-#: editor/editor_settings.cpp platform/javascript/export/export.cpp
-#: platform/uwp/export/export.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Background Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Completion Background Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Completion Selected Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Completion Existing Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Completion Scroll Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Completion Font Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Text Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Line Number Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Safe Line Number Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Caret Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Caret Background Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Text Selected Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Selection Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Brace Mismatch Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Current Line Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Line Length Guideline Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Word Highlighted Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Number Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Function Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Member Variable Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Mark Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Bookmark Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Breakpoint Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Executing Line Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Code Folding Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Search Result Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Search Result Border Color"
-msgstr ""
-
-#: editor/editor_spin_slider.cpp
-msgid "Hold %s to round to integers. Hold Shift for more precise changes."
-msgstr ""
-
-#: editor/editor_spin_slider.cpp scene/gui/button.cpp
-msgid "Flat"
-msgstr ""
-
-#: editor/editor_spin_slider.cpp
-msgid "Hide Slider"
-msgstr ""
-
-#: editor/editor_sub_scene.cpp
-msgid "Select Node(s) to Import"
-msgstr ""
-
-#: editor/editor_sub_scene.cpp editor/project_manager.cpp
-msgid "Browse"
-msgstr ""
-
-#: editor/editor_sub_scene.cpp
-msgid "Scene Path:"
-msgstr ""
-
-#: editor/editor_sub_scene.cpp
-msgid "Import From Node:"
-msgstr ""
-
-#. TRANSLATORS: %s refers to the name of a version control system (e.g. "Git").
-#: editor/editor_vcs_interface.cpp
-msgid "%s Error"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Open the folder containing these templates."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall these templates."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "There are no mirrors available."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Retrieving the mirror list..."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Starting the download..."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Connecting to the mirror..."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Can't resolve the requested address."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Can't connect to the mirror."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "No response from the mirror."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Request ended up in a redirect loop."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Request failed:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Download complete; extracting templates..."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Best available mirror"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Disconnected"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Resolving"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Can't Connect"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Connected"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Downloading"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Connection Error"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Can't open the export templates file."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside the export templates file: %s."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside the export templates file."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for extracting templates:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Remove templates for the version '%s'?"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Uncompressing Android Build Sources"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Current Version:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Export templates are missing. Download them or install from a file."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Export templates are installed and ready to be used."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Open Folder"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Open the folder containing installed templates for the current version."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall templates for the current version."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Download from:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Open in Web Browser"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Copy Mirror URL"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Download and Install"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid ""
-"Download and install templates for the current version from the best "
-"possible mirror."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Install from File"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Install templates from a local file."
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/find_in_files.cpp
-#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Cancel the download of the templates."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Other Installed Versions:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall Template"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid ""
-"The templates will continue to download.\n"
-"You may experience a short editor freeze when they finish."
-msgstr ""
-
-#: editor/fileserver/editor_file_server.cpp
-msgid "File Server"
-msgstr ""
-
-#: editor/fileserver/editor_file_server.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
-msgid "Password"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Favorites"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Status: Import of file failed. Please fix file and reimport manually."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid ""
-"Importing has been disabled for this file, so it can't be opened for editing."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Cannot move/rename resources root."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Error moving:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Error duplicating:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/scene_tree_editor.cpp
-msgid "No name provided."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Provided name contains invalid characters."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "A file or folder with this name already exists."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Name contains invalid characters."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid ""
-"This file extension is not recognized by the editor.\n"
-"If you want to rename it anyway, use your operating system's file manager.\n"
-"After renaming to an unknown extension, the file won't be shown in the "
-"editor anymore."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid ""
-"The following files or folders conflict with items in the target location "
-"'%s':\n"
-"\n"
-"%s\n"
-"\n"
-"Do you wish to overwrite them?"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Renaming file:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Renaming folder:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Duplicating file:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Duplicating folder:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "New Inherited Scene"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Set As Main Scene"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Open Scenes"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Instance"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Add to Favorites"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Remove from Favorites"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "View Owners..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Move To..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "New Scene..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
-msgid "New Script..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "New Resource..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Expand All"
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Collapse All"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort files"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort by Name (Ascending)"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort by Name (Descending)"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort by Type (Ascending)"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort by Type (Descending)"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort by Last Modified"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort by First Modified"
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-msgid "Duplicate..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-msgid "Rename..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Focus the search box"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Previous Folder/File"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Next Folder/File"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Re-Scan Filesystem"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Toggle Split Mode"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Search files"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid ""
-"Scanning Files,\n"
-"Please Wait..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Move"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/project_manager.cpp editor/rename_dialog.cpp
-#: editor/scene_tree_dock.cpp
-msgid "Rename"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Overwrite"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Create Scene"
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Create Script"
-msgstr ""
-
-#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Find in Files"
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Find:"
-msgstr ""
-
-#: editor/find_in_files.cpp editor/rename_dialog.cpp
-msgid "Replace:"
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Folder:"
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Filters:"
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid ""
-"Include the files with the following extensions. Add or remove them in "
-"ProjectSettings."
-msgstr ""
-
-#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-msgid "Find..."
-msgstr ""
-
-#: editor/find_in_files.cpp editor/plugins/script_text_editor.cpp
-msgid "Replace..."
-msgstr ""
-
-#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Replace in Files"
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Replace All (NO UNDO)"
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Searching..."
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "%d match in %d file."
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "%d matches in %d file."
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "%d matches in %d files."
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Add to Group"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Remove from Group"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Group name already exists."
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Invalid group name."
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Rename Group"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Delete Group"
-msgstr ""
-
-#: editor/groups_editor.cpp editor/node_dock.cpp
-msgid "Groups"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Nodes Not in Group"
-msgstr ""
-
-#: editor/groups_editor.cpp editor/scene_tree_dock.cpp
-#: editor/scene_tree_editor.cpp
-msgid "Filter nodes"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Nodes in Group"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Empty groups will be automatically removed."
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Group Editor"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Manage Groups"
-msgstr ""
-
-#: editor/import/editor_import_collada.cpp
-msgid "Collada"
-msgstr ""
-
-#: editor/import/editor_import_collada.cpp
-msgid "Use Ambient"
-msgstr ""
-
-#: editor/import/resource_importer_bitmask.cpp
-msgid "Create From"
-msgstr ""
-
-#: editor/import/resource_importer_bitmask.cpp
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
-msgstr ""
-
-#: editor/import/resource_importer_csv_translation.cpp
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_scene.cpp
-#: editor/import/resource_importer_texture.cpp
-#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
-msgid "Compress"
-msgstr ""
-
-#: editor/import/resource_importer_csv_translation.cpp
-msgid "Delimiter"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-msgid "ColorCorrect"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-msgid "No BPTC If RGB"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
-#: scene/resources/material.cpp scene/resources/particles_material.cpp
-#: scene/resources/texture.cpp scene/resources/visual_shader.cpp
-msgid "Flags"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
-#: scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
-msgid "Filter"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp
-msgid "Mipmaps"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp
-msgid "Anisotropic"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp
-msgid "sRGB"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-msgid "Slices"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Horizontal"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Vertical"
-msgstr ""
-
-#: editor/import/resource_importer_obj.cpp
-msgid "Generate Tangents"
-msgstr ""
-
-#: editor/import/resource_importer_obj.cpp
-msgid "Scale Mesh"
-msgstr ""
-
-#: editor/import/resource_importer_obj.cpp
-msgid "Offset Mesh"
-msgstr ""
-
-#: editor/import/resource_importer_obj.cpp
-#: editor/import/resource_importer_scene.cpp
-msgid "Octahedral Compression"
-msgstr ""
-
-#: editor/import/resource_importer_obj.cpp
-msgid "Optimize Mesh Flags"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import as Single Scene"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Animations"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Materials"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Objects"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Objects+Materials"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Objects+Animations"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Materials+Animations"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Objects+Materials+Animations"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import as Multiple Scenes"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import as Multiple Scenes+Materials"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
-#: scene/3d/physics_joint.cpp
-msgid "Nodes"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Root Type"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Root Name"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Root Scale"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Custom Script"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
-msgid "Storage"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Use Legacy Names"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Keep On Reimport"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Ensure Tangents"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Light Baking"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Lightmap Texel Size"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Use Named Skins"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "External Files"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Store In Subdir"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Filter Script"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Keep Custom Tracks"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Optimizer"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-#: editor/plugins/item_list_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
-#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
-#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
-#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
-#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/skeleton.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp scene/resources/material.cpp
-msgid "Enabled"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Max Linear Error"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Max Angular Error"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Max Angle"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Remove Unused Tracks"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Clips"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/particles.cpp scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Import Scene"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Importing Scene..."
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Generating Lightmaps"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Running Custom Script..."
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Couldn't load post-import script:"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Invalid/broken script for post-import (check console):"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Error running post-import script:"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Did you return a Node-derived object in the `post_import()` method?"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Saving..."
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "2D, Detect 3D"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "2D Pixel"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "HDR Mode"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "BPTC LDR"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
-#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Process"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Fix Alpha Border"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Premult Alpha"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Hdr As Srgb"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Invert Color"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Normal Map Invert Y"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Size Limit"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Detect 3D"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "SVG"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid ""
-"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
-"texture will not display correctly on PC."
-msgstr ""
-
-#: editor/import/resource_importer_texture_atlas.cpp
-msgid "Atlas File"
-msgstr ""
-
-#: editor/import/resource_importer_texture_atlas.cpp
-msgid "Import Mode"
-msgstr ""
-
-#: editor/import/resource_importer_texture_atlas.cpp
-msgid "Crop To Region"
-msgstr ""
-
-#: editor/import/resource_importer_texture_atlas.cpp
-msgid "Trim Alpha Border From Region"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-msgid "8 Bit"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp main/main.cpp
-#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-msgid "Max Rate"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-msgid "Max Rate Hz"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-msgid "Trim"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-msgid "Normalize"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Mode"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Begin"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop End"
-msgstr ""
-
-#: editor/import_defaults_editor.cpp
-msgid "Select Importer"
-msgstr ""
-
-#: editor/import_defaults_editor.cpp
-msgid "Importer:"
-msgstr ""
-
-#: editor/import_defaults_editor.cpp
-msgid "Reset to Defaults"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Keep File (No Import)"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "%d Files"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Set as Default for '%s'"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Clear Default for '%s'"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid ""
-"You have pending changes that haven't been applied yet. Click Reimport to "
-"apply changes made to the import options.\n"
-"Selecting another resource in the FileSystem dock without clicking Reimport "
-"first will discard changes made in the Import dock."
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Import As:"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Save Scenes, Re-Import, and Restart"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Changing the type of an imported file requires editor restart."
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid ""
-"WARNING: Assets exist that use this resource, they may stop loading properly."
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid ""
-"Select a resource file in the filesystem or in the inspector to adjust "
-"import settings."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Failed to load resource."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Property Name Style"
-msgstr ""
-
-#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Capitalized"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Localized"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Localization not available for current language."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Copy Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Paste Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Save As..."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Extra resource options."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Edit Resource from Clipboard"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Make Resource Built-In"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Go to the previous edited object in history."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Go to the next edited object in history."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "History of recently edited objects."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Open documentation for this object."
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Filter properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Manage object properties."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Changes may be lost!"
-msgstr ""
-
-#: editor/multi_node_edit.cpp
-msgid "MultiNode Set"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Select a single node to edit its signals and groups."
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-msgid "Edit a Plugin"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-msgid "Create a Plugin"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-msgid "Plugin Name:"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-msgid "Subfolder:"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Author:"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
-msgid "Language:"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-msgid "Script Name:"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-msgid "Activate now?"
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Polygon"
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Create points."
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid ""
-"Edit points.\n"
-"LMB: Move Point\n"
-"RMB: Erase Point"
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Edit Polygon"
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Insert Point"
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Edit Polygon (Remove Point)"
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Polygon And Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Add Animation"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Add %s"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Load..."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Move Node Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Change BlendSpace1D Limits"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Change BlendSpace1D Labels"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "This type of node can't be used. Only root nodes are allowed."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Add Node Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Add Animation Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Remove BlendSpace1D Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Move BlendSpace1D Node Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid ""
-"AnimationTree is inactive.\n"
-"Activate to enable playback, check node warnings if activation fails."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Set the blending position within the space"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Select and move points, create points with RMB."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp scene/gui/graph_edit.cpp
-msgid "Enable snap and show grid."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Open Editor"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Open Animation Node"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Triangle already exists."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Add Triangle"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Change BlendSpace2D Limits"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Change BlendSpace2D Labels"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Remove BlendSpace2D Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Remove BlendSpace2D Triangle"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "BlendSpace2D does not belong to an AnimationTree node."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "No triangles exist, so no blending can take place."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Toggle Auto Triangles"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Create triangles by connecting points."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Erase points and triangles."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Generate blend triangles automatically (instead of manually)"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Blend:"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed:"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Edit Filters"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Output node can't be added to the blend tree."
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Add Node to BlendTree"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Node Moved"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Unable to connect, port may be in use or connection may be invalid."
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Nodes Connected"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Nodes Disconnected"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Set Animation"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Delete Node"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
-msgid "Delete Node(s)"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Toggle Filter On/Off"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Change Filter"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "No animation player set, so unable to retrieve track names."
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Player path set is invalid, so unable to retrieve track names."
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/root_motion_editor_plugin.cpp
-msgid ""
-"Animation player has no valid root node path, so unable to retrieve track "
-"names."
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Anim Clips"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Audio Clips"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Functions"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Node Renamed"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Add Node..."
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/root_motion_editor_plugin.cpp
-msgid "Edit Filtered Tracks:"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Enable Filtering"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Toggle Autoplay"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "New Animation Name:"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "New Anim"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Change Animation Name:"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Delete Animation?"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Remove Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Invalid animation name!"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Animation name already exists!"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Rename Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Duplicate Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Blend Next Changed"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Change Blend Time"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Load Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "No animation resource on clipboard!"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Pasted Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Paste Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Play selected animation backwards from current pos. (A)"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Play selected animation backwards from end. (Shift+A)"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Stop animation playback. (S)"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Play selected animation from start. (Shift+D)"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Play selected animation from current pos. (D)"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Animation position (in seconds)."
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Scale animation playback globally for the node."
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Animation Tools"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Paste As Reference"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Edit Transitions..."
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Open in Inspector"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Display list of animations in player."
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Autoplay on Load"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Enable Onion Skinning"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Onion Skinning Options"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Directions"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Past"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Future"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp modules/csg/csg_shape.cpp
-#: scene/3d/collision_polygon.cpp scene/main/scene_tree.cpp
-#: scene/resources/material.cpp scene/resources/primitive_meshes.cpp
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Depth"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "1 step"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "2 steps"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "3 steps"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Differences Only"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Force White Modulate"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Include Gizmos (3D)"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Pin AnimationPlayer"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Create New Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Animation Name:"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-msgid "Error!"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Blend Times:"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Next (Auto Queue):"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Cross-Animation Blend Times"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Move Node"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition exists!"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Add Transition"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Node"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "End"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Immediate"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-#: scene/animation/animation_blend_tree.cpp
-msgid "Sync"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "At End"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: scene/3d/vehicle_body.cpp
-msgid "Travel"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Start and end nodes are needed for a sub-transition."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "No playback resource set at path: %s."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Node Removed"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition Removed"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Set Start Node (Autoplay)"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid ""
-"Select and move nodes.\n"
-"RMB to add new nodes.\n"
-"Shift+LMB to create connections."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Create new nodes."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Connect nodes."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Remove selected node or transition."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Toggle autoplay this animation on start, restart or seek to zero."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Set the end animation. This is useful for sub-transitions."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Play Mode:"
-msgstr ""
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "AnimationTree"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "New name:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Fade In (s):"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Fade Out (s):"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader.cpp
-msgid "Blend"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Auto Restart:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Restart (s):"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Random Restart (s):"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Start!"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Amount:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Blend 0:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Blend 1:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "X-Fade Time (s):"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Input"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Clear Auto-Advance"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Set Auto-Advance"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Delete Input"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Animation tree is valid."
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Animation tree is invalid."
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Animation Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "OneShot Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Mix Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Blend2 Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Blend3 Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Blend4 Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "TimeScale Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "TimeSeek Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Transition Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Import Animations..."
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Edit Node Filters"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Filters..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp scene/main/http_request.cpp
-msgid "Use Threads"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Contents:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "View Files"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect to host:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Cannot save response to:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Write error."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Redirect loop."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, timeout"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Timeout."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed SHA-256 hash check"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Downloading (%s / %s)..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Downloading..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Resolving..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Error making request"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Install..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download Error"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Available URLs"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Recently Updated"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Least Recently Updated"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Name (A-Z)"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Name (Z-A)"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "License (A-Z)"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "License (Z-A)"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Loading..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgctxt "Pagination"
-msgid "First"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgctxt "Pagination"
-msgid "Previous"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgctxt "Pagination"
-msgid "Next"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgctxt "Pagination"
-msgid "Last"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Search templates, projects, and demos"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Search assets (excluding templates, projects, and demos)"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Import..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Plugins..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
-msgid "Sort:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Category:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Support"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed to get repository configuration."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr ""
-
-#: editor/plugins/audio_stream_editor_plugin.cpp
-msgid "Audio Preview Play/Pause"
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid ""
-"Can't determine a save path for lightmap images.\n"
-"Save your scene and try again."
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
-"In Baked Light' and 'Generate Lightmap' flags are on."
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid "Failed creating lightmap images, make sure path is writable."
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid "Failed determining lightmap size. Maximum lightmap size too small?"
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid ""
-"Some mesh is invalid. Make sure the UV2 channel values are contained within "
-"the [0.0,1.0] square region."
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid ""
-"Godot editor was built without ray tracing support, lightmaps can't be baked."
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid "Bake Lightmaps"
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid "LightMap Bake"
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid "Select lightmap bake file:"
-msgstr ""
-
-#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp scene/resources/mesh_library.cpp
-msgid "Preview"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Configure Snap"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Grid Offset:"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Grid Step:"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Primary Line Every:"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "steps"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Rotation Offset:"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Rotation Step:"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Scale Step:"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Move Vertical Guide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Create Vertical Guide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Remove Vertical Guide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Move Horizontal Guide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Create Horizontal Guide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Remove Horizontal Guide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Create Horizontal and Vertical Guides"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set CanvasItem \"%s\" Pivot Offset to (%d, %d)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Rotate %d CanvasItems"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Rotate CanvasItem \"%s\" to %d degrees"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Move CanvasItem \"%s\" Anchor"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Scale Node2D \"%s\" to (%s, %s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Resize Control \"%s\" to (%d, %d)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Scale %d CanvasItems"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Scale CanvasItem \"%s\" to (%s, %s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Move %d CanvasItems"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Move CanvasItem \"%s\" to (%d, %d)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Locked"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Grouped"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid ""
-"Children of containers have their anchors and margins values overridden by "
-"their parent."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Presets for the anchors and margins values of a Control node."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid ""
-"When active, moving Control nodes changes their anchors instead of their "
-"margins."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
-msgid "Top Left"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
-msgid "Top Right"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
-msgid "Bottom Right"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
-msgid "Bottom Left"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Center Left"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Center Top"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Center Right"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Center Bottom"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Center"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Left Wide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Top Wide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Right Wide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Bottom Wide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "VCenter Wide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "HCenter Wide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Full Rect"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Keep Ratio"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchors only"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors and Margins"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Project Camera Override\n"
-"Overrides the running project's camera with the editor viewport camera."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Project Camera Override\n"
-"No project instance running. Run the project from the editor to use this "
-"feature."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Lock Selected"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Unlock Selected"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Group Selected"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Ungroup Selected"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Paste Pose"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Clear Guides"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Create Custom Bone(s) from Node(s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Clear Bones"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Make IK Chain"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Clear IK Chain"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid ""
-"Warning: Children of a container get their position and size determined only "
-"by their parent."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/texture_region_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
-msgid "Zoom Reset"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp scene/gui/item_list.cpp
-#: scene/gui/tree.cpp
-msgid "Select Mode"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Drag: Rotate selected node around pivot."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move selected node."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Scale selected node."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "V: Set selected node's pivot position."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "RMB: Add node at position clicked."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Move Mode"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rotate Mode"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scale Mode"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Shift: Scale proportionally."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Show a list of all objects at the position clicked\n"
-"(same as Alt+RMB in select mode)."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Click to change object's rotation pivot."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Pan Mode"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Ruler Mode"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Toggle smart snapping."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Smart Snap"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Toggle grid snapping."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Grid Snap"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snapping Options"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Scale Snap"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Smart Snapping"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap..."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap to Parent"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap to Node Anchor"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap to Node Sides"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap to Node Center"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap to Other Nodes"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap to Guides"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Lock Selected Node(s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Unlock Selected Node(s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Group Selected Node(s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Ungroup Selected Node(s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton Options"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Bones"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Make Custom Bone(s) from Node(s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Clear Custom Bones"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show When Snapping"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Hide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Toggle Grid"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Grid"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Helpers"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Rulers"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Guides"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Origin"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Viewport"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Group And Lock Icons"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Center Selection"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Frame Selection"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Preview Canvas Scale"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Translation mask for inserting keys."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Rotation mask for inserting keys."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Scale mask for inserting keys."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Insert keys (based on mask)."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid ""
-"Auto insert keys when objects are translated, rotated or scaled (based on "
-"mask).\n"
-"Keys are only added to existing tracks, no new tracks will be created.\n"
-"Keys must be inserted manually for the first time."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Auto Insert Key"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Animation Key and Pose Options"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Insert Key (Existing Tracks)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Copy Pose"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Clear Pose"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Add Node Here"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Instance Scene Here"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Multiply grid step by 2"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Divide grid step by 2"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Pan View"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 3.125%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 6.25%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 12.5%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 25%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 50%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 100%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 200%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 400%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 800%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 1600%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Adding %s..."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Cannot instantiate multiple nodes without root."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Create Node"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Error instancing scene from %s"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Default Type"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid ""
-"Drag & drop + Shift : Add node as sibling\n"
-"Drag & drop + Alt : Change node type"
-msgstr ""
-
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Polygon3D"
-msgstr ""
-
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr ""
-
-#: editor/plugins/collision_shape_2d_editor_plugin.cpp
-msgid "Set Handle"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Load Emission Mask"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/cpu_particles_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Restart"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Clear Emission Mask"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/spatial_editor_gizmos.cpp
-msgid "Particles"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Generated Point Count:"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Emission Mask"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Solid Pixels"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Border Pixels"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Directed Border Pixels"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Capture from Pixel"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Emission Colors"
-msgstr ""
-
-#: editor/plugins/cpu_particles_editor_plugin.cpp
-msgid "CPUParticles"
-msgstr ""
-
-#: editor/plugins/cpu_particles_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Create Emission Points From Mesh"
-msgstr ""
-
-#: editor/plugins/cpu_particles_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Create Emission Points From Node"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Flat 0"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Flat 1"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp
-msgid "Ease In"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp
-msgid "Ease Out"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Smoothstep"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve Point"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve Tangent"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Load Curve Preset"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Add Point"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Remove Point"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Left Linear"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Right Linear"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Load Preset"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Remove Curve Point"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Toggle Curve Linear Tangent"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Hold Shift to edit tangents individually"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Right click to add point"
-msgstr ""
-
-#: editor/plugins/gi_probe_editor_plugin.cpp
-msgid "Bake GI Probe"
-msgstr ""
-
-#: editor/plugins/gradient_editor_plugin.cpp
-msgid "Gradient Edited"
-msgstr ""
-
-#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
-msgid "Swap GradientTexture2D Fill Points"
-msgstr ""
-
-#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
-msgid "Swap Gradient Fill Points"
-msgstr ""
-
-#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
-msgid "Toggle Grid Snap"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
-#: scene/3d/label_3d.cpp scene/gui/button.cpp scene/gui/dialogs.cpp
-#: scene/gui/label.cpp scene/gui/line_edit.cpp scene/gui/link_button.cpp
-#: scene/gui/rich_text_label.cpp scene/gui/text_edit.cpp
-#: scene/resources/primitive_meshes.cpp
-msgid "Text"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
-#: platform/osx/export/export.cpp platform/windows/export/export.cpp
-#: scene/gui/button.cpp scene/gui/item_list.cpp
-msgid "Icon"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp
-msgid "ID"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Separator"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp
-msgid "Item %d"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp
-msgid "Items"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp
-msgid "Item List Editor"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Occluder Polygon"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh is empty!"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Couldn't create a Trimesh collision shape."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Static Trimesh Body"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "This doesn't work on scene root!"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Trimesh Static Shape"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Can't create a single convex collision shape for the scene root."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Couldn't create a single convex collision shape."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Simplified Convex Shape"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Single Convex Shape"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Can't create multiple convex collision shapes for the scene root."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Couldn't create any collision shapes."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Multiple Convex Shapes"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Navigation Mesh"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Contained Mesh is not of type ArrayMesh."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "UV Unwrap failed, mesh may not be manifold?"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "No mesh to debug."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh has no UV in layer %d."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "MeshInstance lacks a Mesh!"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh has not surface to create outlines from!"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh primitive type is not PRIMITIVE_TRIANGLES!"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Could not create outline!"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Outline"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp modules/csg/csg_shape.cpp
-#: modules/gltf/gltf_mesh.cpp modules/gltf/gltf_node.cpp
-#: scene/2d/mesh_instance_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/mesh_instance.cpp scene/resources/mesh_library.cpp
-#: scene/resources/multimesh.cpp scene/resources/primitive_meshes.cpp
-#: scene/resources/texture.cpp
-msgid "Mesh"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Trimesh Static Body"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid ""
-"Creates a StaticBody and assigns a polygon-based collision shape to it "
-"automatically.\n"
-"This is the most accurate (but slowest) option for collision detection."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Trimesh Collision Sibling"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid ""
-"Creates a polygon-based collision shape.\n"
-"This is the most accurate (but slowest) option for collision detection."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Single Convex Collision Sibling"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid ""
-"Creates a single convex collision shape.\n"
-"This is the fastest (but least accurate) option for collision detection."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Simplified Convex Collision Sibling"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid ""
-"Creates a simplified convex collision shape.\n"
-"This is similar to single collision shape, but can result in a simpler "
-"geometry in some cases, at the cost of accuracy."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Multiple Convex Collision Siblings"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid ""
-"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between a single convex collision and a "
-"polygon-based collision."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Outline Mesh..."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid ""
-"Creates a static outline mesh. The outline mesh will have its normals "
-"flipped automatically.\n"
-"This can be used instead of the SpatialMaterial Grow property when using "
-"that property isn't possible."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "View UV1"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "View UV2"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Unwrap UV2 for Lightmap/AO"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Outline Mesh"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Outline Size:"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "UV Channel Debug"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Remove item %d?"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid ""
-"Update from existing scene?:\n"
-"%s"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "MeshLibrary"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Add Item"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Remove Selected Item"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Import from Scene (Ignore Transforms)"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Import from Scene (Apply Transforms)"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Update from Scene"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Apply without Transforms"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Apply with Transforms"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "No mesh source specified (and no MultiMesh set in node)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "No mesh source specified (and MultiMesh contains no Mesh)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Mesh source is invalid (invalid path)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Mesh source is invalid (not a MeshInstance)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Mesh source is invalid (contains no Mesh resource)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "No surface source specified."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Surface source is invalid (invalid path)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Surface source is invalid (no geometry)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Surface source is invalid (no faces)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Select a Source Mesh:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Select a Target Surface:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Populate Surface"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Populate MultiMesh"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Target Surface:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Source Mesh:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "X-Axis"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Y-Axis"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Z-Axis"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Mesh Up Axis:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Random Rotation:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Random Tilt:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Random Scale:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Populate"
-msgstr ""
-
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create Navigation Polygon"
-msgstr ""
-
-#: editor/plugins/particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Convert to CPUParticles"
-msgstr ""
-
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Generating Visibility Rect"
-msgstr ""
-
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Generate Visibility Rect"
-msgstr ""
-
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Can only set point into a ParticlesMaterial process material"
-msgstr ""
-
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Convert to CPUParticles2D"
-msgstr ""
-
-#: editor/plugins/particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Generation Time (sec):"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "The geometry's faces don't contain any area."
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "The geometry doesn't contain any faces."
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "\"%s\" doesn't inherit from Spatial."
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "\"%s\" doesn't contain geometry."
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "\"%s\" doesn't contain face geometry."
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Create Emitter"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Points:"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Surface Points"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Surface Points+Normal (Directed)"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp scene/gui/video_player.cpp
-msgid "Volume"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "A processor material of type 'ParticlesMaterial' is required."
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Generating AABB"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Generate Visibility AABB"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Remove Point from Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Remove Out-Control from Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Remove In-Control from Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Add Point to Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Split Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Move Point in Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Move In-Control in Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Move Out-Control in Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Select Points"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Shift+Drag: Select Control Points"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Click: Add Point"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Left Click: Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Right Click: Delete Point"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Select Control Points (Shift+Drag)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Add Point (in empty space)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Delete Point"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Close Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-#: editor/plugins/theme_editor_preview.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp servers/visual_server.cpp
-msgid "Options"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Mirror Handle Angles"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Mirror Handle Lengths"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Curve Point #"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Set Curve Point Position"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Set Curve In Position"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Set Curve Out Position"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Path"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Remove Path Point"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Remove Out-Control Point"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Remove In-Control Point"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/physical_bone_plugin.cpp
-msgid "Move Joint"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid ""
-"The skeleton property of the Polygon2D does not point to a Skeleton2D node"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync Bones"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid ""
-"No texture in this polygon.\n"
-"Set a texture to be able to edit UV."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create UV Map"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid ""
-"Polygon 2D has internal vertices, so it can no longer be edited in the "
-"viewport."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Polygon & UV"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Internal Vertex"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Remove Internal Vertex"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Invalid Polygon (need 3 different vertices)"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Add Custom Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Remove Custom Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Transform UV Map"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Transform Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint Bone Weights"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Open Polygon 2D UV editor."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Polygon 2D UV Editor"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
-msgid "UV"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/line_2d.cpp scene/3d/cpu_particles.cpp scene/3d/portal.cpp
-#: scene/3d/room.cpp scene/resources/convex_polygon_shape.cpp
-#: scene/resources/convex_polygon_shape_2d.cpp
-msgid "Points"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
-msgid "Polygons"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp scene/3d/skeleton.cpp
-msgid "Bones"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Points"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Command: Rotate"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Shift: Move All"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Shift+Command: Scale"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Ctrl: Rotate"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Shift+Ctrl: Scale"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Rotate Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Scale Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create a custom polygon. Enables custom polygon rendering."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid ""
-"Remove a custom polygon. If none remain, custom polygon rendering is "
-"disabled."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Unpaint weights with specified intensity."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Radius:"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Copy Polygon to UV"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Copy UV to Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Clear UV"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Grid Settings"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp modules/csg/csg_shape.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Snap"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Enable Snap"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Configure Grid:"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Grid Offset X:"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Grid Offset Y:"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Grid Step X:"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Grid Step Y:"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync Bones to Polygon"
-msgstr ""
-
-#: editor/plugins/ray_cast_2d_editor_plugin.cpp
-msgid "Set cast_to"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ERROR: Couldn't load resource!"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "Add Resource"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "Rename Resource"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Delete Resource"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "Resource clipboard is empty!"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "Paste Resource"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/scene_tree_editor.cpp
-msgid "Instance:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "Load Resource"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
-#: editor/plugins/room_manager_editor_plugin.cpp
-msgid "Flip Portals"
-msgstr ""
-
-#: editor/plugins/room_manager_editor_plugin.cpp
-msgid "Room Generate Points"
-msgstr ""
-
-#: editor/plugins/room_manager_editor_plugin.cpp
-msgid "Generate Points"
-msgstr ""
-
-#: editor/plugins/room_manager_editor_plugin.cpp
-msgid "Flip Portal"
-msgstr ""
-
-#: editor/plugins/room_manager_editor_plugin.cpp
-msgid "Occluder Set Transform"
-msgstr ""
-
-#: editor/plugins/room_manager_editor_plugin.cpp
-msgid "Center Node"
-msgstr ""
-
-#: editor/plugins/root_motion_editor_plugin.cpp
-msgid "AnimationTree has no path set to an AnimationPlayer"
-msgstr ""
-
-#: editor/plugins/root_motion_editor_plugin.cpp
-msgid "Path to AnimationPlayer is invalid"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Clear Recent Files"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Close and save changes?"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error writing TextFile:"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Could not load file at:"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving file!"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error Saving"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error Importing"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "New Text File..."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Open File"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save File As..."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Can't obtain the script for running."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Script failed reloading, check console for errors."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Script is not in tool mode, will not be able to run."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"To run this script, it must inherit EditorScript and be set to tool mode."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Import Theme"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As..."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "%s Class Reference"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-msgid "Find Next"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-msgid "Find Previous"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Filter scripts"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Toggle alphabetical sorting of the method list."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Filter methods"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp scene/2d/y_sort.cpp
-msgid "Sort"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Move Up"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Move Down"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Next Script"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous Script"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "File"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Open..."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Reopen Closed Script"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save All"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Soft Reload Script"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Copy Script Path"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "History Previous"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "History Next"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Import Theme..."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Reload Theme"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Close All"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Close Docs"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-msgid "Search"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
-msgid "Step Into"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
-msgid "Step Over"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
-msgid "Break"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Continue"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Keep Debugger Open"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Debug with External Editor"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Open Godot online documentation."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Search the reference documentation."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Go to previous edited document."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Go to next edited document."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Discard"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"The following files are newer on disk.\n"
-"What action should be taken?:"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Search Results"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Open Dominant Script On Scene Change"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "External"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Use External Editor"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Exec Path"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Script Temperature Enabled"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Highlight Current Script"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Script Temperature History Size"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Current Script Background Color"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Group Help Pages"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Sort Scripts By"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "List Script Names As"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Exec Flags"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Clear Recent Scripts"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Connections to method:"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/script_editor_debugger.cpp
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Source"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
-msgid "Target"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid ""
-"Missing connected method '%s' for signal '%s' from node '%s' to node '%s'."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "[Ignore]"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Line"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Function"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Only resources from filesystem can be dropped."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Can't drop nodes because script '%s' is not used in this scene."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Lookup Symbol"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Pick Color"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Convert Case"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-#: scene/3d/label_3d.cpp scene/gui/label.cpp
-#: scene/resources/primitive_meshes.cpp
-msgid "Uppercase"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Lowercase"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Capitalize"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Syntax Highlighter"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-msgid "Bookmarks"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Breakpoints"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-msgid "Go To"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Cut"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Select All"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Delete Line"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Indent Left"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Indent Right"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Toggle Comment"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Fold/Unfold Line"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Fold All Lines"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Unfold All Lines"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Complete Symbol"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Evaluate Selection"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Trim Trailing Whitespace"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Convert Indent to Spaces"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Convert Indent to Tabs"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Find in Files..."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Replace in Files..."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Contextual Help"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Toggle Bookmark"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Next Bookmark"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Previous Bookmark"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Remove All Bookmarks"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Function..."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Line..."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Toggle Breakpoint"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Remove All Breakpoints"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Next Breakpoint"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Previous Breakpoint"
-msgstr ""
-
-#: editor/plugins/shader_editor_plugin.cpp
-msgid ""
-"This shader has been modified on on disk.\n"
-"What action should be taken?"
-msgstr ""
-
-#: editor/plugins/shader_editor_plugin.cpp scene/resources/material.cpp
-msgid "Shader"
-msgstr ""
-
-#: editor/plugins/skeleton_2d_editor_plugin.cpp
-msgid "This skeleton has no bones, create some children Bone2D nodes."
-msgstr ""
-
-#: editor/plugins/skeleton_2d_editor_plugin.cpp
-msgid "Set Rest Pose to Bones"
-msgstr ""
-
-#: editor/plugins/skeleton_2d_editor_plugin.cpp
-msgid "Create Rest Pose from Bones"
-msgstr ""
-
-#: editor/plugins/skeleton_2d_editor_plugin.cpp
-msgid "Skeleton2D"
-msgstr ""
-
-#: editor/plugins/skeleton_2d_editor_plugin.cpp
-msgid "Reset to Rest Pose"
-msgstr ""
-
-#: editor/plugins/skeleton_2d_editor_plugin.cpp
-msgid "Overwrite Rest Pose"
-msgstr ""
-
-#: editor/plugins/skeleton_editor_plugin.cpp
-msgid "Create physical bones"
-msgstr ""
-
-#: editor/plugins/skeleton_editor_plugin.cpp editor/spatial_editor_gizmos.cpp
-#: modules/gltf/gltf_node.cpp modules/gltf/gltf_skin.cpp
-#: scene/2d/polygon_2d.cpp scene/3d/mesh_instance.cpp
-msgid "Skeleton"
-msgstr ""
-
-#: editor/plugins/skeleton_editor_plugin.cpp
-msgid "Create physical skeleton"
-msgstr ""
-
-#: editor/plugins/skeleton_ik_editor_plugin.cpp
-msgid "Play IK"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_camera.cpp
-msgid "Perspective"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top Perspective"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom Perspective"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left Perspective"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front Perspective"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear Perspective"
-msgstr ""
-
-#. TRANSLATORS: This will be appended to the view name when Auto Orthogonal is enabled.
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid " [auto]"
-msgstr ""
-
-#. TRANSLATORS: This will be appended to the view name when Portal Occulusion is enabled.
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid " [portals active]"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Transform Aborted."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "X-Axis Transform."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Y-Axis Transform."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Z-Axis Transform."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Plane Transform."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/texture_region_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp scene/2d/path_2d.cpp
-msgid "Rotate"
-msgstr ""
-
-#. TRANSLATORS: This refers to the movement that changes the position of an object.
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translate"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rotating %s degrees."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS: %d (%s ms)"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Align Transform with View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Align Rotation with View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "No parent to instance a child at."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Auto Orthogonal Enabled"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Lock View Rotation"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Normal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Wireframe"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Overdraw"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Unshaded"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Environment"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Gizmos"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Information"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View FPS"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Half Resolution"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp scene/main/viewport.cpp
-msgid "Audio Listener"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Enable Doppler"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Cinematic Preview"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "(Not in GLES2)"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Debug draw modes are only available when using the GLES3 renderer, not GLES2."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Forward"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Backwards"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Down"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Slow Modifier"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Toggle Camera Preview"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Rotation Locked"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"To zoom further, change the camera's clipping planes (View -> Settings...)"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Note: The FPS value displayed is the editor's framerate.\n"
-"It cannot be used as a reliable indication of in-game performance."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Convert Rooms"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "XForm Dialog"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Click to toggle between visibility states.\n"
-"\n"
-"Open eye: Gizmo is visible.\n"
-"Closed eye: Gizmo is hidden.\n"
-"Half-open eye: Gizmo is also visible through opaque surfaces (\"x-ray\")."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes to Floor"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Couldn't find a solid floor to snap the selection to."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp scene/gui/graph_edit.cpp
-msgid "Use Snap"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Converts rooms for portal culling."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Orbit View Down"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Orbit View Left"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Orbit View Right"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Orbit View Up"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Orbit View 180"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Switch Perspective/Orthogonal View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Insert Animation Key"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Focus Origin"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Focus Selection"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Toggle Freelook"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Decrease Field of View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Increase Field of View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Reset Field of View to Default"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Object to Floor"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Transform Dialog..."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "1 Viewport"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "2 Viewports"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "2 Viewports (Alt)"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "3 Viewports"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "3 Viewports (Alt)"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "4 Viewports"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Gizmos"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Origin"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Grid"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Portal Culling"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Occlusion Culling"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Settings..."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Settings"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translate Snap:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rotate Snap (deg.):"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scale Snap (%):"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Viewport Settings"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Perspective FOV (deg.):"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Z-Near:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Z-Far:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Transform Change"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translate:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rotate (deg.):"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scale (ratio):"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Transform Type"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pre"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Post"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Manipulator Gizmo Size"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Manipulator Gizmo Opacity"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Show Viewport Rotation Gizmo"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Unnamed Gizmo"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Create Mesh2D"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Mesh2D Preview"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Create Polygon2D"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Polygon2D Preview"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Create CollisionPolygon2D"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "CollisionPolygon2D Preview"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Create LightOccluder2D"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "LightOccluder2D Preview"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Sprite is empty!"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Can't convert a sprite using animation frames to mesh."
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Invalid geometry, can't replace by mesh."
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Invalid geometry, can't create polygon."
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Polygon2D"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Invalid geometry, can't create collision polygon."
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Create CollisionPolygon2D Sibling"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Invalid geometry, can't create light occluder."
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Create LightOccluder2D Sibling"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Sprite"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Update Preview"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Settings:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "No Frames Selected"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Add %d Frame(s)"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Add Frame"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Unable to load images"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "ERROR: Couldn't load frame resource!"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Resource clipboard is empty or not a texture!"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Paste Frame"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Add Empty"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Change Animation FPS"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "(empty)"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Move Frame"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Animations:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "New Animation"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Speed:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/minimp3/resource_importer_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
-#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
-#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
-msgid "Loop"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Animation Frames:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Add a Texture from File"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Add Frames from a Sprite Sheet"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Insert Empty (Before)"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Insert Empty (After)"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Move (Before)"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Move (After)"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Select Frames"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Horizontal:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Vertical:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Separation:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Offset:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Select/Clear All Frames"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Create Frames from Sprite Sheet"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "SpriteFrames"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Set Region Rect"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Set Margin"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Snap Mode:"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Pixel Snap"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Grid Snap"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Auto Slice"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Step:"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "TextureRegion"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Styleboxes"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "{num} color(s)"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "No colors found."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "{num} constant(s)"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "No constants found."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "{num} font(s)"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "No fonts found."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "{num} icon(s)"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "No icons found."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "{num} stylebox(es)"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "No styleboxes found."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "{num} currently selected"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Nothing was selected for the import."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Importing Theme Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Importing items {n}/{n}"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Updating the editor"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Finalizing"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Filter:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "With Data"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select by data type:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible color items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible color items and their data."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect all visible color items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible constant items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible constant items and their data."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect all visible constant items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible font items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible font items and their data."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect all visible font items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible icon items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible icon items and their data."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect all visible icon items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible stylebox items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible stylebox items and their data."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect all visible stylebox items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid ""
-"Caution: Adding icon data may considerably increase the size of your Theme "
-"resource."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Collapse types."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Expand types."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all Theme items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select With Data"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all Theme items with item data."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect All"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect all Theme items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Import Selected"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid ""
-"Import Items tab has some items selected. Selection will be lost upon "
-"closing this window.\n"
-"Close anyway?"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Type"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid ""
-"Select a theme type from the list to edit its items.\n"
-"You can add a custom type or import a type with its items from another theme."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Color Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Rename Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Constant Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Font Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Icon Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All StyleBox Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid ""
-"This theme type is empty.\n"
-"Add more items to it manually or by importing from another theme."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Theme Type"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Theme Type"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Color Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Constant Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Font Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Icon Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Stylebox Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Rename Color Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Rename Constant Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Rename Font Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Rename Icon Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Rename Stylebox Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Invalid file, not a Theme resource."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Invalid file, same as the edited Theme resource."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Manage Theme Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Types:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Type:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Item:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add StyleBox Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Items:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Custom Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Theme Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Old Name:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Import Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Default Theme"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editor Theme"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select Another Theme Resource:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme Resource"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Another Theme"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Type"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Filter the list of types or create a new custom type:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Available Node-based types:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Type name is empty!"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Are you sure you want to create an empty type?"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Confirm Item Rename"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Cancel Item Rename"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Override Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Unpin this StyleBox as a main style."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid ""
-"Pin this StyleBox as a main style. Editing its properties will update the "
-"same properties in all other StyleBoxes of this type."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Item Type"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Set Variation Base Type"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Set Base Type"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Show Default"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Show default type items alongside items that have been overridden."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Override All"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Override all default type items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select the variation base type from a list of available types."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid ""
-"A type associated with a built-in class cannot be marked as a variation of "
-"another type."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Manage Items..."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add, remove, organize and import Theme items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Preview"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Default Preview"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select UI Scene:"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid ""
-"Toggle the control picker, allowing to visually select control types for "
-"edit."
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Toggle Button"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Disabled Button"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp scene/resources/mesh_library.cpp
-msgid "Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Disabled Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Check Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Checked Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Radio Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Checked Radio Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Named Separator"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Submenu"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Subitem 1"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Subitem 2"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Has"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Many"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Disabled LineEdit"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Tab 1"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Tab 2"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Tab 3"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Editable Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Subtree"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Has,Many,Options"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Invalid path, the PackedScene resource was probably moved or removed."
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Invalid PackedScene resource, must have a Control node at its root."
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Invalid file, not a PackedScene resource."
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Reload the scene to reflect its most actual state."
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Erase Selection"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Fix Invalid Tiles"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cut Selection"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Paint TileMap"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Line Draw"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Rectangle Paint"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket Fill"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Erase TileMap"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Find Tile"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Transpose"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Disable Autotile"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Enable Priority"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Filter tiles"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Give a TileSet resource to this TileMap to use its tiles."
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Paint Tile"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid ""
-"Shift+LMB: Line Draw\n"
-"Shift+Command+LMB: Rectangle Paint"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid ""
-"Shift+LMB: Line Draw\n"
-"Shift+Ctrl+LMB: Rectangle Paint"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Pick Tile"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Rotate Left"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Rotate Right"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Flip Horizontally"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Flip Vertically"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Clear Transform"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Tile Map"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Palette Min Width"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Palette Item H Separation"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Show Tile Names"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Show Tile Ids"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Sort Tiles By Name"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket Fill Preview"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Editor Side"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Display Grid"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Axis Color"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove selected Texture from TileSet."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create from Scene"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Merge from Scene"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "New Single Tile"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "New Autotile"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "New Atlas"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Next Coordinate"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Select the next shape, subtile, or Tile."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Previous Coordinate"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Select the previous shape, subtile, or Tile."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
-msgid "Region"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp modules/csg/csg_shape.cpp
-#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
-#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
-#: scene/3d/collision_object.cpp scene/3d/physics_body.cpp
-#: scene/3d/physics_joint.cpp scene/3d/soft_body.cpp scene/main/scene_tree.cpp
-#: scene/resources/shape_2d.cpp
-msgid "Collision"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Occlusion"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/touch_screen_button.cpp
-msgid "Bitmask"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/3d/physics_joint.cpp
-#: scene/animation/animation_node_state_machine.cpp
-msgid "Priority"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/node_2d.cpp
-msgid "Z Index"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Region Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Collision Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Occlusion Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Navigation Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Bitmask Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Priority Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/item_list.cpp
-msgid "Icon Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Z Index Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Copy bitmask."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Paste bitmask."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Erase bitmask."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create a new rectangle."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "New Rectangle"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create a new polygon."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "New Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Delete Selected Shape"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Keep polygon inside region Rect."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Enable snap and show grid (configurable via the Inspector)."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display Tile Names (Hold Alt Key)"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Add or select a texture on the left panel to edit the tiles bound to it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove selected texture? This will remove all tiles which use it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "You haven't selected a texture to remove."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create from scene? This will overwrite all current tiles."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Merge from scene?"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove Texture"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "%s file(s) were not added because was already on the list."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Drag handles to edit Rect.\n"
-"Click on another Tile to edit it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Delete selected Rect."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select current edited sub-tile.\n"
-"Click on another Tile to edit it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Delete polygon."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"LMB: Set bit on.\n"
-"RMB: Set bit off.\n"
-"Shift+LMB: Set wildcard bit.\n"
-"Click on another Tile to edit it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings.\n"
-"Click on another Tile to edit it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to change its priority.\n"
-"Click on another Tile to edit it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to change its z index.\n"
-"Click on another Tile to edit it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Set Tile Region"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create Tile"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Set Tile Icon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Edit Tile Bitmask"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Edit Collision Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Edit Occlusion Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Edit Navigation Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Paste Tile Bitmask"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Clear Tile Bitmask"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Make Polygon Concave"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Make Polygon Convex"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove Tile"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove Collision Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove Occlusion Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove Navigation Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Edit Tile Priority"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Edit Tile Z Index"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Make Convex"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Make Concave"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create Collision Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create Occlusion Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "This property can't be changed."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Snap Options"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/animated_sprite.cpp
-#: scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
-#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
-#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/label_3d.cpp scene/3d/path.cpp
-#: scene/3d/physics_body.cpp scene/3d/soft_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/style_box.cpp
-msgid "Offset"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp editor/rename_dialog.cpp
-#: scene/gui/range.cpp scene/resources/animation.cpp
-#: scene/resources/visual_shader_nodes.cpp servers/physics_2d_server.cpp
-#: servers/physics_server.cpp
-msgid "Step"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Separation"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Selected Tile"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/line_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/polygon_2d.cpp scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/texture_rect.cpp
-#: scene/resources/material.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
-msgid "Texture"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tex Offset"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp modules/csg/csg_shape.cpp
-#: scene/2d/canvas_item.cpp scene/2d/particles_2d.cpp
-#: scene/3d/mesh_instance.cpp scene/resources/primitive_meshes.cpp
-msgid "Material"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/canvas_item.cpp
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp scene/resources/style_box.cpp
-msgid "Modulate"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Autotile Bitmask Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Subtile Size"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Subtile Spacing"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Occluder Offset"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Navigation Offset"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Shape Offset"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Shape Transform"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Selected Collision"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Selected Collision One Way"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Selected Collision One Way Margin"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Selected Navigation"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Selected Occlusion"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tileset Script"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "TileSet"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "No VCS plugins are available."
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid ""
-"Remote settings are empty. VCS features that use the network may not work."
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "No commit message was provided."
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Commit"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Staged Changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Unstaged Changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Commit:"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Date:"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Subtitle:"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Do you want to remove the %s branch?"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Do you want to remove the %s remote?"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Apply"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control System"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Initialize"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Remote Login"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Select SSH public key path"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Select SSH private key path"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "SSH Passphrase"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Detect new changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Discard all changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Stage all changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Unstage all changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Commit Message"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Commit Changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Commit List"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Commit list size"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Branches"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Create New Branch"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Remove Branch"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Branch Name"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Remotes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Create New Remote"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Remove Remote"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Remote Name"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Remote URL"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Fetch"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Pull"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Push"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Force Push"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Modified"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Renamed"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Deleted"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Typechange"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Unmerged"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "View:"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Split"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Unified"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "(GLES3 only)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Add Output"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Scalar"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Vector"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Boolean"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Sampler"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Add input port"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Add output port"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Change input port type"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Change output port type"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Change input port name"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Change output port name"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Remove input port"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Remove output port"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Set expression"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Resize VisualShader node"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Set Uniform Name"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Set Input Default Port"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Add Node to Visual Shader"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Node(s) Moved"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Duplicate Nodes"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Paste Nodes"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Delete Nodes"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Visual Shader Input Type Changed"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "UniformRef Name Changed"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Vertex"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Fragment"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp modules/gltf/gltf_node.cpp
-#: scene/3d/light.cpp
-msgid "Light"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Show resulted shader code."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Create Shader Node"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Color function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Color operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Grayscale function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Converts HSV vector to RGB equivalent."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Converts RGB vector to HSV equivalent."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Sepia function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Burn operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Darken operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Difference operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Dodge operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "HardLight operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Lighten operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Overlay operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Screen operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "SoftLight operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Color constant."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Color uniform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the boolean result of the %s comparison between two parameters."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Equal (==)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Greater Than (>)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Greater Than or Equal (>=)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns an associated vector if the provided scalars are equal, greater or "
-"less."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns the boolean result of the comparison between INF and a scalar "
-"parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns the boolean result of the comparison between NaN and a scalar "
-"parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Less Than (<)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Less Than or Equal (<=)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Not Equal (!=)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns an associated vector if the provided boolean value is true or false."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns an associated scalar if the provided boolean value is true or false."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the boolean result of the comparison between two parameters."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns the boolean result of the comparison between INF (or NaN) and a "
-"scalar parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Boolean constant."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Boolean uniform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for all shader modes."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Input parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for vertex and fragment shader modes."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for fragment and light shader modes."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for fragment shader mode."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for light shader mode."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for vertex shader mode."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for vertex and fragment shader mode."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Scalar function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Scalar operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "E constant (2.718282). Represents the base of the natural logarithm."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Epsilon constant (0.00001). Smallest possible scalar number."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Phi constant (1.618034). Golden ratio."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Pi/4 constant (0.785398) or 45 degrees."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Pi/2 constant (1.570796) or 90 degrees."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Pi constant (3.141593) or 180 degrees."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Tau constant (6.283185) or 360 degrees."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Sqrt2 constant (1.414214). Square root of 2."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the absolute value of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the arc-cosine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the inverse hyperbolic cosine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the arc-sine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the inverse hyperbolic sine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the arc-tangent of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the arc-tangent of the parameters."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the inverse hyperbolic tangent of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Finds the nearest integer that is greater than or equal to the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Constrains a value to lie between two further values."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the cosine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the hyperbolic cosine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Converts a quantity in radians to degrees."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Base-e Exponential."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Base-2 Exponential."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Finds the nearest integer less than or equal to the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Computes the fractional part of the argument."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the inverse of the square root of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Natural logarithm."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Base-2 logarithm."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the greater of two values."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the lesser of two values."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Linear interpolation between two scalars."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the opposite value of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "1.0 - scalar"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns the value of the first parameter raised to the power of the second."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Converts a quantity in degrees to radians."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "1.0 / scalar"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Finds the nearest integer to the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Finds the nearest even integer to the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Clamps the value between 0.0 and 1.0."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Extracts the sign of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the sine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the hyperbolic sine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the square root of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"SmoothStep function( scalar(edge0), scalar(edge1), scalar(x) ).\n"
-"\n"
-"Returns 0.0 if 'x' is smaller than 'edge0' and 1.0 if x is larger than "
-"'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 "
-"using Hermite polynomials."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Step function( scalar(edge), scalar(x) ).\n"
-"\n"
-"Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the tangent of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the hyperbolic tangent of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Finds the truncated value of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Adds scalar to scalar."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Divides scalar by scalar."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Multiplies scalar by scalar."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the remainder of the two scalars."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Subtracts scalar from scalar."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Scalar constant."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Scalar uniform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Perform the cubic texture lookup."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Perform the texture lookup."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Cubic texture uniform lookup."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "2D texture uniform lookup."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "2D texture uniform lookup with triplanar."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Transform function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Calculate the outer product of a pair of vectors.\n"
-"\n"
-"OuterProduct treats the first parameter 'c' as a column vector (matrix with "
-"one column) and the second parameter 'r' as a row vector (matrix with one "
-"row) and does a linear algebraic matrix multiply 'c * r', yielding a matrix "
-"whose number of rows is the number of components in 'c' and whose number of "
-"columns is the number of components in 'r'."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Composes transform from four vectors."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Decomposes transform to four vectors."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the determinant of a transform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the inverse of a transform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the transpose of a transform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Multiplies transform by transform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Multiplies vector by transform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Transform constant."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Transform uniform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Vector function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Vector operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Composes vector from three scalars."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Decomposes vector to three scalars."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the cross product of two vectors."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the distance between two points."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the dot product of two vectors."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns the vector that points in the same direction as a reference vector. "
-"The function has three vector parameters : N, the vector to orient, I, the "
-"incident vector, and Nref, the reference vector. If the dot product of I and "
-"Nref is smaller than zero the return value is N. Otherwise -N is returned."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the length of a vector."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Linear interpolation between two vectors."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Linear interpolation between two vectors using scalar."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the normalize product of vector."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "1.0 - vector"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "1.0 / vector"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns the vector that points in the direction of reflection ( a : incident "
-"vector, b : normal vector )."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the vector that points in the direction of refraction."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"SmoothStep function( vector(edge0), vector(edge1), vector(x) ).\n"
-"\n"
-"Returns 0.0 if 'x' is smaller than 'edge0' and 1.0 if 'x' is larger than "
-"'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 "
-"using Hermite polynomials."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"SmoothStep function( scalar(edge0), scalar(edge1), vector(x) ).\n"
-"\n"
-"Returns 0.0 if 'x' is smaller than 'edge0' and 1.0 if 'x' is larger than "
-"'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 "
-"using Hermite polynomials."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Step function( vector(edge), vector(x) ).\n"
-"\n"
-"Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Step function( scalar(edge), vector(x) ).\n"
-"\n"
-"Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Adds vector to vector."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Divides vector by vector."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Multiplies vector by vector."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the remainder of the two vectors."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Subtracts vector from vector."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Vector constant."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Vector uniform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Custom Godot Shader Language expression, with custom amount of input and "
-"output ports. This is a direct injection of code into the vertex/fragment/"
-"light function, do not use it to write the function declarations inside."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns falloff based on the dot product of surface normal and view "
-"direction of camera (pass associated inputs to it)."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Custom Godot Shader Language expression, which is placed on top of the "
-"resulted shader. You can place various function definitions inside and call "
-"it later in the Expressions. You can also declare varyings, uniforms and "
-"constants."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "A reference to an existing uniform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "(Fragment/Light mode only) Scalar derivative function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "(Fragment/Light mode only) Vector derivative function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"(Fragment/Light mode only) (Vector) Derivative in 'x' using local "
-"differencing."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"(Fragment/Light mode only) (Scalar) Derivative in 'x' using local "
-"differencing."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"(Fragment/Light mode only) (Vector) Derivative in 'y' using local "
-"differencing."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"(Fragment/Light mode only) (Scalar) Derivative in 'y' using local "
-"differencing."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"(Fragment/Light mode only) (Vector) Sum of absolute derivative in 'x' and "
-"'y'."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"(Fragment/Light mode only) (Scalar) Sum of absolute derivative in 'x' and "
-"'y'."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "VisualShader"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property:"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Visual Shader Mode Changed"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Runnable"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export the project for all the presets defined."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "All presets must have an export path defined for Export All to work."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Delete preset '%s'?"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Exporting All"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export Path"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Presets"
-msgstr ""
-
-#: editor/project_export.cpp editor/project_settings_editor.cpp
-msgid "Add..."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"If checked, the preset will be available for use in one-click deploy.\n"
-"Only one preset per platform may be marked as runnable."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Resources"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export all resources in the project"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export selected scenes (and dependencies)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export selected resources (and dependencies)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export Mode:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Resources to export:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Filters to export non-resource files/folders\n"
-"(comma-separated, e.g: *.json, *.txt, docs/*)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Filters to exclude files/folders from project\n"
-"(comma-separated, e.g: *.json, *.txt, docs/*)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Features"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Custom (comma-separated):"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Feature List:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Script"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "GDScript Export Mode:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Compiled Bytecode (Faster Loading)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Encrypted (Provide Key Below)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "GDScript Encryption Key (256-bits as hexadecimal):"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Note: Encryption key needs to be stored in the binary,\n"
-"you need to build the export templates from source."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "More Info..."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export PCK/Zip..."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export Project..."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export All"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Choose an export mode:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export All..."
-msgstr ""
-
-#: editor/project_export.cpp editor/project_manager.cpp
-msgid "ZIP File"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Godot Project Pack"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Manage Export Templates"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export With Debug"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "The path specified doesn't exist."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Error opening package file (it's not in ZIP format)."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Invalid \".zip\" project file; it doesn't contain a \"project.godot\" file."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Please choose an empty folder."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Please choose a \"project.godot\" or \".zip\" file."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "This directory already contains a Godot project."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "New Game Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Imported Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Invalid project name."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Couldn't create folder."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "There is already a folder in this path with the specified name."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "It would be a good idea to name your project."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Invalid project path (changed anything?)."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Couldn't load project.godot in project path (error %d). It may be missing or "
-"corrupted."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Couldn't edit project.godot in project path."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Couldn't create project.godot in project path."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Package installed successfully!"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Rename Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Import Existing Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Import & Edit"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Create New Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Create & Edit"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Install Project:"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Install & Edit"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Project Name:"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Project Path:"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Project Installation Path:"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Renderer:"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "OpenGL ES 3.0"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Not supported by your GPU drivers."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Higher visual quality\n"
-"All features available\n"
-"Incompatible with older hardware\n"
-"Not recommended for web games"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "OpenGL ES 2.0"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Lower visual quality\n"
-"Some features not available\n"
-"Works on most hardware\n"
-"Recommended for web games"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Renderer can be changed later, but scenes may need to be adjusted."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Missing Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Error: Project is missing on the filesystem."
-msgstr ""
-
-#: editor/project_manager.cpp editor/scene_tree_dock.cpp
-msgid "Local"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Local Projects"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Asset Library Projects"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Can't open project at '%s'."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Are you sure to open more than one project?"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"The following project settings file does not specify the version of Godot "
-"through which it was created.\n"
-"\n"
-"%s\n"
-"\n"
-"If you proceed with opening it, it will be converted to Godot's current "
-"configuration file format.\n"
-"Warning: You won't be able to open the project with previous versions of the "
-"engine anymore."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"The following project settings file was generated by an older engine "
-"version, and needs to be converted for this version:\n"
-"\n"
-"%s\n"
-"\n"
-"Do you want to convert it?\n"
-"Warning: You won't be able to open the project with previous versions of the "
-"engine anymore."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"The project settings were created by a newer engine version, whose settings "
-"are not compatible with this version."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Can't run project: no main scene defined.\n"
-"Please edit the project and set the main scene in the Project Settings under "
-"the \"Application\" category."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Can't run project: Assets need to be imported.\n"
-"Please edit the project to trigger the initial import."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Are you sure to run %d projects at once?"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Remove %d projects from the list?"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Remove this project from the list?"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Remove all missing projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Language changed.\n"
-"The interface will update after restarting the editor or project manager."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Are you sure to scan %s folders for existing Godot projects?\n"
-"This could take a while."
-msgstr ""
-
-#. TRANSLATORS: This refers to the application where users manage their Godot projects.
-#: editor/project_manager.cpp
-msgctxt "Application"
-msgid "Project Manager"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Last Modified"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Loading, please wait..."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Edit Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Run Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Scan"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Scan Projects"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Select a Folder to Scan"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "New Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Import Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Remove Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Remove Missing"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "About"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Restart Now"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Remove All"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Also delete project contents (no undo!)"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Can't run project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"You currently don't have any projects.\n"
-"Would you like to explore official example projects in the Asset Library?"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Filter projects"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"This field filters projects by name and last path component.\n"
-"To filter projects by name and full path, the query must contain at least "
-"one `/` character."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Physical Key"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Key "
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Joy Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Joy Axis"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Mouse Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid ""
-"Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or "
-"'\"'"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "An action with the name '%s' already exists."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Rename Input Action Event"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Change Action deadzone"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Add Input Action Event"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "All Devices"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid " (Physical)"
-msgstr ""
-
-#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-msgid "Press a Key..."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Mouse Button Index:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Left Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Right Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Middle Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Wheel Up Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Wheel Down Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Wheel Left Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Wheel Right Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "X Button 1"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "X Button 2"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Joypad Axis Index:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Joypad Button Index:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Erase Input Action"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Erase Input Action Event"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Add Event"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Left Button."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Right Button."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Middle Button."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Wheel Up."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Wheel Down."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Add Global Property"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Select a setting item first!"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "No property '%s' exists."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Setting '%s' is internal, and it can't be deleted."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Delete Item"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid ""
-"Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or "
-"'\"'."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Add Input Action"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Error saving settings."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Settings saved OK."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Moved Input Action Event"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Override for Feature"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Add %d Translations"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Remove Translation"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Translation Resource Remap: Add %d Path(s)"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Translation Resource Remap: Add %d Remap(s)"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Change Resource Remap Language"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Remove Resource Remap"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Remove Resource Remap Option"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Changed Locale Filter"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Changed Locale Filter Mode"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Project Settings (project.godot)"
-msgstr ""
-
-#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-msgid "General"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Override For..."
-msgstr ""
-
-#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-msgid "The editor must be restarted for changes to take effect."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Input Map"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Action:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp scene/gui/scroll_container.cpp
-msgid "Deadzone"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Device:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Index:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Localization"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Translations"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Translations:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Remaps"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Resources:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Remaps by Locale:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Locales Filter"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Show All Locales"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Show Selected Locales Only"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Filter mode:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Locales:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "AutoLoad"
-msgstr ""
-
-#: editor/project_settings_editor.cpp platform/android/export/export_plugin.cpp
-#: platform/iphone/export/export.cpp
-msgid "Plugins"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Import Defaults"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Preset..."
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Zero"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Easing In-Out"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Easing Out-In"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "File..."
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Dir..."
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Assign"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Select Node"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Error loading file: Not a resource!"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Pick a Node"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Bit %d, val %d."
-msgstr ""
-
-#: editor/property_selector.cpp
-msgid "Select Property"
-msgstr ""
-
-#: editor/property_selector.cpp
-msgid "Select Virtual Method"
-msgstr ""
-
-#: editor/property_selector.cpp
-msgid "Select Method"
-msgstr ""
-
-#: editor/rename_dialog.cpp editor/scene_tree_dock.cpp
-msgid "Batch Rename"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Prefix:"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Suffix:"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Use Regular Expressions"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Advanced Options"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Substitute"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Node name"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Node's parent name, if available"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Node type"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Current scene name"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Root node name"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid ""
-"Sequential integer counter.\n"
-"Compare counter options."
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Per-level Counter"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "If set, the counter restarts for each group of child nodes."
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Initial value for the counter"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Amount by which counter is incremented for each node"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Padding"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid ""
-"Minimum number of digits for the counter.\n"
-"Missing digits are padded with leading zeros."
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Post-Process"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Style"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Keep"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "PascalCase to snake_case"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "snake_case to PascalCase"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Case"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "To Lowercase"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "To Uppercase"
-msgstr ""
-
-#: editor/rename_dialog.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Reset"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Regular Expression Error:"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "At character %s"
-msgstr ""
-
-#: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp
-msgid "Reparent Node"
-msgstr ""
-
-#: editor/reparent_dialog.cpp
-msgid "Reparent Location (Select new Parent):"
-msgstr ""
-
-#: editor/reparent_dialog.cpp
-msgid "Keep Global Transform"
-msgstr ""
-
-#: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp
-msgid "Reparent"
-msgstr ""
-
-#: editor/run_settings_dialog.cpp
-msgid "Run Mode:"
-msgstr ""
-
-#: editor/run_settings_dialog.cpp scene/main/scene_tree.cpp
-msgid "Current Scene"
-msgstr ""
-
-#: editor/run_settings_dialog.cpp
-msgid "Main Scene Arguments:"
-msgstr ""
-
-#: editor/run_settings_dialog.cpp
-msgid "Scene Run Settings"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "No parent to instance the scenes at."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Error loading scene from %s"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Cannot instance the scene '%s' because the current scene exists within one "
-"of its nodes."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Instance Scene(s)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Replace with Branch Scene"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Instance Child Scene"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Can't paste root node into the same scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Paste Node(s)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Detach Script"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on the tree root."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Move Node In Parent"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Move Nodes In Parent"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Duplicate Node(s)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Node must belong to the edited scene to become root."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Instantiated scenes can't become root"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Make node as Root"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Delete %d nodes and any children?"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Delete %d nodes?"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Delete the root node \"%s\"?"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Delete node \"%s\" and its children?"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Delete node \"%s\"?"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Saving the branch as a scene requires having a scene open in the editor."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Saving the branch as a scene requires selecting only one node, but you have "
-"selected %d nodes."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Can't save the root node branch as an instanced scene.\n"
-"To create an editable copy of the current scene, duplicate it using the "
-"FileSystem dock context menu\n"
-"or create an inherited scene using Scene > New Inherited Scene... instead."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Can't save the branch of an already instanced scene.\n"
-"To create a variation of a scene, you can make an inherited scene based on "
-"the instanced scene using Scene > New Inherited Scene... instead."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Can't save a branch which is a child of an already instantiated scene.\n"
-"To save this branch into its own scene, open the original scene, right click "
-"on this branch, and select \"Save Branch as Scene\"."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Can't save a branch which is part of an inherited scene.\n"
-"To save this branch into its own scene, open the original scene, right click "
-"on this branch, and select \"Save Branch as Scene\"."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Save New Scene As..."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Disabling \"editable_instance\" will cause all properties of the node to be "
-"reverted to their default."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Enabling \"Load As Placeholder\" will disable \"Editable Children\" and "
-"cause all properties of the node to be reverted to their default."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Make Local"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
-msgid "Another node already uses this unique name in the scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Enable Scene Unique Name"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
-msgid "Disable Scene Unique Name"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "New Scene Root"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Create Root Node:"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "2D Scene"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "3D Scene"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "User Interface"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Other Node"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Can't operate on nodes from a foreign scene!"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Can't operate on nodes the current scene inherits from!"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Attach Script"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Cut Node(s)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Remove Node(s)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Change type of node(s)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Couldn't save new scene. Likely dependencies (instances) couldn't be "
-"satisfied."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Error saving scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Error duplicating scene to save it."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Access as Scene Unique Name"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Clear Inheritance"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Editable Children"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Load As Placeholder"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Cannot attach a script: there are no languages registered.\n"
-"This is probably because this editor was built with all language modules "
-"disabled."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Add Child Node"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Expand/Collapse All"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Change Type"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Reparent to New Node"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Make Scene Root"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Merge From Scene"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp editor/script_editor_debugger.cpp
-msgid "Save Branch as Scene"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp editor/script_editor_debugger.cpp
-msgid "Copy Node Path"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Delete (No Confirm)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Add/Create a New Node."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Instance a scene file as a Node. Creates an inherited scene if no root node "
-"exists."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Attach a new or existing script to the selected node."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Detach the script from the selected node."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Remote"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"If selected, the Remote scene tree dock will cause the project to stutter "
-"every time it updates.\n"
-"Switch back to the Local scene tree dock to improve performance."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Show Scene Tree Root Selection"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Derive Script Globals By Name"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Use Favorites Root Selection"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Toggle Visible"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Unlock Node"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Button Group"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "(Connecting From)"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Node configuration warning:"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"This node can be accessed from within anywhere in the scene by preceding it "
-"with the '%s' prefix in a node path.\n"
-"Click to disable this."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"Node has %s connection(s) and %s group(s).\n"
-"Click to show signals dock."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"Node has %s connection(s).\n"
-"Click to show signals dock."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"Node is in %s group(s).\n"
-"Click to show groups dock."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Open Script:"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"Node is locked.\n"
-"Click to unlock it."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"Children are not selectable.\n"
-"Click to make selectable."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Toggle Visibility"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"AnimationPlayer is pinned.\n"
-"Click to unpin."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Invalid node name, the following characters are not allowed:"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Rename Node"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Scene Tree (Nodes):"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Node Configuration Warning!"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Select a Node"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Path is empty."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Filename is empty."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Path is not local."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Invalid base path."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "A directory with the same name exists."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "File does not exist."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Invalid extension."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Wrong extension chosen."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Error loading template '%s'"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Error - Could not create script in filesystem."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Error loading script from %s"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Overrides"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Open Script / Choose Location"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Open Script"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "File exists, it will be reused."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Invalid path."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Invalid class name."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Invalid inherited parent name or path."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Script path/name is valid."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Allowed: a-z, A-Z, 0-9, _ and ."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Built-in script (into scene file)."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Will create a new script file."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Will load an existing script file."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Script file already exists."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid ""
-"Note: Built-in scripts have some limitations and can't be edited using an "
-"external editor."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid ""
-"Warning: Having the script name be the same as a built-in type is usually "
-"not desired."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Class Name:"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Template:"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Built-in Script:"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Attach Node Script"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Bytes:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Warning:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Error:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "C++ Error"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "C++ Error:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "C++ Source"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Source:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "C++ Source:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Stack Trace"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Errors"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Child process connected."
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Copy Error"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Open C++ Source on GitHub"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Video RAM"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Skip Breakpoints"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Inspect Previous Instance"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Inspect Next Instance"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Stack Frames"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Filter stack variables"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Auto Switch To Remote Scene Tree"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Remote Scene Tree Refresh Interval"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Remote Inspect Refresh Interval"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Network Profiler"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Monitor"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Monitors"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Pick one or more items from the list to display the graph."
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "List of Video Memory Usage by Resource:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Total:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Export list to a CSV file"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Resource Path"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp scene/resources/audio_stream_sample.cpp
-#: servers/audio/effects/audio_effect_record.cpp
-msgid "Format"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp scene/main/viewport.cpp
-msgid "Usage"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp servers/visual_server.cpp
-msgid "Misc"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Clicked Control:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Clicked Control Type:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Live Edit Root:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Set From Tree"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Export measures as CSV"
-msgstr ""
-
-#: editor/settings_config_dialog.cpp
-msgid "Erase Shortcut"
-msgstr ""
-
-#: editor/settings_config_dialog.cpp
-msgid "Restore Shortcut"
-msgstr ""
-
-#: editor/settings_config_dialog.cpp
-msgid "Change Shortcut"
-msgstr ""
-
-#: editor/settings_config_dialog.cpp
-msgid "Editor Settings"
-msgstr ""
-
-#: editor/settings_config_dialog.cpp
-msgid "Shortcuts"
-msgstr ""
-
-#: editor/settings_config_dialog.cpp
-msgid "Binding"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Light Radius"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Stream Player 3D"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change AudioStreamPlayer3D Emission Angle"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
-#: platform/osx/export/export.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Camera"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Camera FOV"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Camera Size"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Visibility Notifier"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Notifier AABB"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Particles AABB"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Reflection Probe"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Probe Extents"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "GI Probe"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Baked Indirect Light"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
-msgid "Change Sphere Shape Radius"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
-msgid "Change Box Shape Extents"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Capsule Shape Radius"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Capsule Shape Height"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Cylinder Shape Radius"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Cylinder Shape Height"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Ray Shape Length"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Navigation Edge"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Navigation Edge Disabled"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Navigation Solid"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Navigation Solid Disabled"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Joint Body A"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Joint Body B"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Room Edge"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Room Overlap"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Set Room Point Position"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp scene/3d/portal.cpp
-msgid "Portal Margin"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Portal Edge"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Portal Arrow"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Set Portal Point Position"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Portal Front"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Portal Back"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp scene/2d/light_occluder_2d.cpp
-#: scene/2d/tile_map.cpp
-msgid "Occluder"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Set Occluder Sphere Radius"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Set Occluder Sphere Position"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Set Occluder Polygon Point Position"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Set Occluder Hole Point Position"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Occluder Polygon Front"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Occluder Polygon Back"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Occluder Hole"
-msgstr ""
-
-#: main/main.cpp
-msgid "Godot Physics"
-msgstr ""
-
-#: main/main.cpp servers/physics_2d/physics_2d_server_sw.cpp
-#: servers/visual/visual_server_scene.cpp
-msgid "Use BVH"
-msgstr ""
-
-#: main/main.cpp servers/physics_2d/physics_2d_server_sw.cpp
-#: servers/visual/visual_server_scene.cpp
-msgid "BVH Collision Margin"
-msgstr ""
-
-#: main/main.cpp
-msgid "Crash Handler"
-msgstr ""
-
-#: main/main.cpp
-msgid "Multithreaded Server"
-msgstr ""
-
-#: main/main.cpp
-msgid "RID Pool Prealloc"
-msgstr ""
-
-#: main/main.cpp
-msgid "Debugger stdout"
-msgstr ""
-
-#: main/main.cpp
-msgid "Max Chars Per Second"
-msgstr ""
-
-#: main/main.cpp
-msgid "Max Messages Per Frame"
-msgstr ""
-
-#: main/main.cpp
-msgid "Max Errors Per Second"
-msgstr ""
-
-#: main/main.cpp
-msgid "Max Warnings Per Second"
-msgstr ""
-
-#: main/main.cpp
-msgid "Flush stdout On Print"
-msgstr ""
-
-#: main/main.cpp servers/visual_server.cpp
-msgid "Logging"
-msgstr ""
-
-#: main/main.cpp
-msgid "File Logging"
-msgstr ""
-
-#: main/main.cpp
-msgid "Enable File Logging"
-msgstr ""
-
-#: main/main.cpp
-msgid "Log Path"
-msgstr ""
-
-#: main/main.cpp
-msgid "Max Log Files"
-msgstr ""
-
-#: main/main.cpp
-msgid "Driver"
-msgstr ""
-
-#: main/main.cpp
-msgid "Driver Name"
-msgstr ""
-
-#: main/main.cpp
-msgid "Fallback To GLES2"
-msgstr ""
-
-#: main/main.cpp
-msgid "Use Nvidia Rect Flicker Workaround"
-msgstr ""
-
-#: main/main.cpp
-msgid "DPI"
-msgstr ""
-
-#: main/main.cpp
-msgid "Allow hiDPI"
-msgstr ""
-
-#: main/main.cpp
-msgid "V-Sync"
-msgstr ""
-
-#: main/main.cpp
-msgid "Use V-Sync"
-msgstr ""
-
-#: main/main.cpp
-msgid "Per Pixel Transparency"
-msgstr ""
-
-#: main/main.cpp
-msgid "Allowed"
-msgstr ""
-
-#: main/main.cpp
-msgid "Intended Usage"
-msgstr ""
-
-#: main/main.cpp
-msgid "Framebuffer Allocation"
-msgstr ""
-
-#: main/main.cpp platform/uwp/os_uwp.cpp
-msgid "Energy Saving"
-msgstr ""
-
-#: main/main.cpp
-msgid "Threads"
-msgstr ""
-
-#: main/main.cpp servers/physics_2d/physics_2d_server_wrap_mt.h
-msgid "Thread Model"
-msgstr ""
-
-#: main/main.cpp
-msgid "Thread Safe BVH"
-msgstr ""
-
-#: main/main.cpp
-msgid "Handheld"
-msgstr ""
-
-#: main/main.cpp platform/javascript/export/export.cpp
-#: platform/uwp/export/export.cpp
-msgid "Orientation"
-msgstr ""
-
-#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
-msgid "Common"
-msgstr ""
-
-#: main/main.cpp
-msgid "Physics FPS"
-msgstr ""
-
-#: main/main.cpp
-msgid "Force FPS"
-msgstr ""
-
-#: main/main.cpp
-msgid "Enable Pause Aware Picking"
-msgstr ""
-
-#: main/main.cpp scene/gui/item_list.cpp scene/gui/popup_menu.cpp
-#: scene/gui/scroll_container.cpp scene/gui/text_edit.cpp scene/gui/tree.cpp
-#: scene/main/viewport.cpp scene/register_scene_types.cpp
-msgid "GUI"
-msgstr ""
-
-#: main/main.cpp
-msgid "Drop Mouse On GUI Input Disabled"
-msgstr ""
-
-#: main/main.cpp
-msgid "stdout"
-msgstr ""
-
-#: main/main.cpp
-msgid "Print FPS"
-msgstr ""
-
-#: main/main.cpp
-msgid "Verbose stdout"
-msgstr ""
-
-#: main/main.cpp scene/main/scene_tree.cpp scene/resources/multimesh.cpp
-msgid "Physics Interpolation"
-msgstr ""
-
-#: main/main.cpp
-msgid "Enable Warnings"
-msgstr ""
-
-#: main/main.cpp
-msgid "Frame Delay Msec"
-msgstr ""
-
-#: main/main.cpp
-msgid "Low Processor Mode"
-msgstr ""
-
-#: main/main.cpp
-msgid "Delta Sync After Draw"
-msgstr ""
-
-#: main/main.cpp
-msgid "iOS"
-msgstr ""
-
-#: main/main.cpp
-msgid "Hide Home Indicator"
-msgstr ""
-
-#: main/main.cpp
-msgid "Input Devices"
-msgstr ""
-
-#: main/main.cpp
-msgid "Pointing"
-msgstr ""
-
-#: main/main.cpp
-msgid "Touch Delay"
-msgstr ""
-
-#: main/main.cpp servers/visual_server.cpp
-msgid "GLES3"
-msgstr ""
-
-#: main/main.cpp servers/visual_server.cpp
-msgid "Shaders"
-msgstr ""
-
-#: main/main.cpp
-msgid "Debug Shader Fallbacks"
-msgstr ""
-
-#: main/main.cpp scene/3d/baked_lightmap.cpp scene/3d/camera.cpp
-#: scene/3d/world_environment.cpp scene/main/scene_tree.cpp
-#: scene/resources/world.cpp
-msgid "Environment"
-msgstr ""
-
-#: main/main.cpp
-msgid "Default Clear Color"
-msgstr ""
-
-#: main/main.cpp
-msgid "Boot Splash"
-msgstr ""
-
-#: main/main.cpp
-msgid "Show Image"
-msgstr ""
-
-#: main/main.cpp
-msgid "Image"
-msgstr ""
-
-#: main/main.cpp
-msgid "Fullsize"
-msgstr ""
-
-#: main/main.cpp scene/resources/dynamic_font.cpp
-msgid "Use Filter"
-msgstr ""
-
-#: main/main.cpp scene/resources/style_box.cpp
-msgid "BG Color"
-msgstr ""
-
-#: main/main.cpp
-msgid "macOS Native Icon"
-msgstr ""
-
-#: main/main.cpp
-msgid "Windows Native Icon"
-msgstr ""
-
-#: main/main.cpp
-msgid "Buffering"
-msgstr ""
-
-#: main/main.cpp
-msgid "Agile Event Flushing"
-msgstr ""
-
-#: main/main.cpp
-msgid "Emulate Touch From Mouse"
-msgstr ""
-
-#: main/main.cpp
-msgid "Emulate Mouse From Touch"
-msgstr ""
-
-#: main/main.cpp
-msgid "Mouse Cursor"
-msgstr ""
-
-#: main/main.cpp
-msgid "Custom Image"
-msgstr ""
-
-#: main/main.cpp
-msgid "Custom Image Hotspot"
-msgstr ""
-
-#: main/main.cpp
-msgid "Tooltip Position Offset"
-msgstr ""
-
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
-msgid "Debugger Agent"
-msgstr ""
-
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
-msgid "Wait For Debugger"
-msgstr ""
-
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
-msgid "Wait Timeout"
-msgstr ""
-
-#: main/main.cpp
-msgid "Runtime"
-msgstr ""
-
-#: main/main.cpp
-msgid "Unhandled Exception Policy"
-msgstr ""
-
-#: main/main.cpp
-msgid "Main Loop Type"
-msgstr ""
-
-#: main/main.cpp scene/gui/texture_progress.cpp
-#: scene/gui/viewport_container.cpp
-msgid "Stretch"
-msgstr ""
-
-#: main/main.cpp
-msgid "Aspect"
-msgstr ""
-
-#: main/main.cpp
-msgid "Shrink"
-msgstr ""
-
-#: main/main.cpp scene/main/scene_tree.cpp
-msgid "Auto Accept Quit"
-msgstr ""
-
-#: main/main.cpp scene/main/scene_tree.cpp
-msgid "Quit On Go Back"
-msgstr ""
-
-#: main/main.cpp scene/main/viewport.cpp
-msgid "Snap Controls To Pixels"
-msgstr ""
-
-#: main/main.cpp
-msgid "Dynamic Fonts"
-msgstr ""
-
-#: main/main.cpp
-msgid "Use Oversampling"
-msgstr ""
-
-#: modules/bullet/register_types.cpp modules/bullet/space_bullet.cpp
-msgid "Active Soft World"
-msgstr ""
-
-#: modules/csg/csg_gizmos.cpp
-msgid "CSG"
-msgstr ""
-
-#: modules/csg/csg_gizmos.cpp
-msgid "Change Cylinder Radius"
-msgstr ""
-
-#: modules/csg/csg_gizmos.cpp
-msgid "Change Cylinder Height"
-msgstr ""
-
-#: modules/csg/csg_gizmos.cpp
-msgid "Change Torus Inner Radius"
-msgstr ""
-
-#: modules/csg/csg_gizmos.cpp
-msgid "Change Torus Outer Radius"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Operation"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Calculate Tangents"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Use Collision"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp servers/physics_2d_server.cpp
-msgid "Collision Layer"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp scene/2d/ray_cast_2d.cpp scene/3d/camera.cpp
-#: scene/3d/ray_cast.cpp scene/3d/spring_arm.cpp
-#: scene/resources/navigation_mesh.cpp servers/physics_server.cpp
-msgid "Collision Mask"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Invert Faces"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp scene/2d/navigation_agent_2d.cpp
-#: scene/2d/navigation_obstacle_2d.cpp scene/3d/navigation_agent.cpp
-#: scene/3d/navigation_obstacle.cpp scene/3d/vehicle_body.cpp
-#: scene/animation/root_motion_view.cpp scene/resources/capsule_shape.cpp
-#: scene/resources/capsule_shape_2d.cpp scene/resources/circle_shape_2d.cpp
-#: scene/resources/cylinder_shape.cpp scene/resources/environment.cpp
-#: scene/resources/navigation_mesh.cpp scene/resources/primitive_meshes.cpp
-#: scene/resources/sphere_shape.cpp
-msgid "Radius"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp scene/resources/primitive_meshes.cpp
-msgid "Radial Segments"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp scene/resources/primitive_meshes.cpp
-msgid "Rings"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Smooth Faces"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Sides"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Cone"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Inner Radius"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Outer Radius"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Ring Sides"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
-#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
-msgid "Polygon"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Spin Degrees"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Spin Sides"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Node"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Interval Type"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Interval"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Simplify Angle"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Rotation"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Local"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Continuous U"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path U Distance"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Joined"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "Compression Mode"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "Transfer Channel"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "Channel Count"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "Always Ordered"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "Server Relay"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "DTLS Verify"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "DTLS Hostname"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "Use DTLS"
-msgstr ""
-
-#: modules/fbx/editor_scene_importer_fbx.cpp
-msgid "FBX"
-msgstr ""
-
-#: modules/fbx/editor_scene_importer_fbx.cpp
-msgid "Use FBX"
-msgstr ""
-
-#: modules/gdnative/gdnative.cpp
-msgid "Config File"
-msgstr ""
-
-#: modules/gdnative/gdnative.cpp
-msgid "Load Once"
-msgstr ""
-
-#: modules/gdnative/gdnative.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Singleton"
-msgstr ""
-
-#: modules/gdnative/gdnative.cpp
-msgid "Symbol Prefix"
-msgstr ""
-
-#: modules/gdnative/gdnative.cpp
-msgid "Reloadable"
-msgstr ""
-
-#: modules/gdnative/gdnative.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-#: modules/gdnative/nativescript/nativescript.cpp
-msgid "Library"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Select the dynamic library for this entry"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Select dependencies of the library for this entry"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Remove current entry"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Double click to create a new entry"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Platform:"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Platform"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Dynamic Library"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Add an architecture entry"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "GDNativeLibrary"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Enabled GDNative Singleton"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Disabled GDNative Singleton"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
-msgstr ""
-
-#: modules/gdnative/nativescript/nativescript.cpp
-msgid "Class Name"
-msgstr ""
-
-#: modules/gdnative/nativescript/nativescript.cpp
-msgid "Script Class"
-msgstr ""
-
-#: modules/gdnative/nativescript/nativescript.cpp
-msgid "Icon Path"
-msgstr ""
-
-#: modules/gdnative/register_types.cpp
-msgid "GDNative"
-msgstr ""
-
-#: modules/gdscript/editor/gdscript_highlighter.cpp
-#: modules/gdscript/gdscript.cpp
-msgid "GDScript"
-msgstr ""
-
-#: modules/gdscript/editor/gdscript_highlighter.cpp
-msgid "Function Definition Color"
-msgstr ""
-
-#: modules/gdscript/editor/gdscript_highlighter.cpp
-msgid "Node Path Color"
-msgstr ""
-
-#: modules/gdscript/gdscript.cpp modules/visual_script/visual_script.cpp
-msgid "Max Call Stack"
-msgstr ""
-
-#: modules/gdscript/gdscript.cpp
-msgid "Treat Warnings As Errors"
-msgstr ""
-
-#: modules/gdscript/gdscript.cpp
-msgid "Exclude Addons"
-msgstr ""
-
-#: modules/gdscript/gdscript.cpp
-msgid "Autocomplete Setters And Getters"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Step argument is zero!"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Not a script with an instance"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Not based on a script"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Not based on a resource file"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Invalid instance dictionary format (missing @path)"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Invalid instance dictionary format (can't load script at @path)"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Invalid instance dictionary format (invalid script at @path)"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Invalid instance dictionary (invalid subclasses)"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Object can't provide a length."
-msgstr ""
-
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-msgid "Language Server"
-msgstr ""
-
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-msgid "Enable Smart Resolve"
-msgstr ""
-
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-msgid "Show Native Symbols In Editor"
-msgstr ""
-
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-msgid "Use Thread"
-msgstr ""
-
-#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
-msgid "Export Mesh GLTF2"
-msgstr ""
-
-#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
-msgid "Export GLTF..."
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Buffer View"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp modules/gltf/gltf_buffer_view.cpp
-msgid "Byte Offset"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Component Type"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Normalized"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Count"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp scene/resources/visual_shader_nodes.cpp
-msgid "Min"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp scene/resources/visual_shader_nodes.cpp
-msgid "Max"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Sparse Count"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Sparse Indices Buffer View"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Sparse Indices Byte Offset"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Sparse Indices Component Type"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Sparse Values Buffer View"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Sparse Values Byte Offset"
-msgstr ""
-
-#: modules/gltf/gltf_buffer_view.cpp
-msgid "Buffer"
-msgstr ""
-
-#: modules/gltf/gltf_buffer_view.cpp
-msgid "Byte Length"
-msgstr ""
-
-#: modules/gltf/gltf_buffer_view.cpp
-msgid "Byte Stride"
-msgstr ""
-
-#: modules/gltf/gltf_buffer_view.cpp
-msgid "Indices"
-msgstr ""
-
-#: modules/gltf/gltf_camera.cpp
-msgid "FOV Size"
-msgstr ""
-
-#: modules/gltf/gltf_camera.cpp
-msgid "Zfar"
-msgstr ""
-
-#: modules/gltf/gltf_camera.cpp
-msgid "Znear"
-msgstr ""
-
-#: modules/gltf/gltf_light.cpp scene/2d/canvas_modulate.cpp
-#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/light.cpp
-#: scene/animation/root_motion_view.cpp scene/gui/color_picker.cpp
-#: scene/gui/color_rect.cpp scene/gui/rich_text_effect.cpp
-#: scene/resources/environment.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp
-msgid "Color"
-msgstr ""
-
-#: modules/gltf/gltf_light.cpp scene/3d/reflection_probe.cpp
-#: scene/resources/environment.cpp
-msgid "Intensity"
-msgstr ""
-
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
-msgid "Range"
-msgstr ""
-
-#: modules/gltf/gltf_light.cpp
-msgid "Inner Cone Angle"
-msgstr ""
-
-#: modules/gltf/gltf_light.cpp
-msgid "Outer Cone Angle"
-msgstr ""
-
-#: modules/gltf/gltf_mesh.cpp
-msgid "Blend Weights"
-msgstr ""
-
-#: modules/gltf/gltf_mesh.cpp
-msgid "Instance Materials"
-msgstr ""
-
-#: modules/gltf/gltf_node.cpp scene/3d/skeleton.cpp
-msgid "Parent"
-msgstr ""
-
-#: modules/gltf/gltf_node.cpp
-msgid "Xform"
-msgstr ""
-
-#: modules/gltf/gltf_node.cpp scene/3d/mesh_instance.cpp
-msgid "Skin"
-msgstr ""
-
-#: modules/gltf/gltf_node.cpp scene/3d/spatial.cpp
-msgid "Translation"
-msgstr ""
-
-#: modules/gltf/gltf_node.cpp
-msgid "Children"
-msgstr ""
-
-#: modules/gltf/gltf_skeleton.cpp modules/gltf/gltf_skin.cpp
-msgid "Joints"
-msgstr ""
-
-#: modules/gltf/gltf_skeleton.cpp modules/gltf/gltf_skin.cpp
-msgid "Roots"
-msgstr ""
-
-#: modules/gltf/gltf_skeleton.cpp modules/gltf/gltf_state.cpp
-msgid "Unique Names"
-msgstr ""
-
-#: modules/gltf/gltf_skeleton.cpp
-msgid "Godot Bone Node"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Skin Root"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Joints Original"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Inverse Binds"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Non Joints"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Joint I To Bone I"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Joint I To Name"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Godot Skin"
-msgstr ""
-
-#: modules/gltf/gltf_spec_gloss.cpp
-msgid "Diffuse Img"
-msgstr ""
-
-#: modules/gltf/gltf_spec_gloss.cpp
-msgid "Diffuse Factor"
-msgstr ""
-
-#: modules/gltf/gltf_spec_gloss.cpp
-msgid "Gloss Factor"
-msgstr ""
-
-#: modules/gltf/gltf_spec_gloss.cpp
-msgid "Specular Factor"
-msgstr ""
-
-#: modules/gltf/gltf_spec_gloss.cpp
-msgid "Spec Gloss Img"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Json"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Major Version"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Minor Version"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "GLB Data"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Use Named Skin Binds"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Buffer Views"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Accessors"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Scene Name"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Root Nodes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp scene/2d/particles_2d.cpp
-#: scene/gui/texture_button.cpp scene/gui/texture_progress.cpp
-msgid "Textures"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
-msgid "Images"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Cameras"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp servers/visual_server.cpp
-msgid "Lights"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Unique Animation Names"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Skeletons"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Skeleton To Node"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Animations"
-msgstr ""
-
-#: modules/gltf/gltf_texture.cpp
-msgid "Src Image"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp
-msgid "Physics Material"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
-msgid "Use In Baked Light"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
-msgid "Cell"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp
-msgid "Octant Size"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp
-msgid "Center X"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp
-msgid "Center Y"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp
-msgid "Center Z"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
-#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
-#: scene/resources/material.cpp
-msgid "Mask"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Next Plane"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Previous Plane"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Plane:"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Next Floor"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Previous Floor"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Floor:"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Delete Selection"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Fill Selection"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paste Selection"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Selection"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Snap View"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Clip Disabled"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Clip Above"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Clip Below"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Edit X Axis"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Edit Y Axis"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Edit Z Axis"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Rotate X"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Rotate Y"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Rotate Z"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Back Rotate X"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Back Rotate Y"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Back Rotate Z"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Clear Rotation"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Paste Selects"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Clear Selection"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Fill Selection"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Settings"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Pick Distance:"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Filter meshes"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Give a MeshLibrary resource to this GridMap to use its meshes."
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Begin Bake"
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Preparing data structures"
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Generate buffers"
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Direct lighting"
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Indirect lighting"
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Post processing"
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Plotting lightmaps"
-msgstr ""
-
-#: modules/lightmapper_cpu/register_types.cpp
-msgid "CPU Lightmapper"
-msgstr ""
-
-#: modules/lightmapper_cpu/register_types.cpp
-msgid "Low Quality Ray Count"
-msgstr ""
-
-#: modules/lightmapper_cpu/register_types.cpp
-msgid "Medium Quality Ray Count"
-msgstr ""
-
-#: modules/lightmapper_cpu/register_types.cpp
-msgid "High Quality Ray Count"
-msgstr ""
-
-#: modules/lightmapper_cpu/register_types.cpp
-msgid "Ultra Quality Ray Count"
-msgstr ""
-
-#: modules/minimp3/audio_stream_mp3.cpp
-#: modules/minimp3/resource_importer_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
-#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
-msgid "Loop Offset"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "Eye Height"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "IOD"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "Display Width"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "Display To Lens"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "Oversample"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "K1"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "K2"
-msgstr ""
-
-#: modules/mono/csharp_script.cpp
-msgid "Class name can't be a reserved keyword"
-msgstr ""
-
-#: modules/mono/csharp_script.cpp
-msgid "Build Solution"
-msgstr ""
-
-#: modules/mono/editor/csharp_project.cpp
-msgid "Auto Update Project"
-msgstr ""
-
-#: modules/mono/mono_gd/gd_mono_utils.cpp
-msgid "End of inner exception stack trace"
-msgstr ""
-
-#: modules/navigation/navigation_mesh_editor_plugin.cpp
-#: scene/3d/navigation_mesh_instance.cpp
-msgid "A NavigationMesh resource must be set or created for this node to work."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_editor_plugin.cpp
-msgid "Bake NavMesh"
-msgstr ""
-
-#: modules/navigation/navigation_mesh_editor_plugin.cpp
-msgid "Clear the navigation mesh."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Setting up Configuration..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Calculating grid size..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Creating heightfield..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Marking walkable triangles..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Constructing compact heightfield..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Eroding walkable area..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Partitioning..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Creating contours..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Creating polymesh..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Converting to native navigation mesh..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Navigation Mesh Generator Setup:"
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Parsing Geometry..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Done!"
-msgstr ""
-
-#: modules/opensimplex/noise_texture.cpp
-msgid "Seamless"
-msgstr ""
-
-#: modules/opensimplex/noise_texture.cpp
-msgid "As Normal Map"
-msgstr ""
-
-#: modules/opensimplex/noise_texture.cpp
-msgid "Bump Strength"
-msgstr ""
-
-#: modules/opensimplex/noise_texture.cpp
-msgid "Noise"
-msgstr ""
-
-#: modules/opensimplex/noise_texture.cpp
-msgid "Noise Offset"
-msgstr ""
-
-#: modules/opensimplex/open_simplex_noise.cpp
-msgid "Octaves"
-msgstr ""
-
-#: modules/opensimplex/open_simplex_noise.cpp
-msgid "Period"
-msgstr ""
-
-#: modules/opensimplex/open_simplex_noise.cpp
-msgid "Persistence"
-msgstr ""
-
-#: modules/opensimplex/open_simplex_noise.cpp
-msgid "Lacunarity"
-msgstr ""
-
-#: modules/regex/regex.cpp
-msgid "Subject"
-msgstr ""
-
-#: modules/regex/regex.cpp
-msgid "Names"
-msgstr ""
-
-#: modules/regex/regex.cpp
-msgid "Strings"
-msgstr ""
-
-#: modules/upnp/upnp.cpp
-msgid "Discover Multicast If"
-msgstr ""
-
-#: modules/upnp/upnp.cpp
-msgid "Discover Local Port"
-msgstr ""
-
-#: modules/upnp/upnp.cpp
-msgid "Discover IPv6"
-msgstr ""
-
-#: modules/upnp/upnp_device.cpp
-msgid "Description URL"
-msgstr ""
-
-#: modules/upnp/upnp_device.cpp
-msgid "Service Type"
-msgstr ""
-
-#: modules/upnp/upnp_device.cpp
-msgid "IGD Control URL"
-msgstr ""
-
-#: modules/upnp/upnp_device.cpp
-msgid "IGD Service Type"
-msgstr ""
-
-#: modules/upnp/upnp_device.cpp
-msgid "IGD Our Addr"
-msgstr ""
-
-#: modules/upnp/upnp_device.cpp
-msgid "IGD Status"
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid ""
-"A node yielded without working memory, please read the docs on how to yield "
-"properly!"
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid ""
-"Node yielded, but did not return a function state in the first working "
-"memory."
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid ""
-"Return value must be assigned to first element of node working memory! Fix "
-"your node please."
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid "Found sequence bit but not the node in the stack, report bug!"
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid "Visual Script"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Signal Arguments"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Argument Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Argument name"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Set Variable Default Value"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Set Variable Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Input Port"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Output Port"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Port Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Port Name"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Override an existing built-in function."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Create a new function."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Variables:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Create a new variable."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Signals:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Create a new signal."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Name is not a valid identifier:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Name already in use by another func/var/signal:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Rename Function"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Rename Variable"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Rename Signal"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Function"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Delete input port"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Variable"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Signal"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Input Port"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Output Port"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Expression"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Can't copy the function node."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Paste VisualScript Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove VisualScript Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Duplicate VisualScript Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Hold %s to drop a Getter. Hold Shift to drop a generic signature."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Hold %s to drop a simple reference to the node."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Hold Ctrl to drop a simple reference to the node."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Hold %s to drop a Variable Setter."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Hold Ctrl to drop a Variable Setter."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Preload Node"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Node(s)"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Node(s) From Tree"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid ""
-"Can't drop properties because script '%s' is not used in this scene.\n"
-"Drop holding 'Shift' to just copy the signature."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Getter Property"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Setter Property"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Base Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Move Node(s)"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove VisualScript Node"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Connect Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Disconnect Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Connect Node Data"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Connect Node Sequence"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Script already has function '%s'"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Input Value"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Resize Comment"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Can't create function with a function node."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Can't create function of nodes from nodes of multiple functions."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Select at least one node with sequence port."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Try to only have one sequence input in selection."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Create Function"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Make Tool:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Members:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Base Type:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Nodes..."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Function..."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "function_name"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Select or create a function to edit its graph."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Delete Selected"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Find Node Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Copy Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Cut Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Make Function"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Refresh Graph"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit Member"
-msgstr ""
-
-#: modules/visual_script/visual_script_expression.cpp
-#: scene/resources/visual_shader.cpp
-msgid "Expression"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Return"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Return Enabled"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Return Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Condition"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "if (cond) is:"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "While"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "while (cond):"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "for (elem) in (input):"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Sequence"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "in order:"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Steps"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Switch"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "'input' is:"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Type Cast"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Is %s?"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Base Script"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "On %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "On Self"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Call Mode"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Basic Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Node Path"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Use Default Args"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Validate"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "RPC Call Mode"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Subtract %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Multiply %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Divide %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Mod %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "ShiftLeft %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "ShiftRight %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "BitAnd %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "BitOr %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "BitXor %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Set Mode"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Assign Op"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Get %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Invalid index property name."
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Base object is not a Node!"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Path does not lead to Node!"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Invalid index property name '%s' in node %s."
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Emit %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Compose Array"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp scene/resources/material.cpp
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Operator"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "a if cond, else b"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Var Name"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Preload"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Get Index"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Set Index"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Global Constant"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Class Constant"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Basic Constant"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Math Constant"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Get Engine Singleton"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Get Scene Node"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Get Scene Tree"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Get Self"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "CustomNode"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Custom node has no _step() method, can't process graph."
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid ""
-"Invalid return value from _step(), must be integer (seq out), or string "
-"(error)."
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "SubCall"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp scene/gui/graph_node.cpp
-msgid "Title"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Construct %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Get Local Var"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Set Local Var"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Action %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Deconstruct %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Search VisualScript"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Yield"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Wait"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Next Frame"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Next Physics Frame"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "%s sec(s)"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp scene/main/timer.cpp
-msgid "Wait Time"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "WaitSignal"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "WaitNodeSignal"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "WaitInstanceSignal"
-msgstr ""
-
-#: modules/webrtc/webrtc_data_channel.cpp
-msgid "Write Mode"
-msgstr ""
-
-#: modules/webrtc/webrtc_data_channel.h
-msgid "WebRTC"
-msgstr ""
-
-#: modules/webrtc/webrtc_data_channel.h
-msgid "Max Channel In Buffer (KB)"
-msgstr ""
-
-#: modules/websocket/websocket_client.cpp
-msgid "Verify SSL"
-msgstr ""
-
-#: modules/websocket/websocket_client.cpp
-msgid "Trusted SSL Certificate"
-msgstr ""
-
-#: modules/websocket/websocket_macros.h
-msgid "WebSocket Client"
-msgstr ""
-
-#: modules/websocket/websocket_macros.h
-msgid "Max In Buffer (KB)"
-msgstr ""
-
-#: modules/websocket/websocket_macros.h
-msgid "Max In Packets"
-msgstr ""
-
-#: modules/websocket/websocket_macros.h
-msgid "Max Out Buffer (KB)"
-msgstr ""
-
-#: modules/websocket/websocket_macros.h
-msgid "Max Out Packets"
-msgstr ""
-
-#: modules/websocket/websocket_macros.h
-msgid "WebSocket Server"
-msgstr ""
-
-#: modules/websocket/websocket_server.cpp
-msgid "Bind IP"
-msgstr ""
-
-#: modules/websocket/websocket_server.cpp
-msgid "Private Key"
-msgstr ""
-
-#: modules/websocket/websocket_server.cpp platform/javascript/export/export.cpp
-msgid "SSL Certificate"
-msgstr ""
-
-#: modules/websocket/websocket_server.cpp
-msgid "CA Chain"
-msgstr ""
-
-#: modules/websocket/websocket_server.cpp
-msgid "Handshake Timeout"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Session Mode"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Required Features"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Optional Features"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Requested Reference Space Types"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Reference Space Type"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Visibility State"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Bounds Geometry"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "XR Standard Mapping"
-msgstr ""
-
-#: platform/android/export/export.cpp
-msgid "Android SDK Path"
-msgstr ""
-
-#: platform/android/export/export.cpp
-msgid "Debug Keystore"
-msgstr ""
-
-#: platform/android/export/export.cpp
-msgid "Debug Keystore User"
-msgstr ""
-
-#: platform/android/export/export.cpp
-msgid "Debug Keystore Pass"
-msgstr ""
-
-#: platform/android/export/export.cpp
-msgid "Force System User"
-msgstr ""
-
-#: platform/android/export/export.cpp
-msgid "Shutdown ADB On Exit"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Launcher Icons"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Main 192 X 192"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Adaptive Foreground 432 X 432"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Adaptive Background 432 X 432"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Package name is missing."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Package segments must be of non-zero length."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "The character '%s' is not allowed in Android application package names."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "A digit cannot be the first character in a package segment."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "The character '%s' cannot be the first character in a package segment."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "The package must have at least one '.' separator."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Use Custom Build"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Export Format"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
-msgid "Architectures"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Keystore"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Debug User"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
-msgid "Debug Password"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Release User"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Release Password"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "One Click Deploy"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Clear Previous Install"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Code"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Min SDK"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Target SDK"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
-msgid "Package"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
-msgid "Unique Name"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Signed"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Classify As Game"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Retain Data On Uninstall"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Exclude From Recents"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Graphics"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "OpenGL Debug"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "XR Features"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "XR Mode"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Hand Tracking"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Hand Tracking Frequency"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Passthrough"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Immersive Mode"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Support Small"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Support Normal"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Support Large"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Support Xlarge"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "User Data Backup"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Allow"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
-msgid "Command Line"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
-msgid "Extra Args"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "APK Expansion"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Salt"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Public Key"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Permissions"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Custom Permissions"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Select device from the list"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Running on %s"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Exporting APK..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Uninstalling..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Installing to device, please wait..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not install to device: %s"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Running on device..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not execute on device."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Android build template not installed in the project. Install it from the "
-"Project menu."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Either Debug Keystore, Debug User AND Debug Password settings must be "
-"configured OR none of them."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Debug keystore not configured in the Editor Settings nor in the preset."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Either Release Keystore, Release User AND Release Password settings must be "
-"configured OR none of them."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Release keystore incorrectly configured in the export preset."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "A valid Android SDK path is required in Editor Settings."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Invalid Android SDK path in Editor Settings."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Missing 'platform-tools' directory!"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Unable to find Android SDK platform-tools' adb command."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Please check in the Android SDK directory specified in Editor Settings."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Missing 'build-tools' directory!"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Unable to find Android SDK build-tools' apksigner command."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Invalid public key for APK expansion."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Invalid package name:"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Invalid \"GodotPaymentV3\" module included in the \"android/modules\" "
-"project setting (changed in Godot 3.2.2).\n"
-"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n"
-"Note that the singleton was also renamed from \"GodotPayments\" to "
-"\"GodotGooglePlayBilling\"."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "\"Use Custom Build\" must be enabled to use the plugins."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"\"Hand Tracking\" is only valid when \"Xr Mode\" is \"Oculus Mobile VrApi\" "
-"or \"OpenXR\"."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "\"Passthrough\" is only valid when \"Xr Mode\" is \"OpenXR\"."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Changing the \"Min Sdk\" is only valid when \"Use Custom Build\" is enabled."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Changing the \"Target Sdk\" is only valid when \"Use Custom Build\" is "
-"enabled."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Signing debug %s..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Signing release %s..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not find keystore, unable to export."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "'apksigner' returned with error #%d"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Verifying %s..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "'apksigner' verification of %s failed."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Exporting for Android"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Invalid filename! Android App Bundle requires the *.aab extension."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "APK Expansion not compatible with Android App Bundle."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Invalid filename! Android APK requires the *.apk extension."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Trying to build from a custom built template, but no version info for it "
-"exists. Please reinstall from the 'Project' menu."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
-"Please reinstall Android build template from 'Project' menu."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not write expansion package file!"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Building Android Project (gradle)"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Building of Android project failed, check output for the error.\n"
-"Alternatively visit docs.godotengine.org for Android build documentation."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Moving output"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Unable to copy and rename export file, check gradle project directory for "
-"outputs."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Creating APK..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
-"Please build a template with all required libraries, or uncheck the missing "
-"architectures in the export preset."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Adding files..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Aligning APK..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not unzip temporary unaligned APK."
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Identifier is missing."
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "The character '%s' is not allowed in Identifier."
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Landscape Launch Screens"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 2436 X 1125"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 2208 X 1242"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 1024 X 768"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 2048 X 1536"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Portrait Launch Screens"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 640 X 960"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 640 X 1136"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 750 X 1334"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 1125 X 2436"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 768 X 1024"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 1536 X 2048"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 1242 X 2208"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "App Store Team ID"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Provisioning Profile UUID Debug"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Code Sign Identity Debug"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Export Method Debug"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Provisioning Profile UUID Release"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Code Sign Identity Release"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Export Method Release"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Targeted Device Family"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Info"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Identifier"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Signature"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Short Version"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-#: platform/windows/export/export.cpp
-msgid "Copyright"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Capabilities"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Access Wi-Fi"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Push Notifications"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "User Data"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Accessible From Files App"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Accessible From iTunes Sharing"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Privacy"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Camera Usage Description"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Microphone Usage Description"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Photolibrary Usage Description"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 120 X 120"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 180 X 180"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 76 X 76"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 152 X 152"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 167 X 167"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "App Store 1024 X 1024"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Spotlight 40 X 40"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Spotlight 80 X 80"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Storyboard"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Use Launch Screen Storyboard"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Image Scale Mode"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Custom Image @2x"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Custom Image @3x"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Use Custom BG Color"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Custom BG Color"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "App Store Team ID not specified - cannot configure the project."
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Invalid Identifier:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Stop HTTP Server"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Run in Browser"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Run exported HTML in the system's default browser."
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Variant"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Export Type"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "VRAM Texture Compression"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "For Desktop"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "For Mobile"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "HTML"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Export Icon"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Custom HTML Shell"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Head Include"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Canvas Resize Policy"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Focus Canvas On Start"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Experimental Virtual Keyboard"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Progressive Web App"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Offline Page"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Icon 144 X 144"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Icon 180 X 180"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Icon 512 X 512"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Web"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "HTTP Host"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "HTTP Port"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Use SSL"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "SSL Key"
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Can't get filesystem access."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to get Info.plist hash."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Invalid Info.plist, no exe name."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Invalid Info.plist, no bundle id."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Invalid Info.plist, can't load."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to create \"%s\" subfolder."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to extract thin binary."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Invalid binary format."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Already signed!"
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to process nested resources."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to create _CodeSignature subfolder."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to get CodeResources hash."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp platform/osx/export/export.cpp
-msgid "Invalid entitlements file."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Invalid executable file."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Can't resize signature load command."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to create fat binary."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Unknown bundle type."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Unknown object type."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "App Category"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "High Res"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Location Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Address Book Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Calendar Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Photos Library Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Desktop Folder Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Documents Folder Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Downloads Folder Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Network Volumes Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Removable Volumes Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp platform/windows/export/export.cpp
-msgid "Codesign"
-msgstr ""
-
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
-msgid "Identity"
-msgstr ""
-
-#: platform/osx/export/export.cpp platform/windows/export/export.cpp
-msgid "Timestamp"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Hardened Runtime"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Replace Existing Signature"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Entitlements"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Custom File"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Allow JIT Code Execution"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Allow Unsigned Executable Memory"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Allow Dyld Environment Variables"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Disable Library Validation"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Audio Input"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Address Book"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Calendars"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Photos Library"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Apple Events"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Debugging"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "App Sandbox"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Network Server"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Network Client"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Device USB"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Device Bluetooth"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Files Downloads"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Files Pictures"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Files Music"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Files Movies"
-msgstr ""
-
-#: platform/osx/export/export.cpp platform/windows/export/export.cpp
-msgid "Custom Options"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Apple ID Name"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Apple ID Password"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Apple Team ID"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"You can check progress manually by opening a Terminal and running the "
-"following command:"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Run the following command to staple the notarization ticket to the exported "
-"application (optional):"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "No identity found."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Creating app bundle"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Relative symlinks are not supported on this OS, the exported project might "
-"be broken!"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
-"template archive."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Making PKG"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Ad-hoc signed applications require the 'Disable Library Validation' "
-"entitlement to load dynamic libraries."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Code signing bundle"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Making DMG"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Code signing DMG"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Making ZIP"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Notarization requires the app to be archived first, select the DMG or ZIP "
-"export format instead."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Sending archive for notarization"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Invalid bundle identifier:"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Warning: Built-in \"codesign\" is selected in the Editor Settings. Code "
-"signing is limited to ad-hoc signature only."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Warning: Xcode command line tools are not installed, using built-in "
-"\"codesign\". Code signing is limited to ad-hoc signature only."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization: Notarization with an ad-hoc signature is not supported."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization: Code signing is required for notarization."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization: Hardened runtime is required for notarization."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization: Timestamp runtime is required for notarization."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization: Apple ID name not specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization: Apple ID password not specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Warning: Notarization is disabled. The exported project will be blocked by "
-"Gatekeeper if it's downloaded from an unknown source."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Code signing is disabled. The exported project will not run on Macs with "
-"enabled Gatekeeper and Apple Silicon powered Macs."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Hardened Runtime is not compatible with ad-hoc signature, and will be "
-"disabled!"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Timestamping is not compatible with ad-hoc signature, and will be disabled!"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Warning: Notarization is not supported from this OS. The exported project "
-"will be blocked by Gatekeeper if it's downloaded from an unknown source."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Privacy: Microphone access is enabled, but usage description is not "
-"specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Privacy: Camera access is enabled, but usage description is not specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Privacy: Location information access is enabled, but usage description is "
-"not specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Privacy: Address book access is enabled, but usage description is not "
-"specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Privacy: Calendar access is enabled, but usage description is not specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Privacy: Photo library access is enabled, but usage description is not "
-"specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "macOS"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Force Builtin Codesign"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Architecture"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Display Name"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Short Name"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Publisher"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Publisher Display Name"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Product GUID"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Publisher GUID"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Signing"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Certificate"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Algorithm"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Major"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Minor"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Build"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Revision"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Landscape"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Portrait"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Landscape Flipped"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Portrait Flipped"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Store Logo"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Square 44 X 44 Logo"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Square 71 X 71 Logo"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Square 150 X 150 Logo"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Square 310 X 310 Logo"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Wide 310 X 150 Logo"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Splash Screen"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Tiles"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Show Name On Square 150 X 150"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Show Name On Wide 310 X 150"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Show Name On Square 310 X 310"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid package short name."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid package unique name."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid package publisher display name."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid product GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "UWP"
-msgstr ""
-
-#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
-msgid "Signtool"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Debug Certificate"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Identity Type"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Timestamp Server URL"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Digest Algorithm"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Modify Resources"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "File Version"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Product Version"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Company Name"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Product Name"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "File Description"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Trademarks"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid ""
-"The rcedit tool must be configured in the Editor Settings (Export > Windows "
-"> Rcedit) to change the icon or app information data."
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Invalid icon path:"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Invalid file version:"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Invalid product version:"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Windows"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Rcedit"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Osslsigncode"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Wine"
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
-#: scene/resources/texture.cpp
-msgid "Frames"
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp
-msgid ""
-"A SpriteFrames resource must be created or set in the \"Frames\" property in "
-"order for AnimatedSprite to display frames."
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Speed Scale"
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp scene/2d/audio_stream_player_2d.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/sprite_3d.cpp
-#: scene/audio/audio_stream_player.cpp
-msgid "Playing"
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-msgid "Centered"
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/texture_button.cpp scene/gui/texture_rect.cpp
-msgid "Flip H"
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/texture_button.cpp scene/gui/texture_rect.cpp
-msgid "Flip V"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Monitoring"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Monitorable"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Physics Overrides"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Space Override"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Gravity Point"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Gravity Distance Scale"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Gravity Vec"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/2d/cpu_particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Gravity"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Linear Damp"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Angular Damp"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Audio Bus"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Override"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
-#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
-msgid "Volume dB"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp
-#: servers/audio/effects/audio_effect_pitch_shift.cpp
-msgid "Pitch Scale"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Autoplay"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp
-msgid "Stream Paused"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
-msgid "Max Distance"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
-msgid "Attenuation"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Bus"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-msgid "Area Mask"
-msgstr ""
-
-#: scene/2d/back_buffer_copy.cpp
-msgid "Copy Mode"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Anchor Mode"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Rotating"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/2d/listener_2d.cpp scene/3d/camera.cpp
-#: scene/3d/listener.cpp scene/animation/animation_blend_tree.cpp
-msgid "Current"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/gui/graph_edit.cpp
-msgid "Zoom"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/main/canvas_layer.cpp
-msgid "Custom Viewport"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/3d/camera.cpp
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp scene/main/timer.cpp
-msgid "Process Mode"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Limit"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
-#: scene/resources/style_box.cpp scene/resources/texture.cpp
-msgid "Left"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
-#: scene/resources/style_box.cpp scene/resources/texture.cpp
-msgid "Right"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
-#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
-#: scene/resources/texture.cpp
-msgid "Bottom"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Smoothed"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Draw Margin"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Drag Margin H Enabled"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Drag Margin V Enabled"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Smoothing"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "H"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "V"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Drag Margin"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Draw Screen"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Draw Limits"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Draw Drag Margin"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp scene/resources/environment.cpp
-#: scene/resources/material.cpp
-msgid "Blend Mode"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Light Mode"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Particles Animation"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Particles Anim H Frames"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Particles Anim V Frames"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Particles Anim Loop"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp scene/3d/spatial.cpp
-msgid "Visibility"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp scene/3d/spatial.cpp scene/gui/progress_bar.cpp
-#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
-msgid "Visible"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Self Modulate"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Show Behind Parent"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Show On Top"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp scene/2d/light_occluder_2d.cpp
-#: scene/2d/tile_map.cpp
-msgid "Light Mask"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Use Parent Material"
-msgstr ""
-
-#: scene/2d/canvas_modulate.cpp
-msgid ""
-"Only one visible CanvasModulate is allowed per scene (or set of instanced "
-"scenes). The first created one will work, while the rest will be ignored."
-msgstr ""
-
-#: scene/2d/collision_object_2d.cpp
-msgid ""
-"This node has no shape, so it can't collide or interact with other objects.\n"
-"Consider adding a CollisionShape2D or CollisionPolygon2D as a child to "
-"define its shape."
-msgstr ""
-
-#: scene/2d/collision_object_2d.cpp
-msgid "Pickable"
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp
-msgid ""
-"CollisionPolygon2D only serves to provide a collision shape to a "
-"CollisionObject2D derived node. Please only use it as a child of Area2D, "
-"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape."
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp
-msgid "An empty CollisionPolygon2D has no effect on collision."
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp
-msgid "Invalid polygon. At least 3 points are needed in 'Solids' build mode."
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp
-msgid "Invalid polygon. At least 2 points are needed in 'Segments' build mode."
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp scene/2d/collision_shape_2d.cpp
-msgid ""
-"The One Way Collision property will be ignored when the parent is an Area2D."
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp
-msgid "Build Mode"
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp scene/2d/collision_shape_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/3d/collision_shape.cpp
-#: scene/animation/animation_node_state_machine.cpp scene/gui/base_button.cpp
-#: scene/gui/texture_button.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Disabled"
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp scene/2d/collision_shape_2d.cpp
-msgid "One Way Collision"
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp scene/2d/collision_shape_2d.cpp
-msgid "One Way Collision Margin"
-msgstr ""
-
-#: scene/2d/collision_shape_2d.cpp
-msgid ""
-"CollisionShape2D only serves to provide a collision shape to a "
-"CollisionObject2D derived node. Please only use it as a child of Area2D, "
-"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape."
-msgstr ""
-
-#: scene/2d/collision_shape_2d.cpp
-msgid ""
-"A shape must be provided for CollisionShape2D to function. Please create a "
-"shape resource for it!"
-msgstr ""
-
-#: scene/2d/collision_shape_2d.cpp
-msgid ""
-"Polygon-based shapes are not meant be used nor edited directly through the "
-"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp
-msgid ""
-"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
-"\"Particles Animation\" enabled."
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Emitting"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Lifetime"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp scene/main/timer.cpp
-msgid "One Shot"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Preprocess"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Explosiveness"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Randomness"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Lifetime Randomness"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Fixed FPS"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Fract Delta"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Drawing"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Local Coords"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Draw Order"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Emission Shape"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Sphere Radius"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp
-msgid "Rect Extents"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-msgid "Normals"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Align Y"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Direction"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Spread"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Initial Velocity"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Velocity Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
-#: servers/physics_server.cpp
-msgid "Angular Velocity"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Velocity Curve"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Orbit Velocity"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Linear Accel"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Accel"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Accel Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Accel Curve"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Radial Accel"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Tangential Accel"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/physics_body.cpp
-#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Damping"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Damping Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Damping Curve"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
-#: scene/resources/particles_material.cpp
-msgid "Angle"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Angle Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Angle Curve"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-msgid "Scale Amount"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-msgid "Scale Amount Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-msgid "Scale Amount Curve"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Color Ramp"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Color Initial Ramp"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Hue Variation"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Variation"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Variation Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Variation Curve"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Speed Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Speed Curve"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Offset Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Offset Curve"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Node A and Node B must be PhysicsBody2Ds"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Node A must be a PhysicsBody2D"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Node B must be a PhysicsBody2D"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Joint is not connected to two PhysicsBody2Ds"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Node A and Node B must be different PhysicsBody2Ds"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
-msgid "Node A"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
-msgid "Node B"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/3d/light.cpp scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-#: scene/resources/environment.cpp
-msgid "Bias"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Disable Collision"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-msgid "Softness"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp scene/resources/animation.cpp
-#: scene/resources/ray_shape.cpp scene/resources/segment_shape_2d.cpp
-msgid "Length"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Initial Offset"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
-msgid "Rest Length"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
-msgid "Stiffness"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid ""
-"A texture with the shape of the light must be supplied to the \"Texture\" "
-"property."
-msgstr ""
-
-#: scene/2d/light_2d.cpp scene/3d/light.cpp scene/gui/reference_rect.cpp
-msgid "Editor Only"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Texture Scale"
-msgstr ""
-
-#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/3d/light.cpp scene/resources/environment.cpp
-#: scene/resources/material.cpp scene/resources/sky.cpp
-msgid "Energy"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Z Min"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Z Max"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Layer Min"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Layer Max"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Item Cull Mask"
-msgstr ""
-
-#: scene/2d/light_2d.cpp scene/3d/light.cpp scene/resources/style_box.cpp
-msgid "Shadow"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Buffer Size"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Gradient Length"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Filter Smooth"
-msgstr ""
-
-#: scene/2d/light_occluder_2d.cpp
-msgid "Closed"
-msgstr ""
-
-#: scene/2d/light_occluder_2d.cpp scene/resources/material.cpp
-msgid "Cull Mode"
-msgstr ""
-
-#: scene/2d/light_occluder_2d.cpp
-msgid ""
-"An occluder polygon must be set (or drawn) for this occluder to take effect."
-msgstr ""
-
-#: scene/2d/light_occluder_2d.cpp
-msgid "The occluder polygon for this occluder is empty. Please draw a polygon."
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Width Curve"
-msgstr ""
-
-#: scene/2d/line_2d.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Default Color"
-msgstr ""
-
-#: scene/2d/line_2d.cpp scene/resources/texture.cpp
-msgid "Fill"
-msgstr ""
-
-#: scene/2d/line_2d.cpp scene/resources/texture.cpp
-msgid "Gradient"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Texture Mode"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Capping"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Joint Mode"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Begin Cap Mode"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "End Cap Mode"
-msgstr ""
-
-#: scene/2d/line_2d.cpp scene/2d/polygon_2d.cpp scene/resources/style_box.cpp
-msgid "Border"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Sharp Limit"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Round Precision"
-msgstr ""
-
-#: scene/2d/line_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Antialiased"
-msgstr ""
-
-#: scene/2d/multimesh_instance_2d.cpp scene/3d/multimesh_instance.cpp
-msgid "Multimesh"
-msgstr ""
-
-#: scene/2d/navigation_2d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/navigation.cpp scene/animation/root_motion_view.cpp
-#: scene/resources/world_2d.cpp servers/physics_2d/physics_2d_server_sw.cpp
-msgid "Cell Size"
-msgstr ""
-
-#: scene/2d/navigation_2d.cpp scene/3d/navigation.cpp
-msgid "Edge Connection Margin"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Target Desired Distance"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Neighbor Dist"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Max Neighbors"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Time Horizon"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Max Speed"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Path Max Distance"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Avoidance Enabled"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp
-msgid ""
-"The NavigationAgent2D can be used only under a Node2D inheriting parent node."
-msgstr ""
-
-#: scene/2d/navigation_obstacle_2d.cpp scene/3d/navigation_obstacle.cpp
-msgid "Estimate Radius"
-msgstr ""
-
-#: scene/2d/navigation_obstacle_2d.cpp
-msgid ""
-"The NavigationObstacle2D only serves to provide collision avoidance to a "
-"Node2D object."
-msgstr ""
-
-#: scene/2d/navigation_polygon.cpp
-msgid ""
-"A NavigationPolygon resource must be set or created for this node to work. "
-"Please set a property or draw a polygon."
-msgstr ""
-
-#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
-msgstr ""
-
-#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
-#: scene/main/canvas_layer.cpp
-msgid "Rotation Degrees"
-msgstr ""
-
-#: scene/2d/node_2d.cpp
-msgid "Global Rotation"
-msgstr ""
-
-#: scene/2d/node_2d.cpp
-msgid "Global Rotation Degrees"
-msgstr ""
-
-#: scene/2d/node_2d.cpp
-msgid "Global Scale"
-msgstr ""
-
-#: scene/2d/node_2d.cpp scene/3d/spatial.cpp
-msgid "Global Transform"
-msgstr ""
-
-#: scene/2d/node_2d.cpp
-msgid "Z As Relative"
-msgstr ""
-
-#: scene/2d/parallax_background.cpp scene/gui/scroll_container.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Scroll"
-msgstr ""
-
-#: scene/2d/parallax_background.cpp
-msgid "Base Offset"
-msgstr ""
-
-#: scene/2d/parallax_background.cpp
-msgid "Base Scale"
-msgstr ""
-
-#: scene/2d/parallax_background.cpp
-msgid "Limit Begin"
-msgstr ""
-
-#: scene/2d/parallax_background.cpp
-msgid "Limit End"
-msgstr ""
-
-#: scene/2d/parallax_background.cpp
-msgid "Ignore Camera Zoom"
-msgstr ""
-
-#: scene/2d/parallax_layer.cpp
-msgid ""
-"ParallaxLayer node only works when set as child of a ParallaxBackground node."
-msgstr ""
-
-#: scene/2d/parallax_layer.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp scene/3d/vehicle_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Motion"
-msgstr ""
-
-#: scene/2d/parallax_layer.cpp
-msgid "Mirroring"
-msgstr ""
-
-#: scene/2d/particles_2d.cpp
-msgid ""
-"GPU-based particles are not supported by the GLES2 video driver.\n"
-"Use the CPUParticles2D node instead. You can use the \"Convert to "
-"CPUParticles2D\" toolbar option for this purpose."
-msgstr ""
-
-#: scene/2d/particles_2d.cpp
-msgid ""
-"On macOS, Particles2D rendering is much slower than CPUParticles2D due to "
-"transform feedback being implemented on the CPU instead of the GPU.\n"
-"Consider using CPUParticles2D instead when targeting macOS.\n"
-"You can use the \"Convert to CPUParticles2D\" toolbar option for this "
-"purpose."
-msgstr ""
-
-#: scene/2d/particles_2d.cpp scene/3d/particles.cpp
-msgid ""
-"A material to process the particles is not assigned, so no behavior is "
-"imprinted."
-msgstr ""
-
-#: scene/2d/particles_2d.cpp
-msgid ""
-"Particles2D animation requires the usage of a CanvasItemMaterial with "
-"\"Particles Animation\" enabled."
-msgstr ""
-
-#: scene/2d/particles_2d.cpp
-msgid "Visibility Rect"
-msgstr ""
-
-#: scene/2d/particles_2d.cpp scene/3d/particles.cpp
-msgid "Process Material"
-msgstr ""
-
-#: scene/2d/path_2d.cpp scene/3d/path.cpp scene/resources/sky.cpp
-#: scene/resources/texture.cpp
-msgid "Curve"
-msgstr ""
-
-#: scene/2d/path_2d.cpp
-msgid "PathFollow2D only works when set as a child of a Path2D node."
-msgstr ""
-
-#: scene/2d/path_2d.cpp scene/3d/path.cpp
-msgid "Unit Offset"
-msgstr ""
-
-#: scene/2d/path_2d.cpp scene/3d/camera.cpp scene/3d/path.cpp
-msgid "H Offset"
-msgstr ""
-
-#: scene/2d/path_2d.cpp scene/3d/camera.cpp scene/3d/path.cpp
-msgid "V Offset"
-msgstr ""
-
-#: scene/2d/path_2d.cpp scene/3d/path.cpp
-msgid "Cubic Interp"
-msgstr ""
-
-#: scene/2d/path_2d.cpp
-msgid "Lookahead"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/visual_instance.cpp
-msgid "Layers"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Constant Linear Velocity"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Constant Angular Velocity"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp scene/3d/physics_body.cpp
-#: scene/resources/physics_material.cpp
-msgid "Friction"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp scene/3d/physics_body.cpp
-#: scene/resources/physics_material.cpp
-msgid "Bounce"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Physics Material Override"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Default Gravity"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
-msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
-"by the physics engine when running.\n"
-"Change the size in children collision shapes instead."
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Mass"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
-msgid "Inertia"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Weight"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Gravity Scale"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Custom Integrator"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Continuous CD"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Contacts Reported"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Contact Monitor"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Sleeping"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Can Sleep"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Damp"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Angular"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
-msgid "Applied Forces"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
-msgid "Torque"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Safe Margin"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Sync To Physics"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving Platform"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Apply Velocity On Leave"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
-#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/default_theme/default_theme.cpp
-#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
-msgid "Normal"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Remainder"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Local Shape"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collider"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collider ID"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collider RID"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collider Shape"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Collider Shape Index"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collider Velocity"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Collider Metadata"
-msgstr ""
-
-#: scene/2d/polygon_2d.cpp
-msgid "Invert"
-msgstr ""
-
-#: scene/2d/polygon_2d.cpp
-msgid "Vertex Colors"
-msgstr ""
-
-#: scene/2d/polygon_2d.cpp
-msgid "Internal Vertex Count"
-msgstr ""
-
-#: scene/2d/position_2d.cpp
-msgid "Gizmo Extents"
-msgstr ""
-
-#: scene/2d/ray_cast_2d.cpp scene/3d/ray_cast.cpp
-msgid "Exclude Parent"
-msgstr ""
-
-#: scene/2d/ray_cast_2d.cpp scene/3d/ray_cast.cpp
-msgid "Cast To"
-msgstr ""
-
-#: scene/2d/ray_cast_2d.cpp scene/3d/ray_cast.cpp
-msgid "Collide With"
-msgstr ""
-
-#: scene/2d/ray_cast_2d.cpp scene/3d/camera.cpp scene/3d/ray_cast.cpp
-msgid "Areas"
-msgstr ""
-
-#: scene/2d/ray_cast_2d.cpp scene/3d/camera.cpp scene/3d/ray_cast.cpp
-msgid "Bodies"
-msgstr ""
-
-#: scene/2d/remote_transform_2d.cpp
-msgid "Path property must point to a valid Node2D node to work."
-msgstr ""
-
-#: scene/2d/remote_transform_2d.cpp scene/3d/remote_transform.cpp
-msgid "Remote Path"
-msgstr ""
-
-#: scene/2d/remote_transform_2d.cpp scene/3d/remote_transform.cpp
-msgid "Use Global Coordinates"
-msgstr ""
-
-#: scene/2d/skeleton_2d.cpp scene/3d/skeleton.cpp
-msgid "Rest"
-msgstr ""
-
-#: scene/2d/skeleton_2d.cpp
-msgid "Default Length"
-msgstr ""
-
-#: scene/2d/skeleton_2d.cpp
-msgid "This Bone2D chain should end at a Skeleton2D node."
-msgstr ""
-
-#: scene/2d/skeleton_2d.cpp
-msgid "A Bone2D only works with a Skeleton2D or another Bone2D as parent node."
-msgstr ""
-
-#: scene/2d/skeleton_2d.cpp
-msgid ""
-"This bone lacks a proper REST pose. Go to the Skeleton2D node and set one."
-msgstr ""
-
-#: scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-msgid "Hframes"
-msgstr ""
-
-#: scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-msgid "Vframes"
-msgstr ""
-
-#: scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-msgid "Frame Coords"
-msgstr ""
-
-#: scene/2d/sprite.cpp scene/resources/texture.cpp
-msgid "Filter Clip"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid ""
-"TileMap with Use Parent on needs a parent CollisionObject2D to give shapes "
-"to. Please use it as a child of Area2D, StaticBody2D, RigidBody2D, "
-"KinematicBody2D, etc. to give them a shape."
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Tile Set"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Quadrant Size"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Custom Transform"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Half Offset"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Tile Origin"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Y Sort"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Show Collision"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Compatibility Mode"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Centered Textures"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Cell Clip UV"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Use Parent"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Use Kinematic"
-msgstr ""
-
-#: scene/2d/touch_screen_button.cpp
-msgid "Shape Centered"
-msgstr ""
-
-#: scene/2d/touch_screen_button.cpp
-msgid "Shape Visible"
-msgstr ""
-
-#: scene/2d/touch_screen_button.cpp
-msgid "Passby Press"
-msgstr ""
-
-#: scene/2d/touch_screen_button.cpp
-msgid "Visibility Mode"
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp
-msgid ""
-"VisibilityEnabler2D works best when used with the edited scene root directly "
-"as parent."
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
-msgid "Pause Animations"
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
-msgid "Freeze Bodies"
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp
-msgid "Pause Particles"
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp
-msgid "Pause Animated Sprites"
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp
-msgid "Process Parent"
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp
-msgid "Physics Process Parent"
-msgstr ""
-
-#: scene/3d/area.cpp
-msgid "Reverb Bus"
-msgstr ""
-
-#: scene/3d/area.cpp
-msgid "Uniformity"
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid "ARVRCamera must have an ARVROrigin node as its parent."
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid "Controller ID"
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp servers/arvr/arvr_positional_tracker.cpp
-msgid "Rumble"
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid "ARVRController must have an ARVROrigin node as its parent."
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid ""
-"The controller ID must not be 0 or this controller won't be bound to an "
-"actual controller."
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid "Anchor ID"
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid "ARVRAnchor must have an ARVROrigin node as its parent."
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid ""
-"The anchor ID must not be 0 or this anchor won't be bound to an actual "
-"anchor."
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid "ARVROrigin requires an ARVRCamera child node."
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp servers/arvr_server.cpp
-msgid "World Scale"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Attenuation Model"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Unit dB"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Unit Size"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Max dB"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Out Of Range Mode"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Emission Angle"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Degrees"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Filter Attenuation dB"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Attenuation Filter"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_filter.cpp
-msgid "Cutoff Hz"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-#: servers/audio/effects/audio_effect_filter.cpp
-msgid "dB"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Doppler"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Tracking"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/3d/reflection_probe.cpp
-msgid "Interior"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Finding meshes and lights"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Preparing geometry (%d/%d)"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Preparing environment"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Generating capture"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Saving lightmaps"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Done"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/3d/reflection_probe.cpp scene/resources/box_shape.cpp
-#: scene/resources/rectangle_shape_2d.cpp
-msgid "Extents"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Tweaks"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Bounces"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Bounce Indirect Energy"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Use Denoiser"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp scene/resources/texture.cpp
-msgid "Use HDR"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Use Color"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Default Texels Per Unit"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp scene/resources/texture.cpp
-msgid "Atlas"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Generate"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Max Size"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Custom Sky"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Custom Sky Rotation Degrees"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp scene/3d/ray_cast.cpp
-msgid "Custom Color"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Custom Energy"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Min Light"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-msgid "Propagation"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Image Path"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Light Data"
-msgstr ""
-
-#: scene/3d/bone_attachment.cpp scene/3d/physics_body.cpp
-msgid "Bone Name"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Keep Aspect"
-msgstr ""
-
-#: scene/3d/camera.cpp scene/3d/light.cpp scene/3d/reflection_probe.cpp
-msgid "Cull Mask"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Doppler Tracking"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Projection"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "FOV"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Frustum Offset"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Near"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Far"
-msgstr ""
-
-#: scene/3d/camera.cpp scene/3d/collision_polygon.cpp scene/3d/spring_arm.cpp
-#: scene/gui/control.cpp scene/resources/default_theme/default_theme.cpp
-#: scene/resources/shape.cpp scene/resources/style_box.cpp
-#: scene/resources/texture.cpp servers/physics_2d_server.cpp
-#: servers/physics_server.cpp
-msgid "Margin"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Clip To"
-msgstr ""
-
-#: scene/3d/collision_object.cpp scene/3d/soft_body.cpp
-msgid "Ray Pickable"
-msgstr ""
-
-#: scene/3d/collision_object.cpp
-msgid "Capture On Drag"
-msgstr ""
-
-#: scene/3d/collision_object.cpp
-msgid ""
-"This node has no shape, so it can't collide or interact with other objects.\n"
-"Consider adding a CollisionShape or CollisionPolygon as a child to define "
-"its shape."
-msgstr ""
-
-#: scene/3d/collision_polygon.cpp
-msgid ""
-"CollisionPolygon only serves to provide a collision shape to a "
-"CollisionObject derived node. Please only use it as a child of Area, "
-"StaticBody, RigidBody, KinematicBody, etc. to give them a shape."
-msgstr ""
-
-#: scene/3d/collision_polygon.cpp
-msgid "An empty CollisionPolygon has no effect on collision."
-msgstr ""
-
-#: scene/3d/collision_shape.cpp
-msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
-msgstr ""
-
-#: scene/3d/collision_shape.cpp
-msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it."
-msgstr ""
-
-#: scene/3d/collision_shape.cpp
-msgid ""
-"Plane shapes don't work well and will be removed in future versions. Please "
-"don't use them."
-msgstr ""
-
-#: scene/3d/collision_shape.cpp
-msgid ""
-"ConcavePolygonShape doesn't support RigidBody in another mode than static."
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has been assigned."
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp
-msgid ""
-"CPUParticles animation requires the usage of a SpatialMaterial whose "
-"Billboard Mode is set to \"Particle Billboard\"."
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Box Extents"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Ring Radius"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Ring Inner Radius"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Ring Height"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Ring Axis"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Rotate Y"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Disable Z"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Flatness"
-msgstr ""
-
-#: scene/3d/cull_instance.cpp servers/visual_server.cpp
-msgid "Portals"
-msgstr ""
-
-#: scene/3d/cull_instance.cpp
-msgid "Portal Mode"
-msgstr ""
-
-#: scene/3d/cull_instance.cpp
-msgid "Include In Bound"
-msgstr ""
-
-#: scene/3d/cull_instance.cpp
-msgid "Allow Merging"
-msgstr ""
-
-#: scene/3d/cull_instance.cpp
-msgid "Autoplace Priority"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
-msgid "Plotting Meshes"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
-msgid "Finishing Plot"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
-msgid ""
-"GIProbes are not supported by the GLES2 video driver.\n"
-"Use a BakedLightmap instead."
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
-msgid ""
-"The GIProbe Compress property has been deprecated due to known bugs and no "
-"longer has any effect.\n"
-"To remove this warning, disable the GIProbe's Compress property."
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
-msgid "Subdiv"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
-msgid "Dynamic Range"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp scene/3d/light.cpp
-msgid "Normal Bias"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
-#: scene/resources/primitive_meshes.cpp
-msgid "Pixel Size"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
-msgid "Billboard"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
-msgid "Shaded"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
-msgid "Double Sided"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp scene/resources/material.cpp
-msgid "No Depth Test"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp scene/resources/material.cpp
-msgid "Fixed Size"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
-msgid "Alpha Cut"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/resources/material.cpp
-msgid "Alpha Scissor Threshold"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp scene/resources/material.cpp
-msgid "Render Priority"
-msgstr ""
-
-#: scene/3d/label_3d.cpp
-msgid "Outline Render Priority"
-msgstr ""
-
-#: scene/3d/label_3d.cpp
-msgid "Outline Modulate"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/resources/default_theme/default_theme.cpp
-#: scene/resources/dynamic_font.cpp scene/resources/primitive_meshes.cpp
-msgid "Font"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/resources/primitive_meshes.cpp
-msgid "Horizontal Alignment"
-msgstr ""
-
-#: scene/3d/label_3d.cpp
-msgid "Vertical Alignment"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/gui/dialogs.cpp scene/gui/label.cpp
-msgid "Autowrap"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Indirect Energy"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Negative"
-msgstr ""
-
-#: scene/3d/light.cpp scene/resources/material.cpp
-#: scene/resources/visual_shader.cpp
-msgid "Specular"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Bake Mode"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Contact"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Reverse Cull Face"
-msgstr ""
-
-#: scene/3d/light.cpp servers/visual_server.cpp
-msgid "Directional Shadow"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Split 1"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Split 2"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Split 3"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Blend Splits"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Bias Split Scale"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Depth Range"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Omni"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Shadow Mode"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Shadow Detail"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Spot"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Angle Attenuation"
-msgstr ""
-
-#: scene/3d/mesh_instance.cpp
-msgid "Software Skinning"
-msgstr ""
-
-#: scene/3d/mesh_instance.cpp
-msgid "Transform Normals"
-msgstr ""
-
-#: scene/3d/navigation.cpp scene/resources/curve.cpp
-msgid "Up Vector"
-msgstr ""
-
-#: scene/3d/navigation.cpp
-msgid "Cell Height"
-msgstr ""
-
-#: scene/3d/navigation_agent.cpp
-msgid "Agent Height Offset"
-msgstr ""
-
-#: scene/3d/navigation_agent.cpp
-msgid "Ignore Y"
-msgstr ""
-
-#: scene/3d/navigation_agent.cpp
-msgid ""
-"The NavigationAgent can be used only under a Spatial inheriting parent node."
-msgstr ""
-
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
-#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
-msgid "NavMesh"
-msgstr ""
-
-#: scene/3d/navigation_obstacle.cpp
-msgid ""
-"The NavigationObstacle only serves to provide collision avoidance to a "
-"Spatial inheriting parent object."
-msgstr ""
-
-#: scene/3d/occluder.cpp
-msgid "No shape is set."
-msgstr ""
-
-#: scene/3d/occluder.cpp
-msgid "Only uniform scales are supported."
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid ""
-"GPU-based particles are not supported by the GLES2 video driver.\n"
-"Use the CPUParticles node instead. You can use the \"Convert to "
-"CPUParticles\" toolbar option for this purpose."
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid ""
-"On macOS, Particles rendering is much slower than CPUParticles due to "
-"transform feedback being implemented on the CPU instead of the GPU.\n"
-"Consider using CPUParticles instead when targeting macOS.\n"
-"You can use the \"Convert to CPUParticles\" toolbar option for this purpose."
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid ""
-"Nothing is visible because meshes have not been assigned to draw passes."
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid ""
-"Particles animation requires the usage of a SpatialMaterial whose Billboard "
-"Mode is set to \"Particle Billboard\"."
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid "Visibility AABB"
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid "Draw Passes"
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid "Passes"
-msgstr ""
-
-#: scene/3d/path.cpp
-msgid "PathFollow only works when set as a child of a Path node."
-msgstr ""
-
-#: scene/3d/path.cpp
-msgid ""
-"PathFollow's ROTATION_ORIENTED requires \"Up Vector\" to be enabled in its "
-"parent Path's Curve resource."
-msgstr ""
-
-#: scene/3d/path.cpp
-msgid "Rotation Mode"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overridden "
-"by the physics engine when running.\n"
-"Change the size in children collision shapes instead."
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Axis Lock"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear X"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Y"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Z"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular X"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Y"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Z"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Motion X"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Motion Y"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Motion Z"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Joint Constraints"
-msgstr ""
-
-#: scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-msgid "Impulse Clamp"
-msgstr ""
-
-#: scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-msgid "Swing Span"
-msgstr ""
-
-#: scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-msgid "Twist Span"
-msgstr ""
-
-#: scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-#: scene/3d/vehicle_body.cpp
-msgid "Relaxation"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Enabled"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Upper"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Lower"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Bias"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Softness"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Relaxation"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Limit Upper"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Limit Lower"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Limit Softness"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Limit Restitution"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Limit Damping"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Restitution"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Damping"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "X"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Y"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Z"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Limit Enabled"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Spring Enabled"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Spring Stiffness"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Spring Damping"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Equilibrium Point"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Restitution"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Damping"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Restitution"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Damping"
-msgstr ""
-
-#: scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-msgid "ERP"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Spring Enabled"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Spring Stiffness"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Spring Damping"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Equilibrium Point"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Body Offset"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Node A and Node B must be PhysicsBodies"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Node A must be a PhysicsBody"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Node B must be a PhysicsBody"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Joint is not connected to any PhysicsBodies"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Node A and Node B must be different PhysicsBodies"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Solver"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Exclude Nodes"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Params"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Limit"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Upper"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Lower"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Motor"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Target Velocity"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Max Impulse"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Limit"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Upper Distance"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Lower Distance"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Restitution"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Motion"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Ortho"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Upper Angle"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Lower Angle"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Motion"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Ortho"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Limit X"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Motor X"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Force Limit"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Spring X"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Equilibrium Point"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Limit X"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Motor X"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Spring X"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Limit Y"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Motor Y"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Spring Y"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Limit Y"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Motor Y"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Spring Y"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Limit Z"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Motor Z"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Spring Z"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Limit Z"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Motor Z"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Spring Z"
-msgstr ""
-
-#: scene/3d/portal.cpp
-msgid "The RoomManager should not be a child or grandchild of a Portal."
-msgstr ""
-
-#: scene/3d/portal.cpp
-msgid "A Room should not be a child or grandchild of a Portal."
-msgstr ""
-
-#: scene/3d/portal.cpp
-msgid "A RoomGroup should not be a child or grandchild of a Portal."
-msgstr ""
-
-#: scene/3d/portal.cpp
-msgid "Portal Active"
-msgstr ""
-
-#: scene/3d/portal.cpp scene/resources/occluder_shape_polygon.cpp
-msgid "Two Way"
-msgstr ""
-
-#: scene/3d/portal.cpp
-msgid "Linked Room"
-msgstr ""
-
-#: scene/3d/portal.cpp
-msgid "Use Default Margin"
-msgstr ""
-
-#: scene/3d/proximity_group.cpp
-msgid "Group Name"
-msgstr ""
-
-#: scene/3d/proximity_group.cpp
-msgid "Dispatch Mode"
-msgstr ""
-
-#: scene/3d/proximity_group.cpp
-msgid "Grid Radius"
-msgstr ""
-
-#: scene/3d/ray_cast.cpp
-msgid "Debug Shape"
-msgstr ""
-
-#: scene/3d/ray_cast.cpp scene/resources/style_box.cpp
-msgid "Thickness"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp scene/main/viewport.cpp
-msgid "Update Mode"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp
-msgid "Origin Offset"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp
-msgid "Box Projection"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp
-msgid "Enable Shadows"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp
-msgid "Ambient Color"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp
-msgid "Ambient Energy"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp
-msgid "Ambient Contrib"
-msgstr ""
-
-#: scene/3d/remote_transform.cpp
-msgid ""
-"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
-"derived node to work."
-msgstr ""
-
-#: scene/3d/room.cpp
-msgid "A Room cannot have another Room as a child or grandchild."
-msgstr ""
-
-#: scene/3d/room.cpp
-msgid "The RoomManager should not be placed inside a Room."
-msgstr ""
-
-#: scene/3d/room.cpp
-msgid "A RoomGroup should not be placed inside a Room."
-msgstr ""
-
-#: scene/3d/room.cpp
-msgid ""
-"Room convex hull contains a large number of planes.\n"
-"Consider simplifying the room bound in order to increase performance."
-msgstr ""
-
-#: scene/3d/room.cpp
-msgid "Use Default Simplify"
-msgstr ""
-
-#: scene/3d/room.cpp scene/3d/room_manager.cpp
-msgid "Room Simplify"
-msgstr ""
-
-#: scene/3d/room.cpp
-msgid "Bound"
-msgstr ""
-
-#: scene/3d/room_group.cpp
-msgid "Roomgroup Priority"
-msgstr ""
-
-#: scene/3d/room_group.cpp
-msgid "The RoomManager should not be placed inside a RoomGroup."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "The RoomList has not been assigned."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "The RoomList node should be a Spatial (or derived from Spatial)."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid ""
-"Portal Depth Limit is set to Zero.\n"
-"Only the Room that the Camera is in will render."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "There should only be one RoomManager in the SceneTree."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Main"
-msgstr ""
-
-#: scene/3d/room_manager.cpp scene/animation/animation_blend_tree.cpp
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Active"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Roomlist"
-msgstr ""
-
-#: scene/3d/room_manager.cpp servers/visual_server.cpp
-msgid "PVS"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "PVS Mode"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "PVS Filename"
-msgstr ""
-
-#: scene/3d/room_manager.cpp servers/visual_server.cpp
-msgid "Gameplay"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Gameplay Monitor"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Use Secondary PVS"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Merge Meshes"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Show Margins"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Debug Sprawl"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Overlap Warning Threshold"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Preview Camera"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Portal Depth Limit"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Default Portal Margin"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Roaming Expansion Margin"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid ""
-"RoomList path is invalid.\n"
-"Please check the RoomList branch has been assigned in the RoomManager."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "RoomList contains no Rooms, aborting."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Misnamed nodes detected, check output log for details. Aborting."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Portal link room not found, check output log for details."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid ""
-"Portal autolink failed, check output log for details.\n"
-"Check the portal is facing outwards from the source room."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid ""
-"Room overlap detected, cameras may work incorrectly in overlapping area.\n"
-"Check output log for details."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid ""
-"Error calculating room bounds.\n"
-"Ensure all rooms contain geometry or manual bounds."
-msgstr ""
-
-#: scene/3d/skeleton.cpp scene/resources/skin.cpp
-msgid "Pose"
-msgstr ""
-
-#: scene/3d/skeleton.cpp
-msgid "Bound Children"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Pinned Points"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Attachments"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Point Index"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Spatial Attachment Path"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Physics Enabled"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Parent Collision Ignore"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Simulation Precision"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Total Mass"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Linear Stiffness"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Areaangular Stiffness"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Volume Stiffness"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Pressure Coefficient"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Damping Coefficient"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Drag Coefficient"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Pose Matching Coefficient"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "This body will be ignored until you set a mesh."
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid ""
-"Size changes to SoftBody will be overridden by the physics engine when "
-"running.\n"
-"Change the size in children collision shapes instead."
-msgstr ""
-
-#: scene/3d/spatial.cpp
-msgid "Matrix"
-msgstr ""
-
-#: scene/3d/spatial.cpp
-msgid "Gizmo"
-msgstr ""
-
-#: scene/3d/spatial_velocity_tracker.cpp
-msgid "Track Physics Step"
-msgstr ""
-
-#: scene/3d/spring_arm.cpp
-msgid "Spring Length"
-msgstr ""
-
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-msgid "Opacity"
-msgstr ""
-
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-msgid "Transparent"
-msgstr ""
-
-#: scene/3d/sprite_3d.cpp
-msgid ""
-"A SpriteFrames resource must be created or set in the \"Frames\" property in "
-"order for AnimatedSprite3D to display frames."
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid ""
-"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
-"it as a child of a VehicleBody."
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Per-Wheel Motion"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Engine Force"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Brake"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Steering"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "VehicleBody Motion"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Use As Traction"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Use As Steering"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Wheel"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Roll Influence"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Friction Slip"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Suspension"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Max Force"
-msgstr ""
-
-#: scene/3d/visibility_notifier.cpp
-msgid "AABB"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp scene/resources/navigation_mesh.cpp
-msgid "Geometry"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Material Override"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Material Overlay"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Cast Shadow"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Extra Cull Margin"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Baked Light"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Generate Lightmap"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Lightmap Scale"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "LOD"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp scene/animation/skeleton_ik.cpp
-#: scene/resources/material.cpp
-msgid "Min Distance"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Min Hysteresis"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Max Hysteresis"
-msgstr ""
-
-#: scene/3d/world_environment.cpp
-msgid ""
-"WorldEnvironment requires its \"Environment\" property to contain an "
-"Environment to have a visible effect."
-msgstr ""
-
-#: scene/3d/world_environment.cpp
-msgid ""
-"Only one WorldEnvironment is allowed per scene (or set of instanced scenes)."
-msgstr ""
-
-#: scene/3d/world_environment.cpp
-msgid ""
-"This WorldEnvironment is ignored. Either add a Camera (for 3D scenes) or set "
-"this environment's Background Mode to Canvas (for 2D scenes)."
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "On BlendTree node '%s', animation not found: '%s'"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Animation not found: '%s'"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Mix Mode"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Fadein Time"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Fadeout Time"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Auto Restart"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Autorestart"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Delay"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Random Delay"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Add Amount"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Blend Amount"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Seek Position"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Input Count"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-#: scene/animation/animation_node_state_machine.cpp
-msgid "Xfade Time"
-msgstr ""
-
-#: scene/animation/animation_node_state_machine.cpp
-msgid "Switch Mode"
-msgstr ""
-
-#: scene/animation/animation_node_state_machine.cpp
-msgid "Auto Advance"
-msgstr ""
-
-#: scene/animation/animation_node_state_machine.cpp
-msgid "Advance Condition"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Anim Apply Reset"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Current Animation"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Assigned Animation"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Reset On Save"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Current Animation Length"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Current Animation Position"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Playback Options"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Default Blend Time"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Method Call Mode"
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "In node '%s', invalid animation: '%s'."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Invalid animation: '%s'."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Nothing connected to input '%s' of node '%s'."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "No root AnimationNode for the graph is set."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Path to an AnimationPlayer node containing animations is not set."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Path set for AnimationPlayer does not lead to an AnimationPlayer node."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "The AnimationPlayer root node is not a valid node."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Tree Root"
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Anim Player"
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Root Motion"
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Track"
-msgstr ""
-
-#: scene/animation/animation_tree_player.cpp
-msgid "This node has been deprecated. Use AnimationTree instead."
-msgstr ""
-
-#: scene/animation/animation_tree_player.cpp
-msgid "Playback"
-msgstr ""
-
-#: scene/animation/animation_tree_player.cpp
-msgid "Master Player"
-msgstr ""
-
-#: scene/animation/animation_tree_player.cpp
-msgid "Base Path"
-msgstr ""
-
-#: scene/animation/root_motion_view.cpp
-msgid "Animation Path"
-msgstr ""
-
-#: scene/animation/root_motion_view.cpp
-msgid "Zero Y"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Root Bone"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Tip Bone"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Interpolation"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Override Tip Basis"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Use Magnet"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Magnet"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Target Node"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Max Iterations"
-msgstr ""
-
-#: scene/animation/tween.cpp
-msgid "Playback Process Mode"
-msgstr ""
-
-#: scene/animation/tween.cpp
-msgid "Playback Speed"
-msgstr ""
-
-#: scene/audio/audio_stream_player.cpp
-msgid "Mix Target"
-msgstr ""
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/range.cpp
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Ratio"
-msgstr ""
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/texture_button.cpp
-#: scene/gui/texture_rect.cpp
-msgid "Stretch Mode"
-msgstr ""
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/box_container.cpp
-msgid "Alignment"
-msgstr ""
-
-#: scene/gui/base_button.cpp
-msgid "Shortcut In Tooltip"
-msgstr ""
-
-#: scene/gui/base_button.cpp
-msgid "Action Mode"
-msgstr ""
-
-#: scene/gui/base_button.cpp
-msgid "Enabled Focus Mode"
-msgstr ""
-
-#: scene/gui/base_button.cpp
-msgid "Keep Pressed Outside"
-msgstr ""
-
-#: scene/gui/base_button.cpp scene/gui/shortcut.cpp
-msgid "Shortcut"
-msgstr ""
-
-#: scene/gui/base_button.cpp
-msgid "Group"
-msgstr ""
-
-#: scene/gui/button.cpp scene/gui/label.cpp
-msgid "Clip Text"
-msgstr ""
-
-#: scene/gui/button.cpp scene/gui/label.cpp scene/gui/line_edit.cpp
-#: scene/gui/spin_box.cpp
-msgid "Align"
-msgstr ""
-
-#: scene/gui/button.cpp
-msgid "Icon Align"
-msgstr ""
-
-#: scene/gui/button.cpp
-msgid "Expand Icon"
-msgstr ""
-
-#: scene/gui/center_container.cpp
-msgid "Use Top Left"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid ""
-"Color: #%s\n"
-"LMB: Apply color\n"
-"RMB: Remove preset"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Edit Alpha"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "HSV Mode"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Raw Mode"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Deferred Mode"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Presets Enabled"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Presets Visible"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Pick a color from the editor window."
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "HSV"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Switch between hexadecimal and code values."
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Add current color as a preset."
-msgstr ""
-
-#: scene/gui/container.cpp
-msgid ""
-"Container by itself serves no purpose unless a script configures its "
-"children placement behavior.\n"
-"If you don't intend to add a script, use a plain Control node instead."
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Theme Overrides"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid ""
-"The Hint Tooltip won't be displayed as the control's Mouse Filter is set to "
-"\"Ignore\". To solve this, set the Mouse Filter to \"Stop\" or \"Pass\"."
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Anchor"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Grow Direction"
-msgstr ""
-
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
-msgid "Min Size"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Pivot Offset"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Clip Content"
-msgstr ""
-
-#: scene/gui/control.cpp scene/resources/visual_shader_nodes.cpp
-msgid "Hint"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Tooltip"
-msgstr ""
-
-#: scene/gui/control.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Focus"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Neighbour Left"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Neighbour Top"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Neighbour Right"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Neighbour Bottom"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Next"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Previous"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Mouse"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Default Cursor Shape"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Pass On Modal Close Click"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Size Flags"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Stretch Ratio"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Theme Type Variation"
-msgstr ""
-
-#: scene/gui/dialogs.cpp
-msgid "Window Title"
-msgstr ""
-
-#: scene/gui/dialogs.cpp
-msgid "Dialog"
-msgstr ""
-
-#: scene/gui/dialogs.cpp
-msgid "Hide On OK"
-msgstr ""
-
-#: scene/gui/dialogs.cpp
-msgid "Alert!"
-msgstr ""
-
-#: scene/gui/dialogs.cpp
-msgid "Please Confirm..."
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Mode Overrides Title"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Must use a valid extension."
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Right Disconnects"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Scroll Offset"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Snap Distance"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Zoom Min"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Zoom Max"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Zoom Step"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Show Zoom Label"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp scene/gui/text_edit.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Minimap"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Enable grid minimap."
-msgstr ""
-
-#: scene/gui/graph_node.cpp
-msgid "Show Close"
-msgstr ""
-
-#: scene/gui/graph_node.cpp scene/gui/option_button.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Selected"
-msgstr ""
-
-#: scene/gui/graph_node.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Comment"
-msgstr ""
-
-#: scene/gui/graph_node.cpp
-msgid "Overlay"
-msgstr ""
-
-#: scene/gui/grid_container.cpp scene/gui/item_list.cpp scene/gui/tree.cpp
-msgid "Columns"
-msgstr ""
-
-#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/text_edit.cpp
-#: scene/gui/tree.cpp scene/main/viewport.cpp
-msgid "Timers"
-msgstr ""
-
-#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval Msec"
-msgstr ""
-
-#: scene/gui/item_list.cpp scene/gui/tree.cpp
-msgid "Allow Reselect"
-msgstr ""
-
-#: scene/gui/item_list.cpp scene/gui/tree.cpp
-msgid "Allow RMB Select"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Max Text Lines"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Auto Height"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Max Columns"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Same Column Width"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Fixed Column Width"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Icon Scale"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Fixed Icon Size"
-msgstr ""
-
-#: scene/gui/label.cpp
-msgid "V Align"
-msgstr ""
-
-#: scene/gui/label.cpp scene/gui/rich_text_label.cpp
-msgid "Visible Characters"
-msgstr ""
-
-#: scene/gui/label.cpp scene/gui/rich_text_label.cpp
-msgid "Percent Visible"
-msgstr ""
-
-#: scene/gui/label.cpp
-msgid "Lines Skipped"
-msgstr ""
-
-#: scene/gui/label.cpp
-msgid "Max Lines Visible"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/resources/navigation_mesh.cpp
-msgid "Max Length"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Secret"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Secret Character"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Expand To Text Length"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Context Menu Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Virtual Keyboard Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Clear Button Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Shortcut Keys Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Middle Mouse Paste Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Selecting Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/rich_text_label.cpp
-#: scene/gui/text_edit.cpp
-msgid "Deselect On Focus Loss Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Right Icon"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Placeholder"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Alpha"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Caret"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Blink"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Blink Speed"
-msgstr ""
-
-#: scene/gui/link_button.cpp
-msgid "Underline"
-msgstr ""
-
-#: scene/gui/menu_button.cpp
-msgid "Switch On Hover"
-msgstr ""
-
-#: scene/gui/nine_patch_rect.cpp scene/resources/style_box.cpp
-msgid "Draw Center"
-msgstr ""
-
-#: scene/gui/nine_patch_rect.cpp scene/resources/style_box.cpp
-msgid "Region Rect"
-msgstr ""
-
-#: scene/gui/nine_patch_rect.cpp
-msgid "Patch Margin"
-msgstr ""
-
-#: scene/gui/nine_patch_rect.cpp scene/resources/style_box.cpp
-msgid "Axis Stretch"
-msgstr ""
-
-#: scene/gui/nine_patch_rect.cpp
-msgid ""
-"The Tile and Tile Fit options for Axis Stretch properties are only effective "
-"when using the GLES3 rendering backend.\n"
-"The GLES2 backend is currently in use, so these modes will act like Stretch "
-"instead."
-msgstr ""
-
-#: scene/gui/popup.cpp
-msgid "Popup"
-msgstr ""
-
-#: scene/gui/popup.cpp
-msgid "Exclusive"
-msgstr ""
-
-#: scene/gui/popup.cpp
-msgid ""
-"Popups will hide by default unless you call popup() or any of the popup*() "
-"functions. Making them visible for editing is fine, but they will hide upon "
-"running."
-msgstr ""
-
-#: scene/gui/popup_menu.cpp
-msgid "Hide On Item Selection"
-msgstr ""
-
-#: scene/gui/popup_menu.cpp
-msgid "Hide On Checkable Item Selection"
-msgstr ""
-
-#: scene/gui/popup_menu.cpp
-msgid "Hide On State Item Selection"
-msgstr ""
-
-#: scene/gui/popup_menu.cpp
-msgid "Submenu Popup Delay"
-msgstr ""
-
-#: scene/gui/popup_menu.cpp
-msgid "Allow Search"
-msgstr ""
-
-#: scene/gui/progress_bar.cpp
-msgid "Percent"
-msgstr ""
-
-#: scene/gui/range.cpp
-msgid "If \"Exp Edit\" is enabled, \"Min Value\" must be greater than 0."
-msgstr ""
-
-#: scene/gui/range.cpp scene/resources/curve.cpp
-msgid "Min Value"
-msgstr ""
-
-#: scene/gui/range.cpp scene/resources/curve.cpp
-msgid "Max Value"
-msgstr ""
-
-#: scene/gui/range.cpp
-msgid "Page"
-msgstr ""
-
-#: scene/gui/range.cpp
-msgid "Exp Edit"
-msgstr ""
-
-#: scene/gui/range.cpp
-msgid "Rounded"
-msgstr ""
-
-#: scene/gui/range.cpp
-msgid "Allow Greater"
-msgstr ""
-
-#: scene/gui/range.cpp
-msgid "Allow Lesser"
-msgstr ""
-
-#: scene/gui/reference_rect.cpp
-msgid "Border Color"
-msgstr ""
-
-#: scene/gui/reference_rect.cpp scene/resources/style_box.cpp
-msgid "Border Width"
-msgstr ""
-
-#: scene/gui/rich_text_effect.cpp
-msgid "Relative Index"
-msgstr ""
-
-#: scene/gui/rich_text_effect.cpp
-msgid "Absolute Index"
-msgstr ""
-
-#: scene/gui/rich_text_effect.cpp
-msgid "Elapsed Time"
-msgstr ""
-
-#: scene/gui/rich_text_effect.cpp
-msgid "Env"
-msgstr ""
-
-#: scene/gui/rich_text_effect.cpp
-msgid "Character"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "BBCode"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Meta Underlined"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Tab Size"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Fit Content Height"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Scroll Active"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Scroll Following"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Selection Enabled"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp scene/gui/text_edit.cpp
-msgid "Override Selected Font Color"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Custom Effects"
-msgstr ""
-
-#: scene/gui/scroll_bar.cpp
-msgid "Custom Step"
-msgstr ""
-
-#: scene/gui/scroll_container.cpp
-msgid ""
-"ScrollContainer is intended to work with a single child control.\n"
-"Use a container as child (VBox, HBox, etc.), or a Control and set the custom "
-"minimum size manually."
-msgstr ""
-
-#: scene/gui/scroll_container.cpp
-msgid "Follow Focus"
-msgstr ""
-
-#: scene/gui/scroll_container.cpp
-msgid "Horizontal Enabled"
-msgstr ""
-
-#: scene/gui/scroll_container.cpp
-msgid "Vertical Enabled"
-msgstr ""
-
-#: scene/gui/scroll_container.cpp
-msgid "Default Scroll Deadzone"
-msgstr ""
-
-#: scene/gui/slider.cpp
-msgid "Scrollable"
-msgstr ""
-
-#: scene/gui/slider.cpp
-msgid "Tick Count"
-msgstr ""
-
-#: scene/gui/slider.cpp
-msgid "Ticks On Borders"
-msgstr ""
-
-#: scene/gui/spin_box.cpp
-msgid "Prefix"
-msgstr ""
-
-#: scene/gui/spin_box.cpp
-msgid "Suffix"
-msgstr ""
-
-#: scene/gui/split_container.cpp
-msgid "Split Offset"
-msgstr ""
-
-#: scene/gui/split_container.cpp scene/gui/tree.cpp
-msgid "Collapsed"
-msgstr ""
-
-#: scene/gui/split_container.cpp
-msgid "Dragger Visibility"
-msgstr ""
-
-#: scene/gui/tab_container.cpp scene/gui/tabs.cpp
-msgid "Tab Align"
-msgstr ""
-
-#: scene/gui/tab_container.cpp scene/gui/tabs.cpp
-msgid "Current Tab"
-msgstr ""
-
-#: scene/gui/tab_container.cpp
-msgid "Tabs Visible"
-msgstr ""
-
-#: scene/gui/tab_container.cpp
-msgid "All Tabs In Front"
-msgstr ""
-
-#: scene/gui/tab_container.cpp scene/gui/tabs.cpp
-msgid "Drag To Rearrange Enabled"
-msgstr ""
-
-#: scene/gui/tab_container.cpp
-msgid "Use Hidden Tabs For Min Size"
-msgstr ""
-
-#: scene/gui/tabs.cpp
-msgid "Tab Close Display Policy"
-msgstr ""
-
-#: scene/gui/tabs.cpp
-msgid "Scrolling Enabled"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Readonly"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Bookmark Gutter"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Breakpoint Gutter"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Fold Gutter"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Hiding Enabled"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Wrap Enabled"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Scroll Vertical"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Scroll Horizontal"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Draw"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Block Mode"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Moving By Right Click"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Text Edit Idle Detect (sec)"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Text Edit Undo Stack Max Size"
-msgstr ""
-
-#: scene/gui/texture_button.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Hover"
-msgstr ""
-
-#: scene/gui/texture_button.cpp
-msgid "Focused"
-msgstr ""
-
-#: scene/gui/texture_button.cpp
-msgid "Click Mask"
-msgstr ""
-
-#: scene/gui/texture_button.cpp scene/gui/texture_rect.cpp
-#: scene/gui/video_player.cpp
-msgid "Expand"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Under"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Over"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Progress"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Progress Offset"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Fill Mode"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp scene/resources/material.cpp
-msgid "Tint"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Radial Fill"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Initial Angle"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Fill Degrees"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp scene/resources/primitive_meshes.cpp
-msgid "Center Offset"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Nine Patch Stretch"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Stretch Margin Left"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Stretch Margin Top"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Stretch Margin Right"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Stretch Margin Bottom"
-msgstr ""
-
-#: scene/gui/tree.cpp
-msgid "Custom Minimum Height"
-msgstr ""
-
-#: scene/gui/tree.cpp
-msgid "(Other)"
-msgstr ""
-
-#: scene/gui/tree.cpp
-msgid "Column Titles Visible"
-msgstr ""
-
-#: scene/gui/tree.cpp
-msgid "Hide Folding"
-msgstr ""
-
-#: scene/gui/tree.cpp
-msgid "Hide Root"
-msgstr ""
-
-#: scene/gui/tree.cpp
-msgid "Drop Mode Flags"
-msgstr ""
-
-#: scene/gui/video_player.cpp
-msgid "Audio Track"
-msgstr ""
-
-#: scene/gui/video_player.cpp scene/main/scene_tree.cpp scene/main/timer.cpp
-msgid "Paused"
-msgstr ""
-
-#: scene/gui/video_player.cpp
-msgid "Buffering Msec"
-msgstr ""
-
-#: scene/gui/video_player.cpp
-msgid "Stream Position"
-msgstr ""
-
-#: scene/gui/viewport_container.cpp
-msgid "Stretch Shrink"
-msgstr ""
-
-#: scene/main/canvas_layer.cpp
-msgid "Follow Viewport"
-msgstr ""
-
-#: scene/main/http_request.cpp
-msgid "Download File"
-msgstr ""
-
-#: scene/main/http_request.cpp
-msgid "Download Chunk Size"
-msgstr ""
-
-#: scene/main/http_request.cpp
-msgid "Body Size Limit"
-msgstr ""
-
-#: scene/main/http_request.cpp
-msgid "Max Redirects"
-msgstr ""
-
-#: scene/main/http_request.cpp
-msgid "Timeout"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid ""
-"Setting node name '%s' to be unique within scene for '%s', but it's already "
-"claimed by '%s'. This node is no longer set unique."
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Name Num Separator"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Name Casing"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Editor Description"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Pause Mode"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Physics Interpolation Mode"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Display Folded"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Filename"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Owner"
-msgstr ""
-
-#: scene/main/node.cpp scene/main/scene_tree.cpp
-msgid "Multiplayer"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Custom Multiplayer"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Process Priority"
-msgstr ""
-
-#: scene/main/scene_tree.cpp scene/main/timer.cpp
-msgid "Time Left"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Debug Collisions Hint"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Debug Navigation Hint"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Use Font Oversampling"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Edited Scene Root"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Root"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Multiplayer Poll"
-msgstr ""
-
-#: scene/main/scene_tree.cpp scene/resources/mesh_library.cpp
-#: scene/resources/shape_2d.cpp
-msgid "Shapes"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Shape Color"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Contact Color"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Geometry Color"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Disabled Geometry Color"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Max Contacts Displayed"
-msgstr ""
-
-#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
-msgid "Draw 2D Outlines"
-msgstr ""
-
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
-msgid "Reflections"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Atlas Size"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Atlas Subdiv"
-msgstr ""
-
-#: scene/main/scene_tree.cpp scene/main/viewport.cpp
-msgid "MSAA"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Use FXAA"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Use Debanding"
-msgstr ""
-
-#: scene/main/scene_tree.cpp scene/main/viewport.cpp
-msgid "HDR"
-msgstr ""
-
-#: scene/main/scene_tree.cpp scene/main/viewport.cpp
-msgid "Use 32 BPC Depth"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Default Environment"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid ""
-"Default Environment as specified in Project Settings (Rendering -> "
-"Environment -> Default Environment) could not be loaded."
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Enable Object Picking"
-msgstr ""
-
-#: scene/main/timer.cpp
-msgid ""
-"Very low timer wait times (< 0.05 seconds) may behave in significantly "
-"different ways depending on the rendered or physics frame rate.\n"
-"Consider using a script's process loop instead of relying on a Timer for "
-"very low wait times."
-msgstr ""
-
-#: scene/main/timer.cpp
-msgid "Autostart"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Viewport Path"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid ""
-"This viewport is not set as render target. If you intend for it to display "
-"its contents directly to the screen, make it a child of a Control so it can "
-"obtain a size. Otherwise, make it a RenderTarget and assign its internal "
-"texture to some node for display."
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid ""
-"The Viewport size must be greater than or equal to 2 pixels on both "
-"dimensions to render anything."
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "ARVR"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Size Override Stretch"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Own World"
-msgstr ""
-
-#: scene/main/viewport.cpp scene/resources/world_2d.cpp
-msgid "World"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "World 2D"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Transparent BG"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Handle Input Locally"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "FXAA"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Debanding"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Disable 3D"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Keep 3D Linear"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Render Direct To Screen"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Debug Draw"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Render Target"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "V Flip"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Clear Mode"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Enable 2D"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Enable 3D"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Object Picking"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Disable Input"
-msgstr ""
-
-#: scene/main/viewport.cpp servers/visual_server.cpp
-msgid "Shadow Atlas"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Quad 0"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Quad 1"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Quad 2"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Quad 3"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Canvas Transform"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Global Canvas Transform"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Tooltip Delay (sec)"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "Swap OK Cancel"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "Layer Names"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "2D Render"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "3D Render"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "2D Physics"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "3D Physics"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "Use hiDPI"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "Custom"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "Custom Font"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
-msgid "Mix Rate"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Stereo"
-msgstr ""
-
-#: scene/resources/concave_polygon_shape_2d.cpp
-msgid "Segments"
-msgstr ""
-
-#: scene/resources/curve.cpp
-msgid "Bake Resolution"
-msgstr ""
-
-#: scene/resources/curve.cpp
-msgid "Bake Interval"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Panel"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Hover"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Focus"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "H Separation"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Underline Spacing"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Arrow"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Arrow Margin"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Hover Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Checked Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Unchecked"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Unchecked Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Radio Checked"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Radio Checked Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Radio Unchecked"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Radio Unchecked Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Hover Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Check V Adjust"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "On Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Off"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Off Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Shadow"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Outline Modulate"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Shadow Offset X"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Shadow Offset Y"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Shadow As Outline"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Selected"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Uneditable"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Cursor Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Clear Button Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Clear Button Color Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Minimum Spaces"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "BG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "FG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Tab"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
-#: scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Folded"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Fold"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Readonly"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Completion Lines"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Completion Max Width"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Completion Scroll Width"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Scroll Focus"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grabber"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grabber Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grabber Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Increment"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Increment Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Increment Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Decrement"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Decrement Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Decrement Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Slider"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grabber Area"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grabber Area Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grabber Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Tick"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Updown"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Scaleborder Size"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Font"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Height"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Close Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Close H Offset"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Close V Offset"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Parent Folder"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Toggle Hidden"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Panel Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Labeled Separator Left"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Labeled Separator Right"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Separator"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Accel"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Separator"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "V Separation"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Selected Frame"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Default Frame"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Default Focus"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Comment Focus"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Breakpoint"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Resizer"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Close Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Resizer Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Offset"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Close Offset"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Port Offset"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "BG Focus"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Selected Focus"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Cursor Unfocused"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Button Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Button Normal"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Button Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Button Hover"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Custom Button"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Custom Button Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Custom Button Hover"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Select Arrow"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Arrow Collapsed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Button Font"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Button Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Guide Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Drop Position Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Relationship Line Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Custom Button Font Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Item Margin"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Button Margin"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Draw Relationship Lines"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Draw Guides"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Scroll Border"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Scroll Speed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Icon Margin"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Line Separation"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Tab FG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Tab BG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Tab Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Menu"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Menu Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color FG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color BG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Side Margin"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Top Margin"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Label V Align FG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Label V Align BG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Large"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Folder"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Folder Icon Modulate"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "File Icon Modulate"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Files Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "SV Width"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "SV Height"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "H Width"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Label Width"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Screen Picker"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Add Preset"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Color Hue"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Color Sample"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Preset BG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Overbright Indicator"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Preset FG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Preset BG Icon"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Normal Font"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Bold Font"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Italics Font"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Bold Italics Font"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Mono Font"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Table H Separation"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Table V Separation"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Margin Left"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Margin Top"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Margin Right"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Margin Bottom"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Autohide"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Minus"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "More"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grid Minor"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grid Major"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Selection Fill"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Selection Stroke"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Activity"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Bezier Len Pos"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Bezier Len Neg"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Port Grab Distance Horizontal"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Port Grab Distance Vertical"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Hinting"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Override Oversampling"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Font Path"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Outline Size"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Outline Color"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Use Mipmaps"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Extra Spacing"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Char"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Font Data"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Background"
-msgstr ""
-
-#: scene/resources/environment.cpp scene/resources/sky.cpp
-msgid "Sky"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Sky Custom FOV"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Sky Orientation"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Sky Rotation"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Sky Rotation Degrees"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Canvas Max Layer"
-msgstr ""
-
-#: scene/resources/environment.cpp scene/resources/texture.cpp
-msgid "Camera Feed ID"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Ambient Light"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Sky Contribution"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Fog"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Sun Color"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Sun Amount"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Depth Enabled"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Depth Begin"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Depth End"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Depth Curve"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Transmit Enabled"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Transmit Curve"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Height Enabled"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Height Min"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Height Max"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Height Curve"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Tonemap"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Exposure"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "White"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Auto Exposure"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Min Luma"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Max Luma"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "SS Reflections"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Max Steps"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Fade In"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Fade Out"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Depth Tolerance"
-msgstr ""
-
-#: scene/resources/environment.cpp scene/resources/material.cpp
-msgid "Roughness"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "SSAO"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Radius 2"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Intensity 2"
-msgstr ""
-
-#: scene/resources/environment.cpp scene/resources/material.cpp
-msgid "Light Affect"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "AO Channel Affect"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Blur"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Edge Sharpness"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "DOF Far Blur"
-msgstr ""
-
-#: scene/resources/environment.cpp scene/resources/material.cpp
-msgid "Distance"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Transition"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "DOF Near Blur"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Glow"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Levels"
-msgstr ""
-
-#: scene/resources/environment.cpp
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "1"
-msgstr ""
-
-#: scene/resources/environment.cpp
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "2"
-msgstr ""
-
-#: scene/resources/environment.cpp
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "3"
-msgstr ""
-
-#: scene/resources/environment.cpp
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "4"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "5"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "6"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "7"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Bloom"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "HDR Threshold"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "HDR Luminance Cap"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "HDR Scale"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Bicubic Upscale"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Adjustments"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Brightness"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Saturation"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Color Correction"
-msgstr ""
-
-#: scene/resources/font.cpp
-msgid "Ascent"
-msgstr ""
-
-#: scene/resources/font.cpp
-msgid "Distance Field"
-msgstr ""
-
-#: scene/resources/gradient.cpp
-msgid "Raw Data"
-msgstr ""
-
-#: scene/resources/gradient.cpp
-msgid "Offsets"
-msgstr ""
-
-#: scene/resources/height_map_shape.cpp
-msgid "Map Width"
-msgstr ""
-
-#: scene/resources/height_map_shape.cpp
-msgid "Map Depth"
-msgstr ""
-
-#: scene/resources/height_map_shape.cpp
-msgid "Map Data"
-msgstr ""
-
-#: scene/resources/line_shape_2d.cpp
-msgid "D"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Next Pass"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Use Shadow To Opacity"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Unshaded"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Vertex Lighting"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Use Point Size"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "World Triplanar"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Albedo Tex Force sRGB"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Do Not Receive Shadows"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Disable Ambient Light"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Ensure Correct Normals"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Albedo Tex MSDF"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Vertex Color"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Use As Albedo"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Is sRGB"
-msgstr ""
-
-#: scene/resources/material.cpp servers/visual_server.cpp
-msgid "Parameters"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Diffuse Mode"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Specular Mode"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Depth Draw Mode"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Line Width"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Point Size"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Billboard Mode"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Billboard Keep Scale"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Grow"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Grow Amount"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Use Alpha Scissor"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Particles Anim"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "H Frames"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "V Frames"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Albedo"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Metallic"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Texture Channel"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Emission"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "On UV2"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "NormalMap"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Rim"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Clearcoat"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Gloss"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Anisotropy"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Flowmap"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Ambient Occlusion"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Deep Parallax"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Min Layers"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Max Layers"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Flip Tangent"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Flip Binormal"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Subsurf Scatter"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Transmission"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Refraction"
-msgstr ""
-
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
-msgid "Detail"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "UV Layer"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "UV1"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Triplanar"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Triplanar Sharpness"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "UV2"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Proximity Fade"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Distance Fade"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Async Mode"
-msgstr ""
-
-#: scene/resources/mesh.cpp
-msgid "Lightmap Size Hint"
-msgstr ""
-
-#: scene/resources/mesh.cpp scene/resources/primitive_meshes.cpp
-msgid "Custom AABB"
-msgstr ""
-
-#: scene/resources/mesh_library.cpp
-msgid "Mesh Transform"
-msgstr ""
-
-#: scene/resources/mesh_library.cpp
-msgid "NavMesh Transform"
-msgstr ""
-
-#: scene/resources/multimesh.cpp
-msgid "Color Format"
-msgstr ""
-
-#: scene/resources/multimesh.cpp
-msgid "Transform Format"
-msgstr ""
-
-#: scene/resources/multimesh.cpp
-msgid "Custom Data Format"
-msgstr ""
-
-#: scene/resources/multimesh.cpp
-msgid "Instance Count"
-msgstr ""
-
-#: scene/resources/multimesh.cpp
-msgid "Visible Instance Count"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Sample Partition Type"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Parsed Geometry Type"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Source Geometry Mode"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Source Group Name"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Max Climb"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Max Slope"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Merge Size"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Max Error"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Verts Per Poly"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Sample Distance"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Sample Max Error"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Low Hanging Obstacles"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Ledge Spans"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
-msgstr ""
-
-#: scene/resources/occluder_shape.cpp
-msgid "Spheres"
-msgstr ""
-
-#: scene/resources/occluder_shape.cpp
-msgid "OccluderShapeSphere Set Spheres"
-msgstr ""
-
-#: scene/resources/occluder_shape_polygon.cpp
-msgid "Polygon Points"
-msgstr ""
-
-#: scene/resources/occluder_shape_polygon.cpp
-msgid "Hole Points"
-msgstr ""
-
-#: scene/resources/packed_scene.cpp
-msgid "Bundled"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Trail"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Divisor"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Size Modifier"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Color Modifier"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Point Texture"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Normal Texture"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Color Texture"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Point Count"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Scale Random"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Scale Curve"
-msgstr ""
-
-#: scene/resources/physics_material.cpp
-msgid "Rough"
-msgstr ""
-
-#: scene/resources/physics_material.cpp
-msgid "Absorbent"
-msgstr ""
-
-#: scene/resources/plane_shape.cpp
-msgid "Plane"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Flip Faces"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Mid Height"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Subdivide Width"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Subdivide Height"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Subdivide Depth"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Top Radius"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Bottom Radius"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Left To Right"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Is Hemisphere"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Curve Step"
-msgstr ""
-
-#: scene/resources/ray_shape.cpp scene/resources/segment_shape_2d.cpp
-msgid "Slips On Slope"
-msgstr ""
-
-#: scene/resources/segment_shape_2d.cpp
-msgid "A"
-msgstr ""
-
-#: scene/resources/shape_2d.cpp
-msgid "Custom Solver Bias"
-msgstr ""
-
-#: scene/resources/skin.cpp
-msgid "Bind Count"
-msgstr ""
-
-#: scene/resources/skin.cpp
-msgid "Bind"
-msgstr ""
-
-#: scene/resources/skin.cpp
-msgid "Bone"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Radiance Size"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Panorama"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Top Color"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Horizon Color"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Ground"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Bottom Color"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Sun"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Latitude"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Longitude"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Angle Min"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Angle Max"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Content Margin"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Expand Margin"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Skew"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Corner Radius"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Corner Detail"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Anti Aliasing"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Grow Begin"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Grow End"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Load Path"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Base Texture"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Image Size"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Side"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Front"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Back"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Storage Mode"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Lossy Storage Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "From"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "To"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Base"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Current Frame"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Pause"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Which Feed"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Camera Is Active"
-msgstr ""
-
-#: scene/resources/theme.cpp
-msgid "Default Font"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Output Port For Preview"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Depth Draw"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Cull"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Diffuse"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Async"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Modes"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Input Name"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Uniform Name"
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid ""
-"The sampler port is connected but not used. Consider changing the source to "
-"'SamplerPort'."
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Invalid source for preview."
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Invalid source for shader."
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Texture Type"
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Cube Map"
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Default Value Enabled"
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Default Value"
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Color Default"
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Invalid comparison function for that type."
-msgstr ""
-
-#: scene/resources/world.cpp
-msgid "Fallback Environment"
-msgstr ""
-
-#: scene/resources/world.cpp
-msgid "Scenario"
-msgstr ""
-
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Direct Space State"
-msgstr ""
-
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Default Gravity Vector"
-msgstr ""
-
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Default Linear Damp"
-msgstr ""
-
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Default Angular Damp"
-msgstr ""
-
-#: scene/resources/world_2d.cpp
-msgid "Canvas"
-msgstr ""
-
-#: servers/arvr/arvr_interface.cpp
-msgid "Is Primary"
-msgstr ""
-
-#: servers/arvr/arvr_interface.cpp
-msgid "Is Initialized"
-msgstr ""
-
-#: servers/arvr/arvr_interface.cpp
-msgid "AR"
-msgstr ""
-
-#: servers/arvr/arvr_interface.cpp
-msgid "Is Anchor Detection Enabled"
-msgstr ""
-
-#: servers/arvr_server.cpp
-msgid "Primary Interface"
-msgstr ""
-
-#: servers/audio/audio_stream.cpp
-msgid "Audio Stream"
-msgstr ""
-
-#: servers/audio/audio_stream.cpp
-msgid "Random Pitch"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_capture.cpp
-#: servers/audio/effects/audio_effect_spectrum_analyzer.cpp
-#: servers/audio/effects/audio_stream_generator.cpp
-msgid "Buffer Length"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "Voice Count"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Dry"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Wet"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "Voice"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "Depth (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-msgid "Pan"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_compressor.cpp
-#: servers/audio/effects/audio_effect_filter.cpp
-msgid "Gain"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Attack (µs)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Release (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Mix"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Sidechain"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Tap 1"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Tap 2"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_phaser.cpp
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Feedback"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Low-pass"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_distortion.cpp
-msgid "Pre Gain"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_distortion.cpp
-msgid "Keep Hf Hz"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_distortion.cpp
-msgid "Drive"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_distortion.cpp
-msgid "Post Gain"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_filter.cpp
-msgid "Resonance"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_limiter.cpp
-msgid "Ceiling dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_limiter.cpp
-msgid "Threshold dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_limiter.cpp
-msgid "Soft Clip dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_limiter.cpp
-msgid "Soft Clip Ratio"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Range Min Hz"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Range Max Hz"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_pitch_shift.cpp
-msgid "Oversampling"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_pitch_shift.cpp
-#: servers/audio/effects/audio_effect_spectrum_analyzer.cpp
-msgid "FFT Size"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Predelay"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Msec"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Room Size"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "High-pass"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_spectrum_analyzer.cpp
-msgid "Tap Back Pos"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_stereo_enhance.cpp
-msgid "Pan Pullout"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_stereo_enhance.cpp
-msgid "Time Pullout (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_stereo_enhance.cpp
-msgid "Surround"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Enable Audio Input"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Output Latency"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Channel Disable Threshold dB"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Channel Disable Time"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Video Delay Compensation (ms)"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Bus Count"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Capture Device"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Global Rate Scale"
-msgstr ""
-
-#: servers/camera/camera_feed.cpp
-msgid "Feed"
-msgstr ""
-
-#: servers/camera/camera_feed.cpp
-msgid "Is Active"
-msgstr ""
-
-#: servers/physics/space_sw.cpp servers/physics_2d/space_2d_sw.cpp
-msgid "Sleep Threshold Linear"
-msgstr ""
-
-#: servers/physics/space_sw.cpp servers/physics_2d/space_2d_sw.cpp
-msgid "Sleep Threshold Angular"
-msgstr ""
-
-#: servers/physics/space_sw.cpp servers/physics_2d/space_2d_sw.cpp
-msgid "Time Before Sleep"
-msgstr ""
-
-#: servers/physics_2d/physics_2d_server_sw.cpp
-msgid "BP Hash Table Size"
-msgstr ""
-
-#: servers/physics_2d/physics_2d_server_sw.cpp
-msgid "Large Object Surface Threshold In Cells"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Inverse Mass"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Inverse Inertia"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Total Angular Damp"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Total Linear Damp"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Total Gravity"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Linear Velocity"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Exclude"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Shape RID"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collide With Bodies"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collide With Areas"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Motion Remainder"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collision Point"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collision Normal"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collision Depth"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collision Safe Fraction"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collision Unsafe Fraction"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Physics Engine"
-msgstr ""
-
-#: servers/physics_server.cpp
-msgid "Center Of Mass"
-msgstr ""
-
-#: servers/physics_server.cpp
-msgid "Principal Inertia Axes"
-msgstr ""
-
-#: servers/visual/shader_language.cpp
-msgid "Varying may not be assigned in the '%s' function."
-msgstr ""
-
-#: servers/visual/shader_language.cpp
-msgid ""
-"Varyings which were assigned in 'vertex' function may not be reassigned in "
-"'fragment' or 'light'."
-msgstr ""
-
-#: servers/visual/shader_language.cpp
-msgid ""
-"Varyings which were assigned in 'fragment' function may not be reassigned in "
-"'vertex' or 'light'."
-msgstr ""
-
-#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
-msgstr ""
-
-#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
-msgstr ""
-
-#: servers/visual/shader_language.cpp
-msgid "Constants cannot be modified."
-msgstr ""
-
-#: servers/visual/visual_server_scene.cpp
-msgid "Spatial Partitioning"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Render Loop Enabled"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "VRAM Compression"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Import BPTC"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Import S3TC"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Import ETC"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Import ETC2"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Import PVRTC"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Lossless Compression"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Force PNG"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "WebP Compression Level"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Time Rollover Secs"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Cubemap Size"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Quadrant 0 Subdiv"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Quadrant 1 Subdiv"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Quadrant 2 Subdiv"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Quadrant 3 Subdiv"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Shadows"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Filter Mode"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Texture Array Reflections"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "High Quality GGX"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Irradiance Max Size"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Shading"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Force Vertex Shading"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Force Lambert Over Burley"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Force Blinn Over GGX"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Mesh Storage"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Split Stream"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Physical Light Attenuation"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Depth Prepass"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Disable For Vendors"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Anisotropic Filter Level"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Nearest Mipmap Filter"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Skinning"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Software Skinning Fallback"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Force Software Skinning"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Software Skinning"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Ninepatch Mode"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "OpenGL"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Batching Send Null"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Batching Stream"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Legacy Orphan Buffers"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Legacy Stream"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Batching"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Batching"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Batching In Editor"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Single Rect Fallback"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Max Join Item Commands"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Colored Vertex Format Threshold"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Scissor Area Threshold"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Max Join Items"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Batch Buffer Size"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Item Reordering Lookahead"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Flash Batching"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Diagnose Frame"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "GLES2"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Compatibility"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Disable Half Float"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Enable High Float"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Precision"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "UV Contract"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "UV Contract Amount"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Simple PVS"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "PVS Logging"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Signals"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Remove Danglers"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Flip Imported Portals"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Occlusion Culling"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Max Active Spheres"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Max Active Polygons"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Shader Compilation Mode"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Max Simultaneous Compiles"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Log Active Async Compiles Count"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Shader Cache Size (MB)"
-msgstr ""
diff --git a/editor/translations/pl.po b/editor/translations/pl.po
index eb08161d67..5960c6933e 100644
--- a/editor/translations/pl.po
+++ b/editor/translations/pl.po
@@ -260,9 +260,10 @@ msgid "Data"
msgstr "Dane"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr "Sieć"
@@ -366,7 +367,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Niewystarczająca ilość bajtów dla bajtów dekodujących lub zły format."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "Niewłaściwe dane %i (nie przekazane) w wyrażeniu"
#: core/math/expression.cpp
@@ -411,6 +413,16 @@ msgstr "Kolejka komunikatów"
msgid "Max Size (KB)"
msgstr "Maks. rozmiar (KB)"
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Tryb przesuwania"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "Usuń Wejście"
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -590,7 +602,8 @@ msgstr "Opis"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "Uruchom"
@@ -677,6 +690,11 @@ msgid "Main Run Args"
msgstr "Główne argumenty włączania"
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Ścieżka sceny:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr "Wyszukiwanie w rozszerzeniach plików"
@@ -684,18 +702,15 @@ msgstr "Wyszukiwanie w rozszerzeniach plików"
msgid "Script Templates Search Path"
msgstr "Ścieżka wyszukiwania szablonów skryptów"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Kontrola wersji"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+#, fuzzy
+msgid "Version Control Autoload On Startup"
msgstr "Automatyczne ładowanie podczas uruchamiania"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Nazwa wtyczki"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Kontrola wersji"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -803,7 +818,8 @@ msgid "Quality"
msgstr "Jakość"
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
msgid "Filters"
msgstr "Filtry"
@@ -1071,6 +1087,7 @@ msgstr "Wysoka jakość"
msgid "Blend Shape Max Buffer Size (KB)"
msgstr "Maksymalny rozmiar bufora mieszania kształtów (KB)"
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Wolne"
@@ -1087,7 +1104,7 @@ msgstr "Odbij"
msgid "Time:"
msgstr "Czas:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Wartość:"
@@ -1337,10 +1354,75 @@ msgid "Remove this track."
msgstr "Usuń tę ścieżkę."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "Czas (s): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Pozycja"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Krok obrotu:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "Skala:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "Typ:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Szablon eksportu nieprawidłowy:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Easing:"
+msgstr "Åagodne wejÅ›cie-wyjÅ›cie"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "In-Handle:"
+msgstr "Ustaw uchwyt"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Out-Handle:"
+msgstr "Ustaw uchwyt"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "Członek transmisji"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Restart(y):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "End (s):"
+msgstr "Zanikanie w (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Animacje:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "Przełącz aktywność ścieżki"
@@ -1552,7 +1634,8 @@ msgid "Add Method Track Key"
msgstr "Dodaj klucz ścieżki metody"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "Metoda nie znaleziona w obiekcie: "
#: editor/animation_track_editor.cpp
@@ -2161,8 +2244,8 @@ msgid "Open"
msgstr "Otwórz"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Właściciele:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
msgid ""
@@ -2464,7 +2547,7 @@ msgid "Bus Options"
msgstr "Opcje magistrali"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Duplikuj"
@@ -2516,8 +2599,9 @@ msgstr "Otwórz układ magistrali audio"
msgid "There is no '%s' file."
msgstr "Nie ma pliku \"%s\"."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "Układ"
#: editor/editor_audio_buses.cpp
@@ -2720,6 +2804,25 @@ msgid "Choose"
msgstr "Wybierz"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "Skopiuj ścieżkę węzła"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "Pakiet zainstalowano poprawnie!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "Nie powiodło się:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Zapisywanie pliku:"
@@ -2732,6 +2835,31 @@ msgid "Packing"
msgstr "Pakowanie"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Zapisz jako"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "Nie można utworzyć katalogu."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Nie udało się eksportować plików projektu"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Nie można otworzyć pliku do zapisu:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Zapisz jako"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2854,11 +2982,33 @@ msgstr "Nie znaleziono własnego szablonu debugowania."
msgid "Custom release template not found."
msgstr "Nie znaleziono własnego szablonu wydania."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "ZarzÄ…dzaj szablonami"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "Podana ścieżka eksportu nie istnieje:"
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "Nie znaleziono pliku szablonu:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "Szablon eksportu nieprawidłowy:"
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+#, fuzzy
+msgid "PCK Embedding"
+msgstr "Wyrównanie"
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr "W eksportach 32-bitowych dołączony PCK nie może być większy niż 4 GiB."
@@ -3029,9 +3179,9 @@ msgid "Import"
msgstr "Zaimportuj"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Eksportuj"
@@ -4192,15 +4342,6 @@ msgstr ""
"Nie można zapisać do pliku '%s', plik jest w użyciu, zablokowany lub nie ma "
"wystarczających uprawnień."
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Scena"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Ścieżka sceny:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4332,6 +4473,10 @@ msgid "Default Color Picker Mode"
msgstr "Domyślny tryb pipety"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Kontrola wersji"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "Użytkownik"
@@ -4359,6 +4504,10 @@ msgstr "Tryb bez rozproszeń."
msgid "Add a new scene."
msgstr "Dodaj nowÄ… scenÄ™."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Scena"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Wróć do poprzednio otwartej sceny."
@@ -5042,11 +5191,14 @@ msgid "Selected node is not a Viewport!"
msgstr "Wybrany węzeł to nie Viewport!"
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr "Rozmiar: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
+msgstr "Rozmiar:"
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+#, fuzzy
+msgid "Page:"
msgstr "Strona: "
#: editor/editor_properties_array_dict.cpp
@@ -5147,6 +5299,11 @@ msgstr ""
"Dodaj uruchamialny profil w menu eksportu lub zdefiniuj istniejÄ…cy profil "
"jako uruchamialny."
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Projekt"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Wpisz swojÄ… logikÄ™ w metodzie _run()."
@@ -5431,7 +5588,9 @@ msgid "Draw Spaces"
msgstr "Wywołania rysowania:"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr "Nawigacja"
@@ -6030,10 +6189,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Menedżer projektów"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -6805,14 +6966,6 @@ msgid "Replace in Files"
msgstr "ZastÄ…p w plikach"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "Znajdź: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "ZastÄ…p: "
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr "Zastąp wszystkie (NIE MOŻNA COFNĄĆ)"
@@ -6941,7 +7094,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Filtry:"
@@ -7209,7 +7362,8 @@ msgid "Generating Lightmaps"
msgstr "Generowanie Lightmapy"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+#, fuzzy
+msgid "Generating for Mesh:"
msgstr "Generowanie dla siatki: "
#: editor/import/resource_importer_scene.cpp
@@ -7239,6 +7393,18 @@ msgid "Saving..."
msgstr "Zapisywanie..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -8053,10 +8219,12 @@ msgstr "Opcje trybu warstw cebuli"
msgid "Directions"
msgstr "Kierunki"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "Poprzedni"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "Przyszłe"
@@ -8216,7 +8384,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr "Ustaw koniec animacji. To jest przydatne dla podprzejść."
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
+#, fuzzy
+msgid "Transition:"
msgstr "Przejście: "
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8233,11 +8402,6 @@ msgid "New name:"
msgstr "Nowa nazwa:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "Skala:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "Zanikanie w (s):"
@@ -9152,6 +9316,7 @@ msgstr "Utwórz własne kości z węzłów"
msgid "Clear Custom Bones"
msgstr "Wyczyść własne kości"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9218,6 +9383,10 @@ msgid "Preview Canvas Scale"
msgstr "Podejrzyj skalę płótna"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "Układ"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr "Maska przesunięcia dla wstawiania kluczy."
@@ -9993,7 +10162,8 @@ msgid "Volume"
msgstr "Głośność"
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+#, fuzzy
+msgid "Emission Source:"
msgstr "Źródła emisji: "
#: editor/plugins/particles_editor_plugin.cpp
@@ -10227,6 +10397,7 @@ msgid "Points"
msgstr "Punkty"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr "WielokÄ…t"
@@ -10382,13 +10553,6 @@ msgid "Instance:"
msgstr "Instancja:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "Typ:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr "Otwórz w edytorze"
@@ -10397,10 +10561,6 @@ msgstr "Otwórz w edytorze"
msgid "Load Resource"
msgstr "Wczytaj zasób"
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr "Wstępny ładowacz zasobów"
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr "Odbij portale"
@@ -11101,12 +11261,16 @@ msgstr "Obróć"
msgid "Translate"
msgstr "Przesuń"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
+#, fuzzy
+msgid "Scaling:"
msgstr "Skalowanie: "
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
+#, fuzzy
+msgid "Translating:"
msgstr "Przesuwanie: "
#: editor/plugins/spatial_editor_plugin.cpp
@@ -11130,11 +11294,6 @@ msgid "Yaw:"
msgstr "Odchylenie:"
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr "Rozmiar:"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr "Narysowane obiekty:"
@@ -11622,7 +11781,8 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr "Nieprawidłowa geometria, nie można zastąpić przez siatkę."
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+#, fuzzy
+msgid "Convert to MeshInstance2D"
msgstr "Zamień na Mesh2D"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11654,15 +11814,18 @@ msgid "Sprite"
msgstr "Sprite"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
+#, fuzzy
+msgid "Simplification:"
msgstr "Uproszczenie: "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+#, fuzzy
+msgid "Shrink (Pixels):"
msgstr "Zmniejsz (piksele): "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+#, fuzzy
+msgid "Grow (Pixels):"
msgstr "Zwiększ (piksele): "
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12617,8 +12780,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr "Wybierz poprzedni kształt, podkafelek lub Kafelek."
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr "Obszar"
@@ -14141,36 +14303,10 @@ msgid "Delete preset '%s'?"
msgstr "Usunąć profil \"%s\"?"
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-"Nie udało się wyeksportować projektu dla platformy \"%s\".\n"
-"Brak szablonów eksportu lub są nieprawidłowe."
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-"Nie udało się wyeksportować projektu dla platformy \"%s\".\n"
-"Może to być przez problem z konfiguracją w profilu eksportu lub twoich "
-"ustawieniach eksportu."
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "Eksportowanie wszystkiego"
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr "Podana ścieżka eksportu nie istnieje:"
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr "Brakuje szablonów eksportu dla tej platformy lub są uszkodzone:"
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr "Ścieżka eksportu"
@@ -14316,6 +14452,11 @@ msgid "Export templates for this platform are missing:"
msgstr "Brakuje eksportu szablonów dla tej platformy:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Założyciele projektu"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "ZarzÄ…dzaj szablonami eksportu"
@@ -15857,7 +15998,8 @@ msgid "Attach Node Script"
msgstr "Dołącz skrypt dla węzła"
#: editor/script_editor_debugger.cpp
-msgid "Remote "
+#, fuzzy
+msgid "Remote %s:"
msgstr "Zdalny "
#: editor/script_editor_debugger.cpp
@@ -16740,7 +16882,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "WielokÄ…t"
@@ -16918,7 +17060,8 @@ msgid "Disabled GDNative Singleton"
msgstr "Wyłączony singleton GDNative"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+#, fuzzy
+msgid "Libraries:"
msgstr "Biblioteki: "
#: modules/gdnative/nativescript/nativescript.cpp
@@ -17364,7 +17507,6 @@ msgid "Use In Baked Light"
msgstr "Stwórz Lightmaps"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17394,6 +17536,19 @@ msgstr "Wyśrodkowane"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Nawigacja"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Tryb nawigacji"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Następna płaszczyzna"
@@ -17812,7 +17967,8 @@ msgstr ""
"roboczej! Proszę naprawić swój węzeł."
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+#, fuzzy
+msgid "Node returned an invalid sequence output:"
msgstr "Węzeł zwrócił niewłaściwą sekwencję wyjściową: "
#: modules/visual_script/visual_script.cpp
@@ -17820,7 +17976,8 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr "Znaleziono bit sekwencji, ale nie węzeł na stosie, zgłoś błąd!"
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+#, fuzzy
+msgid "Stack overflow with stack depth:"
msgstr "Przepełnienie stosu z głębokością stosu: "
#: modules/visual_script/visual_script.cpp
@@ -18190,7 +18347,8 @@ msgid "for (elem) in (input):"
msgstr "for (element) in (wejście):"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+#, fuzzy
+msgid "Input type not iterable:"
msgstr "Typ danych wejściowych nie jest iterowalny: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18198,7 +18356,8 @@ msgid "Iterator became invalid"
msgstr "Iterator stał się nieprawidłowy"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+#, fuzzy
+msgid "Iterator became invalid:"
msgstr "Iterator stał się nieprawidłowy: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18362,11 +18521,13 @@ msgid "Operator"
msgstr "Iterator"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
+#, fuzzy
+msgid "Invalid argument of type:"
msgstr ":nieprawidłowy argument typu: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
+#, fuzzy
+msgid "Invalid arguments:"
msgstr ":nieprawidłowe argumenty: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18379,11 +18540,13 @@ msgid "Var Name"
msgstr "Nazwa"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+#, fuzzy
+msgid "VariableGet not found in script:"
msgstr "Nie znaleziono VariableGet w skrypcie: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+#, fuzzy
+msgid "VariableSet not found in script:"
msgstr "Nie znaleziono VariableSet w skrypcie: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18918,10 +19081,6 @@ msgid "Could not execute on device."
msgstr "Nie udało się uruchomić na urządzeniu."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr "Nie udało się znaleźć narzędzia \"apksigner\"."
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -19042,12 +19201,17 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr "Wersja \"Target Sdk\" musi być większa lub równa wersji \"Min Sdk\"."
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "DMG podpisywania kodu"
+
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
"\"apksigner\" nie został znaleziony.\n"
"Sprawdź, czy komenda jest dostępna w folderze narzędzi SDK Androida.\n"
@@ -19066,6 +19230,11 @@ msgid "Could not find keystore, unable to export."
msgstr "Nie udało się znaleźć keystore, nie można eksportować."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "Nie można było uruchomić podprocesu!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr "\"apksigner\" zwrócił błąd #%d"
@@ -19095,7 +19264,8 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "Nieprawidłowa nazwa pliku! APK Androida wymaga rozszerzenia *.apk."
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+#, fuzzy
+msgid "Unsupported export format!"
msgstr "Nieobsługiwany format eksportu!\n"
#: platform/android/export/export_plugin.cpp
@@ -19107,10 +19277,9 @@ msgstr ""
"informacja o wersji. Zainstaluj ponownie z menu \"Projekt\"."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
"Niezgodna wersja buildu Androida:\n"
@@ -19119,14 +19288,16 @@ msgstr ""
"Zainstaluj ponownie szablon z menu \"Projekt\"."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
"Nie udało się nadpisać plików \"res://android/build/res/*.xml\" nazwą "
"projektu"
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+#, fuzzy
+msgid "Could not export project files to gradle project."
msgstr "Nie udało się eksportować plików projektu do projektu gradle\n"
#: platform/android/export/export_plugin.cpp
@@ -19138,8 +19309,9 @@ msgid "Building Android Project (gradle)"
msgstr "Budowanie projektu Androida (gradle)"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
"Budowanie projektu Androida się nie powiodło, sprawdź wyjście błędu.\n"
@@ -19159,7 +19331,8 @@ msgstr ""
"projektu gradle po informacje."
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+#, fuzzy
+msgid "Package not found: \"%s\"."
msgstr "Pakiet nie znaleziony: %s"
#: platform/android/export/export_plugin.cpp
@@ -19167,17 +19340,16 @@ msgid "Creating APK..."
msgstr "Tworzenie APK..."
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+#, fuzzy
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
"Nie udało się znaleźć szablonu APK do eksportu:\n"
"%s"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -19190,7 +19362,8 @@ msgid "Adding files..."
msgstr "Dodawanie plików..."
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+#, fuzzy
+msgid "Could not export project files."
msgstr "Nie udało się eksportować plików projektu"
#: platform/android/export/export_plugin.cpp
@@ -19433,6 +19606,17 @@ msgstr "NiestandardowyWęzeł"
msgid "Custom BG Color"
msgstr "NiestandardowyWęzeł"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "ZarzÄ…dzaj szablonami"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Nie znaleziono własnego szablonu wydania."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr "App Store Team ID nie podany - nie można skonfigurować projektu."
@@ -19454,22 +19638,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Uruchom wyeksportowany dokument HTML w domyślnej przeglądarce."
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
msgstr "Nie można otworzyć szablonu dla eksportu:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
msgstr "Szablon eksportu nieprawidłowy:"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+#, fuzzy
+msgid "Could not write file: \"%s\"."
msgstr "Nie można zapisać pliku:"
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Ustaw margines"
+
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+#, fuzzy
+msgid "Could not read file: \"%s\"."
msgstr "Nie udało się odczytać pliku:"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "Separacja:"
@@ -19544,15 +19741,18 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+#, fuzzy
+msgid "Could not read HTML shell: \"%s\"."
msgstr "Nie udało się odczytać powłoki HTML:"
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+#, fuzzy
+msgid "Could not create HTTP server directory: %s."
msgstr "Nie udało się utworzyć folderu serwera HTTP:"
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+#, fuzzy
+msgid "Error starting HTTP server: %d."
msgstr "Błąd uruchamiania serwera HTTP:"
#: platform/javascript/export/export.cpp
@@ -19845,9 +20045,29 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Nie udało się eksportować plików projektu"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "Nie można było uruchomić podprocesu!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Lokalizacja"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
"Uwaga: Proces poświadczania trwa zazwyczaj mniej niż godzinę. Gdy proces "
"zostanie zakończony, otrzymasz wiadomość e-mail."
@@ -19869,18 +20089,82 @@ msgstr ""
"eksportowanej aplikacji (opcjonalnie):"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+"Timestamping nie jest kompatybilny z podpisem ad-hoc i będzie wyłączony!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+"Hardened Runtime nie jest kompatybilny z podpisem ad-hoc i zostanie "
+"wyłączony!"
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
msgid "No identity found."
msgstr "Nie znaleziono tożsamości."
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Błąd zapisywania pliku: %s"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+"Relatywne linki symboliczne nie są obsługiwane na tym systemie operacyjnym, "
+"wyeksportowany projekt może być uszkodzony!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Kierunki"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "Nie można było uruchomić podprocesu!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Creating app bundle"
msgstr "Tworzenie pakietu aplikacji"
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+#, fuzzy
+msgid "Could not find template app to export: \"%s\"."
msgstr "Nie udało się znaleźć szablonu aplikacji do eksportu:"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Szablon eksportu nieprawidłowy:"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -19889,8 +20173,9 @@ msgstr ""
"wyeksportowany projekt może być uszkodzony!"
#: platform/osx/export/export.cpp
+#, fuzzy
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
"Nie znaleziono żądanego szablonu pliku binarnego '%s'. Być może brakuje go w "
@@ -19937,6 +20222,16 @@ msgid "Sending archive for notarization"
msgstr "Przesyłanie archiwum w celu poświadczenia"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "Projekt"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr "Nie udało się eksportować plików projektu do projektu gradle\n"
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr "Nieprawidłowy identyfikator paczki:"
@@ -20285,6 +20580,11 @@ msgid "Debug Algorithm"
msgstr "Debugger"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Nie można usunąć pliku tymczasowego:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20332,6 +20632,76 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Obrót losowy:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "Nie udało się znaleźć keystore, nie można eksportować."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "Nie udało się znaleźć keystore, nie można eksportować."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+"Narzędzie rcedit musi być skonfigurowane w Ustawieniach edytora (Eksport > "
+"Windows > Rcedit), aby zmienić ikonę lub dane informacji o aplikacji."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "Nie udało się znaleźć keystore, nie można eksportować."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "Nie udało się znaleźć keystore, nie można eksportować."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Niepoprawny identyfikator:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Niewłaściwa nazwa."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+"Narzędzie rcedit musi być skonfigurowane w Ustawieniach edytora (Eksport > "
+"Windows > Rcedit), aby zmienić ikonę lub dane informacji o aplikacji."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "Nie można usunąć pliku tymczasowego:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20352,6 +20722,23 @@ msgid "Invalid product version:"
msgstr "Nieprawidłowa wersja produktu:"
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Niepoprawny plik wykonywalny."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "Nowe okno"
@@ -20368,6 +20755,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20495,7 +20886,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Wybierz odległość:"
@@ -21376,17 +21768,19 @@ msgstr ""
"zadziałał."
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-"NavigationPolygonInstance musi być dzieckiem lub wnukiem węzła Navigation2D. "
-"Udostępnia on potrzebne dane nawigacyjne."
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr ""
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Wyśrodkowane na dole"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "Przejdź"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
#, fuzzy
@@ -22633,14 +23027,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr "NavigationAgent może być stosowane wyłącznie pod węzłem przestrzennym."
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-"NavigationMeshInstance musi być dzieckiem lub wnukiem węzła typu Navigation. "
-"Udostępnia on tylko dane nawigacyjne."
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
#, fuzzy
msgid "NavMesh"
@@ -25392,6 +25778,16 @@ msgid "3D Physics"
msgstr "Fizyka"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Nawigacja"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Nawigacja"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -26822,7 +27218,7 @@ msgstr "Przejście: "
msgid "Refraction"
msgstr "Separacja:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -26907,7 +27303,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "Skalowanie: "
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "Ustaw typ zmiennej"
#: scene/resources/navigation_mesh.cpp
@@ -26925,10 +27326,15 @@ msgid "Source Group Name"
msgstr "Źródło"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "Argumenty głównej sceny:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -26938,11 +27344,16 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Regions"
+msgstr "Obszar"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Merge Size"
msgstr "Połącz ze sceny"
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26956,6 +27367,11 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Details"
+msgstr "Pokaż domyślne"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Sample Distance"
msgstr "Wybierz odległość:"
@@ -26973,7 +27389,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -27391,6 +27807,11 @@ msgid "Scenario"
msgstr "Scena"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Nawigacja"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -27408,6 +27829,26 @@ msgstr "Lewe liniowe"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Domyślny"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Domyślny podgląd"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Testowanie"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Edytuj połączenie:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/pr.po b/editor/translations/pr.po
index 51d51cf391..139d252495 100644
--- a/editor/translations/pr.po
+++ b/editor/translations/pr.po
@@ -217,9 +217,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
#, fuzzy
msgid "Network"
msgstr "Slit th' Node"
@@ -333,7 +334,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Nah enough bytes fer decodin' bytes, or ye got th' wrong ship."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "Shiver me timbers! Ye input %i (not passed) in ye expression!"
#: core/math/expression.cpp
@@ -377,6 +379,15 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Slit th' Node"
+
+#: core/os/input.cpp
+msgid "Use Accumulated Input"
+msgstr ""
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -565,7 +576,8 @@ msgstr "Yar, Blow th' Selected Down!"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr ""
@@ -653,24 +665,23 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-msgid "Plugin Name"
+msgid "Version Control Plugin Name"
msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
@@ -779,7 +790,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "Paste yer Node"
@@ -1052,6 +1064,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "O'en"
@@ -1068,7 +1081,7 @@ msgstr "See'in Double"
msgid "Time:"
msgstr "Sundial:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Grub:"
@@ -1329,10 +1342,70 @@ msgid "Remove this track."
msgstr "Discharge ye' Signal"
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
+msgstr "Sundial:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Discharge ye' Signal"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Slit th' Node"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
msgstr ""
#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Yer index property name be thrown overboard!"
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Stream:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Slit th' Node"
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Yer functions:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr ""
@@ -1546,7 +1619,7 @@ msgstr ""
#: editor/animation_track_editor.cpp
#, fuzzy
-msgid "Method not found in object: "
+msgid "Method not found in object:"
msgstr "VariableGet be in davy jones locker! Not in th' script: "
#: editor/animation_track_editor.cpp
@@ -2155,7 +2228,7 @@ msgid "Open"
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
+msgid "Owners of: %s (Total: %d)"
msgstr ""
#: editor/dependency_editor.cpp
@@ -2451,7 +2524,7 @@ msgid "Bus Options"
msgstr "Yar, Blow th' Selected Down!"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr ""
@@ -2504,8 +2577,8 @@ msgstr ""
msgid "There is no '%s' file."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+msgid "Layout:"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -2711,6 +2784,23 @@ msgid "Choose"
msgstr ""
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "Forge yer Node!"
+
+#: editor/editor_export.cpp
+msgid "Completed successfully."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed."
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr ""
@@ -2726,6 +2816,27 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp
+msgid "Save PCK"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Cannot create file \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Paste yer Node"
+
+#: editor/editor_export.cpp
+msgid "Can't open file to read from path \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Save ZIP"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2832,8 +2943,27 @@ msgstr "Yer fancy debug package be nowhere."
msgid "Custom release template not found."
msgstr "Yer fancy release package be nowhere."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "Discharge ye' Variable"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "The given export path doesn't exist."
+msgstr ""
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+msgid "Template file not found: \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "Yer index property name be thrown overboard!"
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
msgstr ""
#: editor/editor_export.cpp
@@ -3015,9 +3145,9 @@ msgid "Import"
msgstr ""
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr ""
@@ -4126,14 +4256,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4253,6 +4375,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Rename Function"
@@ -4281,6 +4407,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
@@ -4929,11 +5059,13 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+msgid "Page:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
@@ -5030,6 +5162,11 @@ msgid ""
"as runnable."
msgstr ""
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Yer functions:"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -5294,7 +5431,9 @@ msgid "Draw Spaces"
msgstr "Call"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
#, fuzzy
msgid "Navigation"
msgstr "Ye be fixin' Signal:"
@@ -5855,10 +5994,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Sorting Order"
msgstr ""
@@ -6622,14 +6763,6 @@ msgid "Replace in Files"
msgstr "Find ye Node Type"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr ""
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr ""
@@ -6762,7 +6895,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Paste yer Node"
@@ -7018,7 +7151,7 @@ msgid "Generating Lightmaps"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+msgid "Generating for Mesh:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -7046,6 +7179,18 @@ msgid "Saving..."
msgstr ""
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7865,10 +8010,12 @@ msgstr ""
msgid "Directions"
msgstr "Yer functions:"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr ""
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr ""
@@ -8028,8 +8175,9 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
-msgstr ""
+#, fuzzy
+msgid "Transition:"
+msgstr "Add Function"
#: editor/plugins/animation_state_machine_editor.cpp
#, fuzzy
@@ -8046,11 +8194,6 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr ""
@@ -8965,6 +9108,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr ""
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9029,6 +9173,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -9783,8 +9931,9 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr ""
+#, fuzzy
+msgid "Emission Source:"
+msgstr "Swap yer Expression"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
@@ -10022,6 +10171,7 @@ msgid "Points"
msgstr "Discharge ye' Signal"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
#, fuzzy
msgid "Polygons"
msgstr "Ye be fixin' Signal:"
@@ -10178,13 +10328,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -10193,10 +10336,6 @@ msgstr ""
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -10919,13 +11058,17 @@ msgstr ""
msgid "Translate"
msgstr ""
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr ""
+#, fuzzy
+msgid "Scaling:"
+msgstr "Slit th' Node"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "Add Function"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -10949,11 +11092,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11442,8 +11580,9 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
-msgstr ""
+#, fuzzy
+msgid "Convert to MeshInstance2D"
+msgstr "Discharge ye' Function"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Invalid geometry, can't create polygon."
@@ -11476,15 +11615,16 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "Add Function"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12466,8 +12606,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr ""
@@ -13968,31 +14107,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr ""
@@ -14129,6 +14247,11 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Yer functions:"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr ""
@@ -15609,7 +15732,7 @@ msgstr ""
#: editor/script_editor_debugger.cpp
#, fuzzy
-msgid "Remote "
+msgid "Remote %s:"
msgstr "Discharge ye' Signal"
#: editor/script_editor_debugger.cpp
@@ -16462,7 +16585,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "Ye be fixin' Signal:"
@@ -16634,7 +16757,7 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+msgid "Libraries:"
msgstr ""
#: modules/gdnative/nativescript/nativescript.cpp
@@ -17056,7 +17179,6 @@ msgid "Use In Baked Light"
msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17086,6 +17208,19 @@ msgstr "Slit th' Node"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Ye be fixin' Signal:"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Ye be fixin' Signal:"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -17504,7 +17639,8 @@ msgstr ""
"workin' memry'! Swab the decks!"
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+#, fuzzy
+msgid "Node returned an invalid sequence output:"
msgstr "Blow the man down! Yer node's booty got ye n' a evil sequence output: "
#: modules/visual_script/visual_script.cpp
@@ -17514,7 +17650,8 @@ msgstr ""
"Captain!"
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+#, fuzzy
+msgid "Stack overflow with stack depth:"
msgstr "Avast! Yer stack has burst! Her depth be: "
#: modules/visual_script/visual_script.cpp
@@ -17917,7 +18054,8 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+#, fuzzy
+msgid "Input type not iterable:"
msgstr "Yar! Yer input aint iterable: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17925,7 +18063,8 @@ msgid "Iterator became invalid"
msgstr "Yer Iterator be no good"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+#, fuzzy
+msgid "Iterator became invalid:"
msgstr "Yer Iterator be no good: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18087,11 +18226,13 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
+#, fuzzy
+msgid "Invalid argument of type:"
msgstr ": Evil argument of th' type: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
+#, fuzzy
+msgid "Invalid arguments:"
msgstr ": Evil arguments: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18104,11 +18245,13 @@ msgid "Var Name"
msgstr "Change"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+#, fuzzy
+msgid "VariableGet not found in script:"
msgstr "VariableGet be in davy jones locker! Not in th' script: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+#, fuzzy
+msgid "VariableSet not found in script:"
msgstr "VariableSet be in davy jones locker! Not in th' script: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18629,10 +18772,6 @@ msgid "Could not execute on device."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18737,12 +18876,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Yer signals:"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18758,6 +18901,10 @@ msgid "Could not find keystore, unable to export."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Could not start apksigner executable."
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -18786,7 +18933,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18797,19 +18944,17 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+msgid "Could not export project files to gradle project."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18822,7 +18967,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -18837,7 +18982,7 @@ msgid ""
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18845,15 +18990,12 @@ msgid "Creating APK..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -18864,8 +19006,9 @@ msgid "Adding files..."
msgstr "Find ye Node Type"
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
-msgstr ""
+#, fuzzy
+msgid "Could not export project files."
+msgstr "Slit th' Node"
#: platform/android/export/export_plugin.cpp
msgid "Aligning APK..."
@@ -19103,6 +19246,17 @@ msgstr "Slit th' Node"
msgid "Custom BG Color"
msgstr "Slit th' Node"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "Discharge ye' Variable"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Yer fancy release package be nowhere."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -19125,24 +19279,34 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Could not open template for export: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Invalid export template:"
+msgid "Invalid export template: \"%s\"."
msgstr "Yer index property name be thrown overboard!"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr ""
+#, fuzzy
+msgid "Could not write file: \"%s\"."
+msgstr "Slit th' Node"
+
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Rename Variable"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read file:"
+msgid "Could not read file: \"%s\"."
msgstr "Slit th' Node"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "Yer functions:"
@@ -19217,16 +19381,18 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
-msgstr ""
+#, fuzzy
+msgid "Could not read HTML shell: \"%s\"."
+msgstr "Slit th' Node"
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
-msgstr ""
+#, fuzzy
+msgid "Error starting HTTP server: %d."
+msgstr "Error loading yer Calligraphy Pen."
#: platform/javascript/export/export.cpp
msgid "Web"
@@ -19513,9 +19679,27 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Slit th' Node"
+
+#: platform/osx/export/export.cpp
+msgid "Could not start xcrun executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Ye be fixin' Signal:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19531,18 +19715,72 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
msgid "No identity found."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Error loading yer Calligraphy Pen."
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Yer functions:"
+
+#: platform/osx/export/export.cpp
+msgid "Could not start hdiutil executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Creating app bundle"
msgstr ""
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Yer index property name be thrown overboard!"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -19550,7 +19788,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -19592,6 +19830,15 @@ msgstr ""
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "ZIP Creation"
+msgstr "Yer functions:"
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Invalid bundle identifier:"
msgstr "Yer name's got no valid identifier:"
@@ -19903,6 +20150,10 @@ msgid "Debug Algorithm"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Failed to rename temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -19949,6 +20200,65 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Slit th' Node"
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Yer name's got no valid identifier:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Yer Calligraphy be wrongly sized."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Failed to remove temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19970,6 +20280,23 @@ msgid "Invalid product version:"
msgstr "Yer product GUID be evil."
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Yer Calligraphy be wrongly sized."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Windows"
msgstr ""
@@ -19985,6 +20312,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20099,7 +20430,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
@@ -20894,13 +21226,16 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
+msgid "Navpoly"
msgstr ""
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Slit th' Node"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Travel Cost"
msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
@@ -22020,12 +22355,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -24542,6 +24871,16 @@ msgid "3D Physics"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Ye be fixin' Signal:"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Ye be fixin' Signal:"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -25910,7 +26249,7 @@ msgstr "Add Function"
msgid "Refraction"
msgstr "Yer functions:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -25988,7 +26327,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "Slit th' Node"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "Edit yer Variable:"
#: scene/resources/navigation_mesh.cpp
@@ -26004,7 +26348,11 @@ msgid "Source Group Name"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
+msgid "Agents"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26016,11 +26364,16 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Regions"
+msgstr "Yer functions:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26033,6 +26386,11 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Details"
+msgstr "Change"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -26049,7 +26407,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -26445,6 +26803,11 @@ msgid "Scenario"
msgstr ""
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Ye be fixin' Signal:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -26461,6 +26824,26 @@ msgstr "Yar, Blow th' Selected Down!"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "th' Base Type:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "th' Base Type:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "th' Base Type:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Slit th' Node"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/pt.po b/editor/translations/pt.po
index efd5610480..c0af7140fc 100644
--- a/editor/translations/pt.po
+++ b/editor/translations/pt.po
@@ -22,13 +22,14 @@
# Danilo Conceição Rosa <danilorosa@protonmail.com>, 2022.
# Kaycke <kaycke@ymail.com>, 2022.
# Renu <ifpilucas@gmail.com>, 2022.
+# El_ExpertPlayer <xpertnathan37@gmail.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-04-25 15:02+0000\n"
-"Last-Translator: Kaycke <kaycke@ymail.com>\n"
+"PO-Revision-Date: 2022-06-13 03:39+0000\n"
+"Last-Translator: El_ExpertPlayer <xpertnathan37@gmail.com>\n"
"Language-Team: Portuguese <https://hosted.weblate.org/projects/godot-engine/"
"godot/pt/>\n"
"Language: pt\n"
@@ -36,7 +37,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.12.1-dev\n"
+"X-Generator: Weblate 4.13-dev\n"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
@@ -71,9 +72,8 @@ msgid "Low Processor Usage Mode"
msgstr "Modo de Baixa Utilização do Processador"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Low Processor Usage Mode Sleep (µsec)"
-msgstr "Modo adormecer com Baixa Utilização do Processador (µsec)"
+msgstr "Suspensão do Modo de Baixa Utilização do Processador (µsec)"
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
msgid "Keep Screen On"
@@ -142,9 +142,8 @@ msgid "Size"
msgstr "Tamanho"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Endian Swap"
-msgstr "Troca endiana"
+msgstr "Troca Endiana"
#: core/bind/core_bind.cpp
msgid "Editor Hint"
@@ -167,9 +166,8 @@ msgid "Time Scale"
msgstr "Escala de Tempo"
#: core/bind/core_bind.cpp main/main.cpp
-#, fuzzy
msgid "Physics Jitter Fix"
-msgstr "Frame de Física %"
+msgstr "Arranjar Tremores nas Fisicas"
#: core/bind/core_bind.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Error"
@@ -180,9 +178,8 @@ msgid "Error String"
msgstr "Erro String"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Error Line"
-msgstr "Erro Ao Gravar"
+msgstr "Erro na linha"
#: core/bind/core_bind.cpp
msgid "Result"
@@ -204,14 +201,12 @@ msgid "Limits"
msgstr "Limites"
#: core/command_queue_mt.cpp
-#, fuzzy
msgid "Command Queue"
-msgstr "Comando: Rodar"
+msgstr "Fila de Comando"
#: core/command_queue_mt.cpp
-#, fuzzy
msgid "Multithreading Queue Size (KB)"
-msgstr "Tamanho da Fila Multilinha (KB)"
+msgstr "Tamanho da Fila Multithreading (KB)"
#: core/func_ref.cpp modules/visual_script/visual_script_builtin_funcs.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
@@ -222,17 +217,16 @@ msgstr "Função"
#: core/image.cpp core/packed_data_container.cpp scene/2d/polygon_2d.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#, fuzzy
msgid "Data"
-msgstr "Com Dados"
+msgstr "Dados"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
-#, fuzzy
+#: scene/gui/file_dialog.cpp
msgid "Network"
-msgstr "Analisador de Rede"
+msgstr "Rede"
#: core/io/file_access_network.cpp
msgid "Remote FS"
@@ -287,18 +281,16 @@ msgid "Transfer Mode"
msgstr "Modo de Transferência"
#: core/io/packet_peer.cpp
-#, fuzzy
msgid "Encode Buffer Max Size"
-msgstr "Tamanho máximo do tampão de codificação"
+msgstr "Tamanho Máximo do Amortecedor de Codificação"
#: core/io/packet_peer.cpp
msgid "Input Buffer Max Size"
msgstr "Tamanho máximo do Buffer de entrada"
#: core/io/packet_peer.cpp
-#, fuzzy
msgid "Output Buffer Max Size"
-msgstr "Tamanho máximo do buffer de saída"
+msgstr "Tamanho Máximo do Amortecedor de OutPut"
#: core/io/packet_peer.cpp
msgid "Stream Peer"
@@ -337,7 +329,8 @@ msgstr ""
"Número de \"bytes\" insuficientes para descodificar, ou o formato é inválido."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "Entrada inválida %i (não passada) na expressão"
#: core/math/expression.cpp
@@ -381,6 +374,16 @@ msgstr ""
msgid "Max Size (KB)"
msgstr "Tamanho Máximo (KB)"
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Modo Mover"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "Apagar entrada"
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -570,7 +573,8 @@ msgstr "Descrição"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "Executar"
@@ -659,6 +663,10 @@ msgid "Main Run Args"
msgstr "Argumentos da Execução Principal"
#: core/project_settings.cpp
+msgid "Scene Naming"
+msgstr "Nomear a Cena"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -666,18 +674,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Controle de Versões"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Sistema de Controlo de Versões"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Nome do Plugin"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Controle de Versões"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -794,7 +799,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
msgid "Filters"
msgstr "Filtros"
@@ -1072,6 +1078,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Livre"
@@ -1088,7 +1095,7 @@ msgstr "Espelho"
msgid "Time:"
msgstr "Tempo:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Valor:"
@@ -1338,10 +1345,75 @@ msgid "Remove this track."
msgstr "Remover esta Pista."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "Tempo (s): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Posição"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Passo da rotação:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "Escala:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "Tipo:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Modelo de exportação inválido:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Easing:"
+msgstr "Easing In-Out"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "In-Handle:"
+msgstr "Definir Manipulador"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Out-Handle:"
+msgstr "Definir Manipulador"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "Item Rádio"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Reinício (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "End (s):"
+msgstr "Aparecer (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Animações:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "Alternar Pista Ativada"
@@ -1556,7 +1628,8 @@ msgid "Add Method Track Key"
msgstr "Adicionar Chave da Pista Método"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "Método não encontrado no objeto: "
#: editor/animation_track_editor.cpp
@@ -2166,8 +2239,8 @@ msgid "Open"
msgstr "Abrir"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Proprietários de:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
msgid ""
@@ -2473,7 +2546,7 @@ msgid "Bus Options"
msgstr "Opções de Barramento"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Duplicar"
@@ -2525,8 +2598,9 @@ msgstr "Abrir Modelo de barramento de áudio"
msgid "There is no '%s' file."
msgstr "Não existe ficheiro '%s'."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "Esquema"
#: editor/editor_audio_buses.cpp
@@ -2731,6 +2805,25 @@ msgid "Choose"
msgstr "Escolha"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "Copiar Caminho do Nó"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "Pacote Instalado com sucesso!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "Falhou:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Armazenar o Ficheiro:"
@@ -2743,6 +2836,31 @@ msgid "Packing"
msgstr "Empacotamento"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Guardar Como"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "Não consegui criar pasta."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Incapaz de exportar ficheiros do projeto"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Incapaz de abrir o ficheiro para escrita:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Guardar Como"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2862,11 +2980,33 @@ msgstr "Modelo de depuração personalizado não encontrado."
msgid "Custom release template not found."
msgstr "Modelo de lançamento personalizado não encontrado."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "Gerir Modelos"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "O caminho de exportação não existe:"
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "Ficheiro Modelo não encontrado:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "Modelo de exportação inválido:"
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+#, fuzzy
+msgid "PCK Embedding"
+msgstr "Preenchimento"
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr ""
"Em exportações de 32 bits o PCK incorporado não pode ser maior do que 4 GiB."
@@ -3038,9 +3178,9 @@ msgid "Import"
msgstr "Importar"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Exportar"
@@ -4197,14 +4337,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Cena"
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr "Nomear a Cena"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4331,6 +4463,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Controle de Versões"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "Nome de Utilizador"
@@ -4358,6 +4494,10 @@ msgstr "Alternar modo livre de distrações."
msgid "Add a new scene."
msgstr "Adicionar nova cena."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Cena"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Ir para cena aberta anteriormente."
@@ -5043,11 +5183,14 @@ msgid "Selected node is not a Viewport!"
msgstr "Nó selecionado não é um Viewport!"
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr "Tamanho: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
+msgstr "Tamanho:"
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+#, fuzzy
+msgid "Page:"
msgstr "Página: "
#: editor/editor_properties_array_dict.cpp
@@ -5148,6 +5291,11 @@ msgstr ""
"Adicione um executável pré-definido no menu de exportação ou defina um pré-"
"definido existente como executável."
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Projeto"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Escreva a sua lógica no Método _run()."
@@ -5426,7 +5574,9 @@ msgid "Draw Spaces"
msgstr "Desenhar Espaços"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr "Navegação"
@@ -6013,10 +6163,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Gestor de Projetos"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Sorting Order"
msgstr "Ordem de Classificação"
@@ -6781,14 +6933,6 @@ msgid "Replace in Files"
msgstr "Substituir em Ficheiros"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "Localizar: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "Substituir: "
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr "Substituir Tudo (DEFINITIVO)"
@@ -6917,7 +7061,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
msgid "Filter"
msgstr "Filtro"
@@ -7175,7 +7319,8 @@ msgid "Generating Lightmaps"
msgstr "A gerar Lightmaps"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+#, fuzzy
+msgid "Generating for Mesh:"
msgstr "A gerar para Malha: "
#: editor/import/resource_importer_scene.cpp
@@ -7203,6 +7348,18 @@ msgid "Saving..."
msgstr "A guardar..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -8013,10 +8170,12 @@ msgstr "Opções de Onion Skinning"
msgid "Directions"
msgstr "Direções"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "Passado"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "Futuro"
@@ -8175,7 +8334,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr "Definir a animação final. Útil para sub-transições."
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
+#, fuzzy
+msgid "Transition:"
msgstr "Transição: "
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8192,11 +8352,6 @@ msgid "New name:"
msgstr "Novo nome:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "Escala:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "Aparecer (s):"
@@ -9106,6 +9261,7 @@ msgstr "Fazer Osso(s) Personalizados a partis de Nó(s)"
msgid "Clear Custom Bones"
msgstr "Apagar Ossos Personalizados"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9172,6 +9328,10 @@ msgid "Preview Canvas Scale"
msgstr "Pré-visualizar Escala do Canvas"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "Esquema"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr "Máscara de translação para inserir chaves."
@@ -9943,7 +10103,8 @@ msgid "Volume"
msgstr "Volume"
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+#, fuzzy
+msgid "Emission Source:"
msgstr "Fonte de emissão: "
#: editor/plugins/particles_editor_plugin.cpp
@@ -10175,6 +10336,7 @@ msgid "Points"
msgstr "Pontos"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr "Polígonos"
@@ -10332,13 +10494,6 @@ msgid "Instance:"
msgstr "Instância:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "Tipo:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr "Abrir no Editor"
@@ -10347,10 +10502,6 @@ msgstr "Abrir no Editor"
msgid "Load Resource"
msgstr "Carregar recurso"
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr "ResourcePreloader"
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr "Inverter Portais"
@@ -11047,12 +11198,16 @@ msgstr "Rodar"
msgid "Translate"
msgstr "Translação"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
+#, fuzzy
+msgid "Scaling:"
msgstr "A escalar: "
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
+#, fuzzy
+msgid "Translating:"
msgstr "A transladar: "
#: editor/plugins/spatial_editor_plugin.cpp
@@ -11076,11 +11231,6 @@ msgid "Yaw:"
msgstr "Rotação:"
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr "Tamanho:"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr "Objetos Desenhados:"
@@ -11567,7 +11717,8 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr "Geometria inválida, não substituível por malha."
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+#, fuzzy
+msgid "Convert to MeshInstance2D"
msgstr "Converter para Mesh2D"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11599,15 +11750,18 @@ msgid "Sprite"
msgstr "Sprite"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
+#, fuzzy
+msgid "Simplification:"
msgstr "Simplificação: "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+#, fuzzy
+msgid "Shrink (Pixels):"
msgstr "Encolher (Pixeis): "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+#, fuzzy
+msgid "Grow (Pixels):"
msgstr "Aumentar (Pixeis): "
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12560,8 +12714,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr "Selecione a forma, subtile ou Tile anterior."
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr "Região"
@@ -14077,37 +14230,10 @@ msgid "Delete preset '%s'?"
msgstr "Apagar predefinição '%s'?"
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-"Falhou a exportação do projeto para a plataforma '%s'.\n"
-"O Modelo de exportação está ausente ou é inválido."
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-"Falhou a exportação do projeto para a plataforma '%s'.\n"
-"Pode ser provocado por um problema na predefinição ou configuração da "
-"exportação."
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "A Exportar Tudo"
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr "O caminho de exportação não existe:"
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-"Modelos de exportação para esta plataforma estão ausentes/corrompidos :"
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr "Exportar Caminho"
@@ -14253,6 +14379,11 @@ msgid "Export templates for this platform are missing:"
msgstr "Não existem Modelos de exportação para esta plataforma:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Fundadores do Projeto"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "Gerir Modelos de Exportação"
@@ -15796,7 +15927,8 @@ msgid "Attach Node Script"
msgstr "Anexar Script de Nó"
#: editor/script_editor_debugger.cpp
-msgid "Remote "
+#, fuzzy
+msgid "Remote %s:"
msgstr "Remoto "
#: editor/script_editor_debugger.cpp
@@ -16678,7 +16810,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "Polígonos"
@@ -16856,7 +16988,8 @@ msgid "Disabled GDNative Singleton"
msgstr "Instância única GDNative desativada"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+#, fuzzy
+msgid "Libraries:"
msgstr "Bibliotecas: "
#: modules/gdnative/nativescript/nativescript.cpp
@@ -17300,7 +17433,6 @@ msgid "Use In Baked Light"
msgstr "Consolidar Lightmaps"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17330,6 +17462,19 @@ msgstr "Centro"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Navegação"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Modo Navegação"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Plano Seguinte"
@@ -17747,7 +17892,8 @@ msgstr ""
"trabalho de nós! Corrija o seu nó por favor."
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+#, fuzzy
+msgid "Node returned an invalid sequence output:"
msgstr "O nó retornou uma sequência de saída incorreta: "
#: modules/visual_script/visual_script.cpp
@@ -17756,7 +17902,8 @@ msgstr ""
"Foi encontrada o bit da sequência mas não o nó na pilha, denuncie o bug!"
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+#, fuzzy
+msgid "Stack overflow with stack depth:"
msgstr "Pilha cheia com a profundidade da pilha: "
#: modules/visual_script/visual_script.cpp
@@ -18125,7 +18272,8 @@ msgid "for (elem) in (input):"
msgstr "para (elem) em (input):"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+#, fuzzy
+msgid "Input type not iterable:"
msgstr "Tipo de Input não iterável: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18133,7 +18281,8 @@ msgid "Iterator became invalid"
msgstr "O iterador tornou-se inválido"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+#, fuzzy
+msgid "Iterator became invalid:"
msgstr "O iterador tornou-se inválido: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18297,11 +18446,13 @@ msgid "Operator"
msgstr "Iterador"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
+#, fuzzy
+msgid "Invalid argument of type:"
msgstr ": Argumento inválido de tipo: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
+#, fuzzy
+msgid "Invalid arguments:"
msgstr ": Argumentos inválidos: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18314,11 +18465,13 @@ msgid "Var Name"
msgstr "Nome"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+#, fuzzy
+msgid "VariableGet not found in script:"
msgstr "VariableGet não encontrado no script: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+#, fuzzy
+msgid "VariableSet not found in script:"
msgstr "VariableSet não encontrado no script: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18852,10 +19005,6 @@ msgid "Could not execute on device."
msgstr "Incapaz de executar no dispositivo."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr "Incapaz de localizar a ferramenta 'apksigner'."
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18976,12 +19125,17 @@ msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
"Versão de \"Target Sdk\" tem de ser maior ou igual à versão de \"Min Sdk\"."
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Sinal"
+
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
"'apksigner' não foi encontrado.\n"
"Verifique se o comando está disponível na diretoria Android SDK build-"
@@ -19001,6 +19155,11 @@ msgid "Could not find keystore, unable to export."
msgstr "Incapaz de encontrar keystore e exportar."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "Não consegui iniciar o subprocesso!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr "'apksigner' devolvido com erro #%d"
@@ -19030,7 +19189,8 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "Nome de ficheiro inválido! APK Android exige a extensão *.apk."
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+#, fuzzy
+msgid "Unsupported export format!"
msgstr "Formato de exportação não suportado!\n"
#: platform/android/export/export_plugin.cpp
@@ -19042,10 +19202,9 @@ msgstr ""
"versão. Reinstale no menu 'Projeto'."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
"Incompatibilidade da versão Android:\n"
@@ -19054,14 +19213,16 @@ msgstr ""
"Reinstale o modelo de compilação Android no menu 'Projeto'."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
"Incapaz de sobrescrever ficheiros res://android/build/res/*.xml com o nome "
"do projeto"
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+#, fuzzy
+msgid "Could not export project files to gradle project."
msgstr "Incapaz de exportar ficheiros do projeto para projeto gradle\n"
#: platform/android/export/export_plugin.cpp
@@ -19073,8 +19234,9 @@ msgid "Building Android Project (gradle)"
msgstr "A compilar Projeto Android (gradle)"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
"Falhou a compilação do projeto Android, verifique o erro na saída.\n"
@@ -19094,7 +19256,8 @@ msgstr ""
"projeto gradle por resultados."
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+#, fuzzy
+msgid "Package not found: \"%s\"."
msgstr "Pacote não encontrado: '%s'"
#: platform/android/export/export_plugin.cpp
@@ -19102,17 +19265,16 @@ msgid "Creating APK..."
msgstr "A criar APK..."
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+#, fuzzy
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
"Incapaz de encontrar modelo APK para exportar:\n"
"%s"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -19126,7 +19288,8 @@ msgid "Adding files..."
msgstr "A adicionar ficheiros..."
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+#, fuzzy
+msgid "Could not export project files."
msgstr "Incapaz de exportar ficheiros do projeto"
#: platform/android/export/export_plugin.cpp
@@ -19368,6 +19531,17 @@ msgstr "CustomNode"
msgid "Custom BG Color"
msgstr "CustomNode"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "Gerir Modelos"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Modelo de lançamento personalizado não encontrado."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -19390,22 +19564,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Executar HTML exportado no navegador predefinido do sistema."
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
msgstr "Incapaz de abrir modelo para exportação:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
msgstr "Modelo de exportação inválido:"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+#, fuzzy
+msgid "Could not write file: \"%s\"."
msgstr "Incapaz de escrever ficheiro:"
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Definir Margem"
+
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+#, fuzzy
+msgid "Could not read file: \"%s\"."
msgstr "Incapaz de ler ficheiro:"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "Separação:"
@@ -19480,15 +19667,18 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+#, fuzzy
+msgid "Could not read HTML shell: \"%s\"."
msgstr "Incapaz de ler shell HTML:"
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+#, fuzzy
+msgid "Could not create HTTP server directory: %s."
msgstr "Incapaz de criar diretoria do servidor HTTP:"
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+#, fuzzy
+msgid "Error starting HTTP server: %d."
msgstr "Erro ao iniciar servidor HTTP:"
#: platform/javascript/export/export.cpp
@@ -19789,9 +19979,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Incapaz de exportar ficheiros do projeto"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "Não consegui iniciar o subprocesso!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Localização"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19807,20 +20016,76 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "Ãcones não encontrados."
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Erro ao guardar ficheiro: %s"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Direções"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "Não consegui iniciar o subprocesso!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "A criar miniatura"
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+#, fuzzy
+msgid "Could not find template app to export: \"%s\"."
msgstr "Incapaz de encontrar modelo app para exportar:"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Modelo de exportação inválido:"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -19828,7 +20093,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -19869,6 +20134,16 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "Projeto"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr "Incapaz de exportar ficheiros do projeto para projeto gradle\n"
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr "Identificador de pacote inválido:"
@@ -20189,6 +20464,11 @@ msgid "Debug Algorithm"
msgstr "Depurador"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Incapaz de remover ficheiro temporário:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20235,6 +20515,70 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Rotação aleatória:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "Incapaz de encontrar keystore e exportar."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "Incapaz de encontrar keystore e exportar."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "Incapaz de encontrar keystore e exportar."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "Incapaz de encontrar keystore e exportar."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Identificador Inválido:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Nome inválido."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "Incapaz de remover ficheiro temporário:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20253,6 +20597,23 @@ msgid "Invalid product version:"
msgstr "Versão de produto inválida:"
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Extensão inválida."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "Nova Janela"
@@ -20269,6 +20630,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20396,7 +20761,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Distância de escolha:"
@@ -21270,17 +21636,19 @@ msgstr ""
"funcionar. Defina a propriedade ou desenhe o polígono."
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-"NavigationPolygonInstance tem de ser filho ou neto de um nó Navigation2D. "
-"Apenas fornece dados de navegação."
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr ""
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Centro Fundo"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "Viagem"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
msgid "Rotation Degrees"
@@ -22515,14 +22883,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr "O NavigationAgent pode ser apenas usado dentro de um nó espacial."
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-"NavigationMeshInstance tem de ser filho ou neto de um nó Navigation. Apenas "
-"fornece dados de navegação."
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
#, fuzzy
msgid "NavMesh"
@@ -25269,6 +25629,16 @@ msgid "3D Physics"
msgstr "Física"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Navegação"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Navegação"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -26694,7 +27064,7 @@ msgstr "Transmissão"
msgid "Refraction"
msgstr "Separação:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -26779,7 +27149,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "A escalar: "
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "Definir tipo de variável"
#: scene/resources/navigation_mesh.cpp
@@ -26797,10 +27172,15 @@ msgid "Source Group Name"
msgstr "Fonte"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "Argumentos da Cena Principal:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -26810,11 +27190,16 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Regions"
+msgstr "Região"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Merge Size"
msgstr "Mesclar a partir da Cena"
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26828,6 +27213,11 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Details"
+msgstr "Mostrar Predefinição"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Sample Distance"
msgstr "Distância de escolha:"
@@ -26845,7 +27235,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -27261,6 +27651,11 @@ msgid "Scenario"
msgstr "Cena"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Navegação"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -27278,6 +27673,26 @@ msgstr "Linear Esquerda"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Predefinição"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Pré-visualização Predefinida"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Em teste"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Editar Conexão:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/pt_BR.po b/editor/translations/pt_BR.po
index 773c42e57e..df7e56059b 100644
--- a/editor/translations/pt_BR.po
+++ b/editor/translations/pt_BR.po
@@ -129,7 +129,7 @@
# Henrique Darko <henridark00@gmail.com>, 2021.
# Cearaj <pmoraisleal@gmail.com>, 2021.
# Alefy San <alefyferreiradeoliveira@outlook.com>, 2021.
-# Joel Gomes da Silva <joelgomes1994@hotmail.com>, 2021.
+# Joel Gomes da Silva <joelgomes1994@hotmail.com>, 2021, 2022.
# Orangotango De tanga <luizinho0045@gmail.com>, 2021.
# Felipe SiFa <felipe@logus.digital>, 2022.
# Gabriel Gian <gabrielgian@live.com>, 2022.
@@ -139,13 +139,14 @@
# Daniel Abrante <danielabrante@protonmail.com>, 2022.
# blue wemes <bluewemes@gmail.com>, 2022.
# José Miranda Neto <dodimi95@gmail.com>, 2022.
+# lucas rossy brasil coelho <lucasrossy270@gmail.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: 2016-05-30\n"
-"PO-Revision-Date: 2022-05-15 09:38+0000\n"
-"Last-Translator: José Miranda Neto <dodimi95@gmail.com>\n"
+"PO-Revision-Date: 2022-06-19 11:52+0000\n"
+"Last-Translator: lucas rossy brasil coelho <lucasrossy270@gmail.com>\n"
"Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/"
"godot-engine/godot/pt_BR/>\n"
"Language: pt_BR\n"
@@ -153,7 +154,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 4.13-dev\n"
+"X-Generator: Weblate 4.13.1-dev\n"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
@@ -337,9 +338,10 @@ msgid "Data"
msgstr "Dados"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr "Rede"
@@ -443,8 +445,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Não há bytes suficientes para decodificar, ou o formato é inválido."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
-msgstr "Entrada inválida %i (não passada) na expressão"
+msgid "Invalid input %d (not passed) in expression"
+msgstr "Entrada inválida %d (não passada) na expressão"
#: core/math/expression.cpp
msgid "self can't be used because instance is null (not passed)"
@@ -487,6 +489,16 @@ msgstr "Fila de Mensagens"
msgid "Max Size (KB)"
msgstr "Tamanho Máximo (KB)"
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Modo de Movimentação"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "Deletar Entrada"
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -666,7 +678,8 @@ msgstr "Descrição"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "Rodar"
@@ -706,7 +719,7 @@ msgstr "Exibir Tudo"
#: modules/opensimplex/noise_texture.cpp scene/2d/line_2d.cpp
#: scene/3d/label_3d.cpp scene/gui/text_edit.cpp scene/resources/texture.cpp
msgid "Width"
-msgstr ""
+msgstr "Largura"
#: core/project_settings.cpp main/main.cpp modules/csg/csg_shape.cpp
#: modules/gltf/gltf_node.cpp modules/opensimplex/noise_texture.cpp
@@ -720,7 +733,7 @@ msgstr "Luz"
#: core/project_settings.cpp
msgid "Always On Top"
-msgstr ""
+msgstr "Sempre no topo"
#: core/project_settings.cpp
#, fuzzy
@@ -753,6 +766,10 @@ msgid "Main Run Args"
msgstr "Argumentos de Execução Principais"
#: core/project_settings.cpp
+msgid "Scene Naming"
+msgstr "Nomeação de Cena"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr "Pesquisar em Extensões de Arquivo"
@@ -760,18 +777,15 @@ msgstr "Pesquisar em Extensões de Arquivo"
msgid "Script Templates Search Path"
msgstr "Caminho de Pesquisa de Modelos de Script"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Controle de Versão"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+#, fuzzy
+msgid "Version Control Autoload On Startup"
msgstr "Carregamento Automático na Inicialização"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Nome do Plugin"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Controle de Versão"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -878,7 +892,8 @@ msgid "Quality"
msgstr "Qualidade"
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
msgid "Filters"
msgstr "Filtros"
@@ -1007,7 +1022,7 @@ msgstr "Teste"
#: core/translation.cpp scene/resources/font.cpp
msgid "Fallback"
-msgstr ""
+msgstr "Fallback"
#: core/ustring.cpp scene/resources/segment_shape_2d.cpp
msgid "B"
@@ -1082,7 +1097,7 @@ msgstr "Usar Encaixe de Pixel"
#: drivers/gles2/rasterizer_scene_gles2.cpp
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Immediate Buffer Size (KB)"
-msgstr ""
+msgstr "Tamanho imediato do Buffer (KB)"
#: drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_storage_gles3.cpp
@@ -1092,15 +1107,15 @@ msgstr "Mapeamento de luz"
#: drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_storage_gles3.cpp
msgid "Use Bicubic Sampling"
-msgstr ""
+msgstr "Usar amostragem bicúbica"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Renderable Elements"
-msgstr ""
+msgstr "Máximo de elementos renderizáveis"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Renderable Lights"
-msgstr ""
+msgstr "Máximo de luzes renderizáveis"
#: drivers/gles3/rasterizer_scene_gles3.cpp
#, fuzzy
@@ -1109,7 +1124,7 @@ msgstr "Seleção Central"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Lights Per Object"
-msgstr ""
+msgstr "Máximo de luzes por objeto"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Subsurface Scattering"
@@ -1148,6 +1163,7 @@ msgstr "Alta qualidade"
msgid "Blend Shape Max Buffer Size (KB)"
msgstr "Tamanho máximo do buffer da forma de mistura (KB)"
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Gratuito"
@@ -1164,7 +1180,7 @@ msgstr "Espelhar"
msgid "Time:"
msgstr "Tempo:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Valor:"
@@ -1413,8 +1429,72 @@ msgid "Remove this track."
msgstr "Remover esta faixa."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
-msgstr "Tempo (s): "
+msgid "Time (s):"
+msgstr "Tempo (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Posição"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Rotação"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "Escala:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "Tipo:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Template de exportação inválido:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Easing:"
+msgstr "Facilitar Entrada-Saída"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "In-Handle:"
+msgstr "Definir Manipulador"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Out-Handle:"
+msgstr "Definir Manipulador"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "Par de stream"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Reinício(s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "End (s):"
+msgstr "[i]Fade In[/i](s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Animações:"
#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
@@ -1630,8 +1710,8 @@ msgid "Add Method Track Key"
msgstr "Adicionar Chave de Trilha de Método"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
-msgstr "Método não encontrado no objeto: "
+msgid "Method not found in object:"
+msgstr "Método não encontrado no objeto:"
#: editor/animation_track_editor.cpp
msgid "Anim Move Keys"
@@ -2240,8 +2320,8 @@ msgid "Open"
msgstr "Abrir"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Donos De:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
msgid ""
@@ -2545,7 +2625,7 @@ msgid "Bus Options"
msgstr "Opções do canal"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Duplicar"
@@ -2597,8 +2677,9 @@ msgstr "Abrir Layout de Canais de Ãudio"
msgid "There is no '%s' file."
msgstr "Não existe o arquivo '%s'."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "Layout"
#: editor/editor_audio_buses.cpp
@@ -2802,6 +2883,25 @@ msgid "Choose"
msgstr "Escolher"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "Copiar Caminho do Nó"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "Pacote instalado com sucesso!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "Falhou:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Armazenando Arquivo:"
@@ -2814,6 +2914,31 @@ msgid "Packing"
msgstr "Empacotando"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Salvar Como"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "Não foi possível criar a pasta."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Não foi possível exportar os arquivos do projeto"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Não é possível abrir arquivo para escrita:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Salvar Como"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2933,11 +3058,33 @@ msgstr "Modelo customizado de depuração não encontrado."
msgid "Custom release template not found."
msgstr "Template customizado de release não encontrado."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "Gerenciar Templates"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "O caminho de exportação informado não existe:"
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "Arquivo de modelo não encontrado:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "Template de exportação inválido:"
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+#, fuzzy
+msgid "PCK Embedding"
+msgstr "Preenchimento"
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr "Em exportações de 32 bits, o PCK embutido não pode ser maior que 4GB."
@@ -3109,9 +3256,9 @@ msgid "Import"
msgstr "Importar"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Exportação"
@@ -3382,7 +3529,7 @@ msgstr "Classe:"
#: editor/editor_help.cpp editor/scene_tree_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Inherits:"
-msgstr "Herda de:"
+msgstr "Herda:"
#: editor/editor_help.cpp
msgid "Inherited by:"
@@ -4266,14 +4413,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Cena"
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr "Nomeação de Cena"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4397,6 +4536,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Controle de Versão"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "Nome do usuário"
@@ -4424,6 +4567,10 @@ msgstr "Alternar modo sem-distrações."
msgid "Add a new scene."
msgstr "Adicionar nova cena."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Cena"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Ir para cena aberta anteriormente."
@@ -5111,12 +5258,14 @@ msgid "Selected node is not a Viewport!"
msgstr "O nó selecionado não é uma Viewport!"
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr "Tamanho: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
+msgstr "Tamanho:"
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr "Página: "
+msgid "Page:"
+msgstr "Página:"
#: editor/editor_properties_array_dict.cpp
#: editor/plugins/theme_editor_plugin.cpp
@@ -5216,6 +5365,11 @@ msgstr ""
"Adicione uma predefinição executável no menu Exportar ou defina uma "
"predefinição existente como executável."
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Projeto"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Escreva sua lógica no método _run()."
@@ -5494,7 +5648,9 @@ msgid "Draw Spaces"
msgstr "Desenhar Espaços"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr "Navegação"
@@ -6084,10 +6240,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Gerenciador de Projetos"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Sorting Order"
msgstr "Ordem de Classificação"
@@ -6856,14 +7014,6 @@ msgid "Replace in Files"
msgstr "Substituir em Arquivos"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "Encontrar: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "Substituir: "
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr "Substituir tudo (SEM DESFAZER)"
@@ -6992,7 +7142,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
msgid "Filter"
msgstr "Filtro"
@@ -7250,8 +7400,8 @@ msgid "Generating Lightmaps"
msgstr "Generando Lightmaps"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
-msgstr "Generando para a Malha: "
+msgid "Generating for Mesh:"
+msgstr "Gerando para malha:"
#: editor/import/resource_importer_scene.cpp
msgid "Running Custom Script..."
@@ -7278,6 +7428,18 @@ msgid "Saving..."
msgstr "Salvando..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -8095,10 +8257,12 @@ msgstr "Opções do Onion Skinning"
msgid "Directions"
msgstr "Direções"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "Passado"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "Futuro"
@@ -8258,8 +8422,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr "Definir a animação final. Isso é útil para sub-transições."
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
-msgstr "Transição: "
+msgid "Transition:"
+msgstr "Transição:"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Play Mode:"
@@ -8275,11 +8439,6 @@ msgid "New name:"
msgstr "Novo nome:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "Escala:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "[i]Fade In[/i](s):"
@@ -9193,6 +9352,7 @@ msgstr "Criar esqueleto(s) customizado do(s) nó(s)"
msgid "Clear Custom Bones"
msgstr "Limpar os ossos personalizados"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9259,6 +9419,10 @@ msgid "Preview Canvas Scale"
msgstr "Pré-visualização da escala do Canvas"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "Layout"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr "Máscara de translação para inserção de chaves."
@@ -9710,7 +9874,7 @@ msgstr "Criar Contorno"
#: scene/resources/multimesh.cpp scene/resources/primitive_meshes.cpp
#: scene/resources/texture.cpp
msgid "Mesh"
-msgstr "Malha"
+msgstr "Mesh"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
@@ -10032,8 +10196,8 @@ msgid "Volume"
msgstr "Volume"
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr "Origem da Emissão: "
+msgid "Emission Source:"
+msgstr "Fonte de emissão:"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
@@ -10266,6 +10430,7 @@ msgid "Points"
msgstr "Pontos"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr "Polígonos"
@@ -10423,13 +10588,6 @@ msgid "Instance:"
msgstr "Instância:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "Tipo:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr "Abrir no Editor"
@@ -10438,10 +10596,6 @@ msgstr "Abrir no Editor"
msgid "Load Resource"
msgstr "Carregar Recurso"
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr "ResourcePreloader"
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr "Inverter Horizontalmente"
@@ -11138,13 +11292,15 @@ msgstr "Rotacionar"
msgid "Translate"
msgstr "Translação"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr "Escalonando: "
+msgid "Scaling:"
+msgstr "Escala:"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr "Transladando: "
+msgid "Translating:"
+msgstr "Traduzir:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -11167,11 +11323,6 @@ msgid "Yaw:"
msgstr "Guinada:"
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr "Tamanho:"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr "Objetos Desenhados:"
@@ -11659,7 +11810,8 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr "Geometria inválida, não é possível substituir por malha."
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+#, fuzzy
+msgid "Convert to MeshInstance2D"
msgstr "Converter para Malha2D"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11691,16 +11843,16 @@ msgid "Sprite"
msgstr "Sprite"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr "Simplificação: "
+msgid "Simplification:"
+msgstr "Simplificação:"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
-msgstr "Diminuir (Pixels): "
+msgid "Shrink (Pixels):"
+msgstr "Encolher (Pixels):"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
-msgstr "Produzir (Pixels): "
+msgid "Grow (Pixels):"
+msgstr "Crescer (Pixels):"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Update Preview"
@@ -12652,8 +12804,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr "Selecione a forma, subtile ou tile anterior."
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr "Região"
@@ -14171,38 +14322,10 @@ msgid "Delete preset '%s'?"
msgstr "Excluir definição '%s'?"
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-"Falha ao exportar o projeto para a plataforma '%s'.\n"
-"Os modelos de exportação parecem estar ausentes ou inválidos."
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-"Falha ao exportar o projeto para a plataforma '%s'.\n"
-"Isto pode ser devido a um problema de configuração nas pré-configurações de "
-"exportação ou nas configurações de exportação."
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "Exportando tudo"
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr "O caminho de exportação informado não existe:"
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-"Modelos de exportação para esta plataforma não foram encontrados/estão "
-"corrompidos:"
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr "Caminho de Exportação"
@@ -14312,28 +14435,26 @@ msgid "More Info..."
msgstr "Mover Para..."
#: editor/project_export.cpp
-#, fuzzy
msgid "Export PCK/Zip..."
-msgstr "Exportar PCK/Zip"
+msgstr "Exportar PCK/Zip..."
#: editor/project_export.cpp
#, fuzzy
msgid "Export Project..."
-msgstr "Exportar Projeto"
+msgstr "Exportar Projeto…"
#: editor/project_export.cpp
msgid "Export All"
msgstr "Exportar tudo"
#: editor/project_export.cpp
-#, fuzzy
msgid "Choose an export mode:"
-msgstr "Por favor, escolha uma pasta vazia."
+msgstr "Escolha um modo de exportação:"
#: editor/project_export.cpp
#, fuzzy
msgid "Export All..."
-msgstr "Exportar tudo"
+msgstr "Exportar tudo…"
#: editor/project_export.cpp editor/project_manager.cpp
msgid "ZIP File"
@@ -14349,6 +14470,11 @@ msgid "Export templates for this platform are missing:"
msgstr "Modelos de exportação para esta plataforma não foram encontrados:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Fundadores do Projeto"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "Gerenciar Modelos de Exportação"
@@ -15893,8 +16019,9 @@ msgid "Attach Node Script"
msgstr "Adicionar Script ao Nó"
#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr "Remoto "
+#, fuzzy
+msgid "Remote %s:"
+msgstr "Remoto %s:"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -16770,7 +16897,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "Polígonos"
@@ -16943,8 +17070,8 @@ msgid "Disabled GDNative Singleton"
msgstr "GDNative Singleton desativado"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
-msgstr "Bibliotecas: "
+msgid "Libraries:"
+msgstr "Bibliotecas:"
#: modules/gdnative/nativescript/nativescript.cpp
msgid "Class Name"
@@ -16965,9 +17092,8 @@ msgstr "GDNative"
#: modules/gdscript/editor/gdscript_highlighter.cpp
#: modules/gdscript/gdscript.cpp
-#, fuzzy
msgid "GDScript"
-msgstr "Roteiro"
+msgstr "GDScript"
#: modules/gdscript/editor/gdscript_highlighter.cpp
msgid "Function Definition Color"
@@ -17376,7 +17502,6 @@ msgid "Use In Baked Light"
msgstr "Faça mapas de luz"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17406,6 +17531,19 @@ msgstr "Centro"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Navegação"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Modo Navegação"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Próximo Plano"
@@ -17819,16 +17957,16 @@ msgstr ""
"corrente do nó! Conserte seu nó, por favor."
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
-msgstr "O nó retornou uma saída de sequência inválida: "
+msgid "Node returned an invalid sequence output:"
+msgstr "O nó retornou uma saída de sequência inválida:"
#: modules/visual_script/visual_script.cpp
msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr "Sequência encontrada mas o nó não está na pilha, reporte um bug!"
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
-msgstr "Sobrecarga da pilha com profundidade: "
+msgid "Stack overflow with stack depth:"
+msgstr "Sobrecarga da pilha com profundidade:"
#: modules/visual_script/visual_script.cpp
#, fuzzy
@@ -18198,16 +18336,16 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
-msgstr "Tipo de entrada não iterável: "
+msgid "Input type not iterable:"
+msgstr "Tipo de entrada não iterável:"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Iterator became invalid"
msgstr "Iterador tornou-se inválido"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
-msgstr "Iterador tornou-se inválido: "
+msgid "Iterator became invalid:"
+msgstr "Iterador tornou-se inválido:"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Sequence"
@@ -18377,12 +18515,12 @@ msgid "Operator"
msgstr "Iterador"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ": Argumento inválido do tipo: "
+msgid "Invalid argument of type:"
+msgstr "Argumento inválido do tipo:"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ": Argumentos inválidos: "
+msgid "Invalid arguments:"
+msgstr "Argumentos inválidos:"
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -18394,12 +18532,12 @@ msgid "Var Name"
msgstr "Nome"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
-msgstr "VariableGet não encontrada no script: "
+msgid "VariableGet not found in script:"
+msgstr "VariableGet não encontrado no script:"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
-msgstr "VariableSet não encontrada no script: "
+msgid "VariableSet not found in script:"
+msgstr "VariableSet não encontrado no script:"
#: modules/visual_script/visual_script_nodes.cpp
#, fuzzy
@@ -18951,10 +19089,6 @@ msgid "Could not execute on device."
msgstr "Não foi possível executar no dispositivo."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr "Não foi possível encontrar a ferramenta 'apksigner'."
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -19085,17 +19219,20 @@ msgstr ""
"Versão do \"Target Sdk\" precisa ser igual ou maior que a versão do \"Min "
"Sdk\"."
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Sinal"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
-"'apksigner' não foi encontrado.\n"
-"Verifique se o comando está disponível no diretório do Android SDK build-"
-"tools.\n"
-"O %s resultante está sem assinatura."
+"'apksigner' não foi encontrado. Verifique se o comando está disponível no "
+"diretório de ferramentas de compilação do Android SDK. O %s resultante não é "
+"assinado."
#: platform/android/export/export_plugin.cpp
msgid "Signing debug %s..."
@@ -19110,6 +19247,11 @@ msgid "Could not find keystore, unable to export."
msgstr "O keystore não foi encontrado, não foi possível exportar."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "Não se pôde iniciar sub-processo!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr "'apksigner' retornou com o erro #%d"
@@ -19138,8 +19280,8 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "Nome de arquivo inválido! Android APK requer a extensão *.apk."
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
-msgstr "Formato de Exportação Não Suportado\n"
+msgid "Unsupported export format!"
+msgstr "Formato de exportação não suportado!"
#: platform/android/export/export_plugin.cpp
msgid ""
@@ -19151,10 +19293,9 @@ msgstr ""
"'Projeto'."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
"Diferença na versão da build do Android:\n"
@@ -19163,14 +19304,16 @@ msgstr ""
"Por favor reinstale o modelo de compilação do Android pelo menu 'Projeto'."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
"Incapaz de sobrescrever os arquivos res://android/build/res/*.xml com o nome "
"do projeto"
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+#, fuzzy
+msgid "Could not export project files to gradle project."
msgstr ""
"Não foi possível exportar os arquivos do projeto ao projeto do gradle\n"
@@ -19183,8 +19326,9 @@ msgid "Building Android Project (gradle)"
msgstr "Construindo Projeto Android (gradle)"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
"A construção do projeto Android falhou, verifique a saída para detalhes.\n"
@@ -19204,7 +19348,8 @@ msgstr ""
"diretório do projeto gradle por saídas."
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+#, fuzzy
+msgid "Package not found: \"%s\"."
msgstr "Pacote não encontrado: '%s'"
#: platform/android/export/export_plugin.cpp
@@ -19212,17 +19357,16 @@ msgid "Creating APK..."
msgstr "Criando APK..."
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+#, fuzzy
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
"Não foi possível encontrar o modelo de APK para exportar:\n"
"%s"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -19236,7 +19380,8 @@ msgid "Adding files..."
msgstr "Adicionando arquivos..."
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+#, fuzzy
+msgid "Could not export project files."
msgstr "Não foi possível exportar os arquivos do projeto"
#: platform/android/export/export_plugin.cpp
@@ -19475,6 +19620,17 @@ msgstr "Recortar Nós"
msgid "Custom BG Color"
msgstr "Recortar Nós"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "Gerenciar Templates"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Template customizado de release não encontrado."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -19497,22 +19653,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Rodar HTML exportado no navegador padrão do sistema."
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
msgstr "Não foi possível abrir o modelo para exportar:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
msgstr "Template de exportação inválido:"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+#, fuzzy
+msgid "Could not write file: \"%s\"."
msgstr "Não foi possível escrever o arquivo:"
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Definir Margem"
+
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+#, fuzzy
+msgid "Could not read file: \"%s\"."
msgstr "Não foi possível ler o arquivo:"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Variant"
msgstr "Variante"
@@ -19586,15 +19755,18 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+#, fuzzy
+msgid "Could not read HTML shell: \"%s\"."
msgstr "Não foi possível ler o shell HTML:"
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+#, fuzzy
+msgid "Could not create HTTP server directory: %s."
msgstr "Não foi possível criar o diretório do servidor HTTP:"
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+#, fuzzy
+msgid "Error starting HTTP server: %d."
msgstr "Erro ao iniciar servidor HTTP:"
#: platform/javascript/export/export.cpp
@@ -19894,9 +20066,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Não foi possível exportar os arquivos do projeto"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "Não se pôde iniciar sub-processo!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Localização"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19912,20 +20103,76 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "Ãcones não encontrados."
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Erro ao salvar o arquivo: %s"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Direções"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "Não se pôde iniciar sub-processo!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "Criando Miniatura"
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+#, fuzzy
+msgid "Could not find template app to export: \"%s\"."
msgstr "Não foi possível encontrar o aplicativo de modelo para exportar:"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Template de exportação inválido:"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -19933,7 +20180,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -19974,6 +20221,17 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "Projeção"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+"Não foi possível exportar os arquivos do projeto ao projeto do gradle\n"
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr "Identificador de pacote inválido:"
@@ -20121,9 +20379,8 @@ msgid "Publisher Display Name"
msgstr "Nome de Exibição da Publicadora"
#: platform/uwp/export/export.cpp
-#, fuzzy
msgid "Product GUID"
-msgstr "GUID de produto inválido."
+msgstr "GUID do produto"
#: platform/uwp/export/export.cpp
#, fuzzy
@@ -20295,6 +20552,11 @@ msgid "Debug Algorithm"
msgstr "Depurador"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Não é possível remover o arquivo temporário:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20339,6 +20601,70 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Notificações Push"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "O keystore não foi encontrado, não foi possível exportar."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "O keystore não foi encontrado, não foi possível exportar."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "O keystore não foi encontrado, não foi possível exportar."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "O keystore não foi encontrado, não foi possível exportar."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "O nome não é um identificador válido:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Nome Inválido."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "Não é possível remover o arquivo temporário:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20357,6 +20683,23 @@ msgid "Invalid product version:"
msgstr "Versão de produto inválida:"
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Extensão inválida."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "Nova Janela"
@@ -20373,6 +20716,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20500,7 +20847,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr "Distância Máxima"
@@ -21350,17 +21698,19 @@ msgstr ""
"este nó funcione. Por favor defina a propriedade ou desenhe um polígono."
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-"NavigationPolygonInstance deve ser filho ou neto de um nó Navigation2D. Ele "
-"apenas fornece dados de navegação."
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr ""
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Centro Inferior"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "Viagem"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
msgid "Rotation Degrees"
@@ -22556,14 +22906,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-"NavigationMeshInstance deve ser filho ou neto de um nó Navigation. Ele "
-"apenas fornece dados de navegação."
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
#, fuzzy
msgid "NavMesh"
@@ -25285,6 +25627,16 @@ msgid "3D Physics"
msgstr "Física"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Navegação"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Navegação"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -25966,9 +26318,8 @@ msgid "Label Width"
msgstr "Largura Esquerda"
#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Screen Picker"
-msgstr "Operador de tela."
+msgstr "Seletor de tela"
#: scene/resources/default_theme/default_theme.cpp
#, fuzzy
@@ -26704,7 +27055,7 @@ msgstr "Transmissão"
msgid "Refraction"
msgstr "Refração"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr "Detalhe"
@@ -26787,7 +27138,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "Escala:"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "Definir o Tipo da Variável"
#: scene/resources/navigation_mesh.cpp
@@ -26804,10 +27160,15 @@ msgid "Source Group Name"
msgstr "Origem"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "Argumentos da Cena Principal:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -26817,11 +27178,16 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Regions"
+msgstr "Região"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Merge Size"
msgstr "Fundir a partir de Cena"
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26835,6 +27201,11 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Details"
+msgstr "Detalhe"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Sample Distance"
msgstr "Escolha uma Distância:"
@@ -26852,7 +27223,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -27267,6 +27638,11 @@ msgid "Scenario"
msgstr "Cena"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Navegação"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -27284,6 +27660,26 @@ msgstr "Linear Esquerda"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Padrão"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Prévia Padrão"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Testando"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Margem de Ligação da Borda"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/ro.po b/editor/translations/ro.po
index 16a6481669..b6b92325e4 100644
--- a/editor/translations/ro.po
+++ b/editor/translations/ro.po
@@ -223,9 +223,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
#, fuzzy
msgid "Network"
msgstr "Analizator Network"
@@ -334,7 +335,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Insuficienți bytes pentru decodare bytes, sau format invalid."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "Intrare invalida %i (nu a fost transmisă) in expresie"
#: core/math/expression.cpp
@@ -380,6 +382,16 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Mod Mutare"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "Șterge Intrare(Input)"
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -571,7 +583,8 @@ msgstr "Descriere"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "Execută"
@@ -660,6 +673,11 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Calea Scenei:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -667,19 +685,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Control versiune"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Control versiune"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Nume plugin:"
+msgid "Version Control Plugin Name"
+msgstr "Control versiune"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -795,7 +809,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "Filtre:"
@@ -1077,6 +1092,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Gratis"
@@ -1093,7 +1109,7 @@ msgstr "Oglinda"
msgid "Time:"
msgstr "Timp:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Valoare:"
@@ -1343,10 +1359,74 @@ msgid "Remove this track."
msgstr "Ștergeți pista selectată."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "Timp (s): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Poziție"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Pas Rotație:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "Dimensiune:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Trebuie să utilizaţi o extensie valida."
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "In-Handle:"
+msgstr "Setează Mâner"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Out-Handle:"
+msgstr "Setează Mâner"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "Închidere curbă"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Restartare (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "End (s):"
+msgstr "Estompează (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Animaţii:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "Comută Pista Activată"
@@ -1559,7 +1639,8 @@ msgid "Add Method Track Key"
msgstr "Inserați Pistă și Cheie"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "Metoda nu a fost găsită în obiect: "
#: editor/animation_track_editor.cpp
@@ -2172,8 +2253,8 @@ msgid "Open"
msgstr "Deschide"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Stăpâni La:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
msgid ""
@@ -2479,7 +2560,7 @@ msgid "Bus Options"
msgstr "Opțiuni Pistă Audio"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Duplicat"
@@ -2531,8 +2612,9 @@ msgstr "Deschide Schema Pistei Audio"
msgid "There is no '%s' file."
msgstr "Nu este niciun '%s' în filă."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "Schemă"
#: editor/editor_audio_buses.cpp
@@ -2740,6 +2822,24 @@ msgid "Choose"
msgstr "Alegeți"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "Pachet instalat cu succes!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "A Eșuat:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Fişierul se Stochează:"
@@ -2752,6 +2852,31 @@ msgid "Packing"
msgstr "Ambalare"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Salvați Ca"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "Directorul nu a putut fi creat."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Nu s-a putut porni subprocesul!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Nu pot deschide fiÅŸierul pentru scris:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Salvați Ca"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2874,11 +2999,32 @@ msgstr "Fișierul șablon de depanare personalizat nu a fost găsit."
msgid "Custom release template not found."
msgstr "Șablonul personalizat de lansare nu a fost găsit."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "Gestionați șabloanele"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "Fișierul nu există."
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "Fișierul șablon nu a fost găsit:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "Nu se pot deschide șabloanele de export zip."
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr ""
"La exporturile pe 32 de biți PCK-ul încorporat nu poate fi mai mare de 4 GiB."
@@ -3052,9 +3198,9 @@ msgid "Import"
msgstr "Importare"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Exportare"
@@ -4215,15 +4361,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Scenă"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Calea Scenei:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4352,6 +4489,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Control versiune"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Redenumește"
@@ -4380,6 +4521,10 @@ msgstr "Comutează modul fără distrageri."
msgid "Add a new scene."
msgstr "Adaugă o nouă scenă."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Scenă"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Mergi la o scenă deschisă anterior."
@@ -5056,11 +5201,14 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#, fuzzy
+msgid "Size:"
+msgstr "Dimensiunea Conturului:"
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+msgid "Page:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
@@ -5161,6 +5309,11 @@ msgstr ""
"platformă.\n"
"Te rog adaugă o presetare de rulare în meniul pentru export."
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Proiect"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Scrie logica programului în metoda _run()."
@@ -5437,7 +5590,9 @@ msgid "Draw Spaces"
msgstr "Apeluri"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
#, fuzzy
msgid "Navigation"
msgstr "Creează un Mesh de Navigare"
@@ -6017,10 +6172,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -6789,14 +6946,6 @@ msgid "Replace in Files"
msgstr "Înlocuiți Tot"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "Găsiți: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "Înlocuiți: "
-
-#: editor/find_in_files.cpp
#, fuzzy
msgid "Replace All (NO UNDO)"
msgstr "Înlocuiți Tot"
@@ -6929,7 +7078,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Filtre:"
@@ -7195,7 +7344,8 @@ msgid "Generating Lightmaps"
msgstr "Se Genereaza Lightmaps"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+#, fuzzy
+msgid "Generating for Mesh:"
msgstr "Se Generează pentru Mesh: "
#: editor/import/resource_importer_scene.cpp
@@ -7223,6 +7373,18 @@ msgid "Saving..."
msgstr "Se Salvează..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -8053,10 +8215,12 @@ msgstr "Onion Skinning"
msgid "Directions"
msgstr "Direcții"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "Trecut"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "Viitor"
@@ -8218,7 +8382,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
+#, fuzzy
+msgid "Transition:"
msgstr "Tranziție: "
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8235,11 +8400,6 @@ msgid "New name:"
msgstr "Nume nou:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "Dimensiune:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "Estompează (s):"
@@ -9199,6 +9359,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr "Curăță Oasele"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9265,6 +9426,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "Schemă"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -10052,7 +10217,8 @@ msgid "Volume"
msgstr "Volum"
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+#, fuzzy
+msgid "Emission Source:"
msgstr "Sursă de Emisie: "
#: editor/plugins/particles_editor_plugin.cpp
@@ -10293,6 +10459,7 @@ msgid "Points"
msgstr "Deplasare punct"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
#, fuzzy
msgid "Polygons"
msgstr "Poligon->UV"
@@ -10459,13 +10626,6 @@ msgid "Instance:"
msgstr "Instanță :"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr "Deschidere în Editor"
@@ -10474,10 +10634,6 @@ msgstr "Deschidere în Editor"
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -11210,13 +11366,17 @@ msgstr "Mod Rotație"
msgid "Translate"
msgstr "Tradu Snap:"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr ""
+#, fuzzy
+msgid "Scaling:"
+msgstr "Dimensiune:"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "Tradu Snap:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -11239,12 +11399,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
-msgid "Size:"
-msgstr "Dimensiunea Conturului:"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11743,7 +11897,8 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+#, fuzzy
+msgid "Convert to MeshInstance2D"
msgstr "Conversie în Mesh2D"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11778,15 +11933,16 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "Acțiune"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12803,8 +12959,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr "Regiunea"
@@ -14315,32 +14470,11 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
#, fuzzy
msgid "Exporting All"
msgstr "Exportare"
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
#, fuzzy
msgid "Export Path"
msgstr "Exportă Proiectul"
@@ -14483,6 +14617,11 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Fondatorii Proiectului"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "Administrează Șabloanele de Export"
@@ -15983,8 +16122,9 @@ msgid "Attach Node Script"
msgstr ""
#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr ""
+#, fuzzy
+msgid "Remote %s:"
+msgstr "Ștergeți"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -16864,7 +17004,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "Poligon->UV"
@@ -17040,7 +17180,7 @@ msgid "Disabled GDNative Singleton"
msgstr "Dezactivează Cercul de Actualizare"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+msgid "Libraries:"
msgstr ""
#: modules/gdnative/nativescript/nativescript.cpp
@@ -17476,7 +17616,6 @@ msgid "Use In Baked Light"
msgstr "Procesează Lightmaps"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17506,6 +17645,19 @@ msgstr "Centrează Selecția"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Creează un Mesh de Navigare"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Creează un Mesh de Navigare"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Planul următor"
@@ -17922,7 +18074,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17930,7 +18082,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -18314,7 +18466,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18322,7 +18474,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18491,12 +18643,14 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
+#, fuzzy
+msgid "Invalid argument of type:"
+msgstr "Argumente invalide pentru a construi '%s'"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
+#, fuzzy
+msgid "Invalid arguments:"
+msgstr "Nume nevalid."
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -18508,12 +18662,14 @@ msgid "Var Name"
msgstr "Nume"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableGet not found in script:"
+msgstr "Metoda nu a fost găsită în obiect: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableSet not found in script:"
+msgstr "Metoda nu a fost găsită în obiect: "
#: modules/visual_script/visual_script_nodes.cpp
msgid "Preload"
@@ -19060,10 +19216,6 @@ msgid "Could not execute on device."
msgstr "Directorul nu a putut fi creat."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -19167,12 +19319,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Semnal"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19191,6 +19347,11 @@ msgid "Could not find keystore, unable to export."
msgstr ""
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "Nu s-a putut porni subprocesul!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -19221,7 +19382,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19232,20 +19393,19 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
-msgstr ""
+#, fuzzy
+msgid "Could not export project files to gradle project."
+msgstr "Nu s-a putut porni subprocesul!"
#: platform/android/export/export_plugin.cpp
msgid "Could not write expansion package file!"
@@ -19257,7 +19417,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -19273,7 +19433,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr "Unelte Animație"
#: platform/android/export/export_plugin.cpp
@@ -19282,15 +19442,13 @@ msgid "Creating APK..."
msgstr "Crearea conturilor..."
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
-msgstr ""
+#, fuzzy
+msgid "Could not find template APK to export: \"%s\"."
+msgstr "Nu s-a putut porni subprocesul!"
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -19302,7 +19460,7 @@ msgstr "Se adaugă %s..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr "Nu s-a putut porni subprocesul!"
#: platform/android/export/export_plugin.cpp
@@ -19544,6 +19702,17 @@ msgstr "Creează Nod"
msgid "Custom BG Color"
msgstr "Creează Nod"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "Gestionați șabloanele"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Șablonul personalizat de lansare nu a fost găsit."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -19565,23 +19734,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Execută HTML-ul exportat în browserul prestabilit al sistemului."
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
-msgstr ""
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
+msgstr "Directorul nu a putut fi creat."
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
-msgstr ""
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
+msgstr "Trebuie să utilizaţi o extensie valida."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr ""
+#, fuzzy
+msgid "Could not write file: \"%s\"."
+msgstr "Nu s-a putut încărca fișierul la:"
+
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Setează Mâner"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read file:"
+msgid "Could not read file: \"%s\"."
msgstr "Nu s-a putut încărca fișierul la:"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "Enumerări:"
@@ -19657,17 +19838,17 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr "Nu s-a putut încărca fișierul la:"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr "Directorul nu a putut fi creat."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr "Eroare la scrierea TextFile:"
#: platform/javascript/export/export.cpp
@@ -19965,9 +20146,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Nu s-a putut porni subprocesul!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "Nu s-a putut porni subprocesul!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Creează un Mesh de Navigare"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19983,18 +20183,74 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "Nu s-a găsit nici o sub-resursă."
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Eroare la salvarea filei: %s"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Direcții"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "Nu s-a putut porni subprocesul!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "Creând Thumbnail"
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
-msgstr ""
+#, fuzzy
+msgid "Could not find template app to export: \"%s\"."
+msgstr "Nu s-a putut porni subprocesul!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Cale nevalidă."
#: platform/osx/export/export.cpp
msgid ""
@@ -20004,7 +20260,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -20046,6 +20302,15 @@ msgstr ""
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "ZIP Creation"
+msgstr "Proiect"
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Invalid bundle identifier:"
msgstr "Identificator nevalid:"
@@ -20360,6 +20625,11 @@ msgid "Debug Algorithm"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Nu pot sterge fișierul temporar:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20406,6 +20676,66 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Rotație aleatorie:"
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Identificator nevalid:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Nume nevalid."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "Nu pot sterge fișierul temporar:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20427,6 +20757,23 @@ msgid "Invalid product version:"
msgstr "Nume de Proiect Nevalid."
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Trebuie să utilizaţi o extensie valida."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "Fereastră Nouă"
@@ -20443,6 +20790,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20565,7 +20916,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Instanță"
@@ -21388,13 +21740,16 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
+msgid "Navpoly"
msgstr ""
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Centrează Selecția"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Travel Cost"
msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
@@ -22567,12 +22922,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
#, fuzzy
msgid "NavMesh"
@@ -25204,6 +25553,16 @@ msgid "3D Physics"
msgstr "Cadru Fizic %"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Creează un Mesh de Navigare"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Creează un Mesh de Navigare"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -26612,7 +26971,7 @@ msgstr "Transmisie"
msgid "Refraction"
msgstr "Enumerări:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -26694,7 +27053,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "Dimensiune:"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "Modificare tip bază:"
#: scene/resources/navigation_mesh.cpp
@@ -26712,10 +27076,15 @@ msgid "Source Group Name"
msgstr "Resursă"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "Conținut:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -26724,11 +27093,16 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Regions"
+msgstr "Regiunea"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26741,6 +27115,11 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Details"
+msgstr "Încărcați Implicit"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -26757,7 +27136,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -27165,6 +27544,11 @@ msgid "Scenario"
msgstr "Scenă"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Creează un Mesh de Navigare"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -27182,6 +27566,26 @@ msgstr "Stânga liniară"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Implicit"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Previzualizare"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Se Testează"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Modifică Conexiunea:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/ru.po b/editor/translations/ru.po
index 8b4b2a689a..b920136351 100644
--- a/editor/translations/ru.po
+++ b/editor/translations/ru.po
@@ -120,7 +120,7 @@ msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-05-30 16:17+0000\n"
+"PO-Revision-Date: 2022-06-12 13:19+0000\n"
"Last-Translator: FuzzMix <fmwolfiechad@gmail.com>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/godot-engine/"
"godot/ru/>\n"
@@ -314,9 +314,10 @@ msgid "Data"
msgstr "Данные"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr "Сеть"
@@ -422,8 +423,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "ÐедоÑтаточно байтов Ð´Ð»Ñ Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð±Ð°Ð¹Ñ‚Ð¾Ð² или неверный формат."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
-msgstr "Ðекорректный ввод %i (не подходит) в выражении"
+msgid "Invalid input %d (not passed) in expression"
+msgstr "Ðекорректный ввод %d (не подходит) в выражении"
#: core/math/expression.cpp
msgid "self can't be used because instance is null (not passed)"
@@ -467,6 +468,16 @@ msgstr "Очередь Ñообщений"
msgid "Max Size (KB)"
msgstr "МакÑимальный размер (КБ)"
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Режим перемещениÑ"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "Удалить вход"
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -646,7 +657,8 @@ msgstr "ОпиÑание"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "ЗапуÑтить"
@@ -729,6 +741,10 @@ msgid "Main Run Args"
msgstr "ОÑновные аргументы запуÑка"
#: core/project_settings.cpp
+msgid "Scene Naming"
+msgstr "Именование Ñцен"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr "ИÑкать в раÑширениÑÑ… файлов"
@@ -736,18 +752,15 @@ msgstr "ИÑкать в раÑширениÑÑ… файлов"
msgid "Script Templates Search Path"
msgstr "Путь поиÑка шаблонов Ñкриптов"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Контроль верÑий"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+#, fuzzy
+msgid "Version Control Autoload On Startup"
msgstr "Ðвтозагрузка при запуÑке"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Ðазвание плагина"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Контроль верÑий"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -854,7 +867,8 @@ msgid "Quality"
msgstr "КачеÑтво"
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
msgid "Filters"
msgstr "Фильтры"
@@ -1121,6 +1135,7 @@ msgstr "Ð’Ñ‹Ñокое качеÑтво"
msgid "Blend Shape Max Buffer Size (KB)"
msgstr "МакÑимальный размер буфера ÑÐ¼ÐµÑˆÐ¸Ð²Ð°Ð½Ð¸Ñ Ñ„Ð¾Ñ€Ð¼ (KB)"
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "ОÑвободить"
@@ -1137,7 +1152,7 @@ msgstr "Отразить"
msgid "Time:"
msgstr "ВремÑ:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Значение:"
@@ -1253,14 +1268,12 @@ msgid "Stream"
msgstr "Поток"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Start Offset"
-msgstr "Смещение поворота"
+msgstr "Ðачальное Ñмещение"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "End Offset"
-msgstr "Г Ñмещение"
+msgstr "Конечное Ñмещение"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
#: editor/import/resource_importer_scene.cpp
@@ -1384,8 +1397,66 @@ msgid "Remove this track."
msgstr "Удалить Ñту дорожку."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
-msgstr "Ð’Ñ€ÐµÐ¼Ñ (Ñек.): "
+msgid "Time (s):"
+msgstr "Ð’Ñ€ÐµÐ¼Ñ (Ñек.):"
+
+#: editor/animation_track_editor.cpp
+msgid "Position:"
+msgstr "ПозициÑ:"
+
+#: editor/animation_track_editor.cpp
+msgid "Rotation:"
+msgstr "Поворот:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "МаÑштаб:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "Тип:"
+
+#: editor/animation_track_editor.cpp
+msgid "(Invalid, expected type: %s)"
+msgstr "(Ðеверный, ожидаемый тип: %s)"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Easing:"
+msgstr "Переход В-ИЗ"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "In-Handle:"
+msgstr "Задать обработчик"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Out-Handle:"
+msgstr "Задать обработчик"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "Поток"
+
+#: editor/animation_track_editor.cpp
+msgid "Start (s):"
+msgstr "Ðачало (Ñек.):"
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr "Конец (Ñек.):"
+
+#: editor/animation_track_editor.cpp
+msgid "Animation Clip:"
+msgstr "Клип Ðнимации:"
#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
@@ -1599,8 +1670,8 @@ msgid "Add Method Track Key"
msgstr "Добавить ключ дорожки Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð°"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
-msgstr "В объекте нет такого метода: "
+msgid "Method not found in object:"
+msgstr "В объекте нет такого метода:"
#: editor/animation_track_editor.cpp
msgid "Anim Move Keys"
@@ -2210,8 +2281,8 @@ msgid "Open"
msgstr "Открыть"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Владельцы:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
msgid ""
@@ -2512,7 +2583,7 @@ msgid "Bus Options"
msgstr "Параметры шины"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Дублировать"
@@ -2564,9 +2635,9 @@ msgstr "Открыть раÑкладку звуковой шины"
msgid "There is no '%s' file."
msgstr "Файла «%s» не ÑущеÑтвует."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
-msgstr "Макет"
+#: editor/editor_audio_buses.cpp
+msgid "Layout:"
+msgstr "Макет:"
#: editor/editor_audio_buses.cpp
msgid "Invalid file, not an audio bus layout."
@@ -2768,6 +2839,25 @@ msgid "Choose"
msgstr "Выбрать"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "Завершать пути файлов"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "Пакет уÑпешно уÑтановлен!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "Ðе удалоÑÑŒ:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Сохранение файла:"
@@ -2780,6 +2870,31 @@ msgid "Packing"
msgstr "Упаковывание"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Сохранить как"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "Ðевозможно Ñоздать папку."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Ðе удалоÑÑŒ ÑкÑпортировать файлы проекта"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Ðевозможно открыть файл Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Сохранить как"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2895,11 +3010,33 @@ msgstr "ПользовательÑкий отладочный шаблон не
msgid "Custom release template not found."
msgstr "ПользовательÑкий релизный шаблон не найден."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "Управление шаблонами"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "Данный путь ÑкÑпорта не ÑущеÑтвует:"
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "Файл шаблона не найден:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "Ðеверный шаблон ÑкÑпорта:"
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+#, fuzzy
+msgid "PCK Embedding"
+msgstr "ОтÑтуп"
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr ""
"Ðа 32-Ñ… битных ÑиÑтемах вÑтроенный PCK файл не может быть больше 4 Гбит."
@@ -3075,9 +3212,9 @@ msgid "Import"
msgstr "Импорт"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "ЭкÑпорт"
@@ -4228,14 +4365,6 @@ msgstr ""
"Ðевозможно запиÑать в файл «%s», файл иÑпользуетÑÑ, заблокирован или "
"отÑутÑтвуют разрешениÑ."
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Сцена"
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr "Именование Ñцен"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4350,6 +4479,10 @@ msgid "Default Color Picker Mode"
msgstr "Режим выбора цвета по умолчанию"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Контроль верÑий"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ"
@@ -4377,6 +4510,10 @@ msgstr "Переключить режим без отвлечениÑ."
msgid "Add a new scene."
msgstr "Добавить новую Ñцену."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Сцена"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Перейти к предыдущей открытой Ñцене."
@@ -5062,12 +5199,14 @@ msgid "Selected node is not a Viewport!"
msgstr "Выбранный узел не Viewport!"
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr "Размер: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
+msgstr "Размер:"
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr "Страница: "
+msgid "Page:"
+msgstr "Страница:"
#: editor/editor_properties_array_dict.cpp
#: editor/plugins/theme_editor_plugin.cpp
@@ -5163,6 +5302,11 @@ msgstr ""
"ПожалуйÑта, добавьте активный преÑет в меню ÑкÑпорта или пометьте "
"ÑущеÑтвующий преÑет как активный."
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Проект"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Пишите ваш код в методе _run()."
@@ -5417,7 +5561,9 @@ msgid "Draw Spaces"
msgstr "РиÑовать пробелы"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr "ÐавигациÑ"
@@ -5949,10 +6095,12 @@ msgstr "ХоÑÑ‚"
msgid "Port"
msgstr "Порт"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Менеджер проектов"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Sorting Order"
msgstr "ПорÑдок Ñортировки"
@@ -6702,14 +6850,6 @@ msgid "Replace in Files"
msgstr "Заменить в файлах"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "Ðайти: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "Заменить: "
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr "Заменить вÑÑ‘ (ÐЕЛЬЗЯ ОТМЕÐИТЬ)"
@@ -6835,7 +6975,7 @@ msgstr "Повторить"
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
msgid "Filter"
msgstr "Фильтр"
@@ -7069,8 +7209,8 @@ msgid "Generating Lightmaps"
msgstr "Создание карт оÑвещениÑ"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
-msgstr "Создание Ð´Ð»Ñ Ð¿Ð¾Ð»Ð¸Ñетки: "
+msgid "Generating for Mesh:"
+msgstr "Создание Ð´Ð»Ñ Ð¿Ð¾Ð»Ð¸Ñетки:"
#: editor/import/resource_importer_scene.cpp
msgid "Running Custom Script..."
@@ -7097,6 +7237,18 @@ msgid "Saving..."
msgstr "Сохранение..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr "2D, Обнаружение 3D"
@@ -7893,10 +8045,12 @@ msgstr "Параметры режима кальки"
msgid "Directions"
msgstr "ÐаправлениÑ"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "Прошлые"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "Будущие"
@@ -8056,8 +8210,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr "УÑтановите конец анимации. Полезно Ð´Ð»Ñ Ð²Ñпомогательных переходов."
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
-msgstr "Переход: "
+msgid "Transition:"
+msgstr "Переход:"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Play Mode:"
@@ -8073,11 +8227,6 @@ msgid "New name:"
msgstr "Ðовое имÑ:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "МаÑштаб:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "ПроÑвление (Ñек.):"
@@ -8982,6 +9131,7 @@ msgstr "Сделать пользовательÑкие коÑть(и) от уз
msgid "Clear Custom Bones"
msgstr "ОчиÑтить пользовательÑкие коÑти"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9045,6 +9195,10 @@ msgid "Preview Canvas Scale"
msgstr "ПредпроÑмотр маÑштаба холÑта"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "Макет"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr "МаÑка транÑформации Ð´Ð»Ñ Ð²Ñтавки ключей."
@@ -9811,8 +9965,8 @@ msgid "Volume"
msgstr "Объём"
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr "ИÑточник излучениÑ: "
+msgid "Emission Source:"
+msgstr "ИÑточник излучениÑ:"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
@@ -10045,6 +10199,7 @@ msgid "Points"
msgstr "Точки"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr "Полигоны"
@@ -10201,13 +10356,6 @@ msgid "Instance:"
msgstr "ЭкземплÑÑ€:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "Тип:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr "Открыть в редакторе"
@@ -10216,10 +10364,6 @@ msgstr "Открыть в редакторе"
msgid "Load Resource"
msgstr "Загрузить реÑурÑ"
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr "Предзагрузчик реÑурÑов"
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr "Перевернуть порталы"
@@ -10914,13 +11058,15 @@ msgstr "Повернуть"
msgid "Translate"
msgstr "Сдвинуть"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr "МаÑштаб: "
+msgid "Scaling:"
+msgstr "МаÑштаб:"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr "Перемещение: "
+msgid "Translating:"
+msgstr "Перемещение:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -10943,11 +11089,6 @@ msgid "Yaw:"
msgstr "РыÑкание:"
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr "Размер:"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr "ОтриÑовано объектов:"
@@ -11436,7 +11577,8 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr "ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð³ÐµÐ¾Ð¼ÐµÑ‚Ñ€Ð¸Ñ, не может быть заменена полиÑеткой."
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+#, fuzzy
+msgid "Convert to MeshInstance2D"
msgstr "Преобразовать в Mesh2D"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11469,16 +11611,16 @@ msgid "Sprite"
msgstr "Спрайт"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr "Упрощение: "
+msgid "Simplification:"
+msgstr "Упрощение:"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
-msgstr "Сжатие (пикÑели): "
+msgid "Shrink (Pixels):"
+msgstr "Сжатие (пикÑели):"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
-msgstr "РоÑÑ‚ (пикÑели): "
+msgid "Grow (Pixels):"
+msgstr "РоÑÑ‚ (пикÑели):"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Update Preview"
@@ -12420,8 +12562,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr "Выберите предыдущую форму, Ñлемент тайла или тайл."
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr "Регион"
@@ -12711,7 +12852,6 @@ msgid "This property can't be changed."
msgstr "Это ÑвойÑтво не может быть изменено."
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Snap Options"
msgstr "Параметры привÑзки"
@@ -12740,9 +12880,8 @@ msgid "Separation"
msgstr "Разделение"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Selected Tile"
-msgstr "Выделение"
+msgstr "Ð’Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð°Ñ Ð¿Ð»Ð¸Ñ‚ÐºÐ°"
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/light_2d.cpp scene/2d/line_2d.cpp scene/2d/mesh_instance_2d.cpp
@@ -12771,9 +12910,8 @@ msgid "Modulate"
msgstr "МодулÑциÑ"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Tile Mode"
-msgstr "Режим отображениÑ"
+msgstr "Режим плитки"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
@@ -13925,47 +14063,23 @@ msgstr "Ðктивный"
#: editor/project_export.cpp
msgid "Export the project for all the presets defined."
-msgstr ""
+msgstr "ЭкÑпортируйте проект Ð´Ð»Ñ Ð²Ñех заданных предуÑтановок."
#: editor/project_export.cpp
msgid "All presets must have an export path defined for Export All to work."
msgstr ""
+"Ð”Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ функции \"ЭкÑпортировать вÑе\" у вÑех предуÑтановок должен быть "
+"определен путь ÑкÑпорта."
#: editor/project_export.cpp
msgid "Delete preset '%s'?"
msgstr "Удалить преÑет «%s»?"
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-"Ðе удалоÑÑŒ ÑкÑпортировать проект Ð´Ð»Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ñ‹ «%s».\n"
-"Шаблоны ÑкÑпорта отÑутÑтвуют или недейÑтвительны."
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-"Ðе удалоÑÑŒ ÑкÑпортировать проект Ð´Ð»Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ñ‹ «%s».\n"
-"Это может быть ÑвÑзано Ñ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð¾Ð¹ конфигурации в предуÑтановке ÑкÑпорта или "
-"наÑтройках ÑкÑпорта."
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "ЭкÑпорт вÑех"
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr "Данный путь ÑкÑпорта не ÑущеÑтвует:"
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr "Шаблоны ÑкÑпорта Ð´Ð»Ñ Ñтой платформы отÑутÑтвуют/повреждены:"
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr "Путь ÑкÑпорта"
@@ -14113,6 +14227,11 @@ msgid "Export templates for this platform are missing:"
msgstr "Шаблоны ÑкÑпорта Ð´Ð»Ñ Ñтой платформы отÑутÑтвуют:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "ОÑнователи проекта"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "Управление шаблонами ÑкÑпорта"
@@ -15659,7 +15778,8 @@ msgid "Attach Node Script"
msgstr "Прикрепить Ñкрипт"
#: editor/script_editor_debugger.cpp
-msgid "Remote "
+#, fuzzy
+msgid "Remote %s:"
msgstr "Удаленный "
#: editor/script_editor_debugger.cpp
@@ -16476,7 +16596,7 @@ msgstr "Стороны кольца"
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
msgid "Polygon"
msgstr "Полигон"
@@ -16636,7 +16756,8 @@ msgid "Disabled GDNative Singleton"
msgstr "Выключен GDNative Ñинглтон"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+#, fuzzy
+msgid "Libraries:"
msgstr "Библиотеки: "
#: modules/gdnative/nativescript/nativescript.cpp
@@ -16955,7 +17076,7 @@ msgstr ""
#: modules/gltf/gltf_state.cpp
msgid "Json"
-msgstr ""
+msgstr "Json"
#: modules/gltf/gltf_state.cpp
msgid "Major Version"
@@ -17017,9 +17138,8 @@ msgid "Skeletons"
msgstr "Скелеты"
#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Skeleton To Node"
-msgstr "Выбрать узел"
+msgstr "Скелет в узел"
#: modules/gltf/gltf_state.cpp
msgid "Animations"
@@ -17042,7 +17162,6 @@ msgid "Use In Baked Light"
msgstr "ИÑпользовать в запечённом Ñвете"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr "Ячейка"
@@ -17071,6 +17190,19 @@ msgstr "По центру"
msgid "Mask"
msgstr "МаÑка"
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "ÐавигациÑ"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "ЧувÑтвительноÑть навигации"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ð¿Ð¾ÑкоÑть"
@@ -17480,7 +17612,8 @@ msgstr ""
"памÑти! ИÑправьте узел пожалуйÑта."
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+#, fuzzy
+msgid "Node returned an invalid sequence output:"
msgstr "Узел вернул ошибочную поÑледовательноÑть: "
#: modules/visual_script/visual_script.cpp
@@ -17489,7 +17622,8 @@ msgstr ""
"Ðайдена поÑледовательноÑть бит, но не узел в Ñтеке, Ñообщение об ошибке!"
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+#, fuzzy
+msgid "Stack overflow with stack depth:"
msgstr "Переполнение Ñтека Ñ Ð³Ð»ÑƒÐ±Ð¸Ð½Ð¾Ð¹ Ñтека: "
#: modules/visual_script/visual_script.cpp
@@ -17857,7 +17991,8 @@ msgid "for (elem) in (input):"
msgstr "Ð´Ð»Ñ (Ñлемент) в (вход):"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+#, fuzzy
+msgid "Input type not iterable:"
msgstr "Входной тип не итерируемый: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17865,7 +18000,8 @@ msgid "Iterator became invalid"
msgstr "Итератор Ñтал недейÑтвительным"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+#, fuzzy
+msgid "Iterator became invalid:"
msgstr "Итератор Ñтал недейÑтвительным: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18020,11 +18156,13 @@ msgid "Operator"
msgstr "Оператор"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
+#, fuzzy
+msgid "Invalid argument of type:"
msgstr ": ÐедопуÑтимый аргумент типа: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
+#, fuzzy
+msgid "Invalid arguments:"
msgstr ": ÐедопуÑтимые аргументы: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18036,11 +18174,13 @@ msgid "Var Name"
msgstr "Ð˜Ð¼Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+#, fuzzy
+msgid "VariableGet not found in script:"
msgstr "VariableGet не найден в Ñкрипте: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+#, fuzzy
+msgid "VariableSet not found in script:"
msgstr "VariableSet не найден в Ñкрипте: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18570,10 +18710,6 @@ msgid "Could not execute on device."
msgstr "Ðе удалоÑÑŒ выполнить на уÑтройÑтве."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr "Ðе удалоÑÑŒ найти инÑтрумент «apksigner»."
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18702,12 +18838,17 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr "ВерÑÐ¸Ñ Â«Target Sdk» должна быть больше или равна верÑии «Min Sdk»."
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "ПодпиÑÑŒ кода DMG"
+
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
"Ðе удалоÑÑŒ найти команду «apksigner».\n"
"ПожалуйÑта, проверьте наличие программы в каталоге Android SDK build-tools.\n"
@@ -18726,6 +18867,11 @@ msgid "Could not find keystore, unable to export."
msgstr "Ðе удалоÑÑŒ найти хранилище ключей, невозможно ÑкÑпортировать."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "Ðе удаётÑÑ Ð·Ð°Ð¿ÑƒÑтить подпроцеÑÑ!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr "«apksigner» завершилÑÑ Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹ #%d"
@@ -18754,7 +18900,8 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "Ðеверное Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°! Android APK требует раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ *.apk."
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+#, fuzzy
+msgid "Unsupported export format!"
msgstr "Ðеподдерживаемый формат ÑкÑпорта!\n"
#: platform/android/export/export_plugin.cpp
@@ -18766,10 +18913,9 @@ msgstr ""
"не ÑущеÑтвует. ПожалуйÑта, переуÑтановите из меню «Проект»."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
"ÐеÑоответÑтвие верÑии Ñборки Android:\n"
@@ -18778,13 +18924,15 @@ msgstr ""
"ПожалуйÑта, переуÑтановите шаблон Ñборки Android из меню «Проект»."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
"Ðевозможно перезапиÑать файлы res://android/build/res/*.xml Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ проекта"
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+#, fuzzy
+msgid "Could not export project files to gradle project."
msgstr "Ðе удалоÑÑŒ ÑкÑпортировать файлы проекта в проект gradle\n"
#: platform/android/export/export_plugin.cpp
@@ -18796,8 +18944,9 @@ msgid "Building Android Project (gradle)"
msgstr "Сборка проекта Android (gradle)"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
"Сборка проекта Android не удалаÑÑŒ, проверьте вывод на ошибки.\n"
@@ -18817,7 +18966,8 @@ msgstr ""
"проекта gradle на наличие выходных данных."
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+#, fuzzy
+msgid "Package not found: \"%s\"."
msgstr "Пакет не найден: %s"
#: platform/android/export/export_plugin.cpp
@@ -18825,17 +18975,16 @@ msgid "Creating APK..."
msgstr "Создание APK..."
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+#, fuzzy
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
"Ðе удалоÑÑŒ найти шаблон APK Ð´Ð»Ñ ÑкÑпорта:\n"
"%s"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -18848,7 +18997,8 @@ msgid "Adding files..."
msgstr "Добавление файлов..."
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+#, fuzzy
+msgid "Could not export project files."
msgstr "Ðе удалоÑÑŒ ÑкÑпортировать файлы проекта"
#: platform/android/export/export_plugin.cpp
@@ -19087,6 +19237,17 @@ msgstr "ПользовательÑкий цвет"
msgid "Custom BG Color"
msgstr "ПользовательÑкий цвет"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "Управление шаблонами"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "ПользовательÑкий релизный шаблон не найден."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr "App Store Team ID не указан - невозможно наÑтроить проект."
@@ -19108,22 +19269,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr "ЗапуÑтить HTML в ÑиÑтемном браузере по умолчанию."
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
msgstr "Ðе удалоÑÑŒ открыть шаблон Ð´Ð»Ñ ÑкÑпорта:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
msgstr "Ðеверный шаблон ÑкÑпорта:"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+#, fuzzy
+msgid "Could not write file: \"%s\"."
msgstr "Ðе удалоÑÑŒ запиÑать файл:"
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Задать отÑтуп"
+
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+#, fuzzy
+msgid "Could not read file: \"%s\"."
msgstr "Ðе удалоÑÑŒ прочитать файл:"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "Ð’Ð°Ñ€Ð¸Ð°Ñ†Ð¸Ñ Ð¾Ñ‚Ñ‚ÐµÐ½ÐºÐ°"
@@ -19198,15 +19372,18 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+#, fuzzy
+msgid "Could not read HTML shell: \"%s\"."
msgstr "Ðе удалоÑÑŒ прочитать HTML-оболочку:"
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+#, fuzzy
+msgid "Could not create HTTP server directory: %s."
msgstr "Ðе удалоÑÑŒ Ñоздать каталог HTTP-Ñервера:"
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+#, fuzzy
+msgid "Error starting HTTP server: %d."
msgstr "Ошибка запуÑка HTTP-Ñервера:"
#: platform/javascript/export/export.cpp
@@ -19498,9 +19675,29 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Ðе удалоÑÑŒ ÑкÑпортировать файлы проекта"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "Ðе удаётÑÑ Ð·Ð°Ð¿ÑƒÑтить подпроцеÑÑ!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "ЛокализациÑ"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
"Примечание: ПроцеÑÑ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð¾Ð±Ñ‹Ñ‡Ð½Ð¾ занимает менее чаÑа. Когда процеÑÑ "
"завершитÑÑ, вы получите Ñлектронное пиÑьмо."
@@ -19522,18 +19719,80 @@ msgstr ""
"ÑкÑпортированному приложению (необÑзательно):"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr "Временные метки не ÑовмеÑтимы Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñью ad-hoc и будут отключены!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+"Ð—Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ð°Ñ Ñреда Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð½ÐµÑовмеÑтима Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñью ad-hoc и будет отключена!"
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
msgid "No identity found."
msgstr "Identity не найдена."
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Ошибка при Ñохранении файла: %s"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+"ОтноÑительные ÑимволичеÑкие ÑÑылки не поддерживаютÑÑ Ð² Ñтой ОС, "
+"ÑкÑпортируемый проект может быть повреждён!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Ðаправление"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "Ðе удаётÑÑ Ð·Ð°Ð¿ÑƒÑтить подпроцеÑÑ!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Creating app bundle"
msgstr "Создание пакета приложениÑ"
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+#, fuzzy
+msgid "Could not find template app to export: \"%s\"."
msgstr "Ðе удалоÑÑŒ найти шаблон Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÑкÑпорта:"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Ðеверный шаблон ÑкÑпорта:"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -19542,8 +19801,9 @@ msgstr ""
"ÑкÑпортируемый проект может быть повреждён!"
#: platform/osx/export/export.cpp
+#, fuzzy
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
"Запрошенный двоичный файл шаблона «%s» не найден. Он может отÑутÑтвовать в "
@@ -19590,6 +19850,16 @@ msgid "Sending archive for notarization"
msgstr "Отправка архива Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "ПроекциÑ"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr "Ðе удалоÑÑŒ ÑкÑпортировать файлы проекта в проект gradle\n"
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr "Ðеверный идентификатор пакета:"
@@ -19927,6 +20197,11 @@ msgid "Debug Algorithm"
msgstr "Отладчик"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Ðевозможно удалить временный файл:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -19972,6 +20247,76 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Ð’Ñплывающее уведомление"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "Ðе удалоÑÑŒ найти хранилище ключей, невозможно ÑкÑпортировать."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "Ðе удалоÑÑŒ найти хранилище ключей, невозможно ÑкÑпортировать."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+"ИнÑтрумент rcedit должен быть наÑтроен в ÐаÑтройках редактора (Export > "
+"Windows > Rcedit) Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð·Ð½Ð°Ñ‡ÐºÐ° или информационных данных приложениÑ."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "Ðе удалоÑÑŒ найти хранилище ключей, невозможно ÑкÑпортировать."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "Ðе удалоÑÑŒ найти хранилище ключей, невозможно ÑкÑпортировать."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Ðеверный идентификатор:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "ÐедопуÑтимое имÑ."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+"ИнÑтрумент rcedit должен быть наÑтроен в ÐаÑтройках редактора (Export > "
+"Windows > Rcedit) Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð·Ð½Ð°Ñ‡ÐºÐ° или информационных данных приложениÑ."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "Ðевозможно удалить временный файл:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19992,6 +20337,23 @@ msgid "Invalid product version:"
msgstr "ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ð¿Ñ€Ð¾Ð´ÑƒÐºÑ‚Ð°:"
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "ÐедопуÑтимый иÑполнÑемый файл."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Windows"
msgstr "Windows"
@@ -20007,6 +20369,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
msgid "Frames"
@@ -20130,7 +20496,8 @@ msgstr "Поток приоÑтановлен"
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr "МакÑимальное раÑÑтоÑние"
@@ -20976,17 +21343,19 @@ msgstr ""
"ПожалуйÑта, уÑтановите ÑвойÑтво или нариÑуйте многоугольник."
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-"NavigationPolygonInstance должен быть ребёнком или внуком узла Navigation2D. "
-"Он предоÑтавлÑет только навигационные данные."
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr ""
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Внизу поÑередине"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "ПеремеÑтитÑÑ"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
#, fuzzy
@@ -21734,9 +22103,8 @@ msgid "Custom Sky"
msgstr "ПользовательÑкое небо"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Custom Sky Rotation Degrees"
-msgstr "ПользовательÑкие градуÑÑ‹ Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð½ÐµÐ±Ð°"
+msgstr "ПользовательÑкие ГрадуÑÑ‹ Ð’Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ðеба"
#: scene/3d/baked_lightmap.cpp scene/3d/ray_cast.cpp
msgid "Custom Color"
@@ -21747,9 +22115,8 @@ msgid "Custom Energy"
msgstr "ПользовательÑÐºÐ°Ñ ÑнергиÑ"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Min Light"
-msgstr "ОтÑтуп вправо"
+msgstr "Минимальный Свет"
#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
#, fuzzy
@@ -21766,9 +22133,8 @@ msgid "Light Data"
msgstr "С данными"
#: scene/3d/bone_attachment.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Bone Name"
-msgstr "Ð˜Ð¼Ñ ÐºÐ¾Ñти"
+msgstr "Ð˜Ð¼Ñ ÐšÐ¾Ñти"
#: scene/3d/camera.cpp
msgid "Keep Aspect"
@@ -21784,9 +22150,8 @@ msgid "Doppler Tracking"
msgstr "Трек параметра"
#: scene/3d/camera.cpp
-#, fuzzy
msgid "Projection"
-msgstr "Проект"
+msgstr "ПроекциÑ"
#: scene/3d/camera.cpp
msgid "FOV"
@@ -21798,13 +22163,12 @@ msgid "Frustum Offset"
msgstr "Смещение уÑеченного конуÑа"
#: scene/3d/camera.cpp
-#, fuzzy
msgid "Near"
-msgstr "Ближайшие"
+msgstr "Близко"
#: scene/3d/camera.cpp
msgid "Far"
-msgstr ""
+msgstr "Далеко"
#: scene/3d/camera.cpp scene/3d/collision_polygon.cpp scene/3d/spring_arm.cpp
#: scene/gui/control.cpp scene/resources/default_theme/default_theme.cpp
@@ -21815,18 +22179,16 @@ msgid "Margin"
msgstr "ОтÑтуп"
#: scene/3d/camera.cpp
-#, fuzzy
msgid "Clip To"
-msgstr "Обрезать Ñверху"
+msgstr "Обрезать До"
#: scene/3d/collision_object.cpp scene/3d/soft_body.cpp
msgid "Ray Pickable"
msgstr ""
#: scene/3d/collision_object.cpp
-#, fuzzy
msgid "Capture On Drag"
-msgstr "Захват"
+msgstr "Захват При ПеретаÑкивании"
#: scene/3d/collision_object.cpp
msgid ""
@@ -21902,24 +22264,20 @@ msgid "Box Extents"
msgstr "Гизмо"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-#, fuzzy
msgid "Ring Radius"
-msgstr "МаÑка излучениÑ"
+msgstr "Ð Ð°Ð´Ð¸ÑƒÑ ÐšÐ¾Ð»ÑŒÑ†Ð°"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-#, fuzzy
msgid "Ring Inner Radius"
-msgstr "Изменение внутреннего радиуÑа полукруга"
+msgstr "Внутренний Ð Ð°Ð´Ð¸ÑƒÑ ÐšÐ¾Ð»ÑŒÑ†Ð°"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-#, fuzzy
msgid "Ring Height"
-msgstr "Повернуть вправо"
+msgstr "Ð’Ñ‹Ñота Кольца"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-#, fuzzy
msgid "Ring Axis"
-msgstr "ПредупреждениÑ"
+msgstr "ОÑÑŒ Кольца"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
#, fuzzy
@@ -22194,14 +22552,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr "NavigationAgent можно иÑпользовать только под узлом Spatial."
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-"NavigationMeshInstance должен быть дочерним или под-дочерним узлом "
-"Navigation. Он предоÑтавлÑет только навигационные данные."
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
#, fuzzy
msgid "NavMesh"
@@ -24908,6 +25258,16 @@ msgid "3D Physics"
msgstr "Физика"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "ÐавигациÑ"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "ÐавигациÑ"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -26310,7 +26670,7 @@ msgstr "ПропуÑкание Ñвета"
msgid "Refraction"
msgstr "Преломление"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr "Деталь"
@@ -26395,7 +26755,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "МаÑштаб:"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "Задать базовый тип вариации"
#: scene/resources/navigation_mesh.cpp
@@ -26412,8 +26777,14 @@ msgid "Source Group Name"
msgstr "Ðазвание группы-иÑточника"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
-msgstr ""
+#, fuzzy
+msgid "Cells"
+msgstr "Ячейка"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "Сегменты"
#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
@@ -26425,11 +26796,17 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Regions"
+msgstr "Регион"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Merge Size"
msgstr "СлиÑние из Сцены"
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+#, fuzzy
+msgid "Edges"
msgstr "Край"
#: scene/resources/navigation_mesh.cpp
@@ -26443,6 +26820,11 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Details"
+msgstr "Деталь"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Sample Distance"
msgstr "РаÑÑтоÑние образца"
@@ -26460,7 +26842,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -26510,24 +26892,20 @@ msgid "Point Texture"
msgstr "ТекÑтура точки"
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Normal Texture"
-msgstr "ÐžÐ±Ñ‹Ñ‡Ð½Ð°Ñ Ñ‚ÐµÐºÑтура"
+msgstr "Ðормаль ТекÑтура"
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Color Texture"
-msgstr "Тема редактора"
+msgstr "ТекÑтура Цвета"
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Point Count"
-msgstr "Добавить входной порт"
+msgstr "КоличеÑтво Точек"
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Scale Random"
-msgstr "Случайный маÑштаб"
+msgstr "Случайный МаÑштаб"
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -26860,6 +27238,11 @@ msgid "Scenario"
msgstr "Сцена"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "ÐавигациÑ"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -26876,6 +27259,26 @@ msgstr "Левый линейный"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Шаг по умолчанию плавающих чиÑел"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Размер Ñчейки"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "ТеÑтируемые"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Пограничное Ñоединение"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr "ХолÑÑ‚"
diff --git a/editor/translations/si.po b/editor/translations/si.po
index cab2f360b4..d28d0a4f81 100644
--- a/editor/translations/si.po
+++ b/editor/translations/si.po
@@ -207,9 +207,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr ""
@@ -318,7 +319,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "විකේතන à¶¶à·’à¶§à·” සදහ෠ප්â€à¶»à¶¸à·à¶«à·€à¶­à·Š à¶¶à·’à¶§à·” නොමà·à¶­, à·„à· à·€à·à¶»à¶¯à·’ ආකෘතියක්."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "à·€à·à¶»à¶¯à·’ ආදà·à¶±à¶ºà¶šà·Š %i (යà·à·€à·’ය නොහà·à¶­)"
#: core/math/expression.cpp
@@ -362,6 +364,15 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
+#: core/os/input.cpp
+msgid "Use Accumulated Input"
+msgstr ""
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -544,7 +555,8 @@ msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr ""
@@ -628,24 +640,23 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-msgid "Plugin Name"
+msgid "Version Control Plugin Name"
msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
@@ -754,7 +765,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
msgid "Filters"
msgstr ""
@@ -1023,6 +1035,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "නිදහස්"
@@ -1039,7 +1052,7 @@ msgstr "à¶šà·à¶©à¶´à¶­"
msgid "Time:"
msgstr "à¶šà·à¶½à¶º:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "වටිනà·à¶šà¶¸:"
@@ -1292,10 +1305,70 @@ msgid "Remove this track."
msgstr "මෙම ලුහුබදින්න෠ඉවත් කරන්න."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "à¶šà·à¶½à¶º (à¶­à¶­à·Š): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "à·à·Šâ€à¶»à·’à¶­:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "%s වර්ගය %s මූල වර්ගය සදහ෠වà·à¶»à¶¯à·’ සුචියක්"
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Stream:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "à·à·Šâ€à¶»à·’à¶­:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr ""
@@ -1516,7 +1589,7 @@ msgid "Add Method Track Key"
msgstr "ඇමතීම් à¶šà·Šâ€à¶»à¶¸à¶º ලුහුබදින්න"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+msgid "Method not found in object:"
msgstr ""
#: editor/animation_track_editor.cpp
@@ -2111,7 +2184,7 @@ msgid "Open"
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
+msgid "Owners of: %s (Total: %d)"
msgstr ""
#: editor/dependency_editor.cpp
@@ -2403,7 +2476,7 @@ msgid "Bus Options"
msgstr "à·à·Šâ€à¶»à·’à¶­:"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr ""
@@ -2455,8 +2528,8 @@ msgstr ""
msgid "There is no '%s' file."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+msgid "Layout:"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -2659,6 +2732,22 @@ msgid "Choose"
msgstr ""
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed successfully."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed."
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr ""
@@ -2671,6 +2760,26 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp
+msgid "Save PCK"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Cannot create file \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed to export project files."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Can't open file to read from path \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Save ZIP"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2774,8 +2883,25 @@ msgstr ""
msgid "Custom release template not found."
msgstr ""
+#: editor/editor_export.cpp
+msgid "Prepare Template"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "The given export path doesn't exist."
+msgstr ""
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+msgid "Template file not found: \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed to copy export template."
+msgstr ""
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
msgstr ""
#: editor/editor_export.cpp
@@ -2947,9 +3073,9 @@ msgid "Import"
msgstr ""
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr ""
@@ -4033,14 +4159,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4159,6 +4277,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr ""
@@ -4186,6 +4308,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
@@ -4817,11 +4943,13 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+msgid "Page:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
@@ -4913,6 +5041,11 @@ msgid ""
"as runnable."
msgstr ""
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "මෙම ලුහුබදින්න෠ඉවත් කරන්න."
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -5172,7 +5305,9 @@ msgid "Draw Spaces"
msgstr ""
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
#, fuzzy
msgid "Navigation"
msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
@@ -5718,10 +5853,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Sorting Order"
msgstr ""
@@ -6445,14 +6582,6 @@ msgid "Replace in Files"
msgstr ""
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr ""
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr ""
@@ -6581,7 +6710,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
@@ -6832,7 +6961,7 @@ msgid "Generating Lightmaps"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+msgid "Generating for Mesh:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -6860,6 +6989,18 @@ msgid "Saving..."
msgstr ""
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7654,10 +7795,12 @@ msgstr ""
msgid "Directions"
msgstr ""
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr ""
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr ""
@@ -7814,8 +7957,9 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
-msgstr ""
+#, fuzzy
+msgid "Transition:"
+msgstr "Anim සංක්රමණය වෙනස් කරන්න"
#: editor/plugins/animation_state_machine_editor.cpp
#, fuzzy
@@ -7832,11 +7976,6 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr ""
@@ -8730,6 +8869,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr ""
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -8793,6 +8933,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -9541,7 +9685,7 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+msgid "Emission Source:"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
@@ -9771,6 +9915,7 @@ msgid "Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr ""
@@ -9924,13 +10069,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -9939,10 +10077,6 @@ msgstr ""
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -10630,13 +10764,16 @@ msgstr ""
msgid "Translate"
msgstr ""
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
+msgid "Scaling:"
msgstr ""
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "Anim සංක්රමණය වෙනස් කරන්න"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -10659,11 +10796,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11141,7 +11273,7 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+msgid "Convert to MeshInstance2D"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11173,15 +11305,16 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "à·à·Šâ€à¶»à·’à¶­:"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12114,8 +12247,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
#, fuzzy
msgid "Region"
msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
@@ -13565,31 +13697,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr ""
@@ -13724,6 +13835,10 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Project Export"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr ""
@@ -15163,8 +15278,9 @@ msgid "Attach Node Script"
msgstr ""
#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr ""
+#, fuzzy
+msgid "Remote %s:"
+msgstr "මෙම ලුහුබදින්න෠ඉවත් කරන්න."
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -15995,7 +16111,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
msgid "Polygon"
msgstr ""
@@ -16160,7 +16276,7 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+msgid "Libraries:"
msgstr ""
#: modules/gdnative/nativescript/nativescript.cpp
@@ -16569,7 +16685,6 @@ msgid "Use In Baked Light"
msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -16598,6 +16713,19 @@ msgstr "යතුරු මක෠දමන්න"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -16996,7 +17124,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17004,7 +17132,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17379,7 +17507,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17387,7 +17515,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17542,12 +17670,14 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
+#, fuzzy
+msgid "Invalid argument of type:"
+msgstr "'%s' ගොඩනà·à¶œà·“මට à·€à·à¶»à¶¯à·’ තර්ක"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
+#, fuzzy
+msgid "Invalid arguments:"
+msgstr "'%s' ගොඩනà·à¶œà·“මට à·€à·à¶»à¶¯à·’ තර්ක"
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -17558,11 +17688,11 @@ msgid "Var Name"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+msgid "VariableGet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+msgid "VariableSet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
@@ -18060,10 +18190,6 @@ msgid "Could not execute on device."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18167,12 +18293,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "යතුරු පිටපත් කරන්න"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18188,6 +18318,10 @@ msgid "Could not find keystore, unable to export."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Could not start apksigner executable."
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -18216,7 +18350,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18227,19 +18361,17 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+msgid "Could not export project files to gradle project."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18252,7 +18384,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -18267,7 +18399,7 @@ msgid ""
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18275,15 +18407,12 @@ msgid "Creating APK..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -18293,7 +18422,7 @@ msgid "Adding files..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18523,6 +18652,15 @@ msgstr "යතුරු පිටපත් කරන්න"
msgid "Custom BG Color"
msgstr "යතුරු පිටපත් කරන්න"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+msgid "Prepare Templates"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Export template not found."
+msgstr ""
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18544,19 +18682,29 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Could not open template for export: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
+msgstr "%s වර්ගය %s මූල වර්ගය සදහ෠වà·à¶»à¶¯à·’ සුචියක්"
+
+#: platform/javascript/export/export.cpp
+msgid "Could not write file: \"%s\"."
msgstr ""
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "à·à·Šâ€à¶»à·’à¶­:"
+
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not read file: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+msgid "PWA"
msgstr ""
#: platform/javascript/export/export.cpp
@@ -18632,15 +18780,15 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr ""
#: platform/javascript/export/export.cpp
@@ -18912,9 +19060,26 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Could not open icon file \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Could not start xcrun executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -18930,18 +19095,71 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
msgid "No identity found."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Cannot sign file %s."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "à·à·Šâ€à¶»à·’à¶­:"
+
+#: platform/osx/export/export.cpp
+msgid "Could not start hdiutil executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Creating app bundle"
msgstr ""
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Anim පරිවර්තනය වෙනස් කරන්න"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -18949,7 +19167,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -18990,6 +19208,15 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "à·à·Šâ€à¶»à·’à¶­:"
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr ""
@@ -19289,6 +19516,10 @@ msgid "Debug Algorithm"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Failed to rename temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -19329,6 +19560,63 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Resources Modification"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "'%s' ගොඩනà·à¶œà·“මට à·€à·à¶»à¶¯à·’ තර්ක"
+
+#: platform/windows/export/export.cpp
+msgid "Invalid timestamp server."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Failed to remove temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19347,6 +19635,22 @@ msgid "Invalid product version:"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Failed to open executable file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Windows"
msgstr ""
@@ -19362,6 +19666,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
msgid "Frames"
@@ -19473,7 +19781,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
@@ -20249,13 +20558,16 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
+msgid "Navpoly"
msgstr ""
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "යතුරු මක෠දමන්න"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Travel Cost"
msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
@@ -21347,12 +21659,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -23811,6 +24117,16 @@ msgid "3D Physics"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -25129,7 +25445,7 @@ msgstr "Anim සංක්රමණය වෙනස් කරන්න"
msgid "Refraction"
msgstr ""
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -25208,10 +25524,15 @@ msgid "Visible Instance Count"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Sample Partition Type"
+msgid "Sampling"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
+msgstr "à·à·Šâ€à¶»à·’à¶­:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Parsed Geometry Type"
msgstr ""
@@ -25224,7 +25545,11 @@ msgid "Source Group Name"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
+msgid "Agents"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -25236,11 +25561,16 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Regions"
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -25253,6 +25583,10 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+msgid "Details"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -25269,7 +25603,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -25649,6 +25983,11 @@ msgid "Scenario"
msgstr ""
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -25665,6 +26004,26 @@ msgstr "රේඛීය"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "වටිනà·à¶šà¶¸:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "වටිනà·à¶šà¶¸:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "වටිනà·à¶šà¶¸:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "à·à·Šâ€à¶»à·’à¶­:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/sk.po b/editor/translations/sk.po
index 3138362983..6615ae93a0 100644
--- a/editor/translations/sk.po
+++ b/editor/translations/sk.po
@@ -230,9 +230,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
#, fuzzy
msgid "Network"
msgstr "Vytvoriť adresár"
@@ -346,7 +347,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Nedostatok bajtov na dekódovanie, alebo chybný formát."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "Nesprávny vstup(input) %i (neschválený) v požiadavke"
#: core/math/expression.cpp
@@ -391,6 +393,16 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Move Mode"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "Zmazať Vstup"
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -591,7 +603,8 @@ msgstr "Popis"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr ""
@@ -680,6 +693,11 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Cesta Scény:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -687,19 +705,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Kontrola Verzie"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Kontrola Verzie"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Meno Pluginu:"
+msgid "Version Control Plugin Name"
+msgstr "Kontrola Verzie"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -817,7 +831,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "Filtre:"
@@ -1098,6 +1113,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Voľný"
@@ -1114,7 +1130,7 @@ msgstr "Zrkadlový"
msgid "Time:"
msgstr "ÄŒas:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Hodnota:"
@@ -1363,10 +1379,73 @@ msgid "Remove this track."
msgstr "Vymazať tento track."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "ÄŒas (s): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Pozícia Dock-u"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Krok Rotácie:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "Veľkosť:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Nesprávna veľkosť písma."
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "In-Handle:"
+msgstr "Nastaviť Rukoväť"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Out-Handle:"
+msgstr "Nastaviť Rukoväť"
+
+#: editor/animation_track_editor.cpp
+msgid "Stream:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Reštart (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "End (s):"
+msgstr "Miznutie do (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Popis:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "Zmena Tracku Povolená"
@@ -1581,7 +1660,8 @@ msgid "Add Method Track Key"
msgstr "Pridať Method Track Key"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "Metóda nebola nájdená v objekte: "
#: editor/animation_track_editor.cpp
@@ -2191,8 +2271,8 @@ msgid "Open"
msgstr "Otvoriť"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Majitelia:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
#, fuzzy
@@ -2501,7 +2581,7 @@ msgid "Bus Options"
msgstr "Možnosti pre Bus"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Duplikovať"
@@ -2553,8 +2633,9 @@ msgstr "Otvoriť Audio Bus Layout"
msgid "There is no '%s' file."
msgstr "Není tu žiadny '%s' súbor."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "Layout"
#: editor/editor_audio_buses.cpp
@@ -2759,6 +2840,24 @@ msgid "Choose"
msgstr "Vyberte"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "Balík bol úspešne nainštalovaný!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "Zlihalo:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Ukladanie súboru:"
@@ -2771,6 +2870,31 @@ msgid "Packing"
msgstr "Zabalovanie"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Uložiť Ako"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "PrieÄinok sa nepodarilo vytvoriÅ¥."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Popis:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Nie je možné otvoriť súbor pre písanie:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Uložiť Ako"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2892,11 +3016,31 @@ msgstr "Vlastná debug šablóna sa nenašla."
msgid "Custom release template not found."
msgstr "Vlastná release šablóna sa nenašla."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "Spravovať Šablóny"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "The given export path doesn't exist."
+msgstr ""
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "Súbor Šablóny sa nenašiel:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "Nedá sa otvoriť export templates zip."
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr "Pri 32-bitovom exporte nemôže byÅ¥ vložená PCK väÄÅ¡ia ako 4 GiB."
@@ -3072,9 +3216,9 @@ msgid "Import"
msgstr "Import"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Export"
@@ -4233,15 +4377,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Scéna"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Cesta Scény:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4369,6 +4504,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Kontrola Verzie"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Premenovať"
@@ -4397,6 +4536,10 @@ msgstr "Prepnúť režim bez rozptyľovania."
msgid "Add a new scene."
msgstr "Pridať novú scénu."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Scéna"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "ÃsÅ¥ do naposledy otvorenej scény."
@@ -5082,11 +5225,15 @@ msgid "Selected node is not a Viewport!"
msgstr "Vybraný node není Viewport!"
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#, fuzzy
+msgid "Size:"
msgstr "Veľkosť: "
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+#, fuzzy
+msgid "Page:"
msgstr "Strana: "
#: editor/editor_properties_array_dict.cpp
@@ -5187,6 +5334,11 @@ msgstr ""
"Prosím pridajte spustiteľný \"preset\" v export menu alebo definujte "
"existujúci \"preset\" ako spustiteľný."
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Projekt"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Napíšte svoju logiku v metóde _run()."
@@ -5463,7 +5615,9 @@ msgid "Draw Spaces"
msgstr "Volania"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
#, fuzzy
msgid "Navigation"
msgstr "Signály:"
@@ -6041,10 +6195,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -6826,14 +6982,6 @@ msgid "Replace in Files"
msgstr "Nahradiť Všetko"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "Nájsť: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "Nahradiť: "
-
-#: editor/find_in_files.cpp
#, fuzzy
msgid "Replace All (NO UNDO)"
msgstr "Nahradiť Všetko"
@@ -6963,7 +7111,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Filtre:"
@@ -7230,7 +7378,8 @@ msgid "Generating Lightmaps"
msgstr "Generovanie Lightmaps"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+#, fuzzy
+msgid "Generating for Mesh:"
msgstr "Generovanie pre Mesh: "
#: editor/import/resource_importer_scene.cpp
@@ -7258,6 +7407,18 @@ msgid "Saving..."
msgstr "Ukladám..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -8069,10 +8230,12 @@ msgstr "Onion Skinning Možnosti"
msgid "Directions"
msgstr "Smery"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "Minulosť"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "Budúcnosť"
@@ -8231,7 +8394,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr "NastaviÅ¥ koniec animácie. Toto je užitoÄné pre sub-prechody."
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
+#, fuzzy
+msgid "Transition:"
msgstr "Prechody: "
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8248,11 +8412,6 @@ msgid "New name:"
msgstr "Nové Meno:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "Veľkosť:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "Miznutie do (s):"
@@ -9178,6 +9337,7 @@ msgstr "Vytvoriť Vlastnú Kosť(i) z Node-u(ou)"
msgid "Clear Custom Bones"
msgstr "Zmazať Vlastné Kosti"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9243,6 +9403,10 @@ msgid "Preview Canvas Scale"
msgstr "Predzobraziť Veľkosť Plátna"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "Layout"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr "Prekladová maska na vkladanie kľúÄov."
@@ -10012,8 +10176,9 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr ""
+#, fuzzy
+msgid "Emission Source:"
+msgstr "Emisná Maska"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
@@ -10253,6 +10418,7 @@ msgid "Points"
msgstr "Všetky vybrané"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
#, fuzzy
msgid "Polygons"
msgstr "Signály:"
@@ -10410,13 +10576,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -10425,10 +10584,6 @@ msgstr ""
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -11154,13 +11309,17 @@ msgstr "RotaÄný Režim"
msgid "Translate"
msgstr "Preložiť Preloženie:"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr ""
+#, fuzzy
+msgid "Scaling:"
+msgstr "Veľkosť:"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "Preložiť Preloženie:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -11183,12 +11342,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
-msgid "Size:"
-msgstr "Veľkosť: "
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11683,8 +11836,9 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
-msgstr ""
+#, fuzzy
+msgid "Convert to MeshInstance2D"
+msgstr "Všetky vybrané"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Invalid geometry, can't create polygon."
@@ -11717,16 +11871,19 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "Všetky vybrané"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
-msgstr ""
+#, fuzzy
+msgid "Shrink (Pixels):"
+msgstr "Pevné Pixely"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
-msgstr ""
+#, fuzzy
+msgid "Grow (Pixels):"
+msgstr "Pevné Pixely"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Update Preview"
@@ -12736,8 +12893,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
#, fuzzy
msgid "Region"
msgstr "Režim Interpolácie"
@@ -14261,31 +14417,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr ""
@@ -14426,6 +14561,11 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Zakladatelia Projektu"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr ""
@@ -15908,7 +16048,8 @@ msgid "Attach Node Script"
msgstr "Popis:"
#: editor/script_editor_debugger.cpp
-msgid "Remote "
+#, fuzzy
+msgid "Remote %s:"
msgstr "Diaľkový "
#: editor/script_editor_debugger.cpp
@@ -16786,7 +16927,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "Signály:"
@@ -16963,7 +17104,7 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+msgid "Libraries:"
msgstr ""
#: modules/gdnative/nativescript/nativescript.cpp
@@ -17398,7 +17539,6 @@ msgid "Use In Baked Light"
msgstr "Bake Lightmaps"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17428,6 +17568,19 @@ msgstr "V Strede"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Signály:"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Signály:"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -17844,7 +17997,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17852,7 +18005,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -18242,7 +18395,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18250,7 +18403,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18417,12 +18570,14 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
+#, fuzzy
+msgid "Invalid argument of type:"
+msgstr "Neplatné argumenty pre vytvorenie '%s'"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
+#, fuzzy
+msgid "Invalid arguments:"
+msgstr "Neplatný Názov."
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -18434,12 +18589,14 @@ msgid "Var Name"
msgstr "Meno"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableGet not found in script:"
+msgstr "Metóda nebola nájdená v objekte: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableSet not found in script:"
+msgstr "Metóda nebola nájdená v objekte: "
#: modules/visual_script/visual_script_nodes.cpp
#, fuzzy
@@ -18982,10 +19139,6 @@ msgid "Could not execute on device."
msgstr "PrieÄinok sa nepodarilo vytvoriÅ¥."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -19090,12 +19243,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Signál"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19114,6 +19271,11 @@ msgid "Could not find keystore, unable to export."
msgstr ""
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "Subprocess sa nedá spustiť!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -19143,7 +19305,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19154,20 +19316,19 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
-msgstr ""
+#, fuzzy
+msgid "Could not export project files to gradle project."
+msgstr "Popis:"
#: platform/android/export/export_plugin.cpp
#, fuzzy
@@ -19180,7 +19341,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -19196,7 +19357,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr "BalíÄek Obsahu:"
#: platform/android/export/export_plugin.cpp
@@ -19205,15 +19366,13 @@ msgid "Creating APK..."
msgstr "Pripájanie..."
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
-msgstr ""
+#, fuzzy
+msgid "Could not find template APK to export: \"%s\"."
+msgstr "Subprocess sa nedá spustiť!"
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -19225,7 +19384,7 @@ msgstr "Pridávanie %s..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr "Popis:"
#: platform/android/export/export_plugin.cpp
@@ -19467,6 +19626,17 @@ msgstr "Vložiť"
msgid "Custom BG Color"
msgstr "Vložiť"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "Spravovať Šablóny"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Vlastná release šablóna sa nenašla."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -19489,24 +19659,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
-msgstr ""
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
+msgstr "PrieÄinok sa nepodarilo vytvoriÅ¥."
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
-msgstr ""
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
+msgstr "Nesprávna veľkosť písma."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not write file:"
+msgid "Could not write file: \"%s\"."
msgstr "Popis:"
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Obsah:"
+
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read file:"
+msgid "Could not read file: \"%s\"."
msgstr "Popis:"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "Popis:"
@@ -19582,17 +19763,17 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr "Popis:"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr "PrieÄinok sa nepodarilo vytvoriÅ¥."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr "Error pri ukladaní TileSet-u!"
#: platform/javascript/export/export.cpp
@@ -19889,9 +20070,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Popis:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "Subprocess sa nedá spustiť!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Signály:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19907,18 +20107,74 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "Nenašli sa žiadne \"sub-resources\"."
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Chyba uloženia súbora: %s"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Smery"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "Subprocess sa nedá spustiť!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "Vytváranie Náhľadu"
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
-msgstr ""
+#, fuzzy
+msgid "Could not find template app to export: \"%s\"."
+msgstr "Subprocess sa nedá spustiť!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Neplatný Názov."
#: platform/osx/export/export.cpp
msgid ""
@@ -19928,7 +20184,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -19970,6 +20226,15 @@ msgstr ""
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "ZIP Creation"
+msgstr "Projekt"
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Invalid bundle identifier:"
msgstr "Nesprávna veľkosť písma."
@@ -20283,6 +20548,11 @@ msgid "Debug Algorithm"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Nepodarilo sa vymazaÅ¥ doÄasné súbory:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20329,6 +20599,66 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Prilepiť Animáciu"
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Nesprávna veľkosť písma."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Neplatný Názov."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "Nepodarilo sa vymazaÅ¥ doÄasné súbory:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20350,6 +20680,23 @@ msgid "Invalid product version:"
msgstr "Nesprávna veľkosť písma."
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Nesprávna veľkosť písma."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "Nové Okno"
@@ -20366,6 +20713,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20488,7 +20839,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Inštancie"
@@ -21318,15 +21670,19 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr ""
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Od Stredu Dole"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "Cestovať"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
#, fuzzy
@@ -22497,12 +22853,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -25128,6 +25478,16 @@ msgid "3D Physics"
msgstr "Fyzická Snímka %"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Signály:"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Signály:"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -26536,7 +26896,7 @@ msgstr "Prechody: "
msgid "Refraction"
msgstr "Popis:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -26618,7 +26978,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "Veľkosť:"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "Zmeniť %s Typ"
#: scene/resources/navigation_mesh.cpp
@@ -26635,10 +27000,15 @@ msgid "Source Group Name"
msgstr "Prostriedok"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "Obsah:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -26647,11 +27017,16 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Regions"
+msgstr "Režim Interpolácie"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26664,6 +27039,11 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Details"
+msgstr "NaÄítaÅ¥ predvolené"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -26680,7 +27060,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -27086,6 +27466,11 @@ msgid "Scenario"
msgstr "Scéna"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Signály:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -27103,6 +27488,26 @@ msgstr "Lineárne Vľavo"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Predvolené"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Predzobraziť Vylepšenie"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Testovanie"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Upraviť Pripojenie:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/sl.po b/editor/translations/sl.po
index bdeb58cd83..acb24489bd 100644
--- a/editor/translations/sl.po
+++ b/editor/translations/sl.po
@@ -11,15 +11,15 @@
# Andrej Poženel <andrej.pozenel@outlook.com>, 2019.
# Arnold Marko <arnold.marko@gmail.com>, 2019.
# Alex <alexrixhardson@gmail.com>, 2019.
-# Andrew Poženel <andrej.pozenel@outlook.com>, 2020.
+# Andrew Poženel <andrej.pozenel@outlook.com>, 2020, 2022.
# Jakob Tadej VrtaÄnik <minecraftalka2@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-02-01 20:54+0000\n"
-"Last-Translator: Jakob Tadej VrtaÄnik <minecraftalka2@gmail.com>\n"
+"PO-Revision-Date: 2022-06-04 10:56+0000\n"
+"Last-Translator: Andrew Poženel <andrej.pozenel@outlook.com>\n"
"Language-Team: Slovenian <https://hosted.weblate.org/projects/godot-engine/"
"godot/sl/>\n"
"Language: sl\n"
@@ -28,105 +28,97 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || "
"n%100==4 ? 2 : 3;\n"
-"X-Generator: Weblate 4.5-dev\n"
+"X-Generator: Weblate 4.13-dev\n"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
-msgstr ""
+msgstr "TabliÄni gonilnik"
#: core/bind/core_bind.cpp
msgid "Clipboard"
-msgstr ""
+msgstr "OdložiÅ¡Äe"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Current Screen"
-msgstr "Trenutna scena ni shranjena. Vseeno odprem?"
+msgstr "Trenutno okno"
#: core/bind/core_bind.cpp
msgid "Exit Code"
-msgstr ""
+msgstr "Izhodna koda"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "V-Sync Enabled"
-msgstr "OmogoÄi"
+msgstr "V-Sync OmogoÄen"
#: core/bind/core_bind.cpp main/main.cpp
msgid "V-Sync Via Compositor"
-msgstr ""
+msgstr "V-Sync preko sestavljalca"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Delta Smoothing"
-msgstr ""
+msgstr "Delta glajenje"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Low Processor Usage Mode"
-msgstr "NaÄin Premika"
+msgstr "Minimalna uporaba procesorja"
#: core/bind/core_bind.cpp
msgid "Low Processor Usage Mode Sleep (µsec)"
-msgstr ""
+msgstr "Minimalna uporaba procesorja spanje (µsec)"
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
msgid "Keep Screen On"
-msgstr ""
+msgstr "Pusti prižgan zaslon"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Min Window Size"
-msgstr "Zaženi Skripto"
+msgstr "Najmanjša velikost okna"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Max Window Size"
-msgstr "Zaženi Skripto"
+msgstr "najveÄja velikost okna"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Screen Orientation"
-msgstr "Odpri Nedavne"
+msgstr "Orientacija zaslona"
#: core/bind/core_bind.cpp core/project_settings.cpp main/main.cpp
#: platform/uwp/os_uwp.cpp
msgid "Window"
-msgstr ""
+msgstr "Okno"
#: core/bind/core_bind.cpp core/project_settings.cpp
msgid "Borderless"
-msgstr ""
+msgstr "BrezstraniÄno"
#: core/bind/core_bind.cpp
msgid "Per Pixel Transparency Enabled"
-msgstr ""
+msgstr "Prozornost na slikovno piko OmogoÄena"
#: core/bind/core_bind.cpp core/project_settings.cpp
-#, fuzzy
msgid "Fullscreen"
-msgstr "Preklopi na Celozaslonski NaÄin"
+msgstr "Celozaslonski NaÄin"
#: core/bind/core_bind.cpp
msgid "Maximized"
-msgstr ""
+msgstr "Maksimirano"
#: core/bind/core_bind.cpp
msgid "Minimized"
-msgstr ""
+msgstr "Minimirano"
#: core/bind/core_bind.cpp core/project_settings.cpp scene/gui/dialogs.cpp
#: scene/gui/graph_node.cpp
msgid "Resizable"
-msgstr ""
+msgstr "Spremenljiva velikost"
#: core/bind/core_bind.cpp core/os/input_event.cpp scene/2d/node_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/remote_transform_2d.cpp
#: scene/3d/physics_body.cpp scene/3d/remote_transform.cpp
#: scene/gui/control.cpp scene/gui/line_edit.cpp
#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Position"
-msgstr "Položaj Sidranja"
+msgstr "Pozicija"
#: core/bind/core_bind.cpp core/project_settings.cpp editor/editor_settings.cpp
#: main/main.cpp modules/gridmap/grid_map.cpp
@@ -138,62 +130,55 @@ msgstr "Položaj Sidranja"
#: scene/resources/style_box.cpp scene/resources/texture.cpp
#: scene/resources/visual_shader.cpp servers/visual_server.cpp
msgid "Size"
-msgstr ""
+msgstr "Velikost"
#: core/bind/core_bind.cpp
msgid "Endian Swap"
-msgstr ""
+msgstr "Zamenjava Endian kodiranja"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Editor Hint"
-msgstr "Urejevalnik"
+msgstr "Namig urejevalnika"
#: core/bind/core_bind.cpp
msgid "Print Error Messages"
-msgstr ""
+msgstr "IzpiÅ¡i sporoÄila napak"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Iterations Per Second"
-msgstr "Animacijski Gradnik"
+msgstr "Ponovitev na sekundo"
#: core/bind/core_bind.cpp
msgid "Target FPS"
-msgstr ""
+msgstr "Ciljni FPS (sliÄic na sekundo)"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Time Scale"
-msgstr "Gradnik ÄŒasovnoMerilo"
+msgstr "ÄŒasovna lestvica"
#: core/bind/core_bind.cpp main/main.cpp
-#, fuzzy
msgid "Physics Jitter Fix"
-msgstr "Fizikalni Okvir %"
+msgstr "Popravek tresenja"
#: core/bind/core_bind.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Error"
-msgstr ""
+msgstr "Napaka"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Error String"
-msgstr "Napaka pri premikanju:"
+msgstr "Nit napake"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Error Line"
-msgstr "Napaka pri premikanju:"
+msgstr "Vrstica napake"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Result"
-msgstr "IÅ¡Äi PomoÄ"
+msgstr "Rezultat"
#: core/command_queue_mt.cpp core/message_queue.cpp main/main.cpp
msgid "Memory"
-msgstr ""
+msgstr "Spomin"
#: core/command_queue_mt.cpp core/message_queue.cpp
#: core/register_core_types.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
@@ -204,129 +189,119 @@ msgstr ""
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
#: servers/visual_server.cpp
msgid "Limits"
-msgstr ""
+msgstr "Omejitve"
#: core/command_queue_mt.cpp
-#, fuzzy
msgid "Command Queue"
-msgstr "Povleci: Vrtenje"
+msgstr "ÄŒakalna vrsta ukazov"
#: core/command_queue_mt.cpp
msgid "Multithreading Queue Size (KB)"
-msgstr ""
+msgstr "Velikost Äakalne vrste za veÄ niti (KB)"
#: core/func_ref.cpp modules/visual_script/visual_script_builtin_funcs.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: scene/resources/visual_shader_nodes.cpp
-#, fuzzy
msgid "Function"
-msgstr "Funkcije:"
+msgstr "Funkcija"
#: core/image.cpp core/packed_data_container.cpp scene/2d/polygon_2d.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
msgid "Data"
-msgstr ""
+msgstr "Podatki"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
-#, fuzzy
+#: scene/gui/file_dialog.cpp
msgid "Network"
-msgstr "Izvozi Projekt"
+msgstr "Omrežje"
#: core/io/file_access_network.cpp
-#, fuzzy
msgid "Remote FS"
-msgstr "Upravljalnik "
+msgstr "Oddaljen datoteÄni sistem"
#: core/io/file_access_network.cpp
msgid "Page Size"
-msgstr ""
+msgstr "Velikost strani"
#: core/io/file_access_network.cpp
msgid "Page Read Ahead"
-msgstr ""
+msgstr "Branje strani naprej"
#: core/io/http_client.cpp
msgid "Blocking Mode Enabled"
-msgstr ""
+msgstr "NaÄin blokiranja je omogoÄen"
#: core/io/http_client.cpp
-#, fuzzy
msgid "Connection"
-msgstr "Poveži"
+msgstr "Povezava"
#: core/io/http_client.cpp
msgid "Read Chunk Size"
-msgstr ""
+msgstr "Velikost prebranega kosa"
#: core/io/marshalls.cpp
msgid "Object ID"
-msgstr ""
+msgstr "ID predmeta"
#: core/io/multiplayer_api.cpp core/io/packet_peer.cpp
-#, fuzzy
msgid "Allow Object Decoding"
-msgstr "OmogoÄi Lupljenje ÄŒebule"
+msgstr "Dovoli dekodiranje predmetov"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
msgid "Refuse New Network Connections"
-msgstr ""
+msgstr "Zavrni nove omrežne povezave"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
-#, fuzzy
msgid "Network Peer"
-msgstr "Izvozi Projekt"
+msgstr "Omrežni vrstnik"
#: core/io/multiplayer_api.cpp scene/animation/animation_player.cpp
-#, fuzzy
msgid "Root Node"
-msgstr "Preimenuj"
+msgstr "Korensko vozliÅ¡Äe"
#: core/io/networked_multiplayer_peer.cpp
-#, fuzzy
msgid "Refuse New Connections"
-msgstr "Poveži"
+msgstr "Zavrni nove povezave"
#: core/io/networked_multiplayer_peer.cpp
-#, fuzzy
msgid "Transfer Mode"
-msgstr "NaÄin PloÅ¡Äe"
+msgstr "NaÄin prenosa"
#: core/io/packet_peer.cpp
msgid "Encode Buffer Max Size"
-msgstr ""
+msgstr "NajveÄja velikost medpomnilnika za odkodiranje"
#: core/io/packet_peer.cpp
msgid "Input Buffer Max Size"
-msgstr ""
+msgstr "NajveÄja velikost vhodnega predpomnilnika"
#: core/io/packet_peer.cpp
msgid "Output Buffer Max Size"
-msgstr ""
+msgstr "NajveÄja velikost izhodnega predpomnilnika"
#: core/io/packet_peer.cpp
msgid "Stream Peer"
-msgstr ""
+msgstr "PretoÄni vrstnik"
#: core/io/stream_peer.cpp
msgid "Big Endian"
-msgstr ""
+msgstr "Veliki Endian"
#: core/io/stream_peer.cpp
msgid "Data Array"
-msgstr ""
+msgstr "Podatkovni niz"
#: core/io/stream_peer_ssl.cpp
msgid "Blocking Handshake"
-msgstr ""
+msgstr "Blokiranje tresenja rok"
#: core/io/udp_server.cpp
-#, fuzzy
msgid "Max Pending Connections"
-msgstr "Napaka Pri Povezavi"
+msgstr "NajveÄje Å¡tevilo ÄakajoÄih povezav"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -344,7 +319,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Ni dovolj bajtov za dekodiranje, ali pa je neveljaven format."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "NapaÄen vnos %i(ni podan) v izrazu"
#: core/math/expression.cpp
@@ -389,6 +365,16 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "NaÄin Premika"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "Izbriši Vnos"
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -591,7 +577,8 @@ msgstr "Opis:"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "Zaženi"
@@ -680,6 +667,11 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Pot Prizora:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -687,20 +679,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
+#: core/project_settings.cpp
#, fuzzy
-msgid "Version Control"
+msgid "Version Control Autoload On Startup"
msgstr "RazliÄica:"
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
-
-#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "VtiÄniki"
+msgid "Version Control Plugin Name"
+msgstr "RazliÄica:"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -816,7 +803,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "Filtri..."
@@ -1097,6 +1085,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Prosto"
@@ -1113,7 +1102,7 @@ msgstr "Zrcali"
msgid "Time:"
msgstr "ÄŒas:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Vrednost:"
@@ -1375,10 +1364,71 @@ msgstr "Odstrani izbrano sled."
#: editor/animation_track_editor.cpp
#, fuzzy
-msgid "Time (s): "
+msgid "Time (s):"
msgstr "ÄŒas X-Bledenja (s):"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Pozicija"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Rotacijski Korak:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "Prilagodi Velikost:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Neveljavna izvozna predloga:"
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "PretoÄni vrstnik"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Znova Zaženi (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "End (s):"
+msgstr "Postopno Prikazovanje (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Animacija"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr ""
@@ -1607,7 +1657,7 @@ msgstr "V Animacijo Vstavi Sled & KljuÄ"
#: editor/animation_track_editor.cpp
#, fuzzy
-msgid "Method not found in object: "
+msgid "Method not found in object:"
msgstr "VariableGet ni najden v skripti: "
#: editor/animation_track_editor.cpp
@@ -2242,8 +2292,8 @@ msgid "Open"
msgstr "Odpri"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Lastniki:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
#, fuzzy
@@ -2555,7 +2605,7 @@ msgid "Bus Options"
msgstr "Možnosti Vodila"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Podvoji"
@@ -2607,9 +2657,10 @@ msgstr "Odpri ZvoÄno Vodilo"
msgid "There is no '%s' file."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
-msgstr ""
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
+msgstr "Shrani Postavitev"
#: editor/editor_audio_buses.cpp
msgid "Invalid file, not an audio bus layout."
@@ -2822,6 +2873,24 @@ msgid "Choose"
msgstr "Izberi"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "Paket je UspeÅ¡no NameÅ¡Äen!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "Spodletelo:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Shranjevanje Datoteke:"
@@ -2834,6 +2903,31 @@ msgid "Packing"
msgstr "Pakiranje"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Shrani Kot"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "Mape ni mogoÄe ustvariti."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Nemorem zaÄeti podprocesa!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Datoteke ni mogoÄe odpreti za pisanje:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Shrani Kot"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2938,11 +3032,32 @@ msgstr "Predloge ni mogoÄe najti:"
msgid "Custom release template not found."
msgstr ""
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "Upravljaj Izvozne Predloge"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "Datoteka ne obstaja."
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "Predloge ni mogoÄe najti:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "Neveljavna izvozna predloga:"
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr ""
@@ -3131,9 +3246,9 @@ msgid "Import"
msgstr "Uvozi"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Izvozi"
@@ -4331,15 +4446,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Prizor"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Pot Prizora:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4468,6 +4574,11 @@ msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
+msgid "Version Control"
+msgstr "RazliÄica:"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+#, fuzzy
msgid "Username"
msgstr "Preimenuj"
@@ -4495,6 +4606,10 @@ msgstr "Preklop naÄin pisanja brez motenj."
msgid "Add a new scene."
msgstr "Dodaj nov Prizor."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Prizor"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Pojdi na predhodno odprti prizor."
@@ -5182,11 +5297,13 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+msgid "Page:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
@@ -5289,6 +5406,11 @@ msgstr ""
"Za to platformo ni mogoÄe najti obstojeÄih izvoznih nastavitev.\n"
"V izvoznem meniju dodajte svoje nastavitve."
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Projekt"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Napišite svojo logiko v metodi _run() ."
@@ -5564,7 +5686,9 @@ msgid "Draw Spaces"
msgstr "Klici"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
#, fuzzy
msgid "Navigation"
msgstr "Animacijski Gradnik"
@@ -6139,10 +6263,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Upravljalnik Projekta"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -6935,16 +7061,6 @@ msgstr "Zamenjaj Vse"
#: editor/find_in_files.cpp
#, fuzzy
-msgid "Find: "
-msgstr "Najdi"
-
-#: editor/find_in_files.cpp
-#, fuzzy
-msgid "Replace: "
-msgstr "Zamenjaj"
-
-#: editor/find_in_files.cpp
-#, fuzzy
msgid "Replace All (NO UNDO)"
msgstr "Zamenjaj Vse"
@@ -7085,7 +7201,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Filtri..."
@@ -7349,7 +7465,8 @@ msgid "Generating Lightmaps"
msgstr "Ustvarjanje Svetlobnih Kart"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+#, fuzzy
+msgid "Generating for Mesh:"
msgstr "Ustvarjanje za Model: "
#: editor/import/resource_importer_scene.cpp
@@ -7377,6 +7494,18 @@ msgid "Saving..."
msgstr "Shranjevanje..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -8233,10 +8362,12 @@ msgstr "Lupljenje ÄŒebule"
msgid "Directions"
msgstr "Smeri"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "Preteklost"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "Prihodnost"
@@ -8402,7 +8533,7 @@ msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
#, fuzzy
-msgid "Transition: "
+msgid "Transition:"
msgstr "Prehod"
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8420,11 +8551,6 @@ msgid "New name:"
msgstr "Novo ime:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "Prilagodi Velikost:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "Postopno Prikazovanje (s):"
@@ -9397,6 +9523,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr "Zaženi Prizor po Meri"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9462,6 +9589,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -10235,8 +10366,9 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr ""
+#, fuzzy
+msgid "Emission Source:"
+msgstr "Vidne Oblike Trka"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
@@ -10475,6 +10607,7 @@ msgid "Points"
msgstr "Odstrani toÄko"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
#, fuzzy
msgid "Polygons"
msgstr "Uredi Poligon"
@@ -10639,13 +10772,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -10654,10 +10780,6 @@ msgstr ""
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -11402,13 +11524,17 @@ msgstr "NaÄin Vrtenja"
msgid "Translate"
msgstr "Prestavi ZaskoÄenje:"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr ""
+#, fuzzy
+msgid "Scaling:"
+msgstr "Prilagodi Velikost:"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "Prestavi ZaskoÄenje:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -11431,11 +11557,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11934,7 +12055,7 @@ msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
#, fuzzy
-msgid "Convert to Mesh2D"
+msgid "Convert to MeshInstance2D"
msgstr "Pretvori V..."
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11968,15 +12089,16 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "Premakni Dejanje"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12993,8 +13115,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
#, fuzzy
msgid "Region"
msgstr "NaÄin Vrtenja"
@@ -14531,32 +14652,11 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
#, fuzzy
msgid "Exporting All"
msgstr "Izvozi"
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
#, fuzzy
msgid "Export Path"
msgstr "Izvozi Projekt"
@@ -14700,6 +14800,11 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Ustanovitelji Projekta"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "Upravljaj Izvozne Predloge"
@@ -16218,7 +16323,8 @@ msgid "Attach Node Script"
msgstr ""
#: editor/script_editor_debugger.cpp
-msgid "Remote "
+#, fuzzy
+msgid "Remote %s:"
msgstr "Upravljalnik "
#: editor/script_editor_debugger.cpp
@@ -17097,7 +17203,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "Uredi Poligon"
@@ -17273,7 +17379,7 @@ msgid "Disabled GDNative Singleton"
msgstr "OnemogoÄi Posodobitve Kolesca"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+msgid "Libraries:"
msgstr ""
#: modules/gdnative/nativescript/nativescript.cpp
@@ -17707,7 +17813,6 @@ msgid "Use In Baked Light"
msgstr "ZapeÄi Svetlobne karte"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17737,6 +17842,19 @@ msgstr "NaÄin Vrtenja"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Animacijski Gradnik"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Animacijski Gradnik"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -18159,7 +18277,8 @@ msgstr ""
"vozliÅ¡Äa! Prosimo popravite vozliÅ¡Äe."
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+#, fuzzy
+msgid "Node returned an invalid sequence output:"
msgstr "VozliÅ¡Äe je vrnilo napaÄno sekvenco na izhodu: "
#: modules/visual_script/visual_script.cpp
@@ -18168,7 +18287,8 @@ msgstr ""
"SekvenÄni bit je bil najden, vozliÅ¡Äe na skladu pa ne; prijavite napako!"
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+#, fuzzy
+msgid "Stack overflow with stack depth:"
msgstr "Sklad prepoln z stack depth: "
#: modules/visual_script/visual_script.cpp
@@ -18559,7 +18679,8 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+#, fuzzy
+msgid "Input type not iterable:"
msgstr "Vhodni tip ni spremenljiv: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18567,7 +18688,8 @@ msgid "Iterator became invalid"
msgstr "Iterator je bil neveljaven"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+#, fuzzy
+msgid "Iterator became invalid:"
msgstr "Iterator je neveljaven: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18734,11 +18856,13 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
+#, fuzzy
+msgid "Invalid argument of type:"
msgstr ": Neveljaven argument od tipa: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
+#, fuzzy
+msgid "Invalid arguments:"
msgstr ": Neveljavni argumenti: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18751,11 +18875,13 @@ msgid "Var Name"
msgstr "Ime"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+#, fuzzy
+msgid "VariableGet not found in script:"
msgstr "VariableGet ni najden v skripti: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+#, fuzzy
+msgid "VariableSet not found in script:"
msgstr "VariableSet ni najden v skripti: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -19306,10 +19432,6 @@ msgid "Could not execute on device."
msgstr "Mape ni mogoÄe ustvariti."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -19414,12 +19536,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Signali"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19438,6 +19564,11 @@ msgid "Could not find keystore, unable to export."
msgstr ""
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "Nemorem zaÄeti podprocesa!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -19468,7 +19599,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19479,20 +19610,19 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
-msgstr ""
+#, fuzzy
+msgid "Could not export project files to gradle project."
+msgstr "Nemorem zaÄeti podprocesa!"
#: platform/android/export/export_plugin.cpp
msgid "Could not write expansion package file!"
@@ -19504,7 +19634,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -19520,7 +19650,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr "Animacijska Orodja"
#: platform/android/export/export_plugin.cpp
@@ -19529,15 +19659,13 @@ msgid "Creating APK..."
msgstr "Povezovanje..."
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
-msgstr ""
+#, fuzzy
+msgid "Could not find template APK to export: \"%s\"."
+msgstr "Nemorem zaÄeti podprocesa!"
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -19549,7 +19677,7 @@ msgstr "Filtriraj datoteke..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr "Nemorem zaÄeti podprocesa!"
#: platform/android/export/export_plugin.cpp
@@ -19792,6 +19920,17 @@ msgstr "Gradnik Prehod"
msgid "Custom BG Color"
msgstr "Gradnik Prehod"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "Upravljaj Izvozne Predloge"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Predloge ni mogoÄe najti:"
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -19814,23 +19953,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
-msgstr ""
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
+msgstr "Mape ni mogoÄe ustvariti."
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
msgstr "Neveljavna izvozna predloga:"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr ""
+#, fuzzy
+msgid "Could not write file: \"%s\"."
+msgstr "Mape ni mogoÄe ustvariti."
+
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Vsebina:"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read file:"
+msgid "Could not read file: \"%s\"."
msgstr "Mape ni mogoÄe ustvariti."
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "OÅ¡tevilÄenja:"
@@ -19906,17 +20057,17 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr "Mape ni mogoÄe ustvariti."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr "Mape ni mogoÄe ustvariti."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr "Napaka pri shranjevanju PloÅ¡ÄnegaNiza!"
#: platform/javascript/export/export.cpp
@@ -20214,9 +20365,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Nemorem zaÄeti podprocesa!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "Nemorem zaÄeti podprocesa!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Animacijski Gradnik"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -20232,18 +20402,74 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "Ni Zadetka!"
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Napaka pri shranjevanju PloÅ¡ÄnegaNiza!"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Smeri"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "Nemorem zaÄeti podprocesa!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "Ustvarjanje SliÄic"
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
-msgstr ""
+#, fuzzy
+msgid "Could not find template app to export: \"%s\"."
+msgstr "Nemorem zaÄeti podprocesa!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Neveljavna izvozna predloga:"
#: platform/osx/export/export.cpp
msgid ""
@@ -20253,7 +20479,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -20295,6 +20521,15 @@ msgstr ""
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "ZIP Creation"
+msgstr "Projekt"
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Invalid bundle identifier:"
msgstr "Ime ni pravilen identifikator:"
@@ -20611,6 +20846,11 @@ msgid "Debug Algorithm"
msgstr "RazhroÅ¡Äevalnik"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Ni mogoÄe odstraniti:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20658,6 +20898,66 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Prilepi animacijo"
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Ime ni pravilen identifikator:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Neveljavno ime."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "Ni mogoÄe odstraniti:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20679,6 +20979,23 @@ msgid "Invalid product version:"
msgstr "Neveljavno Ime Projekta."
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Uporabiti moraš valjavno razširitev."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Windows"
msgstr ""
@@ -20694,6 +21011,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20818,7 +21139,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Primer"
@@ -21643,13 +21965,16 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
+msgid "Navpoly"
msgstr ""
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "NaÄin Vrtenja"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Travel Cost"
msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
@@ -22820,12 +23145,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -25451,6 +25770,16 @@ msgid "3D Physics"
msgstr "Fizikalni Okvir %"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Animacijski Gradnik"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Animacijski Gradnik"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -26857,7 +27186,7 @@ msgstr "Prehod"
msgid "Refraction"
msgstr "OÅ¡tevilÄenja:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -26939,7 +27268,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "Prilagodi Velikost:"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "Nastavite Tip Spremenljivke"
#: scene/resources/navigation_mesh.cpp
@@ -26956,10 +27290,15 @@ msgid "Source Group Name"
msgstr "Viri"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "Vsebina:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -26968,11 +27307,16 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Regions"
+msgstr "NaÄin Vrtenja"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26985,6 +27329,11 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Details"
+msgstr "Naložite Prevzeto"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -27001,7 +27350,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -27409,6 +27758,11 @@ msgid "Scenario"
msgstr "Prizor"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Animacijski Gradnik"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -27426,6 +27780,26 @@ msgstr "Linearno"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Prevzeto"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Predogled"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Preskušanje"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Napaka Pri Povezavi"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/sq.po b/editor/translations/sq.po
index dc327bf45b..c97aac239a 100644
--- a/editor/translations/sq.po
+++ b/editor/translations/sq.po
@@ -215,9 +215,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
#, fuzzy
msgid "Network"
msgstr "Eksporto Projektin"
@@ -333,7 +334,8 @@ msgstr ""
"Bajte (byte) të pa mjaftueshem për çkodim të bajteve, ose format i gabuar."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "Input i gabuar %i (nuk kaloi) në shprehje"
#: core/math/expression.cpp
@@ -377,6 +379,15 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Luaj Skenën"
+
+#: core/os/input.cpp
+msgid "Use Accumulated Input"
+msgstr ""
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -571,7 +582,8 @@ msgstr "Përshkrimi:"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr ""
@@ -657,6 +669,11 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Rruga Skenës:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -664,20 +681,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
+#: core/project_settings.cpp
#, fuzzy
-msgid "Version Control"
+msgid "Version Control Autoload On Startup"
msgstr "Versioni:"
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
-
-#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Emri i Shtojcës:"
+msgid "Version Control Plugin Name"
+msgstr "Versioni:"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -791,7 +803,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "Filtrat:"
@@ -1066,6 +1079,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Liro"
@@ -1082,7 +1096,7 @@ msgstr "Pasqyrë"
msgid "Time:"
msgstr "Koha:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
#, fuzzy
msgid "Value:"
msgstr "Vlerë e Re:"
@@ -1331,10 +1345,70 @@ msgid "Remove this track."
msgstr ""
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "Koha (s): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Pozicioni i Dokut"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Konstantet"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Duhet të perdorësh një shtesë të lejuar."
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Stream:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Fillo"
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Animacionet:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr ""
@@ -1544,7 +1618,8 @@ msgid "Add Method Track Key"
msgstr ""
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "Metoda nuk u gjet në objekt: "
#: editor/animation_track_editor.cpp
@@ -2156,8 +2231,8 @@ msgid "Open"
msgstr "Hap"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Pronarët e:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
#, fuzzy
@@ -2468,7 +2543,7 @@ msgid "Bus Options"
msgstr "Përshkrimi i Klasës"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Dyfisho"
@@ -2520,9 +2595,10 @@ msgstr ""
msgid "There is no '%s' file."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
-msgstr ""
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
+msgstr "Ruaj Faqosjen"
#: editor/editor_audio_buses.cpp
msgid "Invalid file, not an audio bus layout."
@@ -2734,6 +2810,24 @@ msgid "Choose"
msgstr "Zgjidh"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "Paketa u instalua me sukses!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "Dështoi:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Duke Ruajtur Skedarin:"
@@ -2746,6 +2840,31 @@ msgid "Packing"
msgstr "Duke Paketuar"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Ruaje Si"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "Nuk mund të krijoj folderin."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Nuk mund të fillojë subprocess-in!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Nuk mund të hapi skedarin për të shkruajtur:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Ruaje Si"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2868,11 +2987,32 @@ msgstr "Shablloni 'Custom debug' nuk u gjet."
msgid "Custom release template not found."
msgstr "Shablloni 'Custom release' nuk u gjet."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "Menaxho Shabllonet e Eksportit"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "Skedari nuk egziston."
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "Skedari shabllon nuk u gjet:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "Nuk mund të hapi zip-in e shablloneve të eksportimit."
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr ""
@@ -3059,9 +3199,9 @@ msgid "Import"
msgstr "Importo"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Eksporto"
@@ -4246,15 +4386,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Skenë"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Rruga Skenës:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4381,6 +4512,11 @@ msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
+msgid "Version Control"
+msgstr "Versioni:"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+#, fuzzy
msgid "Username"
msgstr "Riemërto"
@@ -4408,6 +4544,10 @@ msgstr "Ndrysho metodën pa shpërqëndrime."
msgid "Add a new scene."
msgstr "Shto një skenë të re."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Skenë"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Shko në skenën e hapur më parë."
@@ -5095,11 +5235,15 @@ msgid "Selected node is not a Viewport!"
msgstr "Nyja e zgjedhur nuk është një 'Viewport'!"
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#, fuzzy
+msgid "Size:"
msgstr "Madhësia: "
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+#, fuzzy
+msgid "Page:"
msgstr "Faqja: "
#: editor/editor_properties_array_dict.cpp
@@ -5201,6 +5345,11 @@ msgstr ""
"Nuk u gjet eksport paraprak i saktë për këtë platformë.\n"
"Ju lutem shtoni një eksport paraprak të saktë në menu."
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Projekti"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Shkruaj logjikën në metodën _run()."
@@ -5473,7 +5622,9 @@ msgid "Draw Spaces"
msgstr "Thërritjet"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
#, fuzzy
msgid "Navigation"
msgstr "Metoda Pa Shpërqëndrime"
@@ -6037,10 +6188,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -6816,14 +6969,6 @@ msgid "Replace in Files"
msgstr "Hap Skedarët"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "Gjej: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "Zëvendëso: "
-
-#: editor/find_in_files.cpp
#, fuzzy
msgid "Replace All (NO UNDO)"
msgstr "Zëvendëso të gjitha (pa kthim pas)"
@@ -6960,7 +7105,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Filtrat:"
@@ -7222,7 +7367,8 @@ msgid "Generating Lightmaps"
msgstr "Duke Gjeneruar Hartat e Dritës"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+#, fuzzy
+msgid "Generating for Mesh:"
msgstr "Duke Gjeneruar për 'Mesh'-in: "
#: editor/import/resource_importer_scene.cpp
@@ -7250,6 +7396,18 @@ msgid "Saving..."
msgstr "Duke Ruajtur..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -8058,10 +8216,12 @@ msgstr ""
msgid "Directions"
msgstr ""
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr ""
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr ""
@@ -8216,8 +8376,9 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
-msgstr ""
+#, fuzzy
+msgid "Transition:"
+msgstr "Animacionet:"
#: editor/plugins/animation_state_machine_editor.cpp
#, fuzzy
@@ -8234,11 +8395,6 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr ""
@@ -9149,6 +9305,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr ""
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9213,6 +9370,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -9971,8 +10132,9 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr ""
+#, fuzzy
+msgid "Emission Source:"
+msgstr "Format e Përplasjes të Dukshme"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
@@ -10202,6 +10364,7 @@ msgid "Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr ""
@@ -10356,13 +10519,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -10371,10 +10527,6 @@ msgstr ""
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -11088,13 +11240,16 @@ msgstr ""
msgid "Translate"
msgstr ""
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
+msgid "Scaling:"
msgstr ""
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "Shto Animacion"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -11117,12 +11272,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
-msgid "Size:"
-msgstr "Madhësia: "
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11615,7 +11764,7 @@ msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
#, fuzzy
-msgid "Convert to Mesh2D"
+msgid "Convert to MeshInstance2D"
msgstr "Konverto në %s"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11648,15 +11797,16 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "Animacionet:"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12640,8 +12790,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr ""
@@ -14113,31 +14262,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr ""
@@ -14277,6 +14405,11 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Themeluesit e Projektit"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "Menaxho Shabllonet e Eksportit"
@@ -15762,8 +15895,9 @@ msgid "Attach Node Script"
msgstr ""
#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr ""
+#, fuzzy
+msgid "Remote %s:"
+msgstr "Hiq"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -16614,7 +16748,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "Krijo një Poligon"
@@ -16786,7 +16920,7 @@ msgid "Disabled GDNative Singleton"
msgstr "Çaktivizo Rrotulluesin e Përditësimit"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+msgid "Libraries:"
msgstr ""
#: modules/gdnative/nativescript/nativescript.cpp
@@ -17210,7 +17344,6 @@ msgid "Use In Baked Light"
msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17240,6 +17373,19 @@ msgstr "Fshi Nyjen"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Metoda Pa Shpërqëndrime"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Metoda Pa Shpërqëndrime"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -17649,7 +17795,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17657,7 +17803,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -18041,7 +18187,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18049,7 +18195,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18213,12 +18359,14 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
+#, fuzzy
+msgid "Invalid argument of type:"
+msgstr "Argumente të gabuar për të ndërtuar '%s'"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
+#, fuzzy
+msgid "Invalid arguments:"
+msgstr "Emër i palejuar."
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -18230,12 +18378,14 @@ msgid "Var Name"
msgstr "Emri"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableGet not found in script:"
+msgstr "Metoda nuk u gjet në objekt: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableSet not found in script:"
+msgstr "Metoda nuk u gjet në objekt: "
#: modules/visual_script/visual_script_nodes.cpp
msgid "Preload"
@@ -18772,10 +18922,6 @@ msgid "Could not execute on device."
msgstr "Nuk mund të krijoj folderin."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18879,12 +19025,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Sinjalet"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18903,6 +19053,11 @@ msgid "Could not find keystore, unable to export."
msgstr ""
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "Nuk mund të fillojë subprocess-in!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -18932,7 +19087,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18943,20 +19098,19 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
-msgstr ""
+#, fuzzy
+msgid "Could not export project files to gradle project."
+msgstr "Nuk mund të fillojë subprocess-in!"
#: platform/android/export/export_plugin.cpp
msgid "Could not write expansion package file!"
@@ -18968,7 +19122,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -18984,7 +19138,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr "Instaluesi Paketave"
#: platform/android/export/export_plugin.cpp
@@ -18993,15 +19147,13 @@ msgid "Creating APK..."
msgstr "Duke u lidhur..."
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
-msgstr ""
+#, fuzzy
+msgid "Could not find template APK to export: \"%s\"."
+msgstr "Nuk mund të fillojë subprocess-in!"
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -19013,7 +19165,7 @@ msgstr "Filtro Skedarët..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr "Nuk mund të fillojë subprocess-in!"
#: platform/android/export/export_plugin.cpp
@@ -19253,6 +19405,17 @@ msgstr "Dyfisho Nyjet"
msgid "Custom BG Color"
msgstr "Dyfisho Nyjet"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "Menaxho Shabllonet e Eksportit"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Shablloni 'Custom release' nuk u gjet."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -19274,23 +19437,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
-msgstr ""
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
+msgstr "Nuk mund të krijoj folderin."
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
-msgstr ""
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
+msgstr "Duhet të perdorësh një shtesë të lejuar."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr ""
+#, fuzzy
+msgid "Could not write file: \"%s\"."
+msgstr "Nuk mund të krijoj folderin."
+
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Shfaqe në 'FileSystem'"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read file:"
+msgid "Could not read file: \"%s\"."
msgstr "Nuk mund të krijoj folderin."
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "Enumeracionet:"
@@ -19366,17 +19541,17 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr "Nuk mund të krijoj folderin."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr "Nuk mund të krijoj folderin."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr "Gabim gjatë ruajtjes së TileSet-it!"
#: platform/javascript/export/export.cpp
@@ -19669,9 +19844,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Nuk mund të fillojë subprocess-in!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "Nuk mund të fillojë subprocess-in!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Metoda Pa Shpërqëndrime"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19687,18 +19881,74 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "Konstantet"
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Gabim gjatë ruajtjes së TileSet-it!"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Përshkrimi:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "Nuk mund të fillojë subprocess-in!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "Duke Krijuar Kornizat"
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
-msgstr ""
+#, fuzzy
+msgid "Could not find template app to export: \"%s\"."
+msgstr "Nuk mund të fillojë subprocess-in!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Rruga e pasaktë."
#: platform/osx/export/export.cpp
msgid ""
@@ -19708,7 +19958,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -19749,6 +19999,15 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "Projekti"
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr ""
@@ -20059,6 +20318,11 @@ msgid "Debug Algorithm"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Nuk mund të heqësh:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20105,6 +20369,66 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Konstantet"
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Argumente të gabuar për të ndërtuar '%s'"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Emër i palejuar."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "Nuk mund të heqësh:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20126,6 +20450,23 @@ msgid "Invalid product version:"
msgstr "Emri i grupit i pasakt."
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Duhet të perdorësh një shtesë të lejuar."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Windows"
msgstr ""
@@ -20141,6 +20482,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20259,7 +20604,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Instanco"
@@ -21055,13 +21401,16 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
+msgid "Navpoly"
msgstr ""
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Fshi Nyjen"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Travel Cost"
msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
@@ -22186,12 +22535,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -24743,6 +25086,16 @@ msgid "3D Physics"
msgstr "Hapi i Fizikës %"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Metoda Pa Shpërqëndrime"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Metoda Pa Shpërqëndrime"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -26119,7 +26472,7 @@ msgstr ""
msgid "Refraction"
msgstr "Enumeracionet:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -26199,8 +26552,12 @@ msgid "Visible Instance Count"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+msgid "Sampling"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Partition Type"
msgstr "Ndrysho Tipin e %s"
#: scene/resources/navigation_mesh.cpp
@@ -26217,7 +26574,11 @@ msgid "Source Group Name"
msgstr "Resursi"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
+msgid "Agents"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26229,11 +26590,16 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Regions"
+msgstr "Hap të Fundit"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26246,6 +26612,11 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Details"
+msgstr "Ngarko të Parazgjedhur"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -26262,7 +26633,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -26660,6 +27031,11 @@ msgid "Scenario"
msgstr "Skenë"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Metoda Pa Shpërqëndrime"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -26677,6 +27053,26 @@ msgstr "E Parazgjedhur"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "E Parazgjedhur"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "E Parazgjedhur"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "E Parazgjedhur"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Modifiko Lidhjen: "
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/sr_Cyrl.po b/editor/translations/sr_Cyrl.po
index bc5d941bee..55387743e7 100644
--- a/editor/translations/sr_Cyrl.po
+++ b/editor/translations/sr_Cyrl.po
@@ -228,9 +228,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
#, fuzzy
msgid "Network"
msgstr "Мрежни ОÑматрач"
@@ -345,7 +346,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Ðедовољно бајтова за дешифровање бајтова, или неважећи формат."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "Ðеважећи ÑƒÐ½Ð¾Ñ %i (није прошао) у изразу"
#: core/math/expression.cpp
@@ -390,6 +392,16 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Режим померања"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "Обриши улаз"
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
#, fuzzy
@@ -594,7 +606,8 @@ msgstr "ОпиÑ"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "Покрени"
@@ -687,6 +700,11 @@ msgid "Main Run Args"
msgstr "Ðргументи Главне Сцене"
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Пут Ñцене:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -694,20 +712,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
-msgid "Version Control"
-msgstr "Верзија:"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "VCS(СиÑтем Контроле Верзије)"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Име Прикључка :"
+msgid "Version Control Plugin Name"
+msgstr "Верзија:"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -827,7 +840,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "Филтери..."
@@ -1112,6 +1126,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Слободно"
@@ -1128,7 +1143,7 @@ msgstr "Огледало"
msgid "Time:"
msgstr "Време:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "ВредноÑÑ‚:"
@@ -1410,11 +1425,75 @@ msgstr "Обриши одабрану траку."
#: editor/animation_track_editor.cpp
#, fuzzy
-msgid "Time (s): "
+msgid "Time (s):"
msgstr "X-Fade време (Ñек.):"
#: editor/animation_track_editor.cpp
#, fuzzy
+msgid "Position:"
+msgstr "Позиција панела"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Ротације корака:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "Скала:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "Тип:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Ðеважећи извозни нацрт:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Easing:"
+msgstr "Ублажавање У-Од"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "In-Handle:"
+msgstr "ПоÑтави дршку"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Out-Handle:"
+msgstr "ПоÑтави дршку"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "Додај Ñтвар"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "РеÑтартовање (Ñек.):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "End (s):"
+msgstr "Појављивање (Ñек.):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Ðнимације"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
msgid "Toggle Track Enabled"
msgstr "„Doppler“ режим"
@@ -1656,7 +1735,7 @@ msgstr "Уметни траку и кључ"
#: editor/animation_track_editor.cpp
#, fuzzy
-msgid "Method not found in object: "
+msgid "Method not found in object:"
msgstr "Метода није нађена у објекту:"
#: editor/animation_track_editor.cpp
@@ -2323,8 +2402,8 @@ msgid "Open"
msgstr "Отвори"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "ВлаÑници:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
#, fuzzy
@@ -2639,7 +2718,7 @@ msgid "Bus Options"
msgstr "ПоÑтавке баÑа"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Дуплирај"
@@ -2692,8 +2771,9 @@ msgstr "Отвори раÑпоред звучног баÑа"
msgid "There is no '%s' file."
msgstr "Ðема '%s' фајла."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "РаÑпоред"
#: editor/editor_audio_buses.cpp
@@ -2908,6 +2988,25 @@ msgid "Choose"
msgstr "Одабери"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "Копирај Путању Чвора"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "Пакет је инÑталиран уÑпешно!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "ÐеуÑпех:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Складиштење датотеке:"
@@ -2922,6 +3021,31 @@ msgstr "Паковање"
#: editor/editor_export.cpp
#, fuzzy
+msgid "Save PCK"
+msgstr "Сачувај као"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "ÐеуÑпех при прављењу директоријума."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "ÐеуÑпело упиÑивање фајла:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Ðе могу отворити датотеку за пиÑање:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Сачувај као"
+
+#: editor/editor_export.cpp
+#, fuzzy
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -3049,13 +3173,34 @@ msgstr "ШаблонÑка датотека није пронађена:\n"
msgid "Custom release template not found."
msgstr "Прилагођени образци објаве ниÑу пронађени."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "Управљај извозним шаблонима"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "Путања не поÑтоји."
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
#, fuzzy
-msgid "Template file not found:"
+msgid "Template file not found: \"%s\"."
msgstr "ШаблонÑка датотека није пронађена:\n"
#: editor/editor_export.cpp
#, fuzzy
+msgid "Failed to copy export template."
+msgstr "Ðеважећи извозни нацрт:"
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+#, fuzzy
+msgid "PCK Embedding"
+msgstr " Пуњење"
+
+#: editor/editor_export.cpp
+#, fuzzy
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr "Ðа 32-битним извозима уграђени PCK не може бити већи од 4 GiB."
@@ -3249,9 +3394,9 @@ msgid "Import"
msgstr "Увоз"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Извоз"
@@ -4484,15 +4629,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Сцена"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Пут Ñцене:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4623,6 +4759,11 @@ msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
+msgid "Version Control"
+msgstr "Верзија:"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+#, fuzzy
msgid "Username"
msgstr "Преименуј"
@@ -4650,6 +4791,10 @@ msgstr "Укљ./ИÑкљ. режим без Ñметње."
msgid "Add a new scene."
msgstr "Додај нову Ñцену."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Сцена"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Отвори претходну Ñцену."
@@ -5382,13 +5527,15 @@ msgid "Selected node is not a Viewport!"
msgstr "Одабрани нод није Viewport!"
#: editor/editor_properties_array_dict.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#, fuzzy
-msgid "Size: "
+msgid "Size:"
msgstr "Величина:"
#: editor/editor_properties_array_dict.cpp
#, fuzzy
-msgid "Page: "
+msgid "Page:"
msgstr "Страна:"
#: editor/editor_properties_array_dict.cpp
@@ -5498,6 +5645,11 @@ msgstr ""
"ÐиÑу пронађене поÑтавке извоза за ову платформу.\n"
"Молим, додајте поÑтавке у менију за извоз."
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Пројекат"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Пиши логику у _run() методи."
@@ -5783,7 +5935,9 @@ msgid "Draw Spaces"
msgstr "Позиви цртања"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
#, fuzzy
msgid "Navigation"
msgstr "Ðаправи навигациону мрежу"
@@ -6381,10 +6535,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Менаџер пројекта"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -7212,16 +7368,6 @@ msgstr "Замени Ñве"
#: editor/find_in_files.cpp
#, fuzzy
-msgid "Find: "
-msgstr "Ðађи"
-
-#: editor/find_in_files.cpp
-#, fuzzy
-msgid "Replace: "
-msgstr "Замени"
-
-#: editor/find_in_files.cpp
-#, fuzzy
msgid "Replace All (NO UNDO)"
msgstr "Замени Ñве"
@@ -7364,7 +7510,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Филтери..."
@@ -7634,7 +7780,7 @@ msgstr "ГенериÑање оÑног поравнаног граничниоÐ
#: editor/import/resource_importer_scene.cpp
#, fuzzy
-msgid "Generating for Mesh: "
+msgid "Generating for Mesh:"
msgstr "ГенериÑање оÑног поравнаног граничниог оквира (AABB)"
#: editor/import/resource_importer_scene.cpp
@@ -7662,6 +7808,18 @@ msgid "Saving..."
msgstr "Чување..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -8557,10 +8715,12 @@ msgstr "Опције Слојевитог Обмотавања"
msgid "Directions"
msgstr "Смерови"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "ПрошлоÑÑ‚"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "БудућноÑÑ‚"
@@ -8742,7 +8902,7 @@ msgstr "ПоÑтави крај анимације. Ово је кориÑно Ð
#: editor/plugins/animation_state_machine_editor.cpp
#, fuzzy
-msgid "Transition: "
+msgid "Transition:"
msgstr "Прелаз:"
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8761,11 +8921,6 @@ msgid "New name:"
msgstr "Ðово име:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "Скала:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "Појављивање (Ñек.):"
@@ -9765,6 +9920,7 @@ msgstr "Ðаправи Произвољне КоÑти од Чворова"
msgid "Clear Custom Bones"
msgstr "Обриши КоÑти"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9835,6 +9991,10 @@ msgid "Preview Canvas Scale"
msgstr "Преглед Величине Платна"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "РаÑпоред"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
msgid "Translation mask for inserting keys."
msgstr "Преводна маÑка за убацивање кључева."
@@ -10672,7 +10832,8 @@ msgid "Volume"
msgstr "Запремина"
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+#, fuzzy
+msgid "Emission Source:"
msgstr "Извор емиÑије: "
#: editor/plugins/particles_editor_plugin.cpp
@@ -10925,6 +11086,7 @@ msgid "Points"
msgstr "Помери тачку"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
#, fuzzy
msgid "Polygons"
msgstr "Полигон->UV"
@@ -11101,13 +11263,6 @@ msgid "Instance:"
msgstr "ИнÑтанца:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "Тип:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
#, fuzzy
msgid "Open in Editor"
@@ -11117,11 +11272,6 @@ msgstr "Отвори у Уреднику"
msgid "Load Resource"
msgstr "Учитај реÑурÑ"
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#, fuzzy
-msgid "ResourcePreloader"
-msgstr "РеÑурÑ"
-
#: editor/plugins/room_manager_editor_plugin.cpp
#, fuzzy
msgid "Flip Portals"
@@ -11912,12 +12062,16 @@ msgstr "Режим ротације"
msgid "Translate"
msgstr "Померај:"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
+#, fuzzy
+msgid "Scaling:"
msgstr "Скала: "
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
+#, fuzzy
+msgid "Translating:"
msgstr "Померај: "
#: editor/plugins/spatial_editor_plugin.cpp
@@ -11942,12 +12096,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
-msgid "Size:"
-msgstr "Величина:"
-
-#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
msgid "Objects Drawn:"
msgstr "Ðацртани објекти"
@@ -12468,7 +12616,7 @@ msgstr "Ðеважећа геометрија, неуÑпеша замена ÑÐ
#: editor/plugins/sprite_editor_plugin.cpp
#, fuzzy
-msgid "Convert to Mesh2D"
+msgid "Convert to MeshInstance2D"
msgstr "Претвори у велика Ñлова"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12508,17 +12656,17 @@ msgstr "Ðалепи оквир"
#: editor/plugins/sprite_editor_plugin.cpp
#, fuzzy
-msgid "Simplification: "
+msgid "Simplification:"
msgstr "ПоједноÑтављено:"
#: editor/plugins/sprite_editor_plugin.cpp
#, fuzzy
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr "Умањи (ПикÑели):"
#: editor/plugins/sprite_editor_plugin.cpp
#, fuzzy
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr "Увећај (ПикÑели):"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -13590,8 +13738,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr "Одабери претходни облик, под-плочицу, или плочицу."
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
#, fuzzy
msgid "Region"
msgstr "Режим ротације"
@@ -15377,40 +15524,11 @@ msgstr "Обриши поÑтавку „%s“?"
#: editor/project_export.cpp
#, fuzzy
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-"ÐеуÑпешан извоз пројекта за плазформу '%s'.\n"
-"Изгледа да недоÑтају извозни нацрти или ниÑу иÑправни."
-
-#: editor/project_export.cpp
-#, fuzzy
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-"ÐеуÑпешан извоз пројекта за платформу '%s'.\n"
-"Ово може бити због проблема Ñа подешавањима у извозним поÑтавкама или твојим "
-"извозним подешавањима."
-
-#: editor/project_export.cpp
-#, fuzzy
msgid "Exporting All"
msgstr "Извоз"
#: editor/project_export.cpp
#, fuzzy
-msgid "The given export path doesn't exist:"
-msgstr "Путања не поÑтоји."
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr "Извозни шаблони за ову платформу или ниÑу пронађени или Ñу иÑкварене:"
-
-#: editor/project_export.cpp
-#, fuzzy
msgid "Export Path"
msgstr "Извези пројекат"
@@ -15565,6 +15683,11 @@ msgid "Export templates for this platform are missing:"
msgstr "Извозни шаблони за ову платформу ниÑу пронађени:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "ОÑнивачи пројекта"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "Управљај извозним шаблонима"
@@ -17375,7 +17498,8 @@ msgid "Attach Node Script"
msgstr "Припој Чвор Скрипту"
#: editor/script_editor_debugger.cpp
-msgid "Remote "
+#, fuzzy
+msgid "Remote %s:"
msgstr "Удаљени уређај "
#: editor/script_editor_debugger.cpp
@@ -18316,7 +18440,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "Полигон->UV"
@@ -18507,7 +18631,7 @@ msgstr "Онемогућен GDNative Singleton"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
#, fuzzy
-msgid "Libraries: "
+msgid "Libraries:"
msgstr "Библиотеке:"
#: modules/gdnative/nativescript/nativescript.cpp
@@ -18965,7 +19089,6 @@ msgid "Use In Baked Light"
msgstr "Изпеци МапеСенчења"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -18995,6 +19118,19 @@ msgstr "Средина"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Ðаправи навигациону мрежу"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Ðаправи навигациону мрежу"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Next Plane"
@@ -19454,7 +19590,7 @@ msgstr ""
#: modules/visual_script/visual_script.cpp
#, fuzzy
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr "Члан вратио неважећи излаз Ñеквенце:"
#: modules/visual_script/visual_script.cpp
@@ -19464,7 +19600,7 @@ msgstr "Пронађена Ñеквенца битова али не члан н
#: modules/visual_script/visual_script.cpp
#, fuzzy
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr "Преоптерећење наÑлаге Ñа дубином наÑлаге:"
#: modules/visual_script/visual_script.cpp
@@ -19874,7 +20010,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -19882,7 +20018,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -20057,12 +20193,14 @@ msgid "Operator"
msgstr "Прекриј оператор."
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
+#, fuzzy
+msgid "Invalid argument of type:"
+msgstr "Ðеважећи аргументи ка конÑтрукту '%s'"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
+#, fuzzy
+msgid "Invalid arguments:"
+msgstr "Ðеважеће име."
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -20074,12 +20212,13 @@ msgid "Var Name"
msgstr "Име"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableGet not found in script:"
+msgstr "СкупПроменљивих није нађен у Ñкрипти:"
#: modules/visual_script/visual_script_nodes.cpp
#, fuzzy
-msgid "VariableSet not found in script: "
+msgid "VariableSet not found in script:"
msgstr "СкупПроменљивих није нађен у Ñкрипти:"
#: modules/visual_script/visual_script_nodes.cpp
@@ -20644,10 +20783,6 @@ msgid "Could not execute on device."
msgstr "ÐеуÑпех при прављењу директоријума."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
#, fuzzy
msgid ""
"Android build template not installed in the project. Install it from the "
@@ -20768,12 +20903,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Сигнали"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -20793,6 +20932,11 @@ msgid "Could not find keystore, unable to export."
msgstr "ÐеуÑпешно отварање нацрта за извоз:"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "Ðе могу покренути подпроцеÑ!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -20823,7 +20967,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -20838,9 +20982,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
"Верзија Android изградње Ñе не подудара:\n"
@@ -20850,12 +20992,12 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Could not export project files to gradle project\n"
+msgid "Could not export project files to gradle project."
msgstr "ÐеуÑпешна измена project.godot-а у путањи пројекта."
#: platform/android/export/export_plugin.cpp
@@ -20871,7 +21013,7 @@ msgstr "Изградња Android Пројекта (gradle)"
#: platform/android/export/export_plugin.cpp
#, fuzzy
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
"Изградња Android пројекта неуÑпешна, провери излаз за грешке.\n"
@@ -20889,7 +21031,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr "Ðнимација није нађена: '%s'"
#: platform/android/export/export_plugin.cpp
@@ -20899,15 +21041,12 @@ msgstr "Прављење контура..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
msgstr "ÐеуÑпешно отварање нацрта за извоз:"
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -20919,7 +21058,7 @@ msgstr "Додавање %s..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr "ÐеуÑпело упиÑивање фајла:"
#: platform/android/export/export_plugin.cpp
@@ -21163,6 +21302,17 @@ msgstr "Ðаправи чвор"
msgid "Custom BG Color"
msgstr "Ðаправи чвор"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "Управљај извозним шаблонима"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Прилагођени образци објаве ниÑу пронађени."
+
#: platform/iphone/export/export.cpp
#, fuzzy
msgid "App Store Team ID not specified - cannot configure the project."
@@ -21191,25 +21341,34 @@ msgstr "Покрени извезени HTML у уобичајеном претÑ
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not open template for export:"
+msgid "Could not open template for export: \"%s\"."
msgstr "ÐеуÑпешно отварање нацрта за извоз:"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Invalid export template:"
+msgid "Invalid export template: \"%s\"."
msgstr "Ðеважећи извозни нацрт:"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not write file:"
+msgid "Could not write file: \"%s\"."
msgstr "ÐеуÑпело упиÑивање фајла:"
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "ПоÑтави дршку"
+
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read file:"
+msgid "Could not read file: \"%s\"."
msgstr "ÐеуÑпело упиÑивање фајла:"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "ОдвојеноÑÑ‚:"
@@ -21285,17 +21444,17 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr "ÐеуÑпешно читаље произвољне HTML шкољке:"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr "ÐеуÑпех при прављењу директоријума."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr "Грешка памћена Ñцена."
#: platform/javascript/export/export.cpp
@@ -21595,9 +21754,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "ÐеуÑпело упиÑивање фајла:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "Ðе могу покренути подпроцеÑ!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Локализација"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -21613,21 +21791,76 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "Ðије пронађено!"
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Грешка при чувању TileSet!"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Смерови"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "Ðе могу покренути подпроцеÑ!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "Прављење приказа"
#: platform/osx/export/export.cpp
#, fuzzy
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr "ÐеуÑпешно отварање нацрта за извоз:"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Ðеважећи извозни нацрт:"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -21635,7 +21868,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -21677,6 +21910,16 @@ msgstr ""
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "ZIP Creation"
+msgstr "Пројекат"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr "ÐеуÑпешна измена project.godot-а у путањи пројекта."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Invalid bundle identifier:"
msgstr "Ðеважећи идентификатор:"
@@ -22002,6 +22245,11 @@ msgid "Debug Algorithm"
msgstr "Дебагер"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "ÐеуÑпех при чувању теме:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -22049,6 +22297,70 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "ÐаÑумична ротација:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "ÐеуÑпешно отварање нацрта за извоз:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "ÐеуÑпешно отварање нацрта за извоз:"
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "ÐеуÑпешно отварање нацрта за извоз:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "ÐеуÑпешно отварање нацрта за извоз:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Ðеважећи идентификатор:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Ðеважеће име."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "ÐеуÑпех при чувању теме:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -22070,6 +22382,23 @@ msgid "Invalid product version:"
msgstr "Ðеважећи GUID продукт."
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Мора Ñе кориÑтити важећа екÑтензија."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "Ðов Прозор"
@@ -22086,6 +22415,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -22214,7 +22547,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Одабери ОдÑтојање:"
@@ -23089,18 +23423,19 @@ msgstr ""
"радио. Молимо поÑтави оÑобину или нацртај многоугао."
#: scene/2d/navigation_polygon.cpp
-#, fuzzy
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-"ИнÑтанцаÐавигационогМногоугла мора бити дете или прадете Ðавигација2Д чвору. "
-"Само обезбеђује навигационе податке."
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr ""
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Средина Доле"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "Путуј"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
#, fuzzy
@@ -24367,15 +24702,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-#, fuzzy
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-"ÐавМрежнаИнÑтанца мора бити дете или прадете Ðавигационог чвора. Само "
-"обезбећује навигационе податке."
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
#, fuzzy
msgid "NavMesh"
@@ -27124,6 +27450,16 @@ msgid "3D Physics"
msgstr "Слика физике %"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Ðаправи навигациону мрежу"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Ðаправи навигациону мрежу"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -28551,7 +28887,7 @@ msgstr "Прелаз:"
msgid "Refraction"
msgstr "ОдвојеноÑÑ‚:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -28636,7 +28972,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "Скала: "
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "ПоÑтави Ð’Ñ€Ñту Променљиве"
#: scene/resources/navigation_mesh.cpp
@@ -28654,10 +28995,15 @@ msgid "Source Group Name"
msgstr "Извор"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "Ðргументи Главне Сцене"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -28667,11 +29013,16 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Regions"
+msgstr "Режим ротације"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Merge Size"
msgstr "Споји од Ñцене"
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -28685,6 +29036,11 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Details"
+msgstr "Учитај уобичајено"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Sample Distance"
msgstr "Одабери ОдÑтојање:"
@@ -28702,7 +29058,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -29120,6 +29476,11 @@ msgid "Scenario"
msgstr "Сцена"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Ðаправи навигациону мрежу"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -29137,6 +29498,26 @@ msgstr "Леви линеарни"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Уобичајено"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Преглед"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "ТеÑтирање"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Повезивање не уÑпешно"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/sr_Latn.po b/editor/translations/sr_Latn.po
index c88ca69177..21d94999a2 100644
--- a/editor/translations/sr_Latn.po
+++ b/editor/translations/sr_Latn.po
@@ -213,9 +213,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr ""
@@ -325,7 +326,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Nema dovoljno bajtova za dekodiranje bajtova, ili nevažeći format."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "Nevažeći unos %i (nije prenesen) u izrazu"
#: core/math/expression.cpp
@@ -369,6 +371,15 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Napravi"
+
+#: core/os/input.cpp
+msgid "Use Accumulated Input"
+msgstr ""
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -558,7 +569,8 @@ msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr ""
@@ -644,24 +656,23 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-msgid "Plugin Name"
+msgid "Version Control Plugin Name"
msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
@@ -770,7 +781,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "Filtriraj signale"
@@ -1043,6 +1055,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Slobodno"
@@ -1059,7 +1072,7 @@ msgstr "Ogledalo"
msgid "Time:"
msgstr "Vreme:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Vrednost:"
@@ -1304,10 +1317,71 @@ msgid "Remove this track."
msgstr "Ukloni ovu traku."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "Vreme (s): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Napravi"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Kontanta"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Nedozvoljen indeks tipa %s za bazu tipa %s"
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "Razdeli Krivu"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Napravi"
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Animacije:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "Umogući/Onemogući Traku"
@@ -1521,7 +1595,8 @@ msgid "Add Method Track Key"
msgstr "Dodaj KljuÄ Metodne Trake"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "Metod nije nađen u objektu: "
#: editor/animation_track_editor.cpp
@@ -2129,8 +2204,8 @@ msgid "Open"
msgstr "Otvori"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Vlasnici Od:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
msgid ""
@@ -2424,7 +2499,7 @@ msgid "Bus Options"
msgstr "Podešavanja Magistrale"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr ""
@@ -2476,8 +2551,8 @@ msgstr ""
msgid "There is no '%s' file."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+msgid "Layout:"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -2680,6 +2755,22 @@ msgid "Choose"
msgstr ""
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed successfully."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed."
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr ""
@@ -2692,6 +2783,26 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp
+msgid "Save PCK"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Cannot create file \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed to export project files."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Can't open file to read from path \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Save ZIP"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2795,8 +2906,25 @@ msgstr ""
msgid "Custom release template not found."
msgstr ""
+#: editor/editor_export.cpp
+msgid "Prepare Template"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "The given export path doesn't exist."
+msgstr ""
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+msgid "Template file not found: \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed to copy export template."
+msgstr ""
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
msgstr ""
#: editor/editor_export.cpp
@@ -2966,9 +3094,9 @@ msgid "Import"
msgstr ""
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr ""
@@ -4045,14 +4173,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4172,6 +4292,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Animacija Preimenuj Kanal"
@@ -4200,6 +4324,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
@@ -4829,11 +4957,13 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+msgid "Page:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
@@ -4928,6 +5058,11 @@ msgid ""
"as runnable."
msgstr ""
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Izmjeni Selekciju Krivulje"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -5187,7 +5322,9 @@ msgid "Draw Spaces"
msgstr ""
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
#, fuzzy
msgid "Navigation"
msgstr "Napravi"
@@ -5743,10 +5880,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Sorting Order"
msgstr ""
@@ -6474,14 +6613,6 @@ msgid "Replace in Files"
msgstr ""
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr ""
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr ""
@@ -6609,7 +6740,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Filtriraj signale"
@@ -6864,7 +6995,7 @@ msgid "Generating Lightmaps"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+msgid "Generating for Mesh:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -6892,6 +7023,18 @@ msgid "Saving..."
msgstr ""
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7675,10 +7818,12 @@ msgstr ""
msgid "Directions"
msgstr ""
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr ""
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr ""
@@ -7833,7 +7978,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
+#, fuzzy
+msgid "Transition:"
msgstr "Tranzicija: "
#: editor/plugins/animation_state_machine_editor.cpp
@@ -7850,11 +7996,6 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr ""
@@ -8736,6 +8877,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr ""
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -8799,6 +8941,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -9546,7 +9692,7 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+msgid "Emission Source:"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
@@ -9776,6 +9922,7 @@ msgid "Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr "Poligoni"
@@ -9929,13 +10076,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -9944,10 +10084,6 @@ msgstr ""
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -10634,13 +10770,17 @@ msgstr ""
msgid "Translate"
msgstr ""
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr ""
+#, fuzzy
+msgid "Scaling:"
+msgstr "Razmera"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "Tranzicija: "
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -10663,11 +10803,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11143,8 +11278,9 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
-msgstr ""
+#, fuzzy
+msgid "Convert to MeshInstance2D"
+msgstr "Konvertuj u CPUParticles2D"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Invalid geometry, can't create polygon."
@@ -11175,15 +11311,16 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "Sve sekcije"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12121,8 +12258,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr ""
@@ -13589,31 +13725,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr ""
@@ -13748,6 +13863,11 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Izmjeni Selekciju Krivulje"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr ""
@@ -15190,8 +15310,9 @@ msgid "Attach Node Script"
msgstr ""
#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr ""
+#, fuzzy
+msgid "Remote %s:"
+msgstr "Obriši Selekciju"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -16032,7 +16153,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "Poligoni"
@@ -16201,7 +16322,7 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+msgid "Libraries:"
msgstr ""
#: modules/gdnative/nativescript/nativescript.cpp
@@ -16613,7 +16734,6 @@ msgid "Use In Baked Light"
msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -16642,6 +16762,19 @@ msgstr "Centriraj ÄŒvor"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Napravi"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Napravi"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -17048,7 +17181,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17056,7 +17189,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17430,7 +17563,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17438,7 +17571,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17595,12 +17728,14 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
+#, fuzzy
+msgid "Invalid argument of type:"
+msgstr "Neispravni argumenti za konstrukciju '%s'"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
+#, fuzzy
+msgid "Invalid arguments:"
+msgstr "Neispravni argumenti za konstrukciju '%s'"
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -17611,12 +17746,14 @@ msgid "Var Name"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableGet not found in script:"
+msgstr "Metod nije nađen u objektu: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableSet not found in script:"
+msgstr "Metod nije nađen u objektu: "
#: modules/visual_script/visual_script_nodes.cpp
msgid "Preload"
@@ -18123,10 +18260,6 @@ msgid "Could not execute on device."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18230,12 +18363,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Animacija Uduplaj KljuÄeve"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18251,6 +18388,10 @@ msgid "Could not find keystore, unable to export."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Could not start apksigner executable."
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -18279,7 +18420,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18290,19 +18431,17 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+msgid "Could not export project files to gradle project."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18315,7 +18454,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -18330,7 +18469,7 @@ msgid ""
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18338,15 +18477,12 @@ msgid "Creating APK..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -18356,7 +18492,7 @@ msgid "Adding files..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18592,6 +18728,15 @@ msgstr "Animacija Uduplaj KljuÄeve"
msgid "Custom BG Color"
msgstr "Animacija Uduplaj KljuÄeve"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+msgid "Prepare Templates"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Export template not found."
+msgstr ""
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18613,19 +18758,29 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Could not open template for export: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
+msgstr "Nedozvoljen indeks tipa %s za bazu tipa %s"
+
+#: platform/javascript/export/export.cpp
+msgid "Could not write file: \"%s\"."
msgstr ""
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Izmeni Konekciju:"
+
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not read file: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+msgid "PWA"
msgstr ""
#: platform/javascript/export/export.cpp
@@ -18702,15 +18857,15 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr ""
#: platform/javascript/export/export.cpp
@@ -18987,9 +19142,26 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Could not open icon file \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Could not start xcrun executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Napravi"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19005,18 +19177,71 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
msgid "No identity found."
msgstr "Identitet nije pronađen."
#: platform/osx/export/export.cpp
+msgid "Cannot sign file %s."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Sve sekcije"
+
+#: platform/osx/export/export.cpp
+msgid "Could not start hdiutil executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Creating app bundle"
msgstr ""
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Homogenost Boje."
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -19024,7 +19249,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -19065,6 +19290,15 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "Izmjeni Selekciju Krivulje"
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr ""
@@ -19364,6 +19598,10 @@ msgid "Debug Algorithm"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Failed to rename temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -19408,6 +19646,64 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Kontanta"
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Neispravni argumenti za konstrukciju '%s'"
+
+#: platform/windows/export/export.cpp
+msgid "Invalid timestamp server."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Failed to remove temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19426,6 +19722,22 @@ msgid "Invalid product version:"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Failed to open executable file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Windows"
msgstr ""
@@ -19441,6 +19753,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
msgid "Frames"
@@ -19555,7 +19871,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
@@ -20345,13 +20662,16 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
+msgid "Navpoly"
msgstr ""
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Centriraj ÄŒvor"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Travel Cost"
msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
@@ -21466,12 +21786,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -23971,6 +24285,16 @@ msgid "3D Physics"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Napravi"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Napravi"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -25322,7 +25646,7 @@ msgstr "Tranzicija: "
msgid "Refraction"
msgstr "Odvajanje:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -25400,8 +25724,14 @@ msgid "Visible Instance Count"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Sample Partition Type"
-msgstr ""
+#, fuzzy
+msgid "Sampling"
+msgstr "Razmera"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
+msgstr "Odvajanje:"
#: scene/resources/navigation_mesh.cpp
msgid "Parsed Geometry Type"
@@ -25416,7 +25746,11 @@ msgid "Source Group Name"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
+msgid "Agents"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -25428,11 +25762,16 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Regions"
+msgstr "Uduplaj Selekciju"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -25445,6 +25784,10 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+msgid "Details"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -25461,7 +25804,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -25846,6 +26189,11 @@ msgid "Scenario"
msgstr ""
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Napravi"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -25862,6 +26210,26 @@ msgstr "Levi Linearni"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Vrednost:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Traži Zamenu za:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Traži Zamenu za:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Izmeni Konekciju:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/sv.po b/editor/translations/sv.po
index 598df10056..54655bcecf 100644
--- a/editor/translations/sv.po
+++ b/editor/translations/sv.po
@@ -243,9 +243,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
#, fuzzy
msgid "Network"
msgstr "Nätverksprofilerare"
@@ -358,7 +359,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Inte nog med bytes för att avkoda, eller ogiltigt format."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "Ogiltig indata %i (ej överförd) i uttrycket"
#: core/math/expression.cpp
@@ -403,6 +405,15 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Växla Läge"
+
+#: core/os/input.cpp
+msgid "Use Accumulated Input"
+msgstr ""
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -602,7 +613,8 @@ msgstr "Beskrivning"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "Kör"
@@ -692,6 +704,11 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Scen Filsökväg:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -699,19 +716,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Versionshantering"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Versionshantering"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Plugin Namn:"
+msgid "Version Control Plugin Name"
+msgstr "Versionshantering"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -828,7 +841,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "Filter:"
@@ -1104,6 +1118,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Gratis"
@@ -1120,7 +1135,7 @@ msgstr "Spegla"
msgid "Time:"
msgstr "Tid:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Värde:"
@@ -1367,10 +1382,72 @@ msgid "Remove this track."
msgstr "Ta bort detta spår."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "Tid (s): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Dockposition"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Ctrl: Rotera"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "Skala:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "Typ:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Måste använda en giltigt filändelse."
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Easing:"
+msgstr "Varning:"
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "Ljud-Lyssnare"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Starta"
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Animationer:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "Växla Spår På"
@@ -1584,7 +1661,8 @@ msgid "Add Method Track Key"
msgstr "Lägg till metodspårnyckel"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "Metoden hittades inte i objektet: "
#: editor/animation_track_editor.cpp
@@ -2198,8 +2276,8 @@ msgid "Open"
msgstr "Öppna"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Ägare av:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
#, fuzzy
@@ -2505,7 +2583,7 @@ msgid "Bus Options"
msgstr "Buss-alternativ"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Duplicera"
@@ -2557,8 +2635,9 @@ msgstr "Öppna Ljud-Buss Layout"
msgid "There is no '%s' file."
msgstr "Det finns ingen '%s' fil."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "Layout"
#: editor/editor_audio_buses.cpp
@@ -2762,6 +2841,25 @@ msgid "Choose"
msgstr "Välj"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "Kopiera Nod-Sökväg"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "Paketet installerades!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "Misslyckades:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Lagrar Fil:"
@@ -2774,6 +2872,31 @@ msgid "Packing"
msgstr "Packar"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Spara Som"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "Kunde inte skapa mapp."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Kunde inte exportera projektfiler"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Kan inte öppna fil för skrivande:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Spara Som"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2891,11 +3014,32 @@ msgstr "Mallfil hittades inte."
msgid "Custom release template not found."
msgstr "Anpassad release mall hittades inte."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "Hantera Mallar"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "Den angivna export vägen finns inte:"
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "Mallfil hittades inte:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "Hantera exportmallar..."
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr "Den inbäddade PCK får inte vara större än 4 GiB på 32 bitars exporter."
@@ -3075,9 +3219,9 @@ msgid "Import"
msgstr "Importera"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Exportera"
@@ -4281,15 +4425,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Scen"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Scen Filsökväg:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4416,6 +4551,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Versionshantering"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Byt namn"
@@ -4444,6 +4583,10 @@ msgstr "Växla distraktionsfritt läge."
msgid "Add a new scene."
msgstr "Lägg till en ny scen."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Scen"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Gå till föregående öppna scen."
@@ -5099,11 +5242,14 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr "Storlek: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
+msgstr "Storlek:"
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+#, fuzzy
+msgid "Page:"
msgstr "Sida: "
#: editor/editor_properties_array_dict.cpp
@@ -5203,6 +5349,11 @@ msgid ""
"as runnable."
msgstr ""
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Projekt"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Skriv din logik i _run() metoden."
@@ -5480,7 +5631,9 @@ msgid "Draw Spaces"
msgstr ""
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
#, fuzzy
msgid "Navigation"
msgstr "Animations-Node"
@@ -6060,10 +6213,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Projektledare"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -6853,14 +7008,6 @@ msgid "Replace in Files"
msgstr "Ersätt Alla"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "Hitta: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "Ersätt: "
-
-#: editor/find_in_files.cpp
#, fuzzy
msgid "Replace All (NO UNDO)"
msgstr "Ersätt Alla"
@@ -7001,7 +7148,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Filter:"
@@ -7265,7 +7412,8 @@ msgid "Generating Lightmaps"
msgstr "Genererar Lightmaps"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+#, fuzzy
+msgid "Generating for Mesh:"
msgstr "Generera för mesh: "
#: editor/import/resource_importer_scene.cpp
@@ -7293,6 +7441,18 @@ msgid "Saving..."
msgstr "Sparar..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -8127,11 +8287,13 @@ msgstr "Alternativ"
msgid "Directions"
msgstr "Riktningar"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
msgid "Past"
msgstr "Klistra in"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr ""
@@ -8293,7 +8455,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
+#, fuzzy
+msgid "Transition:"
msgstr "Övergång: "
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8310,11 +8473,6 @@ msgid "New name:"
msgstr "Nytt namn:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "Skala:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr ""
@@ -9240,6 +9398,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr ""
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9304,6 +9463,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "Layout"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -10086,8 +10249,9 @@ msgid "Volume"
msgstr "Volym"
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr ""
+#, fuzzy
+msgid "Emission Source:"
+msgstr "Synliga Kollisionsformer"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
@@ -10322,6 +10486,7 @@ msgid "Points"
msgstr "Flytta Ner"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
#, fuzzy
msgid "Polygons"
msgstr "Redigera Polygon"
@@ -10481,13 +10646,6 @@ msgid "Instance:"
msgstr "Instans:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "Typ:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -10496,11 +10654,6 @@ msgstr ""
msgid "Load Resource"
msgstr "Ladda Resurs"
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#, fuzzy
-msgid "ResourcePreloader"
-msgstr "Resurs"
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -11241,13 +11394,17 @@ msgstr "Ctrl: Rotera"
msgid "Translate"
msgstr "Översättningar"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
+#, fuzzy
+msgid "Scaling:"
msgstr "Skalning: "
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "Översättningar:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -11271,11 +11428,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr "Storlek:"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11772,7 +11924,7 @@ msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
#, fuzzy
-msgid "Convert to Mesh2D"
+msgid "Convert to MeshInstance2D"
msgstr "Konvertera till %s"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11806,15 +11958,16 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "Åtgärd"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12820,8 +12973,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
#, fuzzy
msgid "Region"
msgstr "Raw-Läge"
@@ -14326,32 +14478,11 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
#, fuzzy
msgid "Exporting All"
msgstr "Exportera"
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr "Den angivna export vägen finns inte:"
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
#, fuzzy
msgid "Export Path"
msgstr "Exportera Projekt"
@@ -14495,6 +14626,11 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Projektgrundare"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr ""
@@ -15999,8 +16135,9 @@ msgid "Attach Node Script"
msgstr ""
#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr ""
+#, fuzzy
+msgid "Remote %s:"
+msgstr "Ta bort"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -16864,7 +17001,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "Redigera Polygon"
@@ -17039,7 +17176,8 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+#, fuzzy
+msgid "Libraries:"
msgstr "Bibliotek: "
#: modules/gdnative/nativescript/nativescript.cpp
@@ -17477,7 +17615,6 @@ msgid "Use In Baked Light"
msgstr "Höger"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17507,6 +17644,19 @@ msgstr "Skapa Node"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Animations-Node"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Animations-Node"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Next Plane"
@@ -17923,7 +18073,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17931,7 +18081,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -18311,7 +18461,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18319,7 +18469,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18489,12 +18639,14 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
+#, fuzzy
+msgid "Invalid argument of type:"
+msgstr "Ogiltiga argument för att bygga '%s'"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
+#, fuzzy
+msgid "Invalid arguments:"
+msgstr "Ogiltigt namn."
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -18506,11 +18658,13 @@ msgid "Var Name"
msgstr "Namn"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+#, fuzzy
+msgid "VariableGet not found in script:"
msgstr "VariableGet hittades inte i Skript: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+#, fuzzy
+msgid "VariableSet not found in script:"
msgstr "VariableSet hittades inte i Skript: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -19054,10 +19208,6 @@ msgid "Could not execute on device."
msgstr "Kunde inte skapa mapp."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -19161,12 +19311,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Signaler"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19185,6 +19339,11 @@ msgid "Could not find keystore, unable to export."
msgstr "Det gick inte att hitta nyckellager, det gick inte att exportera."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "Kunde inte starta underprocess!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -19215,7 +19374,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19226,20 +19385,19 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
-msgstr ""
+#, fuzzy
+msgid "Could not export project files to gradle project."
+msgstr "Kunde inte exportera projektfiler"
#: platform/android/export/export_plugin.cpp
msgid "Could not write expansion package file!"
@@ -19251,7 +19409,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -19267,7 +19425,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr "Animeringsverktyg"
#: platform/android/export/export_plugin.cpp
@@ -19277,15 +19435,12 @@ msgstr "Skapar konturer..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
msgstr "Kunde inte öppna mall för export:"
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -19296,7 +19451,8 @@ msgid "Adding files..."
msgstr "Lägger till %s..."
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+#, fuzzy
+msgid "Could not export project files."
msgstr "Kunde inte exportera projektfiler"
#: platform/android/export/export_plugin.cpp
@@ -19538,6 +19694,17 @@ msgstr "Klipp ut Noder"
msgid "Custom BG Color"
msgstr "Klipp ut Noder"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "Hantera Mallar"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Anpassad release mall hittades inte."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -19559,23 +19726,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Kör exporterad HTML i systemets standardwebbläsare."
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
msgstr "Kunde inte öppna mall för export:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
-msgstr ""
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
+msgstr "Måste använda en giltigt filändelse."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+#, fuzzy
+msgid "Could not write file: \"%s\"."
msgstr "Kunde inte skriva till filen:"
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Innehåll:"
+
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read file:"
+msgid "Could not read file: \"%s\"."
msgstr "Kunde inte skriva till filen:"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "Sektioner:"
@@ -19651,15 +19830,17 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr "Kunde inte skriva till filen:"
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+#, fuzzy
+msgid "Could not create HTTP server directory: %s."
msgstr "Kunde inte skapa HTTP-serverkatalog:"
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+#, fuzzy
+msgid "Error starting HTTP server: %d."
msgstr "Fel vid start av HTTP-server:"
#: platform/javascript/export/export.cpp
@@ -19957,9 +20138,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Kunde inte exportera projektfiler"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "Kunde inte starta underprocess!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Lokalisering"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19975,21 +20175,76 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "Hittades inte!"
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Fel vid sparande av fil: %s"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Riktningar"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "Kunde inte starta underprocess!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "Skapar Miniatyr"
#: platform/osx/export/export.cpp
#, fuzzy
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr "Kunde inte öppna mall för export:"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Ogiltig Sökväg."
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -19997,7 +20252,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -20039,6 +20294,16 @@ msgstr ""
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "ZIP Creation"
+msgstr "Projekt"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr "Kunde inte öppna mall för export:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Invalid bundle identifier:"
msgstr "Ogiltig identifierare:"
@@ -20351,6 +20616,11 @@ msgid "Debug Algorithm"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Kan inte spara tema till fil:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20397,6 +20667,70 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Slumpmässig Rotation:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "Det gick inte att hitta nyckellager, det gick inte att exportera."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "Det gick inte att hitta nyckellager, det gick inte att exportera."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "Det gick inte att hitta nyckellager, det gick inte att exportera."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "Det gick inte att hitta nyckellager, det gick inte att exportera."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Ogiltig identifierare:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Ogiltigt namn."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "Kan inte spara tema till fil:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20418,6 +20752,23 @@ msgid "Invalid product version:"
msgstr "Ogiltig produkt GUID."
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Måste använda en giltigt filändelse."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "Nytt Fönster"
@@ -20434,6 +20785,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20557,7 +20912,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Instans"
@@ -21383,15 +21739,16 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
+msgid "Navpoly"
msgstr ""
-"NavigationPolygonInstance måste vara ett barn eller barnbarn till en "
-"Navigation2D-Node. Den ger bara navigationsdata."
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Botten"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Travel Cost"
msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
@@ -22572,12 +22929,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -25203,6 +25554,16 @@ msgid "3D Physics"
msgstr "Fysik Bildruta %"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Animations-Node"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Animations-Node"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -26600,7 +26961,7 @@ msgstr "Övergång: "
msgid "Refraction"
msgstr "Sektioner:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -26682,7 +27043,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "Skalning: "
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "Ändra Bas Typ:"
#: scene/resources/navigation_mesh.cpp
@@ -26699,10 +27065,15 @@ msgid "Source Group Name"
msgstr "Källa"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "Innehåll:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -26711,11 +27082,16 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Regions"
+msgstr "Raw-Läge"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26728,6 +27104,11 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Details"
+msgstr "Ladda Standard"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -26744,7 +27125,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -27154,6 +27535,11 @@ msgid "Scenario"
msgstr "Scen"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Animations-Node"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -27171,6 +27557,26 @@ msgstr "Linjär"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Standard"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Förhandsgranska"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Höger"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Redigera Koppling:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/ta.po b/editor/translations/ta.po
deleted file mode 100644
index d8cf80246b..0000000000
--- a/editor/translations/ta.po
+++ /dev/null
@@ -1,26267 +0,0 @@
-# Tamil translation of the Godot Engine editor
-# Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur.
-# Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md).
-# This file is distributed under the same license as the Godot source code.
-#
-# Senthil Kumar K <logickumar@gmail.com>, 2017.
-# Survesh VRL <123survesh@gmail.com>, 2020.
-# Sridhar <sreeafmarketing@gmail.com>, 2020.
-msgid ""
-msgstr ""
-"Project-Id-Version: Godot Engine editor\n"
-"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: 2020-09-01 10:38+0000\n"
-"Last-Translator: Sridhar <sreeafmarketing@gmail.com>\n"
-"Language-Team: Tamil <https://hosted.weblate.org/projects/godot-engine/godot/"
-"ta/>\n"
-"Language: ta\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.2.1-dev\n"
-
-#: core/bind/core_bind.cpp main/main.cpp
-msgid "Tablet Driver"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Clipboard"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-#, fuzzy
-msgid "Current Screen"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-
-#: core/bind/core_bind.cpp
-msgid "Exit Code"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "V-Sync Enabled"
-msgstr ""
-
-#: core/bind/core_bind.cpp main/main.cpp
-msgid "V-Sync Via Compositor"
-msgstr ""
-
-#: core/bind/core_bind.cpp main/main.cpp
-msgid "Delta Smoothing"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Low Processor Usage Mode"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Low Processor Usage Mode Sleep (µsec)"
-msgstr ""
-
-#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
-msgid "Keep Screen On"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Min Window Size"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Max Window Size"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Screen Orientation"
-msgstr ""
-
-#: core/bind/core_bind.cpp core/project_settings.cpp main/main.cpp
-#: platform/uwp/os_uwp.cpp
-msgid "Window"
-msgstr ""
-
-#: core/bind/core_bind.cpp core/project_settings.cpp
-msgid "Borderless"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Per Pixel Transparency Enabled"
-msgstr ""
-
-#: core/bind/core_bind.cpp core/project_settings.cpp
-msgid "Fullscreen"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Maximized"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Minimized"
-msgstr ""
-
-#: core/bind/core_bind.cpp core/project_settings.cpp scene/gui/dialogs.cpp
-#: scene/gui/graph_node.cpp
-msgid "Resizable"
-msgstr ""
-
-#: core/bind/core_bind.cpp core/os/input_event.cpp scene/2d/node_2d.cpp
-#: scene/2d/physics_body_2d.cpp scene/2d/remote_transform_2d.cpp
-#: scene/3d/physics_body.cpp scene/3d/remote_transform.cpp
-#: scene/gui/control.cpp scene/gui/line_edit.cpp
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Position"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: core/bind/core_bind.cpp core/project_settings.cpp editor/editor_settings.cpp
-#: main/main.cpp modules/gridmap/grid_map.cpp
-#: modules/visual_script/visual_script_nodes.cpp scene/2d/tile_map.cpp
-#: scene/3d/camera.cpp scene/3d/light.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
-#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/texture.cpp
-#: scene/resources/visual_shader.cpp servers/visual_server.cpp
-msgid "Size"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Endian Swap"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-#, fuzzy
-msgid "Editor Hint"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: core/bind/core_bind.cpp
-msgid "Print Error Messages"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Iterations Per Second"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Target FPS"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Time Scale"
-msgstr ""
-
-#: core/bind/core_bind.cpp main/main.cpp
-msgid "Physics Jitter Fix"
-msgstr ""
-
-#: core/bind/core_bind.cpp editor/plugins/version_control_editor_plugin.cpp
-msgid "Error"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-#, fuzzy
-msgid "Error String"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: core/bind/core_bind.cpp
-msgid "Error Line"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Result"
-msgstr ""
-
-#: core/command_queue_mt.cpp core/message_queue.cpp main/main.cpp
-msgid "Memory"
-msgstr ""
-
-#: core/command_queue_mt.cpp core/message_queue.cpp
-#: core/register_core_types.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles2/rasterizer_scene_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-#: drivers/gles3/rasterizer_storage_gles3.cpp main/main.cpp
-#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
-#: servers/visual_server.cpp
-msgid "Limits"
-msgstr ""
-
-#: core/command_queue_mt.cpp
-msgid "Command Queue"
-msgstr ""
-
-#: core/command_queue_mt.cpp
-msgid "Multithreading Queue Size (KB)"
-msgstr ""
-
-#: core/func_ref.cpp modules/visual_script/visual_script_builtin_funcs.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-#: scene/resources/visual_shader_nodes.cpp
-#, fuzzy
-msgid "Function"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: core/image.cpp core/packed_data_container.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-msgid "Data"
-msgstr ""
-
-#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
-msgid "Network"
-msgstr ""
-
-#: core/io/file_access_network.cpp
-#, fuzzy
-msgid "Remote FS"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: core/io/file_access_network.cpp
-msgid "Page Size"
-msgstr ""
-
-#: core/io/file_access_network.cpp
-msgid "Page Read Ahead"
-msgstr ""
-
-#: core/io/http_client.cpp
-msgid "Blocking Mode Enabled"
-msgstr ""
-
-#: core/io/http_client.cpp
-#, fuzzy
-msgid "Connection"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: core/io/http_client.cpp
-msgid "Read Chunk Size"
-msgstr ""
-
-#: core/io/marshalls.cpp
-msgid "Object ID"
-msgstr ""
-
-#: core/io/multiplayer_api.cpp core/io/packet_peer.cpp
-msgid "Allow Object Decoding"
-msgstr ""
-
-#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
-msgid "Refuse New Network Connections"
-msgstr ""
-
-#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
-msgid "Network Peer"
-msgstr ""
-
-#: core/io/multiplayer_api.cpp scene/animation/animation_player.cpp
-#, fuzzy
-msgid "Root Node"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-
-#: core/io/networked_multiplayer_peer.cpp
-#, fuzzy
-msgid "Refuse New Connections"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: core/io/networked_multiplayer_peer.cpp
-msgid "Transfer Mode"
-msgstr ""
-
-#: core/io/packet_peer.cpp
-msgid "Encode Buffer Max Size"
-msgstr ""
-
-#: core/io/packet_peer.cpp
-msgid "Input Buffer Max Size"
-msgstr ""
-
-#: core/io/packet_peer.cpp
-msgid "Output Buffer Max Size"
-msgstr ""
-
-#: core/io/packet_peer.cpp
-msgid "Stream Peer"
-msgstr ""
-
-#: core/io/stream_peer.cpp
-msgid "Big Endian"
-msgstr ""
-
-#: core/io/stream_peer.cpp
-msgid "Data Array"
-msgstr ""
-
-#: core/io/stream_peer_ssl.cpp
-msgid "Blocking Handshake"
-msgstr ""
-
-#: core/io/udp_server.cpp
-#, fuzzy
-msgid "Max Pending Connections"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
-#: modules/visual_script/visual_script_builtin_funcs.cpp
-msgid "Invalid type argument to convert(), use TYPE_* constants."
-msgstr "தவறான வகை வாதம௠மாறà¯à®±à¯(), TYPE_ * மாறிலிகளைப௠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯."
-
-#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
-msgid "Expected a string of length 1 (a character)."
-msgstr "நீளமà¯à®³à¯à®³ சொல௠(ஒர௠எழà¯à®¤à¯à®¤à¯) எதிரà¯à®ªà®¾à®°à¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®•ிறதà¯."
-
-#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
-#: modules/mono/glue/gd_glue.cpp
-#: modules/visual_script/visual_script_builtin_funcs.cpp
-msgid "Not enough bytes for decoding bytes, or invalid format."
-msgstr "டிகோடிங௠போதà¯à®®à®¾à®© பைடà¯à®Ÿà¯à®•ள௠இலà¯à®²à¯ˆ, அலà¯à®²à®¤à¯ தவறான வடிவதà¯à®¤à®¿à®²à¯ உளà¯à®³à®¤à¯."
-
-#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
-msgstr "தவறான உளà¯à®³à¯€à®Ÿà¯% i (அனà¯à®ªà¯à®ªà®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ) இல௠வெளிபà¯à®ªà®¾à®Ÿà¯à®Ÿà®¿à®²à¯"
-
-#: core/math/expression.cpp
-#, fuzzy
-msgid "self can't be used because instance is null (not passed)"
-msgstr ""
-"சà¯à®¯à®¤à¯à®¤à¯ˆ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤ à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯, à®à®©à¯†à®©à®¿à®²à¯ உதாரணமà¯(instance) பூஜà¯à®¯à®®à®¾à®©à®¤à¯ "
-"(நிறைவேறà¯à®±à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ)"
-
-#: core/math/expression.cpp
-msgid "Invalid operands to operator %s, %s and %s."
-msgstr "ஆபரேடà¯à®Ÿà®°à¯% s,% s மறà¯à®±à¯à®®à¯% s கà¯à®•௠தவறான செயலà¯à®ªà®¾à®Ÿà¯à®•ள௠உளà¯à®³à®¤à¯."
-
-#: core/math/expression.cpp
-msgid "Invalid index of type %s for base type %s"
-msgstr ""
-
-#: core/math/expression.cpp
-msgid "Invalid named index '%s' for base type %s"
-msgstr ""
-
-#: core/math/expression.cpp
-msgid "Invalid arguments to construct '%s'"
-msgstr ""
-
-#: core/math/expression.cpp
-msgid "On call to '%s':"
-msgstr ""
-
-#: core/math/random_number_generator.cpp
-#: modules/opensimplex/open_simplex_noise.cpp
-msgid "Seed"
-msgstr ""
-
-#: core/math/random_number_generator.cpp
-msgid "State"
-msgstr ""
-
-#: core/message_queue.cpp
-msgid "Message Queue"
-msgstr ""
-
-#: core/message_queue.cpp
-msgid "Max Size (KB)"
-msgstr ""
-
-#: core/os/input_event.cpp editor/project_settings_editor.cpp
-#: servers/audio_server.cpp
-msgid "Device"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Alt"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Shift"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Control"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Meta"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Command"
-msgstr ""
-
-#: core/os/input_event.cpp scene/2d/touch_screen_button.cpp
-#: scene/gui/base_button.cpp scene/gui/texture_button.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Pressed"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Scancode"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Physical Scancode"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Unicode"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Echo"
-msgstr ""
-
-#: core/os/input_event.cpp scene/gui/base_button.cpp
-msgid "Button Mask"
-msgstr ""
-
-#: core/os/input_event.cpp scene/2d/node_2d.cpp scene/gui/control.cpp
-#, fuzzy
-msgid "Global Position"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: core/os/input_event.cpp
-msgid "Factor"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Button Index"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Doubleclick"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Tilt"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Pressure"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Relative"
-msgstr ""
-
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/animation_player.cpp scene/resources/environment.cpp
-#: scene/resources/particles_material.cpp
-msgid "Speed"
-msgstr ""
-
-#: core/os/input_event.cpp editor/project_settings_editor.cpp
-#: scene/3d/sprite_3d.cpp
-msgid "Axis"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Axis Value"
-msgstr ""
-
-#: core/os/input_event.cpp modules/visual_script/visual_script_func_nodes.cpp
-msgid "Index"
-msgstr ""
-
-#: core/os/input_event.cpp editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/touch_screen_button.cpp
-#, fuzzy
-msgid "Action"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: core/os/input_event.cpp scene/resources/environment.cpp
-#: scene/resources/material.cpp
-msgid "Strength"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Delta"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Channel"
-msgstr ""
-
-#: core/os/input_event.cpp main/main.cpp
-msgid "Message"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Pitch"
-msgstr ""
-
-#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
-msgid "Velocity"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Instrument"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Controller Number"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Controller Value"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-#: platform/windows/export/export.cpp
-#, fuzzy
-msgid "Application"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: core/project_settings.cpp main/main.cpp
-msgid "Config"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Project Settings Override"
-msgstr ""
-
-#: core/project_settings.cpp core/resource.cpp
-#: editor/animation_track_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/editor_help_search.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_profiler.cpp editor/plugins/tile_set_editor_plugin.cpp
-#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp
-#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
-#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
-#: scene/3d/skeleton.cpp scene/main/node.cpp scene/resources/mesh_library.cpp
-#: scene/resources/skin.cpp
-msgid "Name"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
-msgid "Description"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
-msgid "Run"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/run_settings_dialog.cpp main/main.cpp
-msgid "Main Scene"
-msgstr ""
-
-#: core/project_settings.cpp
-#, fuzzy
-msgid "Disable stdout"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: core/project_settings.cpp
-#, fuzzy
-msgid "Disable stderr"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: core/project_settings.cpp
-msgid "Use Hidden Project Data Directory"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Use Custom User Dir"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Custom User Dir Name"
-msgstr ""
-
-#: core/project_settings.cpp main/main.cpp
-#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
-#: platform/uwp/os_uwp.cpp
-msgid "Display"
-msgstr ""
-
-#: core/project_settings.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/opensimplex/noise_texture.cpp scene/2d/line_2d.cpp
-#: scene/3d/label_3d.cpp scene/gui/text_edit.cpp scene/resources/texture.cpp
-msgid "Width"
-msgstr ""
-
-#: core/project_settings.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/gltf/gltf_node.cpp modules/opensimplex/noise_texture.cpp
-#: scene/2d/light_2d.cpp scene/resources/capsule_shape.cpp
-#: scene/resources/capsule_shape_2d.cpp scene/resources/cylinder_shape.cpp
-#: scene/resources/font.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/primitive_meshes.cpp scene/resources/texture.cpp
-msgid "Height"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Always On Top"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Test Width"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Test Height"
-msgstr ""
-
-#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
-msgid "Audio"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Default Bus Layout"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_export.cpp
-#: editor/editor_file_system.cpp editor/editor_node.cpp
-#: editor/editor_settings.cpp editor/script_create_dialog.cpp
-#: scene/2d/camera_2d.cpp scene/3d/light.cpp scene/main/node.cpp
-msgid "Editor"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Main Run Args"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Search In File Extensions"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Script Templates Search Path"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr ""
-
-#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
-#: scene/3d/collision_object.cpp scene/gui/control.cpp
-msgid "Input"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Accept"
-msgstr ""
-
-#: core/project_settings.cpp
-#, fuzzy
-msgid "UI Select"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: core/project_settings.cpp
-msgid "UI Cancel"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Focus Next"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Focus Prev"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Left"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Right"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Up"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Down"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Page Up"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Page Down"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Home"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI End"
-msgstr ""
-
-#: core/project_settings.cpp main/main.cpp modules/bullet/register_types.cpp
-#: modules/bullet/space_bullet.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp scene/main/scene_tree.cpp scene/main/viewport.cpp
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#: servers/physics/space_sw.cpp servers/physics_2d/physics_2d_server_sw.cpp
-#: servers/physics_2d/physics_2d_server_wrap_mt.h
-#: servers/physics_2d/space_2d_sw.cpp servers/physics_2d_server.cpp
-#: servers/physics_server.cpp
-msgid "Physics"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_settings.cpp
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp
-#: editor/plugins/spatial_editor_plugin.cpp main/main.cpp
-#: modules/bullet/register_types.cpp modules/bullet/space_bullet.cpp
-#: scene/3d/physics_body.cpp scene/resources/world.cpp
-#: servers/physics/space_sw.cpp servers/physics_server.cpp
-msgid "3D"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Smooth Trimesh Collision"
-msgstr ""
-
-#: core/project_settings.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles2/rasterizer_scene_gles2.cpp
-#: drivers/gles2/rasterizer_storage_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-#: drivers/gles3/rasterizer_storage_gles3.cpp main/main.cpp
-#: modules/lightmapper_cpu/register_types.cpp scene/main/scene_tree.cpp
-#: scene/main/viewport.cpp servers/visual/visual_server_scene.cpp
-#: servers/visual_server.cpp
-msgid "Rendering"
-msgstr ""
-
-#: core/project_settings.cpp drivers/gles2/rasterizer_storage_gles2.cpp
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-#: drivers/gles3/rasterizer_storage_gles3.cpp main/main.cpp
-#: modules/lightmapper_cpu/register_types.cpp scene/3d/baked_lightmap.cpp
-#: scene/main/scene_tree.cpp scene/resources/environment.cpp
-#: scene/resources/multimesh.cpp servers/visual/visual_server_scene.cpp
-#: servers/visual_server.cpp
-msgid "Quality"
-msgstr ""
-
-#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
-msgid "Filters"
-msgstr ""
-
-#: core/project_settings.cpp scene/main/viewport.cpp
-msgid "Sharpen Intensity"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
-#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp
-#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
-#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
-#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
-#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
-#: servers/visual_server.cpp
-msgid "Debug"
-msgstr ""
-
-#: core/project_settings.cpp main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/resources/dynamic_font.cpp
-#, fuzzy
-msgid "Settings"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: core/project_settings.cpp editor/script_editor_debugger.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Profiler"
-msgstr ""
-
-#: core/project_settings.cpp
-#, fuzzy
-msgid "Max Functions"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: core/project_settings.cpp scene/3d/vehicle_body.cpp
-msgid "Compression"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Formats"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Zstd"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Long Distance Matching"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Compression Level"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Window Log Size"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Zlib"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Gzip"
-msgstr ""
-
-#: core/project_settings.cpp platform/android/export/export.cpp
-msgid "Android"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Modules"
-msgstr ""
-
-#: core/register_core_types.cpp
-msgid "TCP"
-msgstr ""
-
-#: core/register_core_types.cpp
-msgid "Connect Timeout Seconds"
-msgstr ""
-
-#: core/register_core_types.cpp
-msgid "Packet Peer Stream"
-msgstr ""
-
-#: core/register_core_types.cpp
-msgid "Max Buffer (Power of 2)"
-msgstr ""
-
-#: core/register_core_types.cpp editor/editor_settings.cpp main/main.cpp
-msgid "SSL"
-msgstr ""
-
-#: core/register_core_types.cpp main/main.cpp
-msgid "Certificates"
-msgstr ""
-
-#: core/resource.cpp editor/dependency_editor.cpp
-#: editor/editor_resource_picker.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Resource"
-msgstr ""
-
-#: core/resource.cpp
-msgid "Local To Scene"
-msgstr ""
-
-#: core/resource.cpp editor/dependency_editor.cpp
-#: editor/editor_autoload_settings.cpp editor/plugins/path_editor_plugin.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Path"
-msgstr ""
-
-#: core/script_language.cpp
-msgid "Source Code"
-msgstr ""
-
-#: core/translation.cpp editor/project_settings_editor.cpp
-msgid "Locale"
-msgstr ""
-
-#: core/translation.cpp
-msgid "Test"
-msgstr ""
-
-#: core/translation.cpp scene/resources/font.cpp
-msgid "Fallback"
-msgstr ""
-
-#: core/ustring.cpp scene/resources/segment_shape_2d.cpp
-msgid "B"
-msgstr ""
-
-#: core/ustring.cpp
-msgid "KiB"
-msgstr ""
-
-#: core/ustring.cpp
-msgid "MiB"
-msgstr ""
-
-#: core/ustring.cpp
-msgid "GiB"
-msgstr ""
-
-#: core/ustring.cpp
-msgid "TiB"
-msgstr ""
-
-#: core/ustring.cpp
-msgid "PiB"
-msgstr ""
-
-#: core/ustring.cpp
-msgid "EiB"
-msgstr ""
-
-#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles2/rasterizer_scene_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-#: drivers/gles3/rasterizer_storage_gles3.cpp modules/gltf/gltf_state.cpp
-msgid "Buffers"
-msgstr ""
-
-#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-msgid "Canvas Polygon Buffer Size (KB)"
-msgstr ""
-
-#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-msgid "Canvas Polygon Index Buffer Size (KB)"
-msgstr ""
-
-#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp editor/editor_settings.cpp
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp main/main.cpp
-#: scene/2d/physics_body_2d.cpp scene/resources/world_2d.cpp
-#: servers/physics_2d/physics_2d_server_sw.cpp
-#: servers/physics_2d/physics_2d_server_wrap_mt.h
-#: servers/physics_2d/space_2d_sw.cpp servers/physics_2d_server.cpp
-#: servers/visual_server.cpp
-msgid "2D"
-msgstr ""
-
-#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-msgid "Snapping"
-msgstr ""
-
-#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-msgid "Use GPU Pixel Snap"
-msgstr ""
-
-#: drivers/gles2/rasterizer_scene_gles2.cpp
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Immediate Buffer Size (KB)"
-msgstr ""
-
-#: drivers/gles2/rasterizer_storage_gles2.cpp
-#: drivers/gles3/rasterizer_storage_gles3.cpp
-msgid "Lightmapping"
-msgstr ""
-
-#: drivers/gles2/rasterizer_storage_gles2.cpp
-#: drivers/gles3/rasterizer_storage_gles3.cpp
-msgid "Use Bicubic Sampling"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Max Renderable Elements"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Max Renderable Lights"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Max Renderable Reflections"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Max Lights Per Object"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Subsurface Scattering"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp editor/animation_track_editor.cpp
-#: editor/import/resource_importer_texture.cpp
-#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
-#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
-#: scene/2d/remote_transform_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/remote_transform.cpp scene/3d/spatial.cpp
-#: scene/animation/animation_blend_tree.cpp scene/gui/control.cpp
-#: scene/main/canvas_layer.cpp scene/resources/environment.cpp
-#: scene/resources/material.cpp scene/resources/particles_material.cpp
-msgid "Scale"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Follow Surface"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Weight Samples"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Voxel Cone Tracing"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp scene/resources/environment.cpp
-msgid "High Quality"
-msgstr ""
-
-#: drivers/gles3/rasterizer_storage_gles3.cpp
-msgid "Blend Shape Max Buffer Size (KB)"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Free"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Balanced"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Mirror"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp editor/editor_profiler.cpp
-msgid "Time:"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Value:"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Insert Key Here"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-#, fuzzy
-msgid "Duplicate Selected Key(s)"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: editor/animation_bezier_editor.cpp
-msgid "Delete Selected Key(s)"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Add Bezier Point"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Move Bezier Points"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
-msgid "Anim Duplicate Keys"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
-msgid "Anim Delete Keys"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#, fuzzy
-msgid "Anim Change Keyframe Time"
-msgstr "மாறà¯à®± மதிபà¯à®ªà¯ அசைவூடà¯à®Ÿà¯"
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Change Transition"
-msgstr "மாறà¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Change Transform"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: editor/animation_track_editor.cpp
-#, fuzzy
-msgid "Anim Change Keyframe Value"
-msgstr "மாறà¯à®± மதிபà¯à®ªà¯ அசைவூடà¯à®Ÿà¯"
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Change Call"
-msgstr "மாறà¯à®± அழைபà¯à®ªà¯ அசைவூடà¯à®Ÿà¯"
-
-#: editor/animation_track_editor.cpp scene/2d/animated_sprite.cpp
-#: scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Frame"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-
-#: editor/animation_track_editor.cpp editor/editor_profiler.cpp
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/particles_material.cpp servers/visual_server.cpp
-msgid "Time"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
-#: platform/osx/export/export.cpp
-#, fuzzy
-msgid "Location"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/animation_track_editor.cpp modules/gltf/gltf_node.cpp
-#: scene/2d/polygon_2d.cpp scene/2d/remote_transform_2d.cpp
-#: scene/3d/remote_transform.cpp scene/3d/spatial.cpp scene/gui/control.cpp
-msgid "Rotation"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_nodes.cpp scene/gui/range.cpp
-msgid "Value"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#, fuzzy
-msgid "Arg Count"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: editor/animation_track_editor.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Args"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_settings.cpp
-#: editor/script_editor_debugger.cpp modules/gltf/gltf_accessor.cpp
-#: modules/gltf/gltf_light.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/3d/physics_body.cpp scene/resources/visual_shader_nodes.cpp
-msgid "Type"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "In Handle"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Out Handle"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#: editor/import/resource_importer_texture.cpp
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#, fuzzy
-msgid "Start Offset"
-msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: editor/animation_track_editor.cpp
-#, fuzzy
-msgid "End Offset"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/animation_track_editor.cpp editor/editor_settings.cpp
-#: editor/import/resource_importer_scene.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
-#: scene/animation/animation_blend_tree.cpp
-#: scene/resources/particles_material.cpp
-msgid "Animation"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Easing"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#, fuzzy
-msgid "Anim Multi Change Keyframe Time"
-msgstr "மாறà¯à®± மதிபà¯à®ªà¯ அசைவூடà¯à®Ÿà¯"
-
-#: editor/animation_track_editor.cpp
-#, fuzzy
-msgid "Anim Multi Change Transition"
-msgstr "மாறà¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: editor/animation_track_editor.cpp
-#, fuzzy
-msgid "Anim Multi Change Transform"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: editor/animation_track_editor.cpp
-#, fuzzy
-msgid "Anim Multi Change Keyframe Value"
-msgstr "மாறà¯à®± மதிபà¯à®ªà¯ அசைவூடà¯à®Ÿà¯"
-
-#: editor/animation_track_editor.cpp
-#, fuzzy
-msgid "Anim Multi Change Call"
-msgstr "மாறà¯à®± அழைபà¯à®ªà¯ அசைவூடà¯à®Ÿà¯"
-
-#: editor/animation_track_editor.cpp
-msgid "Change Animation Length"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Change Animation Loop"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Property Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "3D Transform Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Call Method Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Bezier Curve Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Audio Playback Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation Playback Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation length (frames)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation length (seconds)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#, fuzzy
-msgid "Add Track"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
-
-#: editor/animation_track_editor.cpp
-msgid "Animation Looping"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Functions:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Audio Clips:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Clips:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Change Track Path"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Toggle this track on/off."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Update Mode (How this property is set)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp scene/resources/gradient.cpp
-msgid "Interpolation Mode"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Loop Wrap Mode (Interpolate end with beginning on loop)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#, fuzzy
-msgid "Remove this track."
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: editor/animation_track_editor.cpp
-msgid "Time (s): "
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Toggle Track Enabled"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Continuous"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Discrete"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Trigger"
-msgstr ""
-
-#: editor/animation_track_editor.cpp scene/3d/baked_lightmap.cpp
-msgid "Capture"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Nearest"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/plugins/curve_editor_plugin.cpp
-#: editor/property_editor.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
-msgid "Linear"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Cubic"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Clamp Loop Interp"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Wrap Loop Interp"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Insert Key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#, fuzzy
-msgid "Duplicate Key(s)"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: editor/animation_track_editor.cpp
-msgid "Add RESET Value(s)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Delete Key(s)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Change Animation Update Mode"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#, fuzzy
-msgid "Change Animation Interpolation Mode"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதை [interpolation]யை மாறà¯à®±à¯"
-
-#: editor/animation_track_editor.cpp
-msgid "Change Animation Loop Mode"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Remove Anim Track"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: editor/animation_track_editor.cpp editor/editor_settings.cpp
-#: editor/plugins/path_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "Editors"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: editor/animation_track_editor.cpp editor/editor_settings.cpp
-msgid "Confirm Insert Track"
-msgstr ""
-
-#. TRANSLATORS: %s will be replaced by a phrase describing the target of track.
-#: editor/animation_track_editor.cpp
-msgid "Create NEW track for %s and insert key?"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Create %d NEW tracks and insert keys?"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp editor/editor_feature_profile.cpp
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#: editor/script_create_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Create"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Insert"
-msgstr ""
-
-#. TRANSLATORS: This describes the target of new animation track, will be inserted into another string.
-#: editor/animation_track_editor.cpp
-msgid "node '%s'"
-msgstr ""
-
-#. TRANSLATORS: This describes the target of new animation track, will be inserted into another string.
-#: editor/animation_track_editor.cpp
-#, fuzzy
-msgid "animation"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: editor/animation_track_editor.cpp
-msgid "AnimationPlayer can't animate itself, only other players."
-msgstr ""
-
-#. TRANSLATORS: This describes the target of new animation track, will be inserted into another string.
-#: editor/animation_track_editor.cpp
-msgid "property '%s'"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Create & Insert"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Insert Track & Key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Insert Key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#, fuzzy
-msgid "Change Animation Step"
-msgstr "மாறà¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: editor/animation_track_editor.cpp
-msgid "Rearrange Tracks"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Transform tracks only apply to Spatial-based nodes."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid ""
-"Audio tracks can only point to nodes of type:\n"
-"-AudioStreamPlayer\n"
-"-AudioStreamPlayer2D\n"
-"-AudioStreamPlayer3D"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation tracks can only point to AnimationPlayer nodes."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Not possible to add a new track without a root"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Invalid track for Bezier (no suitable sub-properties)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#, fuzzy
-msgid "Add Bezier Track"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
-
-#: editor/animation_track_editor.cpp
-msgid "Track path is invalid, so can't add a key."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Track is not of type Spatial, can't insert key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Add Transform Track Key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#, fuzzy
-msgid "Add Track Key"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
-
-#: editor/animation_track_editor.cpp
-msgid "Track path is invalid, so can't add a method key."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#, fuzzy
-msgid "Add Method Track Key"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
-
-#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Move Keys"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp scene/2d/node_2d.cpp
-#: scene/3d/spatial.cpp scene/main/canvas_layer.cpp
-#: servers/camera/camera_feed.cpp servers/physics_2d_server.cpp
-#: servers/physics_server.cpp
-msgid "Transform"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_help.cpp
-msgid "Methods"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Bezier"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Clipboard is empty!"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Paste Tracks"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Scale Keys"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid ""
-"This option does not work for Bezier editing, as it's only a single track."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Add RESET Keys"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid ""
-"This animation belongs to an imported scene, so changes to imported tracks "
-"will not be saved.\n"
-"\n"
-"To enable the ability to add custom tracks, navigate to the scene's import "
-"settings and set\n"
-"\"Animation > Storage\" to \"Files\", enable \"Animation > Keep Custom "
-"Tracks\", then re-import.\n"
-"Alternatively, use an import preset that imports animations to separate "
-"files."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Warning: Editing imported animation"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Select an AnimationPlayer node to create and edit animations."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Only show tracks from nodes selected in tree."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Group tracks by node or display them as plain list."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Snap:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation step value."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Seconds"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
-#: scene/resources/texture.cpp
-msgid "FPS"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation properties."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Copy Tracks"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Scale Selection"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Scale From Cursor"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Duplicate Selection"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Duplicate Transposed"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#, fuzzy
-msgid "Delete Selection"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/animation_track_editor.cpp
-msgid "Go to Next Step"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Go to Previous Step"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Apply Reset"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Optimize Animation"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Clean-Up Animation"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Pick the node that will be animated:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Use Bezier Curves"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Create RESET Track(s)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim. Optimizer"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Max. Linear Error:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Max. Angular Error:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Max Optimizable Angle:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp scene/3d/room_manager.cpp
-#: servers/visual_server.cpp
-msgid "Optimize"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Remove invalid keys"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Remove unresolved and empty tracks"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Clean-up all animations"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Clean-Up Animation(s) (NO UNDO!)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Clean-Up"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Scale Ratio:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Select Tracks to Copy"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_resource_picker.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Copy"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#, fuzzy
-msgid "Select All/None"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/animation_track_editor_plugins.cpp
-#, fuzzy
-msgid "Add Audio Track Clip"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
-
-#: editor/animation_track_editor_plugins.cpp
-msgid "Change Audio Track Clip Start Offset"
-msgstr ""
-
-#: editor/animation_track_editor_plugins.cpp
-msgid "Change Audio Track Clip End Offset"
-msgstr ""
-
-#: editor/array_property_edit.cpp
-msgid "Resize Array"
-msgstr ""
-
-#: editor/array_property_edit.cpp
-msgid "Change Array Value Type"
-msgstr ""
-
-#: editor/array_property_edit.cpp
-msgid "Change Array Value"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Go to Line"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Line Number:"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "%d replaced."
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "%d match."
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "%d matches."
-msgstr ""
-
-#: editor/code_editor.cpp editor/find_in_files.cpp
-msgid "Match Case"
-msgstr ""
-
-#: editor/code_editor.cpp editor/find_in_files.cpp
-msgid "Whole Words"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr ""
-
-#: editor/code_editor.cpp editor/plugins/script_text_editor.cpp
-#: editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
-#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Toggle Scripts Panel"
-msgstr ""
-
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/texture_region_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
-msgid "Zoom In"
-msgstr ""
-
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/texture_region_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
-msgid "Zoom Out"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Reset Zoom"
-msgstr ""
-
-#: editor/code_editor.cpp modules/gdscript/gdscript.cpp
-msgid "Warnings"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Line and column numbers."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Method in target node must be specified."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Method name must be a valid identifier."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid ""
-"Target method not found. Specify a valid method or attach a script to the "
-"target node."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Connect to Node:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Connect to Script:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "From Signal:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Scene does not contain any script."
-msgstr ""
-
-#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
-#: editor/groups_editor.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Add"
-msgstr ""
-
-#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-msgid "Remove"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Add Extra Call Argument:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Extra Call Arguments:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Receiver Method:"
-msgstr ""
-
-#: editor/connections_dialog.cpp scene/3d/room_manager.cpp
-#: servers/visual_server.cpp
-msgid "Advanced"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Deferred"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid ""
-"Defers the signal, storing it in a queue and only firing it at idle time."
-msgstr ""
-
-#: editor/connections_dialog.cpp scene/resources/texture.cpp
-msgid "Oneshot"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Disconnects the signal after its first emission."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Cannot connect signal"
-msgstr ""
-
-#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/export_template_manager.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Close"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Connect"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Signal:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Connect '%s' to '%s'"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Disconnect '%s' from '%s'"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Disconnect all from signal: '%s'"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Connect..."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Disconnect"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Connect a Signal to a Method"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-#, fuzzy
-msgid "Edit Connection:"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: editor/connections_dialog.cpp
-msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
-msgstr ""
-
-#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
-msgid "Signals"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Filter signals"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Are you sure you want to remove all connections from this signal?"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Disconnect All"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Edit..."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Go to Method"
-msgstr ""
-
-#: editor/create_dialog.cpp
-msgid "Change %s Type"
-msgstr ""
-
-#: editor/create_dialog.cpp editor/project_settings_editor.cpp
-msgid "Change"
-msgstr ""
-
-#: editor/create_dialog.cpp
-msgid "Create New %s"
-msgstr ""
-
-#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr ""
-
-#: editor/create_dialog.cpp editor/property_selector.cpp
-msgid "No description available for %s."
-msgstr ""
-
-#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/filesystem_dock.cpp
-msgid "Favorites:"
-msgstr ""
-
-#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
-msgid "Recent:"
-msgstr ""
-
-#: editor/create_dialog.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp editor/rename_dialog.cpp
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Search:"
-msgstr ""
-
-#: editor/create_dialog.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Matches:"
-msgstr ""
-
-#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Description:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Search Replacement For:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Dependencies For:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid ""
-"Scene '%s' is currently being edited.\n"
-"Changes will only take effect when reloaded."
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid ""
-"Resource '%s' is in use.\n"
-"Changes will only take effect when reloaded."
-msgstr ""
-
-#: editor/dependency_editor.cpp
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Dependencies"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Dependencies:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Fix Broken"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Dependency Editor"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Search Replacement Resource:"
-msgstr ""
-
-#: editor/dependency_editor.cpp editor/editor_file_dialog.cpp
-#: editor/editor_help_search.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/script_create_dialog.cpp
-#: modules/visual_script/visual_script_property_selector.cpp
-#: scene/gui/file_dialog.cpp
-msgid "Open"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid ""
-"Remove the selected files from the project? (Cannot be undone.)\n"
-"Depending on your filesystem configuration, the files will either be moved "
-"to the system trash or deleted permanently."
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid ""
-"The files being removed are required by other resources in order for them to "
-"work.\n"
-"Remove them anyway? (Cannot be undone.)\n"
-"Depending on your filesystem configuration, the files will either be moved "
-"to the system trash or deleted permanently."
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Cannot remove:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Error loading:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Load failed due to missing dependencies:"
-msgstr ""
-
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-msgid "Open Anyway"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Which action should be taken?"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Fix Dependencies"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Errors loading!"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Permanently delete %d item(s)? (No undo!)"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Show Dependencies"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Orphan Resource Explorer"
-msgstr ""
-
-#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
-#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
-#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
-msgid "Delete"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Owns"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Resources Without Explicit Ownership:"
-msgstr ""
-
-#: editor/dictionary_property_edit.cpp
-msgid "Change Dictionary Key"
-msgstr ""
-
-#: editor/dictionary_property_edit.cpp
-msgid "Change Dictionary Value"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Thanks from the Godot community!"
-msgstr ""
-
-#: editor/editor_about.cpp editor/editor_node.cpp editor/project_manager.cpp
-msgid "Click to copy."
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Project Founders"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Lead Developer"
-msgstr ""
-
-#. TRANSLATORS: This refers to a job title.
-#: editor/editor_about.cpp
-#, fuzzy
-msgctxt "Job Title"
-msgid "Project Manager"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: editor/editor_about.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Authors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Platinum Sponsors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Gold Sponsors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Silver Sponsors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Bronze Sponsors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Mini Sponsors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Gold Donors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Silver Donors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Bronze Donors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Donors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "License"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Third-party Licenses"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid ""
-"Godot Engine relies on a number of third-party free and open source "
-"libraries, all compatible with the terms of its MIT license. The following "
-"is an exhaustive list of all such third-party components with their "
-"respective copyright statements and license terms."
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "All Components"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Components"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Licenses"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "Error opening asset file for \"%s\" (not in ZIP format)."
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "%s (already exists)"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "Contents of asset \"%s\" - No files conflict with your project:"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "Uncompressing Assets"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "The following files failed extraction from asset \"%s\":"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "(and %s more files)"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "Asset \"%s\" installed successfully!"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Success!"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp editor/editor_node.cpp
-msgid "Install"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "Asset Installer"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Speakers"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Add Effect"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Rename Audio Bus"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Change Audio Bus Volume"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Toggle Audio Bus Solo"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Toggle Audio Bus Mute"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Toggle Audio Bus Bypass Effects"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Select Audio Bus Send"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Add Audio Bus Effect"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Move Bus Effect"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Delete Bus Effect"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Drag & drop to rearrange."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Solo"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Mute"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Bypass"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-#, fuzzy
-msgid "Bus Options"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
-msgid "Duplicate"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Reset Volume"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Delete Effect"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Add Audio Bus"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Master bus can't be deleted!"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Delete Audio Bus"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Duplicate Audio Bus"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Reset Bus Volume"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Move Audio Bus"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Save Audio Bus Layout As..."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Location for New Layout..."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Open Audio Bus Layout"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "There is no '%s' file."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Invalid file, not an audio bus layout."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Error saving file: %s"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Add Bus"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Add a new Audio Bus to this layout."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_create_dialog.cpp
-msgid "Load"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Load an existing Bus Layout."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Save As"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Save this Bus Layout to a file."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp editor/import_dock.cpp
-msgid "Load Default"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Load the default Bus Layout."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Create a new Bus Layout."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Audio Bus Layout"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Invalid name."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Cannot begin with a digit."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Valid characters:"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Must not collide with an existing engine class name."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Must not collide with an existing built-in type name."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Must not collide with an existing global constant name."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Keyword cannot be used as an autoload name."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Autoload '%s' already exists!"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Rename Autoload"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Toggle AutoLoad Globals"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Move Autoload"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Remove Autoload"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
-#: platform/osx/export/export.cpp platform/windows/export/export.cpp
-#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
-#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
-#: scene/resources/material.cpp servers/visual_server.cpp
-msgid "Enable"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Rearrange Autoloads"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Can't add autoload:"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "%s is an invalid path. File does not exist."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "%s is an invalid path. Not in resource path (res://)."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Add AutoLoad"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp
-#: editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/script_create_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Path:"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Node Name:"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Global Variable"
-msgstr ""
-
-#: editor/editor_data.cpp
-msgid "Paste Params"
-msgstr ""
-
-#: editor/editor_data.cpp
-msgid "Updating Scene"
-msgstr ""
-
-#: editor/editor_data.cpp
-msgid "Storing local changes..."
-msgstr ""
-
-#: editor/editor_data.cpp
-msgid "Updating scene..."
-msgstr ""
-
-#: editor/editor_data.cpp editor/editor_resource_picker.cpp
-msgid "[empty]"
-msgstr ""
-
-#: editor/editor_data.cpp editor/plugins/script_text_editor.cpp
-#: editor/plugins/text_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "[unsaved]"
-msgstr ""
-
-#: editor/editor_dir_dialog.cpp
-msgid "Please select a base directory first."
-msgstr ""
-
-#: editor/editor_dir_dialog.cpp
-msgid "Choose a Directory"
-msgstr ""
-
-#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/filesystem_dock.cpp editor/project_manager.cpp
-#: scene/gui/file_dialog.cpp
-msgid "Create Folder"
-msgstr ""
-
-#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
-#: editor/script_create_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp scene/gui/file_dialog.cpp
-msgid "Name:"
-msgstr ""
-
-#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
-msgid "Could not create folder."
-msgstr ""
-
-#: editor/editor_dir_dialog.cpp
-msgid "Choose"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Storing File:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "No export template found at the expected path:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Packing"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid ""
-"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
-"Etc' in Project Settings."
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid ""
-"Target platform requires 'ETC2' texture compression for GLES3. Enable "
-"'Import Etc 2' in Project Settings."
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid ""
-"Target platform requires 'ETC' texture compression for the driver fallback "
-"to GLES2.\n"
-"Enable 'Import Etc' in Project Settings, or disable 'Driver Fallback "
-"Enabled'."
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid ""
-"Target platform requires 'PVRTC' texture compression for GLES2. Enable "
-"'Import Pvrtc' in Project Settings."
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid ""
-"Target platform requires 'ETC2' or 'PVRTC' texture compression for GLES3. "
-"Enable 'Import Etc 2' or 'Import Pvrtc' in Project Settings."
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid ""
-"Target platform requires 'PVRTC' texture compression for the driver fallback "
-"to GLES2.\n"
-"Enable 'Import Pvrtc' in Project Settings, or disable 'Driver Fallback "
-"Enabled'."
-msgstr ""
-
-#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
-#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Custom Template"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: editor/editor_export.cpp editor/project_export.cpp
-#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
-#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
-#: platform/uwp/export/export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/editor_export.cpp
-#, fuzzy
-msgid "Binary Format"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: editor/editor_export.cpp
-msgid "64 Bits"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Embed PCK"
-msgstr ""
-
-#: editor/editor_export.cpp platform/osx/export/export.cpp
-#, fuzzy
-msgid "Texture Format"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: editor/editor_export.cpp
-msgid "BPTC"
-msgstr ""
-
-#: editor/editor_export.cpp platform/osx/export/export.cpp
-msgid "S3TC"
-msgstr ""
-
-#: editor/editor_export.cpp platform/osx/export/export.cpp
-msgid "ETC"
-msgstr ""
-
-#: editor/editor_export.cpp platform/osx/export/export.cpp
-msgid "ETC2"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "No BPTC Fallbacks"
-msgstr ""
-
-#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
-#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-msgid "Custom debug template not found."
-msgstr ""
-
-#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
-#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-msgid "Custom release template not found."
-msgstr ""
-
-#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Convert Text Resources To Binary On Export"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "3D Editor"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Script Editor"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
-msgid "Asset Library"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Scene Tree Editing"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Node Dock"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "FileSystem Dock"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Import Dock"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Allows to view and edit 3D scenes."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Allows to edit scripts using the integrated script editor."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Provides built-in access to the Asset Library."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Allows editing the node hierarchy in the Scene dock."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid ""
-"Allows to work with signals and groups of the node selected in the Scene "
-"dock."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Allows to browse the local file system via a dedicated dock."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid ""
-"Allows to configure import settings for individual assets. Requires the "
-"FileSystem dock to function."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "(current)"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "(none)"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Remove currently selected profile, '%s'? Cannot be undone."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Profile must be a valid filename and must not contain '.'"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Profile with this name already exists."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "(Editor Disabled, Properties Disabled)"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "(Properties Disabled)"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-#, fuzzy
-msgid "(Editor Disabled)"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: editor/editor_feature_profile.cpp
-msgid "Class Options:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Enable Contextual Editor"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Class Properties:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Main Features:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Nodes and Classes:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "File '%s' format is invalid, import aborted."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid ""
-"Profile '%s' already exists. Remove it first before importing, import "
-"aborted."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Error saving profile to path: '%s'."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Reset to Default"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Current Profile:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-#, fuzzy
-msgid "Create Profile"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/editor_feature_profile.cpp
-#, fuzzy
-msgid "Remove Profile"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/import/resource_importer_scene.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: modules/fbx/editor_scene_importer_fbx.cpp
-msgid "Import"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
-msgid "Export"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Configure Selected Profile:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Extra Options:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Create or import a profile to edit available classes and properties."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Godot Feature Profile"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Import Profile(s)"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Export Profile"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Manage Editor Feature Profiles"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-#, fuzzy
-msgid "Default Feature Profile"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Select Current Folder"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File exists, overwrite?"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Select This Folder"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-msgid "Copy Path"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-msgid "Open in File Manager"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/project_manager.cpp
-msgid "Show in File Manager"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-msgid "New Folder..."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/find_in_files.cpp
-msgid "Refresh"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "All Recognized"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "All Files (*)"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
-msgid "Save"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Save a File"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Access"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/editor_settings.cpp
-msgid "Display Mode"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp
-#: editor/import/resource_importer_wav.cpp main/main.cpp
-#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/light_2d.cpp scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
-#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
-#: scene/gui/control.cpp scene/gui/file_dialog.cpp
-#: scene/resources/environment.cpp scene/resources/material.cpp
-#: scene/resources/visual_shader.cpp
-#: servers/audio/effects/audio_effect_distortion.cpp
-msgid "Mode"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Current Dir"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Current File"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Current Path"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/editor_settings.cpp
-#: scene/gui/file_dialog.cpp
-msgid "Show Hidden Files"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Disable Overwrite Warning"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Go Back"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Go Forward"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Go Up"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Toggle Hidden Files"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Toggle Favorite"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/editor_resource_picker.cpp
-#: scene/gui/base_button.cpp
-msgid "Toggle Mode"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Focus Path"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Move Favorite Up"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Move Favorite Down"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Go to previous folder."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Go to next folder."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Go to parent folder."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Refresh files."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "(Un)favorite current folder."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Toggle the visibility of hidden files."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-msgid "View items as a grid of thumbnails."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-msgid "View items as a list."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Directories & Files:"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Preview:"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-#: editor/plugins/version_control_editor_plugin.cpp scene/gui/file_dialog.cpp
-msgid "File:"
-msgstr ""
-
-#: editor/editor_file_system.cpp
-msgid "ScanSources"
-msgstr ""
-
-#: editor/editor_file_system.cpp
-msgid ""
-"There are multiple importers for different types pointing to file %s, import "
-"aborted"
-msgstr ""
-
-#: editor/editor_file_system.cpp
-msgid "(Re)Importing Assets"
-msgstr ""
-
-#: editor/editor_file_system.cpp
-msgid "Reimport Missing Imported Files"
-msgstr ""
-
-#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
-#: scene/resources/style_box.cpp scene/resources/texture.cpp
-msgid "Top"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Class:"
-msgstr ""
-
-#: editor/editor_help.cpp editor/scene_tree_editor.cpp
-#: editor/script_create_dialog.cpp
-msgid "Inherits:"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Inherited by:"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Online Tutorials"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Properties"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "overrides %s:"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "default:"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Theme Properties"
-msgstr ""
-
-#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/gradient.cpp
-msgid "Colors"
-msgstr ""
-
-#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Constants"
-msgstr ""
-
-#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Fonts"
-msgstr ""
-
-#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
-#: platform/iphone/export/export.cpp
-msgid "Icons"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Styles"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Enumerations"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Property Descriptions"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "(value)"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid ""
-"There is currently no description for this property. Please help us by "
-"[color=$color][url=$url]contributing one[/url][/color]!"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Method Descriptions"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid ""
-"There is currently no description for this method. Please help us by "
-"[color=$color][url=$url]contributing one[/url][/color]!"
-msgstr ""
-
-#: editor/editor_help.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: modules/gdscript/editor/gdscript_highlighter.cpp
-#: modules/gdscript/gdscript_editor.cpp
-msgid "Text Editor"
-msgstr ""
-
-#: editor/editor_help.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Help"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Sort Functions Alphabetically"
-msgstr ""
-
-#: editor/editor_help_search.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Search Help"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Case Sensitive"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Show Hierarchy"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Display All"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Classes Only"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Methods Only"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Signals Only"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Constants Only"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Properties Only"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Theme Properties Only"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Member Type"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Class"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Method"
-msgstr ""
-
-#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Signal"
-msgstr ""
-
-#: editor/editor_help_search.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Constant"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Property"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Theme Property"
-msgstr ""
-
-#: editor/editor_inspector.cpp editor/project_settings_editor.cpp
-msgid "Property:"
-msgstr ""
-
-#: editor/editor_inspector.cpp editor/editor_spin_slider.cpp
-msgid "Label"
-msgstr ""
-
-#: editor/editor_inspector.cpp editor/editor_spin_slider.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Read Only"
-msgstr ""
-
-#: editor/editor_inspector.cpp editor/plugins/item_list_editor_plugin.cpp
-msgid "Checkable"
-msgstr ""
-
-#: editor/editor_inspector.cpp editor/plugins/item_list_editor_plugin.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Checked"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Draw Red"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Keying"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Pin value"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid ""
-"Pinning a value forces it to be saved even if it's equal to the default."
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Pin value [Disabled because '%s' is editor-only]"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Set Multiple:"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Pinned %s"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Unpinned %s"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-#, fuzzy
-msgid "Copy Property"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/editor_inspector.cpp
-#, fuzzy
-msgid "Paste Property"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: editor/editor_inspector.cpp
-msgid "Copy Property Path"
-msgstr ""
-
-#: editor/editor_log.cpp
-msgid "Output:"
-msgstr ""
-
-#: editor/editor_log.cpp editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
-msgid "Copy Selection"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/property_editor.cpp editor/scene_tree_dock.cpp
-#: editor/script_editor_debugger.cpp
-#: modules/gdnative/gdnative_library_editor_plugin.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Clear"
-msgstr ""
-
-#: editor/editor_log.cpp
-msgid "Clear Output"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp editor/editor_node.cpp
-#: editor/editor_profiler.cpp
-msgid "Stop"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp editor/editor_profiler.cpp
-#: editor/plugins/animation_state_machine_editor.cpp editor/rename_dialog.cpp
-msgid "Start"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "%s/s"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "Down"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "Up"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp editor/editor_node.cpp
-#: scene/main/node.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Node"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "Incoming RPC"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "Incoming RSET"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "Outgoing RPC"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "Outgoing RSET"
-msgstr ""
-
-#: editor/editor_node.cpp editor/project_manager.cpp
-msgid "New Window"
-msgstr ""
-
-#: editor/editor_node.cpp editor/project_manager.cpp
-msgid "Unnamed Project"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Spins when the editor window redraws.\n"
-"Update Continuously is enabled, which can increase power usage. Click to "
-"disable it."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Spins when the editor window redraws."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Imported resources can't be saved."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-msgid "Error saving resource!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This resource can't be saved because it does not belong to the edited scene. "
-"Make it unique first."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-msgid "Save Resource As..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Can't open file for writing:"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Requested file format unknown:"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Error while saving."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Can't open '%s'. The file could have been moved or deleted."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Error while parsing '%s'."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Unexpected end of file '%s'."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Missing '%s' or its dependencies."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Error while loading '%s'."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Saving Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Analyzing"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Creating Thumbnail"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "This operation can't be done without a tree root."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This scene can't be saved because there is a cyclic instancing inclusion.\n"
-"Please resolve it and then attempt to save again."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
-"be satisfied."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Could not save one or more scenes!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
-msgid "Can't overwrite scene that is still open!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Can't load MeshLibrary for merging!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Error saving MeshLibrary!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Can't load TileSet for merging!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Error saving TileSet!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"An error occurred while trying to save the editor layout.\n"
-"Make sure the editor's user data path is writable."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Default editor layout overridden.\n"
-"To restore the Default layout to its base settings, use the Delete Layout "
-"option and delete the Default layout."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Layout name not found!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Restored the Default layout to its base settings."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This resource belongs to a scene that was imported, so it's not editable.\n"
-"Please read the documentation relevant to importing scenes to better "
-"understand this workflow."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This resource belongs to a scene that was instanced or inherited.\n"
-"Changes to it won't be kept when saving the current scene."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This resource was imported, so it's not editable. Change its settings in the "
-"import panel and then re-import."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This scene was imported, so changes to it won't be kept.\n"
-"Instancing it or inheriting will allow making changes to it.\n"
-"Please read the documentation relevant to importing scenes to better "
-"understand this workflow."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This is a remote object, so changes to it won't be kept.\n"
-"Please read the documentation relevant to debugging to better understand "
-"this workflow."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "There is no defined scene to run."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save scene before running..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Could not start subprocess!"
-msgstr ""
-
-#: editor/editor_node.cpp editor/filesystem_dock.cpp
-msgid "Open Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Base Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Quick Open..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Quick Open Scene..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Quick Open Script..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save & Reload"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save changes to '%s' before reloading?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save & Close"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save changes to '%s' before closing?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "%s no longer exists! Please specify a new save location."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"The current scene has no root node, but %d modified external resource(s) "
-"were saved anyway."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"A root node is required to save the scene. You can add a root node using the "
-"Scene tree dock."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save Scene As..."
-msgstr ""
-
-#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
-msgid "This operation can't be done without a scene."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Export Mesh Library"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "This operation can't be done without a root node."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Export Tile Set"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "This operation can't be done without a selected node."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Current scene not saved. Open anyway?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Can't undo while mouse buttons are pressed."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Nothing to undo."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Undo: %s"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Can't redo while mouse buttons are pressed."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Nothing to redo."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Redo: %s"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Can't reload a scene that was never saved."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Reload Saved Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"The current scene has unsaved changes.\n"
-"Reload the saved scene anyway? This action cannot be undone."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Quick Run Scene..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Quit"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Yes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Exit the editor?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Project Manager?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save changes to the following scene(s) before reloading?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save & Quit"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save changes to the following scene(s) before quitting?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save changes to the following scene(s) before opening Project Manager?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This option is deprecated. Situations where refresh must be forced are now "
-"considered a bug. Please report."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Pick a Main Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Close Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Reopen Closed Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: '%s'."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '%s'."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Unable to load addon script from path: '%s'. This might be due to a code "
-"error in that script.\n"
-"Disabling the addon at '%s' to prevent further errors."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Scene '%s' was automatically imported, so it can't be modified.\n"
-"To make changes to it, a new inherited scene can be created."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Error loading scene, it must be inside the project path. Use 'Import' to "
-"open the scene, then save it inside the project path."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene '%s' has broken dependencies:"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Clear Recent Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"No main scene has ever been defined, select one?\n"
-"You can change it later in \"Project Settings\" under the 'application' "
-"category."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Selected scene '%s' does not exist, select a valid one?\n"
-"You can change it later in \"Project Settings\" under the 'application' "
-"category."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Selected scene '%s' is not a scene file, select a valid one?\n"
-"You can change it later in \"Project Settings\" under the 'application' "
-"category."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save Layout"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Delete Layout"
-msgstr ""
-
-#: editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_resource_picker.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
-msgid "Show in FileSystem"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play This Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Close Tab"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Undo Close Tab"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Close Other Tabs"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Close Tabs to the Right"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Close All Tabs"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Switch Scene Tab"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "%d more files or folders"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "%d more folders"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "%d more files"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Unable to write to file '%s', file in use, locked or lacking permissions."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
-#: servers/arvr/arvr_interface.cpp
-msgid "Interface"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Scene Tabs"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Always Show Close Button"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Resize If Many Tabs"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Minimum Width"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Output"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Always Clear Output On Play"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Always Open Output On Play"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Always Close Output On Stop"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save On Focus Loss"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Save Each Scene On Quit"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
-msgid "Quit Confirmation"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: editor/editor_node.cpp
-msgid "Show Update Spinner"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Update Continuously"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Update Vital Only"
-msgstr ""
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Localize Settings"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Restore Scenes On Load"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Show Thumbnail On Hover"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Inspector"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Default Property Name Style"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Default Float Step"
-msgstr ""
-
-#: editor/editor_node.cpp scene/gui/tree.cpp
-#, fuzzy
-msgid "Disable Folding"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: editor/editor_node.cpp
-msgid "Auto Unfold Foreign Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Horizontal Vector2 Editing"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Horizontal Vector Types Editing"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Resources In Current Inspector"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Resources To Open In New Inspector"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Default Color Picker Mode"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
-msgid "Username"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதைகà¯à®•௠மறà¯à®ªà¯†à®¯à®°à¯ இடà¯"
-
-#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
-msgid "SSH Public Key Path"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
-msgid "SSH Private Key Path"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Dock Position"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_plugin.cpp
-msgid "Distraction Free Mode"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Toggle distraction-free mode."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Add a new scene."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Go to previously opened scene."
-msgstr ""
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Copy Text"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/editor_node.cpp
-msgid "Next tab"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Previous tab"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Filter Files..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Operations with scene files."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "New Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "New Inherited Scene..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Scene..."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Open Recent"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Convert To..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "MeshLibrary..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "TileSet..."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Undo"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Redo"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Miscellaneous project or scene-wide tools."
-msgstr ""
-
-#: editor/editor_node.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp modules/mono/editor/csharp_project.cpp
-msgid "Project"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Project Settings..."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
-msgid "Set Up Version Control"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Shut Down Version Control"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Export..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Install Android Build Template..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open User Data Folder"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tools"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Orphan Resource Explorer..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Reload Current Project"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Quit to Project List"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Deploy with Remote Debug"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, using one-click deploy will make the executable "
-"attempt to connect to this computer's IP so the running project can be "
-"debugged.\n"
-"This option is intended to be used for remote debugging (typically with a "
-"mobile device).\n"
-"You don't need to enable it to use the GDScript debugger locally."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Small Deploy with Network Filesystem"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, using one-click deploy for Android will only "
-"export an executable without the project data.\n"
-"The filesystem will be provided from the project by the editor over the "
-"network.\n"
-"On Android, deploying will use the USB cable for faster performance. This "
-"option speeds up testing for projects with large assets."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Visible Collision Shapes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, collision shapes and raycast nodes (for 2D and "
-"3D) will be visible in the running project."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Visible Navigation"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, navigation meshes and polygons will be visible "
-"in the running project."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Force Shader Fallbacks"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, shaders will be used in their fallback form "
-"(either visible via an ubershader or hidden) during all the run time.\n"
-"This is useful for verifying the look and performance of fallbacks, which "
-"are normally displayed briefly.\n"
-"Asynchronous shader compilation must be enabled in the project settings for "
-"this option to make a difference."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Synchronize Scene Changes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, any changes made to the scene in the editor "
-"will be replicated in the running project.\n"
-"When used remotely on a device, this is more efficient when the network "
-"filesystem option is enabled."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Synchronize Script Changes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, any script that is saved will be reloaded in "
-"the running project.\n"
-"When used remotely on a device, this is more efficient when the network "
-"filesystem option is enabled."
-msgstr ""
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Editor Settings..."
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: editor/editor_node.cpp
-msgid "Editor Layout"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Take Screenshot"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Screenshots are stored in the Editor Data/Settings Folder."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Toggle Fullscreen"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Editor Data/Settings Folder"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Editor Data Folder"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Editor Settings Folder"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Manage Editor Features..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Manage Export Templates..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Online Documentation"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Questions & Answers"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Report a Bug"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Suggest a Feature"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Send Docs Feedback"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
-msgid "Community"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "About Godot"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Support Godot Development"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play the project."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Pause the scene execution for debugging."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Pause Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Stop the scene."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play the edited scene."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play custom scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play Custom Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Changing the video driver requires restarting the editor."
-msgstr ""
-
-#: editor/editor_node.cpp editor/project_settings_editor.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Save & Restart"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Update All Changes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Update Vital Changes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Hide Update Spinner"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/fileserver/editor_file_server.cpp
-#: modules/fbx/editor_scene_importer_fbx.cpp
-msgid "FileSystem"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Expand Bottom Panel"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Don't Save"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Android build template is missing, please install relevant templates."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Manage Templates"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Install from file"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Select android sources file"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This will set up your project for custom Android builds by installing the "
-"source template to \"res://android/build\".\n"
-"You can then apply modifications and build your own custom APK on export "
-"(adding modules, changing the AndroidManifest.xml, etc.).\n"
-"Note that in order to make custom builds instead of using pre-built APKs, "
-"the \"Use Custom Build\" option should be enabled in the Android export "
-"preset."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"The Android build template is already installed in this project and it won't "
-"be overwritten.\n"
-"Remove the \"res://android/build\" directory manually before attempting this "
-"operation again."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Import Templates From ZIP File"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Template Package"
-msgstr ""
-
-#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
-msgid "Export Library"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Merge With Existing"
-msgstr ""
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Apply MeshInstance Transforms"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: editor/editor_node.cpp
-msgid "Open & Run a Script"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"The following files are newer on disk.\n"
-"What action should be taken?"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Reload"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Resave"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "New Inherited"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Load Errors"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Select"
-msgstr ""
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Select Current"
-msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: editor/editor_node.cpp
-msgid "Open 2D Editor"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open 3D Editor"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Script Editor"
-msgstr ""
-
-#: editor/editor_node.cpp editor/project_manager.cpp
-msgid "Open Asset Library"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open the next Editor"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open the previous Editor"
-msgstr ""
-
-#: editor/editor_node.h
-msgid "Warning!"
-msgstr ""
-
-#: editor/editor_path.cpp
-msgid "No sub-resources found."
-msgstr ""
-
-#: editor/editor_path.cpp
-msgid "Open a list of sub-resources."
-msgstr ""
-
-#: editor/editor_plugin.cpp
-msgid "Creating Mesh Previews"
-msgstr ""
-
-#: editor/editor_plugin.cpp
-msgid "Thumbnail..."
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp
-msgid "Main Script:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp
-msgid "Edit Plugin"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp
-msgid "Installed Plugins:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: scene/2d/remote_transform_2d.cpp scene/3d/remote_transform.cpp
-msgid "Update"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-#: platform/uwp/export/export.cpp
-msgid "Version"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp
-msgid "Author"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Measure:"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Frame Time (ms)"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Average Time (ms)"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Frame %"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Physics Frame %"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Inclusive"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Self"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid ""
-"Inclusive: Includes time from other functions called by this function.\n"
-"Use this to spot bottlenecks.\n"
-"\n"
-"Self: Only count the time spent in the function itself, not in other "
-"functions called by that function.\n"
-"Use this to find individual functions to optimize."
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Frame #:"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Calls"
-msgstr ""
-
-#: editor/editor_profiler.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Debugger"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Profiler Frame History Size"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Profiler Frame Max Functions"
-msgstr ""
-
-#: editor/editor_properties.cpp
-#, fuzzy
-msgid "Edit Text:"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: editor/editor_properties.cpp editor/script_create_dialog.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "On"
-msgstr ""
-
-#: editor/editor_properties.cpp modules/gridmap/grid_map.cpp
-#: scene/2d/collision_object_2d.cpp scene/2d/tile_map.cpp
-#: scene/3d/collision_object.cpp scene/3d/soft_body.cpp
-#: scene/main/canvas_layer.cpp
-msgid "Layer"
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid "Bit %d, value %d"
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid "[Empty]"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/plugins/root_motion_editor_plugin.cpp
-msgid "Assign..."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid "Invalid RID"
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
-"Can't create a ViewportTexture on resources saved as a file.\n"
-"Resource needs to belong to a scene."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
-"Can't create a ViewportTexture on this resource because it's not set as "
-"local to scene.\n"
-"Please switch on the 'local to scene' property on it (and all resources "
-"containing it up to a node)."
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Pick a Viewport"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Selected node is not a Viewport!"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Item"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "New Key:"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "New Value:"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Add Key/Value Pair"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp
-msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_resource_picker.cpp
-msgid "Quick Load"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp editor/property_editor.cpp
-#, fuzzy
-msgid "Convert to %s"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-
-#: editor/editor_resource_picker.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp editor/plugins/theme_editor_plugin.cpp
-#: modules/visual_script/visual_script_flow_control.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Base Type"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp
-msgid "Edited Resource"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp scene/gui/line_edit.cpp
-#: scene/gui/slider.cpp scene/gui/spin_box.cpp
-#, fuzzy
-msgid "Editable"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: editor/editor_resource_picker.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp
-msgid "Script Owner"
-msgstr ""
-
-#: editor/editor_run_native.cpp
-msgid ""
-"No runnable export preset found for this platform.\n"
-"Please add a runnable preset in the Export menu or define an existing preset "
-"as runnable."
-msgstr ""
-
-#: editor/editor_run_script.cpp
-msgid "Write your logic in the _run() method."
-msgstr ""
-
-#: editor/editor_run_script.cpp
-msgid "There is an edited scene already."
-msgstr ""
-
-#: editor/editor_run_script.cpp
-msgid "Couldn't instance script:"
-msgstr ""
-
-#: editor/editor_run_script.cpp
-msgid "Did you forget the 'tool' keyword?"
-msgstr ""
-
-#: editor/editor_run_script.cpp
-msgid "Couldn't run script:"
-msgstr ""
-
-#: editor/editor_run_script.cpp
-msgid "Did you forget the '_run' method?"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Editor Language"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Display Scale"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Custom Display Scale"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Main Font Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Code Font Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Font Antialiased"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Font Hinting"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Main Font"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Main Font Bold"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Code Font"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Dim Editor On Dialog Popup"
-msgstr ""
-
-#: editor/editor_settings.cpp main/main.cpp
-msgid "Low Processor Mode Sleep (µsec)"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Unfocused Low Processor Mode Sleep (µsec)"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Separate Distraction Mode"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Automatically Open Screenshots"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Max Array Dictionary Items Per Page"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp scene/gui/control.cpp
-#: scene/register_scene_types.cpp
-msgid "Theme"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/import_dock.cpp
-msgid "Preset"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Icon And Font Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Base Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Accent Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/environment.cpp
-msgid "Contrast"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Relationship Line Opacity"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Highlight Tabs"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Border Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Use Graph Node Headers"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Additional Spacing"
-msgstr ""
-
-#: editor/editor_settings.cpp
-#, fuzzy
-msgid "Custom Theme"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: editor/editor_settings.cpp
-msgid "Show Script Button"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Directories"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Autoscan Project Path"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Default Project Path"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "On Save"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Compress Binary Resources"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Safe Save On Backup Then Rename"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "File Dialog"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Thumbnail Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Docks"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Scene Tree"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Start Create Dialog Fully Expanded"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Always Show Folders"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Property Editor"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Auto Refresh Interval"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Subresource Hue Tint"
-msgstr ""
-
-#: editor/editor_settings.cpp
-#, fuzzy
-msgid "Color Theme"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: editor/editor_settings.cpp scene/3d/label_3d.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Line Spacing"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_text_editor.cpp
-#: modules/gdscript/editor/gdscript_highlighter.cpp
-msgid "Highlighting"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Syntax Highlighting"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Highlight All Occurrences"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Highlight Current Line"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_text_editor.cpp
-msgid "Highlight Type Safe Lines"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Indent"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_text_editor.cpp
-msgid "Auto Indent"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Convert Indent On Save"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Draw Tabs"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Draw Spaces"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
-msgid "Navigation"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Smooth Scrolling"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "V Scroll Speed"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Minimap"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Minimap Width"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Mouse Extra Buttons Navigate History"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Appearance"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Show Line Numbers"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Line Numbers Zero Padded"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Bookmark Gutter"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Breakpoint Gutter"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Info Gutter"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Code Folding"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Word Wrap"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Line Length Guidelines"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Line Length Guideline Soft Column"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Line Length Guideline Hard Column"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Script List"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Members Overview"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Files"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Trim Trailing Whitespace On Save"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Autosave Interval Secs"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Restore Scripts On Load"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Auto Reload And Parse Scripts On Save"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Auto Reload Scripts On External Change"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Create Signal Callbacks"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Sort Members Outline Alphabetically"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Cursor"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Scroll Past End Of File"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Block Caret"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Caret Blink"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Caret Blink Speed"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Right Click Moves Caret"
-msgstr ""
-
-#: editor/editor_settings.cpp modules/gdscript/gdscript.cpp
-#: modules/gdscript/gdscript_editor.cpp
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Completion"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/editor_settings.cpp
-msgid "Idle Parse Delay"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Auto Brace Complete"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Code Complete Delay"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Put Callhint Tooltip Below Current Line"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Callhint Tooltip Offset"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Complete File Paths"
-msgstr ""
-
-#: editor/editor_settings.cpp modules/gdscript/gdscript_editor.cpp
-#, fuzzy
-msgid "Add Type Hints"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
-
-#: editor/editor_settings.cpp
-msgid "Use Single Quotes"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Help Index"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Help Font Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Help Source Font Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Help Title Font Size"
-msgstr ""
-
-#: editor/editor_settings.cpp modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Grid Map"
-msgstr ""
-
-#: editor/editor_settings.cpp modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Pick Distance"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
-msgid "Preview Size"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
-
-#: editor/editor_settings.cpp
-msgid "Primary Grid Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Secondary Grid Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Selection Box Color"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/path_editor_plugin.cpp
-#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
-msgid "3D Gizmos"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/path_editor_plugin.cpp
-#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
-msgid "Gizmo Colors"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Instanced"
-msgstr ""
-
-#: editor/editor_settings.cpp modules/gltf/gltf_node.cpp
-#: scene/3d/physics_body.cpp
-#, fuzzy
-msgid "Joint"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-
-#: editor/editor_settings.cpp scene/2d/collision_shape_2d.cpp
-#: scene/2d/cpu_particles_2d.cpp scene/2d/touch_screen_button.cpp
-#: scene/3d/collision_shape.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/occluder.cpp scene/3d/spring_arm.cpp
-#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
-#: servers/physics_server.cpp
-msgid "Shape"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Primary Grid Steps"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid Division Level Max"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid Division Level Min"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid Division Level Bias"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid XZ Plane"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid XY Plane"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid YZ Plane"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Default FOV"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Default Z Near"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Default Z Far"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Lightmap Baking Number Of CPU Threads"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Navigation Scheme"
-msgstr ""
-
-#: editor/editor_settings.cpp
-#, fuzzy
-msgid "Invert Y Axis"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-
-#: editor/editor_settings.cpp
-#, fuzzy
-msgid "Invert X Axis"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-
-#: editor/editor_settings.cpp
-msgid "Zoom Style"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Emulate Numpad"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Emulate 3 Button Mouse"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Orbit Modifier"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Pan Modifier"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Zoom Modifier"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-msgid "Warped Mouse Panning"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Navigation Feel"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Orbit Sensitivity"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Orbit Inertia"
-msgstr ""
-
-#: editor/editor_settings.cpp
-#, fuzzy
-msgid "Translation Inertia"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: editor/editor_settings.cpp
-msgid "Zoom Inertia"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook Navigation Scheme"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook Sensitivity"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook Inertia"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook Base Speed"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook Activation Modifier"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook Speed Zoom Link"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/tile_map_editor_plugin.cpp
-msgid "Grid Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Guides Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Smart Snapping Line Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone Width"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone Color 1"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone Color 2"
-msgstr ""
-
-#: editor/editor_settings.cpp
-#, fuzzy
-msgid "Bone Selected Color"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/editor_settings.cpp
-msgid "Bone IK Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone Outline Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone Outline Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Viewport Border Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Constrain Editor View"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Simple Panning"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Scroll To Pan"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Pan Speed"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Poly Editor"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Point Grab Radius"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Previous Outline"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Autorename Animation Tracks"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: editor/editor_settings.cpp
-msgid "Default Create Bezier Tracks"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Default Create Reset Tracks"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Onion Layers Past Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Onion Layers Future Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Visual Editors"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Minimap Opacity"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Window Placement"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/2d/back_buffer_copy.cpp scene/2d/sprite.cpp
-#: scene/2d/visibility_notifier_2d.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/control.cpp
-msgid "Rect"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Rect Custom Position"
-msgstr ""
-
-#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
-msgid "Screen"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Auto Save"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Save Before Running"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Font Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-#, fuzzy
-msgid "Remote Host"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: editor/editor_settings.cpp
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-#, fuzzy
-msgid "Remote Port"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: editor/editor_settings.cpp
-msgid "Editor SSL Certificates"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Project Manager"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Sorting Order"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Symbol Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Keyword Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Control Flow Keyword Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Base Type Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Engine Type Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "User Type Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Comment Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "String Color"
-msgstr ""
-
-#: editor/editor_settings.cpp platform/javascript/export/export.cpp
-#: platform/uwp/export/export.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Background Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Completion Background Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Completion Selected Color"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Completion Existing Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Completion Scroll Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Completion Font Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Text Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Line Number Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Safe Line Number Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Caret Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Caret Background Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-#, fuzzy
-msgid "Text Selected Color"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Selection Color"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Brace Mismatch Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Current Line Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Line Length Guideline Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Word Highlighted Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Number Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Function Color"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Member Variable Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Mark Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Bookmark Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Breakpoint Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Executing Line Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Code Folding Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Search Result Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Search Result Border Color"
-msgstr ""
-
-#: editor/editor_spin_slider.cpp
-msgid "Hold %s to round to integers. Hold Shift for more precise changes."
-msgstr ""
-
-#: editor/editor_spin_slider.cpp scene/gui/button.cpp
-msgid "Flat"
-msgstr ""
-
-#: editor/editor_spin_slider.cpp
-#, fuzzy
-msgid "Hide Slider"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: editor/editor_sub_scene.cpp
-msgid "Select Node(s) to Import"
-msgstr ""
-
-#: editor/editor_sub_scene.cpp editor/project_manager.cpp
-msgid "Browse"
-msgstr ""
-
-#: editor/editor_sub_scene.cpp
-msgid "Scene Path:"
-msgstr ""
-
-#: editor/editor_sub_scene.cpp
-msgid "Import From Node:"
-msgstr ""
-
-#. TRANSLATORS: %s refers to the name of a version control system (e.g. "Git").
-#: editor/editor_vcs_interface.cpp
-msgid "%s Error"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Open the folder containing these templates."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall these templates."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "There are no mirrors available."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Retrieving the mirror list..."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Starting the download..."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Connecting to the mirror..."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Can't resolve the requested address."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Can't connect to the mirror."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "No response from the mirror."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Request ended up in a redirect loop."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Request failed:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Download complete; extracting templates..."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Best available mirror"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Disconnected"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Resolving"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Can't Connect"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Connected"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Downloading"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Connection Error"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Can't open the export templates file."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside the export templates file: %s."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside the export templates file."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for extracting templates:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Remove templates for the version '%s'?"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Uncompressing Android Build Sources"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Current Version:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Export templates are missing. Download them or install from a file."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Export templates are installed and ready to be used."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Open Folder"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Open the folder containing installed templates for the current version."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall templates for the current version."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Download from:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Open in Web Browser"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Copy Mirror URL"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Download and Install"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid ""
-"Download and install templates for the current version from the best "
-"possible mirror."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Install from File"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Install templates from a local file."
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/find_in_files.cpp
-#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Cancel the download of the templates."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Other Installed Versions:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall Template"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid ""
-"The templates will continue to download.\n"
-"You may experience a short editor freeze when they finish."
-msgstr ""
-
-#: editor/fileserver/editor_file_server.cpp
-msgid "File Server"
-msgstr ""
-
-#: editor/fileserver/editor_file_server.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
-msgid "Password"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Favorites"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Status: Import of file failed. Please fix file and reimport manually."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid ""
-"Importing has been disabled for this file, so it can't be opened for editing."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Cannot move/rename resources root."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Error moving:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Error duplicating:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/scene_tree_editor.cpp
-msgid "No name provided."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Provided name contains invalid characters."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "A file or folder with this name already exists."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Name contains invalid characters."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid ""
-"This file extension is not recognized by the editor.\n"
-"If you want to rename it anyway, use your operating system's file manager.\n"
-"After renaming to an unknown extension, the file won't be shown in the "
-"editor anymore."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid ""
-"The following files or folders conflict with items in the target location "
-"'%s':\n"
-"\n"
-"%s\n"
-"\n"
-"Do you wish to overwrite them?"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Renaming file:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Renaming folder:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Duplicating file:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Duplicating folder:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "New Inherited Scene"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Set As Main Scene"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Open Scenes"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Instance"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Add to Favorites"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Remove from Favorites"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "View Owners..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Move To..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "New Scene..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
-msgid "New Script..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "New Resource..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Expand All"
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Collapse All"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort files"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort by Name (Ascending)"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort by Name (Descending)"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort by Type (Ascending)"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort by Type (Descending)"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort by Last Modified"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort by First Modified"
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
-msgid "Duplicate..."
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-msgid "Rename..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Focus the search box"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Previous Folder/File"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Next Folder/File"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Re-Scan Filesystem"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Toggle Split Mode"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Search files"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid ""
-"Scanning Files,\n"
-"Please Wait..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Move"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/project_manager.cpp editor/rename_dialog.cpp
-#: editor/scene_tree_dock.cpp
-msgid "Rename"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Overwrite"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Create Scene"
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Create Script"
-msgstr ""
-
-#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Find in Files"
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Find:"
-msgstr ""
-
-#: editor/find_in_files.cpp editor/rename_dialog.cpp
-msgid "Replace:"
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Folder:"
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Filters:"
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid ""
-"Include the files with the following extensions. Add or remove them in "
-"ProjectSettings."
-msgstr ""
-
-#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-msgid "Find..."
-msgstr ""
-
-#: editor/find_in_files.cpp editor/plugins/script_text_editor.cpp
-msgid "Replace..."
-msgstr ""
-
-#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Replace in Files"
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Replace All (NO UNDO)"
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Searching..."
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "%d match in %d file."
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "%d matches in %d file."
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "%d matches in %d files."
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Add to Group"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Remove from Group"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Group name already exists."
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Invalid group name."
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Rename Group"
-msgstr ""
-
-#: editor/groups_editor.cpp
-#, fuzzy
-msgid "Delete Group"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/groups_editor.cpp editor/node_dock.cpp
-msgid "Groups"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Nodes Not in Group"
-msgstr ""
-
-#: editor/groups_editor.cpp editor/scene_tree_dock.cpp
-#: editor/scene_tree_editor.cpp
-msgid "Filter nodes"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Nodes in Group"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Empty groups will be automatically removed."
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Group Editor"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Manage Groups"
-msgstr ""
-
-#: editor/import/editor_import_collada.cpp
-msgid "Collada"
-msgstr ""
-
-#: editor/import/editor_import_collada.cpp
-msgid "Use Ambient"
-msgstr ""
-
-#: editor/import/resource_importer_bitmask.cpp
-#, fuzzy
-msgid "Create From"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/import/resource_importer_bitmask.cpp
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
-msgstr ""
-
-#: editor/import/resource_importer_csv_translation.cpp
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_scene.cpp
-#: editor/import/resource_importer_texture.cpp
-#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
-msgid "Compress"
-msgstr ""
-
-#: editor/import/resource_importer_csv_translation.cpp
-msgid "Delimiter"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#, fuzzy
-msgid "ColorCorrect"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: editor/import/resource_importer_layered_texture.cpp
-msgid "No BPTC If RGB"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
-#: scene/resources/material.cpp scene/resources/particles_material.cpp
-#: scene/resources/texture.cpp scene/resources/visual_shader.cpp
-msgid "Flags"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
-#: scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp
-msgid "Mipmaps"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp
-msgid "Anisotropic"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp
-msgid "sRGB"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-msgid "Slices"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Vertical"
-msgstr ""
-
-#: editor/import/resource_importer_obj.cpp
-msgid "Generate Tangents"
-msgstr ""
-
-#: editor/import/resource_importer_obj.cpp
-msgid "Scale Mesh"
-msgstr ""
-
-#: editor/import/resource_importer_obj.cpp
-msgid "Offset Mesh"
-msgstr ""
-
-#: editor/import/resource_importer_obj.cpp
-#: editor/import/resource_importer_scene.cpp
-msgid "Octahedral Compression"
-msgstr ""
-
-#: editor/import/resource_importer_obj.cpp
-msgid "Optimize Mesh Flags"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import as Single Scene"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Animations"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Materials"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Objects"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Objects+Materials"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Objects+Animations"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Materials+Animations"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Objects+Materials+Animations"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import as Multiple Scenes"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import as Multiple Scenes+Materials"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
-#: scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: editor/import/resource_importer_scene.cpp
-#, fuzzy
-msgid "Root Type"
-msgstr "மாறà¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: editor/import/resource_importer_scene.cpp
-#, fuzzy
-msgid "Root Name"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-
-#: editor/import/resource_importer_scene.cpp
-#, fuzzy
-msgid "Root Scale"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-
-#: editor/import/resource_importer_scene.cpp
-#, fuzzy
-msgid "Custom Script"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
-msgid "Storage"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Use Legacy Names"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Keep On Reimport"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Ensure Tangents"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Light Baking"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Lightmap Texel Size"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Use Named Skins"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "External Files"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Store In Subdir"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-#, fuzzy
-msgid "Filter Script"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/import/resource_importer_scene.cpp
-#, fuzzy
-msgid "Keep Custom Tracks"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Optimizer"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-#: editor/plugins/item_list_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
-#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
-#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
-#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
-#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/skeleton.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp scene/resources/material.cpp
-msgid "Enabled"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Max Linear Error"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Max Angular Error"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Max Angle"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-#, fuzzy
-msgid "Remove Unused Tracks"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: editor/import/resource_importer_scene.cpp
-#, fuzzy
-msgid "Clips"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
-
-#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/particles.cpp scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Import Scene"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Importing Scene..."
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Generating Lightmaps"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Running Custom Script..."
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Couldn't load post-import script:"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Invalid/broken script for post-import (check console):"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Error running post-import script:"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Did you return a Node-derived object in the `post_import()` method?"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Saving..."
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "2D, Detect 3D"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "2D Pixel"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-#, fuzzy
-msgid "HDR Mode"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: editor/import/resource_importer_texture.cpp
-msgid "BPTC LDR"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
-#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Process"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Fix Alpha Border"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Premult Alpha"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Hdr As Srgb"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-#, fuzzy
-msgid "Invert Color"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Normal Map Invert Y"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Size Limit"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Detect 3D"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "SVG"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid ""
-"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
-"texture will not display correctly on PC."
-msgstr ""
-
-#: editor/import/resource_importer_texture_atlas.cpp
-msgid "Atlas File"
-msgstr ""
-
-#: editor/import/resource_importer_texture_atlas.cpp
-#, fuzzy
-msgid "Import Mode"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/import/resource_importer_texture_atlas.cpp
-msgid "Crop To Region"
-msgstr ""
-
-#: editor/import/resource_importer_texture_atlas.cpp
-msgid "Trim Alpha Border From Region"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-msgid "8 Bit"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp main/main.cpp
-#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-msgid "Max Rate"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-msgid "Max Rate Hz"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-msgid "Trim"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-msgid "Normalize"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Mode"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Begin"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop End"
-msgstr ""
-
-#: editor/import_defaults_editor.cpp
-#, fuzzy
-msgid "Select Importer"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/import_defaults_editor.cpp
-msgid "Importer:"
-msgstr ""
-
-#: editor/import_defaults_editor.cpp
-msgid "Reset to Defaults"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Keep File (No Import)"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "%d Files"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Set as Default for '%s'"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Clear Default for '%s'"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid ""
-"You have pending changes that haven't been applied yet. Click Reimport to "
-"apply changes made to the import options.\n"
-"Selecting another resource in the FileSystem dock without clicking Reimport "
-"first will discard changes made in the Import dock."
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Import As:"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Save Scenes, Re-Import, and Restart"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Changing the type of an imported file requires editor restart."
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid ""
-"WARNING: Assets exist that use this resource, they may stop loading properly."
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid ""
-"Select a resource file in the filesystem or in the inspector to adjust "
-"import settings."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Failed to load resource."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Property Name Style"
-msgstr ""
-
-#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-#, fuzzy
-msgid "Capitalized"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: editor/inspector_dock.cpp
-msgid "Localized"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Localization not available for current language."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Copy Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-#, fuzzy
-msgid "Paste Properties"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Save As..."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Extra resource options."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Edit Resource from Clipboard"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Make Resource Built-In"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Go to the previous edited object in history."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Go to the next edited object in history."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "History of recently edited objects."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Open documentation for this object."
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Filter properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Manage object properties."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Changes may be lost!"
-msgstr ""
-
-#: editor/multi_node_edit.cpp
-msgid "MultiNode Set"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Select a single node to edit its signals and groups."
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-msgid "Edit a Plugin"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-msgid "Create a Plugin"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-msgid "Plugin Name:"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-msgid "Subfolder:"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Author:"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
-msgid "Language:"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-msgid "Script Name:"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-msgid "Activate now?"
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Polygon"
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Create points."
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid ""
-"Edit points.\n"
-"LMB: Move Point\n"
-"RMB: Erase Point"
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Edit Polygon"
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Insert Point"
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Edit Polygon (Remove Point)"
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Polygon And Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Add Animation"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Add %s"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Load..."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Move Node Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Change BlendSpace1D Limits"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Change BlendSpace1D Labels"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "This type of node can't be used. Only root nodes are allowed."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Add Node Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
-msgid "Add Animation Point"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Remove BlendSpace1D Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Move BlendSpace1D Node Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid ""
-"AnimationTree is inactive.\n"
-"Activate to enable playback, check node warnings if activation fails."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Set the blending position within the space"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Select and move points, create points with RMB."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp scene/gui/graph_edit.cpp
-msgid "Enable snap and show grid."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Open Editor"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Open Animation Node"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Triangle already exists."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
-msgid "Add Triangle"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Change BlendSpace2D Limits"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Change BlendSpace2D Labels"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Remove BlendSpace2D Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Remove BlendSpace2D Triangle"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "BlendSpace2D does not belong to an AnimationTree node."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "No triangles exist, so no blending can take place."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Toggle Auto Triangles"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Create triangles by connecting points."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Erase points and triangles."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Generate blend triangles automatically (instead of manually)"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Blend:"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed:"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Edit Filters"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Output node can't be added to the blend tree."
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Add Node to BlendTree"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Node Moved"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Unable to connect, port may be in use or connection may be invalid."
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Nodes Connected"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Nodes Disconnected"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#, fuzzy
-msgid "Set Animation"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
-msgid "Delete Node"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
-msgid "Delete Node(s)"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Toggle Filter On/Off"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Change Filter"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "No animation player set, so unable to retrieve track names."
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Player path set is invalid, so unable to retrieve track names."
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/root_motion_editor_plugin.cpp
-msgid ""
-"Animation player has no valid root node path, so unable to retrieve track "
-"names."
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Anim Clips"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#, fuzzy
-msgid "Audio Clips"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#, fuzzy
-msgid "Functions"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Node Renamed"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Add Node..."
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/root_motion_editor_plugin.cpp
-msgid "Edit Filtered Tracks:"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Enable Filtering"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Toggle Autoplay"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "New Animation Name:"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "New Anim"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Change Animation Name:"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Delete Animation?"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Remove Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Invalid animation name!"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Animation name already exists!"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Rename Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Duplicate Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Blend Next Changed"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Change Blend Time"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Load Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "No animation resource on clipboard!"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Pasted Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Paste Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Play selected animation backwards from current pos. (A)"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Play selected animation backwards from end. (Shift+A)"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Stop animation playback. (S)"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Play selected animation from start. (Shift+D)"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Play selected animation from current pos. (D)"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Animation position (in seconds)."
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Scale animation playback globally for the node."
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Animation Tools"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Paste As Reference"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
-msgid "Edit Transitions..."
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Open in Inspector"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Display list of animations in player."
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Autoplay on Load"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Enable Onion Skinning"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Onion Skinning Options"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Directions"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Past"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Future"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp modules/csg/csg_shape.cpp
-#: scene/3d/collision_polygon.cpp scene/main/scene_tree.cpp
-#: scene/resources/material.cpp scene/resources/primitive_meshes.cpp
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Depth"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "1 step"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "2 steps"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "3 steps"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Differences Only"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Force White Modulate"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Include Gizmos (3D)"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Pin AnimationPlayer"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Create New Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Animation Name:"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-msgid "Error!"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Blend Times:"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Next (Auto Queue):"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Cross-Animation Blend Times"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-#, fuzzy
-msgid "Move Node"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-
-#: editor/plugins/animation_state_machine_editor.cpp
-#, fuzzy
-msgid "Transition exists!"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: editor/plugins/animation_state_machine_editor.cpp
-#, fuzzy
-msgid "Add Transition"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: editor/plugins/animation_state_machine_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Node"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "End"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Immediate"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-#: scene/animation/animation_blend_tree.cpp
-msgid "Sync"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "At End"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: scene/3d/vehicle_body.cpp
-msgid "Travel"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Start and end nodes are needed for a sub-transition."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "No playback resource set at path: %s."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Node Removed"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-#, fuzzy
-msgid "Transition Removed"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Set Start Node (Autoplay)"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid ""
-"Select and move nodes.\n"
-"RMB to add new nodes.\n"
-"Shift+LMB to create connections."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Create new nodes."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Connect nodes."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Remove selected node or transition."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Toggle autoplay this animation on start, restart or seek to zero."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Set the end animation. This is useful for sub-transitions."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-#, fuzzy
-msgid "Transition: "
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Play Mode:"
-msgstr ""
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "AnimationTree"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "New name:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Fade In (s):"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Fade Out (s):"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader.cpp
-msgid "Blend"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Auto Restart:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Restart (s):"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Random Restart (s):"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Start!"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Amount:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Blend 0:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Blend 1:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "X-Fade Time (s):"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Input"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Clear Auto-Advance"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Set Auto-Advance"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Delete Input"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Animation tree is valid."
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Animation tree is invalid."
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Animation Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "OneShot Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Mix Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Blend2 Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Blend3 Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Blend4 Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "TimeScale Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "TimeSeek Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Transition Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Import Animations..."
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Edit Node Filters"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Filters..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp scene/main/http_request.cpp
-msgid "Use Threads"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Contents:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "View Files"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect to host:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Cannot save response to:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Write error."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Redirect loop."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, timeout"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Timeout."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed SHA-256 hash check"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Downloading (%s / %s)..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Downloading..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Resolving..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Error making request"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Install..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download Error"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Available URLs"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Recently Updated"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Least Recently Updated"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Name (A-Z)"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Name (Z-A)"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "License (A-Z)"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "License (Z-A)"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Loading..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgctxt "Pagination"
-msgid "First"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgctxt "Pagination"
-msgid "Previous"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
-msgctxt "Pagination"
-msgid "Next"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgctxt "Pagination"
-msgid "Last"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Search templates, projects, and demos"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Search assets (excluding templates, projects, and demos)"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Import..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Plugins..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
-msgid "Sort:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Category:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Support"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed to get repository configuration."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr ""
-
-#: editor/plugins/audio_stream_editor_plugin.cpp
-msgid "Audio Preview Play/Pause"
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid ""
-"Can't determine a save path for lightmap images.\n"
-"Save your scene and try again."
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
-"In Baked Light' and 'Generate Lightmap' flags are on."
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid "Failed creating lightmap images, make sure path is writable."
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid "Failed determining lightmap size. Maximum lightmap size too small?"
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid ""
-"Some mesh is invalid. Make sure the UV2 channel values are contained within "
-"the [0.0,1.0] square region."
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid ""
-"Godot editor was built without ray tracing support, lightmaps can't be baked."
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid "Bake Lightmaps"
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid "LightMap Bake"
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid "Select lightmap bake file:"
-msgstr ""
-
-#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp scene/resources/mesh_library.cpp
-msgid "Preview"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Configure Snap"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Grid Offset:"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Grid Step:"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Primary Line Every:"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "steps"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Rotation Offset:"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Rotation Step:"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Scale Step:"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Move Vertical Guide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Create Vertical Guide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Remove Vertical Guide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Move Horizontal Guide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Create Horizontal Guide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Remove Horizontal Guide"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Create Horizontal and Vertical Guides"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set CanvasItem \"%s\" Pivot Offset to (%d, %d)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Rotate %d CanvasItems"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Rotate CanvasItem \"%s\" to %d degrees"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Move CanvasItem \"%s\" Anchor"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Scale Node2D \"%s\" to (%s, %s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Resize Control \"%s\" to (%d, %d)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Scale %d CanvasItems"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Scale CanvasItem \"%s\" to (%s, %s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Move %d CanvasItems"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Move CanvasItem \"%s\" to (%d, %d)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Locked"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Grouped"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid ""
-"Children of containers have their anchors and margins values overridden by "
-"their parent."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Presets for the anchors and margins values of a Control node."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid ""
-"When active, moving Control nodes changes their anchors instead of their "
-"margins."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
-msgid "Top Left"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
-msgid "Top Right"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
-msgid "Bottom Right"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
-msgid "Bottom Left"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Center Left"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Center Top"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Center Right"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Center Bottom"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Center"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Left Wide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Top Wide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Right Wide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Bottom Wide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "VCenter Wide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "HCenter Wide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Full Rect"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Keep Ratio"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchors only"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors and Margins"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Project Camera Override\n"
-"Overrides the running project's camera with the editor viewport camera."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Project Camera Override\n"
-"No project instance running. Run the project from the editor to use this "
-"feature."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Lock Selected"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Unlock Selected"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Group Selected"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Ungroup Selected"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Paste Pose"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Clear Guides"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Create Custom Bone(s) from Node(s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Clear Bones"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Make IK Chain"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Clear IK Chain"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid ""
-"Warning: Children of a container get their position and size determined only "
-"by their parent."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/texture_region_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
-msgid "Zoom Reset"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp scene/gui/item_list.cpp
-#: scene/gui/tree.cpp
-msgid "Select Mode"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Drag: Rotate selected node around pivot."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Alt+Drag: Move selected node."
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
-msgid "Alt+Drag: Scale selected node."
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "V: Set selected node's pivot position."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "RMB: Add node at position clicked."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Move Mode"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rotate Mode"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scale Mode"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Shift: Scale proportionally."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Show a list of all objects at the position clicked\n"
-"(same as Alt+RMB in select mode)."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Click to change object's rotation pivot."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Pan Mode"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Ruler Mode"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Toggle smart snapping."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Smart Snap"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Toggle grid snapping."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Grid Snap"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snapping Options"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Scale Snap"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Smart Snapping"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap..."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap to Parent"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap to Node Anchor"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap to Node Sides"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap to Node Center"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap to Other Nodes"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap to Guides"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Lock Selected Node(s)"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Unlock Selected Node(s)"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Group Selected Node(s)"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Ungroup Selected Node(s)"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton Options"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Bones"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Make Custom Bone(s) from Node(s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Clear Custom Bones"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show When Snapping"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Hide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Toggle Grid"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Grid"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Helpers"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Rulers"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Guides"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Origin"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Viewport"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Group And Lock Icons"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Center Selection"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Frame Selection"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Preview Canvas Scale"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Translation mask for inserting keys."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Rotation mask for inserting keys."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Scale mask for inserting keys."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Insert keys (based on mask)."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid ""
-"Auto insert keys when objects are translated, rotated or scaled (based on "
-"mask).\n"
-"Keys are only added to existing tracks, no new tracks will be created.\n"
-"Keys must be inserted manually for the first time."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Auto Insert Key"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Animation Key and Pose Options"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Insert Key (Existing Tracks)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Copy Pose"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Clear Pose"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Add Node Here"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Instance Scene Here"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Multiply grid step by 2"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Divide grid step by 2"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Pan View"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 3.125%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 6.25%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 12.5%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 25%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 50%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 100%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 200%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 400%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 800%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 1600%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Adding %s..."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Cannot instantiate multiple nodes without root."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Create Node"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Error instancing scene from %s"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Default Type"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid ""
-"Drag & drop + Shift : Add node as sibling\n"
-"Drag & drop + Alt : Change node type"
-msgstr ""
-
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Polygon3D"
-msgstr ""
-
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr ""
-
-#: editor/plugins/collision_shape_2d_editor_plugin.cpp
-msgid "Set Handle"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Load Emission Mask"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/cpu_particles_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Restart"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Clear Emission Mask"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/spatial_editor_gizmos.cpp
-msgid "Particles"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Generated Point Count:"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Emission Mask"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Solid Pixels"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Border Pixels"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Directed Border Pixels"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Capture from Pixel"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Emission Colors"
-msgstr ""
-
-#: editor/plugins/cpu_particles_editor_plugin.cpp
-msgid "CPUParticles"
-msgstr ""
-
-#: editor/plugins/cpu_particles_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Create Emission Points From Mesh"
-msgstr ""
-
-#: editor/plugins/cpu_particles_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Create Emission Points From Node"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Flat 0"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Flat 1"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp
-msgid "Ease In"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp
-msgid "Ease Out"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Smoothstep"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve Point"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve Tangent"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Load Curve Preset"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
-msgid "Add Point"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
-msgid "Remove Point"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Left Linear"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Right Linear"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Load Preset"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Remove Curve Point"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Toggle Curve Linear Tangent"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Hold Shift to edit tangents individually"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Right click to add point"
-msgstr ""
-
-#: editor/plugins/gi_probe_editor_plugin.cpp
-msgid "Bake GI Probe"
-msgstr ""
-
-#: editor/plugins/gradient_editor_plugin.cpp
-msgid "Gradient Edited"
-msgstr ""
-
-#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
-msgid "Swap GradientTexture2D Fill Points"
-msgstr ""
-
-#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
-msgid "Swap Gradient Fill Points"
-msgstr ""
-
-#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
-msgid "Toggle Grid Snap"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
-#: scene/3d/label_3d.cpp scene/gui/button.cpp scene/gui/dialogs.cpp
-#: scene/gui/label.cpp scene/gui/line_edit.cpp scene/gui/link_button.cpp
-#: scene/gui/rich_text_label.cpp scene/gui/text_edit.cpp
-#: scene/resources/primitive_meshes.cpp
-msgid "Text"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
-#: platform/osx/export/export.cpp platform/windows/export/export.cpp
-#: scene/gui/button.cpp scene/gui/item_list.cpp
-msgid "Icon"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp
-msgid "ID"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Separator"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: editor/plugins/item_list_editor_plugin.cpp
-msgid "Item %d"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp
-msgid "Items"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp
-msgid "Item List Editor"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Occluder Polygon"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh is empty!"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Couldn't create a Trimesh collision shape."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Static Trimesh Body"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "This doesn't work on scene root!"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Trimesh Static Shape"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Can't create a single convex collision shape for the scene root."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Couldn't create a single convex collision shape."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Simplified Convex Shape"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Single Convex Shape"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Can't create multiple convex collision shapes for the scene root."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Couldn't create any collision shapes."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Multiple Convex Shapes"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Navigation Mesh"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Contained Mesh is not of type ArrayMesh."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "UV Unwrap failed, mesh may not be manifold?"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "No mesh to debug."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh has no UV in layer %d."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "MeshInstance lacks a Mesh!"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh has not surface to create outlines from!"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh primitive type is not PRIMITIVE_TRIANGLES!"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Could not create outline!"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Outline"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp modules/csg/csg_shape.cpp
-#: modules/gltf/gltf_mesh.cpp modules/gltf/gltf_node.cpp
-#: scene/2d/mesh_instance_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/mesh_instance.cpp scene/resources/mesh_library.cpp
-#: scene/resources/multimesh.cpp scene/resources/primitive_meshes.cpp
-#: scene/resources/texture.cpp
-msgid "Mesh"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Trimesh Static Body"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid ""
-"Creates a StaticBody and assigns a polygon-based collision shape to it "
-"automatically.\n"
-"This is the most accurate (but slowest) option for collision detection."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Trimesh Collision Sibling"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid ""
-"Creates a polygon-based collision shape.\n"
-"This is the most accurate (but slowest) option for collision detection."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Single Convex Collision Sibling"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid ""
-"Creates a single convex collision shape.\n"
-"This is the fastest (but least accurate) option for collision detection."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Simplified Convex Collision Sibling"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid ""
-"Creates a simplified convex collision shape.\n"
-"This is similar to single collision shape, but can result in a simpler "
-"geometry in some cases, at the cost of accuracy."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Multiple Convex Collision Siblings"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid ""
-"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between a single convex collision and a "
-"polygon-based collision."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Outline Mesh..."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid ""
-"Creates a static outline mesh. The outline mesh will have its normals "
-"flipped automatically.\n"
-"This can be used instead of the SpatialMaterial Grow property when using "
-"that property isn't possible."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "View UV1"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "View UV2"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Unwrap UV2 for Lightmap/AO"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Outline Mesh"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Outline Size:"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "UV Channel Debug"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Remove item %d?"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid ""
-"Update from existing scene?:\n"
-"%s"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "MeshLibrary"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Add Item"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Remove Selected Item"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Import from Scene (Ignore Transforms)"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Import from Scene (Apply Transforms)"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Update from Scene"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
-msgid "Apply without Transforms"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
-msgid "Apply with Transforms"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "No mesh source specified (and no MultiMesh set in node)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "No mesh source specified (and MultiMesh contains no Mesh)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Mesh source is invalid (invalid path)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Mesh source is invalid (not a MeshInstance)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Mesh source is invalid (contains no Mesh resource)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "No surface source specified."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Surface source is invalid (invalid path)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Surface source is invalid (no geometry)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Surface source is invalid (no faces)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Select a Source Mesh:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Select a Target Surface:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Populate Surface"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Populate MultiMesh"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Target Surface:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Source Mesh:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "X-Axis"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Y-Axis"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Z-Axis"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Mesh Up Axis:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Random Rotation:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Random Tilt:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Random Scale:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Populate"
-msgstr ""
-
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create Navigation Polygon"
-msgstr ""
-
-#: editor/plugins/particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Convert to CPUParticles"
-msgstr ""
-
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Generating Visibility Rect"
-msgstr ""
-
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Generate Visibility Rect"
-msgstr ""
-
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Can only set point into a ParticlesMaterial process material"
-msgstr ""
-
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Convert to CPUParticles2D"
-msgstr ""
-
-#: editor/plugins/particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Generation Time (sec):"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "The geometry's faces don't contain any area."
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "The geometry doesn't contain any faces."
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "\"%s\" doesn't inherit from Spatial."
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "\"%s\" doesn't contain geometry."
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "\"%s\" doesn't contain face geometry."
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Create Emitter"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Points:"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Surface Points"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Surface Points+Normal (Directed)"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp scene/gui/video_player.cpp
-msgid "Volume"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "A processor material of type 'ParticlesMaterial' is required."
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Generating AABB"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Generate Visibility AABB"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Remove Point from Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Remove Out-Control from Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Remove In-Control from Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Add Point to Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#, fuzzy
-msgid "Split Curve"
-msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Move Point in Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Move In-Control in Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Move Out-Control in Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Select Points"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Shift+Drag: Select Control Points"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Click: Add Point"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Left Click: Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Right Click: Delete Point"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Select Control Points (Shift+Drag)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Add Point (in empty space)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Delete Point"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Close Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-#: editor/plugins/theme_editor_preview.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp servers/visual_server.cpp
-msgid "Options"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Mirror Handle Angles"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Mirror Handle Lengths"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Curve Point #"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Set Curve Point Position"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Set Curve In Position"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Set Curve Out Position"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Path"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Remove Path Point"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Remove Out-Control Point"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Remove In-Control Point"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/physical_bone_plugin.cpp
-#, fuzzy
-msgid "Move Joint"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid ""
-"The skeleton property of the Polygon2D does not point to a Skeleton2D node"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync Bones"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid ""
-"No texture in this polygon.\n"
-"Set a texture to be able to edit UV."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create UV Map"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid ""
-"Polygon 2D has internal vertices, so it can no longer be edited in the "
-"viewport."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Polygon & UV"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Internal Vertex"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Remove Internal Vertex"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Invalid Polygon (need 3 different vertices)"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Add Custom Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Remove Custom Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Transform UV Map"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Transform Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint Bone Weights"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Open Polygon 2D UV editor."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Polygon 2D UV Editor"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
-msgid "UV"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/line_2d.cpp scene/3d/cpu_particles.cpp scene/3d/portal.cpp
-#: scene/3d/room.cpp scene/resources/convex_polygon_shape.cpp
-#: scene/resources/convex_polygon_shape_2d.cpp
-msgid "Points"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
-msgid "Polygons"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp scene/3d/skeleton.cpp
-msgid "Bones"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Points"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Command: Rotate"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Shift: Move All"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Shift+Command: Scale"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Ctrl: Rotate"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Shift+Ctrl: Scale"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Rotate Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Scale Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create a custom polygon. Enables custom polygon rendering."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid ""
-"Remove a custom polygon. If none remain, custom polygon rendering is "
-"disabled."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Unpaint weights with specified intensity."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Radius:"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Copy Polygon to UV"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Copy UV to Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Clear UV"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Grid Settings"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp modules/csg/csg_shape.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Snap"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Enable Snap"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Configure Grid:"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Grid Offset X:"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Grid Offset Y:"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Grid Step X:"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Grid Step Y:"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync Bones to Polygon"
-msgstr ""
-
-#: editor/plugins/ray_cast_2d_editor_plugin.cpp
-msgid "Set cast_to"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ERROR: Couldn't load resource!"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "Add Resource"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "Rename Resource"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Delete Resource"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "Resource clipboard is empty!"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "Paste Resource"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/scene_tree_editor.cpp
-msgid "Instance:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "Load Resource"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
-#: editor/plugins/room_manager_editor_plugin.cpp
-msgid "Flip Portals"
-msgstr ""
-
-#: editor/plugins/room_manager_editor_plugin.cpp
-msgid "Room Generate Points"
-msgstr ""
-
-#: editor/plugins/room_manager_editor_plugin.cpp
-msgid "Generate Points"
-msgstr ""
-
-#: editor/plugins/room_manager_editor_plugin.cpp
-msgid "Flip Portal"
-msgstr ""
-
-#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
-msgid "Occluder Set Transform"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: editor/plugins/room_manager_editor_plugin.cpp
-#, fuzzy
-msgid "Center Node"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/plugins/root_motion_editor_plugin.cpp
-msgid "AnimationTree has no path set to an AnimationPlayer"
-msgstr ""
-
-#: editor/plugins/root_motion_editor_plugin.cpp
-msgid "Path to AnimationPlayer is invalid"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Clear Recent Files"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Close and save changes?"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error writing TextFile:"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Could not load file at:"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving file!"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error Saving"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error Importing"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "New Text File..."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Open File"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save File As..."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Can't obtain the script for running."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Script failed reloading, check console for errors."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Script is not in tool mode, will not be able to run."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"To run this script, it must inherit EditorScript and be set to tool mode."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Import Theme"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As..."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "%s Class Reference"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-msgid "Find Next"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-msgid "Find Previous"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Filter scripts"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Toggle alphabetical sorting of the method list."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Filter methods"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp scene/2d/y_sort.cpp
-msgid "Sort"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Move Up"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Move Down"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Next Script"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous Script"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "File"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Open..."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Reopen Closed Script"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save All"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Soft Reload Script"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Copy Script Path"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "History Previous"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "History Next"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Import Theme..."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Reload Theme"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Close All"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Close Docs"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-msgid "Search"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
-msgid "Step Into"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
-msgid "Step Over"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
-msgid "Break"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Continue"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Keep Debugger Open"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Debug with External Editor"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Open Godot online documentation."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Search the reference documentation."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Go to previous edited document."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Go to next edited document."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Discard"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"The following files are newer on disk.\n"
-"What action should be taken?:"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Search Results"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Open Dominant Script On Scene Change"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "External"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Use External Editor"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Exec Path"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Script Temperature Enabled"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Highlight Current Script"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Script Temperature History Size"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Current Script Background Color"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
-msgid "Group Help Pages"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Sort Scripts By"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "List Script Names As"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Exec Flags"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Clear Recent Scripts"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Connections to method:"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/script_editor_debugger.cpp
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Source"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
-msgid "Target"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid ""
-"Missing connected method '%s' for signal '%s' from node '%s' to node '%s'."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "[Ignore]"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Line"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Function"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Only resources from filesystem can be dropped."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Can't drop nodes because script '%s' is not used in this scene."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Lookup Symbol"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Pick Color"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Convert Case"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-#: scene/3d/label_3d.cpp scene/gui/label.cpp
-#: scene/resources/primitive_meshes.cpp
-msgid "Uppercase"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Lowercase"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Capitalize"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Syntax Highlighter"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-msgid "Bookmarks"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Breakpoints"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-msgid "Go To"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Cut"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Select All"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Delete Line"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Indent Left"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Indent Right"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Toggle Comment"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Fold/Unfold Line"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Fold All Lines"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Unfold All Lines"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Complete Symbol"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-#, fuzzy
-msgid "Evaluate Selection"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Trim Trailing Whitespace"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Convert Indent to Spaces"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Convert Indent to Tabs"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Find in Files..."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Replace in Files..."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Contextual Help"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Toggle Bookmark"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Next Bookmark"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Previous Bookmark"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Remove All Bookmarks"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Function..."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Line..."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Toggle Breakpoint"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Remove All Breakpoints"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Next Breakpoint"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Previous Breakpoint"
-msgstr ""
-
-#: editor/plugins/shader_editor_plugin.cpp
-msgid ""
-"This shader has been modified on on disk.\n"
-"What action should be taken?"
-msgstr ""
-
-#: editor/plugins/shader_editor_plugin.cpp scene/resources/material.cpp
-msgid "Shader"
-msgstr ""
-
-#: editor/plugins/skeleton_2d_editor_plugin.cpp
-msgid "This skeleton has no bones, create some children Bone2D nodes."
-msgstr ""
-
-#: editor/plugins/skeleton_2d_editor_plugin.cpp
-msgid "Set Rest Pose to Bones"
-msgstr ""
-
-#: editor/plugins/skeleton_2d_editor_plugin.cpp
-msgid "Create Rest Pose from Bones"
-msgstr ""
-
-#: editor/plugins/skeleton_2d_editor_plugin.cpp
-msgid "Skeleton2D"
-msgstr ""
-
-#: editor/plugins/skeleton_2d_editor_plugin.cpp
-msgid "Reset to Rest Pose"
-msgstr ""
-
-#: editor/plugins/skeleton_2d_editor_plugin.cpp
-msgid "Overwrite Rest Pose"
-msgstr ""
-
-#: editor/plugins/skeleton_editor_plugin.cpp
-msgid "Create physical bones"
-msgstr ""
-
-#: editor/plugins/skeleton_editor_plugin.cpp editor/spatial_editor_gizmos.cpp
-#: modules/gltf/gltf_node.cpp modules/gltf/gltf_skin.cpp
-#: scene/2d/polygon_2d.cpp scene/3d/mesh_instance.cpp
-msgid "Skeleton"
-msgstr ""
-
-#: editor/plugins/skeleton_editor_plugin.cpp
-msgid "Create physical skeleton"
-msgstr ""
-
-#: editor/plugins/skeleton_ik_editor_plugin.cpp
-msgid "Play IK"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_camera.cpp
-msgid "Perspective"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top Perspective"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom Perspective"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left Perspective"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front Perspective"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear Perspective"
-msgstr ""
-
-#. TRANSLATORS: This will be appended to the view name when Auto Orthogonal is enabled.
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid " [auto]"
-msgstr ""
-
-#. TRANSLATORS: This will be appended to the view name when Portal Occulusion is enabled.
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid " [portals active]"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Transform Aborted."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "X-Axis Transform."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Y-Axis Transform."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Z-Axis Transform."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Plane Transform."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/texture_region_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp scene/2d/path_2d.cpp
-msgid "Rotate"
-msgstr ""
-
-#. TRANSLATORS: This refers to the movement that changes the position of an object.
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translate"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rotating %s degrees."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS: %d (%s ms)"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Align Transform with View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Align Rotation with View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "No parent to instance a child at."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Auto Orthogonal Enabled"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Lock View Rotation"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Normal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Wireframe"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Overdraw"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Unshaded"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Environment"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Gizmos"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Information"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View FPS"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Half Resolution"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp scene/main/viewport.cpp
-msgid "Audio Listener"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Enable Doppler"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Cinematic Preview"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "(Not in GLES2)"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Debug draw modes are only available when using the GLES3 renderer, not GLES2."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Forward"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Backwards"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Down"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Slow Modifier"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Toggle Camera Preview"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Rotation Locked"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"To zoom further, change the camera's clipping planes (View -> Settings...)"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Note: The FPS value displayed is the editor's framerate.\n"
-"It cannot be used as a reliable indication of in-game performance."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Convert Rooms"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "XForm Dialog"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Click to toggle between visibility states.\n"
-"\n"
-"Open eye: Gizmo is visible.\n"
-"Closed eye: Gizmo is hidden.\n"
-"Half-open eye: Gizmo is also visible through opaque surfaces (\"x-ray\")."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes to Floor"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Couldn't find a solid floor to snap the selection to."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp scene/gui/graph_edit.cpp
-msgid "Use Snap"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Converts rooms for portal culling."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Orbit View Down"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Orbit View Left"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Orbit View Right"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Orbit View Up"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Orbit View 180"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Switch Perspective/Orthogonal View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Insert Animation Key"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Focus Origin"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Focus Selection"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Toggle Freelook"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Decrease Field of View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Increase Field of View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Reset Field of View to Default"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Object to Floor"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Transform Dialog..."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "1 Viewport"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "2 Viewports"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "2 Viewports (Alt)"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "3 Viewports"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "3 Viewports (Alt)"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "4 Viewports"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Gizmos"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Origin"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Grid"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Portal Culling"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Occlusion Culling"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Settings..."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Settings"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translate Snap:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rotate Snap (deg.):"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scale Snap (%):"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Viewport Settings"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Perspective FOV (deg.):"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Z-Near:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Z-Far:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Transform Change"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translate:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rotate (deg.):"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scale (ratio):"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Transform Type"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pre"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Post"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Manipulator Gizmo Size"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Manipulator Gizmo Opacity"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Show Viewport Rotation Gizmo"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Unnamed Gizmo"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Create Mesh2D"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Mesh2D Preview"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-#, fuzzy
-msgid "Create Polygon2D"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Polygon2D Preview"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Create CollisionPolygon2D"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "CollisionPolygon2D Preview"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Create LightOccluder2D"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "LightOccluder2D Preview"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Sprite is empty!"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Can't convert a sprite using animation frames to mesh."
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Invalid geometry, can't replace by mesh."
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Invalid geometry, can't create polygon."
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Polygon2D"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Invalid geometry, can't create collision polygon."
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Create CollisionPolygon2D Sibling"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Invalid geometry, can't create light occluder."
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Create LightOccluder2D Sibling"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Sprite"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Update Preview"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Settings:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "No Frames Selected"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Add %d Frame(s)"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Add Frame"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Unable to load images"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "ERROR: Couldn't load frame resource!"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Resource clipboard is empty or not a texture!"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Paste Frame"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Add Empty"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Change Animation FPS"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "(empty)"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
-msgid "Move Frame"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
-msgid "Animations:"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "New Animation"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Speed:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/minimp3/resource_importer_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
-#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
-#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
-msgid "Loop"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Animation Frames:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Add a Texture from File"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Add Frames from a Sprite Sheet"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Insert Empty (Before)"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Insert Empty (After)"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Move (Before)"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Move (After)"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Select Frames"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Horizontal:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Vertical:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/texture_region_editor_plugin.cpp
-#, fuzzy
-msgid "Separation:"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Offset:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Select/Clear All Frames"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Create Frames from Sprite Sheet"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "SpriteFrames"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Set Region Rect"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Set Margin"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Snap Mode:"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Pixel Snap"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Grid Snap"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Auto Slice"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Step:"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "TextureRegion"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Styleboxes"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "{num} color(s)"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "No colors found."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "{num} constant(s)"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "No constants found."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "{num} font(s)"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "No fonts found."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "{num} icon(s)"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "No icons found."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "{num} stylebox(es)"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "No styleboxes found."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "{num} currently selected"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Nothing was selected for the import."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Importing Theme Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Importing items {n}/{n}"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Updating the editor"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Finalizing"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Filter:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "With Data"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select by data type:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible color items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible color items and their data."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect all visible color items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible constant items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible constant items and their data."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect all visible constant items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible font items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible font items and their data."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect all visible font items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible icon items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible icon items and their data."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect all visible icon items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible stylebox items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible stylebox items and their data."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect all visible stylebox items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid ""
-"Caution: Adding icon data may considerably increase the size of your Theme "
-"resource."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Collapse types."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Expand types."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all Theme items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select With Data"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all Theme items with item data."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
-msgid "Deselect All"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect all Theme items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
-msgid "Import Selected"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid ""
-"Import Items tab has some items selected. Selection will be lost upon "
-"closing this window.\n"
-"Close anyway?"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
-msgid "Remove Type"
-msgstr "மாறà¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid ""
-"Select a theme type from the list to edit its items.\n"
-"You can add a custom type or import a type with its items from another theme."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Color Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
-msgid "Rename Item"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதைகà¯à®•௠மறà¯à®ªà¯†à®¯à®°à¯ இடà¯"
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Constant Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
-msgid "Remove All Font Items"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
-msgid "Remove All Icon Items"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All StyleBox Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid ""
-"This theme type is empty.\n"
-"Add more items to it manually or by importing from another theme."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
-msgid "Add Theme Type"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
-
-#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
-msgid "Remove Theme Type"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Color Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Constant Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
-msgid "Add Font Item"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
-msgid "Add Icon Item"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Stylebox Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Rename Color Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Rename Constant Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Rename Font Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Rename Icon Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Rename Stylebox Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Invalid file, not a Theme resource."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Invalid file, same as the edited Theme resource."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Manage Theme Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
-msgid "Edit Items"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Types:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Type:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Item:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add StyleBox Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
-msgid "Remove Items:"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
-msgid "Remove Custom Items"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Theme Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Old Name:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Import Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Default Theme"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
-msgid "Editor Theme"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select Another Theme Resource:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme Resource"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Another Theme"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
-msgid "Add Type"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Filter the list of types or create a new custom type:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Available Node-based types:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Type name is empty!"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Are you sure you want to create an empty type?"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Confirm Item Rename"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
-msgid "Cancel Item Rename"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதைகà¯à®•௠மறà¯à®ªà¯†à®¯à®°à¯ இடà¯"
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Override Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Unpin this StyleBox as a main style."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid ""
-"Pin this StyleBox as a main style. Editing its properties will update the "
-"same properties in all other StyleBoxes of this type."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Item Type"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Set Variation Base Type"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Set Base Type"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Show Default"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Show default type items alongside items that have been overridden."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Override All"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Override all default type items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select the variation base type from a list of available types."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid ""
-"A type associated with a built-in class cannot be marked as a variation of "
-"another type."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Manage Items..."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add, remove, organize and import Theme items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
-msgid "Add Preview"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Default Preview"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select UI Scene:"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid ""
-"Toggle the control picker, allowing to visually select control types for "
-"edit."
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Toggle Button"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-#, fuzzy
-msgid "Disabled Button"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: editor/plugins/theme_editor_preview.cpp scene/resources/mesh_library.cpp
-msgid "Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-#, fuzzy
-msgid "Disabled Item"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Check Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Checked Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Radio Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Checked Radio Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Named Separator"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Submenu"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Subitem 1"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Subitem 2"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Has"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Many"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-#, fuzzy
-msgid "Disabled LineEdit"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Tab 1"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Tab 2"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Tab 3"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Editable Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Subtree"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Has,Many,Options"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Invalid path, the PackedScene resource was probably moved or removed."
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Invalid PackedScene resource, must have a Control node at its root."
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Invalid file, not a PackedScene resource."
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Reload the scene to reflect its most actual state."
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Erase Selection"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Fix Invalid Tiles"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "Cut Selection"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Paint TileMap"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Line Draw"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Rectangle Paint"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket Fill"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Erase TileMap"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Find Tile"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Transpose"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Disable Autotile"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Enable Priority"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Filter tiles"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Give a TileSet resource to this TileMap to use its tiles."
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Paint Tile"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid ""
-"Shift+LMB: Line Draw\n"
-"Shift+Command+LMB: Rectangle Paint"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid ""
-"Shift+LMB: Line Draw\n"
-"Shift+Ctrl+LMB: Rectangle Paint"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Pick Tile"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Rotate Left"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Rotate Right"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Flip Horizontally"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Flip Vertically"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
-msgid "Clear Transform"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Tile Map"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Palette Min Width"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
-msgid "Palette Item H Separation"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Show Tile Names"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Show Tile Ids"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Sort Tiles By Name"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket Fill Preview"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "Editor Side"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Display Grid"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Axis Color"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove selected Texture from TileSet."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create from Scene"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Merge from Scene"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "New Single Tile"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "New Autotile"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "New Atlas"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Next Coordinate"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Select the next shape, subtile, or Tile."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Previous Coordinate"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Select the previous shape, subtile, or Tile."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
-msgid "Region"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp modules/csg/csg_shape.cpp
-#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
-#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
-#: scene/3d/collision_object.cpp scene/3d/physics_body.cpp
-#: scene/3d/physics_joint.cpp scene/3d/soft_body.cpp scene/main/scene_tree.cpp
-#: scene/resources/shape_2d.cpp
-msgid "Collision"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Occlusion"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/touch_screen_button.cpp
-msgid "Bitmask"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/3d/physics_joint.cpp
-#: scene/animation/animation_node_state_machine.cpp
-msgid "Priority"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/node_2d.cpp
-msgid "Z Index"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Region Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Collision Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Occlusion Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Navigation Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Bitmask Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Priority Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/item_list.cpp
-msgid "Icon Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Z Index Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Copy bitmask."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Paste bitmask."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Erase bitmask."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create a new rectangle."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "New Rectangle"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create a new polygon."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
-msgid "New Polygon"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
-msgid "Delete Selected Shape"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Keep polygon inside region Rect."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Enable snap and show grid (configurable via the Inspector)."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display Tile Names (Hold Alt Key)"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Add or select a texture on the left panel to edit the tiles bound to it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove selected texture? This will remove all tiles which use it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "You haven't selected a texture to remove."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create from scene? This will overwrite all current tiles."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Merge from scene?"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove Texture"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "%s file(s) were not added because was already on the list."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Drag handles to edit Rect.\n"
-"Click on another Tile to edit it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
-msgid "Delete selected Rect."
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select current edited sub-tile.\n"
-"Click on another Tile to edit it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
-msgid "Delete polygon."
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"LMB: Set bit on.\n"
-"RMB: Set bit off.\n"
-"Shift+LMB: Set wildcard bit.\n"
-"Click on another Tile to edit it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings.\n"
-"Click on another Tile to edit it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to change its priority.\n"
-"Click on another Tile to edit it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to change its z index.\n"
-"Click on another Tile to edit it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Set Tile Region"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create Tile"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Set Tile Icon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Edit Tile Bitmask"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Edit Collision Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Edit Occlusion Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Edit Navigation Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Paste Tile Bitmask"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Clear Tile Bitmask"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Make Polygon Concave"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Make Polygon Convex"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove Tile"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove Collision Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove Occlusion Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove Navigation Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Edit Tile Priority"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Edit Tile Z Index"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Make Convex"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Make Concave"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create Collision Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create Occlusion Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "This property can't be changed."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
-msgid "Snap Options"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/animated_sprite.cpp
-#: scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
-#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
-#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/label_3d.cpp scene/3d/path.cpp
-#: scene/3d/physics_body.cpp scene/3d/soft_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/style_box.cpp
-msgid "Offset"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp editor/rename_dialog.cpp
-#: scene/gui/range.cpp scene/resources/animation.cpp
-#: scene/resources/visual_shader_nodes.cpp servers/physics_2d_server.cpp
-#: servers/physics_server.cpp
-msgid "Step"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Separation"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
-msgid "Selected Tile"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/line_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/polygon_2d.cpp scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/texture_rect.cpp
-#: scene/resources/material.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
-msgid "Texture"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
-msgid "Tex Offset"
-msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: editor/plugins/tile_set_editor_plugin.cpp modules/csg/csg_shape.cpp
-#: scene/2d/canvas_item.cpp scene/2d/particles_2d.cpp
-#: scene/3d/mesh_instance.cpp scene/resources/primitive_meshes.cpp
-msgid "Material"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/canvas_item.cpp
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp scene/resources/style_box.cpp
-msgid "Modulate"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
-msgid "Tile Mode"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Autotile Bitmask Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
-msgid "Subtile Size"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Subtile Spacing"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
-msgid "Occluder Offset"
-msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
-msgid "Navigation Offset"
-msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
-msgid "Shape Offset"
-msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
-msgid "Shape Transform"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
-msgid "Selected Collision"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Selected Collision One Way"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Selected Collision One Way Margin"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
-msgid "Selected Navigation"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
-msgid "Selected Occlusion"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
-msgid "Tileset Script"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "TileSet"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "No VCS plugins are available."
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid ""
-"Remote settings are empty. VCS features that use the network may not work."
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "No commit message was provided."
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Commit"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Staged Changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Unstaged Changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Commit:"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Date:"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Subtitle:"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Do you want to remove the %s branch?"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Do you want to remove the %s remote?"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Apply"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control System"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Initialize"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
-msgid "Remote Login"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Select SSH public key path"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Select SSH private key path"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "SSH Passphrase"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Detect new changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Discard all changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Stage all changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Unstage all changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Commit Message"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Commit Changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Commit List"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Commit list size"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Branches"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Create New Branch"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
-msgid "Remove Branch"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Branch Name"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
-msgid "Remotes"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Create New Remote"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
-msgid "Remove Remote"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Remote Name"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Remote URL"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Fetch"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Pull"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Push"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Force Push"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Modified"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
-msgid "Renamed"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதைகà¯à®•௠மறà¯à®ªà¯†à®¯à®°à¯ இடà¯"
-
-#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
-msgid "Deleted"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Typechange"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Unmerged"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "View:"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
-msgid "Split"
-msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Unified"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "(GLES3 only)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Add Output"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Scalar"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Vector"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Boolean"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Sampler"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Add input port"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Add output port"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
-msgid "Change input port type"
-msgstr "மாறà¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Change output port type"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Change input port name"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Change output port name"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Remove input port"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Remove output port"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Set expression"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Resize VisualShader node"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Set Uniform Name"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Set Input Default Port"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Add Node to Visual Shader"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Node(s) Moved"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
-msgid "Duplicate Nodes"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Paste Nodes"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
-msgid "Delete Nodes"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Visual Shader Input Type Changed"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "UniformRef Name Changed"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Vertex"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Fragment"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp modules/gltf/gltf_node.cpp
-#: scene/3d/light.cpp
-msgid "Light"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Show resulted shader code."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Create Shader Node"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Color function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Color operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Grayscale function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Converts HSV vector to RGB equivalent."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Converts RGB vector to HSV equivalent."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Sepia function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Burn operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Darken operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Difference operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Dodge operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "HardLight operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Lighten operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Overlay operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Screen operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "SoftLight operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Color constant."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
-msgid "Color uniform."
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the boolean result of the %s comparison between two parameters."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Equal (==)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Greater Than (>)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Greater Than or Equal (>=)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns an associated vector if the provided scalars are equal, greater or "
-"less."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns the boolean result of the comparison between INF and a scalar "
-"parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns the boolean result of the comparison between NaN and a scalar "
-"parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Less Than (<)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Less Than or Equal (<=)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Not Equal (!=)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns an associated vector if the provided boolean value is true or false."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns an associated scalar if the provided boolean value is true or false."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the boolean result of the comparison between two parameters."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns the boolean result of the comparison between INF (or NaN) and a "
-"scalar parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Boolean constant."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Boolean uniform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for all shader modes."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Input parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for vertex and fragment shader modes."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for fragment and light shader modes."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for fragment shader mode."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for light shader mode."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for vertex shader mode."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for vertex and fragment shader mode."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Scalar function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Scalar operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "E constant (2.718282). Represents the base of the natural logarithm."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Epsilon constant (0.00001). Smallest possible scalar number."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Phi constant (1.618034). Golden ratio."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Pi/4 constant (0.785398) or 45 degrees."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Pi/2 constant (1.570796) or 90 degrees."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Pi constant (3.141593) or 180 degrees."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Tau constant (6.283185) or 360 degrees."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Sqrt2 constant (1.414214). Square root of 2."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the absolute value of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the arc-cosine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the inverse hyperbolic cosine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the arc-sine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the inverse hyperbolic sine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the arc-tangent of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the arc-tangent of the parameters."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the inverse hyperbolic tangent of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Finds the nearest integer that is greater than or equal to the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Constrains a value to lie between two further values."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the cosine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the hyperbolic cosine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Converts a quantity in radians to degrees."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Base-e Exponential."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Base-2 Exponential."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Finds the nearest integer less than or equal to the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Computes the fractional part of the argument."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the inverse of the square root of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Natural logarithm."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Base-2 logarithm."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the greater of two values."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the lesser of two values."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Linear interpolation between two scalars."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the opposite value of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "1.0 - scalar"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns the value of the first parameter raised to the power of the second."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Converts a quantity in degrees to radians."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "1.0 / scalar"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Finds the nearest integer to the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Finds the nearest even integer to the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Clamps the value between 0.0 and 1.0."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Extracts the sign of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the sine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the hyperbolic sine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the square root of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"SmoothStep function( scalar(edge0), scalar(edge1), scalar(x) ).\n"
-"\n"
-"Returns 0.0 if 'x' is smaller than 'edge0' and 1.0 if x is larger than "
-"'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 "
-"using Hermite polynomials."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Step function( scalar(edge), scalar(x) ).\n"
-"\n"
-"Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the tangent of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the hyperbolic tangent of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Finds the truncated value of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Adds scalar to scalar."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Divides scalar by scalar."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Multiplies scalar by scalar."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the remainder of the two scalars."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Subtracts scalar from scalar."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Scalar constant."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#, fuzzy
-msgid "Scalar uniform."
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Perform the cubic texture lookup."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Perform the texture lookup."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Cubic texture uniform lookup."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "2D texture uniform lookup."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "2D texture uniform lookup with triplanar."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Transform function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Calculate the outer product of a pair of vectors.\n"
-"\n"
-"OuterProduct treats the first parameter 'c' as a column vector (matrix with "
-"one column) and the second parameter 'r' as a row vector (matrix with one "
-"row) and does a linear algebraic matrix multiply 'c * r', yielding a matrix "
-"whose number of rows is the number of components in 'c' and whose number of "
-"columns is the number of components in 'r'."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Composes transform from four vectors."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Decomposes transform to four vectors."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the determinant of a transform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the inverse of a transform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the transpose of a transform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Multiplies transform by transform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Multiplies vector by transform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Transform constant."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Transform uniform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Vector function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Vector operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Composes vector from three scalars."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Decomposes vector to three scalars."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the cross product of two vectors."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the distance between two points."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the dot product of two vectors."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns the vector that points in the same direction as a reference vector. "
-"The function has three vector parameters : N, the vector to orient, I, the "
-"incident vector, and Nref, the reference vector. If the dot product of I and "
-"Nref is smaller than zero the return value is N. Otherwise -N is returned."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the length of a vector."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Linear interpolation between two vectors."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Linear interpolation between two vectors using scalar."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the normalize product of vector."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "1.0 - vector"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "1.0 / vector"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns the vector that points in the direction of reflection ( a : incident "
-"vector, b : normal vector )."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the vector that points in the direction of refraction."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"SmoothStep function( vector(edge0), vector(edge1), vector(x) ).\n"
-"\n"
-"Returns 0.0 if 'x' is smaller than 'edge0' and 1.0 if 'x' is larger than "
-"'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 "
-"using Hermite polynomials."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"SmoothStep function( scalar(edge0), scalar(edge1), vector(x) ).\n"
-"\n"
-"Returns 0.0 if 'x' is smaller than 'edge0' and 1.0 if 'x' is larger than "
-"'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 "
-"using Hermite polynomials."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Step function( vector(edge), vector(x) ).\n"
-"\n"
-"Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Step function( scalar(edge), vector(x) ).\n"
-"\n"
-"Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Adds vector to vector."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Divides vector by vector."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Multiplies vector by vector."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the remainder of the two vectors."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Subtracts vector from vector."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Vector constant."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Vector uniform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Custom Godot Shader Language expression, with custom amount of input and "
-"output ports. This is a direct injection of code into the vertex/fragment/"
-"light function, do not use it to write the function declarations inside."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns falloff based on the dot product of surface normal and view "
-"direction of camera (pass associated inputs to it)."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Custom Godot Shader Language expression, which is placed on top of the "
-"resulted shader. You can place various function definitions inside and call "
-"it later in the Expressions. You can also declare varyings, uniforms and "
-"constants."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "A reference to an existing uniform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "(Fragment/Light mode only) Scalar derivative function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "(Fragment/Light mode only) Vector derivative function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"(Fragment/Light mode only) (Vector) Derivative in 'x' using local "
-"differencing."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"(Fragment/Light mode only) (Scalar) Derivative in 'x' using local "
-"differencing."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"(Fragment/Light mode only) (Vector) Derivative in 'y' using local "
-"differencing."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"(Fragment/Light mode only) (Scalar) Derivative in 'y' using local "
-"differencing."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"(Fragment/Light mode only) (Vector) Sum of absolute derivative in 'x' and "
-"'y'."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"(Fragment/Light mode only) (Scalar) Sum of absolute derivative in 'x' and "
-"'y'."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "VisualShader"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property:"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Visual Shader Mode Changed"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Runnable"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export the project for all the presets defined."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "All presets must have an export path defined for Export All to work."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Delete preset '%s'?"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Exporting All"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export Path"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Presets"
-msgstr ""
-
-#: editor/project_export.cpp editor/project_settings_editor.cpp
-msgid "Add..."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"If checked, the preset will be available for use in one-click deploy.\n"
-"Only one preset per platform may be marked as runnable."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Resources"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export all resources in the project"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export selected scenes (and dependencies)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export selected resources (and dependencies)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export Mode:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Resources to export:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Filters to export non-resource files/folders\n"
-"(comma-separated, e.g: *.json, *.txt, docs/*)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Filters to exclude files/folders from project\n"
-"(comma-separated, e.g: *.json, *.txt, docs/*)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Features"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Custom (comma-separated):"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Feature List:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Script"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "GDScript Export Mode:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Compiled Bytecode (Faster Loading)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Encrypted (Provide Key Below)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "GDScript Encryption Key (256-bits as hexadecimal):"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Note: Encryption key needs to be stored in the binary,\n"
-"you need to build the export templates from source."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "More Info..."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export PCK/Zip..."
-msgstr ""
-
-#: editor/project_export.cpp
-#, fuzzy
-msgid "Export Project..."
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: editor/project_export.cpp
-msgid "Export All"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Choose an export mode:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export All..."
-msgstr ""
-
-#: editor/project_export.cpp editor/project_manager.cpp
-msgid "ZIP File"
-msgstr ""
-
-#: editor/project_export.cpp
-#, fuzzy
-msgid "Godot Project Pack"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Manage Export Templates"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export With Debug"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "The path specified doesn't exist."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Error opening package file (it's not in ZIP format)."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Invalid \".zip\" project file; it doesn't contain a \"project.godot\" file."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Please choose an empty folder."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Please choose a \"project.godot\" or \".zip\" file."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "This directory already contains a Godot project."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "New Game Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Imported Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Invalid project name."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Couldn't create folder."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "There is already a folder in this path with the specified name."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "It would be a good idea to name your project."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Invalid project path (changed anything?)."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Couldn't load project.godot in project path (error %d). It may be missing or "
-"corrupted."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Couldn't edit project.godot in project path."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Couldn't create project.godot in project path."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Package installed successfully!"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Rename Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Import Existing Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Import & Edit"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Create New Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Create & Edit"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Install Project:"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Install & Edit"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Project Name:"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Project Path:"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Project Installation Path:"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Renderer:"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "OpenGL ES 3.0"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Not supported by your GPU drivers."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Higher visual quality\n"
-"All features available\n"
-"Incompatible with older hardware\n"
-"Not recommended for web games"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "OpenGL ES 2.0"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Lower visual quality\n"
-"Some features not available\n"
-"Works on most hardware\n"
-"Recommended for web games"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Renderer can be changed later, but scenes may need to be adjusted."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Missing Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Error: Project is missing on the filesystem."
-msgstr ""
-
-#: editor/project_manager.cpp editor/scene_tree_dock.cpp
-msgid "Local"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Local Projects"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Asset Library Projects"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Can't open project at '%s'."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Are you sure to open more than one project?"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"The following project settings file does not specify the version of Godot "
-"through which it was created.\n"
-"\n"
-"%s\n"
-"\n"
-"If you proceed with opening it, it will be converted to Godot's current "
-"configuration file format.\n"
-"Warning: You won't be able to open the project with previous versions of the "
-"engine anymore."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"The following project settings file was generated by an older engine "
-"version, and needs to be converted for this version:\n"
-"\n"
-"%s\n"
-"\n"
-"Do you want to convert it?\n"
-"Warning: You won't be able to open the project with previous versions of the "
-"engine anymore."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"The project settings were created by a newer engine version, whose settings "
-"are not compatible with this version."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Can't run project: no main scene defined.\n"
-"Please edit the project and set the main scene in the Project Settings under "
-"the \"Application\" category."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Can't run project: Assets need to be imported.\n"
-"Please edit the project to trigger the initial import."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Are you sure to run %d projects at once?"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Remove %d projects from the list?"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Remove this project from the list?"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Remove all missing projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Language changed.\n"
-"The interface will update after restarting the editor or project manager."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Are you sure to scan %s folders for existing Godot projects?\n"
-"This could take a while."
-msgstr ""
-
-#. TRANSLATORS: This refers to the application where users manage their Godot projects.
-#: editor/project_manager.cpp
-#, fuzzy
-msgctxt "Application"
-msgid "Project Manager"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: editor/project_manager.cpp
-msgid "Last Modified"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Loading, please wait..."
-msgstr ""
-
-#: editor/project_manager.cpp
-#, fuzzy
-msgid "Edit Project"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: editor/project_manager.cpp
-msgid "Run Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Scan"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Scan Projects"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Select a Folder to Scan"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "New Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Import Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-#, fuzzy
-msgid "Remove Project"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: editor/project_manager.cpp
-msgid "Remove Missing"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "About"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Restart Now"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Remove All"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Also delete project contents (no undo!)"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Can't run project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"You currently don't have any projects.\n"
-"Would you like to explore official example projects in the Asset Library?"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Filter projects"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"This field filters projects by name and last path component.\n"
-"To filter projects by name and full path, the query must contain at least "
-"one `/` character."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Physical Key"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Key "
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Joy Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Joy Axis"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Mouse Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid ""
-"Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or "
-"'\"'"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "An action with the name '%s' already exists."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Rename Input Action Event"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Change Action deadzone"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Add Input Action Event"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "All Devices"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid " (Physical)"
-msgstr ""
-
-#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-msgid "Press a Key..."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Mouse Button Index:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Left Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Right Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Middle Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Wheel Up Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Wheel Down Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Wheel Left Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Wheel Right Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "X Button 1"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "X Button 2"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Joypad Axis Index:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Joypad Button Index:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Erase Input Action"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Erase Input Action Event"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Add Event"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Left Button."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Right Button."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Middle Button."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Wheel Up."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Wheel Down."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Add Global Property"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Select a setting item first!"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "No property '%s' exists."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Setting '%s' is internal, and it can't be deleted."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Delete Item"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid ""
-"Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or "
-"'\"'."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Add Input Action"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Error saving settings."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Settings saved OK."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Moved Input Action Event"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Override for Feature"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-#, fuzzy
-msgid "Add %d Translations"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: editor/project_settings_editor.cpp
-msgid "Remove Translation"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Translation Resource Remap: Add %d Path(s)"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Translation Resource Remap: Add %d Remap(s)"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Change Resource Remap Language"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Remove Resource Remap"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Remove Resource Remap Option"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Changed Locale Filter"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Changed Locale Filter Mode"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Project Settings (project.godot)"
-msgstr ""
-
-#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-msgid "General"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Override For..."
-msgstr ""
-
-#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-msgid "The editor must be restarted for changes to take effect."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Input Map"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Action:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp scene/gui/scroll_container.cpp
-msgid "Deadzone"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Device:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Index:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Localization"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Translations"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Translations:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Remaps"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Resources:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Remaps by Locale:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Locales Filter"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Show All Locales"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Show Selected Locales Only"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Filter mode:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Locales:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "AutoLoad"
-msgstr ""
-
-#: editor/project_settings_editor.cpp platform/android/export/export_plugin.cpp
-#: platform/iphone/export/export.cpp
-msgid "Plugins"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Import Defaults"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Preset..."
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Zero"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Easing In-Out"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Easing Out-In"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "File..."
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Dir..."
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Assign"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Select Node"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Error loading file: Not a resource!"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Pick a Node"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Bit %d, val %d."
-msgstr ""
-
-#: editor/property_selector.cpp
-msgid "Select Property"
-msgstr ""
-
-#: editor/property_selector.cpp
-msgid "Select Virtual Method"
-msgstr ""
-
-#: editor/property_selector.cpp
-msgid "Select Method"
-msgstr ""
-
-#: editor/rename_dialog.cpp editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Batch Rename"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதைகà¯à®•௠மறà¯à®ªà¯†à®¯à®°à¯ இடà¯"
-
-#: editor/rename_dialog.cpp
-msgid "Prefix:"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Suffix:"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Use Regular Expressions"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Advanced Options"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Substitute"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Node name"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Node's parent name, if available"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Node type"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Current scene name"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Root node name"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid ""
-"Sequential integer counter.\n"
-"Compare counter options."
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Per-level Counter"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "If set, the counter restarts for each group of child nodes."
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Initial value for the counter"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Amount by which counter is incremented for each node"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Padding"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid ""
-"Minimum number of digits for the counter.\n"
-"Missing digits are padded with leading zeros."
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Post-Process"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Style"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Keep"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "PascalCase to snake_case"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "snake_case to PascalCase"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Case"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "To Lowercase"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "To Uppercase"
-msgstr ""
-
-#: editor/rename_dialog.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Reset"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Regular Expression Error:"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "At character %s"
-msgstr ""
-
-#: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp
-msgid "Reparent Node"
-msgstr ""
-
-#: editor/reparent_dialog.cpp
-msgid "Reparent Location (Select new Parent):"
-msgstr ""
-
-#: editor/reparent_dialog.cpp
-msgid "Keep Global Transform"
-msgstr ""
-
-#: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp
-msgid "Reparent"
-msgstr ""
-
-#: editor/run_settings_dialog.cpp
-msgid "Run Mode:"
-msgstr ""
-
-#: editor/run_settings_dialog.cpp scene/main/scene_tree.cpp
-msgid "Current Scene"
-msgstr ""
-
-#: editor/run_settings_dialog.cpp
-msgid "Main Scene Arguments:"
-msgstr ""
-
-#: editor/run_settings_dialog.cpp
-msgid "Scene Run Settings"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "No parent to instance the scenes at."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Error loading scene from %s"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Cannot instance the scene '%s' because the current scene exists within one "
-"of its nodes."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Instance Scene(s)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Replace with Branch Scene"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Instance Child Scene"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Can't paste root node into the same scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Paste Node(s)"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: editor/scene_tree_dock.cpp
-msgid "Detach Script"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on the tree root."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Move Node In Parent"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Move Nodes In Parent"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Duplicate Node(s)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Node must belong to the edited scene to become root."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Instantiated scenes can't become root"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Make node as Root"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Delete %d nodes and any children?"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Delete %d nodes?"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/scene_tree_dock.cpp
-msgid "Delete the root node \"%s\"?"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Delete node \"%s\" and its children?"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Delete node \"%s\"?"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Saving the branch as a scene requires having a scene open in the editor."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Saving the branch as a scene requires selecting only one node, but you have "
-"selected %d nodes."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Can't save the root node branch as an instanced scene.\n"
-"To create an editable copy of the current scene, duplicate it using the "
-"FileSystem dock context menu\n"
-"or create an inherited scene using Scene > New Inherited Scene... instead."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Can't save the branch of an already instanced scene.\n"
-"To create a variation of a scene, you can make an inherited scene based on "
-"the instanced scene using Scene > New Inherited Scene... instead."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Can't save a branch which is a child of an already instantiated scene.\n"
-"To save this branch into its own scene, open the original scene, right click "
-"on this branch, and select \"Save Branch as Scene\"."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Can't save a branch which is part of an inherited scene.\n"
-"To save this branch into its own scene, open the original scene, right click "
-"on this branch, and select \"Save Branch as Scene\"."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Save New Scene As..."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Disabling \"editable_instance\" will cause all properties of the node to be "
-"reverted to their default."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Enabling \"Load As Placeholder\" will disable \"Editable Children\" and "
-"cause all properties of the node to be reverted to their default."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Make Local"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
-msgid "Another node already uses this unique name in the scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Enable Scene Unique Name"
-msgstr "மாறà¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
-#, fuzzy
-msgid "Disable Scene Unique Name"
-msgstr "மாறà¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: editor/scene_tree_dock.cpp
-msgid "New Scene Root"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Create Root Node:"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "2D Scene"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "3D Scene"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "User Interface"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Other Node"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: editor/scene_tree_dock.cpp
-msgid "Can't operate on nodes from a foreign scene!"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Can't operate on nodes the current scene inherits from!"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Attach Script"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Cut Node(s)"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: editor/scene_tree_dock.cpp
-msgid "Remove Node(s)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Change type of node(s)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Couldn't save new scene. Likely dependencies (instances) couldn't be "
-"satisfied."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Error saving scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Error duplicating scene to save it."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Access as Scene Unique Name"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Clear Inheritance"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Editable Children"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Load As Placeholder"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Cannot attach a script: there are no languages registered.\n"
-"This is probably because this editor was built with all language modules "
-"disabled."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Add Child Node"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Expand/Collapse All"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Change Type"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Reparent to New Node"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Make Scene Root"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Merge From Scene"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp editor/script_editor_debugger.cpp
-msgid "Save Branch as Scene"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp editor/script_editor_debugger.cpp
-msgid "Copy Node Path"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Delete (No Confirm)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Add/Create a New Node."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Instance a scene file as a Node. Creates an inherited scene if no root node "
-"exists."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Attach a new or existing script to the selected node."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Detach the script from the selected node."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Remote"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"If selected, the Remote scene tree dock will cause the project to stutter "
-"every time it updates.\n"
-"Switch back to the Local scene tree dock to improve performance."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Show Scene Tree Root Selection"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Derive Script Globals By Name"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Use Favorites Root Selection"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Toggle Visible"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-#, fuzzy
-msgid "Unlock Node"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-
-#: editor/scene_tree_editor.cpp
-msgid "Button Group"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "(Connecting From)"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Node configuration warning:"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"This node can be accessed from within anywhere in the scene by preceding it "
-"with the '%s' prefix in a node path.\n"
-"Click to disable this."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"Node has %s connection(s) and %s group(s).\n"
-"Click to show signals dock."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"Node has %s connection(s).\n"
-"Click to show signals dock."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"Node is in %s group(s).\n"
-"Click to show groups dock."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Open Script:"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"Node is locked.\n"
-"Click to unlock it."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"Children are not selectable.\n"
-"Click to make selectable."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Toggle Visibility"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"AnimationPlayer is pinned.\n"
-"Click to unpin."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Invalid node name, the following characters are not allowed:"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Rename Node"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Scene Tree (Nodes):"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Node Configuration Warning!"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Select a Node"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Path is empty."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Filename is empty."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Path is not local."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Invalid base path."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "A directory with the same name exists."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "File does not exist."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Invalid extension."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Wrong extension chosen."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Error loading template '%s'"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Error - Could not create script in filesystem."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Error loading script from %s"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Overrides"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Open Script / Choose Location"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Open Script"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "File exists, it will be reused."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Invalid path."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Invalid class name."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Invalid inherited parent name or path."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Script path/name is valid."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Allowed: a-z, A-Z, 0-9, _ and ."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Built-in script (into scene file)."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Will create a new script file."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Will load an existing script file."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Script file already exists."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid ""
-"Note: Built-in scripts have some limitations and can't be edited using an "
-"external editor."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid ""
-"Warning: Having the script name be the same as a built-in type is usually "
-"not desired."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Class Name:"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Template:"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Built-in Script:"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Attach Node Script"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Bytes:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Warning:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Error:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "C++ Error"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "C++ Error:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "C++ Source"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Source:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "C++ Source:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Stack Trace"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Errors"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Child process connected."
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Copy Error"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Open C++ Source on GitHub"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Video RAM"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Skip Breakpoints"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Inspect Previous Instance"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Inspect Next Instance"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Stack Frames"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Filter stack variables"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Auto Switch To Remote Scene Tree"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Remote Scene Tree Refresh Interval"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Remote Inspect Refresh Interval"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Network Profiler"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Monitor"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Monitors"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Pick one or more items from the list to display the graph."
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "List of Video Memory Usage by Resource:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Total:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Export list to a CSV file"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Resource Path"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp scene/resources/audio_stream_sample.cpp
-#: servers/audio/effects/audio_effect_record.cpp
-msgid "Format"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp scene/main/viewport.cpp
-msgid "Usage"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp servers/visual_server.cpp
-msgid "Misc"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Clicked Control:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Clicked Control Type:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Live Edit Root:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Set From Tree"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Export measures as CSV"
-msgstr ""
-
-#: editor/settings_config_dialog.cpp
-msgid "Erase Shortcut"
-msgstr ""
-
-#: editor/settings_config_dialog.cpp
-msgid "Restore Shortcut"
-msgstr ""
-
-#: editor/settings_config_dialog.cpp
-msgid "Change Shortcut"
-msgstr ""
-
-#: editor/settings_config_dialog.cpp
-msgid "Editor Settings"
-msgstr ""
-
-#: editor/settings_config_dialog.cpp
-msgid "Shortcuts"
-msgstr ""
-
-#: editor/settings_config_dialog.cpp
-msgid "Binding"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Light Radius"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Stream Player 3D"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change AudioStreamPlayer3D Emission Angle"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
-#: platform/osx/export/export.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Camera"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Camera FOV"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Camera Size"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Visibility Notifier"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Notifier AABB"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Particles AABB"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Reflection Probe"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Probe Extents"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "GI Probe"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Baked Indirect Light"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
-msgid "Change Sphere Shape Radius"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
-msgid "Change Box Shape Extents"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Capsule Shape Radius"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Capsule Shape Height"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Cylinder Shape Radius"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Cylinder Shape Height"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Ray Shape Length"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Navigation Edge"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Navigation Edge Disabled"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Navigation Solid"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Navigation Solid Disabled"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Joint Body A"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Joint Body B"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Room Edge"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Room Overlap"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Set Room Point Position"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp scene/3d/portal.cpp
-msgid "Portal Margin"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Portal Edge"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Portal Arrow"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Set Portal Point Position"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Portal Front"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Portal Back"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp scene/2d/light_occluder_2d.cpp
-#: scene/2d/tile_map.cpp
-msgid "Occluder"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Set Occluder Sphere Radius"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Set Occluder Sphere Position"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Set Occluder Polygon Point Position"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Set Occluder Hole Point Position"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Occluder Polygon Front"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Occluder Polygon Back"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Occluder Hole"
-msgstr ""
-
-#: main/main.cpp
-msgid "Godot Physics"
-msgstr ""
-
-#: main/main.cpp servers/physics_2d/physics_2d_server_sw.cpp
-#: servers/visual/visual_server_scene.cpp
-msgid "Use BVH"
-msgstr ""
-
-#: main/main.cpp servers/physics_2d/physics_2d_server_sw.cpp
-#: servers/visual/visual_server_scene.cpp
-msgid "BVH Collision Margin"
-msgstr ""
-
-#: main/main.cpp
-msgid "Crash Handler"
-msgstr ""
-
-#: main/main.cpp
-msgid "Multithreaded Server"
-msgstr ""
-
-#: main/main.cpp
-msgid "RID Pool Prealloc"
-msgstr ""
-
-#: main/main.cpp
-msgid "Debugger stdout"
-msgstr ""
-
-#: main/main.cpp
-msgid "Max Chars Per Second"
-msgstr ""
-
-#: main/main.cpp
-msgid "Max Messages Per Frame"
-msgstr ""
-
-#: main/main.cpp
-msgid "Max Errors Per Second"
-msgstr ""
-
-#: main/main.cpp
-msgid "Max Warnings Per Second"
-msgstr ""
-
-#: main/main.cpp
-msgid "Flush stdout On Print"
-msgstr ""
-
-#: main/main.cpp servers/visual_server.cpp
-msgid "Logging"
-msgstr ""
-
-#: main/main.cpp
-msgid "File Logging"
-msgstr ""
-
-#: main/main.cpp
-msgid "Enable File Logging"
-msgstr ""
-
-#: main/main.cpp
-msgid "Log Path"
-msgstr ""
-
-#: main/main.cpp
-msgid "Max Log Files"
-msgstr ""
-
-#: main/main.cpp
-msgid "Driver"
-msgstr ""
-
-#: main/main.cpp
-msgid "Driver Name"
-msgstr ""
-
-#: main/main.cpp
-msgid "Fallback To GLES2"
-msgstr ""
-
-#: main/main.cpp
-msgid "Use Nvidia Rect Flicker Workaround"
-msgstr ""
-
-#: main/main.cpp
-msgid "DPI"
-msgstr ""
-
-#: main/main.cpp
-msgid "Allow hiDPI"
-msgstr ""
-
-#: main/main.cpp
-msgid "V-Sync"
-msgstr ""
-
-#: main/main.cpp
-msgid "Use V-Sync"
-msgstr ""
-
-#: main/main.cpp
-msgid "Per Pixel Transparency"
-msgstr ""
-
-#: main/main.cpp
-msgid "Allowed"
-msgstr ""
-
-#: main/main.cpp
-msgid "Intended Usage"
-msgstr ""
-
-#: main/main.cpp
-msgid "Framebuffer Allocation"
-msgstr ""
-
-#: main/main.cpp platform/uwp/os_uwp.cpp
-msgid "Energy Saving"
-msgstr ""
-
-#: main/main.cpp
-msgid "Threads"
-msgstr ""
-
-#: main/main.cpp servers/physics_2d/physics_2d_server_wrap_mt.h
-msgid "Thread Model"
-msgstr ""
-
-#: main/main.cpp
-msgid "Thread Safe BVH"
-msgstr ""
-
-#: main/main.cpp
-msgid "Handheld"
-msgstr ""
-
-#: main/main.cpp platform/javascript/export/export.cpp
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Orientation"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
-msgid "Common"
-msgstr ""
-
-#: main/main.cpp
-msgid "Physics FPS"
-msgstr ""
-
-#: main/main.cpp
-msgid "Force FPS"
-msgstr ""
-
-#: main/main.cpp
-msgid "Enable Pause Aware Picking"
-msgstr ""
-
-#: main/main.cpp scene/gui/item_list.cpp scene/gui/popup_menu.cpp
-#: scene/gui/scroll_container.cpp scene/gui/text_edit.cpp scene/gui/tree.cpp
-#: scene/main/viewport.cpp scene/register_scene_types.cpp
-msgid "GUI"
-msgstr ""
-
-#: main/main.cpp
-msgid "Drop Mouse On GUI Input Disabled"
-msgstr ""
-
-#: main/main.cpp
-msgid "stdout"
-msgstr ""
-
-#: main/main.cpp
-msgid "Print FPS"
-msgstr ""
-
-#: main/main.cpp
-msgid "Verbose stdout"
-msgstr ""
-
-#: main/main.cpp scene/main/scene_tree.cpp scene/resources/multimesh.cpp
-msgid "Physics Interpolation"
-msgstr ""
-
-#: main/main.cpp
-#, fuzzy
-msgid "Enable Warnings"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: main/main.cpp
-msgid "Frame Delay Msec"
-msgstr ""
-
-#: main/main.cpp
-msgid "Low Processor Mode"
-msgstr ""
-
-#: main/main.cpp
-msgid "Delta Sync After Draw"
-msgstr ""
-
-#: main/main.cpp
-msgid "iOS"
-msgstr ""
-
-#: main/main.cpp
-msgid "Hide Home Indicator"
-msgstr ""
-
-#: main/main.cpp
-msgid "Input Devices"
-msgstr ""
-
-#: main/main.cpp
-msgid "Pointing"
-msgstr ""
-
-#: main/main.cpp
-msgid "Touch Delay"
-msgstr ""
-
-#: main/main.cpp servers/visual_server.cpp
-msgid "GLES3"
-msgstr ""
-
-#: main/main.cpp servers/visual_server.cpp
-msgid "Shaders"
-msgstr ""
-
-#: main/main.cpp
-msgid "Debug Shader Fallbacks"
-msgstr ""
-
-#: main/main.cpp scene/3d/baked_lightmap.cpp scene/3d/camera.cpp
-#: scene/3d/world_environment.cpp scene/main/scene_tree.cpp
-#: scene/resources/world.cpp
-msgid "Environment"
-msgstr ""
-
-#: main/main.cpp
-msgid "Default Clear Color"
-msgstr ""
-
-#: main/main.cpp
-msgid "Boot Splash"
-msgstr ""
-
-#: main/main.cpp
-msgid "Show Image"
-msgstr ""
-
-#: main/main.cpp
-msgid "Image"
-msgstr ""
-
-#: main/main.cpp
-msgid "Fullsize"
-msgstr ""
-
-#: main/main.cpp scene/resources/dynamic_font.cpp
-msgid "Use Filter"
-msgstr ""
-
-#: main/main.cpp scene/resources/style_box.cpp
-msgid "BG Color"
-msgstr ""
-
-#: main/main.cpp
-msgid "macOS Native Icon"
-msgstr ""
-
-#: main/main.cpp
-msgid "Windows Native Icon"
-msgstr ""
-
-#: main/main.cpp
-msgid "Buffering"
-msgstr ""
-
-#: main/main.cpp
-msgid "Agile Event Flushing"
-msgstr ""
-
-#: main/main.cpp
-msgid "Emulate Touch From Mouse"
-msgstr ""
-
-#: main/main.cpp
-msgid "Emulate Mouse From Touch"
-msgstr ""
-
-#: main/main.cpp
-msgid "Mouse Cursor"
-msgstr ""
-
-#: main/main.cpp
-#, fuzzy
-msgid "Custom Image"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: main/main.cpp
-msgid "Custom Image Hotspot"
-msgstr ""
-
-#: main/main.cpp
-msgid "Tooltip Position Offset"
-msgstr ""
-
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
-msgid "Debugger Agent"
-msgstr ""
-
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
-msgid "Wait For Debugger"
-msgstr ""
-
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
-msgid "Wait Timeout"
-msgstr ""
-
-#: main/main.cpp
-msgid "Runtime"
-msgstr ""
-
-#: main/main.cpp
-msgid "Unhandled Exception Policy"
-msgstr ""
-
-#: main/main.cpp
-#, fuzzy
-msgid "Main Loop Type"
-msgstr "மாறà¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: main/main.cpp scene/gui/texture_progress.cpp
-#: scene/gui/viewport_container.cpp
-msgid "Stretch"
-msgstr ""
-
-#: main/main.cpp
-msgid "Aspect"
-msgstr ""
-
-#: main/main.cpp
-msgid "Shrink"
-msgstr ""
-
-#: main/main.cpp scene/main/scene_tree.cpp
-msgid "Auto Accept Quit"
-msgstr ""
-
-#: main/main.cpp scene/main/scene_tree.cpp
-msgid "Quit On Go Back"
-msgstr ""
-
-#: main/main.cpp scene/main/viewport.cpp
-msgid "Snap Controls To Pixels"
-msgstr ""
-
-#: main/main.cpp
-msgid "Dynamic Fonts"
-msgstr ""
-
-#: main/main.cpp
-msgid "Use Oversampling"
-msgstr ""
-
-#: modules/bullet/register_types.cpp modules/bullet/space_bullet.cpp
-msgid "Active Soft World"
-msgstr ""
-
-#: modules/csg/csg_gizmos.cpp
-msgid "CSG"
-msgstr ""
-
-#: modules/csg/csg_gizmos.cpp
-msgid "Change Cylinder Radius"
-msgstr ""
-
-#: modules/csg/csg_gizmos.cpp
-msgid "Change Cylinder Height"
-msgstr ""
-
-#: modules/csg/csg_gizmos.cpp
-msgid "Change Torus Inner Radius"
-msgstr ""
-
-#: modules/csg/csg_gizmos.cpp
-msgid "Change Torus Outer Radius"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-#, fuzzy
-msgid "Operation"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: modules/csg/csg_shape.cpp
-msgid "Calculate Tangents"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Use Collision"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp servers/physics_2d_server.cpp
-msgid "Collision Layer"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp scene/2d/ray_cast_2d.cpp scene/3d/camera.cpp
-#: scene/3d/ray_cast.cpp scene/3d/spring_arm.cpp
-#: scene/resources/navigation_mesh.cpp servers/physics_server.cpp
-msgid "Collision Mask"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-#, fuzzy
-msgid "Invert Faces"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-
-#: modules/csg/csg_shape.cpp scene/2d/navigation_agent_2d.cpp
-#: scene/2d/navigation_obstacle_2d.cpp scene/3d/navigation_agent.cpp
-#: scene/3d/navigation_obstacle.cpp scene/3d/vehicle_body.cpp
-#: scene/animation/root_motion_view.cpp scene/resources/capsule_shape.cpp
-#: scene/resources/capsule_shape_2d.cpp scene/resources/circle_shape_2d.cpp
-#: scene/resources/cylinder_shape.cpp scene/resources/environment.cpp
-#: scene/resources/navigation_mesh.cpp scene/resources/primitive_meshes.cpp
-#: scene/resources/sphere_shape.cpp
-msgid "Radius"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp scene/resources/primitive_meshes.cpp
-msgid "Radial Segments"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp scene/resources/primitive_meshes.cpp
-msgid "Rings"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Smooth Faces"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Sides"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Cone"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Inner Radius"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Outer Radius"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Ring Sides"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
-#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Polygon"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: modules/csg/csg_shape.cpp
-msgid "Spin Degrees"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Spin Sides"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-#, fuzzy
-msgid "Path Node"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Interval Type"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Interval"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Simplify Angle"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Rotation"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Local"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Continuous U"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path U Distance"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Joined"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "Compression Mode"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "Transfer Channel"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "Channel Count"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "Always Ordered"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "Server Relay"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "DTLS Verify"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "DTLS Hostname"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "Use DTLS"
-msgstr ""
-
-#: modules/fbx/editor_scene_importer_fbx.cpp
-msgid "FBX"
-msgstr ""
-
-#: modules/fbx/editor_scene_importer_fbx.cpp
-msgid "Use FBX"
-msgstr ""
-
-#: modules/gdnative/gdnative.cpp
-msgid "Config File"
-msgstr ""
-
-#: modules/gdnative/gdnative.cpp
-msgid "Load Once"
-msgstr ""
-
-#: modules/gdnative/gdnative.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Singleton"
-msgstr ""
-
-#: modules/gdnative/gdnative.cpp
-msgid "Symbol Prefix"
-msgstr ""
-
-#: modules/gdnative/gdnative.cpp
-msgid "Reloadable"
-msgstr ""
-
-#: modules/gdnative/gdnative.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-#: modules/gdnative/nativescript/nativescript.cpp
-msgid "Library"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Select the dynamic library for this entry"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Select dependencies of the library for this entry"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Remove current entry"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Double click to create a new entry"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Platform:"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Platform"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Dynamic Library"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Add an architecture entry"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "GDNativeLibrary"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Enabled GDNative Singleton"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Disabled GDNative Singleton"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
-msgstr ""
-
-#: modules/gdnative/nativescript/nativescript.cpp
-msgid "Class Name"
-msgstr ""
-
-#: modules/gdnative/nativescript/nativescript.cpp
-msgid "Script Class"
-msgstr ""
-
-#: modules/gdnative/nativescript/nativescript.cpp
-msgid "Icon Path"
-msgstr ""
-
-#: modules/gdnative/register_types.cpp
-msgid "GDNative"
-msgstr ""
-
-#: modules/gdscript/editor/gdscript_highlighter.cpp
-#: modules/gdscript/gdscript.cpp
-msgid "GDScript"
-msgstr ""
-
-#: modules/gdscript/editor/gdscript_highlighter.cpp
-msgid "Function Definition Color"
-msgstr ""
-
-#: modules/gdscript/editor/gdscript_highlighter.cpp
-msgid "Node Path Color"
-msgstr ""
-
-#: modules/gdscript/gdscript.cpp modules/visual_script/visual_script.cpp
-msgid "Max Call Stack"
-msgstr ""
-
-#: modules/gdscript/gdscript.cpp
-msgid "Treat Warnings As Errors"
-msgstr ""
-
-#: modules/gdscript/gdscript.cpp
-msgid "Exclude Addons"
-msgstr ""
-
-#: modules/gdscript/gdscript.cpp
-msgid "Autocomplete Setters And Getters"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Step argument is zero!"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Not a script with an instance"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Not based on a script"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Not based on a resource file"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Invalid instance dictionary format (missing @path)"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Invalid instance dictionary format (can't load script at @path)"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Invalid instance dictionary format (invalid script at @path)"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Invalid instance dictionary (invalid subclasses)"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Object can't provide a length."
-msgstr ""
-
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-msgid "Language Server"
-msgstr ""
-
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-msgid "Enable Smart Resolve"
-msgstr ""
-
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-msgid "Show Native Symbols In Editor"
-msgstr ""
-
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-msgid "Use Thread"
-msgstr ""
-
-#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
-msgid "Export Mesh GLTF2"
-msgstr ""
-
-#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
-msgid "Export GLTF..."
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Buffer View"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp modules/gltf/gltf_buffer_view.cpp
-msgid "Byte Offset"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-#, fuzzy
-msgid "Component Type"
-msgstr "மாறà¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Normalized"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-#, fuzzy
-msgid "Count"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: modules/gltf/gltf_accessor.cpp scene/resources/visual_shader_nodes.cpp
-#, fuzzy
-msgid "Min"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: modules/gltf/gltf_accessor.cpp scene/resources/visual_shader_nodes.cpp
-msgid "Max"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-#, fuzzy
-msgid "Sparse Count"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Sparse Indices Buffer View"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Sparse Indices Byte Offset"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Sparse Indices Component Type"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Sparse Values Buffer View"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Sparse Values Byte Offset"
-msgstr ""
-
-#: modules/gltf/gltf_buffer_view.cpp
-msgid "Buffer"
-msgstr ""
-
-#: modules/gltf/gltf_buffer_view.cpp
-msgid "Byte Length"
-msgstr ""
-
-#: modules/gltf/gltf_buffer_view.cpp
-msgid "Byte Stride"
-msgstr ""
-
-#: modules/gltf/gltf_buffer_view.cpp
-msgid "Indices"
-msgstr ""
-
-#: modules/gltf/gltf_camera.cpp
-msgid "FOV Size"
-msgstr ""
-
-#: modules/gltf/gltf_camera.cpp
-msgid "Zfar"
-msgstr ""
-
-#: modules/gltf/gltf_camera.cpp
-msgid "Znear"
-msgstr ""
-
-#: modules/gltf/gltf_light.cpp scene/2d/canvas_modulate.cpp
-#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/light.cpp
-#: scene/animation/root_motion_view.cpp scene/gui/color_picker.cpp
-#: scene/gui/color_rect.cpp scene/gui/rich_text_effect.cpp
-#: scene/resources/environment.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp
-msgid "Color"
-msgstr ""
-
-#: modules/gltf/gltf_light.cpp scene/3d/reflection_probe.cpp
-#: scene/resources/environment.cpp
-msgid "Intensity"
-msgstr ""
-
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
-msgid "Range"
-msgstr ""
-
-#: modules/gltf/gltf_light.cpp
-msgid "Inner Cone Angle"
-msgstr ""
-
-#: modules/gltf/gltf_light.cpp
-msgid "Outer Cone Angle"
-msgstr ""
-
-#: modules/gltf/gltf_mesh.cpp
-msgid "Blend Weights"
-msgstr ""
-
-#: modules/gltf/gltf_mesh.cpp
-msgid "Instance Materials"
-msgstr ""
-
-#: modules/gltf/gltf_node.cpp scene/3d/skeleton.cpp
-msgid "Parent"
-msgstr ""
-
-#: modules/gltf/gltf_node.cpp
-msgid "Xform"
-msgstr ""
-
-#: modules/gltf/gltf_node.cpp scene/3d/mesh_instance.cpp
-msgid "Skin"
-msgstr ""
-
-#: modules/gltf/gltf_node.cpp scene/3d/spatial.cpp
-#, fuzzy
-msgid "Translation"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: modules/gltf/gltf_node.cpp
-msgid "Children"
-msgstr ""
-
-#: modules/gltf/gltf_skeleton.cpp modules/gltf/gltf_skin.cpp
-#, fuzzy
-msgid "Joints"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-
-#: modules/gltf/gltf_skeleton.cpp modules/gltf/gltf_skin.cpp
-msgid "Roots"
-msgstr ""
-
-#: modules/gltf/gltf_skeleton.cpp modules/gltf/gltf_state.cpp
-msgid "Unique Names"
-msgstr ""
-
-#: modules/gltf/gltf_skeleton.cpp
-#, fuzzy
-msgid "Godot Bone Node"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Skin Root"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Joints Original"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Inverse Binds"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-#, fuzzy
-msgid "Non Joints"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Joint I To Bone I"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Joint I To Name"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Godot Skin"
-msgstr ""
-
-#: modules/gltf/gltf_spec_gloss.cpp
-msgid "Diffuse Img"
-msgstr ""
-
-#: modules/gltf/gltf_spec_gloss.cpp
-msgid "Diffuse Factor"
-msgstr ""
-
-#: modules/gltf/gltf_spec_gloss.cpp
-msgid "Gloss Factor"
-msgstr ""
-
-#: modules/gltf/gltf_spec_gloss.cpp
-msgid "Specular Factor"
-msgstr ""
-
-#: modules/gltf/gltf_spec_gloss.cpp
-msgid "Spec Gloss Img"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Json"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Major Version"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Minor Version"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "GLB Data"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Use Named Skin Binds"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Buffer Views"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Accessors"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Scene Name"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Root Nodes"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-
-#: modules/gltf/gltf_state.cpp scene/2d/particles_2d.cpp
-#: scene/gui/texture_button.cpp scene/gui/texture_progress.cpp
-msgid "Textures"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
-msgid "Images"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Cameras"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp servers/visual_server.cpp
-msgid "Lights"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Unique Animation Names"
-msgstr "மாறà¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: modules/gltf/gltf_state.cpp
-msgid "Skeletons"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Skeleton To Node"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Animations"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: modules/gltf/gltf_texture.cpp
-msgid "Src Image"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp
-msgid "Physics Material"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
-msgid "Use In Baked Light"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
-msgid "Cell"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp
-msgid "Octant Size"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp
-#, fuzzy
-msgid "Center X"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: modules/gridmap/grid_map.cpp
-#, fuzzy
-msgid "Center Y"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: modules/gridmap/grid_map.cpp
-#, fuzzy
-msgid "Center Z"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
-#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
-#: scene/resources/material.cpp
-msgid "Mask"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Next Plane"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Previous Plane"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Plane:"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Next Floor"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Previous Floor"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Floor:"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Delete Selection"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "GridMap Fill Selection"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "GridMap Paste Selection"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "GridMap Selection"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Snap View"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Clip Disabled"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Clip Above"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Clip Below"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Edit X Axis"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Edit Y Axis"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Edit Z Axis"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Rotate X"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Rotate Y"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Rotate Z"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Back Rotate X"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Back Rotate Y"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Back Rotate Z"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Clear Rotation"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "Paste Selects"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Clear Selection"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "Fill Selection"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Settings"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Pick Distance:"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Filter meshes"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Give a MeshLibrary resource to this GridMap to use its meshes."
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Begin Bake"
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Preparing data structures"
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Generate buffers"
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Direct lighting"
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Indirect lighting"
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Post processing"
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Plotting lightmaps"
-msgstr ""
-
-#: modules/lightmapper_cpu/register_types.cpp
-msgid "CPU Lightmapper"
-msgstr ""
-
-#: modules/lightmapper_cpu/register_types.cpp
-msgid "Low Quality Ray Count"
-msgstr ""
-
-#: modules/lightmapper_cpu/register_types.cpp
-msgid "Medium Quality Ray Count"
-msgstr ""
-
-#: modules/lightmapper_cpu/register_types.cpp
-msgid "High Quality Ray Count"
-msgstr ""
-
-#: modules/lightmapper_cpu/register_types.cpp
-msgid "Ultra Quality Ray Count"
-msgstr ""
-
-#: modules/minimp3/audio_stream_mp3.cpp
-#: modules/minimp3/resource_importer_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
-#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
-msgid "Loop Offset"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "Eye Height"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "IOD"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "Display Width"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "Display To Lens"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "Oversample"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "K1"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "K2"
-msgstr ""
-
-#: modules/mono/csharp_script.cpp
-msgid "Class name can't be a reserved keyword"
-msgstr ""
-
-#: modules/mono/csharp_script.cpp
-#, fuzzy
-msgid "Build Solution"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: modules/mono/editor/csharp_project.cpp
-#, fuzzy
-msgid "Auto Update Project"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: modules/mono/mono_gd/gd_mono_utils.cpp
-msgid "End of inner exception stack trace"
-msgstr ""
-
-#: modules/navigation/navigation_mesh_editor_plugin.cpp
-#: scene/3d/navigation_mesh_instance.cpp
-msgid "A NavigationMesh resource must be set or created for this node to work."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_editor_plugin.cpp
-msgid "Bake NavMesh"
-msgstr ""
-
-#: modules/navigation/navigation_mesh_editor_plugin.cpp
-msgid "Clear the navigation mesh."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Setting up Configuration..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Calculating grid size..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Creating heightfield..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Marking walkable triangles..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Constructing compact heightfield..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Eroding walkable area..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Partitioning..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Creating contours..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Creating polymesh..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Converting to native navigation mesh..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Navigation Mesh Generator Setup:"
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Parsing Geometry..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Done!"
-msgstr ""
-
-#: modules/opensimplex/noise_texture.cpp
-msgid "Seamless"
-msgstr ""
-
-#: modules/opensimplex/noise_texture.cpp
-msgid "As Normal Map"
-msgstr ""
-
-#: modules/opensimplex/noise_texture.cpp
-msgid "Bump Strength"
-msgstr ""
-
-#: modules/opensimplex/noise_texture.cpp
-msgid "Noise"
-msgstr ""
-
-#: modules/opensimplex/noise_texture.cpp
-msgid "Noise Offset"
-msgstr ""
-
-#: modules/opensimplex/open_simplex_noise.cpp
-msgid "Octaves"
-msgstr ""
-
-#: modules/opensimplex/open_simplex_noise.cpp
-msgid "Period"
-msgstr ""
-
-#: modules/opensimplex/open_simplex_noise.cpp
-msgid "Persistence"
-msgstr ""
-
-#: modules/opensimplex/open_simplex_noise.cpp
-msgid "Lacunarity"
-msgstr ""
-
-#: modules/regex/regex.cpp
-msgid "Subject"
-msgstr ""
-
-#: modules/regex/regex.cpp
-#, fuzzy
-msgid "Names"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-
-#: modules/regex/regex.cpp
-#, fuzzy
-msgid "Strings"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: modules/upnp/upnp.cpp
-msgid "Discover Multicast If"
-msgstr ""
-
-#: modules/upnp/upnp.cpp
-msgid "Discover Local Port"
-msgstr ""
-
-#: modules/upnp/upnp.cpp
-msgid "Discover IPv6"
-msgstr ""
-
-#: modules/upnp/upnp_device.cpp
-#, fuzzy
-msgid "Description URL"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: modules/upnp/upnp_device.cpp
-msgid "Service Type"
-msgstr ""
-
-#: modules/upnp/upnp_device.cpp
-msgid "IGD Control URL"
-msgstr ""
-
-#: modules/upnp/upnp_device.cpp
-msgid "IGD Service Type"
-msgstr ""
-
-#: modules/upnp/upnp_device.cpp
-msgid "IGD Our Addr"
-msgstr ""
-
-#: modules/upnp/upnp_device.cpp
-msgid "IGD Status"
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid ""
-"A node yielded without working memory, please read the docs on how to yield "
-"properly!"
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid ""
-"Node yielded, but did not return a function state in the first working "
-"memory."
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid ""
-"Return value must be assigned to first element of node working memory! Fix "
-"your node please."
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid "Found sequence bit but not the node in the stack, report bug!"
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid "Visual Script"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Signal Arguments"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Argument Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Argument name"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Set Variable Default Value"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Set Variable Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
-msgid "Add Input Port"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Output Port"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
-msgid "Change Port Type"
-msgstr "மாறà¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
-msgid "Change Port Name"
-msgstr "மாறà¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Override an existing built-in function."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Create a new function."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Variables:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Create a new variable."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Signals:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Create a new signal."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Name is not a valid identifier:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Name already in use by another func/var/signal:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Rename Function"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Rename Variable"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Rename Signal"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Function"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
-msgid "Delete input port"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Variable"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Signal"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
-msgid "Remove Input Port"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
-msgid "Remove Output Port"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Expression"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Can't copy the function node."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Paste VisualScript Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove VisualScript Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Duplicate VisualScript Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Hold %s to drop a Getter. Hold Shift to drop a generic signature."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Hold %s to drop a simple reference to the node."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Hold Ctrl to drop a simple reference to the node."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Hold %s to drop a Variable Setter."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Hold Ctrl to drop a Variable Setter."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Preload Node"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
-msgid "Add Node(s)"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Node(s) From Tree"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid ""
-"Can't drop properties because script '%s' is not used in this scene.\n"
-"Drop holding 'Shift' to just copy the signature."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Getter Property"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Setter Property"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Base Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Move Node(s)"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove VisualScript Node"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Connect Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
-msgid "Disconnect Nodes"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Connect Node Data"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Connect Node Sequence"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Script already has function '%s'"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Input Value"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Resize Comment"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Can't create function with a function node."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Can't create function of nodes from nodes of multiple functions."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Select at least one node with sequence port."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Try to only have one sequence input in selection."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Create Function"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Make Tool:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Members:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Base Type:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Nodes..."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
-msgid "Add Function..."
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "function_name"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Select or create a function to edit its graph."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Delete Selected"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Find Node Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Copy Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Cut Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Make Function"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Refresh Graph"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit Member"
-msgstr ""
-
-#: modules/visual_script/visual_script_expression.cpp
-#: scene/resources/visual_shader.cpp
-msgid "Expression"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Return"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-#, fuzzy
-msgid "Return Enabled"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Return Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-#: scene/resources/visual_shader_nodes.cpp
-#, fuzzy
-msgid "Condition"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "if (cond) is:"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "While"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "while (cond):"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "for (elem) in (input):"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Sequence"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "in order:"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Steps"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Switch"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "'input' is:"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Type Cast"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Is %s?"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Base Script"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "On %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "On Self"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Call Mode"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Basic Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Node Path"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Use Default Args"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Validate"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "RPC Call Mode"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Subtract %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Multiply %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Divide %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Mod %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "ShiftLeft %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "ShiftRight %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "BitAnd %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "BitOr %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "BitXor %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Set Mode"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Assign Op"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Get %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Invalid index property name."
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Base object is not a Node!"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Path does not lead to Node!"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Invalid index property name '%s' in node %s."
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Emit %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Compose Array"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp scene/resources/material.cpp
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Operator"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "a if cond, else b"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Var Name"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Preload"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Get Index"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Set Index"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Global Constant"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Class Constant"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Basic Constant"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Math Constant"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Get Engine Singleton"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
-msgid "Get Scene Node"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Get Scene Tree"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Get Self"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
-msgid "CustomNode"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Custom node has no _step() method, can't process graph."
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid ""
-"Invalid return value from _step(), must be integer (seq out), or string "
-"(error)."
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "SubCall"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp scene/gui/graph_node.cpp
-msgid "Title"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Construct %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Get Local Var"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Set Local Var"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
-msgid "Action %s"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Deconstruct %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Search VisualScript"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Yield"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Wait"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-#, fuzzy
-msgid "Next Frame"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Next Physics Frame"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "%s sec(s)"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp scene/main/timer.cpp
-msgid "Wait Time"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "WaitSignal"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "WaitNodeSignal"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "WaitInstanceSignal"
-msgstr ""
-
-#: modules/webrtc/webrtc_data_channel.cpp
-msgid "Write Mode"
-msgstr ""
-
-#: modules/webrtc/webrtc_data_channel.h
-msgid "WebRTC"
-msgstr ""
-
-#: modules/webrtc/webrtc_data_channel.h
-msgid "Max Channel In Buffer (KB)"
-msgstr ""
-
-#: modules/websocket/websocket_client.cpp
-msgid "Verify SSL"
-msgstr ""
-
-#: modules/websocket/websocket_client.cpp
-msgid "Trusted SSL Certificate"
-msgstr ""
-
-#: modules/websocket/websocket_macros.h
-msgid "WebSocket Client"
-msgstr ""
-
-#: modules/websocket/websocket_macros.h
-msgid "Max In Buffer (KB)"
-msgstr ""
-
-#: modules/websocket/websocket_macros.h
-msgid "Max In Packets"
-msgstr ""
-
-#: modules/websocket/websocket_macros.h
-msgid "Max Out Buffer (KB)"
-msgstr ""
-
-#: modules/websocket/websocket_macros.h
-msgid "Max Out Packets"
-msgstr ""
-
-#: modules/websocket/websocket_macros.h
-msgid "WebSocket Server"
-msgstr ""
-
-#: modules/websocket/websocket_server.cpp
-msgid "Bind IP"
-msgstr ""
-
-#: modules/websocket/websocket_server.cpp
-msgid "Private Key"
-msgstr ""
-
-#: modules/websocket/websocket_server.cpp platform/javascript/export/export.cpp
-msgid "SSL Certificate"
-msgstr ""
-
-#: modules/websocket/websocket_server.cpp
-msgid "CA Chain"
-msgstr ""
-
-#: modules/websocket/websocket_server.cpp
-msgid "Handshake Timeout"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Session Mode"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Required Features"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Optional Features"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Requested Reference Space Types"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Reference Space Type"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Visibility State"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Bounds Geometry"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "XR Standard Mapping"
-msgstr ""
-
-#: platform/android/export/export.cpp
-msgid "Android SDK Path"
-msgstr ""
-
-#: platform/android/export/export.cpp
-msgid "Debug Keystore"
-msgstr ""
-
-#: platform/android/export/export.cpp
-msgid "Debug Keystore User"
-msgstr ""
-
-#: platform/android/export/export.cpp
-msgid "Debug Keystore Pass"
-msgstr ""
-
-#: platform/android/export/export.cpp
-msgid "Force System User"
-msgstr ""
-
-#: platform/android/export/export.cpp
-msgid "Shutdown ADB On Exit"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Launcher Icons"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Main 192 X 192"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Adaptive Foreground 432 X 432"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Adaptive Background 432 X 432"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Package name is missing."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Package segments must be of non-zero length."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "The character '%s' is not allowed in Android application package names."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "A digit cannot be the first character in a package segment."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "The character '%s' cannot be the first character in a package segment."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "The package must have at least one '.' separator."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Use Custom Build"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-#, fuzzy
-msgid "Export Format"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
-msgid "Architectures"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Keystore"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Debug User"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
-msgid "Debug Password"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Release User"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Release Password"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "One Click Deploy"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Clear Previous Install"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Code"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Min SDK"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-#, fuzzy
-msgid "Target SDK"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
-msgid "Package"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Unique Name"
-msgstr "மாறà¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: platform/android/export/export_plugin.cpp
-msgid "Signed"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Classify As Game"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Retain Data On Uninstall"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-#, fuzzy
-msgid "Exclude From Recents"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: platform/android/export/export_plugin.cpp
-msgid "Graphics"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "OpenGL Debug"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "XR Features"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-#, fuzzy
-msgid "XR Mode"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: platform/android/export/export_plugin.cpp
-#, fuzzy
-msgid "Hand Tracking"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
-
-#: platform/android/export/export_plugin.cpp
-msgid "Hand Tracking Frequency"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Passthrough"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Immersive Mode"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Support Small"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Support Normal"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Support Large"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Support Xlarge"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "User Data Backup"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Allow"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
-msgid "Command Line"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
-msgid "Extra Args"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "APK Expansion"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Salt"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-#, fuzzy
-msgid "Public Key"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: platform/android/export/export_plugin.cpp
-#, fuzzy
-msgid "Permissions"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: platform/android/export/export_plugin.cpp
-#, fuzzy
-msgid "Custom Permissions"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: platform/android/export/export_plugin.cpp
-msgid "Select device from the list"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Running on %s"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Exporting APK..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Uninstalling..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Installing to device, please wait..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not install to device: %s"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Running on device..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not execute on device."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Android build template not installed in the project. Install it from the "
-"Project menu."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Either Debug Keystore, Debug User AND Debug Password settings must be "
-"configured OR none of them."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Debug keystore not configured in the Editor Settings nor in the preset."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Either Release Keystore, Release User AND Release Password settings must be "
-"configured OR none of them."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Release keystore incorrectly configured in the export preset."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "A valid Android SDK path is required in Editor Settings."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Invalid Android SDK path in Editor Settings."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Missing 'platform-tools' directory!"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Unable to find Android SDK platform-tools' adb command."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Please check in the Android SDK directory specified in Editor Settings."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Missing 'build-tools' directory!"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Unable to find Android SDK build-tools' apksigner command."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Invalid public key for APK expansion."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Invalid package name:"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Invalid \"GodotPaymentV3\" module included in the \"android/modules\" "
-"project setting (changed in Godot 3.2.2).\n"
-"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n"
-"Note that the singleton was also renamed from \"GodotPayments\" to "
-"\"GodotGooglePlayBilling\"."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "\"Use Custom Build\" must be enabled to use the plugins."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"\"Hand Tracking\" is only valid when \"Xr Mode\" is \"Oculus Mobile VrApi\" "
-"or \"OpenXR\"."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "\"Passthrough\" is only valid when \"Xr Mode\" is \"OpenXR\"."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Changing the \"Min Sdk\" is only valid when \"Use Custom Build\" is enabled."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Changing the \"Target Sdk\" is only valid when \"Use Custom Build\" is "
-"enabled."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Signing debug %s..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Signing release %s..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not find keystore, unable to export."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "'apksigner' returned with error #%d"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Verifying %s..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "'apksigner' verification of %s failed."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Exporting for Android"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Invalid filename! Android App Bundle requires the *.aab extension."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "APK Expansion not compatible with Android App Bundle."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Invalid filename! Android APK requires the *.apk extension."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Trying to build from a custom built template, but no version info for it "
-"exists. Please reinstall from the 'Project' menu."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
-"Please reinstall Android build template from 'Project' menu."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not write expansion package file!"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Building Android Project (gradle)"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Building of Android project failed, check output for the error.\n"
-"Alternatively visit docs.godotengine.org for Android build documentation."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Moving output"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Unable to copy and rename export file, check gradle project directory for "
-"outputs."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Creating APK..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
-"Please build a template with all required libraries, or uncheck the missing "
-"architectures in the export preset."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Adding files..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Aligning APK..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not unzip temporary unaligned APK."
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Identifier is missing."
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "The character '%s' is not allowed in Identifier."
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Landscape Launch Screens"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 2436 X 1125"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 2208 X 1242"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 1024 X 768"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 2048 X 1536"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Portrait Launch Screens"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 640 X 960"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 640 X 1136"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 750 X 1334"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 1125 X 2436"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 768 X 1024"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 1536 X 2048"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 1242 X 2208"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "App Store Team ID"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Provisioning Profile UUID Debug"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Code Sign Identity Debug"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Export Method Debug"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Provisioning Profile UUID Release"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Code Sign Identity Release"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Export Method Release"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Targeted Device Family"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Info"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Identifier"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Signature"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Short Version"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-#: platform/windows/export/export.cpp
-msgid "Copyright"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-#, fuzzy
-msgid "Capabilities"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: platform/iphone/export/export.cpp
-msgid "Access Wi-Fi"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Push Notifications"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "User Data"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Accessible From Files App"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Accessible From iTunes Sharing"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Privacy"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-#, fuzzy
-msgid "Camera Usage Description"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-#, fuzzy
-msgid "Microphone Usage Description"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: platform/iphone/export/export.cpp
-#, fuzzy
-msgid "Photolibrary Usage Description"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 120 X 120"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 180 X 180"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 76 X 76"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 152 X 152"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 167 X 167"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "App Store 1024 X 1024"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Spotlight 40 X 40"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Spotlight 80 X 80"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Storyboard"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Use Launch Screen Storyboard"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Image Scale Mode"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-#, fuzzy
-msgid "Custom Image @2x"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: platform/iphone/export/export.cpp
-#, fuzzy
-msgid "Custom Image @3x"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: platform/iphone/export/export.cpp
-#, fuzzy
-msgid "Use Custom BG Color"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: platform/iphone/export/export.cpp
-#, fuzzy
-msgid "Custom BG Color"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: platform/iphone/export/export.cpp
-msgid "App Store Team ID not specified - cannot configure the project."
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Invalid Identifier:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Stop HTTP Server"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Run in Browser"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Run exported HTML in the system's default browser."
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-#, fuzzy
-msgid "Variant"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: platform/javascript/export/export.cpp
-#, fuzzy
-msgid "Export Type"
-msgstr "மாறà¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: platform/javascript/export/export.cpp
-msgid "VRAM Texture Compression"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "For Desktop"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "For Mobile"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "HTML"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Export Icon"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-#, fuzzy
-msgid "Custom HTML Shell"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: platform/javascript/export/export.cpp
-msgid "Head Include"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Canvas Resize Policy"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Focus Canvas On Start"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Experimental Virtual Keyboard"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Progressive Web App"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Offline Page"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Icon 144 X 144"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Icon 180 X 180"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Icon 512 X 512"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Web"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "HTTP Host"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "HTTP Port"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Use SSL"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "SSL Key"
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Can't get filesystem access."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to get Info.plist hash."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Invalid Info.plist, no exe name."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Invalid Info.plist, no bundle id."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Invalid Info.plist, can't load."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to create \"%s\" subfolder."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to extract thin binary."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Invalid binary format."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Already signed!"
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to process nested resources."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to create _CodeSignature subfolder."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to get CodeResources hash."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp platform/osx/export/export.cpp
-msgid "Invalid entitlements file."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Invalid executable file."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Can't resize signature load command."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to create fat binary."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Unknown bundle type."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Unknown object type."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "App Category"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "High Res"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-#, fuzzy
-msgid "Location Usage Description"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: platform/osx/export/export.cpp
-msgid "Address Book Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-#, fuzzy
-msgid "Calendar Usage Description"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: platform/osx/export/export.cpp
-#, fuzzy
-msgid "Photos Library Usage Description"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: platform/osx/export/export.cpp
-#, fuzzy
-msgid "Desktop Folder Usage Description"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: platform/osx/export/export.cpp
-msgid "Documents Folder Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Downloads Folder Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Network Volumes Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Removable Volumes Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp platform/windows/export/export.cpp
-#, fuzzy
-msgid "Codesign"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
-msgid "Identity"
-msgstr ""
-
-#: platform/osx/export/export.cpp platform/windows/export/export.cpp
-msgid "Timestamp"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Hardened Runtime"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Replace Existing Signature"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Entitlements"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-#, fuzzy
-msgid "Custom File"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: platform/osx/export/export.cpp
-msgid "Allow JIT Code Execution"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Allow Unsigned Executable Memory"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Allow Dyld Environment Variables"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-#, fuzzy
-msgid "Disable Library Validation"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: platform/osx/export/export.cpp
-#, fuzzy
-msgid "Audio Input"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
-
-#: platform/osx/export/export.cpp
-msgid "Address Book"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Calendars"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Photos Library"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Apple Events"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Debugging"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "App Sandbox"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Network Server"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Network Client"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Device USB"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Device Bluetooth"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Files Downloads"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Files Pictures"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Files Music"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Files Movies"
-msgstr ""
-
-#: platform/osx/export/export.cpp platform/windows/export/export.cpp
-#, fuzzy
-msgid "Custom Options"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: platform/osx/export/export.cpp
-#, fuzzy
-msgid "Notarization"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: platform/osx/export/export.cpp
-msgid "Apple ID Name"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Apple ID Password"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Apple Team ID"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"You can check progress manually by opening a Terminal and running the "
-"following command:"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Run the following command to staple the notarization ticket to the exported "
-"application (optional):"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "No identity found."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Creating app bundle"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Relative symlinks are not supported on this OS, the exported project might "
-"be broken!"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
-"template archive."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Making PKG"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Ad-hoc signed applications require the 'Disable Library Validation' "
-"entitlement to load dynamic libraries."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Code signing bundle"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Making DMG"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Code signing DMG"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Making ZIP"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Notarization requires the app to be archived first, select the DMG or ZIP "
-"export format instead."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Sending archive for notarization"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Invalid bundle identifier:"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Warning: Built-in \"codesign\" is selected in the Editor Settings. Code "
-"signing is limited to ad-hoc signature only."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Warning: Xcode command line tools are not installed, using built-in "
-"\"codesign\". Code signing is limited to ad-hoc signature only."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization: Notarization with an ad-hoc signature is not supported."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization: Code signing is required for notarization."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization: Hardened runtime is required for notarization."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization: Timestamp runtime is required for notarization."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization: Apple ID name not specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization: Apple ID password not specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Warning: Notarization is disabled. The exported project will be blocked by "
-"Gatekeeper if it's downloaded from an unknown source."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Code signing is disabled. The exported project will not run on Macs with "
-"enabled Gatekeeper and Apple Silicon powered Macs."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Hardened Runtime is not compatible with ad-hoc signature, and will be "
-"disabled!"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Timestamping is not compatible with ad-hoc signature, and will be disabled!"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Warning: Notarization is not supported from this OS. The exported project "
-"will be blocked by Gatekeeper if it's downloaded from an unknown source."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Privacy: Microphone access is enabled, but usage description is not "
-"specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Privacy: Camera access is enabled, but usage description is not specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Privacy: Location information access is enabled, but usage description is "
-"not specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Privacy: Address book access is enabled, but usage description is not "
-"specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Privacy: Calendar access is enabled, but usage description is not specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Privacy: Photo library access is enabled, but usage description is not "
-"specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "macOS"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Force Builtin Codesign"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Architecture"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Display Name"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Short Name"
-msgstr "மாறà¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: platform/uwp/export/export.cpp
-msgid "Publisher"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Publisher Display Name"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Product GUID"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Publisher GUID"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: platform/uwp/export/export.cpp
-msgid "Signing"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Certificate"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Algorithm"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Major"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Minor"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Build"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Revision"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Landscape"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Portrait"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Landscape Flipped"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Portrait Flipped"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Store Logo"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Square 44 X 44 Logo"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Square 71 X 71 Logo"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Square 150 X 150 Logo"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Square 310 X 310 Logo"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Wide 310 X 150 Logo"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Splash Screen"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Tiles"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Show Name On Square 150 X 150"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Show Name On Wide 310 X 150"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Show Name On Square 310 X 310"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid package short name."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid package unique name."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid package publisher display name."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid product GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "UWP"
-msgstr ""
-
-#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
-msgid "Signtool"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Debug Certificate"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Identity Type"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Timestamp Server URL"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Digest Algorithm"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Modify Resources"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "File Version"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Product Version"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-#, fuzzy
-msgid "Company Name"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: platform/windows/export/export.cpp
-#, fuzzy
-msgid "Product Name"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: platform/windows/export/export.cpp
-#, fuzzy
-msgid "File Description"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: platform/windows/export/export.cpp
-msgid "Trademarks"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid ""
-"The rcedit tool must be configured in the Editor Settings (Export > Windows "
-"> Rcedit) to change the icon or app information data."
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Invalid icon path:"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Invalid file version:"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Invalid product version:"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Windows"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Rcedit"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Osslsigncode"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Wine"
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
-#: scene/resources/texture.cpp
-#, fuzzy
-msgid "Frames"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-
-#: scene/2d/animated_sprite.cpp
-msgid ""
-"A SpriteFrames resource must be created or set in the \"Frames\" property in "
-"order for AnimatedSprite to display frames."
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Speed Scale"
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp scene/2d/audio_stream_player_2d.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/sprite_3d.cpp
-#: scene/audio/audio_stream_player.cpp
-msgid "Playing"
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-#, fuzzy
-msgid "Centered"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/2d/animated_sprite.cpp scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/texture_button.cpp scene/gui/texture_rect.cpp
-msgid "Flip H"
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/texture_button.cpp scene/gui/texture_rect.cpp
-msgid "Flip V"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Monitoring"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Monitorable"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Physics Overrides"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Space Override"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Gravity Point"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Gravity Distance Scale"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Gravity Vec"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/2d/cpu_particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Gravity"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Linear Damp"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Angular Damp"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-#, fuzzy
-msgid "Audio Bus"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Override"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
-#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
-msgid "Volume dB"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp
-#: servers/audio/effects/audio_effect_pitch_shift.cpp
-msgid "Pitch Scale"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Autoplay"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp
-msgid "Stream Paused"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
-msgid "Max Distance"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
-#, fuzzy
-msgid "Attenuation"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Bus"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-msgid "Area Mask"
-msgstr ""
-
-#: scene/2d/back_buffer_copy.cpp
-#, fuzzy
-msgid "Copy Mode"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/2d/camera_2d.cpp
-msgid "Anchor Mode"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-#, fuzzy
-msgid "Rotating"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/2d/camera_2d.cpp scene/2d/listener_2d.cpp scene/3d/camera.cpp
-#: scene/3d/listener.cpp scene/animation/animation_blend_tree.cpp
-#, fuzzy
-msgid "Current"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-
-#: scene/2d/camera_2d.cpp scene/gui/graph_edit.cpp
-msgid "Zoom"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/main/canvas_layer.cpp
-msgid "Custom Viewport"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/3d/camera.cpp
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp scene/main/timer.cpp
-msgid "Process Mode"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Limit"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
-#: scene/resources/style_box.cpp scene/resources/texture.cpp
-msgid "Left"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
-#: scene/resources/style_box.cpp scene/resources/texture.cpp
-msgid "Right"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
-#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
-#: scene/resources/texture.cpp
-#, fuzzy
-msgid "Bottom"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/2d/camera_2d.cpp
-msgid "Smoothed"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Draw Margin"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Drag Margin H Enabled"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Drag Margin V Enabled"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Smoothing"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "H"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "V"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Drag Margin"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Draw Screen"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Draw Limits"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Draw Drag Margin"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp scene/resources/environment.cpp
-#: scene/resources/material.cpp
-msgid "Blend Mode"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Light Mode"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-#, fuzzy
-msgid "Particles Animation"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/2d/canvas_item.cpp
-msgid "Particles Anim H Frames"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Particles Anim V Frames"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Particles Anim Loop"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp scene/3d/spatial.cpp
-msgid "Visibility"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp scene/3d/spatial.cpp scene/gui/progress_bar.cpp
-#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
-msgid "Visible"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Self Modulate"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Show Behind Parent"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Show On Top"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp scene/2d/light_occluder_2d.cpp
-#: scene/2d/tile_map.cpp
-msgid "Light Mask"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Use Parent Material"
-msgstr ""
-
-#: scene/2d/canvas_modulate.cpp
-msgid ""
-"Only one visible CanvasModulate is allowed per scene (or set of instanced "
-"scenes). The first created one will work, while the rest will be ignored."
-msgstr ""
-
-#: scene/2d/collision_object_2d.cpp
-msgid ""
-"This node has no shape, so it can't collide or interact with other objects.\n"
-"Consider adding a CollisionShape2D or CollisionPolygon2D as a child to "
-"define its shape."
-msgstr ""
-
-#: scene/2d/collision_object_2d.cpp
-msgid "Pickable"
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp
-msgid ""
-"CollisionPolygon2D only serves to provide a collision shape to a "
-"CollisionObject2D derived node. Please only use it as a child of Area2D, "
-"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape."
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp
-msgid "An empty CollisionPolygon2D has no effect on collision."
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp
-msgid "Invalid polygon. At least 3 points are needed in 'Solids' build mode."
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp
-msgid "Invalid polygon. At least 2 points are needed in 'Segments' build mode."
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp scene/2d/collision_shape_2d.cpp
-msgid ""
-"The One Way Collision property will be ignored when the parent is an Area2D."
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp
-msgid "Build Mode"
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp scene/2d/collision_shape_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/3d/collision_shape.cpp
-#: scene/animation/animation_node_state_machine.cpp scene/gui/base_button.cpp
-#: scene/gui/texture_button.cpp scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Disabled"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: scene/2d/collision_polygon_2d.cpp scene/2d/collision_shape_2d.cpp
-msgid "One Way Collision"
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp scene/2d/collision_shape_2d.cpp
-msgid "One Way Collision Margin"
-msgstr ""
-
-#: scene/2d/collision_shape_2d.cpp
-msgid ""
-"CollisionShape2D only serves to provide a collision shape to a "
-"CollisionObject2D derived node. Please only use it as a child of Area2D, "
-"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape."
-msgstr ""
-
-#: scene/2d/collision_shape_2d.cpp
-msgid ""
-"A shape must be provided for CollisionShape2D to function. Please create a "
-"shape resource for it!"
-msgstr ""
-
-#: scene/2d/collision_shape_2d.cpp
-msgid ""
-"Polygon-based shapes are not meant be used nor edited directly through the "
-"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp
-msgid ""
-"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
-"\"Particles Animation\" enabled."
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#, fuzzy
-msgid "Emitting"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Lifetime"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp scene/main/timer.cpp
-msgid "One Shot"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Preprocess"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Explosiveness"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Randomness"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Lifetime Randomness"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Fixed FPS"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Fract Delta"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Drawing"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Local Coords"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Draw Order"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Emission Shape"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Sphere Radius"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp
-msgid "Rect Extents"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-msgid "Normals"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Align Y"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-#, fuzzy
-msgid "Direction"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Spread"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Initial Velocity"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Velocity Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
-#: servers/physics_server.cpp
-msgid "Angular Velocity"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-#, fuzzy
-msgid "Velocity Curve"
-msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Orbit Velocity"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Linear Accel"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Accel"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Accel Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-#, fuzzy
-msgid "Accel Curve"
-msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Radial Accel"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Tangential Accel"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/physics_body.cpp
-#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Damping"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Damping Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-#, fuzzy
-msgid "Damping Curve"
-msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
-#: scene/resources/particles_material.cpp
-msgid "Angle"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Angle Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-#, fuzzy
-msgid "Angle Curve"
-msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#, fuzzy
-msgid "Scale Amount"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-msgid "Scale Amount Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#, fuzzy
-msgid "Scale Amount Curve"
-msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Color Ramp"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Color Initial Ramp"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-#, fuzzy
-msgid "Hue Variation"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-#, fuzzy
-msgid "Variation"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-#, fuzzy
-msgid "Variation Random"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-#, fuzzy
-msgid "Variation Curve"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Speed Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-#, fuzzy
-msgid "Speed Curve"
-msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Offset Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-#, fuzzy
-msgid "Offset Curve"
-msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: scene/2d/joints_2d.cpp
-msgid "Node A and Node B must be PhysicsBody2Ds"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Node A must be a PhysicsBody2D"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Node B must be a PhysicsBody2D"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Joint is not connected to two PhysicsBody2Ds"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Node A and Node B must be different PhysicsBody2Ds"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Node A"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Node B"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/3d/light.cpp scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-#: scene/resources/environment.cpp
-msgid "Bias"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-#, fuzzy
-msgid "Disable Collision"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: scene/2d/joints_2d.cpp scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-msgid "Softness"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp scene/resources/animation.cpp
-#: scene/resources/ray_shape.cpp scene/resources/segment_shape_2d.cpp
-msgid "Length"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Initial Offset"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
-msgid "Rest Length"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
-msgid "Stiffness"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid ""
-"A texture with the shape of the light must be supplied to the \"Texture\" "
-"property."
-msgstr ""
-
-#: scene/2d/light_2d.cpp scene/3d/light.cpp scene/gui/reference_rect.cpp
-#, fuzzy
-msgid "Editor Only"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: scene/2d/light_2d.cpp
-msgid "Texture Scale"
-msgstr ""
-
-#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/3d/light.cpp scene/resources/environment.cpp
-#: scene/resources/material.cpp scene/resources/sky.cpp
-msgid "Energy"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Z Min"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Z Max"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Layer Min"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Layer Max"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Item Cull Mask"
-msgstr ""
-
-#: scene/2d/light_2d.cpp scene/3d/light.cpp scene/resources/style_box.cpp
-msgid "Shadow"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Buffer Size"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Gradient Length"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-#, fuzzy
-msgid "Filter Smooth"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/2d/light_occluder_2d.cpp
-msgid "Closed"
-msgstr ""
-
-#: scene/2d/light_occluder_2d.cpp scene/resources/material.cpp
-msgid "Cull Mode"
-msgstr ""
-
-#: scene/2d/light_occluder_2d.cpp
-msgid ""
-"An occluder polygon must be set (or drawn) for this occluder to take effect."
-msgstr ""
-
-#: scene/2d/light_occluder_2d.cpp
-msgid "The occluder polygon for this occluder is empty. Please draw a polygon."
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-#, fuzzy
-msgid "Width Curve"
-msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: scene/2d/line_2d.cpp scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Default Color"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/2d/line_2d.cpp scene/resources/texture.cpp
-msgid "Fill"
-msgstr ""
-
-#: scene/2d/line_2d.cpp scene/resources/texture.cpp
-msgid "Gradient"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Texture Mode"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Capping"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Joint Mode"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Begin Cap Mode"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "End Cap Mode"
-msgstr ""
-
-#: scene/2d/line_2d.cpp scene/2d/polygon_2d.cpp scene/resources/style_box.cpp
-msgid "Border"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Sharp Limit"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Round Precision"
-msgstr ""
-
-#: scene/2d/line_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Antialiased"
-msgstr ""
-
-#: scene/2d/multimesh_instance_2d.cpp scene/3d/multimesh_instance.cpp
-msgid "Multimesh"
-msgstr ""
-
-#: scene/2d/navigation_2d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/navigation.cpp scene/animation/root_motion_view.cpp
-#: scene/resources/world_2d.cpp servers/physics_2d/physics_2d_server_sw.cpp
-msgid "Cell Size"
-msgstr ""
-
-#: scene/2d/navigation_2d.cpp scene/3d/navigation.cpp
-#, fuzzy
-msgid "Edge Connection Margin"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Target Desired Distance"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Neighbor Dist"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Max Neighbors"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Time Horizon"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Max Speed"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Path Max Distance"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-#, fuzzy
-msgid "Avoidance Enabled"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: scene/2d/navigation_agent_2d.cpp
-msgid ""
-"The NavigationAgent2D can be used only under a Node2D inheriting parent node."
-msgstr ""
-
-#: scene/2d/navigation_obstacle_2d.cpp scene/3d/navigation_obstacle.cpp
-msgid "Estimate Radius"
-msgstr ""
-
-#: scene/2d/navigation_obstacle_2d.cpp
-msgid ""
-"The NavigationObstacle2D only serves to provide collision avoidance to a "
-"Node2D object."
-msgstr ""
-
-#: scene/2d/navigation_polygon.cpp
-msgid ""
-"A NavigationPolygon resource must be set or created for this node to work. "
-"Please set a property or draw a polygon."
-msgstr ""
-
-#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
-msgstr ""
-
-#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
-#: scene/main/canvas_layer.cpp
-msgid "Rotation Degrees"
-msgstr ""
-
-#: scene/2d/node_2d.cpp
-msgid "Global Rotation"
-msgstr ""
-
-#: scene/2d/node_2d.cpp
-msgid "Global Rotation Degrees"
-msgstr ""
-
-#: scene/2d/node_2d.cpp
-msgid "Global Scale"
-msgstr ""
-
-#: scene/2d/node_2d.cpp scene/3d/spatial.cpp
-#, fuzzy
-msgid "Global Transform"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: scene/2d/node_2d.cpp
-msgid "Z As Relative"
-msgstr ""
-
-#: scene/2d/parallax_background.cpp scene/gui/scroll_container.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Scroll"
-msgstr ""
-
-#: scene/2d/parallax_background.cpp
-msgid "Base Offset"
-msgstr ""
-
-#: scene/2d/parallax_background.cpp
-msgid "Base Scale"
-msgstr ""
-
-#: scene/2d/parallax_background.cpp
-msgid "Limit Begin"
-msgstr ""
-
-#: scene/2d/parallax_background.cpp
-msgid "Limit End"
-msgstr ""
-
-#: scene/2d/parallax_background.cpp
-msgid "Ignore Camera Zoom"
-msgstr ""
-
-#: scene/2d/parallax_layer.cpp
-msgid ""
-"ParallaxLayer node only works when set as child of a ParallaxBackground node."
-msgstr ""
-
-#: scene/2d/parallax_layer.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp scene/3d/vehicle_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
-msgid "Motion"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/2d/parallax_layer.cpp
-msgid "Mirroring"
-msgstr ""
-
-#: scene/2d/particles_2d.cpp
-msgid ""
-"GPU-based particles are not supported by the GLES2 video driver.\n"
-"Use the CPUParticles2D node instead. You can use the \"Convert to "
-"CPUParticles2D\" toolbar option for this purpose."
-msgstr ""
-
-#: scene/2d/particles_2d.cpp
-msgid ""
-"On macOS, Particles2D rendering is much slower than CPUParticles2D due to "
-"transform feedback being implemented on the CPU instead of the GPU.\n"
-"Consider using CPUParticles2D instead when targeting macOS.\n"
-"You can use the \"Convert to CPUParticles2D\" toolbar option for this "
-"purpose."
-msgstr ""
-
-#: scene/2d/particles_2d.cpp scene/3d/particles.cpp
-msgid ""
-"A material to process the particles is not assigned, so no behavior is "
-"imprinted."
-msgstr ""
-
-#: scene/2d/particles_2d.cpp
-msgid ""
-"Particles2D animation requires the usage of a CanvasItemMaterial with "
-"\"Particles Animation\" enabled."
-msgstr ""
-
-#: scene/2d/particles_2d.cpp
-msgid "Visibility Rect"
-msgstr ""
-
-#: scene/2d/particles_2d.cpp scene/3d/particles.cpp
-msgid "Process Material"
-msgstr ""
-
-#: scene/2d/path_2d.cpp scene/3d/path.cpp scene/resources/sky.cpp
-#: scene/resources/texture.cpp
-#, fuzzy
-msgid "Curve"
-msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: scene/2d/path_2d.cpp
-msgid "PathFollow2D only works when set as a child of a Path2D node."
-msgstr ""
-
-#: scene/2d/path_2d.cpp scene/3d/path.cpp
-msgid "Unit Offset"
-msgstr ""
-
-#: scene/2d/path_2d.cpp scene/3d/camera.cpp scene/3d/path.cpp
-msgid "H Offset"
-msgstr ""
-
-#: scene/2d/path_2d.cpp scene/3d/camera.cpp scene/3d/path.cpp
-msgid "V Offset"
-msgstr ""
-
-#: scene/2d/path_2d.cpp scene/3d/path.cpp
-msgid "Cubic Interp"
-msgstr ""
-
-#: scene/2d/path_2d.cpp
-msgid "Lookahead"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/visual_instance.cpp
-msgid "Layers"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Constant Linear Velocity"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Constant Angular Velocity"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp scene/3d/physics_body.cpp
-#: scene/resources/physics_material.cpp
-#, fuzzy
-msgid "Friction"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp scene/3d/physics_body.cpp
-#: scene/resources/physics_material.cpp
-msgid "Bounce"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Physics Material Override"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Default Gravity"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
-msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
-"by the physics engine when running.\n"
-"Change the size in children collision shapes instead."
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Mass"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
-msgid "Inertia"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Weight"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Gravity Scale"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
-msgid "Custom Integrator"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Continuous CD"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Contacts Reported"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Contact Monitor"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Sleeping"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Can Sleep"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Damp"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Angular"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
-msgid "Applied Forces"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
-msgid "Torque"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Safe Margin"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Sync To Physics"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving Platform"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Apply Velocity On Leave"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
-#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/default_theme/default_theme.cpp
-#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
-msgid "Normal"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Remainder"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Local Shape"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collider"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collider ID"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collider RID"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collider Shape"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Collider Shape Index"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collider Velocity"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Collider Metadata"
-msgstr ""
-
-#: scene/2d/polygon_2d.cpp
-msgid "Invert"
-msgstr ""
-
-#: scene/2d/polygon_2d.cpp
-msgid "Vertex Colors"
-msgstr ""
-
-#: scene/2d/polygon_2d.cpp
-msgid "Internal Vertex Count"
-msgstr ""
-
-#: scene/2d/position_2d.cpp
-msgid "Gizmo Extents"
-msgstr ""
-
-#: scene/2d/ray_cast_2d.cpp scene/3d/ray_cast.cpp
-msgid "Exclude Parent"
-msgstr ""
-
-#: scene/2d/ray_cast_2d.cpp scene/3d/ray_cast.cpp
-msgid "Cast To"
-msgstr ""
-
-#: scene/2d/ray_cast_2d.cpp scene/3d/ray_cast.cpp
-msgid "Collide With"
-msgstr ""
-
-#: scene/2d/ray_cast_2d.cpp scene/3d/camera.cpp scene/3d/ray_cast.cpp
-msgid "Areas"
-msgstr ""
-
-#: scene/2d/ray_cast_2d.cpp scene/3d/camera.cpp scene/3d/ray_cast.cpp
-msgid "Bodies"
-msgstr ""
-
-#: scene/2d/remote_transform_2d.cpp
-msgid "Path property must point to a valid Node2D node to work."
-msgstr ""
-
-#: scene/2d/remote_transform_2d.cpp scene/3d/remote_transform.cpp
-#, fuzzy
-msgid "Remote Path"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: scene/2d/remote_transform_2d.cpp scene/3d/remote_transform.cpp
-msgid "Use Global Coordinates"
-msgstr ""
-
-#: scene/2d/skeleton_2d.cpp scene/3d/skeleton.cpp
-msgid "Rest"
-msgstr ""
-
-#: scene/2d/skeleton_2d.cpp
-msgid "Default Length"
-msgstr ""
-
-#: scene/2d/skeleton_2d.cpp
-msgid "This Bone2D chain should end at a Skeleton2D node."
-msgstr ""
-
-#: scene/2d/skeleton_2d.cpp
-msgid "A Bone2D only works with a Skeleton2D or another Bone2D as parent node."
-msgstr ""
-
-#: scene/2d/skeleton_2d.cpp
-msgid ""
-"This bone lacks a proper REST pose. Go to the Skeleton2D node and set one."
-msgstr ""
-
-#: scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-msgid "Hframes"
-msgstr ""
-
-#: scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-msgid "Vframes"
-msgstr ""
-
-#: scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-#, fuzzy
-msgid "Frame Coords"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-
-#: scene/2d/sprite.cpp scene/resources/texture.cpp
-#, fuzzy
-msgid "Filter Clip"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/2d/tile_map.cpp
-msgid ""
-"TileMap with Use Parent on needs a parent CollisionObject2D to give shapes "
-"to. Please use it as a child of Area2D, StaticBody2D, RigidBody2D, "
-"KinematicBody2D, etc. to give them a shape."
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Tile Set"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Quadrant Size"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-#, fuzzy
-msgid "Custom Transform"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: scene/2d/tile_map.cpp
-msgid "Half Offset"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Tile Origin"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Y Sort"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Show Collision"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-#, fuzzy
-msgid "Compatibility Mode"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/2d/tile_map.cpp
-msgid "Centered Textures"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Cell Clip UV"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Use Parent"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Use Kinematic"
-msgstr ""
-
-#: scene/2d/touch_screen_button.cpp
-msgid "Shape Centered"
-msgstr ""
-
-#: scene/2d/touch_screen_button.cpp
-msgid "Shape Visible"
-msgstr ""
-
-#: scene/2d/touch_screen_button.cpp
-msgid "Passby Press"
-msgstr ""
-
-#: scene/2d/touch_screen_button.cpp
-msgid "Visibility Mode"
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp
-msgid ""
-"VisibilityEnabler2D works best when used with the edited scene root directly "
-"as parent."
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
-#, fuzzy
-msgid "Pause Animations"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
-msgid "Freeze Bodies"
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp
-msgid "Pause Particles"
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp
-#, fuzzy
-msgid "Pause Animated Sprites"
-msgstr "மாறà¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: scene/2d/visibility_notifier_2d.cpp
-msgid "Process Parent"
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp
-msgid "Physics Process Parent"
-msgstr ""
-
-#: scene/3d/area.cpp
-msgid "Reverb Bus"
-msgstr ""
-
-#: scene/3d/area.cpp
-msgid "Uniformity"
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid "ARVRCamera must have an ARVROrigin node as its parent."
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid "Controller ID"
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp servers/arvr/arvr_positional_tracker.cpp
-msgid "Rumble"
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid "ARVRController must have an ARVROrigin node as its parent."
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid ""
-"The controller ID must not be 0 or this controller won't be bound to an "
-"actual controller."
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid "Anchor ID"
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid "ARVRAnchor must have an ARVROrigin node as its parent."
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid ""
-"The anchor ID must not be 0 or this anchor won't be bound to an actual "
-"anchor."
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid "ARVROrigin requires an ARVRCamera child node."
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp servers/arvr_server.cpp
-msgid "World Scale"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Attenuation Model"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Unit dB"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Unit Size"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Max dB"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Out Of Range Mode"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Emission Angle"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Degrees"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-#, fuzzy
-msgid "Filter Attenuation dB"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Attenuation Filter"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_filter.cpp
-msgid "Cutoff Hz"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-#: servers/audio/effects/audio_effect_filter.cpp
-msgid "dB"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Doppler"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Tracking"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/3d/reflection_probe.cpp
-msgid "Interior"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Finding meshes and lights"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Preparing geometry (%d/%d)"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Preparing environment"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Generating capture"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Saving lightmaps"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Done"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/3d/reflection_probe.cpp scene/resources/box_shape.cpp
-#: scene/resources/rectangle_shape_2d.cpp
-msgid "Extents"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Tweaks"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Bounces"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Bounce Indirect Energy"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Use Denoiser"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp scene/resources/texture.cpp
-msgid "Use HDR"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Use Color"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Default Texels Per Unit"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp scene/resources/texture.cpp
-msgid "Atlas"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Generate"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Max Size"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "Custom Sky"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Custom Sky Rotation Degrees"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp scene/3d/ray_cast.cpp
-#, fuzzy
-msgid "Custom Color"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "Custom Energy"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Min Light"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Propagation"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Image Path"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Light Data"
-msgstr ""
-
-#: scene/3d/bone_attachment.cpp scene/3d/physics_body.cpp
-msgid "Bone Name"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Keep Aspect"
-msgstr ""
-
-#: scene/3d/camera.cpp scene/3d/light.cpp scene/3d/reflection_probe.cpp
-msgid "Cull Mask"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Doppler Tracking"
-msgstr ""
-
-#: scene/3d/camera.cpp
-#, fuzzy
-msgid "Projection"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: scene/3d/camera.cpp
-msgid "FOV"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Frustum Offset"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Near"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Far"
-msgstr ""
-
-#: scene/3d/camera.cpp scene/3d/collision_polygon.cpp scene/3d/spring_arm.cpp
-#: scene/gui/control.cpp scene/resources/default_theme/default_theme.cpp
-#: scene/resources/shape.cpp scene/resources/style_box.cpp
-#: scene/resources/texture.cpp servers/physics_2d_server.cpp
-#: servers/physics_server.cpp
-msgid "Margin"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Clip To"
-msgstr ""
-
-#: scene/3d/collision_object.cpp scene/3d/soft_body.cpp
-msgid "Ray Pickable"
-msgstr ""
-
-#: scene/3d/collision_object.cpp
-msgid "Capture On Drag"
-msgstr ""
-
-#: scene/3d/collision_object.cpp
-msgid ""
-"This node has no shape, so it can't collide or interact with other objects.\n"
-"Consider adding a CollisionShape or CollisionPolygon as a child to define "
-"its shape."
-msgstr ""
-
-#: scene/3d/collision_polygon.cpp
-msgid ""
-"CollisionPolygon only serves to provide a collision shape to a "
-"CollisionObject derived node. Please only use it as a child of Area, "
-"StaticBody, RigidBody, KinematicBody, etc. to give them a shape."
-msgstr ""
-
-#: scene/3d/collision_polygon.cpp
-msgid "An empty CollisionPolygon has no effect on collision."
-msgstr ""
-
-#: scene/3d/collision_shape.cpp
-msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
-msgstr ""
-
-#: scene/3d/collision_shape.cpp
-msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it."
-msgstr ""
-
-#: scene/3d/collision_shape.cpp
-msgid ""
-"Plane shapes don't work well and will be removed in future versions. Please "
-"don't use them."
-msgstr ""
-
-#: scene/3d/collision_shape.cpp
-msgid ""
-"ConcavePolygonShape doesn't support RigidBody in another mode than static."
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has been assigned."
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp
-msgid ""
-"CPUParticles animation requires the usage of a SpatialMaterial whose "
-"Billboard Mode is set to \"Particle Billboard\"."
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Box Extents"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Ring Radius"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Ring Inner Radius"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Ring Height"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Ring Axis"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-#, fuzzy
-msgid "Rotate Y"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-#, fuzzy
-msgid "Disable Z"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Flatness"
-msgstr ""
-
-#: scene/3d/cull_instance.cpp servers/visual_server.cpp
-msgid "Portals"
-msgstr ""
-
-#: scene/3d/cull_instance.cpp
-msgid "Portal Mode"
-msgstr ""
-
-#: scene/3d/cull_instance.cpp
-msgid "Include In Bound"
-msgstr ""
-
-#: scene/3d/cull_instance.cpp
-msgid "Allow Merging"
-msgstr ""
-
-#: scene/3d/cull_instance.cpp
-msgid "Autoplace Priority"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
-msgid "Plotting Meshes"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
-msgid "Finishing Plot"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
-msgid ""
-"GIProbes are not supported by the GLES2 video driver.\n"
-"Use a BakedLightmap instead."
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
-msgid ""
-"The GIProbe Compress property has been deprecated due to known bugs and no "
-"longer has any effect.\n"
-"To remove this warning, disable the GIProbe's Compress property."
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
-msgid "Subdiv"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
-msgid "Dynamic Range"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp scene/3d/light.cpp
-msgid "Normal Bias"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
-#: scene/resources/primitive_meshes.cpp
-msgid "Pixel Size"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
-msgid "Billboard"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
-msgid "Shaded"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
-msgid "Double Sided"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp scene/resources/material.cpp
-msgid "No Depth Test"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#, fuzzy
-msgid "Fixed Size"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
-msgid "Alpha Cut"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/resources/material.cpp
-msgid "Alpha Scissor Threshold"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp scene/resources/material.cpp
-msgid "Render Priority"
-msgstr ""
-
-#: scene/3d/label_3d.cpp
-msgid "Outline Render Priority"
-msgstr ""
-
-#: scene/3d/label_3d.cpp
-#, fuzzy
-msgid "Outline Modulate"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/3d/label_3d.cpp scene/resources/default_theme/default_theme.cpp
-#: scene/resources/dynamic_font.cpp scene/resources/primitive_meshes.cpp
-msgid "Font"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/resources/primitive_meshes.cpp
-#, fuzzy
-msgid "Horizontal Alignment"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: scene/3d/label_3d.cpp
-msgid "Vertical Alignment"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/gui/dialogs.cpp scene/gui/label.cpp
-msgid "Autowrap"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Indirect Energy"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Negative"
-msgstr ""
-
-#: scene/3d/light.cpp scene/resources/material.cpp
-#: scene/resources/visual_shader.cpp
-msgid "Specular"
-msgstr ""
-
-#: scene/3d/light.cpp
-#, fuzzy
-msgid "Bake Mode"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: scene/3d/light.cpp
-msgid "Contact"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Reverse Cull Face"
-msgstr ""
-
-#: scene/3d/light.cpp servers/visual_server.cpp
-msgid "Directional Shadow"
-msgstr ""
-
-#: scene/3d/light.cpp
-#, fuzzy
-msgid "Split 1"
-msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: scene/3d/light.cpp
-#, fuzzy
-msgid "Split 2"
-msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: scene/3d/light.cpp
-#, fuzzy
-msgid "Split 3"
-msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: scene/3d/light.cpp
-msgid "Blend Splits"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Bias Split Scale"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Depth Range"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Omni"
-msgstr ""
-
-#: scene/3d/light.cpp
-#, fuzzy
-msgid "Shadow Mode"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/3d/light.cpp
-msgid "Shadow Detail"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Spot"
-msgstr ""
-
-#: scene/3d/light.cpp
-#, fuzzy
-msgid "Angle Attenuation"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/3d/mesh_instance.cpp
-msgid "Software Skinning"
-msgstr ""
-
-#: scene/3d/mesh_instance.cpp
-msgid "Transform Normals"
-msgstr ""
-
-#: scene/3d/navigation.cpp scene/resources/curve.cpp
-msgid "Up Vector"
-msgstr ""
-
-#: scene/3d/navigation.cpp
-msgid "Cell Height"
-msgstr ""
-
-#: scene/3d/navigation_agent.cpp
-msgid "Agent Height Offset"
-msgstr ""
-
-#: scene/3d/navigation_agent.cpp
-msgid "Ignore Y"
-msgstr ""
-
-#: scene/3d/navigation_agent.cpp
-msgid ""
-"The NavigationAgent can be used only under a Spatial inheriting parent node."
-msgstr ""
-
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
-#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
-msgid "NavMesh"
-msgstr ""
-
-#: scene/3d/navigation_obstacle.cpp
-msgid ""
-"The NavigationObstacle only serves to provide collision avoidance to a "
-"Spatial inheriting parent object."
-msgstr ""
-
-#: scene/3d/occluder.cpp
-msgid "No shape is set."
-msgstr ""
-
-#: scene/3d/occluder.cpp
-msgid "Only uniform scales are supported."
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid ""
-"GPU-based particles are not supported by the GLES2 video driver.\n"
-"Use the CPUParticles node instead. You can use the \"Convert to "
-"CPUParticles\" toolbar option for this purpose."
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid ""
-"On macOS, Particles rendering is much slower than CPUParticles due to "
-"transform feedback being implemented on the CPU instead of the GPU.\n"
-"Consider using CPUParticles instead when targeting macOS.\n"
-"You can use the \"Convert to CPUParticles\" toolbar option for this purpose."
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid ""
-"Nothing is visible because meshes have not been assigned to draw passes."
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid ""
-"Particles animation requires the usage of a SpatialMaterial whose Billboard "
-"Mode is set to \"Particle Billboard\"."
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid "Visibility AABB"
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid "Draw Passes"
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid "Passes"
-msgstr ""
-
-#: scene/3d/path.cpp
-msgid "PathFollow only works when set as a child of a Path node."
-msgstr ""
-
-#: scene/3d/path.cpp
-msgid ""
-"PathFollow's ROTATION_ORIENTED requires \"Up Vector\" to be enabled in its "
-"parent Path's Curve resource."
-msgstr ""
-
-#: scene/3d/path.cpp
-msgid "Rotation Mode"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overridden "
-"by the physics engine when running.\n"
-"Change the size in children collision shapes instead."
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Axis Lock"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear X"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Y"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Z"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular X"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Y"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Z"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-#, fuzzy
-msgid "Motion X"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/3d/physics_body.cpp
-#, fuzzy
-msgid "Motion Y"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/3d/physics_body.cpp
-#, fuzzy
-msgid "Motion Z"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/3d/physics_body.cpp
-#, fuzzy
-msgid "Joint Constraints"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-msgid "Impulse Clamp"
-msgstr ""
-
-#: scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-msgid "Swing Span"
-msgstr ""
-
-#: scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-msgid "Twist Span"
-msgstr ""
-
-#: scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/3d/physics_body.cpp
-#, fuzzy
-msgid "Angular Limit Enabled"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Upper"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-#, fuzzy
-msgid "Angular Limit Lower"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/3d/physics_body.cpp
-#, fuzzy
-msgid "Angular Limit Bias"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/3d/physics_body.cpp
-#, fuzzy
-msgid "Angular Limit Softness"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/3d/physics_body.cpp
-#, fuzzy
-msgid "Angular Limit Relaxation"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Limit Upper"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Limit Lower"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Limit Softness"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-#, fuzzy
-msgid "Linear Limit Restitution"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/3d/physics_body.cpp
-#, fuzzy
-msgid "Linear Limit Damping"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/3d/physics_body.cpp
-#, fuzzy
-msgid "Angular Limit Restitution"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/3d/physics_body.cpp
-#, fuzzy
-msgid "Angular Limit Damping"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/3d/physics_body.cpp
-msgid "X"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Y"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Z"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-#, fuzzy
-msgid "Linear Limit Enabled"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: scene/3d/physics_body.cpp
-#, fuzzy
-msgid "Linear Spring Enabled"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Spring Stiffness"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-#, fuzzy
-msgid "Linear Spring Damping"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Equilibrium Point"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-#, fuzzy
-msgid "Linear Restitution"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/3d/physics_body.cpp
-#, fuzzy
-msgid "Linear Damping"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/3d/physics_body.cpp
-#, fuzzy
-msgid "Angular Restitution"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/3d/physics_body.cpp
-#, fuzzy
-msgid "Angular Damping"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-msgid "ERP"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-#, fuzzy
-msgid "Angular Spring Enabled"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Spring Stiffness"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Spring Damping"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Equilibrium Point"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Body Offset"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Node A and Node B must be PhysicsBodies"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Node A must be a PhysicsBody"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Node B must be a PhysicsBody"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Joint is not connected to any PhysicsBodies"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Node A and Node B must be different PhysicsBodies"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Solver"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Exclude Nodes"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/3d/physics_joint.cpp
-msgid "Params"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Limit"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Upper"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Lower"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Motor"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Target Velocity"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/3d/physics_joint.cpp
-msgid "Max Impulse"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Limit"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Upper Distance"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Lower Distance"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Restitution"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Linear Motion"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Ortho"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Upper Angle"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Lower Angle"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Angular Motion"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Ortho"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Limit X"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Motor X"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Force Limit"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Spring X"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Equilibrium Point"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Limit X"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Motor X"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Spring X"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Limit Y"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Motor Y"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Spring Y"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Limit Y"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Motor Y"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Spring Y"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Limit Z"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Motor Z"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Spring Z"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Limit Z"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Motor Z"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Spring Z"
-msgstr ""
-
-#: scene/3d/portal.cpp
-msgid "The RoomManager should not be a child or grandchild of a Portal."
-msgstr ""
-
-#: scene/3d/portal.cpp
-msgid "A Room should not be a child or grandchild of a Portal."
-msgstr ""
-
-#: scene/3d/portal.cpp
-msgid "A RoomGroup should not be a child or grandchild of a Portal."
-msgstr ""
-
-#: scene/3d/portal.cpp
-msgid "Portal Active"
-msgstr ""
-
-#: scene/3d/portal.cpp scene/resources/occluder_shape_polygon.cpp
-msgid "Two Way"
-msgstr ""
-
-#: scene/3d/portal.cpp
-msgid "Linked Room"
-msgstr ""
-
-#: scene/3d/portal.cpp
-msgid "Use Default Margin"
-msgstr ""
-
-#: scene/3d/proximity_group.cpp
-#, fuzzy
-msgid "Group Name"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/3d/proximity_group.cpp
-msgid "Dispatch Mode"
-msgstr ""
-
-#: scene/3d/proximity_group.cpp
-msgid "Grid Radius"
-msgstr ""
-
-#: scene/3d/ray_cast.cpp
-msgid "Debug Shape"
-msgstr ""
-
-#: scene/3d/ray_cast.cpp scene/resources/style_box.cpp
-msgid "Thickness"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp scene/main/viewport.cpp
-#, fuzzy
-msgid "Update Mode"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: scene/3d/reflection_probe.cpp
-msgid "Origin Offset"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp
-#, fuzzy
-msgid "Box Projection"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: scene/3d/reflection_probe.cpp
-msgid "Enable Shadows"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp
-msgid "Ambient Color"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp
-msgid "Ambient Energy"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp
-msgid "Ambient Contrib"
-msgstr ""
-
-#: scene/3d/remote_transform.cpp
-msgid ""
-"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
-"derived node to work."
-msgstr ""
-
-#: scene/3d/room.cpp
-msgid "A Room cannot have another Room as a child or grandchild."
-msgstr ""
-
-#: scene/3d/room.cpp
-msgid "The RoomManager should not be placed inside a Room."
-msgstr ""
-
-#: scene/3d/room.cpp
-msgid "A RoomGroup should not be placed inside a Room."
-msgstr ""
-
-#: scene/3d/room.cpp
-msgid ""
-"Room convex hull contains a large number of planes.\n"
-"Consider simplifying the room bound in order to increase performance."
-msgstr ""
-
-#: scene/3d/room.cpp
-msgid "Use Default Simplify"
-msgstr ""
-
-#: scene/3d/room.cpp scene/3d/room_manager.cpp
-msgid "Room Simplify"
-msgstr ""
-
-#: scene/3d/room.cpp
-msgid "Bound"
-msgstr ""
-
-#: scene/3d/room_group.cpp
-msgid "Roomgroup Priority"
-msgstr ""
-
-#: scene/3d/room_group.cpp
-msgid "The RoomManager should not be placed inside a RoomGroup."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "The RoomList has not been assigned."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "The RoomList node should be a Spatial (or derived from Spatial)."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid ""
-"Portal Depth Limit is set to Zero.\n"
-"Only the Room that the Camera is in will render."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "There should only be one RoomManager in the SceneTree."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Main"
-msgstr ""
-
-#: scene/3d/room_manager.cpp scene/animation/animation_blend_tree.cpp
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/3d/room_manager.cpp
-msgid "Roomlist"
-msgstr ""
-
-#: scene/3d/room_manager.cpp servers/visual_server.cpp
-msgid "PVS"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "PVS Mode"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "PVS Filename"
-msgstr ""
-
-#: scene/3d/room_manager.cpp servers/visual_server.cpp
-msgid "Gameplay"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Gameplay Monitor"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Use Secondary PVS"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Merge Meshes"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Show Margins"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Debug Sprawl"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Overlap Warning Threshold"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-#, fuzzy
-msgid "Preview Camera"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
-
-#: scene/3d/room_manager.cpp
-msgid "Portal Depth Limit"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-#, fuzzy
-msgid "Default Portal Margin"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/3d/room_manager.cpp
-msgid "Roaming Expansion Margin"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid ""
-"RoomList path is invalid.\n"
-"Please check the RoomList branch has been assigned in the RoomManager."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "RoomList contains no Rooms, aborting."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Misnamed nodes detected, check output log for details. Aborting."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Portal link room not found, check output log for details."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid ""
-"Portal autolink failed, check output log for details.\n"
-"Check the portal is facing outwards from the source room."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid ""
-"Room overlap detected, cameras may work incorrectly in overlapping area.\n"
-"Check output log for details."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid ""
-"Error calculating room bounds.\n"
-"Ensure all rooms contain geometry or manual bounds."
-msgstr ""
-
-#: scene/3d/skeleton.cpp scene/resources/skin.cpp
-msgid "Pose"
-msgstr ""
-
-#: scene/3d/skeleton.cpp
-msgid "Bound Children"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-#, fuzzy
-msgid "Pinned Points"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/3d/soft_body.cpp
-msgid "Attachments"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-#, fuzzy
-msgid "Point Index"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
-
-#: scene/3d/soft_body.cpp
-msgid "Spatial Attachment Path"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Physics Enabled"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Parent Collision Ignore"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Simulation Precision"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Total Mass"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Linear Stiffness"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Areaangular Stiffness"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Volume Stiffness"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Pressure Coefficient"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Damping Coefficient"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Drag Coefficient"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Pose Matching Coefficient"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "This body will be ignored until you set a mesh."
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid ""
-"Size changes to SoftBody will be overridden by the physics engine when "
-"running.\n"
-"Change the size in children collision shapes instead."
-msgstr ""
-
-#: scene/3d/spatial.cpp
-msgid "Matrix"
-msgstr ""
-
-#: scene/3d/spatial.cpp
-msgid "Gizmo"
-msgstr ""
-
-#: scene/3d/spatial_velocity_tracker.cpp
-msgid "Track Physics Step"
-msgstr ""
-
-#: scene/3d/spring_arm.cpp
-msgid "Spring Length"
-msgstr ""
-
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-msgid "Opacity"
-msgstr ""
-
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#, fuzzy
-msgid "Transparent"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/3d/sprite_3d.cpp
-msgid ""
-"A SpriteFrames resource must be created or set in the \"Frames\" property in "
-"order for AnimatedSprite3D to display frames."
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid ""
-"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
-"it as a child of a VehicleBody."
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Per-Wheel Motion"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Engine Force"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Brake"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Steering"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "VehicleBody Motion"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Use As Traction"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/3d/vehicle_body.cpp
-msgid "Use As Steering"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Wheel"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Roll Influence"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Friction Slip"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/3d/vehicle_body.cpp
-msgid "Suspension"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Max Force"
-msgstr ""
-
-#: scene/3d/visibility_notifier.cpp
-msgid "AABB"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp scene/resources/navigation_mesh.cpp
-msgid "Geometry"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Material Override"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Material Overlay"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Cast Shadow"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Extra Cull Margin"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Baked Light"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Generate Lightmap"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Lightmap Scale"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "LOD"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp scene/animation/skeleton_ik.cpp
-#: scene/resources/material.cpp
-msgid "Min Distance"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Min Hysteresis"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Max Hysteresis"
-msgstr ""
-
-#: scene/3d/world_environment.cpp
-msgid ""
-"WorldEnvironment requires its \"Environment\" property to contain an "
-"Environment to have a visible effect."
-msgstr ""
-
-#: scene/3d/world_environment.cpp
-msgid ""
-"Only one WorldEnvironment is allowed per scene (or set of instanced scenes)."
-msgstr ""
-
-#: scene/3d/world_environment.cpp
-msgid ""
-"This WorldEnvironment is ignored. Either add a Camera (for 3D scenes) or set "
-"this environment's Background Mode to Canvas (for 2D scenes)."
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "On BlendTree node '%s', animation not found: '%s'"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Animation not found: '%s'"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Mix Mode"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Fadein Time"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Fadeout Time"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Auto Restart"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Autorestart"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Delay"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Random Delay"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-#, fuzzy
-msgid "Add Amount"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/animation/animation_blend_tree.cpp
-#, fuzzy
-msgid "Blend Amount"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/animation/animation_blend_tree.cpp
-#, fuzzy
-msgid "Seek Position"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/animation/animation_blend_tree.cpp
-#, fuzzy
-msgid "Input Count"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/animation/animation_blend_tree.cpp
-#: scene/animation/animation_node_state_machine.cpp
-msgid "Xfade Time"
-msgstr ""
-
-#: scene/animation/animation_node_state_machine.cpp
-msgid "Switch Mode"
-msgstr ""
-
-#: scene/animation/animation_node_state_machine.cpp
-#, fuzzy
-msgid "Auto Advance"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
-
-#: scene/animation/animation_node_state_machine.cpp
-#, fuzzy
-msgid "Advance Condition"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/animation/animation_player.cpp
-msgid "Anim Apply Reset"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-#, fuzzy
-msgid "Current Animation"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/animation/animation_player.cpp
-#, fuzzy
-msgid "Assigned Animation"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/animation/animation_player.cpp
-msgid "Reset On Save"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-#, fuzzy
-msgid "Current Animation Length"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/animation/animation_player.cpp
-#, fuzzy
-msgid "Current Animation Position"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/animation/animation_player.cpp
-msgid "Playback Options"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Default Blend Time"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Method Call Mode"
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "In node '%s', invalid animation: '%s'."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Invalid animation: '%s'."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Nothing connected to input '%s' of node '%s'."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "No root AnimationNode for the graph is set."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Path to an AnimationPlayer node containing animations is not set."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Path set for AnimationPlayer does not lead to an AnimationPlayer node."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "The AnimationPlayer root node is not a valid node."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Tree Root"
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Anim Player"
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Root Motion"
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-#, fuzzy
-msgid "Track"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
-
-#: scene/animation/animation_tree_player.cpp
-msgid "This node has been deprecated. Use AnimationTree instead."
-msgstr ""
-
-#: scene/animation/animation_tree_player.cpp
-msgid "Playback"
-msgstr ""
-
-#: scene/animation/animation_tree_player.cpp
-msgid "Master Player"
-msgstr ""
-
-#: scene/animation/animation_tree_player.cpp
-msgid "Base Path"
-msgstr ""
-
-#: scene/animation/root_motion_view.cpp
-#, fuzzy
-msgid "Animation Path"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/animation/root_motion_view.cpp
-msgid "Zero Y"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-#, fuzzy
-msgid "Root Bone"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Tip Bone"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Interpolation"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Override Tip Basis"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Use Magnet"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Magnet"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-#, fuzzy
-msgid "Target Node"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/animation/skeleton_ik.cpp
-#, fuzzy
-msgid "Max Iterations"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/animation/tween.cpp
-msgid "Playback Process Mode"
-msgstr ""
-
-#: scene/animation/tween.cpp
-msgid "Playback Speed"
-msgstr ""
-
-#: scene/audio/audio_stream_player.cpp
-msgid "Mix Target"
-msgstr ""
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/range.cpp
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Ratio"
-msgstr ""
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/texture_button.cpp
-#: scene/gui/texture_rect.cpp
-msgid "Stretch Mode"
-msgstr ""
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/box_container.cpp
-msgid "Alignment"
-msgstr ""
-
-#: scene/gui/base_button.cpp
-msgid "Shortcut In Tooltip"
-msgstr ""
-
-#: scene/gui/base_button.cpp
-#, fuzzy
-msgid "Action Mode"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/gui/base_button.cpp
-msgid "Enabled Focus Mode"
-msgstr ""
-
-#: scene/gui/base_button.cpp
-msgid "Keep Pressed Outside"
-msgstr ""
-
-#: scene/gui/base_button.cpp scene/gui/shortcut.cpp
-msgid "Shortcut"
-msgstr ""
-
-#: scene/gui/base_button.cpp
-#, fuzzy
-msgid "Group"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/gui/button.cpp scene/gui/label.cpp
-#, fuzzy
-msgid "Clip Text"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/gui/button.cpp scene/gui/label.cpp scene/gui/line_edit.cpp
-#: scene/gui/spin_box.cpp
-msgid "Align"
-msgstr ""
-
-#: scene/gui/button.cpp
-msgid "Icon Align"
-msgstr ""
-
-#: scene/gui/button.cpp
-msgid "Expand Icon"
-msgstr ""
-
-#: scene/gui/center_container.cpp
-msgid "Use Top Left"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid ""
-"Color: #%s\n"
-"LMB: Apply color\n"
-"RMB: Remove preset"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Edit Alpha"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "HSV Mode"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-#, fuzzy
-msgid "Raw Mode"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: scene/gui/color_picker.cpp
-msgid "Deferred Mode"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Presets Enabled"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Presets Visible"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Pick a color from the editor window."
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "HSV"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Switch between hexadecimal and code values."
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Add current color as a preset."
-msgstr ""
-
-#: scene/gui/container.cpp
-msgid ""
-"Container by itself serves no purpose unless a script configures its "
-"children placement behavior.\n"
-"If you don't intend to add a script, use a plain Control node instead."
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Theme Overrides"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid ""
-"The Hint Tooltip won't be displayed as the control's Mouse Filter is set to "
-"\"Ignore\". To solve this, set the Mouse Filter to \"Stop\" or \"Pass\"."
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Anchor"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Grow Direction"
-msgstr ""
-
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
-msgid "Min Size"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Pivot Offset"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Clip Content"
-msgstr ""
-
-#: scene/gui/control.cpp scene/resources/visual_shader_nodes.cpp
-msgid "Hint"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Tooltip"
-msgstr ""
-
-#: scene/gui/control.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Focus"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Neighbour Left"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Neighbour Top"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Neighbour Right"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Neighbour Bottom"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Next"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Previous"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Mouse"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Default Cursor Shape"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Pass On Modal Close Click"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Size Flags"
-msgstr ""
-
-#: scene/gui/control.cpp
-#, fuzzy
-msgid "Stretch Ratio"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/gui/control.cpp
-msgid "Theme Type Variation"
-msgstr ""
-
-#: scene/gui/dialogs.cpp
-msgid "Window Title"
-msgstr ""
-
-#: scene/gui/dialogs.cpp
-msgid "Dialog"
-msgstr ""
-
-#: scene/gui/dialogs.cpp
-msgid "Hide On OK"
-msgstr ""
-
-#: scene/gui/dialogs.cpp
-msgid "Alert!"
-msgstr ""
-
-#: scene/gui/dialogs.cpp
-msgid "Please Confirm..."
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Mode Overrides Title"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Must use a valid extension."
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-#, fuzzy
-msgid "Right Disconnects"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: scene/gui/graph_edit.cpp
-msgid "Scroll Offset"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Snap Distance"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Zoom Min"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Zoom Max"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-#, fuzzy
-msgid "Zoom Step"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: scene/gui/graph_edit.cpp
-msgid "Show Zoom Label"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp scene/gui/text_edit.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Minimap"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Enable grid minimap."
-msgstr ""
-
-#: scene/gui/graph_node.cpp
-msgid "Show Close"
-msgstr ""
-
-#: scene/gui/graph_node.cpp scene/gui/option_button.cpp
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Selected"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/gui/graph_node.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Comment"
-msgstr ""
-
-#: scene/gui/graph_node.cpp
-msgid "Overlay"
-msgstr ""
-
-#: scene/gui/grid_container.cpp scene/gui/item_list.cpp scene/gui/tree.cpp
-msgid "Columns"
-msgstr ""
-
-#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/text_edit.cpp
-#: scene/gui/tree.cpp scene/main/viewport.cpp
-msgid "Timers"
-msgstr ""
-
-#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval Msec"
-msgstr ""
-
-#: scene/gui/item_list.cpp scene/gui/tree.cpp
-msgid "Allow Reselect"
-msgstr ""
-
-#: scene/gui/item_list.cpp scene/gui/tree.cpp
-#, fuzzy
-msgid "Allow RMB Select"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/gui/item_list.cpp
-msgid "Max Text Lines"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Auto Height"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Max Columns"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Same Column Width"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Fixed Column Width"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Icon Scale"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Fixed Icon Size"
-msgstr ""
-
-#: scene/gui/label.cpp
-msgid "V Align"
-msgstr ""
-
-#: scene/gui/label.cpp scene/gui/rich_text_label.cpp
-msgid "Visible Characters"
-msgstr ""
-
-#: scene/gui/label.cpp scene/gui/rich_text_label.cpp
-msgid "Percent Visible"
-msgstr ""
-
-#: scene/gui/label.cpp
-msgid "Lines Skipped"
-msgstr ""
-
-#: scene/gui/label.cpp
-msgid "Max Lines Visible"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/resources/navigation_mesh.cpp
-msgid "Max Length"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Secret"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Secret Character"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Expand To Text Length"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Context Menu Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Virtual Keyboard Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-#, fuzzy
-msgid "Clear Button Enabled"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Shortcut Keys Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Middle Mouse Paste Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-#, fuzzy
-msgid "Selecting Enabled"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/gui/line_edit.cpp scene/gui/rich_text_label.cpp
-#: scene/gui/text_edit.cpp
-msgid "Deselect On Focus Loss Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Right Icon"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Placeholder"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Alpha"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Caret"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Blink"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Blink Speed"
-msgstr ""
-
-#: scene/gui/link_button.cpp
-msgid "Underline"
-msgstr ""
-
-#: scene/gui/menu_button.cpp
-msgid "Switch On Hover"
-msgstr ""
-
-#: scene/gui/nine_patch_rect.cpp scene/resources/style_box.cpp
-msgid "Draw Center"
-msgstr ""
-
-#: scene/gui/nine_patch_rect.cpp scene/resources/style_box.cpp
-msgid "Region Rect"
-msgstr ""
-
-#: scene/gui/nine_patch_rect.cpp
-msgid "Patch Margin"
-msgstr ""
-
-#: scene/gui/nine_patch_rect.cpp scene/resources/style_box.cpp
-msgid "Axis Stretch"
-msgstr ""
-
-#: scene/gui/nine_patch_rect.cpp
-msgid ""
-"The Tile and Tile Fit options for Axis Stretch properties are only effective "
-"when using the GLES3 rendering backend.\n"
-"The GLES2 backend is currently in use, so these modes will act like Stretch "
-"instead."
-msgstr ""
-
-#: scene/gui/popup.cpp
-msgid "Popup"
-msgstr ""
-
-#: scene/gui/popup.cpp
-msgid "Exclusive"
-msgstr ""
-
-#: scene/gui/popup.cpp
-msgid ""
-"Popups will hide by default unless you call popup() or any of the popup*() "
-"functions. Making them visible for editing is fine, but they will hide upon "
-"running."
-msgstr ""
-
-#: scene/gui/popup_menu.cpp
-#, fuzzy
-msgid "Hide On Item Selection"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/gui/popup_menu.cpp
-#, fuzzy
-msgid "Hide On Checkable Item Selection"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/gui/popup_menu.cpp
-#, fuzzy
-msgid "Hide On State Item Selection"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/gui/popup_menu.cpp
-msgid "Submenu Popup Delay"
-msgstr ""
-
-#: scene/gui/popup_menu.cpp
-msgid "Allow Search"
-msgstr ""
-
-#: scene/gui/progress_bar.cpp
-msgid "Percent"
-msgstr ""
-
-#: scene/gui/range.cpp
-msgid "If \"Exp Edit\" is enabled, \"Min Value\" must be greater than 0."
-msgstr ""
-
-#: scene/gui/range.cpp scene/resources/curve.cpp
-msgid "Min Value"
-msgstr ""
-
-#: scene/gui/range.cpp scene/resources/curve.cpp
-msgid "Max Value"
-msgstr ""
-
-#: scene/gui/range.cpp
-msgid "Page"
-msgstr ""
-
-#: scene/gui/range.cpp
-msgid "Exp Edit"
-msgstr ""
-
-#: scene/gui/range.cpp
-#, fuzzy
-msgid "Rounded"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/gui/range.cpp
-msgid "Allow Greater"
-msgstr ""
-
-#: scene/gui/range.cpp
-msgid "Allow Lesser"
-msgstr ""
-
-#: scene/gui/reference_rect.cpp
-msgid "Border Color"
-msgstr ""
-
-#: scene/gui/reference_rect.cpp scene/resources/style_box.cpp
-msgid "Border Width"
-msgstr ""
-
-#: scene/gui/rich_text_effect.cpp
-msgid "Relative Index"
-msgstr ""
-
-#: scene/gui/rich_text_effect.cpp
-msgid "Absolute Index"
-msgstr ""
-
-#: scene/gui/rich_text_effect.cpp
-msgid "Elapsed Time"
-msgstr ""
-
-#: scene/gui/rich_text_effect.cpp
-msgid "Env"
-msgstr ""
-
-#: scene/gui/rich_text_effect.cpp
-msgid "Character"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "BBCode"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Meta Underlined"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Tab Size"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Fit Content Height"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Scroll Active"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Scroll Following"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-#, fuzzy
-msgid "Selection Enabled"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/gui/rich_text_label.cpp scene/gui/text_edit.cpp
-#, fuzzy
-msgid "Override Selected Font Color"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/gui/rich_text_label.cpp
-msgid "Custom Effects"
-msgstr ""
-
-#: scene/gui/scroll_bar.cpp
-#, fuzzy
-msgid "Custom Step"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: scene/gui/scroll_container.cpp
-msgid ""
-"ScrollContainer is intended to work with a single child control.\n"
-"Use a container as child (VBox, HBox, etc.), or a Control and set the custom "
-"minimum size manually."
-msgstr ""
-
-#: scene/gui/scroll_container.cpp
-msgid "Follow Focus"
-msgstr ""
-
-#: scene/gui/scroll_container.cpp
-#, fuzzy
-msgid "Horizontal Enabled"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: scene/gui/scroll_container.cpp
-msgid "Vertical Enabled"
-msgstr ""
-
-#: scene/gui/scroll_container.cpp
-msgid "Default Scroll Deadzone"
-msgstr ""
-
-#: scene/gui/slider.cpp
-msgid "Scrollable"
-msgstr ""
-
-#: scene/gui/slider.cpp
-msgid "Tick Count"
-msgstr ""
-
-#: scene/gui/slider.cpp
-msgid "Ticks On Borders"
-msgstr ""
-
-#: scene/gui/spin_box.cpp
-msgid "Prefix"
-msgstr ""
-
-#: scene/gui/spin_box.cpp
-msgid "Suffix"
-msgstr ""
-
-#: scene/gui/split_container.cpp
-#, fuzzy
-msgid "Split Offset"
-msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: scene/gui/split_container.cpp scene/gui/tree.cpp
-msgid "Collapsed"
-msgstr ""
-
-#: scene/gui/split_container.cpp
-msgid "Dragger Visibility"
-msgstr ""
-
-#: scene/gui/tab_container.cpp scene/gui/tabs.cpp
-msgid "Tab Align"
-msgstr ""
-
-#: scene/gui/tab_container.cpp scene/gui/tabs.cpp
-msgid "Current Tab"
-msgstr ""
-
-#: scene/gui/tab_container.cpp
-msgid "Tabs Visible"
-msgstr ""
-
-#: scene/gui/tab_container.cpp
-msgid "All Tabs In Front"
-msgstr ""
-
-#: scene/gui/tab_container.cpp scene/gui/tabs.cpp
-msgid "Drag To Rearrange Enabled"
-msgstr ""
-
-#: scene/gui/tab_container.cpp
-msgid "Use Hidden Tabs For Min Size"
-msgstr ""
-
-#: scene/gui/tabs.cpp
-msgid "Tab Close Display Policy"
-msgstr ""
-
-#: scene/gui/tabs.cpp
-msgid "Scrolling Enabled"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Readonly"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Bookmark Gutter"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Breakpoint Gutter"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Fold Gutter"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Hiding Enabled"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Wrap Enabled"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Scroll Vertical"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-#, fuzzy
-msgid "Scroll Horizontal"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: scene/gui/text_edit.cpp
-msgid "Draw"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-#, fuzzy
-msgid "Block Mode"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-
-#: scene/gui/text_edit.cpp
-msgid "Moving By Right Click"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Text Edit Idle Detect (sec)"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Text Edit Undo Stack Max Size"
-msgstr ""
-
-#: scene/gui/texture_button.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Hover"
-msgstr ""
-
-#: scene/gui/texture_button.cpp
-msgid "Focused"
-msgstr ""
-
-#: scene/gui/texture_button.cpp
-msgid "Click Mask"
-msgstr ""
-
-#: scene/gui/texture_button.cpp scene/gui/texture_rect.cpp
-#: scene/gui/video_player.cpp
-msgid "Expand"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Under"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Over"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Progress"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Progress Offset"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Fill Mode"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp scene/resources/material.cpp
-msgid "Tint"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Radial Fill"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Initial Angle"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Fill Degrees"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp scene/resources/primitive_meshes.cpp
-#, fuzzy
-msgid "Center Offset"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/gui/texture_progress.cpp
-msgid "Nine Patch Stretch"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-#, fuzzy
-msgid "Stretch Margin Left"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/gui/texture_progress.cpp
-#, fuzzy
-msgid "Stretch Margin Top"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/gui/texture_progress.cpp
-#, fuzzy
-msgid "Stretch Margin Right"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/gui/texture_progress.cpp
-#, fuzzy
-msgid "Stretch Margin Bottom"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/gui/tree.cpp
-msgid "Custom Minimum Height"
-msgstr ""
-
-#: scene/gui/tree.cpp
-msgid "(Other)"
-msgstr ""
-
-#: scene/gui/tree.cpp
-msgid "Column Titles Visible"
-msgstr ""
-
-#: scene/gui/tree.cpp
-#, fuzzy
-msgid "Hide Folding"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: scene/gui/tree.cpp
-msgid "Hide Root"
-msgstr ""
-
-#: scene/gui/tree.cpp
-msgid "Drop Mode Flags"
-msgstr ""
-
-#: scene/gui/video_player.cpp
-#, fuzzy
-msgid "Audio Track"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
-
-#: scene/gui/video_player.cpp scene/main/scene_tree.cpp scene/main/timer.cpp
-msgid "Paused"
-msgstr ""
-
-#: scene/gui/video_player.cpp
-msgid "Buffering Msec"
-msgstr ""
-
-#: scene/gui/video_player.cpp
-msgid "Stream Position"
-msgstr ""
-
-#: scene/gui/viewport_container.cpp
-msgid "Stretch Shrink"
-msgstr ""
-
-#: scene/main/canvas_layer.cpp
-msgid "Follow Viewport"
-msgstr ""
-
-#: scene/main/http_request.cpp
-msgid "Download File"
-msgstr ""
-
-#: scene/main/http_request.cpp
-msgid "Download Chunk Size"
-msgstr ""
-
-#: scene/main/http_request.cpp
-msgid "Body Size Limit"
-msgstr ""
-
-#: scene/main/http_request.cpp
-msgid "Max Redirects"
-msgstr ""
-
-#: scene/main/http_request.cpp
-msgid "Timeout"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid ""
-"Setting node name '%s' to be unique within scene for '%s', but it's already "
-"claimed by '%s'. This node is no longer set unique."
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Name Num Separator"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Name Casing"
-msgstr ""
-
-#: scene/main/node.cpp
-#, fuzzy
-msgid "Editor Description"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: scene/main/node.cpp
-msgid "Pause Mode"
-msgstr ""
-
-#: scene/main/node.cpp
-#, fuzzy
-msgid "Physics Interpolation Mode"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதை [interpolation]யை மாறà¯à®±à¯"
-
-#: scene/main/node.cpp
-msgid "Display Folded"
-msgstr ""
-
-#: scene/main/node.cpp
-#, fuzzy
-msgid "Filename"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதைகà¯à®•௠மறà¯à®ªà¯†à®¯à®°à¯ இடà¯"
-
-#: scene/main/node.cpp
-msgid "Owner"
-msgstr ""
-
-#: scene/main/node.cpp scene/main/scene_tree.cpp
-msgid "Multiplayer"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Custom Multiplayer"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Process Priority"
-msgstr ""
-
-#: scene/main/scene_tree.cpp scene/main/timer.cpp
-msgid "Time Left"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Debug Collisions Hint"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Debug Navigation Hint"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Use Font Oversampling"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Edited Scene Root"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Root"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Multiplayer Poll"
-msgstr ""
-
-#: scene/main/scene_tree.cpp scene/resources/mesh_library.cpp
-#: scene/resources/shape_2d.cpp
-msgid "Shapes"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Shape Color"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Contact Color"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Geometry Color"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-#, fuzzy
-msgid "Disabled Geometry Color"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: scene/main/scene_tree.cpp
-msgid "Max Contacts Displayed"
-msgstr ""
-
-#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
-msgid "Draw 2D Outlines"
-msgstr ""
-
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
-#, fuzzy
-msgid "Reflections"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/main/scene_tree.cpp
-msgid "Atlas Size"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Atlas Subdiv"
-msgstr ""
-
-#: scene/main/scene_tree.cpp scene/main/viewport.cpp
-msgid "MSAA"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Use FXAA"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Use Debanding"
-msgstr ""
-
-#: scene/main/scene_tree.cpp scene/main/viewport.cpp
-msgid "HDR"
-msgstr ""
-
-#: scene/main/scene_tree.cpp scene/main/viewport.cpp
-msgid "Use 32 BPC Depth"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Default Environment"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid ""
-"Default Environment as specified in Project Settings (Rendering -> "
-"Environment -> Default Environment) could not be loaded."
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Enable Object Picking"
-msgstr ""
-
-#: scene/main/timer.cpp
-msgid ""
-"Very low timer wait times (< 0.05 seconds) may behave in significantly "
-"different ways depending on the rendered or physics frame rate.\n"
-"Consider using a script's process loop instead of relying on a Timer for "
-"very low wait times."
-msgstr ""
-
-#: scene/main/timer.cpp
-msgid "Autostart"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Viewport Path"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid ""
-"This viewport is not set as render target. If you intend for it to display "
-"its contents directly to the screen, make it a child of a Control so it can "
-"obtain a size. Otherwise, make it a RenderTarget and assign its internal "
-"texture to some node for display."
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid ""
-"The Viewport size must be greater than or equal to 2 pixels on both "
-"dimensions to render anything."
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "ARVR"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Size Override Stretch"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Own World"
-msgstr ""
-
-#: scene/main/viewport.cpp scene/resources/world_2d.cpp
-msgid "World"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "World 2D"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Transparent BG"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Handle Input Locally"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "FXAA"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Debanding"
-msgstr ""
-
-#: scene/main/viewport.cpp
-#, fuzzy
-msgid "Disable 3D"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: scene/main/viewport.cpp
-msgid "Keep 3D Linear"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Render Direct To Screen"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Debug Draw"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Render Target"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "V Flip"
-msgstr ""
-
-#: scene/main/viewport.cpp
-#, fuzzy
-msgid "Clear Mode"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: scene/main/viewport.cpp
-msgid "Enable 2D"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Enable 3D"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Object Picking"
-msgstr ""
-
-#: scene/main/viewport.cpp
-#, fuzzy
-msgid "Disable Input"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: scene/main/viewport.cpp servers/visual_server.cpp
-msgid "Shadow Atlas"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Quad 0"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Quad 1"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Quad 2"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Quad 3"
-msgstr ""
-
-#: scene/main/viewport.cpp
-#, fuzzy
-msgid "Canvas Transform"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: scene/main/viewport.cpp
-#, fuzzy
-msgid "Global Canvas Transform"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: scene/main/viewport.cpp
-msgid "Tooltip Delay (sec)"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "Swap OK Cancel"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-#, fuzzy
-msgid "Layer Names"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-
-#: scene/register_scene_types.cpp
-msgid "2D Render"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "3D Render"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "2D Physics"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "3D Physics"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "Use hiDPI"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-#, fuzzy
-msgid "Custom"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: scene/register_scene_types.cpp
-#, fuzzy
-msgid "Custom Font"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: scene/resources/audio_stream_sample.cpp
-#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
-msgid "Mix Rate"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Stereo"
-msgstr ""
-
-#: scene/resources/concave_polygon_shape_2d.cpp
-msgid "Segments"
-msgstr ""
-
-#: scene/resources/curve.cpp
-#, fuzzy
-msgid "Bake Resolution"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/curve.cpp
-msgid "Bake Interval"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Panel"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Font Color"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Font Color Hover"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Font Color Focus"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Font Color Disabled"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "H Separation"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Underline Spacing"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Arrow"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Arrow Margin"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Hover Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Checked Disabled"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Unchecked"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Unchecked Disabled"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Radio Checked"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Radio Checked Disabled"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Radio Unchecked"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Radio Unchecked Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Hover Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Check V Adjust"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "On Disabled"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Off"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Off Disabled"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Shadow"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Outline Modulate"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Shadow Offset X"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Shadow Offset Y"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Shadow As Outline"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Font Color Selected"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Uneditable"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Cursor Color"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Clear Button Color"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Clear Button Color Pressed"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Minimum Spaces"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "BG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "FG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Tab"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
-#: scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Folded"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Fold"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Readonly"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Completion Lines"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Completion Max Width"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Completion Scroll Width"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Scroll Focus"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grabber"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grabber Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grabber Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Increment"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Increment Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Increment Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Decrement"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Decrement Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Decrement Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Slider"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grabber Area"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grabber Area Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Grabber Disabled"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Tick"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Updown"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Scaleborder Size"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Font"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Title Color"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Height"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Close Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Close H Offset"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Close V Offset"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Parent Folder"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Toggle Hidden"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Panel Disabled"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Labeled Separator Left"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Labeled Separator Right"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Font Separator"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Font Color Accel"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Separator"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "V Separation"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Selected Frame"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Default Frame"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Default Focus"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Comment Focus"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Breakpoint"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Resizer"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Close Color"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Resizer Color"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Title Offset"
-msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Close Offset"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Port Offset"
-msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "BG Focus"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Selected Focus"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Cursor Unfocused"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Button Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Title Button Normal"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Title Button Pressed"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Title Button Hover"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Custom Button"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Custom Button Pressed"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Custom Button Hover"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Select Arrow"
-msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Arrow Collapsed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Title Button Font"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Title Button Color"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Guide Color"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Drop Position Color"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Relationship Line Color"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Custom Button Font Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Item Margin"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Button Margin"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Draw Relationship Lines"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Draw Guides"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Scroll Border"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Scroll Speed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Icon Margin"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Line Separation"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Tab FG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Tab BG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Tab Disabled"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Menu"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Menu Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Font Color FG"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Font Color BG"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Side Margin"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Top Margin"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Label V Align FG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Label V Align BG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Large"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Folder"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Folder Icon Modulate"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "File Icon Modulate"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Files Disabled"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "SV Width"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "SV Height"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "H Width"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Label Width"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Screen Picker"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Add Preset"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Color Hue"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Color Sample"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Preset BG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Overbright Indicator"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Preset FG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Preset BG Icon"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Normal Font"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Bold Font"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Italics Font"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Bold Italics Font"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Mono Font"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Table H Separation"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Table V Separation"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Margin Left"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Margin Top"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Margin Right"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Margin Bottom"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Autohide"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Minus"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "More"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grid Minor"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grid Major"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Selection Fill"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Selection Stroke"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Activity"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Bezier Len Pos"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Bezier Len Neg"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Port Grab Distance Horizontal"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Port Grab Distance Vertical"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Hinting"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Override Oversampling"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Font Path"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Outline Size"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-#, fuzzy
-msgid "Outline Color"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/dynamic_font.cpp
-msgid "Use Mipmaps"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Extra Spacing"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Char"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Font Data"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Background"
-msgstr ""
-
-#: scene/resources/environment.cpp scene/resources/sky.cpp
-msgid "Sky"
-msgstr ""
-
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Sky Custom FOV"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Sky Orientation"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Sky Rotation"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/resources/environment.cpp
-msgid "Sky Rotation Degrees"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Canvas Max Layer"
-msgstr ""
-
-#: scene/resources/environment.cpp scene/resources/texture.cpp
-msgid "Camera Feed ID"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Ambient Light"
-msgstr ""
-
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Sky Contribution"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/resources/environment.cpp
-msgid "Fog"
-msgstr ""
-
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Sun Color"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/environment.cpp
-msgid "Sun Amount"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Depth Enabled"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Depth Begin"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Depth End"
-msgstr ""
-
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Depth Curve"
-msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: scene/resources/environment.cpp
-msgid "Transmit Enabled"
-msgstr ""
-
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Transmit Curve"
-msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: scene/resources/environment.cpp
-msgid "Height Enabled"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Height Min"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Height Max"
-msgstr ""
-
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Height Curve"
-msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: scene/resources/environment.cpp
-msgid "Tonemap"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Exposure"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "White"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Auto Exposure"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Min Luma"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Max Luma"
-msgstr ""
-
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "SS Reflections"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/environment.cpp
-msgid "Max Steps"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Fade In"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Fade Out"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Depth Tolerance"
-msgstr ""
-
-#: scene/resources/environment.cpp scene/resources/material.cpp
-msgid "Roughness"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "SSAO"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Radius 2"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Intensity 2"
-msgstr ""
-
-#: scene/resources/environment.cpp scene/resources/material.cpp
-msgid "Light Affect"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "AO Channel Affect"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Blur"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Edge Sharpness"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "DOF Far Blur"
-msgstr ""
-
-#: scene/resources/environment.cpp scene/resources/material.cpp
-msgid "Distance"
-msgstr ""
-
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Transition"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/resources/environment.cpp
-msgid "DOF Near Blur"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Glow"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Levels"
-msgstr ""
-
-#: scene/resources/environment.cpp
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "1"
-msgstr ""
-
-#: scene/resources/environment.cpp
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "2"
-msgstr ""
-
-#: scene/resources/environment.cpp
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "3"
-msgstr ""
-
-#: scene/resources/environment.cpp
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "4"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "5"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "6"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "7"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Bloom"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "HDR Threshold"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "HDR Luminance Cap"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "HDR Scale"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Bicubic Upscale"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Adjustments"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Brightness"
-msgstr ""
-
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Saturation"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Color Correction"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: scene/resources/font.cpp
-msgid "Ascent"
-msgstr ""
-
-#: scene/resources/font.cpp
-msgid "Distance Field"
-msgstr ""
-
-#: scene/resources/gradient.cpp
-msgid "Raw Data"
-msgstr ""
-
-#: scene/resources/gradient.cpp
-msgid "Offsets"
-msgstr ""
-
-#: scene/resources/height_map_shape.cpp
-msgid "Map Width"
-msgstr ""
-
-#: scene/resources/height_map_shape.cpp
-msgid "Map Depth"
-msgstr ""
-
-#: scene/resources/height_map_shape.cpp
-msgid "Map Data"
-msgstr ""
-
-#: scene/resources/line_shape_2d.cpp
-msgid "D"
-msgstr ""
-
-#: scene/resources/material.cpp
-#, fuzzy
-msgid "Next Pass"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-
-#: scene/resources/material.cpp
-msgid "Use Shadow To Opacity"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Unshaded"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Vertex Lighting"
-msgstr ""
-
-#: scene/resources/material.cpp
-#, fuzzy
-msgid "Use Point Size"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
-
-#: scene/resources/material.cpp
-msgid "World Triplanar"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Albedo Tex Force sRGB"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Do Not Receive Shadows"
-msgstr ""
-
-#: scene/resources/material.cpp
-#, fuzzy
-msgid "Disable Ambient Light"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: scene/resources/material.cpp
-msgid "Ensure Correct Normals"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Albedo Tex MSDF"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Vertex Color"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Use As Albedo"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Is sRGB"
-msgstr ""
-
-#: scene/resources/material.cpp servers/visual_server.cpp
-msgid "Parameters"
-msgstr ""
-
-#: scene/resources/material.cpp
-#, fuzzy
-msgid "Diffuse Mode"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/material.cpp
-msgid "Specular Mode"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Depth Draw Mode"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Line Width"
-msgstr ""
-
-#: scene/resources/material.cpp
-#, fuzzy
-msgid "Point Size"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
-
-#: scene/resources/material.cpp
-#, fuzzy
-msgid "Billboard Mode"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/material.cpp
-#, fuzzy
-msgid "Billboard Keep Scale"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/material.cpp
-msgid "Grow"
-msgstr ""
-
-#: scene/resources/material.cpp
-#, fuzzy
-msgid "Grow Amount"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: scene/resources/material.cpp
-msgid "Use Alpha Scissor"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Particles Anim"
-msgstr ""
-
-#: scene/resources/material.cpp
-#, fuzzy
-msgid "H Frames"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-
-#: scene/resources/material.cpp
-#, fuzzy
-msgid "V Frames"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-
-#: scene/resources/material.cpp
-msgid "Albedo"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Metallic"
-msgstr ""
-
-#: scene/resources/material.cpp
-#, fuzzy
-msgid "Texture Channel"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-
-#: scene/resources/material.cpp
-msgid "Emission"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "On UV2"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "NormalMap"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Rim"
-msgstr ""
-
-#: scene/resources/material.cpp
-#, fuzzy
-msgid "Clearcoat"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: scene/resources/material.cpp
-msgid "Gloss"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Anisotropy"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Flowmap"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Ambient Occlusion"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Deep Parallax"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Min Layers"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Max Layers"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Flip Tangent"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Flip Binormal"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Subsurf Scatter"
-msgstr ""
-
-#: scene/resources/material.cpp
-#, fuzzy
-msgid "Transmission"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/resources/material.cpp
-#, fuzzy
-msgid "Refraction"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
-msgid "Detail"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "UV Layer"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "UV1"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Triplanar"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Triplanar Sharpness"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "UV2"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Proximity Fade"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Distance Fade"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Async Mode"
-msgstr ""
-
-#: scene/resources/mesh.cpp
-msgid "Lightmap Size Hint"
-msgstr ""
-
-#: scene/resources/mesh.cpp scene/resources/primitive_meshes.cpp
-msgid "Custom AABB"
-msgstr ""
-
-#: scene/resources/mesh_library.cpp
-#, fuzzy
-msgid "Mesh Transform"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: scene/resources/mesh_library.cpp
-#, fuzzy
-msgid "NavMesh Transform"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: scene/resources/multimesh.cpp
-#, fuzzy
-msgid "Color Format"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: scene/resources/multimesh.cpp
-msgid "Transform Format"
-msgstr ""
-
-#: scene/resources/multimesh.cpp
-msgid "Custom Data Format"
-msgstr ""
-
-#: scene/resources/multimesh.cpp
-msgid "Instance Count"
-msgstr ""
-
-#: scene/resources/multimesh.cpp
-msgid "Visible Instance Count"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Sample Partition Type"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Parsed Geometry Type"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Source Geometry Mode"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Source Group Name"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Max Climb"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Max Slope"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Merge Size"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Max Error"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Verts Per Poly"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Sample Distance"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Sample Max Error"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Low Hanging Obstacles"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Ledge Spans"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
-msgstr ""
-
-#: scene/resources/occluder_shape.cpp
-msgid "Spheres"
-msgstr ""
-
-#: scene/resources/occluder_shape.cpp
-msgid "OccluderShapeSphere Set Spheres"
-msgstr ""
-
-#: scene/resources/occluder_shape_polygon.cpp
-#, fuzzy
-msgid "Polygon Points"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/occluder_shape_polygon.cpp
-#, fuzzy
-msgid "Hole Points"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: scene/resources/packed_scene.cpp
-msgid "Bundled"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Trail"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Divisor"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Size Modifier"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-#, fuzzy
-msgid "Color Modifier"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: scene/resources/particles_material.cpp
-#, fuzzy
-msgid "Point Texture"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: scene/resources/particles_material.cpp
-msgid "Normal Texture"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-#, fuzzy
-msgid "Color Texture"
-msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: scene/resources/particles_material.cpp
-#, fuzzy
-msgid "Point Count"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/resources/particles_material.cpp
-msgid "Scale Random"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-#, fuzzy
-msgid "Scale Curve"
-msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: scene/resources/physics_material.cpp
-msgid "Rough"
-msgstr ""
-
-#: scene/resources/physics_material.cpp
-msgid "Absorbent"
-msgstr ""
-
-#: scene/resources/plane_shape.cpp
-msgid "Plane"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Flip Faces"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Mid Height"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Subdivide Width"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Subdivide Height"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Subdivide Depth"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Top Radius"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Bottom Radius"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Left To Right"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Is Hemisphere"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-#, fuzzy
-msgid "Curve Step"
-msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: scene/resources/ray_shape.cpp scene/resources/segment_shape_2d.cpp
-msgid "Slips On Slope"
-msgstr ""
-
-#: scene/resources/segment_shape_2d.cpp
-msgid "A"
-msgstr ""
-
-#: scene/resources/shape_2d.cpp
-msgid "Custom Solver Bias"
-msgstr ""
-
-#: scene/resources/skin.cpp
-#, fuzzy
-msgid "Bind Count"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: scene/resources/skin.cpp
-msgid "Bind"
-msgstr ""
-
-#: scene/resources/skin.cpp
-#, fuzzy
-msgid "Bone"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-
-#: scene/resources/sky.cpp
-msgid "Radiance Size"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Panorama"
-msgstr ""
-
-#: scene/resources/sky.cpp
-#, fuzzy
-msgid "Top Color"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/sky.cpp
-#, fuzzy
-msgid "Horizon Color"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/sky.cpp
-#, fuzzy
-msgid "Ground"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/sky.cpp
-#, fuzzy
-msgid "Bottom Color"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/sky.cpp
-msgid "Sun"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Latitude"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Longitude"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Angle Min"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Angle Max"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Content Margin"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Expand Margin"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Skew"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Corner Radius"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Corner Detail"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Anti Aliasing"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Grow Begin"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Grow End"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Load Path"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Base Texture"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Image Size"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Side"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Front"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Back"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Storage Mode"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Lossy Storage Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "From"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "To"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Base"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
-msgid "Current Frame"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-
-#: scene/resources/texture.cpp
-msgid "Pause"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Which Feed"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Camera Is Active"
-msgstr ""
-
-#: scene/resources/theme.cpp
-msgid "Default Font"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Output Port For Preview"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-#, fuzzy
-msgid "Depth Draw"
-msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: scene/resources/visual_shader.cpp
-msgid "Cull"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-#, fuzzy
-msgid "Diffuse"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/visual_shader.cpp
-msgid "Async"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-#, fuzzy
-msgid "Modes"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
-#: scene/resources/visual_shader.cpp
-msgid "Input Name"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Uniform Name"
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid ""
-"The sampler port is connected but not used. Consider changing the source to "
-"'SamplerPort'."
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Invalid source for preview."
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Invalid source for shader."
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Texture Type"
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Cube Map"
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-#, fuzzy
-msgid "Default Value Enabled"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/visual_shader_nodes.cpp
-#, fuzzy
-msgid "Default Value"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Color Default"
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Invalid comparison function for that type."
-msgstr ""
-
-#: scene/resources/world.cpp
-msgid "Fallback Environment"
-msgstr ""
-
-#: scene/resources/world.cpp
-msgid "Scenario"
-msgstr ""
-
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Direct Space State"
-msgstr ""
-
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Default Gravity Vector"
-msgstr ""
-
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Default Linear Damp"
-msgstr ""
-
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Default Angular Damp"
-msgstr ""
-
-#: scene/resources/world_2d.cpp
-msgid "Canvas"
-msgstr ""
-
-#: servers/arvr/arvr_interface.cpp
-msgid "Is Primary"
-msgstr ""
-
-#: servers/arvr/arvr_interface.cpp
-msgid "Is Initialized"
-msgstr ""
-
-#: servers/arvr/arvr_interface.cpp
-msgid "AR"
-msgstr ""
-
-#: servers/arvr/arvr_interface.cpp
-msgid "Is Anchor Detection Enabled"
-msgstr ""
-
-#: servers/arvr_server.cpp
-msgid "Primary Interface"
-msgstr ""
-
-#: servers/audio/audio_stream.cpp
-msgid "Audio Stream"
-msgstr ""
-
-#: servers/audio/audio_stream.cpp
-msgid "Random Pitch"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_capture.cpp
-#: servers/audio/effects/audio_effect_spectrum_analyzer.cpp
-#: servers/audio/effects/audio_stream_generator.cpp
-msgid "Buffer Length"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "Voice Count"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Dry"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Wet"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "Voice"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "Depth (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-msgid "Pan"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_compressor.cpp
-#: servers/audio/effects/audio_effect_filter.cpp
-msgid "Gain"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Attack (µs)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Release (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Mix"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Sidechain"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Tap 1"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Tap 2"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_phaser.cpp
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Feedback"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Low-pass"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_distortion.cpp
-msgid "Pre Gain"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_distortion.cpp
-msgid "Keep Hf Hz"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_distortion.cpp
-msgid "Drive"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_distortion.cpp
-msgid "Post Gain"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_filter.cpp
-msgid "Resonance"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_limiter.cpp
-msgid "Ceiling dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_limiter.cpp
-msgid "Threshold dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_limiter.cpp
-msgid "Soft Clip dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_limiter.cpp
-msgid "Soft Clip Ratio"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Range Min Hz"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Range Max Hz"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_pitch_shift.cpp
-msgid "Oversampling"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_pitch_shift.cpp
-#: servers/audio/effects/audio_effect_spectrum_analyzer.cpp
-msgid "FFT Size"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Predelay"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Msec"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Room Size"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "High-pass"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_spectrum_analyzer.cpp
-msgid "Tap Back Pos"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_stereo_enhance.cpp
-msgid "Pan Pullout"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_stereo_enhance.cpp
-msgid "Time Pullout (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_stereo_enhance.cpp
-msgid "Surround"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Enable Audio Input"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Output Latency"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Channel Disable Threshold dB"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Channel Disable Time"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Video Delay Compensation (ms)"
-msgstr ""
-
-#: servers/audio_server.cpp
-#, fuzzy
-msgid "Bus Count"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
-#: servers/audio_server.cpp
-msgid "Capture Device"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Global Rate Scale"
-msgstr ""
-
-#: servers/camera/camera_feed.cpp
-msgid "Feed"
-msgstr ""
-
-#: servers/camera/camera_feed.cpp
-msgid "Is Active"
-msgstr ""
-
-#: servers/physics/space_sw.cpp servers/physics_2d/space_2d_sw.cpp
-msgid "Sleep Threshold Linear"
-msgstr ""
-
-#: servers/physics/space_sw.cpp servers/physics_2d/space_2d_sw.cpp
-msgid "Sleep Threshold Angular"
-msgstr ""
-
-#: servers/physics/space_sw.cpp servers/physics_2d/space_2d_sw.cpp
-msgid "Time Before Sleep"
-msgstr ""
-
-#: servers/physics_2d/physics_2d_server_sw.cpp
-msgid "BP Hash Table Size"
-msgstr ""
-
-#: servers/physics_2d/physics_2d_server_sw.cpp
-msgid "Large Object Surface Threshold In Cells"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Inverse Mass"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Inverse Inertia"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Total Angular Damp"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Total Linear Damp"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Total Gravity"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Linear Velocity"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Exclude"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Shape RID"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collide With Bodies"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collide With Areas"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Motion Remainder"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collision Point"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
-msgid "Collision Normal"
-msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collision Depth"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collision Safe Fraction"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collision Unsafe Fraction"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
-msgid "Physics Engine"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதை [interpolation]யை மாறà¯à®±à¯"
-
-#: servers/physics_server.cpp
-msgid "Center Of Mass"
-msgstr ""
-
-#: servers/physics_server.cpp
-msgid "Principal Inertia Axes"
-msgstr ""
-
-#: servers/visual/shader_language.cpp
-msgid "Varying may not be assigned in the '%s' function."
-msgstr ""
-
-#: servers/visual/shader_language.cpp
-msgid ""
-"Varyings which were assigned in 'vertex' function may not be reassigned in "
-"'fragment' or 'light'."
-msgstr ""
-
-#: servers/visual/shader_language.cpp
-msgid ""
-"Varyings which were assigned in 'fragment' function may not be reassigned in "
-"'vertex' or 'light'."
-msgstr ""
-
-#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
-msgstr ""
-
-#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
-msgstr ""
-
-#: servers/visual/shader_language.cpp
-msgid "Constants cannot be modified."
-msgstr ""
-
-#: servers/visual/visual_server_scene.cpp
-msgid "Spatial Partitioning"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Render Loop Enabled"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "VRAM Compression"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Import BPTC"
-msgstr ""
-
-#: servers/visual_server.cpp
-#, fuzzy
-msgid "Import S3TC"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: servers/visual_server.cpp
-msgid "Import ETC"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Import ETC2"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Import PVRTC"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Lossless Compression"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Force PNG"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "WebP Compression Level"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Time Rollover Secs"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Cubemap Size"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Quadrant 0 Subdiv"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Quadrant 1 Subdiv"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Quadrant 2 Subdiv"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Quadrant 3 Subdiv"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Shadows"
-msgstr ""
-
-#: servers/visual_server.cpp
-#, fuzzy
-msgid "Filter Mode"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: servers/visual_server.cpp
-msgid "Texture Array Reflections"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "High Quality GGX"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Irradiance Max Size"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Shading"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Force Vertex Shading"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Force Lambert Over Burley"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Force Blinn Over GGX"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Mesh Storage"
-msgstr ""
-
-#: servers/visual_server.cpp
-#, fuzzy
-msgid "Split Stream"
-msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
-
-#: servers/visual_server.cpp
-msgid "Use Physical Light Attenuation"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Depth Prepass"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Disable For Vendors"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Anisotropic Filter Level"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Nearest Mipmap Filter"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Skinning"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Software Skinning Fallback"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Force Software Skinning"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Software Skinning"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Ninepatch Mode"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "OpenGL"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Batching Send Null"
-msgstr ""
-
-#: servers/visual_server.cpp
-#, fuzzy
-msgid "Batching Stream"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதைகà¯à®•௠மறà¯à®ªà¯†à®¯à®°à¯ இடà¯"
-
-#: servers/visual_server.cpp
-msgid "Legacy Orphan Buffers"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Legacy Stream"
-msgstr ""
-
-#: servers/visual_server.cpp
-#, fuzzy
-msgid "Batching"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதைகà¯à®•௠மறà¯à®ªà¯†à®¯à®°à¯ இடà¯"
-
-#: servers/visual_server.cpp
-msgid "Use Batching"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Batching In Editor"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Single Rect Fallback"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Max Join Item Commands"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Colored Vertex Format Threshold"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Scissor Area Threshold"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Max Join Items"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Batch Buffer Size"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Item Reordering Lookahead"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Flash Batching"
-msgstr ""
-
-#: servers/visual_server.cpp
-#, fuzzy
-msgid "Diagnose Frame"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-
-#: servers/visual_server.cpp
-msgid "GLES2"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Compatibility"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Disable Half Float"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Enable High Float"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Precision"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "UV Contract"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "UV Contract Amount"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Simple PVS"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "PVS Logging"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Signals"
-msgstr ""
-
-#: servers/visual_server.cpp
-#, fuzzy
-msgid "Remove Danglers"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: servers/visual_server.cpp
-msgid "Flip Imported Portals"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Occlusion Culling"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Max Active Spheres"
-msgstr ""
-
-#: servers/visual_server.cpp
-#, fuzzy
-msgid "Max Active Polygons"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
-#: servers/visual_server.cpp
-msgid "Shader Compilation Mode"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Max Simultaneous Compiles"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Log Active Async Compiles Count"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Shader Cache Size (MB)"
-msgstr ""
diff --git a/editor/translations/te.po b/editor/translations/te.po
index a0e44749a5..7e39aed20c 100644
--- a/editor/translations/te.po
+++ b/editor/translations/te.po
@@ -200,9 +200,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr ""
@@ -309,7 +310,7 @@ msgstr "డీకోడింగౠబైటà±à°²à± కోసం తగిన
#: core/math/expression.cpp
#, fuzzy
-msgid "Invalid input %i (not passed) in expression"
+msgid "Invalid input %d (not passed) in expression"
msgstr "à°µà±à°¯à°•à±à°¤à±€à°•రణలో చెలà±à°²à°¨à°¿ ఇనà±à°ªà±à°Ÿà± %i (ఆమోదించబడలేదà±)"
#: core/math/expression.cpp
@@ -353,6 +354,14 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+msgid "Mouse Mode"
+msgstr ""
+
+#: core/os/input.cpp
+msgid "Use Accumulated Input"
+msgstr ""
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -535,7 +544,8 @@ msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr ""
@@ -618,24 +628,23 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-msgid "Plugin Name"
+msgid "Version Control Plugin Name"
msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
@@ -743,7 +752,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
msgid "Filters"
msgstr ""
@@ -1010,6 +1020,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr ""
@@ -1026,7 +1037,7 @@ msgstr ""
msgid "Time:"
msgstr ""
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr ""
@@ -1268,10 +1279,67 @@ msgid "Remove this track."
msgstr ""
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+msgid "Time (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "à°¸à±à°¥à°¿à°°à°¾à°‚కాలà±"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "à°¸à±à°¥à°¿à°°à°¾à°‚కాలà±"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "(Invalid, expected type: %s)"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Stream:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Start (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "గణనలà±"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr ""
@@ -1478,7 +1546,7 @@ msgid "Add Method Track Key"
msgstr ""
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+msgid "Method not found in object:"
msgstr ""
#: editor/animation_track_editor.cpp
@@ -2070,7 +2138,7 @@ msgid "Open"
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
+msgid "Owners of: %s (Total: %d)"
msgstr ""
#: editor/dependency_editor.cpp
@@ -2361,7 +2429,7 @@ msgid "Bus Options"
msgstr ""
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr ""
@@ -2413,8 +2481,8 @@ msgstr ""
msgid "There is no '%s' file."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+msgid "Layout:"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -2617,6 +2685,22 @@ msgid "Choose"
msgstr ""
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed successfully."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed."
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr ""
@@ -2629,6 +2713,26 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp
+msgid "Save PCK"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Cannot create file \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed to export project files."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Can't open file to read from path \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Save ZIP"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2729,8 +2833,25 @@ msgstr ""
msgid "Custom release template not found."
msgstr ""
+#: editor/editor_export.cpp
+msgid "Prepare Template"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "The given export path doesn't exist."
+msgstr ""
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+msgid "Template file not found: \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed to copy export template."
+msgstr ""
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
msgstr ""
#: editor/editor_export.cpp
@@ -2900,9 +3021,9 @@ msgid "Import"
msgstr "దిగà±à°®à°¤à°¿"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr ""
@@ -3978,14 +4099,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4100,6 +4213,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr ""
@@ -4127,6 +4244,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
@@ -4756,11 +4877,13 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+msgid "Page:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
@@ -4852,6 +4975,10 @@ msgid ""
"as runnable."
msgstr ""
+#: editor/editor_run_native.cpp
+msgid "Project Run"
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -5105,7 +5232,9 @@ msgid "Draw Spaces"
msgstr ""
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr ""
@@ -5638,10 +5767,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Sorting Order"
msgstr ""
@@ -6360,14 +6491,6 @@ msgid "Replace in Files"
msgstr ""
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr ""
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr ""
@@ -6493,7 +6616,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
msgid "Filter"
msgstr ""
@@ -6733,7 +6856,7 @@ msgid "Generating Lightmaps"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+msgid "Generating for Mesh:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -6761,6 +6884,18 @@ msgid "Saving..."
msgstr ""
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7534,10 +7669,12 @@ msgstr ""
msgid "Directions"
msgstr ""
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr ""
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr ""
@@ -7692,8 +7829,9 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
-msgstr ""
+#, fuzzy
+msgid "Transition:"
+msgstr "గణనలà±"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Play Mode:"
@@ -7709,11 +7847,6 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr ""
@@ -8594,6 +8727,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr ""
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -8657,6 +8791,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -9396,7 +9534,7 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+msgid "Emission Source:"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
@@ -9626,6 +9764,7 @@ msgid "Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr ""
@@ -9779,13 +9918,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -9794,10 +9926,6 @@ msgstr ""
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -10482,13 +10610,16 @@ msgstr ""
msgid "Translate"
msgstr ""
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
+msgid "Scaling:"
msgstr ""
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "గణనలà±"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -10511,11 +10642,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -10990,7 +11116,7 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+msgid "Convert to MeshInstance2D"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11022,15 +11148,15 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
+msgid "Simplification:"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11949,8 +12075,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr ""
@@ -13366,31 +13491,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr ""
@@ -13523,6 +13627,10 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Project Export"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr ""
@@ -14952,7 +15060,7 @@ msgid "Attach Node Script"
msgstr ""
#: editor/script_editor_debugger.cpp
-msgid "Remote "
+msgid "Remote %s:"
msgstr ""
#: editor/script_editor_debugger.cpp
@@ -15770,7 +15878,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
msgid "Polygon"
msgstr ""
@@ -15935,7 +16043,7 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+msgid "Libraries:"
msgstr ""
#: modules/gdnative/nativescript/nativescript.cpp
@@ -16332,7 +16440,6 @@ msgid "Use In Baked Light"
msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -16358,6 +16465,18 @@ msgstr ""
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "గణనలà±"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+msgid "Navigation Layers"
+msgstr ""
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -16753,7 +16872,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -16761,7 +16880,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17121,7 +17240,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17129,7 +17248,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17282,11 +17401,11 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
+msgid "Invalid argument of type:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
+msgid "Invalid arguments:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
@@ -17298,11 +17417,11 @@ msgid "Var Name"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+msgid "VariableGet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+msgid "VariableSet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
@@ -17793,10 +17912,6 @@ msgid "Could not execute on device."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -17900,12 +18015,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "నోడà±"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -17921,6 +18040,10 @@ msgid "Could not find keystore, unable to export."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Could not start apksigner executable."
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -17949,7 +18072,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -17960,19 +18083,17 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+msgid "Could not export project files to gradle project."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -17985,7 +18106,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -18000,7 +18121,7 @@ msgid ""
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18008,15 +18129,12 @@ msgid "Creating APK..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -18026,7 +18144,7 @@ msgid "Adding files..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18252,6 +18370,15 @@ msgstr ""
msgid "Custom BG Color"
msgstr ""
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+msgid "Prepare Templates"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Export template not found."
+msgstr ""
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18273,19 +18400,28 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Could not open template for export: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+msgid "Invalid export template: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not write file: \"%s\"."
+msgstr ""
+
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "గణనలà±"
+
+#: platform/javascript/export/export.cpp
+msgid "Could not read file: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+msgid "PWA"
msgstr ""
#: platform/javascript/export/export.cpp
@@ -18358,15 +18494,15 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr ""
#: platform/javascript/export/export.cpp
@@ -18633,9 +18769,26 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Could not open icon file \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Could not start xcrun executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "గణనలà±"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -18651,15 +18804,67 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
msgid "No identity found."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Cannot sign file %s."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "గణనలà±"
+
+#: platform/osx/export/export.cpp
+msgid "Could not start hdiutil executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Creating app bundle"
msgstr ""
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Invalid export format."
msgstr ""
#: platform/osx/export/export.cpp
@@ -18670,7 +18875,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -18711,6 +18916,14 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+msgid "ZIP Creation"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr ""
@@ -19007,6 +19220,10 @@ msgid "Debug Algorithm"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Failed to rename temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -19047,6 +19264,63 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "à°¸à±à°¥à°¿à°°à°¾à°‚కాలà±"
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Invalid identity type."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Invalid timestamp server."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Failed to remove temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19065,6 +19339,22 @@ msgid "Invalid product version:"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Failed to open executable file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Windows"
msgstr ""
@@ -19080,6 +19370,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
msgid "Frames"
@@ -19188,7 +19482,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
@@ -19943,13 +20238,15 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
+msgid "Navpoly"
msgstr ""
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Enter Cost"
+msgstr ""
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Travel Cost"
msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
@@ -21008,12 +21305,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -23381,6 +23672,16 @@ msgid "3D Physics"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "గణనలà±"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "గణనలà±"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -24609,7 +24910,7 @@ msgstr ""
msgid "Refraction"
msgstr "గణనలà±"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -24683,10 +24984,15 @@ msgid "Visible Instance Count"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Sample Partition Type"
+msgid "Sampling"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
+msgstr "గణనలà±"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Parsed Geometry Type"
msgstr ""
@@ -24699,7 +25005,11 @@ msgid "Source Group Name"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
+msgid "Agents"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -24711,11 +25021,15 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+msgid "Regions"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -24727,6 +25041,10 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+msgid "Details"
+msgstr ""
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -24743,7 +25061,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -25103,6 +25421,11 @@ msgid "Scenario"
msgstr ""
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "గణనలà±"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -25118,6 +25441,22 @@ msgstr ""
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+msgid "Default Map Up"
+msgstr ""
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+msgid "Default Cell Size"
+msgstr ""
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+msgid "Default Cell Height"
+msgstr ""
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+msgid "Default Edge Connection Margin"
+msgstr ""
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/th.po b/editor/translations/th.po
index 77ad4a61c6..cf482896d4 100644
--- a/editor/translations/th.po
+++ b/editor/translations/th.po
@@ -235,9 +235,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
#, fuzzy
msgid "Network"
msgstr "โปรไฟล์เน็ตเวิร์à¸"
@@ -352,7 +353,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "ไบต์ไม่เพียงพอหรือรูปà¹à¸šà¸šà¹„ม่ถูà¸à¸•้องสำหรับà¸à¸²à¸£à¸–อดรหัสไบต์"
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "อินพุต %i ใน expression ไม่ถูà¸à¸•้อง (ไม่ส่งผ่าน)"
#: core/math/expression.cpp
@@ -398,6 +400,16 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "โหมดเคลื่อนย้าย"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "ลบอินพุต"
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -599,7 +611,8 @@ msgstr "รายละเอียด"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "เริ่ม"
@@ -690,6 +703,11 @@ msgid "Main Run Args"
msgstr "ตัวà¹à¸›à¸£à¸‰à¸²à¸à¸«à¸¥à¸±à¸:"
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "ตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่อยู่ฉาà¸:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -697,19 +715,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "เวอร์ชันคอนโทรล"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "ระบบจัดà¸à¸²à¸£à¸‹à¸­à¸£à¹Œà¸ª (Version Control)"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "ชื่อปลั๊à¸à¸­à¸´à¸™:"
+msgid "Version Control Plugin Name"
+msgstr "เวอร์ชันคอนโทรล"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -829,7 +843,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "ตัวà¸à¸£à¸­à¸‡:"
@@ -1112,6 +1127,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "อิสระ"
@@ -1130,7 +1146,7 @@ msgstr "สะท้อน"
msgid "Time:"
msgstr "เวลา:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "ค่า:"
@@ -1383,10 +1399,75 @@ msgid "Remove this track."
msgstr "ลบà¹à¸—ร็à¸à¸™à¸µà¹‰"
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "เวลา (วินาที): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "ตำà¹à¸«à¸™à¹ˆà¸‡à¹à¸œà¸‡"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "ช่วงองศา:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "อัตราส่วน:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "ประเภท:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "เทมเพลตส่งออà¸à¹„ม่ถูà¸à¸•้อง:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Easing:"
+msgstr "เข้า-ออà¸à¸™à¸¸à¹ˆà¸¡à¸™à¸§à¸¥"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "In-Handle:"
+msgstr "ปรับขนาดรูปร่าง"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Out-Handle:"
+msgstr "ปรับขนาดรูปร่าง"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "ไอเทมเรดิโอ"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "เริ่มใหม่ (วิ):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "End (s):"
+msgstr "เฟดเข้า (วิ):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "à¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "เปิดà¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¸à¸²à¸£à¸•ิดตามà¹à¸—ร็à¸"
@@ -1602,7 +1683,8 @@ msgid "Add Method Track Key"
msgstr "เพิ่มคีย์à¹à¸—ร็à¸à¹€à¸¡à¸˜à¸­à¸”"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "ไม่พบเมธอดในออบเจà¸à¸•์: "
#: editor/animation_track_editor.cpp
@@ -2209,8 +2291,8 @@ msgid "Open"
msgstr "เปิด"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "เจ้าของของ:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
#, fuzzy
@@ -2518,7 +2600,7 @@ msgid "Bus Options"
msgstr "ตัวเลือภBus"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "ทำซ้ำ"
@@ -2570,8 +2652,9 @@ msgstr "เปิดเลย์เอาต์ของบัสเสียง
msgid "There is no '%s' file."
msgstr "ไม่มีไฟล์ '%s'"
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "เลย์เอาต์"
#: editor/editor_audio_buses.cpp
@@ -2777,6 +2860,25 @@ msgid "Choose"
msgstr "เลือà¸"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "คัดลอà¸à¸•ำà¹à¸«à¸™à¹ˆà¸‡à¹‚หนด"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "ติดตั้งà¹à¸žà¸„เà¸à¸ˆà¹€à¸ªà¸£à¹‡à¸ˆà¸ªà¸¡à¸šà¸¹à¸£à¸“์!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "ผิดพลาด:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "เà¸à¹‡à¸šà¹„ฟล์:"
@@ -2789,6 +2891,31 @@ msgid "Packing"
msgstr "à¸à¸³à¸¥à¸±à¸‡à¸£à¸§à¸šà¸£à¸§à¸¡"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "บันทึà¸à¹€à¸›à¹‡à¸™"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "ไม่สามารถสร้างโฟลเดอร์"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "เขียนไฟล์ไม่ได้:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "เปิดไฟล์เพื่อเขียนไม่ได้:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "บันทึà¸à¹€à¸›à¹‡à¸™"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2904,11 +3031,33 @@ msgstr "ไม่พบเทมเพลตà¸à¸²à¸£à¸”ีบัà¸à¹à¸šà¸šà¸
msgid "Custom release template not found."
msgstr "ไม่พบเทมเพลตà¸à¸²à¸£à¹€à¸œà¸¢à¹à¸žà¸£à¹ˆà¸—ี่à¸à¸³à¸«à¸™à¸”เอง"
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "จัดà¸à¸²à¸£à¹€à¸—มเพลต"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "ไม่พบที่อยู่ส่งออà¸:"
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "ไม่พบไฟล์เทมเพลต:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "เทมเพลตส่งออà¸à¹„ม่ถูà¸à¸•้อง:"
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+#, fuzzy
+msgid "PCK Embedding"
+msgstr "à¸à¸²à¸£à¹€à¸§à¹‰à¸™à¸Šà¹ˆà¸­à¸‡"
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr "à¸à¸²à¸£à¸ªà¹ˆà¸‡à¸­à¸­à¸à¹à¸šà¸š 32 bit PCK à¹à¸šà¸šà¸à¸±à¸‡à¸•ัวไม่สามารถใหà¸à¹ˆà¹„ด้เà¸à¸´à¸™ 4 GiB"
@@ -3084,9 +3233,9 @@ msgid "Import"
msgstr "นำเข้า"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "ส่งออà¸"
@@ -4228,15 +4377,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "ฉาà¸"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "ตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่อยู่ฉาà¸:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4365,6 +4505,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "เวอร์ชันคอนโทรล"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "เปลี่ยนชื่อ"
@@ -4393,6 +4537,10 @@ msgstr "โหมดไร้สิ่งรบà¸à¸§à¸™"
msgid "Add a new scene."
msgstr "เพิ่มฉาà¸à¹ƒà¸«à¸¡à¹ˆ"
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "ฉาà¸"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "ไปยังฉาà¸à¸—ี่เพิ่งเปิด"
@@ -5068,11 +5216,15 @@ msgid "Selected node is not a Viewport!"
msgstr "โหนดที่เลือà¸à¹„ม่ใช่วิวพอร์ต!"
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#, fuzzy
+msgid "Size:"
msgstr "ขนาด: "
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+#, fuzzy
+msgid "Page:"
msgstr "หน้า: "
#: editor/editor_properties_array_dict.cpp
@@ -5171,6 +5323,11 @@ msgstr ""
"ไม่มีพรีเซ็ตส่งออà¸à¸—ี่สามารถรันเà¸à¸¡à¹„ด้ของà¹à¸žà¸¥à¸•ฟอร์มนี้\n"
"à¸à¸£à¸¸à¸“าเพิ่มพรีเซ็ตส่งออà¸à¸—ี่รันเà¸à¸¡à¹„ด้ในเมนูส่งออà¸à¸«à¸£à¸·à¸­à¸—ำให้พรีเซ็ตเดิมสามารถรันได้"
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "โปรเจà¸à¸•์"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "เขียนโปรà¹à¸à¸£à¸¡à¹ƒà¸™à¹€à¸¡à¸—็อด _run()"
@@ -5454,7 +5611,9 @@ msgid "Draw Spaces"
msgstr "จำนวนครั้งในà¸à¸²à¸£à¸§à¸²à¸”"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr "ตัวนำทาง"
@@ -6052,10 +6211,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "ตัวจัดà¸à¸²à¸£à¹‚ปรเจà¸à¸•์"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -6837,14 +6998,6 @@ msgid "Replace in Files"
msgstr "à¹à¸—นที่ทั้งหมด"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "ค้นหา: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "à¹à¸—นที่: "
-
-#: editor/find_in_files.cpp
#, fuzzy
msgid "Replace All (NO UNDO)"
msgstr "à¹à¸—นที่ทั้งหมด"
@@ -6974,7 +7127,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "ตัวà¸à¸£à¸­à¸‡:"
@@ -7242,7 +7395,8 @@ msgid "Generating Lightmaps"
msgstr "à¸à¸³à¸¥à¸±à¸‡à¸ªà¸£à¹‰à¸²à¸‡ Lightmaps"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+#, fuzzy
+msgid "Generating for Mesh:"
msgstr "สร้างสำหรับพื้นผิว: "
#: editor/import/resource_importer_scene.cpp
@@ -7270,6 +7424,18 @@ msgid "Saving..."
msgstr "à¸à¸³à¸¥à¸±à¸‡à¸šà¸±à¸™à¸—ึà¸..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -8077,10 +8243,12 @@ msgstr "ตั้งค่าโอเนี่ยนสà¸à¸´à¸™"
msgid "Directions"
msgstr "ทิศทาง"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "อดีต"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "อนาคต"
@@ -8238,7 +8406,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr "ตั้งตอนจบของทรานสิชัน นี่จะมีประโยชน์สำหรับทรานสิชันย่อย"
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
+#, fuzzy
+msgid "Transition:"
msgstr "ทรานสิชัน: "
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8255,11 +8424,6 @@ msgid "New name:"
msgstr "ชื่อใหม่:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "อัตราส่วน:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "เฟดเข้า (วิ):"
@@ -9166,6 +9330,7 @@ msgstr "สร้างโครงจาà¸à¹‚หนด"
msgid "Clear Custom Bones"
msgstr "ลบโครง"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9232,6 +9397,10 @@ msgid "Preview Canvas Scale"
msgstr "ดูตัวอย่างขนาดà¹à¸„นวาส"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "เลย์เอาต์"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr "à¸à¸²à¸£à¹à¸›à¸¥à¸‡ mask สำหรับà¸à¸²à¸£à¹ƒà¸ªà¹ˆà¸„ีย์"
@@ -10007,7 +10176,8 @@ msgid "Volume"
msgstr "ระดับเสียง"
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+#, fuzzy
+msgid "Emission Source:"
msgstr "à¹à¸«à¸¥à¹ˆà¸‡à¸›à¸°à¸—ุ: "
#: editor/plugins/particles_editor_plugin.cpp
@@ -10239,6 +10409,7 @@ msgid "Points"
msgstr "จุด"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr "โพลีà¸à¸­à¸™"
@@ -10394,13 +10565,6 @@ msgid "Instance:"
msgstr "อินสà¹à¸•นซ์:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "ประเภท:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr "เปิดในโปรà¹à¸à¸£à¸¡à¹à¸à¹‰à¹„ข"
@@ -10409,10 +10573,6 @@ msgstr "เปิดในโปรà¹à¸à¸£à¸¡à¹à¸à¹‰à¹„ข"
msgid "Load Resource"
msgstr "โหลดรีซอร์ส"
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr "ตัวโหลดรีซอร์สล่วงหน้า"
-
#: editor/plugins/room_manager_editor_plugin.cpp
#, fuzzy
msgid "Flip Portals"
@@ -11134,12 +11294,16 @@ msgstr "รัà¸"
msgid "Translate"
msgstr "เคลื่อนย้าย:"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
+#, fuzzy
+msgid "Scaling:"
msgstr "อัตราส่วน: "
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
+#, fuzzy
+msgid "Translating:"
msgstr "à¸à¸²à¸£à¹€à¸¥à¸·à¹ˆà¸­à¸™: "
#: editor/plugins/spatial_editor_plugin.cpp
@@ -11164,12 +11328,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
-msgid "Size:"
-msgstr "ขนาด: "
-
-#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
msgid "Objects Drawn:"
msgstr "ออบเจà¸à¸•์ที่วาด"
@@ -11667,7 +11825,8 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr "เรขาคณิตผิดพลาด ไม่สามารถà¹à¸—นที่ด้วย mesh"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+#, fuzzy
+msgid "Convert to MeshInstance2D"
msgstr "à¹à¸›à¸¥à¸‡à¹€à¸›à¹‡à¸™ Mesh2D"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11699,15 +11858,18 @@ msgid "Sprite"
msgstr "สไปรต์"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
+#, fuzzy
+msgid "Simplification:"
msgstr "ลดความซับซ้อน: "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+#, fuzzy
+msgid "Shrink (Pixels):"
msgstr "หด (พิà¸à¹€à¸‹à¸¥): "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+#, fuzzy
+msgid "Grow (Pixels):"
msgstr "ขยาย (พิà¸à¹€à¸‹à¸¥): "
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12717,8 +12879,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr "เลือà¸à¸£à¸¹à¸›à¸£à¹ˆà¸²à¸‡, ไทล์ย่อยหรือไทล์à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²"
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr "ขอบเขต"
@@ -14230,35 +14391,10 @@ msgid "Delete preset '%s'?"
msgstr "ลบพรีเซ็ต '%s'?"
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-"ล้มเหลวในà¸à¸²à¸£à¸ªà¹ˆà¸‡à¸­à¸­à¸à¹‚ปรเจà¸à¸•์สำหรับà¹à¸žà¸¥à¸•ฟอร์ม '%s'\n"
-"เทมเพลตส่งออà¸à¸ªà¸¹à¸à¸«à¸²à¸¢à¸«à¸£à¸·à¸­à¸œà¸´à¸”พลาด"
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-"เà¸à¸´à¸”ข้อผิดพลาดในà¸à¸²à¸£à¸ªà¹ˆà¸‡à¸­à¸­à¸à¹‚ปรเจà¸à¸•์ไปยังà¹à¸žà¸¥à¸•ฟอร์ม '%s'\n"
-"ปัà¸à¸«à¸²à¸­à¸²à¸ˆà¹€à¸à¸´à¸”จาà¸à¸„่าที่ตั้งในพรีเซ็ตà¸à¸²à¸£à¸ªà¹ˆà¸‡à¸­à¸­à¸à¸«à¸£à¸·à¸­à¸à¸²à¸£à¸•ั้งค่าà¸à¸²à¸£à¸ªà¹ˆà¸‡à¸­à¸­à¸"
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "ส่งออà¸à¸—ั้งหมด"
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr "ไม่พบที่อยู่ส่งออà¸:"
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr "เทมเพลตส่งออà¸à¸ªà¸³à¸«à¸£à¸±à¸šà¹à¸žà¸¥à¸•ฟอร์มนี้สูà¸à¸«à¸²à¸¢/เสียหาย:"
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr "ไดเรà¸à¸—อรีส่งออà¸"
@@ -14406,6 +14542,11 @@ msgid "Export templates for this platform are missing:"
msgstr "ไม่พบเทมเพลตส่งออà¸à¸ªà¸³à¸«à¸£à¸±à¸šà¹à¸žà¸¥à¸•ฟอร์มนี้:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "ผู้ริเริ่มโครงà¸à¸²à¸£"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "จัดà¸à¸²à¸£à¹€à¸—มเพลตส่งออà¸"
@@ -15916,7 +16057,8 @@ msgid "Attach Node Script"
msgstr "เชื่อมสคริปต์ให้โหนด"
#: editor/script_editor_debugger.cpp
-msgid "Remote "
+#, fuzzy
+msgid "Remote %s:"
msgstr "ควบคุม "
#: editor/script_editor_debugger.cpp
@@ -16801,7 +16943,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "โพลีà¸à¸­à¸™"
@@ -16979,7 +17121,8 @@ msgid "Disabled GDNative Singleton"
msgstr "ปิดà¸à¸²à¸£à¸—ำงานซิงเà¸à¸´à¸¥à¸•ัน GDNative"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+#, fuzzy
+msgid "Libraries:"
msgstr "ไลบรารี: "
#: modules/gdnative/nativescript/nativescript.cpp
@@ -17425,7 +17568,6 @@ msgid "Use In Baked Light"
msgstr "สร้าง Lightmaps"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17455,6 +17597,19 @@ msgstr "à¸à¸¥à¸²à¸‡"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "ตัวนำทาง"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "โหมด Navigation"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "ระนาบถัดไป"
@@ -17867,7 +18022,8 @@ msgid ""
msgstr "ค่าที่คืนจะต้องà¸à¸³à¸«à¸™à¸”ในหน่วยความจำทำงานà¹à¸£à¸! à¸à¸£à¸¸à¸“าà¹à¸à¹‰à¹„ขโหนด"
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+#, fuzzy
+msgid "Node returned an invalid sequence output:"
msgstr "โหนดคืนค่าผิดลำดับ: "
#: modules/visual_script/visual_script.cpp
@@ -17875,7 +18031,8 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr "พบบิตลำดับà¹à¸•่ไม่พบโหนดในสà¹à¸•ค à¸à¸£à¸¸à¸“ารายงานข้อผิดพลาด!"
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+#, fuzzy
+msgid "Stack overflow with stack depth:"
msgstr "สà¹à¸•คล้น ความสูงสà¹à¸•ค: "
#: modules/visual_script/visual_script.cpp
@@ -18245,7 +18402,8 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+#, fuzzy
+msgid "Input type not iterable:"
msgstr "ตัวà¹à¸›à¸£à¸›à¸£à¸°à¹€à¸ à¸—นี้ใช้วนซ้ำไม่ได้: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18253,7 +18411,8 @@ msgid "Iterator became invalid"
msgstr "ตัววนซ้ำใช้ไม่ได้อีà¸à¸•่อไป"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+#, fuzzy
+msgid "Iterator became invalid:"
msgstr "ตัววนซ้ำใช้ไม่ได้: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18427,11 +18586,13 @@ msgid "Operator"
msgstr "ดำเนินà¸à¸²à¸£ Overlay"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
+#, fuzzy
+msgid "Invalid argument of type:"
msgstr ": ประเภทตัวà¹à¸›à¸£à¹„ม่ถูà¸à¸•้อง: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
+#, fuzzy
+msgid "Invalid arguments:"
msgstr ": ตัวà¹à¸›à¸£à¹„ม่ถูà¸à¸•้อง: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18444,11 +18605,13 @@ msgid "Var Name"
msgstr "ชื่อ"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+#, fuzzy
+msgid "VariableGet not found in script:"
msgstr "ไม่พบ VariableGet ในสคริปต์: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+#, fuzzy
+msgid "VariableSet not found in script:"
msgstr "ไม่พบ VariableSet ในสคริปต์: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -19002,10 +19165,6 @@ msgid "Could not execute on device."
msgstr "ไม่สามารถสร้างโฟลเดอร์"
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr "ไม่สามารถหาเครื่องมือ 'apksigner'"
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -19113,12 +19272,16 @@ msgstr "\"Export AAB\" จะใช้ได้เฉพาะเมื่อเ
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "สัà¸à¸à¸²à¸“"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19136,6 +19299,11 @@ msgid "Could not find keystore, unable to export."
msgstr "เปิดเทมเพลตเพื่อส่งออà¸à¹„ม่ได้:"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "ไม่สามารถเริ่มขั้นตอนย่อย!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -19166,7 +19334,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "ชื่อไฟล์ผิดพลาด! à¹à¸­à¸™à¸”รอยด์ APK จำเป็นต้องมีนามสà¸à¸¸à¸¥ *.apk"
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19177,10 +19345,9 @@ msgstr ""
"พยายามสร้างจาà¸à¹€à¸—มเพลตที่สร้างขึ้นเอง à¹à¸•่ไม่มีข้อมูลเวอร์ชัน โปรดติดตั้งใหม่จาà¸à¹€à¸¡à¸™à¸¹ \"โปรเจà¸à¸•์\""
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
"เวอร์ชันบิวด์ Android ไม่ตรงà¸à¸±à¸™:\n"
@@ -19190,11 +19357,12 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+#, fuzzy
+msgid "Could not export project files to gradle project."
msgstr "ไม่สามารถส่งออà¸à¹„ฟล์โปรเจคไปยังโปรเจค gradle ได้\n"
#: platform/android/export/export_plugin.cpp
@@ -19207,8 +19375,9 @@ msgid "Building Android Project (gradle)"
msgstr "à¸à¸³à¸¥à¸±à¸‡à¸ªà¸£à¹‰à¸²à¸‡à¹‚ปรเจคà¹à¸­à¸™à¸”รอยด์ (gradle)"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
"à¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡à¹‚ปรเจà¸à¸•์à¹à¸­à¸™à¸”รอยด์ล้มเหลว ตรวจสอบผลลัพธ์เพื่อหาข้อผิดพลาด\n"
@@ -19227,7 +19396,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr "ไม่พบà¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™: '%s'"
#: platform/android/export/export_plugin.cpp
@@ -19236,17 +19405,15 @@ msgid "Creating APK..."
msgstr "à¸à¸³à¸¥à¸±à¸‡à¸ªà¸£à¹‰à¸²à¸‡à¸„อนทัวร์..."
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+#, fuzzy
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
"ไม่พบเทมเพลต APK สำหรับà¸à¸²à¸£à¸ªà¹ˆà¸‡à¸­à¸­à¸:\n"
"%s"
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -19258,7 +19425,7 @@ msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸žà¸´à¹ˆà¸¡ %s..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr "เขียนไฟล์ไม่ได้:"
#: platform/android/export/export_plugin.cpp
@@ -19500,6 +19667,17 @@ msgstr "ตัดโหนด"
msgid "Custom BG Color"
msgstr "ตัดโหนด"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "จัดà¸à¸²à¸£à¹€à¸—มเพลต"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "ไม่พบเทมเพลตà¸à¸²à¸£à¹€à¸œà¸¢à¹à¸žà¸£à¹ˆà¸—ี่à¸à¸³à¸«à¸™à¸”เอง"
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr "App Store Team ID ยังไม่ได้ระบุ - ไม่สามารถà¸à¸³à¸«à¸™à¸”ค่าให้โปรเจà¸à¸•์ได้"
@@ -19521,23 +19699,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr "รันไฟล์ HTML ที่ส่งออà¸à¹ƒà¸™à¹€à¸šà¸£à¸²à¹€à¸‹à¸­à¸£à¹Œ"
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
msgstr "เปิดเทมเพลตเพื่อส่งออà¸à¹„ม่ได้:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
msgstr "เทมเพลตส่งออà¸à¹„ม่ถูà¸à¸•้อง:"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+#, fuzzy
+msgid "Could not write file: \"%s\"."
msgstr "เขียนไฟล์ไม่ได้:"
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "ตั้งระยะขอบ"
+
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read file:"
+msgid "Could not read file: \"%s\"."
msgstr "เขียนไฟล์ไม่ได้:"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "เว้น:"
@@ -19613,17 +19803,17 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr "ไม่สามารถอ่านโครงสร้าง HTML:"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr "ไม่สามารถสร้างโฟลเดอร์"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr "ผิดพลาดขณะบันทึà¸à¸‰à¸²à¸"
#: platform/javascript/export/export.cpp
@@ -19923,9 +20113,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "เขียนไฟล์ไม่ได้:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "ไม่สามารถเริ่มขั้นตอนย่อย!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "à¸à¸²à¸£à¹à¸›à¸¥"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19941,23 +20150,78 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "ไม่พบ!"
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "ผิดพลาดขณะบันทึà¸à¹„ฟล์: %s"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "ทิศทาง"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "ไม่สามารถเริ่มขั้นตอนย่อย!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "à¸à¸³à¸¥à¸±à¸‡à¸ªà¸£à¹‰à¸²à¸‡à¸£à¸¹à¸›à¸•ัวอย่าง"
#: platform/osx/export/export.cpp
#, fuzzy
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr ""
"ไม่พบเทมเพลต APK สำหรับà¸à¸²à¸£à¸ªà¹ˆà¸‡à¸­à¸­à¸:\n"
"%s"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "เทมเพลตส่งออà¸à¹„ม่ถูà¸à¸•้อง:"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -19965,7 +20229,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -20007,6 +20271,16 @@ msgstr ""
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "ZIP Creation"
+msgstr "โปรเจà¸à¸•์"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr "ไม่สามารถส่งออà¸à¹„ฟล์โปรเจคไปยังโปรเจค gradle ได้\n"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Invalid bundle identifier:"
msgstr "ระบุไม่ถูà¸à¸•้อง:"
@@ -20319,6 +20593,11 @@ msgid "Debug Algorithm"
msgstr "ตัวดีบัà¸"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "ไม่สามารถลบไฟล์ชั่วคราวได้:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20366,6 +20645,70 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "สุ่มà¸à¸²à¸£à¸«à¸¡à¸¸à¸™:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "เปิดเทมเพลตเพื่อส่งออà¸à¹„ม่ได้:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "เปิดเทมเพลตเพื่อส่งออà¸à¹„ม่ได้:"
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "เปิดเทมเพลตเพื่อส่งออà¸à¹„ม่ได้:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "เปิดเทมเพลตเพื่อส่งออà¸à¹„ม่ได้:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "ระบุไม่ถูà¸à¸•้อง:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "ชื่อผิดพลาด"
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "ไม่สามารถลบไฟล์ชั่วคราวได้:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20387,6 +20730,23 @@ msgid "Invalid product version:"
msgstr "GUID ของโปรà¹à¸à¸£à¸¡à¹„ม่ถูà¸à¸•้อง"
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "นามสà¸à¸¸à¸¥à¹„ม่ถูà¸à¸•้อง"
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "หน้าต่างใหม่"
@@ -20403,6 +20763,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20530,7 +20894,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "ระยะà¸à¸²à¸£à¹€à¸¥à¸·à¸­à¸:"
@@ -21389,17 +21754,19 @@ msgstr ""
"ต้องมี NavigationPolygon เพื่อให้โหนดนี้ทำงานได้ à¸à¸£à¸¸à¸“าà¹à¸à¹‰à¹„ขคุณสมบัติหรือวาดรูปหลายเหลี่ยม"
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-"NavigationPolygonInstance ต้องเป็นโหนดลูà¸/หลานของโหนด Navigation2D "
-"โดยจะให้ข้อมูลà¸à¸²à¸£à¸™à¸³à¸—างเท่านั้น"
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr ""
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "ล่าง"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "à¸à¸²à¸£à¹€à¸„ลื่อนที่"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
#, fuzzy
@@ -22610,14 +22977,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-"NavigationMeshInstance ต้องเป็นโหนดลูà¸/หลานของโหนด Navigation "
-"โดยจะให้ข้อมูลà¸à¸²à¸£à¸™à¸³à¸—างเท่านั้น"
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
#, fuzzy
msgid "NavMesh"
@@ -25321,6 +25680,16 @@ msgid "3D Physics"
msgstr "% ของเฟรมฟิสิà¸à¸ªà¹Œ"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "ตัวนำทาง"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "ตัวนำทาง"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -26748,7 +27117,7 @@ msgstr "ทรานสิชัน: "
msgid "Refraction"
msgstr "เว้น:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -26833,7 +27202,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "อัตราส่วน: "
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "à¹à¸à¹‰à¹„ขประเภทตัวà¹à¸›à¸£"
#: scene/resources/navigation_mesh.cpp
@@ -26851,10 +27225,15 @@ msgid "Source Group Name"
msgstr "ต้นฉบับ"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "ตัวà¹à¸›à¸£à¸‰à¸²à¸à¸«à¸¥à¸±à¸:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -26864,11 +27243,16 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Regions"
+msgstr "ขอบเขต"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Merge Size"
msgstr "รวมจาà¸à¸‰à¸²à¸"
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26882,6 +27266,11 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Details"
+msgstr "โหลดค่าเริ่มต้น"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Sample Distance"
msgstr "ระยะà¸à¸²à¸£à¹€à¸¥à¸·à¸­à¸:"
@@ -26899,7 +27288,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -27314,6 +27703,11 @@ msgid "Scenario"
msgstr "ฉาà¸"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "ตัวนำทาง"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -27331,6 +27725,26 @@ msgstr "เส้นตรงซ้าย"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "ค่าเริ่มต้น"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "อัพเดทà¸à¸²à¸£à¸”ูตัวอย่าง"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸—ดสอบ"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "à¹à¸à¹‰à¹„ขà¸à¸²à¸£à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¸•่อ:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/tl.po b/editor/translations/tl.po
index 1cb649395d..963d542e6d 100644
--- a/editor/translations/tl.po
+++ b/editor/translations/tl.po
@@ -215,9 +215,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr ""
@@ -329,7 +330,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Kulang na bytes para sa decoding bytes, o di-wastong format."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "Di-wastong input %i (di naipasa) sa ekspresyon"
#: core/math/expression.cpp
@@ -375,6 +377,16 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Gumalaw"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "Alisin ang Input"
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -573,7 +585,8 @@ msgstr "Paglalarawan"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "Patakbuhin"
@@ -659,6 +672,11 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Kinalalagyan ng Eksena:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -666,19 +684,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Pagmamahala ng Bersyon"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Pagmamahala ng Bersyon"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Pangalan ng Plugin:"
+msgid "Version Control Plugin Name"
+msgstr "Pagmamahala ng Bersyon"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -792,7 +806,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "Salain ang mga node"
@@ -1068,6 +1083,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Walang Bayad"
@@ -1084,7 +1100,7 @@ msgstr "Salamin"
msgid "Time:"
msgstr "Oras:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Halaga:"
@@ -1333,10 +1349,71 @@ msgid "Remove this track."
msgstr "Tanggalin ang track na ito."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "Oras (s): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Idaong Ang Posisyon"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Mag-ikot"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "Sukat:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "Uri:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Di-wastong index ng uring %s para sa batayang uri %s"
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Stream:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "(Mga) Muling Pagumpisa:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "End (s):"
+msgstr "(Mga) Palabong Pagpasok:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Mga Kabahagi ng Anim:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "Pinapagana ang Pagpalit ng Track"
@@ -1552,7 +1629,8 @@ msgid "Add Method Track Key"
msgstr "Magdagdag ng Method Track Key"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "Hindi mahanap ang Method sa object: "
#: editor/animation_track_editor.cpp
@@ -2164,8 +2242,8 @@ msgid "Open"
msgstr "Buksan"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Mga May-ari ng:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
msgid ""
@@ -2463,7 +2541,7 @@ msgid "Bus Options"
msgstr "Kaayusan ng Bus"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "I-duplicate"
@@ -2515,8 +2593,9 @@ msgstr ""
msgid "There is no '%s' file."
msgstr "Walang file na '%s'."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "Kaayusan"
#: editor/editor_audio_buses.cpp
@@ -2721,6 +2800,23 @@ msgid "Choose"
msgstr "Pumili"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed successfully."
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "Nabigo:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Inimpok ang File:"
@@ -2733,6 +2829,31 @@ msgid "Packing"
msgstr "Iniimpake"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "I-save Bilang"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "Nabigong lumikha ng folder."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Hindi mai-luwas ang mga project file"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Hindi mabuksan ang file para sa pagsusulat:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "I-save Bilang"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2836,11 +2957,29 @@ msgstr ""
msgid "Custom release template not found."
msgstr ""
+#: editor/editor_export.cpp
+msgid "Prepare Template"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "The given export path doesn't exist."
+msgstr ""
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "Di-mahanap ang template file:"
#: editor/editor_export.cpp
+msgid "Failed to copy export template."
+msgstr ""
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr ""
@@ -3010,9 +3149,9 @@ msgid "Import"
msgstr "Umangkat"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Magluwas"
@@ -4116,15 +4255,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Eksena"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Kinalalagyan ng Eksena:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4248,6 +4378,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Pagmamahala ng Bersyon"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "Inibang Pangalan"
@@ -4276,6 +4410,10 @@ msgstr ""
msgid "Add a new scene."
msgstr "Magdagdag ng panibagong eksena."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Eksena"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Bumalik sa dating binuksang eksena."
@@ -4908,11 +5046,14 @@ msgid "Selected node is not a Viewport!"
msgstr "Ang piniling node ay hindi Viewport!"
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr "Laki: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
+msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+#, fuzzy
+msgid "Page:"
msgstr "Pahina: "
#: editor/editor_properties_array_dict.cpp
@@ -5008,6 +5149,11 @@ msgid ""
"as runnable."
msgstr ""
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Proyekto"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -5279,7 +5425,9 @@ msgid "Draw Spaces"
msgstr ""
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr "Nabigasyon"
@@ -5857,10 +6005,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -6596,14 +6746,6 @@ msgid "Replace in Files"
msgstr "Palitan Lahat"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr ""
-
-#: editor/find_in_files.cpp
#, fuzzy
msgid "Replace All (NO UNDO)"
msgstr "Palitan Lahat"
@@ -6733,7 +6875,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Salain ang mga node"
@@ -6996,8 +7138,9 @@ msgid "Generating Lightmaps"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
-msgstr ""
+#, fuzzy
+msgid "Generating for Mesh:"
+msgstr "Pinapalitan ang pangalan ng folder:"
#: editor/import/resource_importer_scene.cpp
msgid "Running Custom Script..."
@@ -7024,6 +7167,18 @@ msgid "Saving..."
msgstr "Nililigtas..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7816,10 +7971,12 @@ msgstr ""
msgid "Directions"
msgstr "Mga Direksyon"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "Nakaraan"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "Hinaharap"
@@ -7978,7 +8135,8 @@ msgstr ""
"Itakda ang hulihan ng animasyon. Magagamit to para sa mga sub-transisyon."
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
+#, fuzzy
+msgid "Transition:"
msgstr "Transisyon: "
#: editor/plugins/animation_state_machine_editor.cpp
@@ -7995,11 +8153,6 @@ msgid "New name:"
msgstr "Bagong pangalan:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "Sukat:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "(Mga) Palabong Pagpasok:"
@@ -8896,6 +9049,7 @@ msgstr "Lumikha ng (Mga) Pasadyang Buto Galing sa (Mga) Node"
msgid "Clear Custom Bones"
msgstr "Alisin Ang Mga Pasadyang Buto"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -8960,6 +9114,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "Kaayusan"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -9703,8 +9861,9 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr ""
+#, fuzzy
+msgid "Emission Source:"
+msgstr "Nakikitang Collision Shapes"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
@@ -9933,6 +10092,7 @@ msgid "Points"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr ""
@@ -10086,13 +10246,6 @@ msgid "Instance:"
msgstr "Instance:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "Uri:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr "Buksan sa Editor"
@@ -10101,10 +10254,6 @@ msgstr "Buksan sa Editor"
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -10794,13 +10943,17 @@ msgstr ""
msgid "Translate"
msgstr ""
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr ""
+#, fuzzy
+msgid "Scaling:"
+msgstr "Sukat:"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "Transisyon: "
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -10823,11 +10976,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11303,8 +11451,9 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
-msgstr ""
+#, fuzzy
+msgid "Convert to MeshInstance2D"
+msgstr "Gawing %s"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Invalid geometry, can't create polygon."
@@ -11335,15 +11484,18 @@ msgid "Sprite"
msgstr "Sprite"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "Animasyon"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+#, fuzzy
+msgid "Shrink (Pixels):"
msgstr "Palitiin (Pa-pixel): "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+#, fuzzy
+msgid "Grow (Pixels):"
msgstr "Palakihin (pa-Pixel): "
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12280,8 +12432,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr "Saklaw"
@@ -13729,31 +13880,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr ""
@@ -13892,6 +14022,11 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Mga Tagapagtatag ng Proyekto"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr ""
@@ -15337,8 +15472,9 @@ msgid "Attach Node Script"
msgstr ""
#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr ""
+#, fuzzy
+msgid "Remote %s:"
+msgstr "Alisin"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -16184,7 +16320,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "Bagong Polygon"
@@ -16358,7 +16494,8 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+#, fuzzy
+msgid "Libraries:"
msgstr "Mga Sanggunianan: "
#: modules/gdnative/nativescript/nativescript.cpp
@@ -16788,7 +16925,6 @@ msgid "Use In Baked Light"
msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -16818,6 +16954,19 @@ msgstr "Gitna"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Nabigasyon"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Nabigasyon"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -17223,7 +17372,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17231,7 +17380,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17594,7 +17743,8 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+#, fuzzy
+msgid "Input type not iterable:"
msgstr "Hindi iterable ang uri ng input: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17602,8 +17752,9 @@ msgid "Iterator became invalid"
msgstr "Naging invalid ang Iterator"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
-msgstr ""
+#, fuzzy
+msgid "Iterator became invalid:"
+msgstr "Naging invalid ang Iterator"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Sequence"
@@ -17768,12 +17919,14 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
+#, fuzzy
+msgid "Invalid argument of type:"
+msgstr "Di-wastong mga argument para i-construct ang '%s'"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
+#, fuzzy
+msgid "Invalid arguments:"
+msgstr "Di-wastong pangalan."
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -17785,12 +17938,14 @@ msgid "Var Name"
msgstr "Pangalan"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableGet not found in script:"
+msgstr "Hindi mahanap ang Method sa object: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
-msgstr ""
+#, fuzzy
+msgid "VariableSet not found in script:"
+msgstr "Hindi mahanap ang Method sa object: "
#: modules/visual_script/visual_script_nodes.cpp
msgid "Preload"
@@ -18321,10 +18476,6 @@ msgid "Could not execute on device."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18428,12 +18579,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Hudyat"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18449,6 +18604,11 @@ msgid "Could not find keystore, unable to export."
msgstr ""
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "Hindi maumpisa ang subprocess!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr "nagbalik ng may pagkakabigong #%d ang 'apksigner'"
@@ -18479,7 +18639,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18490,20 +18650,19 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
-msgstr ""
+#, fuzzy
+msgid "Could not export project files to gradle project."
+msgstr "Hindi mai-luwas ang mga project file"
#: platform/android/export/export_plugin.cpp
msgid "Could not write expansion package file!"
@@ -18515,7 +18674,7 @@ msgstr "Binibuild ang Android Project (gradle)"
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -18530,25 +18689,24 @@ msgid ""
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
-msgstr ""
+#, fuzzy
+msgid "Package not found: \"%s\"."
+msgstr "Di-mahanap ang animation: '%s'"
#: platform/android/export/export_plugin.cpp
msgid "Creating APK..."
msgstr "Nililikha ang APK..."
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+#, fuzzy
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
"Walang mahanap na template APK upang iluwas:\n"
"%s"
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -18558,7 +18716,8 @@ msgid "Adding files..."
msgstr "Dinadagdag ang mga file..."
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+#, fuzzy
+msgid "Could not export project files."
msgstr "Hindi mai-luwas ang mga project file"
#: platform/android/export/export_plugin.cpp
@@ -18798,6 +18957,17 @@ msgstr "Kopyahin ang mga Node"
msgid "Custom BG Color"
msgstr "Kopyahin ang mga Node"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "Pangasiwaan ang mga Export Template..."
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Di-mahanap ang template file:"
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18819,19 +18989,34 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
msgstr ""
+"Walang mahanap na template APK upang iluwas:\n"
+"%s"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
-msgstr ""
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
+msgstr "Di-wastong index ng uring %s para sa batayang uri %s"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr ""
+#, fuzzy
+msgid "Could not write file: \"%s\"."
+msgstr "Nabigong lumikha ng folder."
+
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Laman:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read file: \"%s\"."
+msgstr "Nabigong lumikha ng folder."
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+msgid "PWA"
msgstr ""
#: platform/javascript/export/export.cpp
@@ -18909,16 +19094,18 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
-msgstr ""
+#, fuzzy
+msgid "Could not create HTTP server directory: %s."
+msgstr "Nabigong lumikha ng folder."
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
-msgstr ""
+#, fuzzy
+msgid "Error starting HTTP server: %d."
+msgstr "Nabigong ang pagsave ang file: %s"
#: platform/javascript/export/export.cpp
msgid "Web"
@@ -19207,9 +19394,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Hindi mai-luwas ang mga project file"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "Hindi maumpisa ang subprocess!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Nabigasyon"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19225,17 +19431,75 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
msgid "No identity found."
msgstr ""
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Nabigong ang pagsave ang file: %s"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Mga Direksyon"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "Hindi maumpisa ang subprocess!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "Ginagawa ang Thumbnail"
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+#, fuzzy
+msgid "Could not find template app to export: \"%s\"."
msgstr ""
+"Walang mahanap na template APK upang iluwas:\n"
+"%s"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Di-wastong binary format."
#: platform/osx/export/export.cpp
msgid ""
@@ -19245,7 +19509,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -19286,6 +19550,15 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "Proyekto"
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr ""
@@ -19593,6 +19866,11 @@ msgid "Debug Algorithm"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Nabigong lumikha ng folder."
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -19639,6 +19917,65 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Constant"
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Di-wastong mga argument para i-construct ang '%s'"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Di-wastong pangalan."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Failed to remove temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19658,6 +19995,22 @@ msgid "Invalid product version:"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Failed to open executable file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "Bagong Tabing"
@@ -19674,6 +20027,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -19793,7 +20150,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
@@ -20603,13 +20961,16 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
+msgid "Navpoly"
msgstr ""
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Usog:"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Travel Cost"
msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
@@ -21761,12 +22122,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -24362,6 +24717,16 @@ msgid "3D Physics"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Nabigasyon"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Nabigasyon"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -25759,7 +26124,7 @@ msgstr "Transisyon: "
msgid "Refraction"
msgstr "Ibahin ang Pangalan ng Punsyon"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -25838,7 +26203,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "Sukat:"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "Ibahin ang Punong-Uri"
#: scene/resources/navigation_mesh.cpp
@@ -25856,10 +26226,15 @@ msgid "Source Group Name"
msgstr "Pangalan ng Skript:"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "Mga Gizmo"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -25869,11 +26244,16 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Regions"
+msgstr "Saklaw"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Merge Size"
msgstr "Ipagsama galing sa Eksena"
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -25886,6 +26266,11 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Details"
+msgstr "Ipakita ang Karaniwan"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -25903,7 +26288,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -26306,6 +26691,11 @@ msgid "Scenario"
msgstr "Eksena"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Nabigasyon"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -26322,6 +26712,26 @@ msgstr "Burahin ang Linya"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Karaniwan"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Karaniwan"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Sinusubukan"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Ayusin Ang Pagkakabit:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/tr.po b/editor/translations/tr.po
index 7e66d9509c..ea437aaf30 100644
--- a/editor/translations/tr.po
+++ b/editor/translations/tr.po
@@ -71,13 +71,14 @@
# Recep GUCLUER <rgucluer@gmail.com>, 2022.
# Emir Tunahan Alim <emrtnhalim@gmail.com>, 2022.
# inci <incialien@gmail.com>, 2022.
+# Ramazan Aslan <legendraslan@gmail.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-05-27 16:15+0000\n"
-"Last-Translator: inci <incialien@gmail.com>\n"
+"PO-Revision-Date: 2022-06-12 13:19+0000\n"
+"Last-Translator: Ramazan Aslan <legendraslan@gmail.com>\n"
"Language-Team: Turkish <https://hosted.weblate.org/projects/godot-engine/"
"godot/tr/>\n"
"Language: tr\n"
@@ -92,7 +93,6 @@ msgid "Tablet Driver"
msgstr "Tablet Sürücüsü"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Clipboard"
msgstr "Pano"
@@ -125,7 +125,6 @@ msgid "Low Processor Usage Mode Sleep (µsec)"
msgstr "Düşük İşlemci Kullanımı Uyku Modu (μsn)"
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Keep Screen On"
msgstr "Ekranı Açık Tut"
@@ -160,11 +159,11 @@ msgstr "Tam Ekran"
#: core/bind/core_bind.cpp
msgid "Maximized"
-msgstr ""
+msgstr "Maksimize edilmiÅŸ"
#: core/bind/core_bind.cpp
msgid "Minimized"
-msgstr "Küçültülmüş"
+msgstr "Minimize edilmiÅŸ"
#: core/bind/core_bind.cpp core/project_settings.cpp scene/gui/dialogs.cpp
#: scene/gui/graph_node.cpp
@@ -193,11 +192,11 @@ msgstr "Boyut"
#: core/bind/core_bind.cpp
msgid "Endian Swap"
-msgstr ""
+msgstr "Endian DeÄŸiÅŸimi"
#: core/bind/core_bind.cpp
msgid "Editor Hint"
-msgstr "Düzenleyici İpucu"
+msgstr "Düzenleyici İpucusu"
#: core/bind/core_bind.cpp
msgid "Print Error Messages"
@@ -216,9 +215,8 @@ msgid "Time Scale"
msgstr "Zaman Ölçeği"
#: core/bind/core_bind.cpp main/main.cpp
-#, fuzzy
msgid "Physics Jitter Fix"
-msgstr "Fizik Kare %"
+msgstr "Fizik Titreşim Düzeltmesi"
#: core/bind/core_bind.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Error"
@@ -226,7 +224,7 @@ msgstr "Hata"
#: core/bind/core_bind.cpp
msgid "Error String"
-msgstr "Hata Dizesi"
+msgstr "Hata yazısı"
#: core/bind/core_bind.cpp
msgid "Error Line"
@@ -238,7 +236,7 @@ msgstr "Sonuç"
#: core/command_queue_mt.cpp core/message_queue.cpp main/main.cpp
msgid "Memory"
-msgstr "Bellek"
+msgstr "Hafıza"
#: core/command_queue_mt.cpp core/message_queue.cpp
#: core/register_core_types.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
@@ -272,16 +270,16 @@ msgid "Data"
msgstr "Veri"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr "AÄŸ"
#: core/io/file_access_network.cpp
-#, fuzzy
msgid "Remote FS"
-msgstr "Uzak "
+msgstr "Uzaktan Dosyalama Sistemi"
#: core/io/file_access_network.cpp
msgid "Page Size"
@@ -289,11 +287,11 @@ msgstr "Sayfa Boyutu"
#: core/io/file_access_network.cpp
msgid "Page Read Ahead"
-msgstr ""
+msgstr "Sayfayı Önceden Okuma"
#: core/io/http_client.cpp
msgid "Blocking Mode Enabled"
-msgstr "Engelleme Modu Etkin"
+msgstr "Engelleme Modu EtkinleÅŸtirildi"
#: core/io/http_client.cpp
msgid "Connection"
@@ -308,33 +306,28 @@ msgid "Object ID"
msgstr "Nesne KimliÄŸi"
#: core/io/multiplayer_api.cpp core/io/packet_peer.cpp
-#, fuzzy
msgid "Allow Object Decoding"
-msgstr "Araları Doldurmayı Etkinleştir"
+msgstr "Nesne Çözümlemelerine İzin Ver"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
msgid "Refuse New Network Connections"
-msgstr ""
+msgstr "Yeni Bağlantılar Kurmayı Reddet"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
-#, fuzzy
msgid "Network Peer"
msgstr "AÄŸ Profilcisi"
#: core/io/multiplayer_api.cpp scene/animation/animation_player.cpp
-#, fuzzy
msgid "Root Node"
-msgstr "Kök düğüm adı"
+msgstr "Kök Düğüm Adı"
#: core/io/networked_multiplayer_peer.cpp
-#, fuzzy
msgid "Refuse New Connections"
-msgstr "BaÄŸla"
+msgstr "Yeni Bağlantıları Reddet"
#: core/io/networked_multiplayer_peer.cpp
-#, fuzzy
msgid "Transfer Mode"
-msgstr "Dönüştürme Türü"
+msgstr "Transfer Modu"
#: core/io/packet_peer.cpp
msgid "Encode Buffer Max Size"
@@ -365,9 +358,8 @@ msgid "Blocking Handshake"
msgstr ""
#: core/io/udp_server.cpp
-#, fuzzy
msgid "Max Pending Connections"
-msgstr "Bağlantıyı Düzenle:"
+msgstr "Bekletilebilecek Maks. Bağlantı Sayısı"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -385,14 +377,16 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Baytları çözümlemek için yetersiz miktarda bayt ya da geçersiz format."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
-msgstr "İfadede geçersiz giriş %i (geçersiz)"
+msgid "Invalid input %d (not passed) in expression"
+msgstr "İfadede geçersiz giriş %d"
#: core/math/expression.cpp
+#, fuzzy
msgid "self can't be used because instance is null (not passed)"
msgstr "self kullanılamaz çünkü örnek boş (geçilmedi)"
#: core/math/expression.cpp
+#, fuzzy
msgid "Invalid operands to operator %s, %s and %s."
msgstr "\"%s\" işlecinde geçersiz terimler, '%s' ve '%s'."
@@ -418,17 +412,26 @@ msgid "Seed"
msgstr ""
#: core/math/random_number_generator.cpp
-#, fuzzy
msgid "State"
msgstr "Durum"
#: core/message_queue.cpp
msgid "Message Queue"
-msgstr ""
+msgstr "Mesaj Sırası"
#: core/message_queue.cpp
msgid "Max Size (KB)"
-msgstr ""
+msgstr "En Büyük Boyut (KB)"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Biçimi Taşı"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "GiriÅŸi Sil"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
@@ -436,62 +439,58 @@ msgid "Device"
msgstr "Aygıt"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Alt"
-msgstr "Hepsi"
+msgstr "Alt"
#: core/os/input_event.cpp
msgid "Shift"
-msgstr ""
+msgstr "Shift"
#: core/os/input_event.cpp
#, fuzzy
msgid "Control"
-msgstr "Sürüm Kontrol"
+msgstr "Ctrl"
#: core/os/input_event.cpp
+#, fuzzy
msgid "Meta"
-msgstr ""
+msgstr "Meta"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Command"
-msgstr "Topluluk"
+msgstr "Komut"
#: core/os/input_event.cpp scene/2d/touch_screen_button.cpp
#: scene/gui/base_button.cpp scene/gui/texture_button.cpp
#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
msgid "Pressed"
-msgstr "Ön ayar"
+msgstr "Basılmış"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Scancode"
-msgstr "Tara"
+msgstr "TuÅŸ Kodu"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Physical Scancode"
-msgstr "Fiziksel Anahtar"
+msgstr "Fiziksel TuÅŸ Kodu"
#: core/os/input_event.cpp
+#, fuzzy
msgid "Unicode"
-msgstr ""
+msgstr "Unicode"
#: core/os/input_event.cpp
+#, fuzzy
msgid "Echo"
-msgstr ""
+msgstr "Eko"
#: core/os/input_event.cpp scene/gui/base_button.cpp
-#, fuzzy
msgid "Button Mask"
-msgstr "Düğme"
+msgstr "TuÅŸ Maskesi"
#: core/os/input_event.cpp scene/2d/node_2d.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Global Position"
-msgstr "Genel Sabit"
+msgstr "Global Pozisyon"
#: core/os/input_event.cpp
#, fuzzy
@@ -499,35 +498,31 @@ msgid "Factor"
msgstr "Vektör"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Button Index"
-msgstr "Fare Düğmesi İndeksi:"
+msgstr "Tuş İndeksi"
#: core/os/input_event.cpp
msgid "Doubleclick"
-msgstr ""
+msgstr "Çift Tıklama"
#: core/os/input_event.cpp
msgid "Tilt"
-msgstr ""
+msgstr "EÄŸim"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Pressure"
-msgstr "Ön ayar"
+msgstr "Baskı"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Relative"
-msgstr "Göreceli Yapış"
+msgstr "Göreceli"
#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
#: scene/animation/animation_player.cpp scene/resources/environment.cpp
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Speed"
-msgstr "Hız:"
+msgstr "Hız"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: scene/3d/sprite_3d.cpp
@@ -535,14 +530,12 @@ msgid "Axis"
msgstr "Eksen"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Axis Value"
-msgstr "İğneleme değeri"
+msgstr "Eksen DeÄŸeri"
#: core/os/input_event.cpp modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "Index"
-msgstr "İndeks:"
+msgstr "İndeks"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_nodes.cpp
@@ -553,37 +546,35 @@ msgstr "Eylem"
#: core/os/input_event.cpp scene/resources/environment.cpp
#: scene/resources/material.cpp
msgid "Strength"
-msgstr ""
+msgstr "Güç"
#: core/os/input_event.cpp
msgid "Delta"
-msgstr ""
+msgstr "Delta"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Channel"
-msgstr "DeÄŸiÅŸtir"
+msgstr "Kanal"
#: core/os/input_event.cpp main/main.cpp
-#, fuzzy
msgid "Message"
-msgstr "İşleme Mesajı"
+msgstr "Mesaj"
#: core/os/input_event.cpp
#, fuzzy
msgid "Pitch"
-msgstr "Perde:"
+msgstr "Perde"
#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
-#, fuzzy
msgid "Velocity"
-msgstr "Yörünge Görünümü Sağ"
+msgstr "Hız"
#: core/os/input_event.cpp
+#, fuzzy
msgid "Instrument"
-msgstr ""
+msgstr "Alet"
#: core/os/input_event.cpp
#, fuzzy
@@ -597,19 +588,16 @@ msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
#: platform/windows/export/export.cpp
-#, fuzzy
msgid "Application"
-msgstr "Eylem"
+msgstr "Uygulama"
#: core/project_settings.cpp main/main.cpp
-#, fuzzy
msgid "Config"
-msgstr "Yapışmayı Yapılandır"
+msgstr "Yapılandırma"
#: core/project_settings.cpp
-#, fuzzy
msgid "Project Settings Override"
-msgstr "Proje Ayarları..."
+msgstr "Proje Ayarlarını Bastır"
#: core/project_settings.cpp core/resource.cpp
#: editor/animation_track_editor.cpp editor/editor_autoload_settings.cpp
@@ -632,7 +620,8 @@ msgstr "Açıklama"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "Çalıştır"
@@ -642,39 +631,36 @@ msgid "Main Scene"
msgstr "Ana Sahne"
#: core/project_settings.cpp
-#, fuzzy
msgid "Disable stdout"
-msgstr "Oto-döşemeleri Pasifleştir"
+msgstr "Stdout'u devre dışı bırak"
#: core/project_settings.cpp
-#, fuzzy
msgid "Disable stderr"
-msgstr "Pasif Öge"
+msgstr "Stderr'i devre dışı bırak"
#: core/project_settings.cpp
msgid "Use Hidden Project Data Directory"
-msgstr ""
+msgstr "GizlenmiÅŸ Proje Verileri Dizinini Kullan"
#: core/project_settings.cpp
msgid "Use Custom User Dir"
-msgstr ""
+msgstr "Özelleştirilmiş Kullanıcı Dizinini Kullan"
#: core/project_settings.cpp
msgid "Custom User Dir Name"
-msgstr ""
+msgstr "Özelleştirilmiş Kullanıcı Dizini Adı"
#: core/project_settings.cpp main/main.cpp
#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
#: platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Display"
-msgstr "Hepsini Görüntüle"
+msgstr "Görüntüle"
#: core/project_settings.cpp main/main.cpp modules/csg/csg_shape.cpp
#: modules/opensimplex/noise_texture.cpp scene/2d/line_2d.cpp
#: scene/3d/label_3d.cpp scene/gui/text_edit.cpp scene/resources/texture.cpp
msgid "Width"
-msgstr ""
+msgstr "GeniÅŸlik"
#: core/project_settings.cpp main/main.cpp modules/csg/csg_shape.cpp
#: modules/gltf/gltf_node.cpp modules/opensimplex/noise_texture.cpp
@@ -682,23 +668,20 @@ msgstr ""
#: scene/resources/capsule_shape_2d.cpp scene/resources/cylinder_shape.cpp
#: scene/resources/font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/texture.cpp
-#, fuzzy
msgid "Height"
-msgstr "Işık"
+msgstr "Yükseklik"
#: core/project_settings.cpp
msgid "Always On Top"
-msgstr ""
+msgstr "Her Zaman Üstte"
#: core/project_settings.cpp
-#, fuzzy
msgid "Test Width"
-msgstr "Soldan Görünüm"
+msgstr "Test GeniÅŸliÄŸi"
#: core/project_settings.cpp
-#, fuzzy
msgid "Test Height"
-msgstr "Deneme"
+msgstr "Test Yüksekliği"
#: core/project_settings.cpp editor/animation_track_editor.cpp
#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
@@ -706,9 +689,8 @@ msgid "Audio"
msgstr "Ses"
#: core/project_settings.cpp
-#, fuzzy
msgid "Default Bus Layout"
-msgstr "Varsayılan Bus Yerleşim Düzenini Yükle."
+msgstr "Varsayılan Bus Yerleşim Düzeni"
#: core/project_settings.cpp editor/editor_export.cpp
#: editor/editor_file_system.cpp editor/editor_node.cpp
@@ -723,93 +705,84 @@ msgid "Main Run Args"
msgstr "Ana Sahne DeÄŸiÅŸtirgenleri:"
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "Sahne Yolu:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
-msgstr ""
+msgstr "Dosya Uzantılarında Ara"
#: core/project_settings.cpp
msgid "Script Templates Search Path"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Sürüm Kontrol"
+msgstr "Script Dosyalarını Aramak İçin Dosya Yolu"
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
+#, fuzzy
+msgid "Version Control Autoload On Startup"
+msgstr "Başlangıçta Otomatik Yükleme"
#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "Eklentinin Adı:"
+msgid "Version Control Plugin Name"
+msgstr "Sürüm Kontrol"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Input"
-msgstr "GiriÅŸ Ekle"
+msgstr "GiriÅŸ"
#: core/project_settings.cpp
msgid "UI Accept"
-msgstr ""
+msgstr "Kullanıcı Arayüzü Kabul Et"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Select"
-msgstr "Seç"
+msgstr "Kullanıcı Arayüzü Seç"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Cancel"
-msgstr "Vazgeç"
+msgstr "Kullanıcı Arayüzünü İptal Et"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Focus Next"
-msgstr "Yola Odaklan"
+msgstr "Kullanıcı Arayüzü Sonrakine Odaklan"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Focus Prev"
-msgstr "Yola Odaklan"
+msgstr "Kullanıcı Arayüzü Öncekine Odaklan"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Left"
-msgstr "Sol Üst"
+msgstr "Kullanıcı Arayüzü Sol"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Right"
-msgstr "Sağ Üst"
+msgstr "Kullanıcı Arayüzü Sağ"
#: core/project_settings.cpp
msgid "UI Up"
-msgstr ""
+msgstr "Kullanıcı Arayüzü Yukarı"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Down"
-msgstr "Aşağı"
+msgstr "Kullanıcı Arayüzü Aşağı"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Page Up"
-msgstr "Sayfa: "
+msgstr "Kullanıcı Arayüzü Sayfa Yukarı"
#: core/project_settings.cpp
msgid "UI Page Down"
-msgstr ""
+msgstr "Kullanıcı Arayüzü Sayfa Aşağı"
#: core/project_settings.cpp
msgid "UI Home"
-msgstr ""
+msgstr "Kullanıcı Arayüzü Home"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI End"
-msgstr "Sonunda"
+msgstr "Kullanıcı Arayüzü End"
#: core/project_settings.cpp main/main.cpp modules/bullet/register_types.cpp
#: modules/bullet/space_bullet.cpp scene/2d/physics_body_2d.cpp
@@ -819,9 +792,8 @@ msgstr "Sonunda"
#: servers/physics_2d/physics_2d_server_wrap_mt.h
#: servers/physics_2d/space_2d_sw.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
-#, fuzzy
msgid "Physics"
-msgstr " (Fiziksel)"
+msgstr "Fizik"
#: core/project_settings.cpp editor/editor_settings.cpp
#: editor/import/resource_importer_layered_texture.cpp
@@ -831,12 +803,11 @@ msgstr " (Fiziksel)"
#: scene/3d/physics_body.cpp scene/resources/world.cpp
#: servers/physics/space_sw.cpp servers/physics_server.cpp
msgid "3D"
-msgstr ""
+msgstr "3D"
#: core/project_settings.cpp
-#, fuzzy
msgid "Smooth Trimesh Collision"
-msgstr "Üçlü Örüntü Çarpışma Kardeşi Oluştur"
+msgstr "Akıcı Trimesh Çarpışması"
#: core/project_settings.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles2/rasterizer_scene_gles2.cpp
@@ -847,9 +818,8 @@ msgstr "Üçlü Örüntü Çarpışma Kardeşi Oluştur"
#: modules/lightmapper_cpu/register_types.cpp scene/main/scene_tree.cpp
#: scene/main/viewport.cpp servers/visual/visual_server_scene.cpp
#: servers/visual_server.cpp
-#, fuzzy
msgid "Rendering"
-msgstr "OluÅŸturucu:"
+msgstr "OluÅŸturucu"
#: core/project_settings.cpp drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_scene_gles3.cpp
@@ -859,17 +829,17 @@ msgstr "OluÅŸturucu:"
#: scene/resources/multimesh.cpp servers/visual/visual_server_scene.cpp
#: servers/visual_server.cpp
msgid "Quality"
-msgstr ""
+msgstr "Kalite"
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
-#, fuzzy
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
msgid "Filters"
-msgstr "Süzgeçler:"
+msgstr "Filtreler"
#: core/project_settings.cpp scene/main/viewport.cpp
msgid "Sharpen Intensity"
-msgstr ""
+msgstr "KeskinleÅŸtirme YoÄŸunluÄŸu"
#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
@@ -885,70 +855,66 @@ msgstr "Hata Ayıklama"
#: core/project_settings.cpp main/main.cpp modules/gdscript/gdscript.cpp
#: modules/visual_script/visual_script.cpp scene/resources/dynamic_font.cpp
-#, fuzzy
msgid "Settings"
-msgstr "Ayarlar:"
+msgstr "Ayarlar"
#: core/project_settings.cpp editor/script_editor_debugger.cpp main/main.cpp
#: modules/mono/mono_gd/gd_mono.cpp
+#, fuzzy
msgid "Profiler"
msgstr "Kesitçi"
#: core/project_settings.cpp
-#, fuzzy
msgid "Max Functions"
-msgstr "İşlev Yap"
+msgstr "Maks. Fonksiyon Sayısı"
#: core/project_settings.cpp scene/3d/vehicle_body.cpp
-#, fuzzy
msgid "Compression"
-msgstr "İfade"
+msgstr "Sıkıştırma"
#: core/project_settings.cpp
-#, fuzzy
msgid "Formats"
-msgstr "Biçem"
+msgstr "Biçim"
#: core/project_settings.cpp
msgid "Zstd"
-msgstr ""
+msgstr "Zstd"
#: core/project_settings.cpp
msgid "Long Distance Matching"
-msgstr ""
+msgstr "Uzun Mesafe EÅŸleÅŸme"
#: core/project_settings.cpp
msgid "Compression Level"
-msgstr ""
+msgstr "Sıkıştırma Seviyesi"
#: core/project_settings.cpp
msgid "Window Log Size"
-msgstr ""
+msgstr "Pencere Günlük Boyutu"
#: core/project_settings.cpp
msgid "Zlib"
-msgstr ""
+msgstr "Zlib"
#: core/project_settings.cpp
msgid "Gzip"
-msgstr ""
+msgstr "Gzip"
#: core/project_settings.cpp platform/android/export/export.cpp
msgid "Android"
-msgstr ""
+msgstr "Android"
#: core/project_settings.cpp
msgid "Modules"
-msgstr ""
+msgstr "Modüller"
#: core/register_core_types.cpp
msgid "TCP"
-msgstr ""
+msgstr "TCP"
#: core/register_core_types.cpp
-#, fuzzy
msgid "Connect Timeout Seconds"
-msgstr "Metotlara bağlantılar:"
+msgstr "Bağlanma Zaman Aşımı Süresi(Saniye)"
#: core/register_core_types.cpp
msgid "Packet Peer Stream"
@@ -956,16 +922,15 @@ msgstr ""
#: core/register_core_types.cpp
msgid "Max Buffer (Power of 2)"
-msgstr ""
+msgstr "Maksimum Arabellek (2'nin üssü olacak şekilde)"
#: core/register_core_types.cpp editor/editor_settings.cpp main/main.cpp
msgid "SSL"
-msgstr ""
+msgstr "SSL"
#: core/register_core_types.cpp main/main.cpp
-#, fuzzy
msgid "Certificates"
-msgstr "Köşenoktalar:"
+msgstr "Sertifikalar"
#: core/resource.cpp editor/dependency_editor.cpp
#: editor/editor_resource_picker.cpp
@@ -974,9 +939,8 @@ msgid "Resource"
msgstr "Kaynak"
#: core/resource.cpp
-#, fuzzy
msgid "Local To Scene"
-msgstr "Sahneyi Kapat"
+msgstr "Sahneye Yerel"
#: core/resource.cpp editor/dependency_editor.cpp
#: editor/editor_autoload_settings.cpp editor/plugins/path_editor_plugin.cpp
@@ -986,9 +950,8 @@ msgid "Path"
msgstr "Yol"
#: core/script_language.cpp
-#, fuzzy
msgid "Source Code"
-msgstr "Kaynak"
+msgstr "Kaynak Kodu"
#: core/translation.cpp editor/project_settings_editor.cpp
msgid "Locale"
@@ -1009,27 +972,27 @@ msgstr "B"
#: core/ustring.cpp
msgid "KiB"
-msgstr "KiB"
+msgstr "KB"
#: core/ustring.cpp
msgid "MiB"
-msgstr "MiB"
+msgstr "MB"
#: core/ustring.cpp
msgid "GiB"
-msgstr "GiB"
+msgstr "GB"
#: core/ustring.cpp
msgid "TiB"
-msgstr "TiB"
+msgstr "TB"
#: core/ustring.cpp
msgid "PiB"
-msgstr "PiB"
+msgstr "PB"
#: core/ustring.cpp
msgid "EiB"
-msgstr "EiB"
+msgstr "EB"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles2/rasterizer_scene_gles2.cpp
@@ -1037,7 +1000,7 @@ msgstr "EiB"
#: drivers/gles3/rasterizer_scene_gles3.cpp
#: drivers/gles3/rasterizer_storage_gles3.cpp modules/gltf/gltf_state.cpp
msgid "Buffers"
-msgstr ""
+msgstr "Arabellek"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
@@ -1059,7 +1022,7 @@ msgstr ""
#: servers/physics_2d/space_2d_sw.cpp servers/physics_2d_server.cpp
#: servers/visual_server.cpp
msgid "2D"
-msgstr ""
+msgstr "2D"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
@@ -1090,21 +1053,21 @@ msgid "Use Bicubic Sampling"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#, fuzzy
msgid "Max Renderable Elements"
-msgstr ""
+msgstr "Maks. Renderlanabilinecek Ögeler"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Renderable Lights"
-msgstr ""
+msgstr "Maks. İşlenebilinecek Işık Sayısı"
#: drivers/gles3/rasterizer_scene_gles3.cpp
-#, fuzzy
msgid "Max Renderable Reflections"
-msgstr "Merkez Seçimi"
+msgstr "Maks. İşlenebilinecek Yansıma Sayısı"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Lights Per Object"
-msgstr ""
+msgstr "Maks. Objeye düşen Işık Sayısı"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Subsurface Scattering"
@@ -1124,9 +1087,8 @@ msgid "Scale"
msgstr "Ölçekle"
#: drivers/gles3/rasterizer_scene_gles3.cpp
-#, fuzzy
msgid "Follow Surface"
-msgstr "Yüzeyi Doldur"
+msgstr "Yüzeyi Takip Et"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Weight Samples"
@@ -1138,12 +1100,13 @@ msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp scene/resources/environment.cpp
msgid "High Quality"
-msgstr ""
+msgstr "Yüksek Kalite"
#: drivers/gles3/rasterizer_storage_gles3.cpp
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Ücretsiz"
@@ -1160,7 +1123,7 @@ msgstr "Ayna"
msgid "Time:"
msgstr "Süre:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "DeÄŸer:"
@@ -1228,16 +1191,14 @@ msgstr "Zaman"
#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: platform/osx/export/export.cpp
-#, fuzzy
msgid "Location"
-msgstr "YerelleÅŸtirme"
+msgstr "Konum"
#: editor/animation_track_editor.cpp modules/gltf/gltf_node.cpp
#: scene/2d/polygon_2d.cpp scene/2d/remote_transform_2d.cpp
#: scene/3d/remote_transform.cpp scene/3d/spatial.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Rotation"
-msgstr "Dönme Adımı:"
+msgstr "Rotasyon"
#: editor/animation_track_editor.cpp editor/script_editor_debugger.cpp
#: modules/visual_script/visual_script_nodes.cpp scene/gui/range.cpp
@@ -1245,14 +1206,13 @@ msgid "Value"
msgstr "DeÄŸer"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Arg Count"
-msgstr "DeÄŸer:"
+msgstr "Argüman Sayısı"
#: editor/animation_track_editor.cpp main/main.cpp
#: modules/mono/mono_gd/gd_mono.cpp
msgid "Args"
-msgstr ""
+msgstr "Argümanlar"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
#: editor/script_editor_debugger.cpp modules/gltf/gltf_accessor.cpp
@@ -1299,9 +1259,8 @@ msgid "Animation"
msgstr "Animasyon"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Easing"
-msgstr "Açılma Kararma"
+msgstr "YumuÅŸatma"
#: editor/animation_track_editor.cpp
msgid "Anim Multi Change Keyframe Time"
@@ -1358,7 +1317,7 @@ msgstr "Animasyon Oynatıcı İzi"
#: editor/animation_track_editor.cpp
msgid "Animation length (frames)"
-msgstr "Animasyon uzunluğu (çerçeve)"
+msgstr "Animasyon uzunluÄŸu (kare)"
#: editor/animation_track_editor.cpp
msgid "Animation length (seconds)"
@@ -1375,7 +1334,7 @@ msgstr "Animasyon Döngüsü"
#: editor/animation_track_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
-msgstr "İşlevler:"
+msgstr "Fonksiyonlar:"
#: editor/animation_track_editor.cpp
msgid "Audio Clips:"
@@ -1410,8 +1369,69 @@ msgid "Remove this track."
msgstr "Bu izi sil."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
-msgstr "Süre (sn): "
+msgid "Time (s):"
+msgstr "Süre (sn):"
+
+#: editor/animation_track_editor.cpp
+msgid "Position:"
+msgstr "Pozisyon:"
+
+#: editor/animation_track_editor.cpp
+msgid "Rotation:"
+msgstr "Rotasyon:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "Ölçekle:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "Tür:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Geçersiz Dışa Aktarım Şablonu:"
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr "YumuÅŸatma:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "In-Handle:"
+msgstr "Tutamacı Ayarla"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Out-Handle:"
+msgstr "Tutamacı Ayarla"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "Radyo Ögesi"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Yeniden BaÅŸlat (sn):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "End (s):"
+msgstr "Açılma (sn):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Animasyonlar:"
#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
@@ -1627,7 +1647,8 @@ msgid "Add Method Track Key"
msgstr "Yöntem İz Anahtarı Ekle"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "Metot, nesne içinde bulunamadı: "
#: editor/animation_track_editor.cpp
@@ -2237,8 +2258,8 @@ msgid "Open"
msgstr "Aç"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Şunların sahipleri:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
msgid ""
@@ -2542,7 +2563,7 @@ msgid "Bus Options"
msgstr "Bus ayarları"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Çoğalt"
@@ -2594,8 +2615,9 @@ msgstr "Audio Bus Yerleşim Düzenini Aç"
msgid "There is no '%s' file."
msgstr "'%s' dosyası bulunamadı."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "Yerleşim Düzeni"
#: editor/editor_audio_buses.cpp
@@ -2799,6 +2821,25 @@ msgid "Choose"
msgstr "Seç"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "Düğüm Yolunu Kopyala"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "Paket Başarı ile Kuruldu!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "Başarısız:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Dosya Depolama:"
@@ -2811,6 +2852,31 @@ msgid "Packing"
msgstr "Çıkınla"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Farklı Kaydet"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "Klasör oluşturulamadı."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Proje dosyaları dışa aktarılamadı"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Dosya yazmak için açılamıyor:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Farklı Kaydet"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2931,11 +2997,33 @@ msgstr "Özel hata ayıklama şablonu bulunmadı."
msgid "Custom release template not found."
msgstr "Özel yayınlama şablonu bulunamadı."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "Şablonlarını Yönet"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "Belirtilen Dışa aktarım yolu mevcut değil:"
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "Şablon dosyası bulunamadı:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "Geçersiz Dışa Aktarım Şablonu:"
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+#, fuzzy
+msgid "PCK Embedding"
+msgstr "Dolgulama"
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr "32-bit dışa aktarımlarda gömülü PCK 4GiB'tan büyük olamaz."
@@ -3109,9 +3197,9 @@ msgid "Import"
msgstr "İçe Aktar"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Dışa Aktar"
@@ -3389,7 +3477,7 @@ msgstr "Sınıf:"
#: editor/editor_help.cpp editor/scene_tree_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Inherits:"
-msgstr "Kalıtçılar:"
+msgstr "Miras:"
#: editor/editor_help.cpp
msgid "Inherited by:"
@@ -4275,15 +4363,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Sahne"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "Sahne Yolu:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4412,6 +4491,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Sürüm Kontrol"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "Kullanıcı adı"
@@ -4439,6 +4522,10 @@ msgstr "Dikkat-Dağıtmayan Kipine geç."
msgid "Add a new scene."
msgstr "Yeni bir sahne ekle."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Sahne"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Daha önce açılan sahneye git."
@@ -5129,11 +5216,14 @@ msgid "Selected node is not a Viewport!"
msgstr "Seçili düğüm bir Viewport değil!"
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr "Boyut: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
+msgstr "Boyut:"
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+#, fuzzy
+msgid "Page:"
msgstr "Sayfa: "
#: editor/editor_properties_array_dict.cpp
@@ -5234,6 +5324,11 @@ msgstr ""
"Lütfen Dışa Aktar menüsüne çalıştırılabilir bir ön ayar ekleyin veya mevcut "
"bir ön ayarı çalıştırılabilir olarak tanımlayın."
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Proje"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Mantığınızı _run() metoduna yazın."
@@ -5517,7 +5612,9 @@ msgid "Draw Spaces"
msgstr "Çizim Çağrıları:"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr "Gezinim"
@@ -6116,10 +6213,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Proje Yöneticisi"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -6888,14 +6987,6 @@ msgid "Replace in Files"
msgstr "Dosyaiçlerinde Değiştir"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "Bul: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "DeÄŸiÅŸtir: "
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr "Tümünü Değiştir (GERİ ALMA YOK)"
@@ -7024,7 +7115,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Süzgeçler:"
@@ -7292,7 +7383,8 @@ msgid "Generating Lightmaps"
msgstr "Işık-haritaları Üretiliyor"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+#, fuzzy
+msgid "Generating for Mesh:"
msgstr "Örüntü için Üretiliyor: "
#: editor/import/resource_importer_scene.cpp
@@ -7322,6 +7414,18 @@ msgid "Saving..."
msgstr "Kaydediliyor..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -8135,10 +8239,12 @@ msgstr "Araları Doldurma Seçenekleri"
msgid "Directions"
msgstr "Yönler"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "Geçmiş"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "Gelecek"
@@ -8300,7 +8406,8 @@ msgstr ""
"olacaktır."
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
+#, fuzzy
+msgid "Transition:"
msgstr "Geçiş: "
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8317,11 +8424,6 @@ msgid "New name:"
msgstr "Yeni ad:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "Ölçekle:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "Açılma (sn):"
@@ -9233,6 +9335,7 @@ msgstr "Düğüm[ler]den istenilen şekilde kemik[ler] yarat"
msgid "Clear Custom Bones"
msgstr "İsteğe bağlı kemikleri temizle"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9299,6 +9402,10 @@ msgid "Preview Canvas Scale"
msgstr "Tuval Ölçeğini Önizle"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "Yerleşim Düzeni"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr "Anahtar Ekleme Çevirim Maskesi."
@@ -10068,7 +10175,8 @@ msgid "Volume"
msgstr "Oylum"
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+#, fuzzy
+msgid "Emission Source:"
msgstr "Emisyon Kaynağı: "
#: editor/plugins/particles_editor_plugin.cpp
@@ -10302,6 +10410,7 @@ msgid "Points"
msgstr "Noktalar"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr "Çokgenler"
@@ -10457,13 +10566,6 @@ msgid "Instance:"
msgstr "Örnek:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "Tür:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr "Düzenleyicide Aç"
@@ -10472,10 +10574,6 @@ msgstr "Düzenleyicide Aç"
msgid "Load Resource"
msgstr "Kaynak Yükle"
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr "KaynakÖnyükleyici"
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr "Portalları Çevir"
@@ -11175,12 +11273,16 @@ msgstr "Döndür"
msgid "Translate"
msgstr "Çevir"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
+#, fuzzy
+msgid "Scaling:"
msgstr "Ölçekleniyor: "
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
+#, fuzzy
+msgid "Translating:"
msgstr "Çeviriliyor: "
#: editor/plugins/spatial_editor_plugin.cpp
@@ -11204,11 +11306,6 @@ msgid "Yaw:"
msgstr "Sapma:"
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr "Boyut:"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr "Çizilmiş Nesneler:"
@@ -11695,7 +11792,8 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr "Geçersiz geometri, örüntü ile değiştirilemiyor."
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+#, fuzzy
+msgid "Convert to MeshInstance2D"
msgstr "Örüntü2D'ye döüştür"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11727,15 +11825,18 @@ msgid "Sprite"
msgstr "HayaliÇizimlik"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
+#, fuzzy
+msgid "Simplification:"
msgstr "SadeleÅŸtirme: "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+#, fuzzy
+msgid "Shrink (Pixels):"
msgstr "Sıkıştır (Pikselleri): "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+#, fuzzy
+msgid "Grow (Pixels):"
msgstr "Büyüt (Pikselleri): "
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12688,8 +12789,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr "Önceki şekil, altdöşeme ya da Döşemeyi Seç."
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr "Bölge"
@@ -14206,36 +14306,10 @@ msgid "Delete preset '%s'?"
msgstr "'%s' önayarı silinsin mi?"
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-"'%s' platformu için proje dışa aktarılamadı.\n"
-"Dışa aktarma şablonları eksik veya hatalı görünüyor."
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-"'%s' platformu için proje dışa aktarılamadı.\n"
-"Bu, dışa aktarma ön ayarlarındaki ya da dışa aktarma ayarlarınızdaki bir "
-"yapılandırma sorunundan kaynaklanıyor olabilir."
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "Tümünü Dışa Aktarma"
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr "Belirtilen Dışa aktarım yolu mevcut değil:"
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr "Bu platform için dışa aktarma şablonu eksik/bozuk:"
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr "Dışa aktarım Yolu"
@@ -14383,6 +14457,11 @@ msgid "Export templates for this platform are missing:"
msgstr "Bu platform için dışa aktarma şablonu eksik:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Projenin Kurucuları"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "Dışa Aktarım Şablonlarını Yönet"
@@ -15917,7 +15996,8 @@ msgid "Attach Node Script"
msgstr "Düğüm Betiği İliştir"
#: editor/script_editor_debugger.cpp
-msgid "Remote "
+#, fuzzy
+msgid "Remote %s:"
msgstr "Uzak "
#: editor/script_editor_debugger.cpp
@@ -16800,7 +16880,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "Çokgenler"
@@ -16978,7 +17058,8 @@ msgid "Disabled GDNative Singleton"
msgstr "GDNative İskeleti Pasifleştirildi"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+#, fuzzy
+msgid "Libraries:"
msgstr "Kütüphaneler: "
#: modules/gdnative/nativescript/nativescript.cpp
@@ -17422,7 +17503,6 @@ msgid "Use In Baked Light"
msgstr "Işık-Haritalarını Pişir"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17452,6 +17532,19 @@ msgstr "Merkez"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Gezinim"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Gezinim Kipi"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Sonraki sekme"
@@ -17869,7 +17962,8 @@ msgstr ""
"Lütfen düğümünüzü düzeltin."
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+#, fuzzy
+msgid "Node returned an invalid sequence output:"
msgstr "Düğüm geçersiz bir dizi çıktısı döndürdü: "
#: modules/visual_script/visual_script.cpp
@@ -17877,7 +17971,8 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr "Bit dizisi bulundu fakat yığındaki düğüm değil, kusuru bildir!"
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+#, fuzzy
+msgid "Stack overflow with stack depth:"
msgstr "Şu derinlikte yığın taşması: "
#: modules/visual_script/visual_script.cpp
@@ -18247,7 +18342,8 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+#, fuzzy
+msgid "Input type not iterable:"
msgstr "Girdi türü yinelenebilir değil: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18255,7 +18351,8 @@ msgid "Iterator became invalid"
msgstr "Yineleyici geçersiz durumda"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+#, fuzzy
+msgid "Iterator became invalid:"
msgstr "Yineleyici geçersiz durumda: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18424,11 +18521,13 @@ msgid "Operator"
msgstr "Kaplama opeartörü."
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
+#, fuzzy
+msgid "Invalid argument of type:"
msgstr ": Şu tür için geçersiz değiştirgen: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
+#, fuzzy
+msgid "Invalid arguments:"
msgstr ": Geçersiz değiştirgenler: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18441,11 +18540,13 @@ msgid "Var Name"
msgstr "İsim"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+#, fuzzy
+msgid "VariableGet not found in script:"
msgstr "VariableGet betikte bulunamadı: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+#, fuzzy
+msgid "VariableSet not found in script:"
msgstr "VariableSet betikte bulunamadı: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18979,10 +19080,6 @@ msgid "Could not execute on device."
msgstr "Cihazda yürütülemedi."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr "'apksigner' aracı bulunamıyor."
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -19106,12 +19203,17 @@ msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
"\"Target Sdk\" sürümü \"Min Sdk\" sürümünden daha büyük veya eşit olmalıdır."
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Sinyal"
+
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
"'apksigner' bulunamadı.\n"
"Lütfen komutun Android SDK build-tools dizininde bulunup bulunmadığını "
@@ -19131,6 +19233,11 @@ msgid "Could not find keystore, unable to export."
msgstr "Anahtar deposu bulunamadı, dışa aktarılamadı."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "Alt işlem başlatılamadı!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr "'apksigner', #%d hatasıyla döndürüldü"
@@ -19159,7 +19266,8 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "Geçersiz dosya adı! Android APK, * .apk uzantısını gerektirir."
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+#, fuzzy
+msgid "Unsupported export format!"
msgstr "Desteklenmeyen dışa aktarma biçimi!\n"
#: platform/android/export/export_plugin.cpp
@@ -19171,10 +19279,9 @@ msgstr ""
"için sürüm bilgisi yok. Lütfen 'Proje' menüsünden yeniden yükleyin."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
"Android derlemesi sürüm uyumsuzluğu:\n"
@@ -19183,13 +19290,15 @@ msgstr ""
"Lütfen 'Proje' menüsünden Android derleme şablonunu yeniden yükleyin."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
"Proje adıyla res://android/build/res/*.xml dosyalarının üzerine yazılamıyor"
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+#, fuzzy
+msgid "Could not export project files to gradle project."
msgstr "Proje dosyaları gradle projesine aktarılamadı\n"
#: platform/android/export/export_plugin.cpp
@@ -19201,8 +19310,9 @@ msgid "Building Android Project (gradle)"
msgstr "Android Projesi OluÅŸturma (gradle)"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
"Android projesinin oluşturulması başarısız oldu, hatayı çıktı için kontrol "
@@ -19223,7 +19333,8 @@ msgstr ""
"için gradle proje dizinini kontrol edin."
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+#, fuzzy
+msgid "Package not found: \"%s\"."
msgstr "Paket bulunamadı: %s"
#: platform/android/export/export_plugin.cpp
@@ -19231,17 +19342,16 @@ msgid "Creating APK..."
msgstr "APK oluÅŸturuluyor..."
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+#, fuzzy
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
"Dışa aktarılacak şablon APK bulunamadı:\n"
"%s"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -19254,7 +19364,8 @@ msgid "Adding files..."
msgstr "Dosyalar ekleniyor..."
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+#, fuzzy
+msgid "Could not export project files."
msgstr "Proje dosyaları dışa aktarılamadı"
#: platform/android/export/export_plugin.cpp
@@ -19497,6 +19608,17 @@ msgstr "ÖzelSınıf"
msgid "Custom BG Color"
msgstr "ÖzelSınıf"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "Şablonlarını Yönet"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Özel yayınlama şablonu bulunamadı."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr "App Store Ekip Kimliği belirtilmedi - proje yapılandırılamıyor."
@@ -19518,22 +19640,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Dışa aktarılmış HTML'yi sistemin varsayılan tarayıcısında çalıştır."
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
msgstr "Dışa aktarma için şablon açılamadı:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
msgstr "Geçersiz Dışa Aktarım Şablonu:"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+#, fuzzy
+msgid "Could not write file: \"%s\"."
msgstr "Dosya yazılamadı:"
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Kenar BoÅŸluk Belirle"
+
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+#, fuzzy
+msgid "Could not read file: \"%s\"."
msgstr "Dosya okunamadı:"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "Ayrım:"
@@ -19608,15 +19743,18 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+#, fuzzy
+msgid "Could not read HTML shell: \"%s\"."
msgstr "HTML kabuğu okunamadı:"
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+#, fuzzy
+msgid "Could not create HTTP server directory: %s."
msgstr "HTTP sunucu klasörü oluşturulamadı:"
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+#, fuzzy
+msgid "Error starting HTTP server: %d."
msgstr "HTTP sunucusu başlatılırken hata:"
#: platform/javascript/export/export.cpp
@@ -19917,9 +20055,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Proje dosyaları dışa aktarılamadı"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "Alt işlem başlatılamadı!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "YerelleÅŸtirme"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19935,23 +20092,78 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "Simge bulunamadı."
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "%s dosyası kaydedilirken hata"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Yönler"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "Alt işlem başlatılamadı!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "Küçük Bediz Oluşturuluyor"
#: platform/osx/export/export.cpp
#, fuzzy
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr ""
"Dışa aktarılacak şablon APK bulunamadı:\n"
"%s"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Geçersiz Dışa Aktarım Şablonu:"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -19959,7 +20171,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -20000,6 +20212,16 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "Proje"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr "Proje dosyaları gradle projesine aktarılamadı\n"
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr "Geçersiz paket tanımlayıcısı:"
@@ -20315,6 +20537,11 @@ msgid "Debug Algorithm"
msgstr "Hata Ayıklayıcı"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Geçici dosya kaldırılamıyor:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20362,6 +20589,70 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Rastgele Döndürme:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "Anahtar deposu bulunamadı, dışa aktarılamadı."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "Anahtar deposu bulunamadı, dışa aktarılamadı."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "Anahtar deposu bulunamadı, dışa aktarılamadı."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "Anahtar deposu bulunamadı, dışa aktarılamadı."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Geçersiz Tanımlayıcı:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Geçersiz ad."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "Geçici dosya kaldırılamıyor:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20383,6 +20674,23 @@ msgid "Invalid product version:"
msgstr "Geçersiz ürün GUID'i."
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Geçersiz uzantı."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "Yeni Pencere"
@@ -20399,6 +20707,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20526,7 +20838,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Uzaklık Seç:"
@@ -21400,17 +21713,19 @@ msgstr ""
"çokgen çizin."
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-"NavigationPolygonInstance, bir Navigation2D çocuğu olmalı ya da Navigation2D "
-"düğümünün torunu olması gerekir. Bu nesne yalnızca yönlendirme verisi sağlar."
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr ""
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Merkez Alt"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "Seyahat"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
#, fuzzy
@@ -22651,14 +22966,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr "NavigationAgent sadece Spatial düğümünün altında kullanılabilir."
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-"NavigationMeshInstance, bir Navigation düğümünün çocuğu ya da torunu "
-"olmalıdır. O yalnızca yönlendirme verisi sağlar."
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
#, fuzzy
msgid "NavMesh"
@@ -25406,6 +25713,16 @@ msgid "3D Physics"
msgstr " (Fiziksel)"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Gezinim"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Gezinim"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -26833,7 +27150,7 @@ msgstr "Geçiş: "
msgid "Refraction"
msgstr "Ayrım:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -26918,7 +27235,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "Ölçekleniyor: "
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "DeÄŸiÅŸken Tipini Ayarla"
#: scene/resources/navigation_mesh.cpp
@@ -26936,10 +27258,15 @@ msgid "Source Group Name"
msgstr "Kaynak"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "Ana Sahne DeÄŸiÅŸtirgenleri:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -26949,11 +27276,16 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Regions"
+msgstr "Bölge"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Merge Size"
msgstr "Sahneden BirleÅŸtir"
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26967,6 +27299,11 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Details"
+msgstr "Varsayılanı Göster"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Sample Distance"
msgstr "Uzaklık Seç:"
@@ -26984,7 +27321,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -27402,6 +27739,11 @@ msgid "Scenario"
msgstr "Sahne"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Gezinim"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -27419,6 +27761,26 @@ msgstr "Sol DoÄŸrusal"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Varsayılan"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Varsayılan Önizleme"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Deneme"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Bağlantıyı Düzenle:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
@@ -27611,11 +27973,11 @@ msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Msec"
-msgstr ""
+msgstr "MiliSaniye"
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Room Size"
-msgstr ""
+msgstr "Oda Büyüklüğü"
#: servers/audio/effects/audio_effect_reverb.cpp
#, fuzzy
@@ -27640,14 +28002,12 @@ msgid "Surround"
msgstr ""
#: servers/audio_server.cpp
-#, fuzzy
msgid "Enable Audio Input"
-msgstr "Audio Bus'ı Yeniden Adlandır"
+msgstr "Ses GiriÅŸini AktifleÅŸtir"
#: servers/audio_server.cpp
-#, fuzzy
msgid "Output Latency"
-msgstr "Çıktı"
+msgstr "Çıkış Gecikmesi"
#: servers/audio_server.cpp
msgid "Channel Disable Threshold dB"
@@ -27668,9 +28028,8 @@ msgid "Bus Count"
msgstr "GiriÅŸ Portu Ekle"
#: servers/audio_server.cpp
-#, fuzzy
msgid "Capture Device"
-msgstr "Pikselden Yakala"
+msgstr "Yakalama Cihazı"
#: servers/audio_server.cpp
#, fuzzy
@@ -27682,9 +28041,8 @@ msgid "Feed"
msgstr ""
#: servers/camera/camera_feed.cpp
-#, fuzzy
msgid "Is Active"
-msgstr "Derinlik"
+msgstr "Aktif mi"
#: servers/physics/space_sw.cpp servers/physics_2d/space_2d_sw.cpp
msgid "Sleep Threshold Linear"
@@ -27726,50 +28084,46 @@ msgid "Total Linear Damp"
msgstr "DoÄŸrusal"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Total Gravity"
-msgstr "Varsayılan Önizleme"
+msgstr "Toplam Yerçekimi"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Linear Velocity"
-msgstr "EtkinleÅŸtir"
+msgstr "Çizgisel hız"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
msgid "Exclude"
-msgstr ""
+msgstr "Hariç tut"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
msgid "Shape RID"
-msgstr ""
+msgstr "Åžekil RID"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
#, fuzzy
msgid "Collide With Bodies"
-msgstr "Temas Kipi"
+msgstr "Diğer Bedenlerle Çarpış"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
+#, fuzzy
msgid "Collide With Areas"
-msgstr ""
+msgstr "Diğer Alanlarla Çarpış"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
msgid "Motion Remainder"
-msgstr ""
+msgstr "Kalan Hareket"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Collision Point"
-msgstr "Temas Kipi"
+msgstr "Çarpışma Noktası"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Collision Normal"
-msgstr "Temas Kipi"
+msgstr "Çarpışma Normali"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Collision Depth"
-msgstr "Temas Kipi"
+msgstr "Çarpışma Derinliği"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
#, fuzzy
@@ -27782,14 +28136,12 @@ msgid "Collision Unsafe Fraction"
msgstr "Temas Kipi"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Physics Engine"
-msgstr "Fizik Kare %"
+msgstr "Fizik Motoru"
#: servers/physics_server.cpp
-#, fuzzy
msgid "Center Of Mass"
-msgstr "Sol Merkez"
+msgstr "Kütle Merkezi"
#: servers/physics_server.cpp
msgid "Principal Inertia Axes"
@@ -27870,12 +28222,11 @@ msgstr "Kalıbı İçe Aktar"
#: servers/visual_server.cpp
msgid "Lossless Compression"
-msgstr ""
+msgstr "Kayıpsız Sıkıştırma"
#: servers/visual_server.cpp
-#, fuzzy
msgid "Force PNG"
-msgstr "Zorla Gönder"
+msgstr "PNG Uzantısını Kullanmaya Zorla"
#: servers/visual_server.cpp
msgid "WebP Compression Level"
@@ -27907,14 +28258,12 @@ msgid "Quadrant 3 Subdiv"
msgstr ""
#: servers/visual_server.cpp
-#, fuzzy
msgid "Shadows"
-msgstr "Gölgelendirici"
+msgstr "Gölgeler"
#: servers/visual_server.cpp
-#, fuzzy
msgid "Filter Mode"
-msgstr "Düğümleri Süzgeçden Geçir"
+msgstr "Filtre Modu"
#: servers/visual_server.cpp
#, fuzzy
@@ -27951,21 +28300,20 @@ msgid "Mesh Storage"
msgstr ""
#: servers/visual_server.cpp
-#, fuzzy
msgid "Split Stream"
-msgstr "Eğriyi Böl"
+msgstr "Akışı Böl"
#: servers/visual_server.cpp
msgid "Use Physical Light Attenuation"
-msgstr ""
+msgstr "Fiziksel Işık Zayıflatmayı Kullanın"
#: servers/visual_server.cpp
msgid "Depth Prepass"
-msgstr ""
+msgstr "Derinlik Ön Geçişi"
#: servers/visual_server.cpp
msgid "Disable For Vendors"
-msgstr ""
+msgstr "Bu Satıcılar İçin Devre Dışı Bırak"
#: servers/visual_server.cpp
msgid "Anisotropic Filter Level"
@@ -28016,12 +28364,11 @@ msgstr ""
#: servers/visual_server.cpp
msgid "Legacy Stream"
-msgstr ""
+msgstr "Eski Akış"
#: servers/visual_server.cpp
-#, fuzzy
msgid "Batching"
-msgstr "Aranıyor..."
+msgstr "Yığınlama"
#: servers/visual_server.cpp
msgid "Use Batching"
@@ -28072,25 +28419,23 @@ msgstr "Çerçeveyi Yapıştır"
#: servers/visual_server.cpp
msgid "GLES2"
-msgstr ""
+msgstr "GLES2"
#: servers/visual_server.cpp
msgid "Compatibility"
-msgstr ""
+msgstr "Uyumluluk"
#: servers/visual_server.cpp
msgid "Disable Half Float"
-msgstr ""
+msgstr "Yarım Float'ı devre dışı bırak"
#: servers/visual_server.cpp
-#, fuzzy
msgid "Enable High Float"
-msgstr "Önceliklemeyi Etkinleştir"
+msgstr "Yüksek Float'ı Etkinleştir"
#: servers/visual_server.cpp
-#, fuzzy
msgid "Precision"
-msgstr "İfade"
+msgstr "Hassasiyet"
#: servers/visual_server.cpp
msgid "UV Contract"
@@ -28110,9 +28455,8 @@ msgid "PVS Logging"
msgstr ""
#: servers/visual_server.cpp
-#, fuzzy
msgid "Use Signals"
-msgstr "sinyaller"
+msgstr "Sinyal Kullan"
#: servers/visual_server.cpp
#, fuzzy
@@ -28131,12 +28475,11 @@ msgstr "Emilme Ayırmayı Görüntüle"
#: servers/visual_server.cpp
msgid "Max Active Spheres"
-msgstr ""
+msgstr "Maks. Aktif Küre Sayısı"
#: servers/visual_server.cpp
-#, fuzzy
msgid "Max Active Polygons"
-msgstr "Çokgeni Taşı"
+msgstr "Maks. Aktif Çokgen Sayısı"
#: servers/visual_server.cpp
#, fuzzy
diff --git a/editor/translations/tt.po b/editor/translations/tt.po
deleted file mode 100644
index 6b42edb7b0..0000000000
--- a/editor/translations/tt.po
+++ /dev/null
@@ -1,25676 +0,0 @@
-# Tatar translation of the Godot Engine editor.
-# Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur.
-# Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md).
-# This file is distributed under the same license as the Godot source code.
-#
-# Bualma Show <appleaidar6@gmail.com>, 2021.
-msgid ""
-msgstr ""
-"Project-Id-Version: Godot Engine editor\n"
-"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2021-06-07 23:43+0000\n"
-"Last-Translator: Bualma Show <appleaidar6@gmail.com>\n"
-"Language-Team: Tatar <https://hosted.weblate.org/projects/godot-engine/godot/"
-"tt/>\n"
-"Language: tt\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 4.7-dev\n"
-
-#: core/bind/core_bind.cpp main/main.cpp
-msgid "Tablet Driver"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Clipboard"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Current Screen"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Exit Code"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "V-Sync Enabled"
-msgstr ""
-
-#: core/bind/core_bind.cpp main/main.cpp
-msgid "V-Sync Via Compositor"
-msgstr ""
-
-#: core/bind/core_bind.cpp main/main.cpp
-msgid "Delta Smoothing"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Low Processor Usage Mode"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Low Processor Usage Mode Sleep (µsec)"
-msgstr ""
-
-#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
-msgid "Keep Screen On"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Min Window Size"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Max Window Size"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Screen Orientation"
-msgstr ""
-
-#: core/bind/core_bind.cpp core/project_settings.cpp main/main.cpp
-#: platform/uwp/os_uwp.cpp
-msgid "Window"
-msgstr ""
-
-#: core/bind/core_bind.cpp core/project_settings.cpp
-msgid "Borderless"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Per Pixel Transparency Enabled"
-msgstr ""
-
-#: core/bind/core_bind.cpp core/project_settings.cpp
-msgid "Fullscreen"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Maximized"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Minimized"
-msgstr ""
-
-#: core/bind/core_bind.cpp core/project_settings.cpp scene/gui/dialogs.cpp
-#: scene/gui/graph_node.cpp
-msgid "Resizable"
-msgstr ""
-
-#: core/bind/core_bind.cpp core/os/input_event.cpp scene/2d/node_2d.cpp
-#: scene/2d/physics_body_2d.cpp scene/2d/remote_transform_2d.cpp
-#: scene/3d/physics_body.cpp scene/3d/remote_transform.cpp
-#: scene/gui/control.cpp scene/gui/line_edit.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Position"
-msgstr ""
-
-#: core/bind/core_bind.cpp core/project_settings.cpp editor/editor_settings.cpp
-#: main/main.cpp modules/gridmap/grid_map.cpp
-#: modules/visual_script/visual_script_nodes.cpp scene/2d/tile_map.cpp
-#: scene/3d/camera.cpp scene/3d/light.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
-#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/texture.cpp
-#: scene/resources/visual_shader.cpp servers/visual_server.cpp
-msgid "Size"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Endian Swap"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Editor Hint"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Print Error Messages"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Iterations Per Second"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Target FPS"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Time Scale"
-msgstr ""
-
-#: core/bind/core_bind.cpp main/main.cpp
-msgid "Physics Jitter Fix"
-msgstr ""
-
-#: core/bind/core_bind.cpp editor/plugins/version_control_editor_plugin.cpp
-msgid "Error"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Error String"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Error Line"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Result"
-msgstr ""
-
-#: core/command_queue_mt.cpp core/message_queue.cpp main/main.cpp
-msgid "Memory"
-msgstr ""
-
-#: core/command_queue_mt.cpp core/message_queue.cpp
-#: core/register_core_types.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles2/rasterizer_scene_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-#: drivers/gles3/rasterizer_storage_gles3.cpp main/main.cpp
-#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
-#: servers/visual_server.cpp
-msgid "Limits"
-msgstr ""
-
-#: core/command_queue_mt.cpp
-msgid "Command Queue"
-msgstr ""
-
-#: core/command_queue_mt.cpp
-msgid "Multithreading Queue Size (KB)"
-msgstr ""
-
-#: core/func_ref.cpp modules/visual_script/visual_script_builtin_funcs.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Function"
-msgstr ""
-
-#: core/image.cpp core/packed_data_container.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-msgid "Data"
-msgstr ""
-
-#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
-msgid "Network"
-msgstr ""
-
-#: core/io/file_access_network.cpp
-msgid "Remote FS"
-msgstr ""
-
-#: core/io/file_access_network.cpp
-msgid "Page Size"
-msgstr ""
-
-#: core/io/file_access_network.cpp
-msgid "Page Read Ahead"
-msgstr ""
-
-#: core/io/http_client.cpp
-msgid "Blocking Mode Enabled"
-msgstr ""
-
-#: core/io/http_client.cpp
-msgid "Connection"
-msgstr ""
-
-#: core/io/http_client.cpp
-msgid "Read Chunk Size"
-msgstr ""
-
-#: core/io/marshalls.cpp
-msgid "Object ID"
-msgstr ""
-
-#: core/io/multiplayer_api.cpp core/io/packet_peer.cpp
-msgid "Allow Object Decoding"
-msgstr ""
-
-#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
-msgid "Refuse New Network Connections"
-msgstr ""
-
-#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
-msgid "Network Peer"
-msgstr ""
-
-#: core/io/multiplayer_api.cpp scene/animation/animation_player.cpp
-msgid "Root Node"
-msgstr ""
-
-#: core/io/networked_multiplayer_peer.cpp
-msgid "Refuse New Connections"
-msgstr ""
-
-#: core/io/networked_multiplayer_peer.cpp
-msgid "Transfer Mode"
-msgstr ""
-
-#: core/io/packet_peer.cpp
-msgid "Encode Buffer Max Size"
-msgstr ""
-
-#: core/io/packet_peer.cpp
-msgid "Input Buffer Max Size"
-msgstr ""
-
-#: core/io/packet_peer.cpp
-msgid "Output Buffer Max Size"
-msgstr ""
-
-#: core/io/packet_peer.cpp
-msgid "Stream Peer"
-msgstr ""
-
-#: core/io/stream_peer.cpp
-msgid "Big Endian"
-msgstr ""
-
-#: core/io/stream_peer.cpp
-msgid "Data Array"
-msgstr ""
-
-#: core/io/stream_peer_ssl.cpp
-msgid "Blocking Handshake"
-msgstr ""
-
-#: core/io/udp_server.cpp
-msgid "Max Pending Connections"
-msgstr ""
-
-#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
-#: modules/visual_script/visual_script_builtin_funcs.cpp
-msgid "Invalid type argument to convert(), use TYPE_* constants."
-msgstr "convert() өчен ÑракÑыз аргумент төре, TYPE_ * тотрыклы кулланыгыз."
-
-#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
-msgid "Expected a string of length 1 (a character)."
-msgstr "Озынлык Ñызык 1 (Ñгъни Ñимвол) көтелгән иде."
-
-#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
-#: modules/mono/glue/gd_glue.cpp
-#: modules/visual_script/visual_script_builtin_funcs.cpp
-msgid "Not enough bytes for decoding bytes, or invalid format."
-msgstr ""
-"Байтларны декодациÑләү өчен байтлар җитәрлек түгел Ñки Ñ€Ó©Ñ…Ñәт ителми торган "
-"формат."
-
-#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
-msgstr ""
-
-#: core/math/expression.cpp
-msgid "self can't be used because instance is null (not passed)"
-msgstr ""
-
-#: core/math/expression.cpp
-msgid "Invalid operands to operator %s, %s and %s."
-msgstr ""
-
-#: core/math/expression.cpp
-msgid "Invalid index of type %s for base type %s"
-msgstr ""
-
-#: core/math/expression.cpp
-msgid "Invalid named index '%s' for base type %s"
-msgstr ""
-
-#: core/math/expression.cpp
-msgid "Invalid arguments to construct '%s'"
-msgstr ""
-
-#: core/math/expression.cpp
-msgid "On call to '%s':"
-msgstr ""
-
-#: core/math/random_number_generator.cpp
-#: modules/opensimplex/open_simplex_noise.cpp
-msgid "Seed"
-msgstr ""
-
-#: core/math/random_number_generator.cpp
-msgid "State"
-msgstr ""
-
-#: core/message_queue.cpp
-msgid "Message Queue"
-msgstr ""
-
-#: core/message_queue.cpp
-msgid "Max Size (KB)"
-msgstr ""
-
-#: core/os/input_event.cpp editor/project_settings_editor.cpp
-#: servers/audio_server.cpp
-msgid "Device"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Alt"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Shift"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Control"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Meta"
-msgstr ""
-
-#: core/os/input_event.cpp
-#, fuzzy
-msgid "Command"
-msgstr "Җәмәгать"
-
-#: core/os/input_event.cpp scene/2d/touch_screen_button.cpp
-#: scene/gui/base_button.cpp scene/gui/texture_button.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Pressed"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Scancode"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Physical Scancode"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Unicode"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Echo"
-msgstr ""
-
-#: core/os/input_event.cpp scene/gui/base_button.cpp
-msgid "Button Mask"
-msgstr ""
-
-#: core/os/input_event.cpp scene/2d/node_2d.cpp scene/gui/control.cpp
-msgid "Global Position"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Factor"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Button Index"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Doubleclick"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Tilt"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Pressure"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Relative"
-msgstr ""
-
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/animation_player.cpp scene/resources/environment.cpp
-#: scene/resources/particles_material.cpp
-msgid "Speed"
-msgstr ""
-
-#: core/os/input_event.cpp editor/project_settings_editor.cpp
-#: scene/3d/sprite_3d.cpp
-msgid "Axis"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Axis Value"
-msgstr ""
-
-#: core/os/input_event.cpp modules/visual_script/visual_script_func_nodes.cpp
-msgid "Index"
-msgstr ""
-
-#: core/os/input_event.cpp editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/touch_screen_button.cpp
-msgid "Action"
-msgstr ""
-
-#: core/os/input_event.cpp scene/resources/environment.cpp
-#: scene/resources/material.cpp
-msgid "Strength"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Delta"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Channel"
-msgstr ""
-
-#: core/os/input_event.cpp main/main.cpp
-msgid "Message"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Pitch"
-msgstr ""
-
-#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
-msgid "Velocity"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Instrument"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Controller Number"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Controller Value"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-#: platform/windows/export/export.cpp
-msgid "Application"
-msgstr ""
-
-#: core/project_settings.cpp main/main.cpp
-msgid "Config"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Project Settings Override"
-msgstr ""
-
-#: core/project_settings.cpp core/resource.cpp
-#: editor/animation_track_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/editor_help_search.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_profiler.cpp editor/plugins/tile_set_editor_plugin.cpp
-#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp
-#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
-#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
-#: scene/3d/skeleton.cpp scene/main/node.cpp scene/resources/mesh_library.cpp
-#: scene/resources/skin.cpp
-msgid "Name"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
-msgid "Description"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
-msgid "Run"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/run_settings_dialog.cpp main/main.cpp
-msgid "Main Scene"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Disable stdout"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Disable stderr"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Use Hidden Project Data Directory"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Use Custom User Dir"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Custom User Dir Name"
-msgstr ""
-
-#: core/project_settings.cpp main/main.cpp
-#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
-#: platform/uwp/os_uwp.cpp
-msgid "Display"
-msgstr ""
-
-#: core/project_settings.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/opensimplex/noise_texture.cpp scene/2d/line_2d.cpp
-#: scene/3d/label_3d.cpp scene/gui/text_edit.cpp scene/resources/texture.cpp
-msgid "Width"
-msgstr ""
-
-#: core/project_settings.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/gltf/gltf_node.cpp modules/opensimplex/noise_texture.cpp
-#: scene/2d/light_2d.cpp scene/resources/capsule_shape.cpp
-#: scene/resources/capsule_shape_2d.cpp scene/resources/cylinder_shape.cpp
-#: scene/resources/font.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/primitive_meshes.cpp scene/resources/texture.cpp
-msgid "Height"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Always On Top"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Test Width"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Test Height"
-msgstr ""
-
-#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
-msgid "Audio"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Default Bus Layout"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_export.cpp
-#: editor/editor_file_system.cpp editor/editor_node.cpp
-#: editor/editor_settings.cpp editor/script_create_dialog.cpp
-#: scene/2d/camera_2d.cpp scene/3d/light.cpp scene/main/node.cpp
-msgid "Editor"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Main Run Args"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Search In File Extensions"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Script Templates Search Path"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr ""
-
-#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
-#: scene/3d/collision_object.cpp scene/gui/control.cpp
-msgid "Input"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Accept"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Select"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Cancel"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Focus Next"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Focus Prev"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Left"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Right"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Up"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Down"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Page Up"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Page Down"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Home"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI End"
-msgstr ""
-
-#: core/project_settings.cpp main/main.cpp modules/bullet/register_types.cpp
-#: modules/bullet/space_bullet.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp scene/main/scene_tree.cpp scene/main/viewport.cpp
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#: servers/physics/space_sw.cpp servers/physics_2d/physics_2d_server_sw.cpp
-#: servers/physics_2d/physics_2d_server_wrap_mt.h
-#: servers/physics_2d/space_2d_sw.cpp servers/physics_2d_server.cpp
-#: servers/physics_server.cpp
-msgid "Physics"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_settings.cpp
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp
-#: editor/plugins/spatial_editor_plugin.cpp main/main.cpp
-#: modules/bullet/register_types.cpp modules/bullet/space_bullet.cpp
-#: scene/3d/physics_body.cpp scene/resources/world.cpp
-#: servers/physics/space_sw.cpp servers/physics_server.cpp
-msgid "3D"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Smooth Trimesh Collision"
-msgstr ""
-
-#: core/project_settings.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles2/rasterizer_scene_gles2.cpp
-#: drivers/gles2/rasterizer_storage_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-#: drivers/gles3/rasterizer_storage_gles3.cpp main/main.cpp
-#: modules/lightmapper_cpu/register_types.cpp scene/main/scene_tree.cpp
-#: scene/main/viewport.cpp servers/visual/visual_server_scene.cpp
-#: servers/visual_server.cpp
-msgid "Rendering"
-msgstr ""
-
-#: core/project_settings.cpp drivers/gles2/rasterizer_storage_gles2.cpp
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-#: drivers/gles3/rasterizer_storage_gles3.cpp main/main.cpp
-#: modules/lightmapper_cpu/register_types.cpp scene/3d/baked_lightmap.cpp
-#: scene/main/scene_tree.cpp scene/resources/environment.cpp
-#: scene/resources/multimesh.cpp servers/visual/visual_server_scene.cpp
-#: servers/visual_server.cpp
-msgid "Quality"
-msgstr ""
-
-#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
-msgid "Filters"
-msgstr ""
-
-#: core/project_settings.cpp scene/main/viewport.cpp
-msgid "Sharpen Intensity"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
-#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp
-#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
-#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
-#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
-#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
-#: servers/visual_server.cpp
-msgid "Debug"
-msgstr ""
-
-#: core/project_settings.cpp main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/resources/dynamic_font.cpp
-msgid "Settings"
-msgstr ""
-
-#: core/project_settings.cpp editor/script_editor_debugger.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Profiler"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Max Functions"
-msgstr ""
-
-#: core/project_settings.cpp scene/3d/vehicle_body.cpp
-msgid "Compression"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Formats"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Zstd"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Long Distance Matching"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Compression Level"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Window Log Size"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Zlib"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Gzip"
-msgstr ""
-
-#: core/project_settings.cpp platform/android/export/export.cpp
-msgid "Android"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Modules"
-msgstr ""
-
-#: core/register_core_types.cpp
-msgid "TCP"
-msgstr ""
-
-#: core/register_core_types.cpp
-msgid "Connect Timeout Seconds"
-msgstr ""
-
-#: core/register_core_types.cpp
-msgid "Packet Peer Stream"
-msgstr ""
-
-#: core/register_core_types.cpp
-msgid "Max Buffer (Power of 2)"
-msgstr ""
-
-#: core/register_core_types.cpp editor/editor_settings.cpp main/main.cpp
-msgid "SSL"
-msgstr ""
-
-#: core/register_core_types.cpp main/main.cpp
-msgid "Certificates"
-msgstr ""
-
-#: core/resource.cpp editor/dependency_editor.cpp
-#: editor/editor_resource_picker.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Resource"
-msgstr ""
-
-#: core/resource.cpp
-msgid "Local To Scene"
-msgstr ""
-
-#: core/resource.cpp editor/dependency_editor.cpp
-#: editor/editor_autoload_settings.cpp editor/plugins/path_editor_plugin.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Path"
-msgstr ""
-
-#: core/script_language.cpp
-msgid "Source Code"
-msgstr ""
-
-#: core/translation.cpp editor/project_settings_editor.cpp
-msgid "Locale"
-msgstr ""
-
-#: core/translation.cpp
-msgid "Test"
-msgstr ""
-
-#: core/translation.cpp scene/resources/font.cpp
-msgid "Fallback"
-msgstr ""
-
-#: core/ustring.cpp scene/resources/segment_shape_2d.cpp
-msgid "B"
-msgstr ""
-
-#: core/ustring.cpp
-msgid "KiB"
-msgstr ""
-
-#: core/ustring.cpp
-msgid "MiB"
-msgstr ""
-
-#: core/ustring.cpp
-msgid "GiB"
-msgstr ""
-
-#: core/ustring.cpp
-msgid "TiB"
-msgstr ""
-
-#: core/ustring.cpp
-msgid "PiB"
-msgstr ""
-
-#: core/ustring.cpp
-msgid "EiB"
-msgstr ""
-
-#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles2/rasterizer_scene_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-#: drivers/gles3/rasterizer_storage_gles3.cpp modules/gltf/gltf_state.cpp
-msgid "Buffers"
-msgstr ""
-
-#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-msgid "Canvas Polygon Buffer Size (KB)"
-msgstr ""
-
-#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-msgid "Canvas Polygon Index Buffer Size (KB)"
-msgstr ""
-
-#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp editor/editor_settings.cpp
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp main/main.cpp
-#: scene/2d/physics_body_2d.cpp scene/resources/world_2d.cpp
-#: servers/physics_2d/physics_2d_server_sw.cpp
-#: servers/physics_2d/physics_2d_server_wrap_mt.h
-#: servers/physics_2d/space_2d_sw.cpp servers/physics_2d_server.cpp
-#: servers/visual_server.cpp
-msgid "2D"
-msgstr ""
-
-#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-msgid "Snapping"
-msgstr ""
-
-#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-msgid "Use GPU Pixel Snap"
-msgstr ""
-
-#: drivers/gles2/rasterizer_scene_gles2.cpp
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Immediate Buffer Size (KB)"
-msgstr ""
-
-#: drivers/gles2/rasterizer_storage_gles2.cpp
-#: drivers/gles3/rasterizer_storage_gles3.cpp
-msgid "Lightmapping"
-msgstr ""
-
-#: drivers/gles2/rasterizer_storage_gles2.cpp
-#: drivers/gles3/rasterizer_storage_gles3.cpp
-msgid "Use Bicubic Sampling"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Max Renderable Elements"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Max Renderable Lights"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Max Renderable Reflections"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Max Lights Per Object"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Subsurface Scattering"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp editor/animation_track_editor.cpp
-#: editor/import/resource_importer_texture.cpp
-#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
-#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
-#: scene/2d/remote_transform_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/remote_transform.cpp scene/3d/spatial.cpp
-#: scene/animation/animation_blend_tree.cpp scene/gui/control.cpp
-#: scene/main/canvas_layer.cpp scene/resources/environment.cpp
-#: scene/resources/material.cpp scene/resources/particles_material.cpp
-msgid "Scale"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Follow Surface"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Weight Samples"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Voxel Cone Tracing"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp scene/resources/environment.cpp
-msgid "High Quality"
-msgstr ""
-
-#: drivers/gles3/rasterizer_storage_gles3.cpp
-msgid "Blend Shape Max Buffer Size (KB)"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Free"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Balanced"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Mirror"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp editor/editor_profiler.cpp
-msgid "Time:"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Value:"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Insert Key Here"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Duplicate Selected Key(s)"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Delete Selected Key(s)"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Add Bezier Point"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Move Bezier Points"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
-msgid "Anim Duplicate Keys"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
-msgid "Anim Delete Keys"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Change Keyframe Time"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Change Transition"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Change Transform"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Change Keyframe Value"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Change Call"
-msgstr ""
-
-#: editor/animation_track_editor.cpp scene/2d/animated_sprite.cpp
-#: scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Frame"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_profiler.cpp
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/particles_material.cpp servers/visual_server.cpp
-msgid "Time"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
-#: platform/osx/export/export.cpp
-msgid "Location"
-msgstr ""
-
-#: editor/animation_track_editor.cpp modules/gltf/gltf_node.cpp
-#: scene/2d/polygon_2d.cpp scene/2d/remote_transform_2d.cpp
-#: scene/3d/remote_transform.cpp scene/3d/spatial.cpp scene/gui/control.cpp
-msgid "Rotation"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_nodes.cpp scene/gui/range.cpp
-msgid "Value"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Arg Count"
-msgstr ""
-
-#: editor/animation_track_editor.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Args"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_settings.cpp
-#: editor/script_editor_debugger.cpp modules/gltf/gltf_accessor.cpp
-#: modules/gltf/gltf_light.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/3d/physics_body.cpp scene/resources/visual_shader_nodes.cpp
-msgid "Type"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "In Handle"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Out Handle"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#: editor/import/resource_importer_texture.cpp
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Start Offset"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "End Offset"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_settings.cpp
-#: editor/import/resource_importer_scene.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
-#: scene/animation/animation_blend_tree.cpp
-#: scene/resources/particles_material.cpp
-msgid "Animation"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Easing"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Multi Change Keyframe Time"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Multi Change Transition"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Multi Change Transform"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Multi Change Keyframe Value"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Multi Change Call"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Change Animation Length"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Change Animation Loop"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Property Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "3D Transform Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Call Method Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Bezier Curve Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Audio Playback Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation Playback Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation length (frames)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation length (seconds)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Add Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation Looping"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Functions:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Audio Clips:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Clips:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Change Track Path"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Toggle this track on/off."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Update Mode (How this property is set)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp scene/resources/gradient.cpp
-msgid "Interpolation Mode"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Loop Wrap Mode (Interpolate end with beginning on loop)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Remove this track."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Time (s): "
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Toggle Track Enabled"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Continuous"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Discrete"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Trigger"
-msgstr ""
-
-#: editor/animation_track_editor.cpp scene/3d/baked_lightmap.cpp
-msgid "Capture"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Nearest"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/plugins/curve_editor_plugin.cpp
-#: editor/property_editor.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
-msgid "Linear"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Cubic"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Clamp Loop Interp"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Wrap Loop Interp"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Insert Key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Duplicate Key(s)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Add RESET Value(s)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Delete Key(s)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Change Animation Update Mode"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Change Animation Interpolation Mode"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Change Animation Loop Mode"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Remove Anim Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_settings.cpp
-#: editor/plugins/path_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Editors"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_settings.cpp
-msgid "Confirm Insert Track"
-msgstr ""
-
-#. TRANSLATORS: %s will be replaced by a phrase describing the target of track.
-#: editor/animation_track_editor.cpp
-msgid "Create NEW track for %s and insert key?"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Create %d NEW tracks and insert keys?"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp editor/editor_feature_profile.cpp
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#: editor/script_create_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Create"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Insert"
-msgstr ""
-
-#. TRANSLATORS: This describes the target of new animation track, will be inserted into another string.
-#: editor/animation_track_editor.cpp
-msgid "node '%s'"
-msgstr ""
-
-#. TRANSLATORS: This describes the target of new animation track, will be inserted into another string.
-#: editor/animation_track_editor.cpp
-msgid "animation"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "AnimationPlayer can't animate itself, only other players."
-msgstr ""
-
-#. TRANSLATORS: This describes the target of new animation track, will be inserted into another string.
-#: editor/animation_track_editor.cpp
-msgid "property '%s'"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Create & Insert"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Insert Track & Key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Insert Key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Change Animation Step"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Rearrange Tracks"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Transform tracks only apply to Spatial-based nodes."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid ""
-"Audio tracks can only point to nodes of type:\n"
-"-AudioStreamPlayer\n"
-"-AudioStreamPlayer2D\n"
-"-AudioStreamPlayer3D"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation tracks can only point to AnimationPlayer nodes."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Not possible to add a new track without a root"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Invalid track for Bezier (no suitable sub-properties)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Add Bezier Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Track path is invalid, so can't add a key."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Track is not of type Spatial, can't insert key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Add Transform Track Key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Add Track Key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Track path is invalid, so can't add a method key."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Add Method Track Key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Move Keys"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp scene/2d/node_2d.cpp
-#: scene/3d/spatial.cpp scene/main/canvas_layer.cpp
-#: servers/camera/camera_feed.cpp servers/physics_2d_server.cpp
-#: servers/physics_server.cpp
-msgid "Transform"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_help.cpp
-msgid "Methods"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Bezier"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Clipboard is empty!"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Paste Tracks"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Scale Keys"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid ""
-"This option does not work for Bezier editing, as it's only a single track."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Add RESET Keys"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid ""
-"This animation belongs to an imported scene, so changes to imported tracks "
-"will not be saved.\n"
-"\n"
-"To enable the ability to add custom tracks, navigate to the scene's import "
-"settings and set\n"
-"\"Animation > Storage\" to \"Files\", enable \"Animation > Keep Custom "
-"Tracks\", then re-import.\n"
-"Alternatively, use an import preset that imports animations to separate "
-"files."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Warning: Editing imported animation"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Select an AnimationPlayer node to create and edit animations."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Only show tracks from nodes selected in tree."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Group tracks by node or display them as plain list."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Snap:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation step value."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Seconds"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
-#: scene/resources/texture.cpp
-msgid "FPS"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation properties."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Copy Tracks"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Scale Selection"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Scale From Cursor"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Duplicate Selection"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Duplicate Transposed"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Delete Selection"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Go to Next Step"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Go to Previous Step"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Apply Reset"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Optimize Animation"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Clean-Up Animation"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Pick the node that will be animated:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Use Bezier Curves"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Create RESET Track(s)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim. Optimizer"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Max. Linear Error:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Max. Angular Error:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Max Optimizable Angle:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp scene/3d/room_manager.cpp
-#: servers/visual_server.cpp
-msgid "Optimize"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Remove invalid keys"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Remove unresolved and empty tracks"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Clean-up all animations"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Clean-Up Animation(s) (NO UNDO!)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Clean-Up"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Scale Ratio:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Select Tracks to Copy"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_resource_picker.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Copy"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Select All/None"
-msgstr ""
-
-#: editor/animation_track_editor_plugins.cpp
-msgid "Add Audio Track Clip"
-msgstr ""
-
-#: editor/animation_track_editor_plugins.cpp
-msgid "Change Audio Track Clip Start Offset"
-msgstr ""
-
-#: editor/animation_track_editor_plugins.cpp
-msgid "Change Audio Track Clip End Offset"
-msgstr ""
-
-#: editor/array_property_edit.cpp
-msgid "Resize Array"
-msgstr ""
-
-#: editor/array_property_edit.cpp
-msgid "Change Array Value Type"
-msgstr ""
-
-#: editor/array_property_edit.cpp
-msgid "Change Array Value"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Go to Line"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Line Number:"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "%d replaced."
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "%d match."
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "%d matches."
-msgstr ""
-
-#: editor/code_editor.cpp editor/find_in_files.cpp
-msgid "Match Case"
-msgstr ""
-
-#: editor/code_editor.cpp editor/find_in_files.cpp
-msgid "Whole Words"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr ""
-
-#: editor/code_editor.cpp editor/plugins/script_text_editor.cpp
-#: editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
-#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Toggle Scripts Panel"
-msgstr ""
-
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/texture_region_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
-msgid "Zoom In"
-msgstr ""
-
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/texture_region_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
-msgid "Zoom Out"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Reset Zoom"
-msgstr ""
-
-#: editor/code_editor.cpp modules/gdscript/gdscript.cpp
-msgid "Warnings"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Line and column numbers."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Method in target node must be specified."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Method name must be a valid identifier."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid ""
-"Target method not found. Specify a valid method or attach a script to the "
-"target node."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Connect to Node:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Connect to Script:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "From Signal:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Scene does not contain any script."
-msgstr ""
-
-#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
-#: editor/groups_editor.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Add"
-msgstr ""
-
-#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-msgid "Remove"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Add Extra Call Argument:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Extra Call Arguments:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Receiver Method:"
-msgstr ""
-
-#: editor/connections_dialog.cpp scene/3d/room_manager.cpp
-#: servers/visual_server.cpp
-msgid "Advanced"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Deferred"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid ""
-"Defers the signal, storing it in a queue and only firing it at idle time."
-msgstr ""
-
-#: editor/connections_dialog.cpp scene/resources/texture.cpp
-msgid "Oneshot"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Disconnects the signal after its first emission."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Cannot connect signal"
-msgstr ""
-
-#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/export_template_manager.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Close"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Connect"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Signal:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Connect '%s' to '%s'"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Disconnect '%s' from '%s'"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Disconnect all from signal: '%s'"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Connect..."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Disconnect"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Connect a Signal to a Method"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Edit Connection:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
-msgstr ""
-
-#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
-msgid "Signals"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Filter signals"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Are you sure you want to remove all connections from this signal?"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Disconnect All"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Edit..."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Go to Method"
-msgstr ""
-
-#: editor/create_dialog.cpp
-msgid "Change %s Type"
-msgstr ""
-
-#: editor/create_dialog.cpp editor/project_settings_editor.cpp
-msgid "Change"
-msgstr ""
-
-#: editor/create_dialog.cpp
-msgid "Create New %s"
-msgstr ""
-
-#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr ""
-
-#: editor/create_dialog.cpp editor/property_selector.cpp
-msgid "No description available for %s."
-msgstr ""
-
-#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/filesystem_dock.cpp
-msgid "Favorites:"
-msgstr ""
-
-#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
-msgid "Recent:"
-msgstr ""
-
-#: editor/create_dialog.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp editor/rename_dialog.cpp
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Search:"
-msgstr ""
-
-#: editor/create_dialog.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Matches:"
-msgstr ""
-
-#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Description:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Search Replacement For:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Dependencies For:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid ""
-"Scene '%s' is currently being edited.\n"
-"Changes will only take effect when reloaded."
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid ""
-"Resource '%s' is in use.\n"
-"Changes will only take effect when reloaded."
-msgstr ""
-
-#: editor/dependency_editor.cpp
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Dependencies"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Dependencies:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Fix Broken"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Dependency Editor"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Search Replacement Resource:"
-msgstr ""
-
-#: editor/dependency_editor.cpp editor/editor_file_dialog.cpp
-#: editor/editor_help_search.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/script_create_dialog.cpp
-#: modules/visual_script/visual_script_property_selector.cpp
-#: scene/gui/file_dialog.cpp
-msgid "Open"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid ""
-"Remove the selected files from the project? (Cannot be undone.)\n"
-"Depending on your filesystem configuration, the files will either be moved "
-"to the system trash or deleted permanently."
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid ""
-"The files being removed are required by other resources in order for them to "
-"work.\n"
-"Remove them anyway? (Cannot be undone.)\n"
-"Depending on your filesystem configuration, the files will either be moved "
-"to the system trash or deleted permanently."
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Cannot remove:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Error loading:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Load failed due to missing dependencies:"
-msgstr ""
-
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-msgid "Open Anyway"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Which action should be taken?"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Fix Dependencies"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Errors loading!"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Permanently delete %d item(s)? (No undo!)"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Show Dependencies"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Orphan Resource Explorer"
-msgstr ""
-
-#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
-#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
-#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
-msgid "Delete"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Owns"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Resources Without Explicit Ownership:"
-msgstr ""
-
-#: editor/dictionary_property_edit.cpp
-msgid "Change Dictionary Key"
-msgstr ""
-
-#: editor/dictionary_property_edit.cpp
-msgid "Change Dictionary Value"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Thanks from the Godot community!"
-msgstr ""
-
-#: editor/editor_about.cpp editor/editor_node.cpp editor/project_manager.cpp
-msgid "Click to copy."
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Project Founders"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Lead Developer"
-msgstr ""
-
-#. TRANSLATORS: This refers to a job title.
-#: editor/editor_about.cpp
-msgctxt "Job Title"
-msgid "Project Manager"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Authors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Platinum Sponsors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Gold Sponsors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Silver Sponsors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Bronze Sponsors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Mini Sponsors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Gold Donors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Silver Donors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Bronze Donors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Donors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "License"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Third-party Licenses"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid ""
-"Godot Engine relies on a number of third-party free and open source "
-"libraries, all compatible with the terms of its MIT license. The following "
-"is an exhaustive list of all such third-party components with their "
-"respective copyright statements and license terms."
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "All Components"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Components"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Licenses"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "Error opening asset file for \"%s\" (not in ZIP format)."
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "%s (already exists)"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "Contents of asset \"%s\" - No files conflict with your project:"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "Uncompressing Assets"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "The following files failed extraction from asset \"%s\":"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "(and %s more files)"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "Asset \"%s\" installed successfully!"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Success!"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp editor/editor_node.cpp
-msgid "Install"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "Asset Installer"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Speakers"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Add Effect"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Rename Audio Bus"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Change Audio Bus Volume"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Toggle Audio Bus Solo"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Toggle Audio Bus Mute"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Toggle Audio Bus Bypass Effects"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Select Audio Bus Send"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Add Audio Bus Effect"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Move Bus Effect"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Delete Bus Effect"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Drag & drop to rearrange."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Solo"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Mute"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Bypass"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Bus Options"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
-msgid "Duplicate"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Reset Volume"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Delete Effect"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Add Audio Bus"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Master bus can't be deleted!"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Delete Audio Bus"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Duplicate Audio Bus"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Reset Bus Volume"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Move Audio Bus"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Save Audio Bus Layout As..."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Location for New Layout..."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Open Audio Bus Layout"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "There is no '%s' file."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Invalid file, not an audio bus layout."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Error saving file: %s"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Add Bus"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Add a new Audio Bus to this layout."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_create_dialog.cpp
-msgid "Load"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Load an existing Bus Layout."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Save As"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Save this Bus Layout to a file."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp editor/import_dock.cpp
-msgid "Load Default"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Load the default Bus Layout."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Create a new Bus Layout."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Audio Bus Layout"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Invalid name."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Cannot begin with a digit."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Valid characters:"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Must not collide with an existing engine class name."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Must not collide with an existing built-in type name."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Must not collide with an existing global constant name."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Keyword cannot be used as an autoload name."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Autoload '%s' already exists!"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Rename Autoload"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Toggle AutoLoad Globals"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Move Autoload"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Remove Autoload"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
-#: platform/osx/export/export.cpp platform/windows/export/export.cpp
-#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
-#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
-#: scene/resources/material.cpp servers/visual_server.cpp
-msgid "Enable"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Rearrange Autoloads"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Can't add autoload:"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "%s is an invalid path. File does not exist."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "%s is an invalid path. Not in resource path (res://)."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Add AutoLoad"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp
-#: editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/script_create_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Path:"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Node Name:"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Global Variable"
-msgstr ""
-
-#: editor/editor_data.cpp
-msgid "Paste Params"
-msgstr ""
-
-#: editor/editor_data.cpp
-msgid "Updating Scene"
-msgstr ""
-
-#: editor/editor_data.cpp
-msgid "Storing local changes..."
-msgstr ""
-
-#: editor/editor_data.cpp
-msgid "Updating scene..."
-msgstr ""
-
-#: editor/editor_data.cpp editor/editor_resource_picker.cpp
-msgid "[empty]"
-msgstr ""
-
-#: editor/editor_data.cpp editor/plugins/script_text_editor.cpp
-#: editor/plugins/text_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "[unsaved]"
-msgstr ""
-
-#: editor/editor_dir_dialog.cpp
-msgid "Please select a base directory first."
-msgstr ""
-
-#: editor/editor_dir_dialog.cpp
-msgid "Choose a Directory"
-msgstr ""
-
-#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/filesystem_dock.cpp editor/project_manager.cpp
-#: scene/gui/file_dialog.cpp
-msgid "Create Folder"
-msgstr ""
-
-#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
-#: editor/script_create_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp scene/gui/file_dialog.cpp
-msgid "Name:"
-msgstr ""
-
-#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
-msgid "Could not create folder."
-msgstr ""
-
-#: editor/editor_dir_dialog.cpp
-msgid "Choose"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Storing File:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "No export template found at the expected path:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Packing"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid ""
-"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
-"Etc' in Project Settings."
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid ""
-"Target platform requires 'ETC2' texture compression for GLES3. Enable "
-"'Import Etc 2' in Project Settings."
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid ""
-"Target platform requires 'ETC' texture compression for the driver fallback "
-"to GLES2.\n"
-"Enable 'Import Etc' in Project Settings, or disable 'Driver Fallback "
-"Enabled'."
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid ""
-"Target platform requires 'PVRTC' texture compression for GLES2. Enable "
-"'Import Pvrtc' in Project Settings."
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid ""
-"Target platform requires 'ETC2' or 'PVRTC' texture compression for GLES3. "
-"Enable 'Import Etc 2' or 'Import Pvrtc' in Project Settings."
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid ""
-"Target platform requires 'PVRTC' texture compression for the driver fallback "
-"to GLES2.\n"
-"Enable 'Import Pvrtc' in Project Settings, or disable 'Driver Fallback "
-"Enabled'."
-msgstr ""
-
-#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
-#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-msgid "Custom Template"
-msgstr ""
-
-#: editor/editor_export.cpp editor/project_export.cpp
-#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
-#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
-#: platform/uwp/export/export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Binary Format"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "64 Bits"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Embed PCK"
-msgstr ""
-
-#: editor/editor_export.cpp platform/osx/export/export.cpp
-msgid "Texture Format"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "BPTC"
-msgstr ""
-
-#: editor/editor_export.cpp platform/osx/export/export.cpp
-msgid "S3TC"
-msgstr ""
-
-#: editor/editor_export.cpp platform/osx/export/export.cpp
-msgid "ETC"
-msgstr ""
-
-#: editor/editor_export.cpp platform/osx/export/export.cpp
-msgid "ETC2"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "No BPTC Fallbacks"
-msgstr ""
-
-#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
-#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-msgid "Custom debug template not found."
-msgstr ""
-
-#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
-#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-msgid "Custom release template not found."
-msgstr ""
-
-#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Convert Text Resources To Binary On Export"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "3D Editor"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Script Editor"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
-msgid "Asset Library"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Scene Tree Editing"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Node Dock"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "FileSystem Dock"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Import Dock"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Allows to view and edit 3D scenes."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Allows to edit scripts using the integrated script editor."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Provides built-in access to the Asset Library."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Allows editing the node hierarchy in the Scene dock."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid ""
-"Allows to work with signals and groups of the node selected in the Scene "
-"dock."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Allows to browse the local file system via a dedicated dock."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid ""
-"Allows to configure import settings for individual assets. Requires the "
-"FileSystem dock to function."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "(current)"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "(none)"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Remove currently selected profile, '%s'? Cannot be undone."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Profile must be a valid filename and must not contain '.'"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Profile with this name already exists."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "(Editor Disabled, Properties Disabled)"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "(Properties Disabled)"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "(Editor Disabled)"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Class Options:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Enable Contextual Editor"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Class Properties:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Main Features:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Nodes and Classes:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "File '%s' format is invalid, import aborted."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid ""
-"Profile '%s' already exists. Remove it first before importing, import "
-"aborted."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Error saving profile to path: '%s'."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Reset to Default"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Current Profile:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Create Profile"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Remove Profile"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/import/resource_importer_scene.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: modules/fbx/editor_scene_importer_fbx.cpp
-msgid "Import"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
-msgid "Export"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Configure Selected Profile:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Extra Options:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Create or import a profile to edit available classes and properties."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Godot Feature Profile"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Import Profile(s)"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Export Profile"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Manage Editor Feature Profiles"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Default Feature Profile"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Select Current Folder"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File exists, overwrite?"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Select This Folder"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-msgid "Copy Path"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-msgid "Open in File Manager"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/project_manager.cpp
-msgid "Show in File Manager"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-msgid "New Folder..."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/find_in_files.cpp
-msgid "Refresh"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "All Recognized"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "All Files (*)"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
-msgid "Save"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Save a File"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Access"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/editor_settings.cpp
-msgid "Display Mode"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp
-#: editor/import/resource_importer_wav.cpp main/main.cpp
-#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/light_2d.cpp scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
-#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
-#: scene/gui/control.cpp scene/gui/file_dialog.cpp
-#: scene/resources/environment.cpp scene/resources/material.cpp
-#: scene/resources/visual_shader.cpp
-#: servers/audio/effects/audio_effect_distortion.cpp
-msgid "Mode"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Current Dir"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Current File"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Current Path"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/editor_settings.cpp
-#: scene/gui/file_dialog.cpp
-msgid "Show Hidden Files"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Disable Overwrite Warning"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Go Back"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Go Forward"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Go Up"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Toggle Hidden Files"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Toggle Favorite"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/editor_resource_picker.cpp
-#: scene/gui/base_button.cpp
-msgid "Toggle Mode"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Focus Path"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Move Favorite Up"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Move Favorite Down"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Go to previous folder."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Go to next folder."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Go to parent folder."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Refresh files."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "(Un)favorite current folder."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Toggle the visibility of hidden files."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-msgid "View items as a grid of thumbnails."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-msgid "View items as a list."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Directories & Files:"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Preview:"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-#: editor/plugins/version_control_editor_plugin.cpp scene/gui/file_dialog.cpp
-msgid "File:"
-msgstr ""
-
-#: editor/editor_file_system.cpp
-msgid "ScanSources"
-msgstr ""
-
-#: editor/editor_file_system.cpp
-msgid ""
-"There are multiple importers for different types pointing to file %s, import "
-"aborted"
-msgstr ""
-
-#: editor/editor_file_system.cpp
-msgid "(Re)Importing Assets"
-msgstr ""
-
-#: editor/editor_file_system.cpp
-msgid "Reimport Missing Imported Files"
-msgstr ""
-
-#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
-#: scene/resources/style_box.cpp scene/resources/texture.cpp
-msgid "Top"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Class:"
-msgstr ""
-
-#: editor/editor_help.cpp editor/scene_tree_editor.cpp
-#: editor/script_create_dialog.cpp
-msgid "Inherits:"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Inherited by:"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Online Tutorials"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Properties"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "overrides %s:"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "default:"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Theme Properties"
-msgstr ""
-
-#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/gradient.cpp
-msgid "Colors"
-msgstr ""
-
-#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Constants"
-msgstr ""
-
-#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Fonts"
-msgstr ""
-
-#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
-#: platform/iphone/export/export.cpp
-msgid "Icons"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Styles"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Enumerations"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Property Descriptions"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "(value)"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid ""
-"There is currently no description for this property. Please help us by "
-"[color=$color][url=$url]contributing one[/url][/color]!"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Method Descriptions"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid ""
-"There is currently no description for this method. Please help us by "
-"[color=$color][url=$url]contributing one[/url][/color]!"
-msgstr ""
-
-#: editor/editor_help.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: modules/gdscript/editor/gdscript_highlighter.cpp
-#: modules/gdscript/gdscript_editor.cpp
-msgid "Text Editor"
-msgstr ""
-
-#: editor/editor_help.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Help"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Sort Functions Alphabetically"
-msgstr ""
-
-#: editor/editor_help_search.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Search Help"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Case Sensitive"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Show Hierarchy"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Display All"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Classes Only"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Methods Only"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Signals Only"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Constants Only"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Properties Only"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Theme Properties Only"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Member Type"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Class"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Method"
-msgstr ""
-
-#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Signal"
-msgstr ""
-
-#: editor/editor_help_search.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Constant"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Property"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Theme Property"
-msgstr ""
-
-#: editor/editor_inspector.cpp editor/project_settings_editor.cpp
-msgid "Property:"
-msgstr ""
-
-#: editor/editor_inspector.cpp editor/editor_spin_slider.cpp
-msgid "Label"
-msgstr ""
-
-#: editor/editor_inspector.cpp editor/editor_spin_slider.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Read Only"
-msgstr ""
-
-#: editor/editor_inspector.cpp editor/plugins/item_list_editor_plugin.cpp
-msgid "Checkable"
-msgstr ""
-
-#: editor/editor_inspector.cpp editor/plugins/item_list_editor_plugin.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Checked"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Draw Red"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Keying"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Pin value"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid ""
-"Pinning a value forces it to be saved even if it's equal to the default."
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Pin value [Disabled because '%s' is editor-only]"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Set Multiple:"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Pinned %s"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Unpinned %s"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Copy Property"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Paste Property"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Copy Property Path"
-msgstr ""
-
-#: editor/editor_log.cpp
-msgid "Output:"
-msgstr ""
-
-#: editor/editor_log.cpp editor/plugins/tile_map_editor_plugin.cpp
-msgid "Copy Selection"
-msgstr ""
-
-#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/property_editor.cpp editor/scene_tree_dock.cpp
-#: editor/script_editor_debugger.cpp
-#: modules/gdnative/gdnative_library_editor_plugin.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Clear"
-msgstr ""
-
-#: editor/editor_log.cpp
-msgid "Clear Output"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp editor/editor_node.cpp
-#: editor/editor_profiler.cpp
-msgid "Stop"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp editor/editor_profiler.cpp
-#: editor/plugins/animation_state_machine_editor.cpp editor/rename_dialog.cpp
-msgid "Start"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "%s/s"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "Down"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "Up"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp editor/editor_node.cpp
-#: scene/main/node.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Node"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "Incoming RPC"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "Incoming RSET"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "Outgoing RPC"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "Outgoing RSET"
-msgstr ""
-
-#: editor/editor_node.cpp editor/project_manager.cpp
-msgid "New Window"
-msgstr ""
-
-#: editor/editor_node.cpp editor/project_manager.cpp
-msgid "Unnamed Project"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Spins when the editor window redraws.\n"
-"Update Continuously is enabled, which can increase power usage. Click to "
-"disable it."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Spins when the editor window redraws."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Imported resources can't be saved."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-msgid "Error saving resource!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This resource can't be saved because it does not belong to the edited scene. "
-"Make it unique first."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-msgid "Save Resource As..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Can't open file for writing:"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Requested file format unknown:"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Error while saving."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Can't open '%s'. The file could have been moved or deleted."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Error while parsing '%s'."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Unexpected end of file '%s'."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Missing '%s' or its dependencies."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Error while loading '%s'."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Saving Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Analyzing"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Creating Thumbnail"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "This operation can't be done without a tree root."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This scene can't be saved because there is a cyclic instancing inclusion.\n"
-"Please resolve it and then attempt to save again."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
-"be satisfied."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Could not save one or more scenes!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
-msgid "Can't overwrite scene that is still open!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Can't load MeshLibrary for merging!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Error saving MeshLibrary!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Can't load TileSet for merging!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Error saving TileSet!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"An error occurred while trying to save the editor layout.\n"
-"Make sure the editor's user data path is writable."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Default editor layout overridden.\n"
-"To restore the Default layout to its base settings, use the Delete Layout "
-"option and delete the Default layout."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Layout name not found!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Restored the Default layout to its base settings."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This resource belongs to a scene that was imported, so it's not editable.\n"
-"Please read the documentation relevant to importing scenes to better "
-"understand this workflow."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This resource belongs to a scene that was instanced or inherited.\n"
-"Changes to it won't be kept when saving the current scene."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This resource was imported, so it's not editable. Change its settings in the "
-"import panel and then re-import."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This scene was imported, so changes to it won't be kept.\n"
-"Instancing it or inheriting will allow making changes to it.\n"
-"Please read the documentation relevant to importing scenes to better "
-"understand this workflow."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This is a remote object, so changes to it won't be kept.\n"
-"Please read the documentation relevant to debugging to better understand "
-"this workflow."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "There is no defined scene to run."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save scene before running..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Could not start subprocess!"
-msgstr ""
-
-#: editor/editor_node.cpp editor/filesystem_dock.cpp
-msgid "Open Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Base Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Quick Open..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Quick Open Scene..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Quick Open Script..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save & Reload"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save changes to '%s' before reloading?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save & Close"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save changes to '%s' before closing?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "%s no longer exists! Please specify a new save location."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"The current scene has no root node, but %d modified external resource(s) "
-"were saved anyway."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"A root node is required to save the scene. You can add a root node using the "
-"Scene tree dock."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save Scene As..."
-msgstr ""
-
-#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
-msgid "This operation can't be done without a scene."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Export Mesh Library"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "This operation can't be done without a root node."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Export Tile Set"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "This operation can't be done without a selected node."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Current scene not saved. Open anyway?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Can't undo while mouse buttons are pressed."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Nothing to undo."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Undo: %s"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Can't redo while mouse buttons are pressed."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Nothing to redo."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Redo: %s"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Can't reload a scene that was never saved."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Reload Saved Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"The current scene has unsaved changes.\n"
-"Reload the saved scene anyway? This action cannot be undone."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Quick Run Scene..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Quit"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Yes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Exit the editor?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Project Manager?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save changes to the following scene(s) before reloading?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save & Quit"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save changes to the following scene(s) before quitting?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save changes to the following scene(s) before opening Project Manager?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This option is deprecated. Situations where refresh must be forced are now "
-"considered a bug. Please report."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Pick a Main Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Close Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Reopen Closed Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: '%s'."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '%s'."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Unable to load addon script from path: '%s'. This might be due to a code "
-"error in that script.\n"
-"Disabling the addon at '%s' to prevent further errors."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Scene '%s' was automatically imported, so it can't be modified.\n"
-"To make changes to it, a new inherited scene can be created."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Error loading scene, it must be inside the project path. Use 'Import' to "
-"open the scene, then save it inside the project path."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene '%s' has broken dependencies:"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Clear Recent Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"No main scene has ever been defined, select one?\n"
-"You can change it later in \"Project Settings\" under the 'application' "
-"category."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Selected scene '%s' does not exist, select a valid one?\n"
-"You can change it later in \"Project Settings\" under the 'application' "
-"category."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Selected scene '%s' is not a scene file, select a valid one?\n"
-"You can change it later in \"Project Settings\" under the 'application' "
-"category."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save Layout"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Delete Layout"
-msgstr ""
-
-#: editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_resource_picker.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
-msgid "Show in FileSystem"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play This Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Close Tab"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Undo Close Tab"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Close Other Tabs"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Close Tabs to the Right"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Close All Tabs"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Switch Scene Tab"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "%d more files or folders"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "%d more folders"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "%d more files"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Unable to write to file '%s', file in use, locked or lacking permissions."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
-#: servers/arvr/arvr_interface.cpp
-msgid "Interface"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Scene Tabs"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Always Show Close Button"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Resize If Many Tabs"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Minimum Width"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Output"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Always Clear Output On Play"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Always Open Output On Play"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Always Close Output On Stop"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save On Focus Loss"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Save Each Scene On Quit"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Quit Confirmation"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Show Update Spinner"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Update Continuously"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Update Vital Only"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Localize Settings"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Restore Scenes On Load"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Show Thumbnail On Hover"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Inspector"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Default Property Name Style"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Default Float Step"
-msgstr ""
-
-#: editor/editor_node.cpp scene/gui/tree.cpp
-msgid "Disable Folding"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Auto Unfold Foreign Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Horizontal Vector2 Editing"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Horizontal Vector Types Editing"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Resources In Current Inspector"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Resources To Open In New Inspector"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Default Color Picker Mode"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
-msgid "Username"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
-msgid "SSH Public Key Path"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
-msgid "SSH Private Key Path"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Dock Position"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_plugin.cpp
-msgid "Distraction Free Mode"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Toggle distraction-free mode."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Add a new scene."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Go to previously opened scene."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Copy Text"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Next tab"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Previous tab"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Filter Files..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Operations with scene files."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "New Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "New Inherited Scene..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Scene..."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Open Recent"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Convert To..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "MeshLibrary..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "TileSet..."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Undo"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Redo"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Miscellaneous project or scene-wide tools."
-msgstr ""
-
-#: editor/editor_node.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp modules/mono/editor/csharp_project.cpp
-msgid "Project"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Project Settings..."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
-msgid "Set Up Version Control"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Shut Down Version Control"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Export..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Install Android Build Template..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open User Data Folder"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tools"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Orphan Resource Explorer..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Reload Current Project"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Quit to Project List"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Deploy with Remote Debug"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, using one-click deploy will make the executable "
-"attempt to connect to this computer's IP so the running project can be "
-"debugged.\n"
-"This option is intended to be used for remote debugging (typically with a "
-"mobile device).\n"
-"You don't need to enable it to use the GDScript debugger locally."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Small Deploy with Network Filesystem"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, using one-click deploy for Android will only "
-"export an executable without the project data.\n"
-"The filesystem will be provided from the project by the editor over the "
-"network.\n"
-"On Android, deploying will use the USB cable for faster performance. This "
-"option speeds up testing for projects with large assets."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Visible Collision Shapes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, collision shapes and raycast nodes (for 2D and "
-"3D) will be visible in the running project."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Visible Navigation"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, navigation meshes and polygons will be visible "
-"in the running project."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Force Shader Fallbacks"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, shaders will be used in their fallback form "
-"(either visible via an ubershader or hidden) during all the run time.\n"
-"This is useful for verifying the look and performance of fallbacks, which "
-"are normally displayed briefly.\n"
-"Asynchronous shader compilation must be enabled in the project settings for "
-"this option to make a difference."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Synchronize Scene Changes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, any changes made to the scene in the editor "
-"will be replicated in the running project.\n"
-"When used remotely on a device, this is more efficient when the network "
-"filesystem option is enabled."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Synchronize Script Changes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, any script that is saved will be reloaded in "
-"the running project.\n"
-"When used remotely on a device, this is more efficient when the network "
-"filesystem option is enabled."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Editor Settings..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Editor Layout"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Take Screenshot"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Screenshots are stored in the Editor Data/Settings Folder."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Toggle Fullscreen"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Editor Data/Settings Folder"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Editor Data Folder"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Editor Settings Folder"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Manage Editor Features..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Manage Export Templates..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Online Documentation"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Questions & Answers"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Report a Bug"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Suggest a Feature"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Send Docs Feedback"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
-msgid "Community"
-msgstr "Җәмәгать"
-
-#: editor/editor_node.cpp
-msgid "About Godot"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Support Godot Development"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play the project."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Pause the scene execution for debugging."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Pause Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Stop the scene."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play the edited scene."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play custom scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play Custom Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Changing the video driver requires restarting the editor."
-msgstr ""
-
-#: editor/editor_node.cpp editor/project_settings_editor.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Save & Restart"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Update All Changes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Update Vital Changes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Hide Update Spinner"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/fileserver/editor_file_server.cpp
-#: modules/fbx/editor_scene_importer_fbx.cpp
-msgid "FileSystem"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Expand Bottom Panel"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Don't Save"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Android build template is missing, please install relevant templates."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Manage Templates"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Install from file"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Select android sources file"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This will set up your project for custom Android builds by installing the "
-"source template to \"res://android/build\".\n"
-"You can then apply modifications and build your own custom APK on export "
-"(adding modules, changing the AndroidManifest.xml, etc.).\n"
-"Note that in order to make custom builds instead of using pre-built APKs, "
-"the \"Use Custom Build\" option should be enabled in the Android export "
-"preset."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"The Android build template is already installed in this project and it won't "
-"be overwritten.\n"
-"Remove the \"res://android/build\" directory manually before attempting this "
-"operation again."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Import Templates From ZIP File"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Template Package"
-msgstr ""
-
-#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
-msgid "Export Library"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Merge With Existing"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Apply MeshInstance Transforms"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open & Run a Script"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"The following files are newer on disk.\n"
-"What action should be taken?"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Reload"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Resave"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "New Inherited"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Load Errors"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Select"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Select Current"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open 2D Editor"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open 3D Editor"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Script Editor"
-msgstr ""
-
-#: editor/editor_node.cpp editor/project_manager.cpp
-msgid "Open Asset Library"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open the next Editor"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open the previous Editor"
-msgstr ""
-
-#: editor/editor_node.h
-msgid "Warning!"
-msgstr ""
-
-#: editor/editor_path.cpp
-msgid "No sub-resources found."
-msgstr ""
-
-#: editor/editor_path.cpp
-msgid "Open a list of sub-resources."
-msgstr ""
-
-#: editor/editor_plugin.cpp
-msgid "Creating Mesh Previews"
-msgstr ""
-
-#: editor/editor_plugin.cpp
-msgid "Thumbnail..."
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp
-msgid "Main Script:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp
-msgid "Edit Plugin"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp
-msgid "Installed Plugins:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: scene/2d/remote_transform_2d.cpp scene/3d/remote_transform.cpp
-msgid "Update"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-#: platform/uwp/export/export.cpp
-msgid "Version"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp
-msgid "Author"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Measure:"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Frame Time (ms)"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Average Time (ms)"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Frame %"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Physics Frame %"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Inclusive"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Self"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid ""
-"Inclusive: Includes time from other functions called by this function.\n"
-"Use this to spot bottlenecks.\n"
-"\n"
-"Self: Only count the time spent in the function itself, not in other "
-"functions called by that function.\n"
-"Use this to find individual functions to optimize."
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Frame #:"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Calls"
-msgstr ""
-
-#: editor/editor_profiler.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Debugger"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Profiler Frame History Size"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Profiler Frame Max Functions"
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid "Edit Text:"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/script_create_dialog.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "On"
-msgstr ""
-
-#: editor/editor_properties.cpp modules/gridmap/grid_map.cpp
-#: scene/2d/collision_object_2d.cpp scene/2d/tile_map.cpp
-#: scene/3d/collision_object.cpp scene/3d/soft_body.cpp
-#: scene/main/canvas_layer.cpp
-msgid "Layer"
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid "Bit %d, value %d"
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid "[Empty]"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/plugins/root_motion_editor_plugin.cpp
-msgid "Assign..."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid "Invalid RID"
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
-"Can't create a ViewportTexture on resources saved as a file.\n"
-"Resource needs to belong to a scene."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
-"Can't create a ViewportTexture on this resource because it's not set as "
-"local to scene.\n"
-"Please switch on the 'local to scene' property on it (and all resources "
-"containing it up to a node)."
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Pick a Viewport"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Selected node is not a Viewport!"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Item"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "New Key:"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "New Value:"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Add Key/Value Pair"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp
-msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_resource_picker.cpp
-msgid "Quick Load"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp editor/property_editor.cpp
-msgid "Convert to %s"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp editor/plugins/theme_editor_plugin.cpp
-#: modules/visual_script/visual_script_flow_control.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Base Type"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp
-msgid "Edited Resource"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp scene/gui/line_edit.cpp
-#: scene/gui/slider.cpp scene/gui/spin_box.cpp
-msgid "Editable"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp
-msgid "Script Owner"
-msgstr ""
-
-#: editor/editor_run_native.cpp
-msgid ""
-"No runnable export preset found for this platform.\n"
-"Please add a runnable preset in the Export menu or define an existing preset "
-"as runnable."
-msgstr ""
-
-#: editor/editor_run_script.cpp
-msgid "Write your logic in the _run() method."
-msgstr ""
-
-#: editor/editor_run_script.cpp
-msgid "There is an edited scene already."
-msgstr ""
-
-#: editor/editor_run_script.cpp
-msgid "Couldn't instance script:"
-msgstr ""
-
-#: editor/editor_run_script.cpp
-msgid "Did you forget the 'tool' keyword?"
-msgstr ""
-
-#: editor/editor_run_script.cpp
-msgid "Couldn't run script:"
-msgstr ""
-
-#: editor/editor_run_script.cpp
-msgid "Did you forget the '_run' method?"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Editor Language"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Display Scale"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Custom Display Scale"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Main Font Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Code Font Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Font Antialiased"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Font Hinting"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Main Font"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Main Font Bold"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Code Font"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Dim Editor On Dialog Popup"
-msgstr ""
-
-#: editor/editor_settings.cpp main/main.cpp
-msgid "Low Processor Mode Sleep (µsec)"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Unfocused Low Processor Mode Sleep (µsec)"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Separate Distraction Mode"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Automatically Open Screenshots"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Max Array Dictionary Items Per Page"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp scene/gui/control.cpp
-#: scene/register_scene_types.cpp
-msgid "Theme"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/import_dock.cpp
-msgid "Preset"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Icon And Font Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Base Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Accent Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/environment.cpp
-msgid "Contrast"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Relationship Line Opacity"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Highlight Tabs"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Border Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Use Graph Node Headers"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Additional Spacing"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Custom Theme"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Script Button"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Directories"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Autoscan Project Path"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Default Project Path"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "On Save"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Compress Binary Resources"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Safe Save On Backup Then Rename"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "File Dialog"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Thumbnail Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Docks"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Scene Tree"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Start Create Dialog Fully Expanded"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Always Show Folders"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Property Editor"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Auto Refresh Interval"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Subresource Hue Tint"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Color Theme"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/3d/label_3d.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Line Spacing"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_text_editor.cpp
-#: modules/gdscript/editor/gdscript_highlighter.cpp
-msgid "Highlighting"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Syntax Highlighting"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Highlight All Occurrences"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Highlight Current Line"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_text_editor.cpp
-msgid "Highlight Type Safe Lines"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Indent"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_text_editor.cpp
-msgid "Auto Indent"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Convert Indent On Save"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Draw Tabs"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Draw Spaces"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
-msgid "Navigation"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Smooth Scrolling"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "V Scroll Speed"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Minimap"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Minimap Width"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Mouse Extra Buttons Navigate History"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Appearance"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Show Line Numbers"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Line Numbers Zero Padded"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Bookmark Gutter"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Breakpoint Gutter"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Info Gutter"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Code Folding"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Word Wrap"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Line Length Guidelines"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Line Length Guideline Soft Column"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Line Length Guideline Hard Column"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
-#, fuzzy
-msgid "Script List"
-msgstr "Җәмәгать"
-
-#: editor/editor_settings.cpp
-msgid "Show Members Overview"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Files"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Trim Trailing Whitespace On Save"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Autosave Interval Secs"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Restore Scripts On Load"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Auto Reload And Parse Scripts On Save"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Auto Reload Scripts On External Change"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Create Signal Callbacks"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Sort Members Outline Alphabetically"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Cursor"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Scroll Past End Of File"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Block Caret"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Caret Blink"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Caret Blink Speed"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Right Click Moves Caret"
-msgstr ""
-
-#: editor/editor_settings.cpp modules/gdscript/gdscript.cpp
-#: modules/gdscript/gdscript_editor.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Completion"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Idle Parse Delay"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Auto Brace Complete"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Code Complete Delay"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Put Callhint Tooltip Below Current Line"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Callhint Tooltip Offset"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Complete File Paths"
-msgstr ""
-
-#: editor/editor_settings.cpp modules/gdscript/gdscript_editor.cpp
-msgid "Add Type Hints"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Use Single Quotes"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Help Index"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Help Font Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Help Source Font Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Help Title Font Size"
-msgstr ""
-
-#: editor/editor_settings.cpp modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Grid Map"
-msgstr ""
-
-#: editor/editor_settings.cpp modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Pick Distance"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/tile_map_editor_plugin.cpp
-msgid "Preview Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Primary Grid Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Secondary Grid Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Selection Box Color"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/path_editor_plugin.cpp
-#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
-msgid "3D Gizmos"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/path_editor_plugin.cpp
-#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
-msgid "Gizmo Colors"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Instanced"
-msgstr ""
-
-#: editor/editor_settings.cpp modules/gltf/gltf_node.cpp
-#: scene/3d/physics_body.cpp
-msgid "Joint"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/2d/collision_shape_2d.cpp
-#: scene/2d/cpu_particles_2d.cpp scene/2d/touch_screen_button.cpp
-#: scene/3d/collision_shape.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/occluder.cpp scene/3d/spring_arm.cpp
-#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
-#: servers/physics_server.cpp
-msgid "Shape"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Primary Grid Steps"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid Division Level Max"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid Division Level Min"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid Division Level Bias"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid XZ Plane"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid XY Plane"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid YZ Plane"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Default FOV"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Default Z Near"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Default Z Far"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Lightmap Baking Number Of CPU Threads"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Navigation Scheme"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Invert Y Axis"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Invert X Axis"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Zoom Style"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Emulate Numpad"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Emulate 3 Button Mouse"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Orbit Modifier"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Pan Modifier"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Zoom Modifier"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-msgid "Warped Mouse Panning"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Navigation Feel"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Orbit Sensitivity"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Orbit Inertia"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Translation Inertia"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Zoom Inertia"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook Navigation Scheme"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook Sensitivity"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook Inertia"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook Base Speed"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook Activation Modifier"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook Speed Zoom Link"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/tile_map_editor_plugin.cpp
-msgid "Grid Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Guides Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Smart Snapping Line Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone Width"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone Color 1"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone Color 2"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone Selected Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone IK Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone Outline Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone Outline Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Viewport Border Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Constrain Editor View"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Simple Panning"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Scroll To Pan"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Pan Speed"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Poly Editor"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Point Grab Radius"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Previous Outline"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/scene_tree_dock.cpp
-msgid "Autorename Animation Tracks"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Default Create Bezier Tracks"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Default Create Reset Tracks"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Onion Layers Past Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Onion Layers Future Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Visual Editors"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Minimap Opacity"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Window Placement"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/2d/back_buffer_copy.cpp scene/2d/sprite.cpp
-#: scene/2d/visibility_notifier_2d.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/control.cpp
-msgid "Rect"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Rect Custom Position"
-msgstr ""
-
-#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
-msgid "Screen"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Auto Save"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Save Before Running"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Font Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-msgid "Remote Host"
-msgstr ""
-
-#: editor/editor_settings.cpp
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-msgid "Remote Port"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Editor SSL Certificates"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Project Manager"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Sorting Order"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Symbol Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Keyword Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Control Flow Keyword Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Base Type Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Engine Type Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "User Type Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Comment Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "String Color"
-msgstr ""
-
-#: editor/editor_settings.cpp platform/javascript/export/export.cpp
-#: platform/uwp/export/export.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Background Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Completion Background Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Completion Selected Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Completion Existing Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Completion Scroll Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Completion Font Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Text Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Line Number Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Safe Line Number Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Caret Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Caret Background Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Text Selected Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Selection Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Brace Mismatch Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Current Line Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Line Length Guideline Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Word Highlighted Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Number Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Function Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Member Variable Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Mark Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Bookmark Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Breakpoint Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Executing Line Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Code Folding Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Search Result Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Search Result Border Color"
-msgstr ""
-
-#: editor/editor_spin_slider.cpp
-msgid "Hold %s to round to integers. Hold Shift for more precise changes."
-msgstr ""
-
-#: editor/editor_spin_slider.cpp scene/gui/button.cpp
-msgid "Flat"
-msgstr ""
-
-#: editor/editor_spin_slider.cpp
-msgid "Hide Slider"
-msgstr ""
-
-#: editor/editor_sub_scene.cpp
-msgid "Select Node(s) to Import"
-msgstr ""
-
-#: editor/editor_sub_scene.cpp editor/project_manager.cpp
-msgid "Browse"
-msgstr ""
-
-#: editor/editor_sub_scene.cpp
-msgid "Scene Path:"
-msgstr ""
-
-#: editor/editor_sub_scene.cpp
-msgid "Import From Node:"
-msgstr ""
-
-#. TRANSLATORS: %s refers to the name of a version control system (e.g. "Git").
-#: editor/editor_vcs_interface.cpp
-msgid "%s Error"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Open the folder containing these templates."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall these templates."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "There are no mirrors available."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Retrieving the mirror list..."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Starting the download..."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Connecting to the mirror..."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Can't resolve the requested address."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Can't connect to the mirror."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "No response from the mirror."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Request ended up in a redirect loop."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Request failed:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Download complete; extracting templates..."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Best available mirror"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Disconnected"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Resolving"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Can't Connect"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Connected"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Downloading"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Connection Error"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Can't open the export templates file."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside the export templates file: %s."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside the export templates file."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for extracting templates:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Remove templates for the version '%s'?"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Uncompressing Android Build Sources"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Current Version:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Export templates are missing. Download them or install from a file."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Export templates are installed and ready to be used."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Open Folder"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Open the folder containing installed templates for the current version."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall templates for the current version."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Download from:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Open in Web Browser"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Copy Mirror URL"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Download and Install"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid ""
-"Download and install templates for the current version from the best "
-"possible mirror."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Install from File"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Install templates from a local file."
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/find_in_files.cpp
-#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Cancel the download of the templates."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Other Installed Versions:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall Template"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid ""
-"The templates will continue to download.\n"
-"You may experience a short editor freeze when they finish."
-msgstr ""
-
-#: editor/fileserver/editor_file_server.cpp
-msgid "File Server"
-msgstr ""
-
-#: editor/fileserver/editor_file_server.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
-msgid "Password"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Favorites"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Status: Import of file failed. Please fix file and reimport manually."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid ""
-"Importing has been disabled for this file, so it can't be opened for editing."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Cannot move/rename resources root."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Error moving:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Error duplicating:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/scene_tree_editor.cpp
-msgid "No name provided."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Provided name contains invalid characters."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "A file or folder with this name already exists."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Name contains invalid characters."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid ""
-"This file extension is not recognized by the editor.\n"
-"If you want to rename it anyway, use your operating system's file manager.\n"
-"After renaming to an unknown extension, the file won't be shown in the "
-"editor anymore."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid ""
-"The following files or folders conflict with items in the target location "
-"'%s':\n"
-"\n"
-"%s\n"
-"\n"
-"Do you wish to overwrite them?"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Renaming file:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Renaming folder:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Duplicating file:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Duplicating folder:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "New Inherited Scene"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Set As Main Scene"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Open Scenes"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Instance"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Add to Favorites"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Remove from Favorites"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "View Owners..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Move To..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "New Scene..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
-msgid "New Script..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "New Resource..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Expand All"
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Collapse All"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort files"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort by Name (Ascending)"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort by Name (Descending)"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort by Type (Ascending)"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort by Type (Descending)"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort by Last Modified"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort by First Modified"
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-msgid "Duplicate..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-msgid "Rename..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Focus the search box"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Previous Folder/File"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Next Folder/File"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Re-Scan Filesystem"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Toggle Split Mode"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Search files"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid ""
-"Scanning Files,\n"
-"Please Wait..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Move"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/project_manager.cpp editor/rename_dialog.cpp
-#: editor/scene_tree_dock.cpp
-msgid "Rename"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Overwrite"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Create Scene"
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Create Script"
-msgstr ""
-
-#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Find in Files"
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Find:"
-msgstr ""
-
-#: editor/find_in_files.cpp editor/rename_dialog.cpp
-msgid "Replace:"
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Folder:"
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Filters:"
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid ""
-"Include the files with the following extensions. Add or remove them in "
-"ProjectSettings."
-msgstr ""
-
-#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-msgid "Find..."
-msgstr ""
-
-#: editor/find_in_files.cpp editor/plugins/script_text_editor.cpp
-msgid "Replace..."
-msgstr ""
-
-#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Replace in Files"
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Replace All (NO UNDO)"
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Searching..."
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "%d match in %d file."
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "%d matches in %d file."
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "%d matches in %d files."
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Add to Group"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Remove from Group"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Group name already exists."
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Invalid group name."
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Rename Group"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Delete Group"
-msgstr ""
-
-#: editor/groups_editor.cpp editor/node_dock.cpp
-msgid "Groups"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Nodes Not in Group"
-msgstr ""
-
-#: editor/groups_editor.cpp editor/scene_tree_dock.cpp
-#: editor/scene_tree_editor.cpp
-msgid "Filter nodes"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Nodes in Group"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Empty groups will be automatically removed."
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Group Editor"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Manage Groups"
-msgstr ""
-
-#: editor/import/editor_import_collada.cpp
-msgid "Collada"
-msgstr ""
-
-#: editor/import/editor_import_collada.cpp
-msgid "Use Ambient"
-msgstr ""
-
-#: editor/import/resource_importer_bitmask.cpp
-msgid "Create From"
-msgstr ""
-
-#: editor/import/resource_importer_bitmask.cpp
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
-msgstr ""
-
-#: editor/import/resource_importer_csv_translation.cpp
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_scene.cpp
-#: editor/import/resource_importer_texture.cpp
-#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
-msgid "Compress"
-msgstr ""
-
-#: editor/import/resource_importer_csv_translation.cpp
-msgid "Delimiter"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-msgid "ColorCorrect"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-msgid "No BPTC If RGB"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
-#: scene/resources/material.cpp scene/resources/particles_material.cpp
-#: scene/resources/texture.cpp scene/resources/visual_shader.cpp
-msgid "Flags"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
-#: scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
-msgid "Filter"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp
-msgid "Mipmaps"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp
-msgid "Anisotropic"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp
-msgid "sRGB"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-msgid "Slices"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Horizontal"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Vertical"
-msgstr ""
-
-#: editor/import/resource_importer_obj.cpp
-#, fuzzy
-msgid "Generate Tangents"
-msgstr "Төп"
-
-#: editor/import/resource_importer_obj.cpp
-msgid "Scale Mesh"
-msgstr ""
-
-#: editor/import/resource_importer_obj.cpp
-msgid "Offset Mesh"
-msgstr ""
-
-#: editor/import/resource_importer_obj.cpp
-#: editor/import/resource_importer_scene.cpp
-msgid "Octahedral Compression"
-msgstr ""
-
-#: editor/import/resource_importer_obj.cpp
-msgid "Optimize Mesh Flags"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import as Single Scene"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Animations"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Materials"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Objects"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Objects+Materials"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Objects+Animations"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Materials+Animations"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Objects+Materials+Animations"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import as Multiple Scenes"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import as Multiple Scenes+Materials"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
-#: scene/3d/physics_joint.cpp
-msgid "Nodes"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Root Type"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Root Name"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Root Scale"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Custom Script"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
-msgid "Storage"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Use Legacy Names"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Keep On Reimport"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Ensure Tangents"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Light Baking"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Lightmap Texel Size"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Use Named Skins"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "External Files"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Store In Subdir"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Filter Script"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Keep Custom Tracks"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Optimizer"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-#: editor/plugins/item_list_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
-#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
-#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
-#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
-#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/skeleton.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp scene/resources/material.cpp
-msgid "Enabled"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Max Linear Error"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Max Angular Error"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Max Angle"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Remove Unused Tracks"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Clips"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/particles.cpp scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Import Scene"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Importing Scene..."
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Generating Lightmaps"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Running Custom Script..."
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Couldn't load post-import script:"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Invalid/broken script for post-import (check console):"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Error running post-import script:"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Did you return a Node-derived object in the `post_import()` method?"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Saving..."
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "2D, Detect 3D"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "2D Pixel"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "HDR Mode"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "BPTC LDR"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
-#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Process"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Fix Alpha Border"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Premult Alpha"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Hdr As Srgb"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Invert Color"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Normal Map Invert Y"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Size Limit"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Detect 3D"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "SVG"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid ""
-"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
-"texture will not display correctly on PC."
-msgstr ""
-
-#: editor/import/resource_importer_texture_atlas.cpp
-msgid "Atlas File"
-msgstr ""
-
-#: editor/import/resource_importer_texture_atlas.cpp
-msgid "Import Mode"
-msgstr ""
-
-#: editor/import/resource_importer_texture_atlas.cpp
-msgid "Crop To Region"
-msgstr ""
-
-#: editor/import/resource_importer_texture_atlas.cpp
-msgid "Trim Alpha Border From Region"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-msgid "8 Bit"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp main/main.cpp
-#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-msgid "Max Rate"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-msgid "Max Rate Hz"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-msgid "Trim"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-msgid "Normalize"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Mode"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Begin"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop End"
-msgstr ""
-
-#: editor/import_defaults_editor.cpp
-msgid "Select Importer"
-msgstr ""
-
-#: editor/import_defaults_editor.cpp
-msgid "Importer:"
-msgstr ""
-
-#: editor/import_defaults_editor.cpp
-msgid "Reset to Defaults"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Keep File (No Import)"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "%d Files"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Set as Default for '%s'"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Clear Default for '%s'"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid ""
-"You have pending changes that haven't been applied yet. Click Reimport to "
-"apply changes made to the import options.\n"
-"Selecting another resource in the FileSystem dock without clicking Reimport "
-"first will discard changes made in the Import dock."
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Import As:"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Save Scenes, Re-Import, and Restart"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Changing the type of an imported file requires editor restart."
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid ""
-"WARNING: Assets exist that use this resource, they may stop loading properly."
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid ""
-"Select a resource file in the filesystem or in the inspector to adjust "
-"import settings."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Failed to load resource."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Property Name Style"
-msgstr ""
-
-#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Capitalized"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Localized"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Localization not available for current language."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Copy Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Paste Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Save As..."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Extra resource options."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Edit Resource from Clipboard"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Make Resource Built-In"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Go to the previous edited object in history."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Go to the next edited object in history."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "History of recently edited objects."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Open documentation for this object."
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Filter properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Manage object properties."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Changes may be lost!"
-msgstr ""
-
-#: editor/multi_node_edit.cpp
-msgid "MultiNode Set"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Select a single node to edit its signals and groups."
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-msgid "Edit a Plugin"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-msgid "Create a Plugin"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-msgid "Plugin Name:"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-msgid "Subfolder:"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Author:"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
-msgid "Language:"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-msgid "Script Name:"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-msgid "Activate now?"
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Polygon"
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Create points."
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid ""
-"Edit points.\n"
-"LMB: Move Point\n"
-"RMB: Erase Point"
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Edit Polygon"
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Insert Point"
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Edit Polygon (Remove Point)"
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Polygon And Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Add Animation"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Add %s"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Load..."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Move Node Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Change BlendSpace1D Limits"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Change BlendSpace1D Labels"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "This type of node can't be used. Only root nodes are allowed."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Add Node Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Add Animation Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Remove BlendSpace1D Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Move BlendSpace1D Node Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid ""
-"AnimationTree is inactive.\n"
-"Activate to enable playback, check node warnings if activation fails."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Set the blending position within the space"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Select and move points, create points with RMB."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp scene/gui/graph_edit.cpp
-msgid "Enable snap and show grid."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Open Editor"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Open Animation Node"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Triangle already exists."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Add Triangle"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Change BlendSpace2D Limits"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Change BlendSpace2D Labels"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Remove BlendSpace2D Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Remove BlendSpace2D Triangle"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "BlendSpace2D does not belong to an AnimationTree node."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "No triangles exist, so no blending can take place."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Toggle Auto Triangles"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Create triangles by connecting points."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Erase points and triangles."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Generate blend triangles automatically (instead of manually)"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Blend:"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed:"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Edit Filters"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Output node can't be added to the blend tree."
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Add Node to BlendTree"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Node Moved"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Unable to connect, port may be in use or connection may be invalid."
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Nodes Connected"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Nodes Disconnected"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Set Animation"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Delete Node"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
-msgid "Delete Node(s)"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Toggle Filter On/Off"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Change Filter"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "No animation player set, so unable to retrieve track names."
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Player path set is invalid, so unable to retrieve track names."
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/root_motion_editor_plugin.cpp
-msgid ""
-"Animation player has no valid root node path, so unable to retrieve track "
-"names."
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Anim Clips"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Audio Clips"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Functions"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Node Renamed"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Add Node..."
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/root_motion_editor_plugin.cpp
-msgid "Edit Filtered Tracks:"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Enable Filtering"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Toggle Autoplay"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "New Animation Name:"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "New Anim"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Change Animation Name:"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Delete Animation?"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Remove Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Invalid animation name!"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Animation name already exists!"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Rename Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Duplicate Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Blend Next Changed"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Change Blend Time"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Load Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "No animation resource on clipboard!"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Pasted Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Paste Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Play selected animation backwards from current pos. (A)"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Play selected animation backwards from end. (Shift+A)"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Stop animation playback. (S)"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Play selected animation from start. (Shift+D)"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Play selected animation from current pos. (D)"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Animation position (in seconds)."
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Scale animation playback globally for the node."
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Animation Tools"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Paste As Reference"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Edit Transitions..."
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Open in Inspector"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Display list of animations in player."
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Autoplay on Load"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Enable Onion Skinning"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Onion Skinning Options"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Directions"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Past"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Future"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp modules/csg/csg_shape.cpp
-#: scene/3d/collision_polygon.cpp scene/main/scene_tree.cpp
-#: scene/resources/material.cpp scene/resources/primitive_meshes.cpp
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Depth"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "1 step"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "2 steps"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "3 steps"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Differences Only"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Force White Modulate"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Include Gizmos (3D)"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Pin AnimationPlayer"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Create New Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Animation Name:"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-msgid "Error!"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Blend Times:"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Next (Auto Queue):"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Cross-Animation Blend Times"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Move Node"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition exists!"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Add Transition"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Node"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "End"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Immediate"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-#: scene/animation/animation_blend_tree.cpp
-msgid "Sync"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "At End"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: scene/3d/vehicle_body.cpp
-msgid "Travel"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Start and end nodes are needed for a sub-transition."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "No playback resource set at path: %s."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Node Removed"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition Removed"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Set Start Node (Autoplay)"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid ""
-"Select and move nodes.\n"
-"RMB to add new nodes.\n"
-"Shift+LMB to create connections."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Create new nodes."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Connect nodes."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Remove selected node or transition."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Toggle autoplay this animation on start, restart or seek to zero."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Set the end animation. This is useful for sub-transitions."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Play Mode:"
-msgstr ""
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "AnimationTree"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "New name:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Fade In (s):"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Fade Out (s):"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader.cpp
-msgid "Blend"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Auto Restart:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Restart (s):"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Random Restart (s):"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Start!"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Amount:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Blend 0:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Blend 1:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "X-Fade Time (s):"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Input"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Clear Auto-Advance"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Set Auto-Advance"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Delete Input"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Animation tree is valid."
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Animation tree is invalid."
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Animation Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "OneShot Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Mix Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Blend2 Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Blend3 Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Blend4 Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "TimeScale Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "TimeSeek Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Transition Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Import Animations..."
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Edit Node Filters"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Filters..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp scene/main/http_request.cpp
-msgid "Use Threads"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Contents:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "View Files"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect to host:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Cannot save response to:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Write error."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Redirect loop."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, timeout"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Timeout."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed SHA-256 hash check"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Downloading (%s / %s)..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Downloading..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Resolving..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Error making request"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Install..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download Error"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Available URLs"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Recently Updated"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Least Recently Updated"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Name (A-Z)"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Name (Z-A)"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "License (A-Z)"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "License (Z-A)"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Loading..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgctxt "Pagination"
-msgid "First"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgctxt "Pagination"
-msgid "Previous"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgctxt "Pagination"
-msgid "Next"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgctxt "Pagination"
-msgid "Last"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Search templates, projects, and demos"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Search assets (excluding templates, projects, and demos)"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Import..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Plugins..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
-msgid "Sort:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Category:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Support"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed to get repository configuration."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr ""
-
-#: editor/plugins/audio_stream_editor_plugin.cpp
-msgid "Audio Preview Play/Pause"
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid ""
-"Can't determine a save path for lightmap images.\n"
-"Save your scene and try again."
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
-"In Baked Light' and 'Generate Lightmap' flags are on."
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid "Failed creating lightmap images, make sure path is writable."
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid "Failed determining lightmap size. Maximum lightmap size too small?"
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid ""
-"Some mesh is invalid. Make sure the UV2 channel values are contained within "
-"the [0.0,1.0] square region."
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid ""
-"Godot editor was built without ray tracing support, lightmaps can't be baked."
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid "Bake Lightmaps"
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid "LightMap Bake"
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid "Select lightmap bake file:"
-msgstr ""
-
-#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp scene/resources/mesh_library.cpp
-msgid "Preview"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Configure Snap"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Grid Offset:"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Grid Step:"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Primary Line Every:"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "steps"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Rotation Offset:"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Rotation Step:"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Scale Step:"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Move Vertical Guide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Create Vertical Guide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Remove Vertical Guide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Move Horizontal Guide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Create Horizontal Guide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Remove Horizontal Guide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Create Horizontal and Vertical Guides"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set CanvasItem \"%s\" Pivot Offset to (%d, %d)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Rotate %d CanvasItems"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Rotate CanvasItem \"%s\" to %d degrees"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Move CanvasItem \"%s\" Anchor"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Scale Node2D \"%s\" to (%s, %s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Resize Control \"%s\" to (%d, %d)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Scale %d CanvasItems"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Scale CanvasItem \"%s\" to (%s, %s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Move %d CanvasItems"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Move CanvasItem \"%s\" to (%d, %d)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Locked"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Grouped"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid ""
-"Children of containers have their anchors and margins values overridden by "
-"their parent."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Presets for the anchors and margins values of a Control node."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid ""
-"When active, moving Control nodes changes their anchors instead of their "
-"margins."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
-msgid "Top Left"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
-msgid "Top Right"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
-msgid "Bottom Right"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
-msgid "Bottom Left"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Center Left"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Center Top"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Center Right"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Center Bottom"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Center"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Left Wide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Top Wide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Right Wide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Bottom Wide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "VCenter Wide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "HCenter Wide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Full Rect"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Keep Ratio"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchors only"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors and Margins"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Project Camera Override\n"
-"Overrides the running project's camera with the editor viewport camera."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Project Camera Override\n"
-"No project instance running. Run the project from the editor to use this "
-"feature."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Lock Selected"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Unlock Selected"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Group Selected"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Ungroup Selected"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Paste Pose"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Clear Guides"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Create Custom Bone(s) from Node(s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Clear Bones"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Make IK Chain"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Clear IK Chain"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid ""
-"Warning: Children of a container get their position and size determined only "
-"by their parent."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/texture_region_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
-msgid "Zoom Reset"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp scene/gui/item_list.cpp
-#: scene/gui/tree.cpp
-msgid "Select Mode"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Drag: Rotate selected node around pivot."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move selected node."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Scale selected node."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "V: Set selected node's pivot position."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "RMB: Add node at position clicked."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Move Mode"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rotate Mode"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scale Mode"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Shift: Scale proportionally."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Show a list of all objects at the position clicked\n"
-"(same as Alt+RMB in select mode)."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Click to change object's rotation pivot."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Pan Mode"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Ruler Mode"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Toggle smart snapping."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Smart Snap"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Toggle grid snapping."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Grid Snap"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snapping Options"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Scale Snap"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Smart Snapping"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap..."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap to Parent"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap to Node Anchor"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap to Node Sides"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap to Node Center"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap to Other Nodes"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap to Guides"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Lock Selected Node(s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Unlock Selected Node(s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Group Selected Node(s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Ungroup Selected Node(s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton Options"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Bones"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Make Custom Bone(s) from Node(s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Clear Custom Bones"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show When Snapping"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Hide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Toggle Grid"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Grid"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Helpers"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Rulers"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Guides"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Origin"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Viewport"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Group And Lock Icons"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Center Selection"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Frame Selection"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Preview Canvas Scale"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Translation mask for inserting keys."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Rotation mask for inserting keys."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Scale mask for inserting keys."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Insert keys (based on mask)."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid ""
-"Auto insert keys when objects are translated, rotated or scaled (based on "
-"mask).\n"
-"Keys are only added to existing tracks, no new tracks will be created.\n"
-"Keys must be inserted manually for the first time."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Auto Insert Key"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Animation Key and Pose Options"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Insert Key (Existing Tracks)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Copy Pose"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Clear Pose"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Add Node Here"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Instance Scene Here"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Multiply grid step by 2"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Divide grid step by 2"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Pan View"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 3.125%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 6.25%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 12.5%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 25%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 50%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 100%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 200%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 400%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 800%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 1600%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Adding %s..."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Cannot instantiate multiple nodes without root."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Create Node"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Error instancing scene from %s"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Default Type"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid ""
-"Drag & drop + Shift : Add node as sibling\n"
-"Drag & drop + Alt : Change node type"
-msgstr ""
-
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Polygon3D"
-msgstr ""
-
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr ""
-
-#: editor/plugins/collision_shape_2d_editor_plugin.cpp
-msgid "Set Handle"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Load Emission Mask"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/cpu_particles_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Restart"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Clear Emission Mask"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/spatial_editor_gizmos.cpp
-msgid "Particles"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Generated Point Count:"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Emission Mask"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Solid Pixels"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Border Pixels"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Directed Border Pixels"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Capture from Pixel"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Emission Colors"
-msgstr ""
-
-#: editor/plugins/cpu_particles_editor_plugin.cpp
-msgid "CPUParticles"
-msgstr ""
-
-#: editor/plugins/cpu_particles_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Create Emission Points From Mesh"
-msgstr ""
-
-#: editor/plugins/cpu_particles_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Create Emission Points From Node"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Flat 0"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Flat 1"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp
-msgid "Ease In"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp
-msgid "Ease Out"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Smoothstep"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve Point"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve Tangent"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Load Curve Preset"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Add Point"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Remove Point"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Left Linear"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Right Linear"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Load Preset"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Remove Curve Point"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Toggle Curve Linear Tangent"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Hold Shift to edit tangents individually"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Right click to add point"
-msgstr ""
-
-#: editor/plugins/gi_probe_editor_plugin.cpp
-msgid "Bake GI Probe"
-msgstr ""
-
-#: editor/plugins/gradient_editor_plugin.cpp
-msgid "Gradient Edited"
-msgstr ""
-
-#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
-msgid "Swap GradientTexture2D Fill Points"
-msgstr ""
-
-#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
-msgid "Swap Gradient Fill Points"
-msgstr ""
-
-#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
-msgid "Toggle Grid Snap"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
-#: scene/3d/label_3d.cpp scene/gui/button.cpp scene/gui/dialogs.cpp
-#: scene/gui/label.cpp scene/gui/line_edit.cpp scene/gui/link_button.cpp
-#: scene/gui/rich_text_label.cpp scene/gui/text_edit.cpp
-#: scene/resources/primitive_meshes.cpp
-msgid "Text"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
-#: platform/osx/export/export.cpp platform/windows/export/export.cpp
-#: scene/gui/button.cpp scene/gui/item_list.cpp
-msgid "Icon"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp
-msgid "ID"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Separator"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp
-msgid "Item %d"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp
-msgid "Items"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp
-msgid "Item List Editor"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Occluder Polygon"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh is empty!"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Couldn't create a Trimesh collision shape."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Static Trimesh Body"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "This doesn't work on scene root!"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Trimesh Static Shape"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Can't create a single convex collision shape for the scene root."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Couldn't create a single convex collision shape."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Simplified Convex Shape"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Single Convex Shape"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Can't create multiple convex collision shapes for the scene root."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Couldn't create any collision shapes."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Multiple Convex Shapes"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Navigation Mesh"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Contained Mesh is not of type ArrayMesh."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "UV Unwrap failed, mesh may not be manifold?"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "No mesh to debug."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh has no UV in layer %d."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "MeshInstance lacks a Mesh!"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh has not surface to create outlines from!"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh primitive type is not PRIMITIVE_TRIANGLES!"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Could not create outline!"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Outline"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp modules/csg/csg_shape.cpp
-#: modules/gltf/gltf_mesh.cpp modules/gltf/gltf_node.cpp
-#: scene/2d/mesh_instance_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/mesh_instance.cpp scene/resources/mesh_library.cpp
-#: scene/resources/multimesh.cpp scene/resources/primitive_meshes.cpp
-#: scene/resources/texture.cpp
-msgid "Mesh"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Trimesh Static Body"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid ""
-"Creates a StaticBody and assigns a polygon-based collision shape to it "
-"automatically.\n"
-"This is the most accurate (but slowest) option for collision detection."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Trimesh Collision Sibling"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid ""
-"Creates a polygon-based collision shape.\n"
-"This is the most accurate (but slowest) option for collision detection."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Single Convex Collision Sibling"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid ""
-"Creates a single convex collision shape.\n"
-"This is the fastest (but least accurate) option for collision detection."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Simplified Convex Collision Sibling"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid ""
-"Creates a simplified convex collision shape.\n"
-"This is similar to single collision shape, but can result in a simpler "
-"geometry in some cases, at the cost of accuracy."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Multiple Convex Collision Siblings"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid ""
-"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between a single convex collision and a "
-"polygon-based collision."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Outline Mesh..."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid ""
-"Creates a static outline mesh. The outline mesh will have its normals "
-"flipped automatically.\n"
-"This can be used instead of the SpatialMaterial Grow property when using "
-"that property isn't possible."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "View UV1"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "View UV2"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Unwrap UV2 for Lightmap/AO"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Outline Mesh"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Outline Size:"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "UV Channel Debug"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Remove item %d?"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid ""
-"Update from existing scene?:\n"
-"%s"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "MeshLibrary"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Add Item"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Remove Selected Item"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Import from Scene (Ignore Transforms)"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Import from Scene (Apply Transforms)"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Update from Scene"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Apply without Transforms"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Apply with Transforms"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "No mesh source specified (and no MultiMesh set in node)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "No mesh source specified (and MultiMesh contains no Mesh)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Mesh source is invalid (invalid path)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Mesh source is invalid (not a MeshInstance)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Mesh source is invalid (contains no Mesh resource)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "No surface source specified."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Surface source is invalid (invalid path)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Surface source is invalid (no geometry)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Surface source is invalid (no faces)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Select a Source Mesh:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Select a Target Surface:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Populate Surface"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Populate MultiMesh"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Target Surface:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Source Mesh:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "X-Axis"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Y-Axis"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Z-Axis"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Mesh Up Axis:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Random Rotation:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Random Tilt:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Random Scale:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Populate"
-msgstr ""
-
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create Navigation Polygon"
-msgstr ""
-
-#: editor/plugins/particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Convert to CPUParticles"
-msgstr ""
-
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Generating Visibility Rect"
-msgstr ""
-
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Generate Visibility Rect"
-msgstr ""
-
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Can only set point into a ParticlesMaterial process material"
-msgstr ""
-
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Convert to CPUParticles2D"
-msgstr ""
-
-#: editor/plugins/particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Generation Time (sec):"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "The geometry's faces don't contain any area."
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "The geometry doesn't contain any faces."
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "\"%s\" doesn't inherit from Spatial."
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "\"%s\" doesn't contain geometry."
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "\"%s\" doesn't contain face geometry."
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Create Emitter"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Points:"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Surface Points"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Surface Points+Normal (Directed)"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp scene/gui/video_player.cpp
-msgid "Volume"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "A processor material of type 'ParticlesMaterial' is required."
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Generating AABB"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Generate Visibility AABB"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Remove Point from Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Remove Out-Control from Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Remove In-Control from Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Add Point to Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Split Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Move Point in Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Move In-Control in Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Move Out-Control in Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Select Points"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Shift+Drag: Select Control Points"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Click: Add Point"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Left Click: Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Right Click: Delete Point"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Select Control Points (Shift+Drag)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Add Point (in empty space)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Delete Point"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Close Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-#: editor/plugins/theme_editor_preview.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp servers/visual_server.cpp
-msgid "Options"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Mirror Handle Angles"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Mirror Handle Lengths"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Curve Point #"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Set Curve Point Position"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Set Curve In Position"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Set Curve Out Position"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Path"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Remove Path Point"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Remove Out-Control Point"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Remove In-Control Point"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/physical_bone_plugin.cpp
-msgid "Move Joint"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid ""
-"The skeleton property of the Polygon2D does not point to a Skeleton2D node"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync Bones"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid ""
-"No texture in this polygon.\n"
-"Set a texture to be able to edit UV."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create UV Map"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid ""
-"Polygon 2D has internal vertices, so it can no longer be edited in the "
-"viewport."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Polygon & UV"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Internal Vertex"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Remove Internal Vertex"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Invalid Polygon (need 3 different vertices)"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Add Custom Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Remove Custom Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Transform UV Map"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Transform Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint Bone Weights"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Open Polygon 2D UV editor."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Polygon 2D UV Editor"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
-msgid "UV"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/line_2d.cpp scene/3d/cpu_particles.cpp scene/3d/portal.cpp
-#: scene/3d/room.cpp scene/resources/convex_polygon_shape.cpp
-#: scene/resources/convex_polygon_shape_2d.cpp
-msgid "Points"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
-msgid "Polygons"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp scene/3d/skeleton.cpp
-msgid "Bones"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Points"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Command: Rotate"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Shift: Move All"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Shift+Command: Scale"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Ctrl: Rotate"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Shift+Ctrl: Scale"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Rotate Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Scale Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create a custom polygon. Enables custom polygon rendering."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid ""
-"Remove a custom polygon. If none remain, custom polygon rendering is "
-"disabled."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Unpaint weights with specified intensity."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Radius:"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Copy Polygon to UV"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Copy UV to Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Clear UV"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Grid Settings"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp modules/csg/csg_shape.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Snap"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Enable Snap"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Configure Grid:"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Grid Offset X:"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Grid Offset Y:"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Grid Step X:"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Grid Step Y:"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync Bones to Polygon"
-msgstr ""
-
-#: editor/plugins/ray_cast_2d_editor_plugin.cpp
-msgid "Set cast_to"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ERROR: Couldn't load resource!"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "Add Resource"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "Rename Resource"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Delete Resource"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "Resource clipboard is empty!"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "Paste Resource"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/scene_tree_editor.cpp
-msgid "Instance:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "Load Resource"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
-#: editor/plugins/room_manager_editor_plugin.cpp
-msgid "Flip Portals"
-msgstr ""
-
-#: editor/plugins/room_manager_editor_plugin.cpp
-msgid "Room Generate Points"
-msgstr ""
-
-#: editor/plugins/room_manager_editor_plugin.cpp
-msgid "Generate Points"
-msgstr ""
-
-#: editor/plugins/room_manager_editor_plugin.cpp
-msgid "Flip Portal"
-msgstr ""
-
-#: editor/plugins/room_manager_editor_plugin.cpp
-msgid "Occluder Set Transform"
-msgstr ""
-
-#: editor/plugins/room_manager_editor_plugin.cpp
-msgid "Center Node"
-msgstr ""
-
-#: editor/plugins/root_motion_editor_plugin.cpp
-msgid "AnimationTree has no path set to an AnimationPlayer"
-msgstr ""
-
-#: editor/plugins/root_motion_editor_plugin.cpp
-msgid "Path to AnimationPlayer is invalid"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Clear Recent Files"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Close and save changes?"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error writing TextFile:"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Could not load file at:"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving file!"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error Saving"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error Importing"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "New Text File..."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Open File"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save File As..."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Can't obtain the script for running."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Script failed reloading, check console for errors."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Script is not in tool mode, will not be able to run."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"To run this script, it must inherit EditorScript and be set to tool mode."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Import Theme"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As..."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "%s Class Reference"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-msgid "Find Next"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-msgid "Find Previous"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Filter scripts"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Toggle alphabetical sorting of the method list."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Filter methods"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp scene/2d/y_sort.cpp
-msgid "Sort"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Move Up"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Move Down"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Next Script"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous Script"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "File"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Open..."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Reopen Closed Script"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save All"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Soft Reload Script"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Copy Script Path"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "History Previous"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "History Next"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Import Theme..."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Reload Theme"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Close All"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Close Docs"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-msgid "Search"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
-msgid "Step Into"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
-msgid "Step Over"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
-msgid "Break"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Continue"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Keep Debugger Open"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Debug with External Editor"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Open Godot online documentation."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Search the reference documentation."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Go to previous edited document."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Go to next edited document."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Discard"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"The following files are newer on disk.\n"
-"What action should be taken?:"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Search Results"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Open Dominant Script On Scene Change"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "External"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Use External Editor"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Exec Path"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Script Temperature Enabled"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Highlight Current Script"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Script Temperature History Size"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Current Script Background Color"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Group Help Pages"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Sort Scripts By"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "List Script Names As"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Exec Flags"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Clear Recent Scripts"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Connections to method:"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/script_editor_debugger.cpp
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Source"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
-msgid "Target"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid ""
-"Missing connected method '%s' for signal '%s' from node '%s' to node '%s'."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "[Ignore]"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Line"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Function"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Only resources from filesystem can be dropped."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Can't drop nodes because script '%s' is not used in this scene."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Lookup Symbol"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Pick Color"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Convert Case"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-#: scene/3d/label_3d.cpp scene/gui/label.cpp
-#: scene/resources/primitive_meshes.cpp
-msgid "Uppercase"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Lowercase"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Capitalize"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Syntax Highlighter"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-msgid "Bookmarks"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Breakpoints"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-msgid "Go To"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Cut"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Select All"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Delete Line"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Indent Left"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Indent Right"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Toggle Comment"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Fold/Unfold Line"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Fold All Lines"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Unfold All Lines"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Complete Symbol"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Evaluate Selection"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Trim Trailing Whitespace"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Convert Indent to Spaces"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Convert Indent to Tabs"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Find in Files..."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Replace in Files..."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Contextual Help"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Toggle Bookmark"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Next Bookmark"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Previous Bookmark"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Remove All Bookmarks"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Function..."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Line..."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Toggle Breakpoint"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Remove All Breakpoints"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Next Breakpoint"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Previous Breakpoint"
-msgstr ""
-
-#: editor/plugins/shader_editor_plugin.cpp
-msgid ""
-"This shader has been modified on on disk.\n"
-"What action should be taken?"
-msgstr ""
-
-#: editor/plugins/shader_editor_plugin.cpp scene/resources/material.cpp
-msgid "Shader"
-msgstr ""
-
-#: editor/plugins/skeleton_2d_editor_plugin.cpp
-msgid "This skeleton has no bones, create some children Bone2D nodes."
-msgstr ""
-
-#: editor/plugins/skeleton_2d_editor_plugin.cpp
-msgid "Set Rest Pose to Bones"
-msgstr ""
-
-#: editor/plugins/skeleton_2d_editor_plugin.cpp
-msgid "Create Rest Pose from Bones"
-msgstr ""
-
-#: editor/plugins/skeleton_2d_editor_plugin.cpp
-msgid "Skeleton2D"
-msgstr ""
-
-#: editor/plugins/skeleton_2d_editor_plugin.cpp
-msgid "Reset to Rest Pose"
-msgstr ""
-
-#: editor/plugins/skeleton_2d_editor_plugin.cpp
-msgid "Overwrite Rest Pose"
-msgstr ""
-
-#: editor/plugins/skeleton_editor_plugin.cpp
-msgid "Create physical bones"
-msgstr ""
-
-#: editor/plugins/skeleton_editor_plugin.cpp editor/spatial_editor_gizmos.cpp
-#: modules/gltf/gltf_node.cpp modules/gltf/gltf_skin.cpp
-#: scene/2d/polygon_2d.cpp scene/3d/mesh_instance.cpp
-msgid "Skeleton"
-msgstr ""
-
-#: editor/plugins/skeleton_editor_plugin.cpp
-msgid "Create physical skeleton"
-msgstr ""
-
-#: editor/plugins/skeleton_ik_editor_plugin.cpp
-msgid "Play IK"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_camera.cpp
-msgid "Perspective"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top Perspective"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom Perspective"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left Perspective"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front Perspective"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear Perspective"
-msgstr ""
-
-#. TRANSLATORS: This will be appended to the view name when Auto Orthogonal is enabled.
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid " [auto]"
-msgstr ""
-
-#. TRANSLATORS: This will be appended to the view name when Portal Occulusion is enabled.
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid " [portals active]"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Transform Aborted."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "X-Axis Transform."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Y-Axis Transform."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Z-Axis Transform."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Plane Transform."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/texture_region_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp scene/2d/path_2d.cpp
-msgid "Rotate"
-msgstr ""
-
-#. TRANSLATORS: This refers to the movement that changes the position of an object.
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translate"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rotating %s degrees."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS: %d (%s ms)"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Align Transform with View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Align Rotation with View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "No parent to instance a child at."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Auto Orthogonal Enabled"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Lock View Rotation"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Normal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Wireframe"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Overdraw"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Unshaded"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Environment"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Gizmos"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Information"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View FPS"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Half Resolution"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp scene/main/viewport.cpp
-msgid "Audio Listener"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Enable Doppler"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Cinematic Preview"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "(Not in GLES2)"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Debug draw modes are only available when using the GLES3 renderer, not GLES2."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Forward"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Backwards"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Down"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Slow Modifier"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Toggle Camera Preview"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Rotation Locked"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"To zoom further, change the camera's clipping planes (View -> Settings...)"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Note: The FPS value displayed is the editor's framerate.\n"
-"It cannot be used as a reliable indication of in-game performance."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Convert Rooms"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "XForm Dialog"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Click to toggle between visibility states.\n"
-"\n"
-"Open eye: Gizmo is visible.\n"
-"Closed eye: Gizmo is hidden.\n"
-"Half-open eye: Gizmo is also visible through opaque surfaces (\"x-ray\")."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes to Floor"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Couldn't find a solid floor to snap the selection to."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp scene/gui/graph_edit.cpp
-msgid "Use Snap"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Converts rooms for portal culling."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Orbit View Down"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Orbit View Left"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Orbit View Right"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Orbit View Up"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Orbit View 180"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Switch Perspective/Orthogonal View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Insert Animation Key"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Focus Origin"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Focus Selection"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Toggle Freelook"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Decrease Field of View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Increase Field of View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Reset Field of View to Default"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Object to Floor"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Transform Dialog..."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "1 Viewport"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "2 Viewports"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "2 Viewports (Alt)"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "3 Viewports"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "3 Viewports (Alt)"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "4 Viewports"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Gizmos"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Origin"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Grid"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Portal Culling"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Occlusion Culling"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Settings..."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Settings"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translate Snap:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rotate Snap (deg.):"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scale Snap (%):"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Viewport Settings"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Perspective FOV (deg.):"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Z-Near:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Z-Far:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Transform Change"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translate:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rotate (deg.):"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scale (ratio):"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Transform Type"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pre"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Post"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Manipulator Gizmo Size"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Manipulator Gizmo Opacity"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Show Viewport Rotation Gizmo"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Unnamed Gizmo"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Create Mesh2D"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Mesh2D Preview"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Create Polygon2D"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Polygon2D Preview"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Create CollisionPolygon2D"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "CollisionPolygon2D Preview"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Create LightOccluder2D"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "LightOccluder2D Preview"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Sprite is empty!"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Can't convert a sprite using animation frames to mesh."
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Invalid geometry, can't replace by mesh."
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Invalid geometry, can't create polygon."
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Polygon2D"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Invalid geometry, can't create collision polygon."
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Create CollisionPolygon2D Sibling"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Invalid geometry, can't create light occluder."
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Create LightOccluder2D Sibling"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Sprite"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Update Preview"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Settings:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "No Frames Selected"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Add %d Frame(s)"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Add Frame"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Unable to load images"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "ERROR: Couldn't load frame resource!"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Resource clipboard is empty or not a texture!"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Paste Frame"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Add Empty"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Change Animation FPS"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "(empty)"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Move Frame"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Animations:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "New Animation"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Speed:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/minimp3/resource_importer_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
-#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
-#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
-msgid "Loop"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Animation Frames:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Add a Texture from File"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Add Frames from a Sprite Sheet"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Insert Empty (Before)"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Insert Empty (After)"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Move (Before)"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Move (After)"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Select Frames"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Horizontal:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Vertical:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Separation:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Offset:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Select/Clear All Frames"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Create Frames from Sprite Sheet"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "SpriteFrames"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Set Region Rect"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Set Margin"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Snap Mode:"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Pixel Snap"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Grid Snap"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Auto Slice"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Step:"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "TextureRegion"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Styleboxes"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "{num} color(s)"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "No colors found."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "{num} constant(s)"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "No constants found."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "{num} font(s)"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "No fonts found."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "{num} icon(s)"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "No icons found."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "{num} stylebox(es)"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "No styleboxes found."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "{num} currently selected"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Nothing was selected for the import."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Importing Theme Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Importing items {n}/{n}"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Updating the editor"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Finalizing"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Filter:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "With Data"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select by data type:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible color items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible color items and their data."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect all visible color items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible constant items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible constant items and their data."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect all visible constant items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible font items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible font items and their data."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect all visible font items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible icon items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible icon items and their data."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect all visible icon items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible stylebox items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible stylebox items and their data."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect all visible stylebox items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid ""
-"Caution: Adding icon data may considerably increase the size of your Theme "
-"resource."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Collapse types."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Expand types."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all Theme items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select With Data"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all Theme items with item data."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect All"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect all Theme items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Import Selected"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid ""
-"Import Items tab has some items selected. Selection will be lost upon "
-"closing this window.\n"
-"Close anyway?"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Type"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid ""
-"Select a theme type from the list to edit its items.\n"
-"You can add a custom type or import a type with its items from another theme."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Color Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Rename Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Constant Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Font Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Icon Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All StyleBox Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid ""
-"This theme type is empty.\n"
-"Add more items to it manually or by importing from another theme."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Theme Type"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Theme Type"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Color Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Constant Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Font Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Icon Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Stylebox Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Rename Color Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Rename Constant Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Rename Font Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Rename Icon Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Rename Stylebox Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Invalid file, not a Theme resource."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Invalid file, same as the edited Theme resource."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Manage Theme Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Types:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Type:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Item:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add StyleBox Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Items:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Custom Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Theme Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Old Name:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Import Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Default Theme"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editor Theme"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select Another Theme Resource:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme Resource"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Another Theme"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Type"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Filter the list of types or create a new custom type:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Available Node-based types:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Type name is empty!"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Are you sure you want to create an empty type?"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Confirm Item Rename"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Cancel Item Rename"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Override Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Unpin this StyleBox as a main style."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid ""
-"Pin this StyleBox as a main style. Editing its properties will update the "
-"same properties in all other StyleBoxes of this type."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Item Type"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Set Variation Base Type"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Set Base Type"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Show Default"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Show default type items alongside items that have been overridden."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Override All"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Override all default type items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select the variation base type from a list of available types."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid ""
-"A type associated with a built-in class cannot be marked as a variation of "
-"another type."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Manage Items..."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add, remove, organize and import Theme items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Preview"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Default Preview"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select UI Scene:"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid ""
-"Toggle the control picker, allowing to visually select control types for "
-"edit."
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Toggle Button"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Disabled Button"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp scene/resources/mesh_library.cpp
-msgid "Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Disabled Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Check Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Checked Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Radio Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Checked Radio Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Named Separator"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Submenu"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Subitem 1"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Subitem 2"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Has"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Many"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Disabled LineEdit"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Tab 1"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Tab 2"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Tab 3"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Editable Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Subtree"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Has,Many,Options"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Invalid path, the PackedScene resource was probably moved or removed."
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Invalid PackedScene resource, must have a Control node at its root."
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Invalid file, not a PackedScene resource."
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Reload the scene to reflect its most actual state."
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Erase Selection"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Fix Invalid Tiles"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cut Selection"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Paint TileMap"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Line Draw"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Rectangle Paint"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket Fill"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Erase TileMap"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Find Tile"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Transpose"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Disable Autotile"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Enable Priority"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Filter tiles"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Give a TileSet resource to this TileMap to use its tiles."
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Paint Tile"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid ""
-"Shift+LMB: Line Draw\n"
-"Shift+Command+LMB: Rectangle Paint"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid ""
-"Shift+LMB: Line Draw\n"
-"Shift+Ctrl+LMB: Rectangle Paint"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Pick Tile"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Rotate Left"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Rotate Right"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Flip Horizontally"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Flip Vertically"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Clear Transform"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Tile Map"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Palette Min Width"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Palette Item H Separation"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Show Tile Names"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Show Tile Ids"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Sort Tiles By Name"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket Fill Preview"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Editor Side"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Display Grid"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Axis Color"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove selected Texture from TileSet."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create from Scene"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Merge from Scene"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "New Single Tile"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "New Autotile"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "New Atlas"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Next Coordinate"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Select the next shape, subtile, or Tile."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Previous Coordinate"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Select the previous shape, subtile, or Tile."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
-msgid "Region"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp modules/csg/csg_shape.cpp
-#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
-#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
-#: scene/3d/collision_object.cpp scene/3d/physics_body.cpp
-#: scene/3d/physics_joint.cpp scene/3d/soft_body.cpp scene/main/scene_tree.cpp
-#: scene/resources/shape_2d.cpp
-msgid "Collision"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Occlusion"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/touch_screen_button.cpp
-msgid "Bitmask"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/3d/physics_joint.cpp
-#: scene/animation/animation_node_state_machine.cpp
-msgid "Priority"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/node_2d.cpp
-msgid "Z Index"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Region Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Collision Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Occlusion Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Navigation Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Bitmask Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Priority Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/item_list.cpp
-msgid "Icon Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Z Index Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Copy bitmask."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Paste bitmask."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Erase bitmask."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create a new rectangle."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "New Rectangle"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create a new polygon."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "New Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Delete Selected Shape"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Keep polygon inside region Rect."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Enable snap and show grid (configurable via the Inspector)."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display Tile Names (Hold Alt Key)"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Add or select a texture on the left panel to edit the tiles bound to it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove selected texture? This will remove all tiles which use it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "You haven't selected a texture to remove."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create from scene? This will overwrite all current tiles."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Merge from scene?"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove Texture"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "%s file(s) were not added because was already on the list."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Drag handles to edit Rect.\n"
-"Click on another Tile to edit it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Delete selected Rect."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select current edited sub-tile.\n"
-"Click on another Tile to edit it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Delete polygon."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"LMB: Set bit on.\n"
-"RMB: Set bit off.\n"
-"Shift+LMB: Set wildcard bit.\n"
-"Click on another Tile to edit it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings.\n"
-"Click on another Tile to edit it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to change its priority.\n"
-"Click on another Tile to edit it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to change its z index.\n"
-"Click on another Tile to edit it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Set Tile Region"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create Tile"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Set Tile Icon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Edit Tile Bitmask"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Edit Collision Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Edit Occlusion Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Edit Navigation Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Paste Tile Bitmask"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Clear Tile Bitmask"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Make Polygon Concave"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Make Polygon Convex"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove Tile"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove Collision Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove Occlusion Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove Navigation Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Edit Tile Priority"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Edit Tile Z Index"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Make Convex"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Make Concave"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create Collision Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create Occlusion Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "This property can't be changed."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Snap Options"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/animated_sprite.cpp
-#: scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
-#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
-#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/label_3d.cpp scene/3d/path.cpp
-#: scene/3d/physics_body.cpp scene/3d/soft_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/style_box.cpp
-msgid "Offset"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp editor/rename_dialog.cpp
-#: scene/gui/range.cpp scene/resources/animation.cpp
-#: scene/resources/visual_shader_nodes.cpp servers/physics_2d_server.cpp
-#: servers/physics_server.cpp
-msgid "Step"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Separation"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Selected Tile"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/line_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/polygon_2d.cpp scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/texture_rect.cpp
-#: scene/resources/material.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
-msgid "Texture"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tex Offset"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp modules/csg/csg_shape.cpp
-#: scene/2d/canvas_item.cpp scene/2d/particles_2d.cpp
-#: scene/3d/mesh_instance.cpp scene/resources/primitive_meshes.cpp
-msgid "Material"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/canvas_item.cpp
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp scene/resources/style_box.cpp
-msgid "Modulate"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Autotile Bitmask Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Subtile Size"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Subtile Spacing"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Occluder Offset"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Navigation Offset"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Shape Offset"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Shape Transform"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Selected Collision"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Selected Collision One Way"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Selected Collision One Way Margin"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Selected Navigation"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Selected Occlusion"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tileset Script"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "TileSet"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "No VCS plugins are available."
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid ""
-"Remote settings are empty. VCS features that use the network may not work."
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "No commit message was provided."
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Commit"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Staged Changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Unstaged Changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
-msgid "Commit:"
-msgstr "Җәмәгать"
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Date:"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Subtitle:"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Do you want to remove the %s branch?"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Do you want to remove the %s remote?"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Apply"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control System"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Initialize"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Remote Login"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Select SSH public key path"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Select SSH private key path"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "SSH Passphrase"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Detect new changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Discard all changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Stage all changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Unstage all changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Commit Message"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Commit Changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
-msgid "Commit List"
-msgstr "Җәмәгать"
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Commit list size"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Branches"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Create New Branch"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Remove Branch"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Branch Name"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Remotes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Create New Remote"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Remove Remote"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Remote Name"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Remote URL"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Fetch"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Pull"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Push"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Force Push"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Modified"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Renamed"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Deleted"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Typechange"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Unmerged"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "View:"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Split"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Unified"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "(GLES3 only)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Add Output"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Scalar"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Vector"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Boolean"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Sampler"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Add input port"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Add output port"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Change input port type"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Change output port type"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Change input port name"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Change output port name"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Remove input port"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Remove output port"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Set expression"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Resize VisualShader node"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Set Uniform Name"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Set Input Default Port"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Add Node to Visual Shader"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Node(s) Moved"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Duplicate Nodes"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Paste Nodes"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Delete Nodes"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Visual Shader Input Type Changed"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "UniformRef Name Changed"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Vertex"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Fragment"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp modules/gltf/gltf_node.cpp
-#: scene/3d/light.cpp
-msgid "Light"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Show resulted shader code."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Create Shader Node"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Color function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Color operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Grayscale function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Converts HSV vector to RGB equivalent."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Converts RGB vector to HSV equivalent."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Sepia function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Burn operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Darken operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Difference operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Dodge operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "HardLight operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Lighten operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Overlay operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Screen operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "SoftLight operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Color constant."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Color uniform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the boolean result of the %s comparison between two parameters."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Equal (==)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Greater Than (>)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Greater Than or Equal (>=)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns an associated vector if the provided scalars are equal, greater or "
-"less."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns the boolean result of the comparison between INF and a scalar "
-"parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns the boolean result of the comparison between NaN and a scalar "
-"parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Less Than (<)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Less Than or Equal (<=)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Not Equal (!=)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns an associated vector if the provided boolean value is true or false."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns an associated scalar if the provided boolean value is true or false."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the boolean result of the comparison between two parameters."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns the boolean result of the comparison between INF (or NaN) and a "
-"scalar parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Boolean constant."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Boolean uniform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for all shader modes."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Input parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for vertex and fragment shader modes."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for fragment and light shader modes."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for fragment shader mode."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for light shader mode."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for vertex shader mode."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for vertex and fragment shader mode."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Scalar function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Scalar operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "E constant (2.718282). Represents the base of the natural logarithm."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Epsilon constant (0.00001). Smallest possible scalar number."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Phi constant (1.618034). Golden ratio."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Pi/4 constant (0.785398) or 45 degrees."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Pi/2 constant (1.570796) or 90 degrees."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Pi constant (3.141593) or 180 degrees."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Tau constant (6.283185) or 360 degrees."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Sqrt2 constant (1.414214). Square root of 2."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the absolute value of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the arc-cosine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the inverse hyperbolic cosine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the arc-sine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the inverse hyperbolic sine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the arc-tangent of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the arc-tangent of the parameters."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the inverse hyperbolic tangent of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Finds the nearest integer that is greater than or equal to the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Constrains a value to lie between two further values."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the cosine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the hyperbolic cosine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Converts a quantity in radians to degrees."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Base-e Exponential."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Base-2 Exponential."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Finds the nearest integer less than or equal to the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Computes the fractional part of the argument."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the inverse of the square root of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Natural logarithm."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Base-2 logarithm."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the greater of two values."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the lesser of two values."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Linear interpolation between two scalars."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the opposite value of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "1.0 - scalar"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns the value of the first parameter raised to the power of the second."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Converts a quantity in degrees to radians."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "1.0 / scalar"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Finds the nearest integer to the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Finds the nearest even integer to the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Clamps the value between 0.0 and 1.0."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Extracts the sign of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the sine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the hyperbolic sine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the square root of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"SmoothStep function( scalar(edge0), scalar(edge1), scalar(x) ).\n"
-"\n"
-"Returns 0.0 if 'x' is smaller than 'edge0' and 1.0 if x is larger than "
-"'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 "
-"using Hermite polynomials."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Step function( scalar(edge), scalar(x) ).\n"
-"\n"
-"Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the tangent of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the hyperbolic tangent of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Finds the truncated value of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Adds scalar to scalar."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Divides scalar by scalar."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Multiplies scalar by scalar."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the remainder of the two scalars."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Subtracts scalar from scalar."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Scalar constant."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Scalar uniform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Perform the cubic texture lookup."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Perform the texture lookup."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Cubic texture uniform lookup."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "2D texture uniform lookup."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "2D texture uniform lookup with triplanar."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Transform function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Calculate the outer product of a pair of vectors.\n"
-"\n"
-"OuterProduct treats the first parameter 'c' as a column vector (matrix with "
-"one column) and the second parameter 'r' as a row vector (matrix with one "
-"row) and does a linear algebraic matrix multiply 'c * r', yielding a matrix "
-"whose number of rows is the number of components in 'c' and whose number of "
-"columns is the number of components in 'r'."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Composes transform from four vectors."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Decomposes transform to four vectors."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the determinant of a transform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the inverse of a transform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the transpose of a transform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Multiplies transform by transform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Multiplies vector by transform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Transform constant."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Transform uniform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Vector function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Vector operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Composes vector from three scalars."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Decomposes vector to three scalars."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the cross product of two vectors."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the distance between two points."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the dot product of two vectors."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns the vector that points in the same direction as a reference vector. "
-"The function has three vector parameters : N, the vector to orient, I, the "
-"incident vector, and Nref, the reference vector. If the dot product of I and "
-"Nref is smaller than zero the return value is N. Otherwise -N is returned."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the length of a vector."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Linear interpolation between two vectors."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Linear interpolation between two vectors using scalar."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the normalize product of vector."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "1.0 - vector"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "1.0 / vector"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns the vector that points in the direction of reflection ( a : incident "
-"vector, b : normal vector )."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the vector that points in the direction of refraction."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"SmoothStep function( vector(edge0), vector(edge1), vector(x) ).\n"
-"\n"
-"Returns 0.0 if 'x' is smaller than 'edge0' and 1.0 if 'x' is larger than "
-"'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 "
-"using Hermite polynomials."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"SmoothStep function( scalar(edge0), scalar(edge1), vector(x) ).\n"
-"\n"
-"Returns 0.0 if 'x' is smaller than 'edge0' and 1.0 if 'x' is larger than "
-"'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 "
-"using Hermite polynomials."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Step function( vector(edge), vector(x) ).\n"
-"\n"
-"Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Step function( scalar(edge), vector(x) ).\n"
-"\n"
-"Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Adds vector to vector."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Divides vector by vector."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Multiplies vector by vector."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the remainder of the two vectors."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Subtracts vector from vector."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Vector constant."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Vector uniform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Custom Godot Shader Language expression, with custom amount of input and "
-"output ports. This is a direct injection of code into the vertex/fragment/"
-"light function, do not use it to write the function declarations inside."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns falloff based on the dot product of surface normal and view "
-"direction of camera (pass associated inputs to it)."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Custom Godot Shader Language expression, which is placed on top of the "
-"resulted shader. You can place various function definitions inside and call "
-"it later in the Expressions. You can also declare varyings, uniforms and "
-"constants."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "A reference to an existing uniform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "(Fragment/Light mode only) Scalar derivative function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "(Fragment/Light mode only) Vector derivative function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"(Fragment/Light mode only) (Vector) Derivative in 'x' using local "
-"differencing."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"(Fragment/Light mode only) (Scalar) Derivative in 'x' using local "
-"differencing."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"(Fragment/Light mode only) (Vector) Derivative in 'y' using local "
-"differencing."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"(Fragment/Light mode only) (Scalar) Derivative in 'y' using local "
-"differencing."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"(Fragment/Light mode only) (Vector) Sum of absolute derivative in 'x' and "
-"'y'."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"(Fragment/Light mode only) (Scalar) Sum of absolute derivative in 'x' and "
-"'y'."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "VisualShader"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property:"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Visual Shader Mode Changed"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Runnable"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export the project for all the presets defined."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "All presets must have an export path defined for Export All to work."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Delete preset '%s'?"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Exporting All"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export Path"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Presets"
-msgstr ""
-
-#: editor/project_export.cpp editor/project_settings_editor.cpp
-msgid "Add..."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"If checked, the preset will be available for use in one-click deploy.\n"
-"Only one preset per platform may be marked as runnable."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Resources"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export all resources in the project"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export selected scenes (and dependencies)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export selected resources (and dependencies)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export Mode:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Resources to export:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Filters to export non-resource files/folders\n"
-"(comma-separated, e.g: *.json, *.txt, docs/*)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Filters to exclude files/folders from project\n"
-"(comma-separated, e.g: *.json, *.txt, docs/*)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Features"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Custom (comma-separated):"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Feature List:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Script"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "GDScript Export Mode:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Compiled Bytecode (Faster Loading)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Encrypted (Provide Key Below)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "GDScript Encryption Key (256-bits as hexadecimal):"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Note: Encryption key needs to be stored in the binary,\n"
-"you need to build the export templates from source."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "More Info..."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export PCK/Zip..."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export Project..."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export All"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Choose an export mode:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export All..."
-msgstr ""
-
-#: editor/project_export.cpp editor/project_manager.cpp
-msgid "ZIP File"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Godot Project Pack"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Manage Export Templates"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export With Debug"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "The path specified doesn't exist."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Error opening package file (it's not in ZIP format)."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Invalid \".zip\" project file; it doesn't contain a \"project.godot\" file."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Please choose an empty folder."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Please choose a \"project.godot\" or \".zip\" file."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "This directory already contains a Godot project."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "New Game Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Imported Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Invalid project name."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Couldn't create folder."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "There is already a folder in this path with the specified name."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "It would be a good idea to name your project."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Invalid project path (changed anything?)."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Couldn't load project.godot in project path (error %d). It may be missing or "
-"corrupted."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Couldn't edit project.godot in project path."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Couldn't create project.godot in project path."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Package installed successfully!"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Rename Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Import Existing Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Import & Edit"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Create New Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Create & Edit"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Install Project:"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Install & Edit"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Project Name:"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Project Path:"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Project Installation Path:"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Renderer:"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "OpenGL ES 3.0"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Not supported by your GPU drivers."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Higher visual quality\n"
-"All features available\n"
-"Incompatible with older hardware\n"
-"Not recommended for web games"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "OpenGL ES 2.0"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Lower visual quality\n"
-"Some features not available\n"
-"Works on most hardware\n"
-"Recommended for web games"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Renderer can be changed later, but scenes may need to be adjusted."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Missing Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Error: Project is missing on the filesystem."
-msgstr ""
-
-#: editor/project_manager.cpp editor/scene_tree_dock.cpp
-msgid "Local"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Local Projects"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Asset Library Projects"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Can't open project at '%s'."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Are you sure to open more than one project?"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"The following project settings file does not specify the version of Godot "
-"through which it was created.\n"
-"\n"
-"%s\n"
-"\n"
-"If you proceed with opening it, it will be converted to Godot's current "
-"configuration file format.\n"
-"Warning: You won't be able to open the project with previous versions of the "
-"engine anymore."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"The following project settings file was generated by an older engine "
-"version, and needs to be converted for this version:\n"
-"\n"
-"%s\n"
-"\n"
-"Do you want to convert it?\n"
-"Warning: You won't be able to open the project with previous versions of the "
-"engine anymore."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"The project settings were created by a newer engine version, whose settings "
-"are not compatible with this version."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Can't run project: no main scene defined.\n"
-"Please edit the project and set the main scene in the Project Settings under "
-"the \"Application\" category."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Can't run project: Assets need to be imported.\n"
-"Please edit the project to trigger the initial import."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Are you sure to run %d projects at once?"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Remove %d projects from the list?"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Remove this project from the list?"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Remove all missing projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Language changed.\n"
-"The interface will update after restarting the editor or project manager."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Are you sure to scan %s folders for existing Godot projects?\n"
-"This could take a while."
-msgstr ""
-
-#. TRANSLATORS: This refers to the application where users manage their Godot projects.
-#: editor/project_manager.cpp
-msgctxt "Application"
-msgid "Project Manager"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Last Modified"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Loading, please wait..."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Edit Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Run Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Scan"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Scan Projects"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Select a Folder to Scan"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "New Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Import Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Remove Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Remove Missing"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "About"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Restart Now"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Remove All"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Also delete project contents (no undo!)"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Can't run project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"You currently don't have any projects.\n"
-"Would you like to explore official example projects in the Asset Library?"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Filter projects"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"This field filters projects by name and last path component.\n"
-"To filter projects by name and full path, the query must contain at least "
-"one `/` character."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Physical Key"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Key "
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Joy Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Joy Axis"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Mouse Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid ""
-"Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or "
-"'\"'"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "An action with the name '%s' already exists."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Rename Input Action Event"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Change Action deadzone"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Add Input Action Event"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "All Devices"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid " (Physical)"
-msgstr ""
-
-#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-msgid "Press a Key..."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Mouse Button Index:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Left Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Right Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Middle Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Wheel Up Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Wheel Down Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Wheel Left Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Wheel Right Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "X Button 1"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "X Button 2"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Joypad Axis Index:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Joypad Button Index:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Erase Input Action"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Erase Input Action Event"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Add Event"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Left Button."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Right Button."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Middle Button."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Wheel Up."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Wheel Down."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Add Global Property"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Select a setting item first!"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "No property '%s' exists."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Setting '%s' is internal, and it can't be deleted."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Delete Item"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid ""
-"Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or "
-"'\"'."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Add Input Action"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Error saving settings."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Settings saved OK."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Moved Input Action Event"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Override for Feature"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Add %d Translations"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Remove Translation"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Translation Resource Remap: Add %d Path(s)"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Translation Resource Remap: Add %d Remap(s)"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Change Resource Remap Language"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Remove Resource Remap"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Remove Resource Remap Option"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Changed Locale Filter"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Changed Locale Filter Mode"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Project Settings (project.godot)"
-msgstr ""
-
-#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-msgid "General"
-msgstr "Төп"
-
-#: editor/project_settings_editor.cpp
-msgid "Override For..."
-msgstr ""
-
-#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-msgid "The editor must be restarted for changes to take effect."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Input Map"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Action:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp scene/gui/scroll_container.cpp
-msgid "Deadzone"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Device:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Index:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Localization"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Translations"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Translations:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Remaps"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Resources:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Remaps by Locale:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Locales Filter"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Show All Locales"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Show Selected Locales Only"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Filter mode:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Locales:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "AutoLoad"
-msgstr ""
-
-#: editor/project_settings_editor.cpp platform/android/export/export_plugin.cpp
-#: platform/iphone/export/export.cpp
-msgid "Plugins"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Import Defaults"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Preset..."
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Zero"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Easing In-Out"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Easing Out-In"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "File..."
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Dir..."
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Assign"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Select Node"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Error loading file: Not a resource!"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Pick a Node"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Bit %d, val %d."
-msgstr ""
-
-#: editor/property_selector.cpp
-msgid "Select Property"
-msgstr ""
-
-#: editor/property_selector.cpp
-msgid "Select Virtual Method"
-msgstr ""
-
-#: editor/property_selector.cpp
-msgid "Select Method"
-msgstr ""
-
-#: editor/rename_dialog.cpp editor/scene_tree_dock.cpp
-msgid "Batch Rename"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Prefix:"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Suffix:"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Use Regular Expressions"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Advanced Options"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Substitute"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Node name"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Node's parent name, if available"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Node type"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Current scene name"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Root node name"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid ""
-"Sequential integer counter.\n"
-"Compare counter options."
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Per-level Counter"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "If set, the counter restarts for each group of child nodes."
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Initial value for the counter"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Amount by which counter is incremented for each node"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Padding"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid ""
-"Minimum number of digits for the counter.\n"
-"Missing digits are padded with leading zeros."
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Post-Process"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Style"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Keep"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "PascalCase to snake_case"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "snake_case to PascalCase"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Case"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "To Lowercase"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "To Uppercase"
-msgstr ""
-
-#: editor/rename_dialog.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Reset"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Regular Expression Error:"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "At character %s"
-msgstr ""
-
-#: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp
-msgid "Reparent Node"
-msgstr ""
-
-#: editor/reparent_dialog.cpp
-msgid "Reparent Location (Select new Parent):"
-msgstr ""
-
-#: editor/reparent_dialog.cpp
-msgid "Keep Global Transform"
-msgstr ""
-
-#: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp
-msgid "Reparent"
-msgstr ""
-
-#: editor/run_settings_dialog.cpp
-msgid "Run Mode:"
-msgstr ""
-
-#: editor/run_settings_dialog.cpp scene/main/scene_tree.cpp
-msgid "Current Scene"
-msgstr ""
-
-#: editor/run_settings_dialog.cpp
-msgid "Main Scene Arguments:"
-msgstr ""
-
-#: editor/run_settings_dialog.cpp
-msgid "Scene Run Settings"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "No parent to instance the scenes at."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Error loading scene from %s"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Cannot instance the scene '%s' because the current scene exists within one "
-"of its nodes."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Instance Scene(s)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Replace with Branch Scene"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Instance Child Scene"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Can't paste root node into the same scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Paste Node(s)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Detach Script"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on the tree root."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Move Node In Parent"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Move Nodes In Parent"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Duplicate Node(s)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Node must belong to the edited scene to become root."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Instantiated scenes can't become root"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Make node as Root"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Delete %d nodes and any children?"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Delete %d nodes?"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Delete the root node \"%s\"?"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Delete node \"%s\" and its children?"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Delete node \"%s\"?"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Saving the branch as a scene requires having a scene open in the editor."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Saving the branch as a scene requires selecting only one node, but you have "
-"selected %d nodes."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Can't save the root node branch as an instanced scene.\n"
-"To create an editable copy of the current scene, duplicate it using the "
-"FileSystem dock context menu\n"
-"or create an inherited scene using Scene > New Inherited Scene... instead."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Can't save the branch of an already instanced scene.\n"
-"To create a variation of a scene, you can make an inherited scene based on "
-"the instanced scene using Scene > New Inherited Scene... instead."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Can't save a branch which is a child of an already instantiated scene.\n"
-"To save this branch into its own scene, open the original scene, right click "
-"on this branch, and select \"Save Branch as Scene\"."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Can't save a branch which is part of an inherited scene.\n"
-"To save this branch into its own scene, open the original scene, right click "
-"on this branch, and select \"Save Branch as Scene\"."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Save New Scene As..."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Disabling \"editable_instance\" will cause all properties of the node to be "
-"reverted to their default."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Enabling \"Load As Placeholder\" will disable \"Editable Children\" and "
-"cause all properties of the node to be reverted to their default."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Make Local"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
-msgid "Another node already uses this unique name in the scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Enable Scene Unique Name"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
-msgid "Disable Scene Unique Name"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "New Scene Root"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Create Root Node:"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "2D Scene"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "3D Scene"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "User Interface"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Other Node"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Can't operate on nodes from a foreign scene!"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Can't operate on nodes the current scene inherits from!"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Attach Script"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Cut Node(s)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Remove Node(s)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Change type of node(s)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Couldn't save new scene. Likely dependencies (instances) couldn't be "
-"satisfied."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Error saving scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Error duplicating scene to save it."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Access as Scene Unique Name"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Clear Inheritance"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Editable Children"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Load As Placeholder"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Cannot attach a script: there are no languages registered.\n"
-"This is probably because this editor was built with all language modules "
-"disabled."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Add Child Node"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Expand/Collapse All"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Change Type"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Reparent to New Node"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Make Scene Root"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Merge From Scene"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp editor/script_editor_debugger.cpp
-msgid "Save Branch as Scene"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp editor/script_editor_debugger.cpp
-msgid "Copy Node Path"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Delete (No Confirm)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Add/Create a New Node."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Instance a scene file as a Node. Creates an inherited scene if no root node "
-"exists."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Attach a new or existing script to the selected node."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Detach the script from the selected node."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Remote"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"If selected, the Remote scene tree dock will cause the project to stutter "
-"every time it updates.\n"
-"Switch back to the Local scene tree dock to improve performance."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Show Scene Tree Root Selection"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Derive Script Globals By Name"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Use Favorites Root Selection"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Toggle Visible"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Unlock Node"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Button Group"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "(Connecting From)"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Node configuration warning:"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"This node can be accessed from within anywhere in the scene by preceding it "
-"with the '%s' prefix in a node path.\n"
-"Click to disable this."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"Node has %s connection(s) and %s group(s).\n"
-"Click to show signals dock."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"Node has %s connection(s).\n"
-"Click to show signals dock."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"Node is in %s group(s).\n"
-"Click to show groups dock."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Open Script:"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"Node is locked.\n"
-"Click to unlock it."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"Children are not selectable.\n"
-"Click to make selectable."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Toggle Visibility"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"AnimationPlayer is pinned.\n"
-"Click to unpin."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Invalid node name, the following characters are not allowed:"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Rename Node"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Scene Tree (Nodes):"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Node Configuration Warning!"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Select a Node"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Path is empty."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Filename is empty."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Path is not local."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Invalid base path."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "A directory with the same name exists."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "File does not exist."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Invalid extension."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Wrong extension chosen."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Error loading template '%s'"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Error - Could not create script in filesystem."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Error loading script from %s"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Overrides"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Open Script / Choose Location"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Open Script"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "File exists, it will be reused."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Invalid path."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Invalid class name."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Invalid inherited parent name or path."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Script path/name is valid."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Allowed: a-z, A-Z, 0-9, _ and ."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Built-in script (into scene file)."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Will create a new script file."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Will load an existing script file."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Script file already exists."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid ""
-"Note: Built-in scripts have some limitations and can't be edited using an "
-"external editor."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid ""
-"Warning: Having the script name be the same as a built-in type is usually "
-"not desired."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Class Name:"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Template:"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Built-in Script:"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Attach Node Script"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Bytes:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Warning:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Error:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "C++ Error"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "C++ Error:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "C++ Source"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Source:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "C++ Source:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Stack Trace"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Errors"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Child process connected."
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Copy Error"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Open C++ Source on GitHub"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Video RAM"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Skip Breakpoints"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Inspect Previous Instance"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Inspect Next Instance"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Stack Frames"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Filter stack variables"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Auto Switch To Remote Scene Tree"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Remote Scene Tree Refresh Interval"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Remote Inspect Refresh Interval"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Network Profiler"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Monitor"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Monitors"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Pick one or more items from the list to display the graph."
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "List of Video Memory Usage by Resource:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Total:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Export list to a CSV file"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Resource Path"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp scene/resources/audio_stream_sample.cpp
-#: servers/audio/effects/audio_effect_record.cpp
-msgid "Format"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp scene/main/viewport.cpp
-msgid "Usage"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp servers/visual_server.cpp
-msgid "Misc"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Clicked Control:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Clicked Control Type:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Live Edit Root:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Set From Tree"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Export measures as CSV"
-msgstr ""
-
-#: editor/settings_config_dialog.cpp
-msgid "Erase Shortcut"
-msgstr ""
-
-#: editor/settings_config_dialog.cpp
-msgid "Restore Shortcut"
-msgstr ""
-
-#: editor/settings_config_dialog.cpp
-msgid "Change Shortcut"
-msgstr ""
-
-#: editor/settings_config_dialog.cpp
-msgid "Editor Settings"
-msgstr ""
-
-#: editor/settings_config_dialog.cpp
-msgid "Shortcuts"
-msgstr ""
-
-#: editor/settings_config_dialog.cpp
-msgid "Binding"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Light Radius"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Stream Player 3D"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change AudioStreamPlayer3D Emission Angle"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
-#: platform/osx/export/export.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Camera"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Camera FOV"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Camera Size"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Visibility Notifier"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Notifier AABB"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Particles AABB"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Reflection Probe"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Probe Extents"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "GI Probe"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Baked Indirect Light"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
-msgid "Change Sphere Shape Radius"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
-msgid "Change Box Shape Extents"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Capsule Shape Radius"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Capsule Shape Height"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Cylinder Shape Radius"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Cylinder Shape Height"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Ray Shape Length"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Navigation Edge"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Navigation Edge Disabled"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Navigation Solid"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Navigation Solid Disabled"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Joint Body A"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Joint Body B"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Room Edge"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Room Overlap"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Set Room Point Position"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp scene/3d/portal.cpp
-msgid "Portal Margin"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Portal Edge"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Portal Arrow"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Set Portal Point Position"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Portal Front"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Portal Back"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp scene/2d/light_occluder_2d.cpp
-#: scene/2d/tile_map.cpp
-msgid "Occluder"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Set Occluder Sphere Radius"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Set Occluder Sphere Position"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Set Occluder Polygon Point Position"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Set Occluder Hole Point Position"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Occluder Polygon Front"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Occluder Polygon Back"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Occluder Hole"
-msgstr ""
-
-#: main/main.cpp
-msgid "Godot Physics"
-msgstr ""
-
-#: main/main.cpp servers/physics_2d/physics_2d_server_sw.cpp
-#: servers/visual/visual_server_scene.cpp
-msgid "Use BVH"
-msgstr ""
-
-#: main/main.cpp servers/physics_2d/physics_2d_server_sw.cpp
-#: servers/visual/visual_server_scene.cpp
-msgid "BVH Collision Margin"
-msgstr ""
-
-#: main/main.cpp
-msgid "Crash Handler"
-msgstr ""
-
-#: main/main.cpp
-msgid "Multithreaded Server"
-msgstr ""
-
-#: main/main.cpp
-msgid "RID Pool Prealloc"
-msgstr ""
-
-#: main/main.cpp
-msgid "Debugger stdout"
-msgstr ""
-
-#: main/main.cpp
-msgid "Max Chars Per Second"
-msgstr ""
-
-#: main/main.cpp
-msgid "Max Messages Per Frame"
-msgstr ""
-
-#: main/main.cpp
-msgid "Max Errors Per Second"
-msgstr ""
-
-#: main/main.cpp
-msgid "Max Warnings Per Second"
-msgstr ""
-
-#: main/main.cpp
-msgid "Flush stdout On Print"
-msgstr ""
-
-#: main/main.cpp servers/visual_server.cpp
-msgid "Logging"
-msgstr ""
-
-#: main/main.cpp
-msgid "File Logging"
-msgstr ""
-
-#: main/main.cpp
-msgid "Enable File Logging"
-msgstr ""
-
-#: main/main.cpp
-msgid "Log Path"
-msgstr ""
-
-#: main/main.cpp
-msgid "Max Log Files"
-msgstr ""
-
-#: main/main.cpp
-msgid "Driver"
-msgstr ""
-
-#: main/main.cpp
-msgid "Driver Name"
-msgstr ""
-
-#: main/main.cpp
-msgid "Fallback To GLES2"
-msgstr ""
-
-#: main/main.cpp
-msgid "Use Nvidia Rect Flicker Workaround"
-msgstr ""
-
-#: main/main.cpp
-msgid "DPI"
-msgstr ""
-
-#: main/main.cpp
-msgid "Allow hiDPI"
-msgstr ""
-
-#: main/main.cpp
-msgid "V-Sync"
-msgstr ""
-
-#: main/main.cpp
-msgid "Use V-Sync"
-msgstr ""
-
-#: main/main.cpp
-msgid "Per Pixel Transparency"
-msgstr ""
-
-#: main/main.cpp
-msgid "Allowed"
-msgstr ""
-
-#: main/main.cpp
-msgid "Intended Usage"
-msgstr ""
-
-#: main/main.cpp
-msgid "Framebuffer Allocation"
-msgstr ""
-
-#: main/main.cpp platform/uwp/os_uwp.cpp
-msgid "Energy Saving"
-msgstr ""
-
-#: main/main.cpp
-msgid "Threads"
-msgstr ""
-
-#: main/main.cpp servers/physics_2d/physics_2d_server_wrap_mt.h
-msgid "Thread Model"
-msgstr ""
-
-#: main/main.cpp
-msgid "Thread Safe BVH"
-msgstr ""
-
-#: main/main.cpp
-msgid "Handheld"
-msgstr ""
-
-#: main/main.cpp platform/javascript/export/export.cpp
-#: platform/uwp/export/export.cpp
-msgid "Orientation"
-msgstr ""
-
-#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
-#, fuzzy
-msgid "Common"
-msgstr "Җәмәгать"
-
-#: main/main.cpp
-msgid "Physics FPS"
-msgstr ""
-
-#: main/main.cpp
-msgid "Force FPS"
-msgstr ""
-
-#: main/main.cpp
-msgid "Enable Pause Aware Picking"
-msgstr ""
-
-#: main/main.cpp scene/gui/item_list.cpp scene/gui/popup_menu.cpp
-#: scene/gui/scroll_container.cpp scene/gui/text_edit.cpp scene/gui/tree.cpp
-#: scene/main/viewport.cpp scene/register_scene_types.cpp
-msgid "GUI"
-msgstr ""
-
-#: main/main.cpp
-msgid "Drop Mouse On GUI Input Disabled"
-msgstr ""
-
-#: main/main.cpp
-msgid "stdout"
-msgstr ""
-
-#: main/main.cpp
-msgid "Print FPS"
-msgstr ""
-
-#: main/main.cpp
-msgid "Verbose stdout"
-msgstr ""
-
-#: main/main.cpp scene/main/scene_tree.cpp scene/resources/multimesh.cpp
-msgid "Physics Interpolation"
-msgstr ""
-
-#: main/main.cpp
-msgid "Enable Warnings"
-msgstr ""
-
-#: main/main.cpp
-msgid "Frame Delay Msec"
-msgstr ""
-
-#: main/main.cpp
-msgid "Low Processor Mode"
-msgstr ""
-
-#: main/main.cpp
-msgid "Delta Sync After Draw"
-msgstr ""
-
-#: main/main.cpp
-msgid "iOS"
-msgstr ""
-
-#: main/main.cpp
-msgid "Hide Home Indicator"
-msgstr ""
-
-#: main/main.cpp
-msgid "Input Devices"
-msgstr ""
-
-#: main/main.cpp
-msgid "Pointing"
-msgstr ""
-
-#: main/main.cpp
-msgid "Touch Delay"
-msgstr ""
-
-#: main/main.cpp servers/visual_server.cpp
-msgid "GLES3"
-msgstr ""
-
-#: main/main.cpp servers/visual_server.cpp
-msgid "Shaders"
-msgstr ""
-
-#: main/main.cpp
-msgid "Debug Shader Fallbacks"
-msgstr ""
-
-#: main/main.cpp scene/3d/baked_lightmap.cpp scene/3d/camera.cpp
-#: scene/3d/world_environment.cpp scene/main/scene_tree.cpp
-#: scene/resources/world.cpp
-msgid "Environment"
-msgstr ""
-
-#: main/main.cpp
-msgid "Default Clear Color"
-msgstr ""
-
-#: main/main.cpp
-msgid "Boot Splash"
-msgstr ""
-
-#: main/main.cpp
-msgid "Show Image"
-msgstr ""
-
-#: main/main.cpp
-msgid "Image"
-msgstr ""
-
-#: main/main.cpp
-msgid "Fullsize"
-msgstr ""
-
-#: main/main.cpp scene/resources/dynamic_font.cpp
-msgid "Use Filter"
-msgstr ""
-
-#: main/main.cpp scene/resources/style_box.cpp
-msgid "BG Color"
-msgstr ""
-
-#: main/main.cpp
-msgid "macOS Native Icon"
-msgstr ""
-
-#: main/main.cpp
-msgid "Windows Native Icon"
-msgstr ""
-
-#: main/main.cpp
-msgid "Buffering"
-msgstr ""
-
-#: main/main.cpp
-msgid "Agile Event Flushing"
-msgstr ""
-
-#: main/main.cpp
-msgid "Emulate Touch From Mouse"
-msgstr ""
-
-#: main/main.cpp
-msgid "Emulate Mouse From Touch"
-msgstr ""
-
-#: main/main.cpp
-msgid "Mouse Cursor"
-msgstr ""
-
-#: main/main.cpp
-msgid "Custom Image"
-msgstr ""
-
-#: main/main.cpp
-msgid "Custom Image Hotspot"
-msgstr ""
-
-#: main/main.cpp
-msgid "Tooltip Position Offset"
-msgstr ""
-
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
-msgid "Debugger Agent"
-msgstr ""
-
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
-msgid "Wait For Debugger"
-msgstr ""
-
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
-msgid "Wait Timeout"
-msgstr ""
-
-#: main/main.cpp
-msgid "Runtime"
-msgstr ""
-
-#: main/main.cpp
-msgid "Unhandled Exception Policy"
-msgstr ""
-
-#: main/main.cpp
-msgid "Main Loop Type"
-msgstr ""
-
-#: main/main.cpp scene/gui/texture_progress.cpp
-#: scene/gui/viewport_container.cpp
-msgid "Stretch"
-msgstr ""
-
-#: main/main.cpp
-msgid "Aspect"
-msgstr ""
-
-#: main/main.cpp
-msgid "Shrink"
-msgstr ""
-
-#: main/main.cpp scene/main/scene_tree.cpp
-msgid "Auto Accept Quit"
-msgstr ""
-
-#: main/main.cpp scene/main/scene_tree.cpp
-msgid "Quit On Go Back"
-msgstr ""
-
-#: main/main.cpp scene/main/viewport.cpp
-msgid "Snap Controls To Pixels"
-msgstr ""
-
-#: main/main.cpp
-msgid "Dynamic Fonts"
-msgstr ""
-
-#: main/main.cpp
-msgid "Use Oversampling"
-msgstr ""
-
-#: modules/bullet/register_types.cpp modules/bullet/space_bullet.cpp
-msgid "Active Soft World"
-msgstr ""
-
-#: modules/csg/csg_gizmos.cpp
-msgid "CSG"
-msgstr ""
-
-#: modules/csg/csg_gizmos.cpp
-msgid "Change Cylinder Radius"
-msgstr ""
-
-#: modules/csg/csg_gizmos.cpp
-msgid "Change Cylinder Height"
-msgstr ""
-
-#: modules/csg/csg_gizmos.cpp
-msgid "Change Torus Inner Radius"
-msgstr ""
-
-#: modules/csg/csg_gizmos.cpp
-msgid "Change Torus Outer Radius"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Operation"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Calculate Tangents"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Use Collision"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp servers/physics_2d_server.cpp
-msgid "Collision Layer"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp scene/2d/ray_cast_2d.cpp scene/3d/camera.cpp
-#: scene/3d/ray_cast.cpp scene/3d/spring_arm.cpp
-#: scene/resources/navigation_mesh.cpp servers/physics_server.cpp
-msgid "Collision Mask"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Invert Faces"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp scene/2d/navigation_agent_2d.cpp
-#: scene/2d/navigation_obstacle_2d.cpp scene/3d/navigation_agent.cpp
-#: scene/3d/navigation_obstacle.cpp scene/3d/vehicle_body.cpp
-#: scene/animation/root_motion_view.cpp scene/resources/capsule_shape.cpp
-#: scene/resources/capsule_shape_2d.cpp scene/resources/circle_shape_2d.cpp
-#: scene/resources/cylinder_shape.cpp scene/resources/environment.cpp
-#: scene/resources/navigation_mesh.cpp scene/resources/primitive_meshes.cpp
-#: scene/resources/sphere_shape.cpp
-msgid "Radius"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp scene/resources/primitive_meshes.cpp
-msgid "Radial Segments"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp scene/resources/primitive_meshes.cpp
-msgid "Rings"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Smooth Faces"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Sides"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Cone"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Inner Radius"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Outer Radius"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Ring Sides"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
-#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
-msgid "Polygon"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Spin Degrees"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Spin Sides"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Node"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Interval Type"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Interval"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Simplify Angle"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Rotation"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Local"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Continuous U"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path U Distance"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Joined"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "Compression Mode"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "Transfer Channel"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "Channel Count"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "Always Ordered"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "Server Relay"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "DTLS Verify"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "DTLS Hostname"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "Use DTLS"
-msgstr ""
-
-#: modules/fbx/editor_scene_importer_fbx.cpp
-msgid "FBX"
-msgstr ""
-
-#: modules/fbx/editor_scene_importer_fbx.cpp
-msgid "Use FBX"
-msgstr ""
-
-#: modules/gdnative/gdnative.cpp
-msgid "Config File"
-msgstr ""
-
-#: modules/gdnative/gdnative.cpp
-msgid "Load Once"
-msgstr ""
-
-#: modules/gdnative/gdnative.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Singleton"
-msgstr ""
-
-#: modules/gdnative/gdnative.cpp
-msgid "Symbol Prefix"
-msgstr ""
-
-#: modules/gdnative/gdnative.cpp
-msgid "Reloadable"
-msgstr ""
-
-#: modules/gdnative/gdnative.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-#: modules/gdnative/nativescript/nativescript.cpp
-msgid "Library"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Select the dynamic library for this entry"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Select dependencies of the library for this entry"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Remove current entry"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Double click to create a new entry"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Platform:"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Platform"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Dynamic Library"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Add an architecture entry"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "GDNativeLibrary"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Enabled GDNative Singleton"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Disabled GDNative Singleton"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
-msgstr ""
-
-#: modules/gdnative/nativescript/nativescript.cpp
-msgid "Class Name"
-msgstr ""
-
-#: modules/gdnative/nativescript/nativescript.cpp
-msgid "Script Class"
-msgstr ""
-
-#: modules/gdnative/nativescript/nativescript.cpp
-msgid "Icon Path"
-msgstr ""
-
-#: modules/gdnative/register_types.cpp
-msgid "GDNative"
-msgstr ""
-
-#: modules/gdscript/editor/gdscript_highlighter.cpp
-#: modules/gdscript/gdscript.cpp
-msgid "GDScript"
-msgstr ""
-
-#: modules/gdscript/editor/gdscript_highlighter.cpp
-msgid "Function Definition Color"
-msgstr ""
-
-#: modules/gdscript/editor/gdscript_highlighter.cpp
-msgid "Node Path Color"
-msgstr ""
-
-#: modules/gdscript/gdscript.cpp modules/visual_script/visual_script.cpp
-msgid "Max Call Stack"
-msgstr ""
-
-#: modules/gdscript/gdscript.cpp
-msgid "Treat Warnings As Errors"
-msgstr ""
-
-#: modules/gdscript/gdscript.cpp
-msgid "Exclude Addons"
-msgstr ""
-
-#: modules/gdscript/gdscript.cpp
-msgid "Autocomplete Setters And Getters"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Step argument is zero!"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Not a script with an instance"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Not based on a script"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Not based on a resource file"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Invalid instance dictionary format (missing @path)"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Invalid instance dictionary format (can't load script at @path)"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Invalid instance dictionary format (invalid script at @path)"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Invalid instance dictionary (invalid subclasses)"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Object can't provide a length."
-msgstr ""
-
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-msgid "Language Server"
-msgstr ""
-
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-msgid "Enable Smart Resolve"
-msgstr ""
-
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-msgid "Show Native Symbols In Editor"
-msgstr ""
-
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-msgid "Use Thread"
-msgstr ""
-
-#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
-msgid "Export Mesh GLTF2"
-msgstr ""
-
-#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
-msgid "Export GLTF..."
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Buffer View"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp modules/gltf/gltf_buffer_view.cpp
-msgid "Byte Offset"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Component Type"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Normalized"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Count"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp scene/resources/visual_shader_nodes.cpp
-msgid "Min"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp scene/resources/visual_shader_nodes.cpp
-msgid "Max"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Sparse Count"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Sparse Indices Buffer View"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Sparse Indices Byte Offset"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Sparse Indices Component Type"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Sparse Values Buffer View"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Sparse Values Byte Offset"
-msgstr ""
-
-#: modules/gltf/gltf_buffer_view.cpp
-msgid "Buffer"
-msgstr ""
-
-#: modules/gltf/gltf_buffer_view.cpp
-msgid "Byte Length"
-msgstr ""
-
-#: modules/gltf/gltf_buffer_view.cpp
-msgid "Byte Stride"
-msgstr ""
-
-#: modules/gltf/gltf_buffer_view.cpp
-msgid "Indices"
-msgstr ""
-
-#: modules/gltf/gltf_camera.cpp
-msgid "FOV Size"
-msgstr ""
-
-#: modules/gltf/gltf_camera.cpp
-msgid "Zfar"
-msgstr ""
-
-#: modules/gltf/gltf_camera.cpp
-msgid "Znear"
-msgstr ""
-
-#: modules/gltf/gltf_light.cpp scene/2d/canvas_modulate.cpp
-#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/light.cpp
-#: scene/animation/root_motion_view.cpp scene/gui/color_picker.cpp
-#: scene/gui/color_rect.cpp scene/gui/rich_text_effect.cpp
-#: scene/resources/environment.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp
-msgid "Color"
-msgstr ""
-
-#: modules/gltf/gltf_light.cpp scene/3d/reflection_probe.cpp
-#: scene/resources/environment.cpp
-msgid "Intensity"
-msgstr ""
-
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
-msgid "Range"
-msgstr ""
-
-#: modules/gltf/gltf_light.cpp
-msgid "Inner Cone Angle"
-msgstr ""
-
-#: modules/gltf/gltf_light.cpp
-msgid "Outer Cone Angle"
-msgstr ""
-
-#: modules/gltf/gltf_mesh.cpp
-msgid "Blend Weights"
-msgstr ""
-
-#: modules/gltf/gltf_mesh.cpp
-msgid "Instance Materials"
-msgstr ""
-
-#: modules/gltf/gltf_node.cpp scene/3d/skeleton.cpp
-msgid "Parent"
-msgstr ""
-
-#: modules/gltf/gltf_node.cpp
-msgid "Xform"
-msgstr ""
-
-#: modules/gltf/gltf_node.cpp scene/3d/mesh_instance.cpp
-msgid "Skin"
-msgstr ""
-
-#: modules/gltf/gltf_node.cpp scene/3d/spatial.cpp
-msgid "Translation"
-msgstr ""
-
-#: modules/gltf/gltf_node.cpp
-msgid "Children"
-msgstr ""
-
-#: modules/gltf/gltf_skeleton.cpp modules/gltf/gltf_skin.cpp
-msgid "Joints"
-msgstr ""
-
-#: modules/gltf/gltf_skeleton.cpp modules/gltf/gltf_skin.cpp
-msgid "Roots"
-msgstr ""
-
-#: modules/gltf/gltf_skeleton.cpp modules/gltf/gltf_state.cpp
-msgid "Unique Names"
-msgstr ""
-
-#: modules/gltf/gltf_skeleton.cpp
-msgid "Godot Bone Node"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Skin Root"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Joints Original"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Inverse Binds"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Non Joints"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Joint I To Bone I"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Joint I To Name"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Godot Skin"
-msgstr ""
-
-#: modules/gltf/gltf_spec_gloss.cpp
-msgid "Diffuse Img"
-msgstr ""
-
-#: modules/gltf/gltf_spec_gloss.cpp
-msgid "Diffuse Factor"
-msgstr ""
-
-#: modules/gltf/gltf_spec_gloss.cpp
-msgid "Gloss Factor"
-msgstr ""
-
-#: modules/gltf/gltf_spec_gloss.cpp
-msgid "Specular Factor"
-msgstr ""
-
-#: modules/gltf/gltf_spec_gloss.cpp
-msgid "Spec Gloss Img"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Json"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Major Version"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Minor Version"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "GLB Data"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Use Named Skin Binds"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Buffer Views"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Accessors"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Scene Name"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Root Nodes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp scene/2d/particles_2d.cpp
-#: scene/gui/texture_button.cpp scene/gui/texture_progress.cpp
-msgid "Textures"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
-msgid "Images"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Cameras"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp servers/visual_server.cpp
-msgid "Lights"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Unique Animation Names"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Skeletons"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Skeleton To Node"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Animations"
-msgstr ""
-
-#: modules/gltf/gltf_texture.cpp
-msgid "Src Image"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp
-msgid "Physics Material"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
-msgid "Use In Baked Light"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
-msgid "Cell"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp
-msgid "Octant Size"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp
-msgid "Center X"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp
-msgid "Center Y"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp
-msgid "Center Z"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
-#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
-#: scene/resources/material.cpp
-msgid "Mask"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Next Plane"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Previous Plane"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Plane:"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Next Floor"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Previous Floor"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Floor:"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Delete Selection"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Fill Selection"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paste Selection"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Selection"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Snap View"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Clip Disabled"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Clip Above"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Clip Below"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Edit X Axis"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Edit Y Axis"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Edit Z Axis"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Rotate X"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Rotate Y"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Rotate Z"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Back Rotate X"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Back Rotate Y"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Back Rotate Z"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Clear Rotation"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Paste Selects"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Clear Selection"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Fill Selection"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Settings"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Pick Distance:"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Filter meshes"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Give a MeshLibrary resource to this GridMap to use its meshes."
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Begin Bake"
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Preparing data structures"
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Generate buffers"
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Direct lighting"
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Indirect lighting"
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Post processing"
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Plotting lightmaps"
-msgstr ""
-
-#: modules/lightmapper_cpu/register_types.cpp
-msgid "CPU Lightmapper"
-msgstr ""
-
-#: modules/lightmapper_cpu/register_types.cpp
-msgid "Low Quality Ray Count"
-msgstr ""
-
-#: modules/lightmapper_cpu/register_types.cpp
-msgid "Medium Quality Ray Count"
-msgstr ""
-
-#: modules/lightmapper_cpu/register_types.cpp
-msgid "High Quality Ray Count"
-msgstr ""
-
-#: modules/lightmapper_cpu/register_types.cpp
-msgid "Ultra Quality Ray Count"
-msgstr ""
-
-#: modules/minimp3/audio_stream_mp3.cpp
-#: modules/minimp3/resource_importer_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
-#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
-msgid "Loop Offset"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "Eye Height"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "IOD"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "Display Width"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "Display To Lens"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "Oversample"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "K1"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "K2"
-msgstr ""
-
-#: modules/mono/csharp_script.cpp
-msgid "Class name can't be a reserved keyword"
-msgstr ""
-
-#: modules/mono/csharp_script.cpp
-msgid "Build Solution"
-msgstr ""
-
-#: modules/mono/editor/csharp_project.cpp
-msgid "Auto Update Project"
-msgstr ""
-
-#: modules/mono/mono_gd/gd_mono_utils.cpp
-msgid "End of inner exception stack trace"
-msgstr ""
-
-#: modules/navigation/navigation_mesh_editor_plugin.cpp
-#: scene/3d/navigation_mesh_instance.cpp
-msgid "A NavigationMesh resource must be set or created for this node to work."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_editor_plugin.cpp
-msgid "Bake NavMesh"
-msgstr ""
-
-#: modules/navigation/navigation_mesh_editor_plugin.cpp
-msgid "Clear the navigation mesh."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Setting up Configuration..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Calculating grid size..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Creating heightfield..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Marking walkable triangles..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Constructing compact heightfield..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Eroding walkable area..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Partitioning..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Creating contours..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Creating polymesh..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Converting to native navigation mesh..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Navigation Mesh Generator Setup:"
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Parsing Geometry..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Done!"
-msgstr ""
-
-#: modules/opensimplex/noise_texture.cpp
-msgid "Seamless"
-msgstr ""
-
-#: modules/opensimplex/noise_texture.cpp
-msgid "As Normal Map"
-msgstr ""
-
-#: modules/opensimplex/noise_texture.cpp
-msgid "Bump Strength"
-msgstr ""
-
-#: modules/opensimplex/noise_texture.cpp
-msgid "Noise"
-msgstr ""
-
-#: modules/opensimplex/noise_texture.cpp
-msgid "Noise Offset"
-msgstr ""
-
-#: modules/opensimplex/open_simplex_noise.cpp
-msgid "Octaves"
-msgstr ""
-
-#: modules/opensimplex/open_simplex_noise.cpp
-msgid "Period"
-msgstr ""
-
-#: modules/opensimplex/open_simplex_noise.cpp
-msgid "Persistence"
-msgstr ""
-
-#: modules/opensimplex/open_simplex_noise.cpp
-msgid "Lacunarity"
-msgstr ""
-
-#: modules/regex/regex.cpp
-msgid "Subject"
-msgstr ""
-
-#: modules/regex/regex.cpp
-msgid "Names"
-msgstr ""
-
-#: modules/regex/regex.cpp
-msgid "Strings"
-msgstr ""
-
-#: modules/upnp/upnp.cpp
-msgid "Discover Multicast If"
-msgstr ""
-
-#: modules/upnp/upnp.cpp
-msgid "Discover Local Port"
-msgstr ""
-
-#: modules/upnp/upnp.cpp
-msgid "Discover IPv6"
-msgstr ""
-
-#: modules/upnp/upnp_device.cpp
-msgid "Description URL"
-msgstr ""
-
-#: modules/upnp/upnp_device.cpp
-msgid "Service Type"
-msgstr ""
-
-#: modules/upnp/upnp_device.cpp
-msgid "IGD Control URL"
-msgstr ""
-
-#: modules/upnp/upnp_device.cpp
-msgid "IGD Service Type"
-msgstr ""
-
-#: modules/upnp/upnp_device.cpp
-msgid "IGD Our Addr"
-msgstr ""
-
-#: modules/upnp/upnp_device.cpp
-msgid "IGD Status"
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid ""
-"A node yielded without working memory, please read the docs on how to yield "
-"properly!"
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid ""
-"Node yielded, but did not return a function state in the first working "
-"memory."
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid ""
-"Return value must be assigned to first element of node working memory! Fix "
-"your node please."
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid "Found sequence bit but not the node in the stack, report bug!"
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid "Visual Script"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Signal Arguments"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Argument Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Argument name"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Set Variable Default Value"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Set Variable Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Input Port"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Output Port"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Port Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Port Name"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Override an existing built-in function."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Create a new function."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Variables:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Create a new variable."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Signals:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Create a new signal."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Name is not a valid identifier:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Name already in use by another func/var/signal:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Rename Function"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Rename Variable"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Rename Signal"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Function"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Delete input port"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Variable"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Signal"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Input Port"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Output Port"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Expression"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Can't copy the function node."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Paste VisualScript Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove VisualScript Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Duplicate VisualScript Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Hold %s to drop a Getter. Hold Shift to drop a generic signature."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Hold %s to drop a simple reference to the node."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Hold Ctrl to drop a simple reference to the node."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Hold %s to drop a Variable Setter."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Hold Ctrl to drop a Variable Setter."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Preload Node"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Node(s)"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Node(s) From Tree"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid ""
-"Can't drop properties because script '%s' is not used in this scene.\n"
-"Drop holding 'Shift' to just copy the signature."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Getter Property"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Setter Property"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Base Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Move Node(s)"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove VisualScript Node"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Connect Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Disconnect Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Connect Node Data"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Connect Node Sequence"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Script already has function '%s'"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Input Value"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Resize Comment"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Can't create function with a function node."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Can't create function of nodes from nodes of multiple functions."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Select at least one node with sequence port."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Try to only have one sequence input in selection."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Create Function"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Make Tool:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Members:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Base Type:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Nodes..."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Function..."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "function_name"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Select or create a function to edit its graph."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Delete Selected"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Find Node Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Copy Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Cut Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Make Function"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Refresh Graph"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit Member"
-msgstr ""
-
-#: modules/visual_script/visual_script_expression.cpp
-#: scene/resources/visual_shader.cpp
-msgid "Expression"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Return"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Return Enabled"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Return Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Condition"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "if (cond) is:"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "While"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "while (cond):"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "for (elem) in (input):"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Sequence"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "in order:"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Steps"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Switch"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "'input' is:"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Type Cast"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Is %s?"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Base Script"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "On %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "On Self"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Call Mode"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Basic Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Node Path"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Use Default Args"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Validate"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "RPC Call Mode"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Subtract %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Multiply %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Divide %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Mod %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "ShiftLeft %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "ShiftRight %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "BitAnd %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "BitOr %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "BitXor %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Set Mode"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Assign Op"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Get %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Invalid index property name."
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Base object is not a Node!"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Path does not lead to Node!"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Invalid index property name '%s' in node %s."
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Emit %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Compose Array"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp scene/resources/material.cpp
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Operator"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "a if cond, else b"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Var Name"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Preload"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Get Index"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Set Index"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Global Constant"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Class Constant"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Basic Constant"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Math Constant"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Get Engine Singleton"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Get Scene Node"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Get Scene Tree"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Get Self"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "CustomNode"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Custom node has no _step() method, can't process graph."
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid ""
-"Invalid return value from _step(), must be integer (seq out), or string "
-"(error)."
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "SubCall"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp scene/gui/graph_node.cpp
-msgid "Title"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Construct %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Get Local Var"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Set Local Var"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Action %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Deconstruct %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Search VisualScript"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Yield"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Wait"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Next Frame"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Next Physics Frame"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "%s sec(s)"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp scene/main/timer.cpp
-msgid "Wait Time"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "WaitSignal"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "WaitNodeSignal"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "WaitInstanceSignal"
-msgstr ""
-
-#: modules/webrtc/webrtc_data_channel.cpp
-msgid "Write Mode"
-msgstr ""
-
-#: modules/webrtc/webrtc_data_channel.h
-msgid "WebRTC"
-msgstr ""
-
-#: modules/webrtc/webrtc_data_channel.h
-msgid "Max Channel In Buffer (KB)"
-msgstr ""
-
-#: modules/websocket/websocket_client.cpp
-msgid "Verify SSL"
-msgstr ""
-
-#: modules/websocket/websocket_client.cpp
-msgid "Trusted SSL Certificate"
-msgstr ""
-
-#: modules/websocket/websocket_macros.h
-msgid "WebSocket Client"
-msgstr ""
-
-#: modules/websocket/websocket_macros.h
-msgid "Max In Buffer (KB)"
-msgstr ""
-
-#: modules/websocket/websocket_macros.h
-msgid "Max In Packets"
-msgstr ""
-
-#: modules/websocket/websocket_macros.h
-msgid "Max Out Buffer (KB)"
-msgstr ""
-
-#: modules/websocket/websocket_macros.h
-msgid "Max Out Packets"
-msgstr ""
-
-#: modules/websocket/websocket_macros.h
-msgid "WebSocket Server"
-msgstr ""
-
-#: modules/websocket/websocket_server.cpp
-msgid "Bind IP"
-msgstr ""
-
-#: modules/websocket/websocket_server.cpp
-msgid "Private Key"
-msgstr ""
-
-#: modules/websocket/websocket_server.cpp platform/javascript/export/export.cpp
-msgid "SSL Certificate"
-msgstr ""
-
-#: modules/websocket/websocket_server.cpp
-msgid "CA Chain"
-msgstr ""
-
-#: modules/websocket/websocket_server.cpp
-msgid "Handshake Timeout"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Session Mode"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Required Features"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Optional Features"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Requested Reference Space Types"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Reference Space Type"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Visibility State"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Bounds Geometry"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "XR Standard Mapping"
-msgstr ""
-
-#: platform/android/export/export.cpp
-msgid "Android SDK Path"
-msgstr ""
-
-#: platform/android/export/export.cpp
-msgid "Debug Keystore"
-msgstr ""
-
-#: platform/android/export/export.cpp
-msgid "Debug Keystore User"
-msgstr ""
-
-#: platform/android/export/export.cpp
-msgid "Debug Keystore Pass"
-msgstr ""
-
-#: platform/android/export/export.cpp
-msgid "Force System User"
-msgstr ""
-
-#: platform/android/export/export.cpp
-msgid "Shutdown ADB On Exit"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Launcher Icons"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Main 192 X 192"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Adaptive Foreground 432 X 432"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Adaptive Background 432 X 432"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Package name is missing."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Package segments must be of non-zero length."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "The character '%s' is not allowed in Android application package names."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "A digit cannot be the first character in a package segment."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "The character '%s' cannot be the first character in a package segment."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "The package must have at least one '.' separator."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Use Custom Build"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Export Format"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
-msgid "Architectures"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Keystore"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Debug User"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
-msgid "Debug Password"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Release User"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Release Password"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "One Click Deploy"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Clear Previous Install"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Code"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Min SDK"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Target SDK"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
-msgid "Package"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
-msgid "Unique Name"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Signed"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Classify As Game"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Retain Data On Uninstall"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Exclude From Recents"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Graphics"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "OpenGL Debug"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "XR Features"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "XR Mode"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Hand Tracking"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Hand Tracking Frequency"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Passthrough"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Immersive Mode"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Support Small"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Support Normal"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Support Large"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Support Xlarge"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "User Data Backup"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Allow"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Command Line"
-msgstr "Җәмәгать"
-
-#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
-msgid "Extra Args"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "APK Expansion"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Salt"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Public Key"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Permissions"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Custom Permissions"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Select device from the list"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Running on %s"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Exporting APK..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Uninstalling..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Installing to device, please wait..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not install to device: %s"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Running on device..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not execute on device."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Android build template not installed in the project. Install it from the "
-"Project menu."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Either Debug Keystore, Debug User AND Debug Password settings must be "
-"configured OR none of them."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Debug keystore not configured in the Editor Settings nor in the preset."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Either Release Keystore, Release User AND Release Password settings must be "
-"configured OR none of them."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Release keystore incorrectly configured in the export preset."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "A valid Android SDK path is required in Editor Settings."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Invalid Android SDK path in Editor Settings."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Missing 'platform-tools' directory!"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Unable to find Android SDK platform-tools' adb command."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Please check in the Android SDK directory specified in Editor Settings."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Missing 'build-tools' directory!"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Unable to find Android SDK build-tools' apksigner command."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Invalid public key for APK expansion."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Invalid package name:"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Invalid \"GodotPaymentV3\" module included in the \"android/modules\" "
-"project setting (changed in Godot 3.2.2).\n"
-"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n"
-"Note that the singleton was also renamed from \"GodotPayments\" to "
-"\"GodotGooglePlayBilling\"."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "\"Use Custom Build\" must be enabled to use the plugins."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"\"Hand Tracking\" is only valid when \"Xr Mode\" is \"Oculus Mobile VrApi\" "
-"or \"OpenXR\"."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "\"Passthrough\" is only valid when \"Xr Mode\" is \"OpenXR\"."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Changing the \"Min Sdk\" is only valid when \"Use Custom Build\" is enabled."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Changing the \"Target Sdk\" is only valid when \"Use Custom Build\" is "
-"enabled."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Signing debug %s..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Signing release %s..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not find keystore, unable to export."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "'apksigner' returned with error #%d"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Verifying %s..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "'apksigner' verification of %s failed."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Exporting for Android"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Invalid filename! Android App Bundle requires the *.aab extension."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "APK Expansion not compatible with Android App Bundle."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Invalid filename! Android APK requires the *.apk extension."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Trying to build from a custom built template, but no version info for it "
-"exists. Please reinstall from the 'Project' menu."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
-"Please reinstall Android build template from 'Project' menu."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not write expansion package file!"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Building Android Project (gradle)"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Building of Android project failed, check output for the error.\n"
-"Alternatively visit docs.godotengine.org for Android build documentation."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Moving output"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Unable to copy and rename export file, check gradle project directory for "
-"outputs."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Creating APK..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
-"Please build a template with all required libraries, or uncheck the missing "
-"architectures in the export preset."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Adding files..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Aligning APK..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not unzip temporary unaligned APK."
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Identifier is missing."
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "The character '%s' is not allowed in Identifier."
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Landscape Launch Screens"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 2436 X 1125"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 2208 X 1242"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 1024 X 768"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 2048 X 1536"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Portrait Launch Screens"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 640 X 960"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 640 X 1136"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 750 X 1334"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 1125 X 2436"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 768 X 1024"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 1536 X 2048"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 1242 X 2208"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "App Store Team ID"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Provisioning Profile UUID Debug"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Code Sign Identity Debug"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Export Method Debug"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Provisioning Profile UUID Release"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Code Sign Identity Release"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Export Method Release"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Targeted Device Family"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Info"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Identifier"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Signature"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Short Version"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-#: platform/windows/export/export.cpp
-msgid "Copyright"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Capabilities"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Access Wi-Fi"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Push Notifications"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "User Data"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Accessible From Files App"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Accessible From iTunes Sharing"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Privacy"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Camera Usage Description"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Microphone Usage Description"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Photolibrary Usage Description"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 120 X 120"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 180 X 180"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 76 X 76"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 152 X 152"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 167 X 167"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "App Store 1024 X 1024"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Spotlight 40 X 40"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Spotlight 80 X 80"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Storyboard"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Use Launch Screen Storyboard"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Image Scale Mode"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Custom Image @2x"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Custom Image @3x"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Use Custom BG Color"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Custom BG Color"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "App Store Team ID not specified - cannot configure the project."
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Invalid Identifier:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Stop HTTP Server"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Run in Browser"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Run exported HTML in the system's default browser."
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Variant"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Export Type"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "VRAM Texture Compression"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "For Desktop"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "For Mobile"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "HTML"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Export Icon"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Custom HTML Shell"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Head Include"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Canvas Resize Policy"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Focus Canvas On Start"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Experimental Virtual Keyboard"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Progressive Web App"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Offline Page"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Icon 144 X 144"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Icon 180 X 180"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Icon 512 X 512"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Web"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "HTTP Host"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "HTTP Port"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Use SSL"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "SSL Key"
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Can't get filesystem access."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to get Info.plist hash."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Invalid Info.plist, no exe name."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Invalid Info.plist, no bundle id."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Invalid Info.plist, can't load."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to create \"%s\" subfolder."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to extract thin binary."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Invalid binary format."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Already signed!"
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to process nested resources."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to create _CodeSignature subfolder."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to get CodeResources hash."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp platform/osx/export/export.cpp
-msgid "Invalid entitlements file."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Invalid executable file."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Can't resize signature load command."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to create fat binary."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Unknown bundle type."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Unknown object type."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "App Category"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "High Res"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Location Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Address Book Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Calendar Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Photos Library Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Desktop Folder Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Documents Folder Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Downloads Folder Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Network Volumes Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Removable Volumes Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp platform/windows/export/export.cpp
-msgid "Codesign"
-msgstr ""
-
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
-msgid "Identity"
-msgstr ""
-
-#: platform/osx/export/export.cpp platform/windows/export/export.cpp
-msgid "Timestamp"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Hardened Runtime"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Replace Existing Signature"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Entitlements"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Custom File"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Allow JIT Code Execution"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Allow Unsigned Executable Memory"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Allow Dyld Environment Variables"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Disable Library Validation"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Audio Input"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Address Book"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Calendars"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Photos Library"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Apple Events"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Debugging"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "App Sandbox"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Network Server"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Network Client"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Device USB"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Device Bluetooth"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Files Downloads"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Files Pictures"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Files Music"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Files Movies"
-msgstr ""
-
-#: platform/osx/export/export.cpp platform/windows/export/export.cpp
-msgid "Custom Options"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Apple ID Name"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Apple ID Password"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Apple Team ID"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"You can check progress manually by opening a Terminal and running the "
-"following command:"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Run the following command to staple the notarization ticket to the exported "
-"application (optional):"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "No identity found."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Creating app bundle"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Relative symlinks are not supported on this OS, the exported project might "
-"be broken!"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
-"template archive."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Making PKG"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Ad-hoc signed applications require the 'Disable Library Validation' "
-"entitlement to load dynamic libraries."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Code signing bundle"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Making DMG"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Code signing DMG"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Making ZIP"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Notarization requires the app to be archived first, select the DMG or ZIP "
-"export format instead."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Sending archive for notarization"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Invalid bundle identifier:"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Warning: Built-in \"codesign\" is selected in the Editor Settings. Code "
-"signing is limited to ad-hoc signature only."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Warning: Xcode command line tools are not installed, using built-in "
-"\"codesign\". Code signing is limited to ad-hoc signature only."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization: Notarization with an ad-hoc signature is not supported."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization: Code signing is required for notarization."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization: Hardened runtime is required for notarization."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization: Timestamp runtime is required for notarization."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization: Apple ID name not specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization: Apple ID password not specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Warning: Notarization is disabled. The exported project will be blocked by "
-"Gatekeeper if it's downloaded from an unknown source."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Code signing is disabled. The exported project will not run on Macs with "
-"enabled Gatekeeper and Apple Silicon powered Macs."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Hardened Runtime is not compatible with ad-hoc signature, and will be "
-"disabled!"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Timestamping is not compatible with ad-hoc signature, and will be disabled!"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Warning: Notarization is not supported from this OS. The exported project "
-"will be blocked by Gatekeeper if it's downloaded from an unknown source."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Privacy: Microphone access is enabled, but usage description is not "
-"specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Privacy: Camera access is enabled, but usage description is not specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Privacy: Location information access is enabled, but usage description is "
-"not specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Privacy: Address book access is enabled, but usage description is not "
-"specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Privacy: Calendar access is enabled, but usage description is not specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Privacy: Photo library access is enabled, but usage description is not "
-"specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "macOS"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Force Builtin Codesign"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Architecture"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Display Name"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Short Name"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Publisher"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Publisher Display Name"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Product GUID"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Publisher GUID"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Signing"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Certificate"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Algorithm"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Major"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Minor"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Build"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Revision"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Landscape"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Portrait"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Landscape Flipped"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Portrait Flipped"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Store Logo"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Square 44 X 44 Logo"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Square 71 X 71 Logo"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Square 150 X 150 Logo"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Square 310 X 310 Logo"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Wide 310 X 150 Logo"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Splash Screen"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Tiles"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Show Name On Square 150 X 150"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Show Name On Wide 310 X 150"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Show Name On Square 310 X 310"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid package short name."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid package unique name."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid package publisher display name."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid product GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "UWP"
-msgstr ""
-
-#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
-msgid "Signtool"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Debug Certificate"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Identity Type"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Timestamp Server URL"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Digest Algorithm"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Modify Resources"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "File Version"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Product Version"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Company Name"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Product Name"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "File Description"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Trademarks"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid ""
-"The rcedit tool must be configured in the Editor Settings (Export > Windows "
-"> Rcedit) to change the icon or app information data."
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Invalid icon path:"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Invalid file version:"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Invalid product version:"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Windows"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Rcedit"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Osslsigncode"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Wine"
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
-#: scene/resources/texture.cpp
-msgid "Frames"
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp
-msgid ""
-"A SpriteFrames resource must be created or set in the \"Frames\" property in "
-"order for AnimatedSprite to display frames."
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Speed Scale"
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp scene/2d/audio_stream_player_2d.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/sprite_3d.cpp
-#: scene/audio/audio_stream_player.cpp
-msgid "Playing"
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-msgid "Centered"
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/texture_button.cpp scene/gui/texture_rect.cpp
-msgid "Flip H"
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/texture_button.cpp scene/gui/texture_rect.cpp
-msgid "Flip V"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Monitoring"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Monitorable"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Physics Overrides"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Space Override"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Gravity Point"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Gravity Distance Scale"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Gravity Vec"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/2d/cpu_particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Gravity"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Linear Damp"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Angular Damp"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Audio Bus"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Override"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
-#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
-msgid "Volume dB"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp
-#: servers/audio/effects/audio_effect_pitch_shift.cpp
-msgid "Pitch Scale"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Autoplay"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp
-msgid "Stream Paused"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
-msgid "Max Distance"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
-msgid "Attenuation"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Bus"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-msgid "Area Mask"
-msgstr ""
-
-#: scene/2d/back_buffer_copy.cpp
-msgid "Copy Mode"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Anchor Mode"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Rotating"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/2d/listener_2d.cpp scene/3d/camera.cpp
-#: scene/3d/listener.cpp scene/animation/animation_blend_tree.cpp
-msgid "Current"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/gui/graph_edit.cpp
-msgid "Zoom"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/main/canvas_layer.cpp
-msgid "Custom Viewport"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/3d/camera.cpp
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp scene/main/timer.cpp
-msgid "Process Mode"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Limit"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
-#: scene/resources/style_box.cpp scene/resources/texture.cpp
-msgid "Left"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
-#: scene/resources/style_box.cpp scene/resources/texture.cpp
-msgid "Right"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
-#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
-#: scene/resources/texture.cpp
-msgid "Bottom"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Smoothed"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Draw Margin"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Drag Margin H Enabled"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Drag Margin V Enabled"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Smoothing"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "H"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "V"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Drag Margin"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Draw Screen"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Draw Limits"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Draw Drag Margin"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp scene/resources/environment.cpp
-#: scene/resources/material.cpp
-msgid "Blend Mode"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Light Mode"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Particles Animation"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Particles Anim H Frames"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Particles Anim V Frames"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Particles Anim Loop"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp scene/3d/spatial.cpp
-msgid "Visibility"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp scene/3d/spatial.cpp scene/gui/progress_bar.cpp
-#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
-msgid "Visible"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Self Modulate"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Show Behind Parent"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Show On Top"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp scene/2d/light_occluder_2d.cpp
-#: scene/2d/tile_map.cpp
-msgid "Light Mask"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Use Parent Material"
-msgstr ""
-
-#: scene/2d/canvas_modulate.cpp
-msgid ""
-"Only one visible CanvasModulate is allowed per scene (or set of instanced "
-"scenes). The first created one will work, while the rest will be ignored."
-msgstr ""
-
-#: scene/2d/collision_object_2d.cpp
-msgid ""
-"This node has no shape, so it can't collide or interact with other objects.\n"
-"Consider adding a CollisionShape2D or CollisionPolygon2D as a child to "
-"define its shape."
-msgstr ""
-
-#: scene/2d/collision_object_2d.cpp
-msgid "Pickable"
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp
-msgid ""
-"CollisionPolygon2D only serves to provide a collision shape to a "
-"CollisionObject2D derived node. Please only use it as a child of Area2D, "
-"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape."
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp
-msgid "An empty CollisionPolygon2D has no effect on collision."
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp
-msgid "Invalid polygon. At least 3 points are needed in 'Solids' build mode."
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp
-msgid "Invalid polygon. At least 2 points are needed in 'Segments' build mode."
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp scene/2d/collision_shape_2d.cpp
-msgid ""
-"The One Way Collision property will be ignored when the parent is an Area2D."
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp
-msgid "Build Mode"
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp scene/2d/collision_shape_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/3d/collision_shape.cpp
-#: scene/animation/animation_node_state_machine.cpp scene/gui/base_button.cpp
-#: scene/gui/texture_button.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Disabled"
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp scene/2d/collision_shape_2d.cpp
-msgid "One Way Collision"
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp scene/2d/collision_shape_2d.cpp
-msgid "One Way Collision Margin"
-msgstr ""
-
-#: scene/2d/collision_shape_2d.cpp
-msgid ""
-"CollisionShape2D only serves to provide a collision shape to a "
-"CollisionObject2D derived node. Please only use it as a child of Area2D, "
-"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape."
-msgstr ""
-
-#: scene/2d/collision_shape_2d.cpp
-msgid ""
-"A shape must be provided for CollisionShape2D to function. Please create a "
-"shape resource for it!"
-msgstr ""
-
-#: scene/2d/collision_shape_2d.cpp
-msgid ""
-"Polygon-based shapes are not meant be used nor edited directly through the "
-"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp
-msgid ""
-"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
-"\"Particles Animation\" enabled."
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Emitting"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Lifetime"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp scene/main/timer.cpp
-msgid "One Shot"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Preprocess"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Explosiveness"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Randomness"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Lifetime Randomness"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Fixed FPS"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Fract Delta"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Drawing"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Local Coords"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Draw Order"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Emission Shape"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Sphere Radius"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp
-msgid "Rect Extents"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-msgid "Normals"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Align Y"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Direction"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Spread"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Initial Velocity"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Velocity Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
-#: servers/physics_server.cpp
-msgid "Angular Velocity"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Velocity Curve"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Orbit Velocity"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Linear Accel"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Accel"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Accel Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Accel Curve"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Radial Accel"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Tangential Accel"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/physics_body.cpp
-#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Damping"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Damping Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Damping Curve"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
-#: scene/resources/particles_material.cpp
-msgid "Angle"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Angle Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Angle Curve"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-msgid "Scale Amount"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-msgid "Scale Amount Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-msgid "Scale Amount Curve"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Color Ramp"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Color Initial Ramp"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Hue Variation"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Variation"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Variation Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Variation Curve"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Speed Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Speed Curve"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Offset Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Offset Curve"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Node A and Node B must be PhysicsBody2Ds"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Node A must be a PhysicsBody2D"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Node B must be a PhysicsBody2D"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Joint is not connected to two PhysicsBody2Ds"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Node A and Node B must be different PhysicsBody2Ds"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
-msgid "Node A"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
-msgid "Node B"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/3d/light.cpp scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-#: scene/resources/environment.cpp
-msgid "Bias"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Disable Collision"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-msgid "Softness"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp scene/resources/animation.cpp
-#: scene/resources/ray_shape.cpp scene/resources/segment_shape_2d.cpp
-msgid "Length"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Initial Offset"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
-msgid "Rest Length"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
-msgid "Stiffness"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid ""
-"A texture with the shape of the light must be supplied to the \"Texture\" "
-"property."
-msgstr ""
-
-#: scene/2d/light_2d.cpp scene/3d/light.cpp scene/gui/reference_rect.cpp
-msgid "Editor Only"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Texture Scale"
-msgstr ""
-
-#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/3d/light.cpp scene/resources/environment.cpp
-#: scene/resources/material.cpp scene/resources/sky.cpp
-msgid "Energy"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Z Min"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Z Max"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Layer Min"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Layer Max"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Item Cull Mask"
-msgstr ""
-
-#: scene/2d/light_2d.cpp scene/3d/light.cpp scene/resources/style_box.cpp
-msgid "Shadow"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Buffer Size"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Gradient Length"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Filter Smooth"
-msgstr ""
-
-#: scene/2d/light_occluder_2d.cpp
-msgid "Closed"
-msgstr ""
-
-#: scene/2d/light_occluder_2d.cpp scene/resources/material.cpp
-msgid "Cull Mode"
-msgstr ""
-
-#: scene/2d/light_occluder_2d.cpp
-msgid ""
-"An occluder polygon must be set (or drawn) for this occluder to take effect."
-msgstr ""
-
-#: scene/2d/light_occluder_2d.cpp
-msgid "The occluder polygon for this occluder is empty. Please draw a polygon."
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Width Curve"
-msgstr ""
-
-#: scene/2d/line_2d.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Default Color"
-msgstr ""
-
-#: scene/2d/line_2d.cpp scene/resources/texture.cpp
-msgid "Fill"
-msgstr ""
-
-#: scene/2d/line_2d.cpp scene/resources/texture.cpp
-msgid "Gradient"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Texture Mode"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Capping"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Joint Mode"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Begin Cap Mode"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "End Cap Mode"
-msgstr ""
-
-#: scene/2d/line_2d.cpp scene/2d/polygon_2d.cpp scene/resources/style_box.cpp
-msgid "Border"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Sharp Limit"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Round Precision"
-msgstr ""
-
-#: scene/2d/line_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Antialiased"
-msgstr ""
-
-#: scene/2d/multimesh_instance_2d.cpp scene/3d/multimesh_instance.cpp
-msgid "Multimesh"
-msgstr ""
-
-#: scene/2d/navigation_2d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/navigation.cpp scene/animation/root_motion_view.cpp
-#: scene/resources/world_2d.cpp servers/physics_2d/physics_2d_server_sw.cpp
-msgid "Cell Size"
-msgstr ""
-
-#: scene/2d/navigation_2d.cpp scene/3d/navigation.cpp
-msgid "Edge Connection Margin"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Target Desired Distance"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Neighbor Dist"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Max Neighbors"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Time Horizon"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Max Speed"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Path Max Distance"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Avoidance Enabled"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp
-msgid ""
-"The NavigationAgent2D can be used only under a Node2D inheriting parent node."
-msgstr ""
-
-#: scene/2d/navigation_obstacle_2d.cpp scene/3d/navigation_obstacle.cpp
-msgid "Estimate Radius"
-msgstr ""
-
-#: scene/2d/navigation_obstacle_2d.cpp
-msgid ""
-"The NavigationObstacle2D only serves to provide collision avoidance to a "
-"Node2D object."
-msgstr ""
-
-#: scene/2d/navigation_polygon.cpp
-msgid ""
-"A NavigationPolygon resource must be set or created for this node to work. "
-"Please set a property or draw a polygon."
-msgstr ""
-
-#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
-msgstr ""
-
-#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
-#: scene/main/canvas_layer.cpp
-msgid "Rotation Degrees"
-msgstr ""
-
-#: scene/2d/node_2d.cpp
-msgid "Global Rotation"
-msgstr ""
-
-#: scene/2d/node_2d.cpp
-msgid "Global Rotation Degrees"
-msgstr ""
-
-#: scene/2d/node_2d.cpp
-msgid "Global Scale"
-msgstr ""
-
-#: scene/2d/node_2d.cpp scene/3d/spatial.cpp
-msgid "Global Transform"
-msgstr ""
-
-#: scene/2d/node_2d.cpp
-msgid "Z As Relative"
-msgstr ""
-
-#: scene/2d/parallax_background.cpp scene/gui/scroll_container.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Scroll"
-msgstr ""
-
-#: scene/2d/parallax_background.cpp
-msgid "Base Offset"
-msgstr ""
-
-#: scene/2d/parallax_background.cpp
-msgid "Base Scale"
-msgstr ""
-
-#: scene/2d/parallax_background.cpp
-msgid "Limit Begin"
-msgstr ""
-
-#: scene/2d/parallax_background.cpp
-msgid "Limit End"
-msgstr ""
-
-#: scene/2d/parallax_background.cpp
-msgid "Ignore Camera Zoom"
-msgstr ""
-
-#: scene/2d/parallax_layer.cpp
-msgid ""
-"ParallaxLayer node only works when set as child of a ParallaxBackground node."
-msgstr ""
-
-#: scene/2d/parallax_layer.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp scene/3d/vehicle_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Motion"
-msgstr ""
-
-#: scene/2d/parallax_layer.cpp
-msgid "Mirroring"
-msgstr ""
-
-#: scene/2d/particles_2d.cpp
-msgid ""
-"GPU-based particles are not supported by the GLES2 video driver.\n"
-"Use the CPUParticles2D node instead. You can use the \"Convert to "
-"CPUParticles2D\" toolbar option for this purpose."
-msgstr ""
-
-#: scene/2d/particles_2d.cpp
-msgid ""
-"On macOS, Particles2D rendering is much slower than CPUParticles2D due to "
-"transform feedback being implemented on the CPU instead of the GPU.\n"
-"Consider using CPUParticles2D instead when targeting macOS.\n"
-"You can use the \"Convert to CPUParticles2D\" toolbar option for this "
-"purpose."
-msgstr ""
-
-#: scene/2d/particles_2d.cpp scene/3d/particles.cpp
-msgid ""
-"A material to process the particles is not assigned, so no behavior is "
-"imprinted."
-msgstr ""
-
-#: scene/2d/particles_2d.cpp
-msgid ""
-"Particles2D animation requires the usage of a CanvasItemMaterial with "
-"\"Particles Animation\" enabled."
-msgstr ""
-
-#: scene/2d/particles_2d.cpp
-msgid "Visibility Rect"
-msgstr ""
-
-#: scene/2d/particles_2d.cpp scene/3d/particles.cpp
-msgid "Process Material"
-msgstr ""
-
-#: scene/2d/path_2d.cpp scene/3d/path.cpp scene/resources/sky.cpp
-#: scene/resources/texture.cpp
-msgid "Curve"
-msgstr ""
-
-#: scene/2d/path_2d.cpp
-msgid "PathFollow2D only works when set as a child of a Path2D node."
-msgstr ""
-
-#: scene/2d/path_2d.cpp scene/3d/path.cpp
-msgid "Unit Offset"
-msgstr ""
-
-#: scene/2d/path_2d.cpp scene/3d/camera.cpp scene/3d/path.cpp
-msgid "H Offset"
-msgstr ""
-
-#: scene/2d/path_2d.cpp scene/3d/camera.cpp scene/3d/path.cpp
-msgid "V Offset"
-msgstr ""
-
-#: scene/2d/path_2d.cpp scene/3d/path.cpp
-msgid "Cubic Interp"
-msgstr ""
-
-#: scene/2d/path_2d.cpp
-msgid "Lookahead"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/visual_instance.cpp
-msgid "Layers"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Constant Linear Velocity"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Constant Angular Velocity"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp scene/3d/physics_body.cpp
-#: scene/resources/physics_material.cpp
-msgid "Friction"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp scene/3d/physics_body.cpp
-#: scene/resources/physics_material.cpp
-msgid "Bounce"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Physics Material Override"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Default Gravity"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
-msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
-"by the physics engine when running.\n"
-"Change the size in children collision shapes instead."
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Mass"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
-msgid "Inertia"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Weight"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Gravity Scale"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Custom Integrator"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Continuous CD"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Contacts Reported"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Contact Monitor"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Sleeping"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Can Sleep"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Damp"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Angular"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
-msgid "Applied Forces"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
-msgid "Torque"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Safe Margin"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Sync To Physics"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving Platform"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Apply Velocity On Leave"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
-#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/default_theme/default_theme.cpp
-#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
-msgid "Normal"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Remainder"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Local Shape"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collider"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collider ID"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collider RID"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collider Shape"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Collider Shape Index"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collider Velocity"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Collider Metadata"
-msgstr ""
-
-#: scene/2d/polygon_2d.cpp
-msgid "Invert"
-msgstr ""
-
-#: scene/2d/polygon_2d.cpp
-msgid "Vertex Colors"
-msgstr ""
-
-#: scene/2d/polygon_2d.cpp
-msgid "Internal Vertex Count"
-msgstr ""
-
-#: scene/2d/position_2d.cpp
-msgid "Gizmo Extents"
-msgstr ""
-
-#: scene/2d/ray_cast_2d.cpp scene/3d/ray_cast.cpp
-msgid "Exclude Parent"
-msgstr ""
-
-#: scene/2d/ray_cast_2d.cpp scene/3d/ray_cast.cpp
-msgid "Cast To"
-msgstr ""
-
-#: scene/2d/ray_cast_2d.cpp scene/3d/ray_cast.cpp
-msgid "Collide With"
-msgstr ""
-
-#: scene/2d/ray_cast_2d.cpp scene/3d/camera.cpp scene/3d/ray_cast.cpp
-msgid "Areas"
-msgstr ""
-
-#: scene/2d/ray_cast_2d.cpp scene/3d/camera.cpp scene/3d/ray_cast.cpp
-msgid "Bodies"
-msgstr ""
-
-#: scene/2d/remote_transform_2d.cpp
-msgid "Path property must point to a valid Node2D node to work."
-msgstr ""
-
-#: scene/2d/remote_transform_2d.cpp scene/3d/remote_transform.cpp
-msgid "Remote Path"
-msgstr ""
-
-#: scene/2d/remote_transform_2d.cpp scene/3d/remote_transform.cpp
-msgid "Use Global Coordinates"
-msgstr ""
-
-#: scene/2d/skeleton_2d.cpp scene/3d/skeleton.cpp
-msgid "Rest"
-msgstr ""
-
-#: scene/2d/skeleton_2d.cpp
-msgid "Default Length"
-msgstr ""
-
-#: scene/2d/skeleton_2d.cpp
-msgid "This Bone2D chain should end at a Skeleton2D node."
-msgstr ""
-
-#: scene/2d/skeleton_2d.cpp
-msgid "A Bone2D only works with a Skeleton2D or another Bone2D as parent node."
-msgstr ""
-
-#: scene/2d/skeleton_2d.cpp
-msgid ""
-"This bone lacks a proper REST pose. Go to the Skeleton2D node and set one."
-msgstr ""
-
-#: scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-msgid "Hframes"
-msgstr ""
-
-#: scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-msgid "Vframes"
-msgstr ""
-
-#: scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-msgid "Frame Coords"
-msgstr ""
-
-#: scene/2d/sprite.cpp scene/resources/texture.cpp
-msgid "Filter Clip"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid ""
-"TileMap with Use Parent on needs a parent CollisionObject2D to give shapes "
-"to. Please use it as a child of Area2D, StaticBody2D, RigidBody2D, "
-"KinematicBody2D, etc. to give them a shape."
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Tile Set"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Quadrant Size"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Custom Transform"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Half Offset"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Tile Origin"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Y Sort"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Show Collision"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Compatibility Mode"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Centered Textures"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Cell Clip UV"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Use Parent"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Use Kinematic"
-msgstr ""
-
-#: scene/2d/touch_screen_button.cpp
-msgid "Shape Centered"
-msgstr ""
-
-#: scene/2d/touch_screen_button.cpp
-msgid "Shape Visible"
-msgstr ""
-
-#: scene/2d/touch_screen_button.cpp
-msgid "Passby Press"
-msgstr ""
-
-#: scene/2d/touch_screen_button.cpp
-msgid "Visibility Mode"
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp
-msgid ""
-"VisibilityEnabler2D works best when used with the edited scene root directly "
-"as parent."
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
-msgid "Pause Animations"
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
-msgid "Freeze Bodies"
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp
-msgid "Pause Particles"
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp
-msgid "Pause Animated Sprites"
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp
-msgid "Process Parent"
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp
-msgid "Physics Process Parent"
-msgstr ""
-
-#: scene/3d/area.cpp
-msgid "Reverb Bus"
-msgstr ""
-
-#: scene/3d/area.cpp
-msgid "Uniformity"
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid "ARVRCamera must have an ARVROrigin node as its parent."
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid "Controller ID"
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp servers/arvr/arvr_positional_tracker.cpp
-msgid "Rumble"
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid "ARVRController must have an ARVROrigin node as its parent."
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid ""
-"The controller ID must not be 0 or this controller won't be bound to an "
-"actual controller."
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid "Anchor ID"
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid "ARVRAnchor must have an ARVROrigin node as its parent."
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid ""
-"The anchor ID must not be 0 or this anchor won't be bound to an actual "
-"anchor."
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid "ARVROrigin requires an ARVRCamera child node."
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp servers/arvr_server.cpp
-msgid "World Scale"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Attenuation Model"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Unit dB"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Unit Size"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Max dB"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Out Of Range Mode"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Emission Angle"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Degrees"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Filter Attenuation dB"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Attenuation Filter"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_filter.cpp
-msgid "Cutoff Hz"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-#: servers/audio/effects/audio_effect_filter.cpp
-msgid "dB"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Doppler"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Tracking"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/3d/reflection_probe.cpp
-msgid "Interior"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Finding meshes and lights"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Preparing geometry (%d/%d)"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Preparing environment"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Generating capture"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Saving lightmaps"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Done"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/3d/reflection_probe.cpp scene/resources/box_shape.cpp
-#: scene/resources/rectangle_shape_2d.cpp
-msgid "Extents"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Tweaks"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Bounces"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Bounce Indirect Energy"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Use Denoiser"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp scene/resources/texture.cpp
-msgid "Use HDR"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Use Color"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Default Texels Per Unit"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp scene/resources/texture.cpp
-msgid "Atlas"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "Generate"
-msgstr "Төп"
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Max Size"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Custom Sky"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Custom Sky Rotation Degrees"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp scene/3d/ray_cast.cpp
-msgid "Custom Color"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Custom Energy"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Min Light"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-msgid "Propagation"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Image Path"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Light Data"
-msgstr ""
-
-#: scene/3d/bone_attachment.cpp scene/3d/physics_body.cpp
-msgid "Bone Name"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Keep Aspect"
-msgstr ""
-
-#: scene/3d/camera.cpp scene/3d/light.cpp scene/3d/reflection_probe.cpp
-msgid "Cull Mask"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Doppler Tracking"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Projection"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "FOV"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Frustum Offset"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Near"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Far"
-msgstr ""
-
-#: scene/3d/camera.cpp scene/3d/collision_polygon.cpp scene/3d/spring_arm.cpp
-#: scene/gui/control.cpp scene/resources/default_theme/default_theme.cpp
-#: scene/resources/shape.cpp scene/resources/style_box.cpp
-#: scene/resources/texture.cpp servers/physics_2d_server.cpp
-#: servers/physics_server.cpp
-msgid "Margin"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Clip To"
-msgstr ""
-
-#: scene/3d/collision_object.cpp scene/3d/soft_body.cpp
-msgid "Ray Pickable"
-msgstr ""
-
-#: scene/3d/collision_object.cpp
-msgid "Capture On Drag"
-msgstr ""
-
-#: scene/3d/collision_object.cpp
-msgid ""
-"This node has no shape, so it can't collide or interact with other objects.\n"
-"Consider adding a CollisionShape or CollisionPolygon as a child to define "
-"its shape."
-msgstr ""
-
-#: scene/3d/collision_polygon.cpp
-msgid ""
-"CollisionPolygon only serves to provide a collision shape to a "
-"CollisionObject derived node. Please only use it as a child of Area, "
-"StaticBody, RigidBody, KinematicBody, etc. to give them a shape."
-msgstr ""
-
-#: scene/3d/collision_polygon.cpp
-msgid "An empty CollisionPolygon has no effect on collision."
-msgstr ""
-
-#: scene/3d/collision_shape.cpp
-msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
-msgstr ""
-
-#: scene/3d/collision_shape.cpp
-msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it."
-msgstr ""
-
-#: scene/3d/collision_shape.cpp
-msgid ""
-"Plane shapes don't work well and will be removed in future versions. Please "
-"don't use them."
-msgstr ""
-
-#: scene/3d/collision_shape.cpp
-msgid ""
-"ConcavePolygonShape doesn't support RigidBody in another mode than static."
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has been assigned."
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp
-msgid ""
-"CPUParticles animation requires the usage of a SpatialMaterial whose "
-"Billboard Mode is set to \"Particle Billboard\"."
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Box Extents"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Ring Radius"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Ring Inner Radius"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Ring Height"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Ring Axis"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Rotate Y"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Disable Z"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Flatness"
-msgstr ""
-
-#: scene/3d/cull_instance.cpp servers/visual_server.cpp
-msgid "Portals"
-msgstr ""
-
-#: scene/3d/cull_instance.cpp
-msgid "Portal Mode"
-msgstr ""
-
-#: scene/3d/cull_instance.cpp
-msgid "Include In Bound"
-msgstr ""
-
-#: scene/3d/cull_instance.cpp
-msgid "Allow Merging"
-msgstr ""
-
-#: scene/3d/cull_instance.cpp
-msgid "Autoplace Priority"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
-msgid "Plotting Meshes"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
-msgid "Finishing Plot"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
-msgid ""
-"GIProbes are not supported by the GLES2 video driver.\n"
-"Use a BakedLightmap instead."
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
-msgid ""
-"The GIProbe Compress property has been deprecated due to known bugs and no "
-"longer has any effect.\n"
-"To remove this warning, disable the GIProbe's Compress property."
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
-msgid "Subdiv"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
-msgid "Dynamic Range"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp scene/3d/light.cpp
-msgid "Normal Bias"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
-#: scene/resources/primitive_meshes.cpp
-msgid "Pixel Size"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
-msgid "Billboard"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
-msgid "Shaded"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
-msgid "Double Sided"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp scene/resources/material.cpp
-msgid "No Depth Test"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp scene/resources/material.cpp
-msgid "Fixed Size"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
-msgid "Alpha Cut"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/resources/material.cpp
-msgid "Alpha Scissor Threshold"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp scene/resources/material.cpp
-msgid "Render Priority"
-msgstr ""
-
-#: scene/3d/label_3d.cpp
-msgid "Outline Render Priority"
-msgstr ""
-
-#: scene/3d/label_3d.cpp
-msgid "Outline Modulate"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/resources/default_theme/default_theme.cpp
-#: scene/resources/dynamic_font.cpp scene/resources/primitive_meshes.cpp
-msgid "Font"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/resources/primitive_meshes.cpp
-msgid "Horizontal Alignment"
-msgstr ""
-
-#: scene/3d/label_3d.cpp
-msgid "Vertical Alignment"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/gui/dialogs.cpp scene/gui/label.cpp
-msgid "Autowrap"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Indirect Energy"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Negative"
-msgstr ""
-
-#: scene/3d/light.cpp scene/resources/material.cpp
-#: scene/resources/visual_shader.cpp
-msgid "Specular"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Bake Mode"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Contact"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Reverse Cull Face"
-msgstr ""
-
-#: scene/3d/light.cpp servers/visual_server.cpp
-msgid "Directional Shadow"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Split 1"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Split 2"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Split 3"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Blend Splits"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Bias Split Scale"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Depth Range"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Omni"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Shadow Mode"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Shadow Detail"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Spot"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Angle Attenuation"
-msgstr ""
-
-#: scene/3d/mesh_instance.cpp
-msgid "Software Skinning"
-msgstr ""
-
-#: scene/3d/mesh_instance.cpp
-msgid "Transform Normals"
-msgstr ""
-
-#: scene/3d/navigation.cpp scene/resources/curve.cpp
-msgid "Up Vector"
-msgstr ""
-
-#: scene/3d/navigation.cpp
-msgid "Cell Height"
-msgstr ""
-
-#: scene/3d/navigation_agent.cpp
-msgid "Agent Height Offset"
-msgstr ""
-
-#: scene/3d/navigation_agent.cpp
-msgid "Ignore Y"
-msgstr ""
-
-#: scene/3d/navigation_agent.cpp
-msgid ""
-"The NavigationAgent can be used only under a Spatial inheriting parent node."
-msgstr ""
-
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
-#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
-msgid "NavMesh"
-msgstr ""
-
-#: scene/3d/navigation_obstacle.cpp
-msgid ""
-"The NavigationObstacle only serves to provide collision avoidance to a "
-"Spatial inheriting parent object."
-msgstr ""
-
-#: scene/3d/occluder.cpp
-msgid "No shape is set."
-msgstr ""
-
-#: scene/3d/occluder.cpp
-msgid "Only uniform scales are supported."
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid ""
-"GPU-based particles are not supported by the GLES2 video driver.\n"
-"Use the CPUParticles node instead. You can use the \"Convert to "
-"CPUParticles\" toolbar option for this purpose."
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid ""
-"On macOS, Particles rendering is much slower than CPUParticles due to "
-"transform feedback being implemented on the CPU instead of the GPU.\n"
-"Consider using CPUParticles instead when targeting macOS.\n"
-"You can use the \"Convert to CPUParticles\" toolbar option for this purpose."
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid ""
-"Nothing is visible because meshes have not been assigned to draw passes."
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid ""
-"Particles animation requires the usage of a SpatialMaterial whose Billboard "
-"Mode is set to \"Particle Billboard\"."
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid "Visibility AABB"
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid "Draw Passes"
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid "Passes"
-msgstr ""
-
-#: scene/3d/path.cpp
-msgid "PathFollow only works when set as a child of a Path node."
-msgstr ""
-
-#: scene/3d/path.cpp
-msgid ""
-"PathFollow's ROTATION_ORIENTED requires \"Up Vector\" to be enabled in its "
-"parent Path's Curve resource."
-msgstr ""
-
-#: scene/3d/path.cpp
-msgid "Rotation Mode"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overridden "
-"by the physics engine when running.\n"
-"Change the size in children collision shapes instead."
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Axis Lock"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear X"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Y"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Z"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular X"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Y"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Z"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Motion X"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Motion Y"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Motion Z"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Joint Constraints"
-msgstr ""
-
-#: scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-msgid "Impulse Clamp"
-msgstr ""
-
-#: scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-msgid "Swing Span"
-msgstr ""
-
-#: scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-msgid "Twist Span"
-msgstr ""
-
-#: scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-#: scene/3d/vehicle_body.cpp
-msgid "Relaxation"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Enabled"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Upper"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Lower"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Bias"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Softness"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Relaxation"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Limit Upper"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Limit Lower"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Limit Softness"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Limit Restitution"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Limit Damping"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Restitution"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Damping"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "X"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Y"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Z"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Limit Enabled"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Spring Enabled"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Spring Stiffness"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Spring Damping"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Equilibrium Point"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Restitution"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Damping"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Restitution"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Damping"
-msgstr ""
-
-#: scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-msgid "ERP"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Spring Enabled"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Spring Stiffness"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Spring Damping"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Equilibrium Point"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Body Offset"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Node A and Node B must be PhysicsBodies"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Node A must be a PhysicsBody"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Node B must be a PhysicsBody"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Joint is not connected to any PhysicsBodies"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Node A and Node B must be different PhysicsBodies"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Solver"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Exclude Nodes"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Params"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Limit"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Upper"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Lower"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Motor"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Target Velocity"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Max Impulse"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Limit"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Upper Distance"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Lower Distance"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Restitution"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Motion"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Ortho"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Upper Angle"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Lower Angle"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Motion"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Ortho"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Limit X"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Motor X"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Force Limit"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Spring X"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Equilibrium Point"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Limit X"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Motor X"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Spring X"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Limit Y"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Motor Y"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Spring Y"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Limit Y"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Motor Y"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Spring Y"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Limit Z"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Motor Z"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Spring Z"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Limit Z"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Motor Z"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Spring Z"
-msgstr ""
-
-#: scene/3d/portal.cpp
-msgid "The RoomManager should not be a child or grandchild of a Portal."
-msgstr ""
-
-#: scene/3d/portal.cpp
-msgid "A Room should not be a child or grandchild of a Portal."
-msgstr ""
-
-#: scene/3d/portal.cpp
-msgid "A RoomGroup should not be a child or grandchild of a Portal."
-msgstr ""
-
-#: scene/3d/portal.cpp
-msgid "Portal Active"
-msgstr ""
-
-#: scene/3d/portal.cpp scene/resources/occluder_shape_polygon.cpp
-msgid "Two Way"
-msgstr ""
-
-#: scene/3d/portal.cpp
-msgid "Linked Room"
-msgstr ""
-
-#: scene/3d/portal.cpp
-msgid "Use Default Margin"
-msgstr ""
-
-#: scene/3d/proximity_group.cpp
-msgid "Group Name"
-msgstr ""
-
-#: scene/3d/proximity_group.cpp
-msgid "Dispatch Mode"
-msgstr ""
-
-#: scene/3d/proximity_group.cpp
-msgid "Grid Radius"
-msgstr ""
-
-#: scene/3d/ray_cast.cpp
-msgid "Debug Shape"
-msgstr ""
-
-#: scene/3d/ray_cast.cpp scene/resources/style_box.cpp
-msgid "Thickness"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp scene/main/viewport.cpp
-msgid "Update Mode"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp
-msgid "Origin Offset"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp
-msgid "Box Projection"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp
-msgid "Enable Shadows"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp
-msgid "Ambient Color"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp
-msgid "Ambient Energy"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp
-msgid "Ambient Contrib"
-msgstr ""
-
-#: scene/3d/remote_transform.cpp
-msgid ""
-"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
-"derived node to work."
-msgstr ""
-
-#: scene/3d/room.cpp
-msgid "A Room cannot have another Room as a child or grandchild."
-msgstr ""
-
-#: scene/3d/room.cpp
-msgid "The RoomManager should not be placed inside a Room."
-msgstr ""
-
-#: scene/3d/room.cpp
-msgid "A RoomGroup should not be placed inside a Room."
-msgstr ""
-
-#: scene/3d/room.cpp
-msgid ""
-"Room convex hull contains a large number of planes.\n"
-"Consider simplifying the room bound in order to increase performance."
-msgstr ""
-
-#: scene/3d/room.cpp
-msgid "Use Default Simplify"
-msgstr ""
-
-#: scene/3d/room.cpp scene/3d/room_manager.cpp
-msgid "Room Simplify"
-msgstr ""
-
-#: scene/3d/room.cpp
-msgid "Bound"
-msgstr ""
-
-#: scene/3d/room_group.cpp
-msgid "Roomgroup Priority"
-msgstr ""
-
-#: scene/3d/room_group.cpp
-msgid "The RoomManager should not be placed inside a RoomGroup."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "The RoomList has not been assigned."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "The RoomList node should be a Spatial (or derived from Spatial)."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid ""
-"Portal Depth Limit is set to Zero.\n"
-"Only the Room that the Camera is in will render."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "There should only be one RoomManager in the SceneTree."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Main"
-msgstr ""
-
-#: scene/3d/room_manager.cpp scene/animation/animation_blend_tree.cpp
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Active"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Roomlist"
-msgstr ""
-
-#: scene/3d/room_manager.cpp servers/visual_server.cpp
-msgid "PVS"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "PVS Mode"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "PVS Filename"
-msgstr ""
-
-#: scene/3d/room_manager.cpp servers/visual_server.cpp
-msgid "Gameplay"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Gameplay Monitor"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Use Secondary PVS"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Merge Meshes"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Show Margins"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Debug Sprawl"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Overlap Warning Threshold"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Preview Camera"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Portal Depth Limit"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Default Portal Margin"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Roaming Expansion Margin"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid ""
-"RoomList path is invalid.\n"
-"Please check the RoomList branch has been assigned in the RoomManager."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "RoomList contains no Rooms, aborting."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Misnamed nodes detected, check output log for details. Aborting."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Portal link room not found, check output log for details."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid ""
-"Portal autolink failed, check output log for details.\n"
-"Check the portal is facing outwards from the source room."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid ""
-"Room overlap detected, cameras may work incorrectly in overlapping area.\n"
-"Check output log for details."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid ""
-"Error calculating room bounds.\n"
-"Ensure all rooms contain geometry or manual bounds."
-msgstr ""
-
-#: scene/3d/skeleton.cpp scene/resources/skin.cpp
-msgid "Pose"
-msgstr ""
-
-#: scene/3d/skeleton.cpp
-msgid "Bound Children"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Pinned Points"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Attachments"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Point Index"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Spatial Attachment Path"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Physics Enabled"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Parent Collision Ignore"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Simulation Precision"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Total Mass"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Linear Stiffness"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Areaangular Stiffness"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Volume Stiffness"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Pressure Coefficient"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Damping Coefficient"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Drag Coefficient"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Pose Matching Coefficient"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "This body will be ignored until you set a mesh."
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid ""
-"Size changes to SoftBody will be overridden by the physics engine when "
-"running.\n"
-"Change the size in children collision shapes instead."
-msgstr ""
-
-#: scene/3d/spatial.cpp
-msgid "Matrix"
-msgstr ""
-
-#: scene/3d/spatial.cpp
-msgid "Gizmo"
-msgstr ""
-
-#: scene/3d/spatial_velocity_tracker.cpp
-msgid "Track Physics Step"
-msgstr ""
-
-#: scene/3d/spring_arm.cpp
-msgid "Spring Length"
-msgstr ""
-
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-msgid "Opacity"
-msgstr ""
-
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-msgid "Transparent"
-msgstr ""
-
-#: scene/3d/sprite_3d.cpp
-msgid ""
-"A SpriteFrames resource must be created or set in the \"Frames\" property in "
-"order for AnimatedSprite3D to display frames."
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid ""
-"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
-"it as a child of a VehicleBody."
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Per-Wheel Motion"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Engine Force"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Brake"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Steering"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "VehicleBody Motion"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Use As Traction"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Use As Steering"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Wheel"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Roll Influence"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Friction Slip"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Suspension"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Max Force"
-msgstr ""
-
-#: scene/3d/visibility_notifier.cpp
-msgid "AABB"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp scene/resources/navigation_mesh.cpp
-msgid "Geometry"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Material Override"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Material Overlay"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Cast Shadow"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Extra Cull Margin"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Baked Light"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Generate Lightmap"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Lightmap Scale"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "LOD"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp scene/animation/skeleton_ik.cpp
-#: scene/resources/material.cpp
-msgid "Min Distance"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Min Hysteresis"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Max Hysteresis"
-msgstr ""
-
-#: scene/3d/world_environment.cpp
-msgid ""
-"WorldEnvironment requires its \"Environment\" property to contain an "
-"Environment to have a visible effect."
-msgstr ""
-
-#: scene/3d/world_environment.cpp
-msgid ""
-"Only one WorldEnvironment is allowed per scene (or set of instanced scenes)."
-msgstr ""
-
-#: scene/3d/world_environment.cpp
-msgid ""
-"This WorldEnvironment is ignored. Either add a Camera (for 3D scenes) or set "
-"this environment's Background Mode to Canvas (for 2D scenes)."
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "On BlendTree node '%s', animation not found: '%s'"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Animation not found: '%s'"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Mix Mode"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Fadein Time"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Fadeout Time"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Auto Restart"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Autorestart"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Delay"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Random Delay"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Add Amount"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Blend Amount"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Seek Position"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Input Count"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-#: scene/animation/animation_node_state_machine.cpp
-msgid "Xfade Time"
-msgstr ""
-
-#: scene/animation/animation_node_state_machine.cpp
-msgid "Switch Mode"
-msgstr ""
-
-#: scene/animation/animation_node_state_machine.cpp
-msgid "Auto Advance"
-msgstr ""
-
-#: scene/animation/animation_node_state_machine.cpp
-msgid "Advance Condition"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Anim Apply Reset"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Current Animation"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Assigned Animation"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Reset On Save"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Current Animation Length"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Current Animation Position"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Playback Options"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Default Blend Time"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Method Call Mode"
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "In node '%s', invalid animation: '%s'."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Invalid animation: '%s'."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Nothing connected to input '%s' of node '%s'."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "No root AnimationNode for the graph is set."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Path to an AnimationPlayer node containing animations is not set."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Path set for AnimationPlayer does not lead to an AnimationPlayer node."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "The AnimationPlayer root node is not a valid node."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Tree Root"
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Anim Player"
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Root Motion"
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Track"
-msgstr ""
-
-#: scene/animation/animation_tree_player.cpp
-msgid "This node has been deprecated. Use AnimationTree instead."
-msgstr ""
-
-#: scene/animation/animation_tree_player.cpp
-msgid "Playback"
-msgstr ""
-
-#: scene/animation/animation_tree_player.cpp
-msgid "Master Player"
-msgstr ""
-
-#: scene/animation/animation_tree_player.cpp
-msgid "Base Path"
-msgstr ""
-
-#: scene/animation/root_motion_view.cpp
-msgid "Animation Path"
-msgstr ""
-
-#: scene/animation/root_motion_view.cpp
-msgid "Zero Y"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Root Bone"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Tip Bone"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Interpolation"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Override Tip Basis"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Use Magnet"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Magnet"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Target Node"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Max Iterations"
-msgstr ""
-
-#: scene/animation/tween.cpp
-msgid "Playback Process Mode"
-msgstr ""
-
-#: scene/animation/tween.cpp
-msgid "Playback Speed"
-msgstr ""
-
-#: scene/audio/audio_stream_player.cpp
-msgid "Mix Target"
-msgstr ""
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/range.cpp
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Ratio"
-msgstr ""
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/texture_button.cpp
-#: scene/gui/texture_rect.cpp
-msgid "Stretch Mode"
-msgstr ""
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/box_container.cpp
-msgid "Alignment"
-msgstr ""
-
-#: scene/gui/base_button.cpp
-msgid "Shortcut In Tooltip"
-msgstr ""
-
-#: scene/gui/base_button.cpp
-msgid "Action Mode"
-msgstr ""
-
-#: scene/gui/base_button.cpp
-msgid "Enabled Focus Mode"
-msgstr ""
-
-#: scene/gui/base_button.cpp
-msgid "Keep Pressed Outside"
-msgstr ""
-
-#: scene/gui/base_button.cpp scene/gui/shortcut.cpp
-msgid "Shortcut"
-msgstr ""
-
-#: scene/gui/base_button.cpp
-msgid "Group"
-msgstr ""
-
-#: scene/gui/button.cpp scene/gui/label.cpp
-msgid "Clip Text"
-msgstr ""
-
-#: scene/gui/button.cpp scene/gui/label.cpp scene/gui/line_edit.cpp
-#: scene/gui/spin_box.cpp
-msgid "Align"
-msgstr ""
-
-#: scene/gui/button.cpp
-msgid "Icon Align"
-msgstr ""
-
-#: scene/gui/button.cpp
-msgid "Expand Icon"
-msgstr ""
-
-#: scene/gui/center_container.cpp
-msgid "Use Top Left"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid ""
-"Color: #%s\n"
-"LMB: Apply color\n"
-"RMB: Remove preset"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Edit Alpha"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "HSV Mode"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Raw Mode"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Deferred Mode"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Presets Enabled"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Presets Visible"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Pick a color from the editor window."
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "HSV"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Switch between hexadecimal and code values."
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Add current color as a preset."
-msgstr ""
-
-#: scene/gui/container.cpp
-msgid ""
-"Container by itself serves no purpose unless a script configures its "
-"children placement behavior.\n"
-"If you don't intend to add a script, use a plain Control node instead."
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Theme Overrides"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid ""
-"The Hint Tooltip won't be displayed as the control's Mouse Filter is set to "
-"\"Ignore\". To solve this, set the Mouse Filter to \"Stop\" or \"Pass\"."
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Anchor"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Grow Direction"
-msgstr ""
-
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
-msgid "Min Size"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Pivot Offset"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Clip Content"
-msgstr ""
-
-#: scene/gui/control.cpp scene/resources/visual_shader_nodes.cpp
-msgid "Hint"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Tooltip"
-msgstr ""
-
-#: scene/gui/control.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Focus"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Neighbour Left"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Neighbour Top"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Neighbour Right"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Neighbour Bottom"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Next"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Previous"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Mouse"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Default Cursor Shape"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Pass On Modal Close Click"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Size Flags"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Stretch Ratio"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Theme Type Variation"
-msgstr ""
-
-#: scene/gui/dialogs.cpp
-msgid "Window Title"
-msgstr ""
-
-#: scene/gui/dialogs.cpp
-msgid "Dialog"
-msgstr ""
-
-#: scene/gui/dialogs.cpp
-msgid "Hide On OK"
-msgstr ""
-
-#: scene/gui/dialogs.cpp
-msgid "Alert!"
-msgstr ""
-
-#: scene/gui/dialogs.cpp
-msgid "Please Confirm..."
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Mode Overrides Title"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Must use a valid extension."
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Right Disconnects"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Scroll Offset"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Snap Distance"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Zoom Min"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Zoom Max"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Zoom Step"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Show Zoom Label"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp scene/gui/text_edit.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Minimap"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Enable grid minimap."
-msgstr ""
-
-#: scene/gui/graph_node.cpp
-msgid "Show Close"
-msgstr ""
-
-#: scene/gui/graph_node.cpp scene/gui/option_button.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Selected"
-msgstr ""
-
-#: scene/gui/graph_node.cpp scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Comment"
-msgstr "Җәмәгать"
-
-#: scene/gui/graph_node.cpp
-msgid "Overlay"
-msgstr ""
-
-#: scene/gui/grid_container.cpp scene/gui/item_list.cpp scene/gui/tree.cpp
-msgid "Columns"
-msgstr ""
-
-#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/text_edit.cpp
-#: scene/gui/tree.cpp scene/main/viewport.cpp
-msgid "Timers"
-msgstr ""
-
-#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval Msec"
-msgstr ""
-
-#: scene/gui/item_list.cpp scene/gui/tree.cpp
-msgid "Allow Reselect"
-msgstr ""
-
-#: scene/gui/item_list.cpp scene/gui/tree.cpp
-msgid "Allow RMB Select"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Max Text Lines"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Auto Height"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Max Columns"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Same Column Width"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Fixed Column Width"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Icon Scale"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Fixed Icon Size"
-msgstr ""
-
-#: scene/gui/label.cpp
-msgid "V Align"
-msgstr ""
-
-#: scene/gui/label.cpp scene/gui/rich_text_label.cpp
-msgid "Visible Characters"
-msgstr ""
-
-#: scene/gui/label.cpp scene/gui/rich_text_label.cpp
-msgid "Percent Visible"
-msgstr ""
-
-#: scene/gui/label.cpp
-msgid "Lines Skipped"
-msgstr ""
-
-#: scene/gui/label.cpp
-msgid "Max Lines Visible"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/resources/navigation_mesh.cpp
-msgid "Max Length"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Secret"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Secret Character"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Expand To Text Length"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Context Menu Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Virtual Keyboard Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Clear Button Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Shortcut Keys Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Middle Mouse Paste Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Selecting Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/rich_text_label.cpp
-#: scene/gui/text_edit.cpp
-msgid "Deselect On Focus Loss Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Right Icon"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Placeholder"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Alpha"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Caret"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Blink"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Blink Speed"
-msgstr ""
-
-#: scene/gui/link_button.cpp
-msgid "Underline"
-msgstr ""
-
-#: scene/gui/menu_button.cpp
-msgid "Switch On Hover"
-msgstr ""
-
-#: scene/gui/nine_patch_rect.cpp scene/resources/style_box.cpp
-msgid "Draw Center"
-msgstr ""
-
-#: scene/gui/nine_patch_rect.cpp scene/resources/style_box.cpp
-msgid "Region Rect"
-msgstr ""
-
-#: scene/gui/nine_patch_rect.cpp
-msgid "Patch Margin"
-msgstr ""
-
-#: scene/gui/nine_patch_rect.cpp scene/resources/style_box.cpp
-msgid "Axis Stretch"
-msgstr ""
-
-#: scene/gui/nine_patch_rect.cpp
-msgid ""
-"The Tile and Tile Fit options for Axis Stretch properties are only effective "
-"when using the GLES3 rendering backend.\n"
-"The GLES2 backend is currently in use, so these modes will act like Stretch "
-"instead."
-msgstr ""
-
-#: scene/gui/popup.cpp
-msgid "Popup"
-msgstr ""
-
-#: scene/gui/popup.cpp
-msgid "Exclusive"
-msgstr ""
-
-#: scene/gui/popup.cpp
-msgid ""
-"Popups will hide by default unless you call popup() or any of the popup*() "
-"functions. Making them visible for editing is fine, but they will hide upon "
-"running."
-msgstr ""
-
-#: scene/gui/popup_menu.cpp
-msgid "Hide On Item Selection"
-msgstr ""
-
-#: scene/gui/popup_menu.cpp
-msgid "Hide On Checkable Item Selection"
-msgstr ""
-
-#: scene/gui/popup_menu.cpp
-msgid "Hide On State Item Selection"
-msgstr ""
-
-#: scene/gui/popup_menu.cpp
-msgid "Submenu Popup Delay"
-msgstr ""
-
-#: scene/gui/popup_menu.cpp
-msgid "Allow Search"
-msgstr ""
-
-#: scene/gui/progress_bar.cpp
-msgid "Percent"
-msgstr ""
-
-#: scene/gui/range.cpp
-msgid "If \"Exp Edit\" is enabled, \"Min Value\" must be greater than 0."
-msgstr ""
-
-#: scene/gui/range.cpp scene/resources/curve.cpp
-msgid "Min Value"
-msgstr ""
-
-#: scene/gui/range.cpp scene/resources/curve.cpp
-msgid "Max Value"
-msgstr ""
-
-#: scene/gui/range.cpp
-msgid "Page"
-msgstr ""
-
-#: scene/gui/range.cpp
-msgid "Exp Edit"
-msgstr ""
-
-#: scene/gui/range.cpp
-msgid "Rounded"
-msgstr ""
-
-#: scene/gui/range.cpp
-msgid "Allow Greater"
-msgstr ""
-
-#: scene/gui/range.cpp
-msgid "Allow Lesser"
-msgstr ""
-
-#: scene/gui/reference_rect.cpp
-msgid "Border Color"
-msgstr ""
-
-#: scene/gui/reference_rect.cpp scene/resources/style_box.cpp
-msgid "Border Width"
-msgstr ""
-
-#: scene/gui/rich_text_effect.cpp
-msgid "Relative Index"
-msgstr ""
-
-#: scene/gui/rich_text_effect.cpp
-msgid "Absolute Index"
-msgstr ""
-
-#: scene/gui/rich_text_effect.cpp
-msgid "Elapsed Time"
-msgstr ""
-
-#: scene/gui/rich_text_effect.cpp
-msgid "Env"
-msgstr ""
-
-#: scene/gui/rich_text_effect.cpp
-msgid "Character"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "BBCode"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Meta Underlined"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Tab Size"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Fit Content Height"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Scroll Active"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Scroll Following"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Selection Enabled"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp scene/gui/text_edit.cpp
-msgid "Override Selected Font Color"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Custom Effects"
-msgstr ""
-
-#: scene/gui/scroll_bar.cpp
-msgid "Custom Step"
-msgstr ""
-
-#: scene/gui/scroll_container.cpp
-msgid ""
-"ScrollContainer is intended to work with a single child control.\n"
-"Use a container as child (VBox, HBox, etc.), or a Control and set the custom "
-"minimum size manually."
-msgstr ""
-
-#: scene/gui/scroll_container.cpp
-msgid "Follow Focus"
-msgstr ""
-
-#: scene/gui/scroll_container.cpp
-msgid "Horizontal Enabled"
-msgstr ""
-
-#: scene/gui/scroll_container.cpp
-msgid "Vertical Enabled"
-msgstr ""
-
-#: scene/gui/scroll_container.cpp
-msgid "Default Scroll Deadzone"
-msgstr ""
-
-#: scene/gui/slider.cpp
-msgid "Scrollable"
-msgstr ""
-
-#: scene/gui/slider.cpp
-msgid "Tick Count"
-msgstr ""
-
-#: scene/gui/slider.cpp
-msgid "Ticks On Borders"
-msgstr ""
-
-#: scene/gui/spin_box.cpp
-msgid "Prefix"
-msgstr ""
-
-#: scene/gui/spin_box.cpp
-msgid "Suffix"
-msgstr ""
-
-#: scene/gui/split_container.cpp
-msgid "Split Offset"
-msgstr ""
-
-#: scene/gui/split_container.cpp scene/gui/tree.cpp
-msgid "Collapsed"
-msgstr ""
-
-#: scene/gui/split_container.cpp
-msgid "Dragger Visibility"
-msgstr ""
-
-#: scene/gui/tab_container.cpp scene/gui/tabs.cpp
-msgid "Tab Align"
-msgstr ""
-
-#: scene/gui/tab_container.cpp scene/gui/tabs.cpp
-msgid "Current Tab"
-msgstr ""
-
-#: scene/gui/tab_container.cpp
-msgid "Tabs Visible"
-msgstr ""
-
-#: scene/gui/tab_container.cpp
-msgid "All Tabs In Front"
-msgstr ""
-
-#: scene/gui/tab_container.cpp scene/gui/tabs.cpp
-msgid "Drag To Rearrange Enabled"
-msgstr ""
-
-#: scene/gui/tab_container.cpp
-msgid "Use Hidden Tabs For Min Size"
-msgstr ""
-
-#: scene/gui/tabs.cpp
-msgid "Tab Close Display Policy"
-msgstr ""
-
-#: scene/gui/tabs.cpp
-msgid "Scrolling Enabled"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Readonly"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Bookmark Gutter"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Breakpoint Gutter"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Fold Gutter"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Hiding Enabled"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Wrap Enabled"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Scroll Vertical"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Scroll Horizontal"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Draw"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Block Mode"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Moving By Right Click"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Text Edit Idle Detect (sec)"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Text Edit Undo Stack Max Size"
-msgstr ""
-
-#: scene/gui/texture_button.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Hover"
-msgstr ""
-
-#: scene/gui/texture_button.cpp
-msgid "Focused"
-msgstr ""
-
-#: scene/gui/texture_button.cpp
-msgid "Click Mask"
-msgstr ""
-
-#: scene/gui/texture_button.cpp scene/gui/texture_rect.cpp
-#: scene/gui/video_player.cpp
-msgid "Expand"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Under"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Over"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Progress"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Progress Offset"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Fill Mode"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp scene/resources/material.cpp
-msgid "Tint"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Radial Fill"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Initial Angle"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Fill Degrees"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp scene/resources/primitive_meshes.cpp
-msgid "Center Offset"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Nine Patch Stretch"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Stretch Margin Left"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Stretch Margin Top"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Stretch Margin Right"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Stretch Margin Bottom"
-msgstr ""
-
-#: scene/gui/tree.cpp
-msgid "Custom Minimum Height"
-msgstr ""
-
-#: scene/gui/tree.cpp
-msgid "(Other)"
-msgstr ""
-
-#: scene/gui/tree.cpp
-msgid "Column Titles Visible"
-msgstr ""
-
-#: scene/gui/tree.cpp
-msgid "Hide Folding"
-msgstr ""
-
-#: scene/gui/tree.cpp
-msgid "Hide Root"
-msgstr ""
-
-#: scene/gui/tree.cpp
-msgid "Drop Mode Flags"
-msgstr ""
-
-#: scene/gui/video_player.cpp
-msgid "Audio Track"
-msgstr ""
-
-#: scene/gui/video_player.cpp scene/main/scene_tree.cpp scene/main/timer.cpp
-msgid "Paused"
-msgstr ""
-
-#: scene/gui/video_player.cpp
-msgid "Buffering Msec"
-msgstr ""
-
-#: scene/gui/video_player.cpp
-msgid "Stream Position"
-msgstr ""
-
-#: scene/gui/viewport_container.cpp
-msgid "Stretch Shrink"
-msgstr ""
-
-#: scene/main/canvas_layer.cpp
-msgid "Follow Viewport"
-msgstr ""
-
-#: scene/main/http_request.cpp
-msgid "Download File"
-msgstr ""
-
-#: scene/main/http_request.cpp
-msgid "Download Chunk Size"
-msgstr ""
-
-#: scene/main/http_request.cpp
-msgid "Body Size Limit"
-msgstr ""
-
-#: scene/main/http_request.cpp
-msgid "Max Redirects"
-msgstr ""
-
-#: scene/main/http_request.cpp
-msgid "Timeout"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid ""
-"Setting node name '%s' to be unique within scene for '%s', but it's already "
-"claimed by '%s'. This node is no longer set unique."
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Name Num Separator"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Name Casing"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Editor Description"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Pause Mode"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Physics Interpolation Mode"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Display Folded"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Filename"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Owner"
-msgstr ""
-
-#: scene/main/node.cpp scene/main/scene_tree.cpp
-msgid "Multiplayer"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Custom Multiplayer"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Process Priority"
-msgstr ""
-
-#: scene/main/scene_tree.cpp scene/main/timer.cpp
-msgid "Time Left"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Debug Collisions Hint"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Debug Navigation Hint"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Use Font Oversampling"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Edited Scene Root"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Root"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Multiplayer Poll"
-msgstr ""
-
-#: scene/main/scene_tree.cpp scene/resources/mesh_library.cpp
-#: scene/resources/shape_2d.cpp
-msgid "Shapes"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Shape Color"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Contact Color"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Geometry Color"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Disabled Geometry Color"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Max Contacts Displayed"
-msgstr ""
-
-#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
-msgid "Draw 2D Outlines"
-msgstr ""
-
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
-msgid "Reflections"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Atlas Size"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Atlas Subdiv"
-msgstr ""
-
-#: scene/main/scene_tree.cpp scene/main/viewport.cpp
-msgid "MSAA"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Use FXAA"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Use Debanding"
-msgstr ""
-
-#: scene/main/scene_tree.cpp scene/main/viewport.cpp
-msgid "HDR"
-msgstr ""
-
-#: scene/main/scene_tree.cpp scene/main/viewport.cpp
-msgid "Use 32 BPC Depth"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Default Environment"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid ""
-"Default Environment as specified in Project Settings (Rendering -> "
-"Environment -> Default Environment) could not be loaded."
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Enable Object Picking"
-msgstr ""
-
-#: scene/main/timer.cpp
-msgid ""
-"Very low timer wait times (< 0.05 seconds) may behave in significantly "
-"different ways depending on the rendered or physics frame rate.\n"
-"Consider using a script's process loop instead of relying on a Timer for "
-"very low wait times."
-msgstr ""
-
-#: scene/main/timer.cpp
-msgid "Autostart"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Viewport Path"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid ""
-"This viewport is not set as render target. If you intend for it to display "
-"its contents directly to the screen, make it a child of a Control so it can "
-"obtain a size. Otherwise, make it a RenderTarget and assign its internal "
-"texture to some node for display."
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid ""
-"The Viewport size must be greater than or equal to 2 pixels on both "
-"dimensions to render anything."
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "ARVR"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Size Override Stretch"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Own World"
-msgstr ""
-
-#: scene/main/viewport.cpp scene/resources/world_2d.cpp
-msgid "World"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "World 2D"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Transparent BG"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Handle Input Locally"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "FXAA"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Debanding"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Disable 3D"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Keep 3D Linear"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Render Direct To Screen"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Debug Draw"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Render Target"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "V Flip"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Clear Mode"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Enable 2D"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Enable 3D"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Object Picking"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Disable Input"
-msgstr ""
-
-#: scene/main/viewport.cpp servers/visual_server.cpp
-msgid "Shadow Atlas"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Quad 0"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Quad 1"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Quad 2"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Quad 3"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Canvas Transform"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Global Canvas Transform"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Tooltip Delay (sec)"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "Swap OK Cancel"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "Layer Names"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "2D Render"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "3D Render"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "2D Physics"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "3D Physics"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "Use hiDPI"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "Custom"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "Custom Font"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
-msgid "Mix Rate"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Stereo"
-msgstr ""
-
-#: scene/resources/concave_polygon_shape_2d.cpp
-msgid "Segments"
-msgstr ""
-
-#: scene/resources/curve.cpp
-msgid "Bake Resolution"
-msgstr ""
-
-#: scene/resources/curve.cpp
-msgid "Bake Interval"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Panel"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Hover"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Focus"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "H Separation"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Underline Spacing"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Arrow"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Arrow Margin"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Hover Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Checked Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Unchecked"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Unchecked Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Radio Checked"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Radio Checked Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Radio Unchecked"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Radio Unchecked Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Hover Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Check V Adjust"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "On Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Off"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Off Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Shadow"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Outline Modulate"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Shadow Offset X"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Shadow Offset Y"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Shadow As Outline"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Selected"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Uneditable"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Cursor Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Clear Button Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Clear Button Color Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Minimum Spaces"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "BG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "FG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Tab"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
-#: scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Folded"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Fold"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Readonly"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Completion Lines"
-msgstr "Җәмәгать"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Completion Max Width"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Completion Scroll Width"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Scroll Focus"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grabber"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grabber Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grabber Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Increment"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Increment Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Increment Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Decrement"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Decrement Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Decrement Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Slider"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grabber Area"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grabber Area Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grabber Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Tick"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Updown"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Scaleborder Size"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Font"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Height"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Close Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Close H Offset"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Close V Offset"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Parent Folder"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Toggle Hidden"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Panel Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Labeled Separator Left"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Labeled Separator Right"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Separator"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Accel"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Separator"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "V Separation"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Selected Frame"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Default Frame"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Default Focus"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Comment Focus"
-msgstr "Җәмәгать"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Breakpoint"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Resizer"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Close Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Resizer Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Offset"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Close Offset"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Port Offset"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "BG Focus"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Selected Focus"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Cursor Unfocused"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Button Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Button Normal"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Button Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Button Hover"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Custom Button"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Custom Button Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Custom Button Hover"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Select Arrow"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Arrow Collapsed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Button Font"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Button Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Guide Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Drop Position Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Relationship Line Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Custom Button Font Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Item Margin"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Button Margin"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Draw Relationship Lines"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Draw Guides"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Scroll Border"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Scroll Speed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Icon Margin"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Line Separation"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Tab FG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Tab BG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Tab Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Menu"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Menu Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color FG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color BG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Side Margin"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Top Margin"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Label V Align FG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Label V Align BG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Large"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Folder"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Folder Icon Modulate"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "File Icon Modulate"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Files Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "SV Width"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "SV Height"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "H Width"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Label Width"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Screen Picker"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Add Preset"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Color Hue"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Color Sample"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Preset BG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Overbright Indicator"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Preset FG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Preset BG Icon"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Normal Font"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Bold Font"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Italics Font"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Bold Italics Font"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Mono Font"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Table H Separation"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Table V Separation"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Margin Left"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Margin Top"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Margin Right"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Margin Bottom"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Autohide"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Minus"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "More"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grid Minor"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grid Major"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Selection Fill"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Selection Stroke"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Activity"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Bezier Len Pos"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Bezier Len Neg"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Port Grab Distance Horizontal"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Port Grab Distance Vertical"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Hinting"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Override Oversampling"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Font Path"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Outline Size"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Outline Color"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Use Mipmaps"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Extra Spacing"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Char"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Font Data"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Background"
-msgstr ""
-
-#: scene/resources/environment.cpp scene/resources/sky.cpp
-msgid "Sky"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Sky Custom FOV"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Sky Orientation"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Sky Rotation"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Sky Rotation Degrees"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Canvas Max Layer"
-msgstr ""
-
-#: scene/resources/environment.cpp scene/resources/texture.cpp
-msgid "Camera Feed ID"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Ambient Light"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Sky Contribution"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Fog"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Sun Color"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Sun Amount"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Depth Enabled"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Depth Begin"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Depth End"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Depth Curve"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Transmit Enabled"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Transmit Curve"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Height Enabled"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Height Min"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Height Max"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Height Curve"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Tonemap"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Exposure"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "White"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Auto Exposure"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Min Luma"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Max Luma"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "SS Reflections"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Max Steps"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Fade In"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Fade Out"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Depth Tolerance"
-msgstr ""
-
-#: scene/resources/environment.cpp scene/resources/material.cpp
-msgid "Roughness"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "SSAO"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Radius 2"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Intensity 2"
-msgstr ""
-
-#: scene/resources/environment.cpp scene/resources/material.cpp
-msgid "Light Affect"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "AO Channel Affect"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Blur"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Edge Sharpness"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "DOF Far Blur"
-msgstr ""
-
-#: scene/resources/environment.cpp scene/resources/material.cpp
-msgid "Distance"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Transition"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "DOF Near Blur"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Glow"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Levels"
-msgstr ""
-
-#: scene/resources/environment.cpp
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "1"
-msgstr ""
-
-#: scene/resources/environment.cpp
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "2"
-msgstr ""
-
-#: scene/resources/environment.cpp
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "3"
-msgstr ""
-
-#: scene/resources/environment.cpp
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "4"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "5"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "6"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "7"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Bloom"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "HDR Threshold"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "HDR Luminance Cap"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "HDR Scale"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Bicubic Upscale"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Adjustments"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Brightness"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Saturation"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Color Correction"
-msgstr ""
-
-#: scene/resources/font.cpp
-msgid "Ascent"
-msgstr ""
-
-#: scene/resources/font.cpp
-msgid "Distance Field"
-msgstr ""
-
-#: scene/resources/gradient.cpp
-msgid "Raw Data"
-msgstr ""
-
-#: scene/resources/gradient.cpp
-msgid "Offsets"
-msgstr ""
-
-#: scene/resources/height_map_shape.cpp
-msgid "Map Width"
-msgstr ""
-
-#: scene/resources/height_map_shape.cpp
-msgid "Map Depth"
-msgstr ""
-
-#: scene/resources/height_map_shape.cpp
-msgid "Map Data"
-msgstr ""
-
-#: scene/resources/line_shape_2d.cpp
-msgid "D"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Next Pass"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Use Shadow To Opacity"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Unshaded"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Vertex Lighting"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Use Point Size"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "World Triplanar"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Albedo Tex Force sRGB"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Do Not Receive Shadows"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Disable Ambient Light"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Ensure Correct Normals"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Albedo Tex MSDF"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Vertex Color"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Use As Albedo"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Is sRGB"
-msgstr ""
-
-#: scene/resources/material.cpp servers/visual_server.cpp
-msgid "Parameters"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Diffuse Mode"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Specular Mode"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Depth Draw Mode"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Line Width"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Point Size"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Billboard Mode"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Billboard Keep Scale"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Grow"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Grow Amount"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Use Alpha Scissor"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Particles Anim"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "H Frames"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "V Frames"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Albedo"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Metallic"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Texture Channel"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Emission"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "On UV2"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "NormalMap"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Rim"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Clearcoat"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Gloss"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Anisotropy"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Flowmap"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Ambient Occlusion"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Deep Parallax"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Min Layers"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Max Layers"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Flip Tangent"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Flip Binormal"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Subsurf Scatter"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Transmission"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Refraction"
-msgstr ""
-
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
-msgid "Detail"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "UV Layer"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "UV1"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Triplanar"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Triplanar Sharpness"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "UV2"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Proximity Fade"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Distance Fade"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Async Mode"
-msgstr ""
-
-#: scene/resources/mesh.cpp
-msgid "Lightmap Size Hint"
-msgstr ""
-
-#: scene/resources/mesh.cpp scene/resources/primitive_meshes.cpp
-msgid "Custom AABB"
-msgstr ""
-
-#: scene/resources/mesh_library.cpp
-msgid "Mesh Transform"
-msgstr ""
-
-#: scene/resources/mesh_library.cpp
-msgid "NavMesh Transform"
-msgstr ""
-
-#: scene/resources/multimesh.cpp
-msgid "Color Format"
-msgstr ""
-
-#: scene/resources/multimesh.cpp
-msgid "Transform Format"
-msgstr ""
-
-#: scene/resources/multimesh.cpp
-msgid "Custom Data Format"
-msgstr ""
-
-#: scene/resources/multimesh.cpp
-msgid "Instance Count"
-msgstr ""
-
-#: scene/resources/multimesh.cpp
-msgid "Visible Instance Count"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Sample Partition Type"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Parsed Geometry Type"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Source Geometry Mode"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Source Group Name"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Max Climb"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Max Slope"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Merge Size"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Max Error"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Verts Per Poly"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Sample Distance"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Sample Max Error"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Low Hanging Obstacles"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Ledge Spans"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
-msgstr ""
-
-#: scene/resources/occluder_shape.cpp
-msgid "Spheres"
-msgstr ""
-
-#: scene/resources/occluder_shape.cpp
-msgid "OccluderShapeSphere Set Spheres"
-msgstr ""
-
-#: scene/resources/occluder_shape_polygon.cpp
-msgid "Polygon Points"
-msgstr ""
-
-#: scene/resources/occluder_shape_polygon.cpp
-msgid "Hole Points"
-msgstr ""
-
-#: scene/resources/packed_scene.cpp
-msgid "Bundled"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Trail"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Divisor"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Size Modifier"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Color Modifier"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Point Texture"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Normal Texture"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Color Texture"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Point Count"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Scale Random"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Scale Curve"
-msgstr ""
-
-#: scene/resources/physics_material.cpp
-msgid "Rough"
-msgstr ""
-
-#: scene/resources/physics_material.cpp
-msgid "Absorbent"
-msgstr ""
-
-#: scene/resources/plane_shape.cpp
-msgid "Plane"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Flip Faces"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Mid Height"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Subdivide Width"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Subdivide Height"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Subdivide Depth"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Top Radius"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Bottom Radius"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Left To Right"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Is Hemisphere"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Curve Step"
-msgstr ""
-
-#: scene/resources/ray_shape.cpp scene/resources/segment_shape_2d.cpp
-msgid "Slips On Slope"
-msgstr ""
-
-#: scene/resources/segment_shape_2d.cpp
-msgid "A"
-msgstr ""
-
-#: scene/resources/shape_2d.cpp
-msgid "Custom Solver Bias"
-msgstr ""
-
-#: scene/resources/skin.cpp
-msgid "Bind Count"
-msgstr ""
-
-#: scene/resources/skin.cpp
-msgid "Bind"
-msgstr ""
-
-#: scene/resources/skin.cpp
-msgid "Bone"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Radiance Size"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Panorama"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Top Color"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Horizon Color"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Ground"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Bottom Color"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Sun"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Latitude"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Longitude"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Angle Min"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Angle Max"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Content Margin"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Expand Margin"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Skew"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Corner Radius"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Corner Detail"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Anti Aliasing"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Grow Begin"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Grow End"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Load Path"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Base Texture"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Image Size"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Side"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Front"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Back"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Storage Mode"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Lossy Storage Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "From"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "To"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Base"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Current Frame"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Pause"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Which Feed"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Camera Is Active"
-msgstr ""
-
-#: scene/resources/theme.cpp
-msgid "Default Font"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Output Port For Preview"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Depth Draw"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Cull"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Diffuse"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Async"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Modes"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Input Name"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Uniform Name"
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid ""
-"The sampler port is connected but not used. Consider changing the source to "
-"'SamplerPort'."
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Invalid source for preview."
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Invalid source for shader."
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Texture Type"
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Cube Map"
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Default Value Enabled"
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Default Value"
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Color Default"
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Invalid comparison function for that type."
-msgstr ""
-
-#: scene/resources/world.cpp
-msgid "Fallback Environment"
-msgstr ""
-
-#: scene/resources/world.cpp
-msgid "Scenario"
-msgstr ""
-
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Direct Space State"
-msgstr ""
-
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Default Gravity Vector"
-msgstr ""
-
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Default Linear Damp"
-msgstr ""
-
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Default Angular Damp"
-msgstr ""
-
-#: scene/resources/world_2d.cpp
-msgid "Canvas"
-msgstr ""
-
-#: servers/arvr/arvr_interface.cpp
-msgid "Is Primary"
-msgstr ""
-
-#: servers/arvr/arvr_interface.cpp
-msgid "Is Initialized"
-msgstr ""
-
-#: servers/arvr/arvr_interface.cpp
-msgid "AR"
-msgstr ""
-
-#: servers/arvr/arvr_interface.cpp
-msgid "Is Anchor Detection Enabled"
-msgstr ""
-
-#: servers/arvr_server.cpp
-msgid "Primary Interface"
-msgstr ""
-
-#: servers/audio/audio_stream.cpp
-msgid "Audio Stream"
-msgstr ""
-
-#: servers/audio/audio_stream.cpp
-msgid "Random Pitch"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_capture.cpp
-#: servers/audio/effects/audio_effect_spectrum_analyzer.cpp
-#: servers/audio/effects/audio_stream_generator.cpp
-msgid "Buffer Length"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "Voice Count"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Dry"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Wet"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "Voice"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "Depth (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-msgid "Pan"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_compressor.cpp
-#: servers/audio/effects/audio_effect_filter.cpp
-msgid "Gain"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Attack (µs)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Release (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Mix"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Sidechain"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Tap 1"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Tap 2"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_phaser.cpp
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Feedback"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Low-pass"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_distortion.cpp
-msgid "Pre Gain"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_distortion.cpp
-msgid "Keep Hf Hz"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_distortion.cpp
-msgid "Drive"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_distortion.cpp
-msgid "Post Gain"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_filter.cpp
-msgid "Resonance"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_limiter.cpp
-msgid "Ceiling dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_limiter.cpp
-msgid "Threshold dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_limiter.cpp
-msgid "Soft Clip dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_limiter.cpp
-msgid "Soft Clip Ratio"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Range Min Hz"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Range Max Hz"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_pitch_shift.cpp
-msgid "Oversampling"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_pitch_shift.cpp
-#: servers/audio/effects/audio_effect_spectrum_analyzer.cpp
-msgid "FFT Size"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Predelay"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Msec"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Room Size"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "High-pass"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_spectrum_analyzer.cpp
-msgid "Tap Back Pos"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_stereo_enhance.cpp
-msgid "Pan Pullout"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_stereo_enhance.cpp
-msgid "Time Pullout (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_stereo_enhance.cpp
-msgid "Surround"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Enable Audio Input"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Output Latency"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Channel Disable Threshold dB"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Channel Disable Time"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Video Delay Compensation (ms)"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Bus Count"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Capture Device"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Global Rate Scale"
-msgstr ""
-
-#: servers/camera/camera_feed.cpp
-msgid "Feed"
-msgstr ""
-
-#: servers/camera/camera_feed.cpp
-msgid "Is Active"
-msgstr ""
-
-#: servers/physics/space_sw.cpp servers/physics_2d/space_2d_sw.cpp
-msgid "Sleep Threshold Linear"
-msgstr ""
-
-#: servers/physics/space_sw.cpp servers/physics_2d/space_2d_sw.cpp
-msgid "Sleep Threshold Angular"
-msgstr ""
-
-#: servers/physics/space_sw.cpp servers/physics_2d/space_2d_sw.cpp
-msgid "Time Before Sleep"
-msgstr ""
-
-#: servers/physics_2d/physics_2d_server_sw.cpp
-msgid "BP Hash Table Size"
-msgstr ""
-
-#: servers/physics_2d/physics_2d_server_sw.cpp
-msgid "Large Object Surface Threshold In Cells"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Inverse Mass"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Inverse Inertia"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Total Angular Damp"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Total Linear Damp"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Total Gravity"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Linear Velocity"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Exclude"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Shape RID"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collide With Bodies"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collide With Areas"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Motion Remainder"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collision Point"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collision Normal"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collision Depth"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collision Safe Fraction"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collision Unsafe Fraction"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Physics Engine"
-msgstr ""
-
-#: servers/physics_server.cpp
-msgid "Center Of Mass"
-msgstr ""
-
-#: servers/physics_server.cpp
-msgid "Principal Inertia Axes"
-msgstr ""
-
-#: servers/visual/shader_language.cpp
-msgid "Varying may not be assigned in the '%s' function."
-msgstr ""
-
-#: servers/visual/shader_language.cpp
-msgid ""
-"Varyings which were assigned in 'vertex' function may not be reassigned in "
-"'fragment' or 'light'."
-msgstr ""
-
-#: servers/visual/shader_language.cpp
-msgid ""
-"Varyings which were assigned in 'fragment' function may not be reassigned in "
-"'vertex' or 'light'."
-msgstr ""
-
-#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
-msgstr ""
-
-#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
-msgstr ""
-
-#: servers/visual/shader_language.cpp
-msgid "Constants cannot be modified."
-msgstr ""
-
-#: servers/visual/visual_server_scene.cpp
-msgid "Spatial Partitioning"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Render Loop Enabled"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "VRAM Compression"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Import BPTC"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Import S3TC"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Import ETC"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Import ETC2"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Import PVRTC"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Lossless Compression"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Force PNG"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "WebP Compression Level"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Time Rollover Secs"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Cubemap Size"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Quadrant 0 Subdiv"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Quadrant 1 Subdiv"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Quadrant 2 Subdiv"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Quadrant 3 Subdiv"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Shadows"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Filter Mode"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Texture Array Reflections"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "High Quality GGX"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Irradiance Max Size"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Shading"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Force Vertex Shading"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Force Lambert Over Burley"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Force Blinn Over GGX"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Mesh Storage"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Split Stream"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Physical Light Attenuation"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Depth Prepass"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Disable For Vendors"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Anisotropic Filter Level"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Nearest Mipmap Filter"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Skinning"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Software Skinning Fallback"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Force Software Skinning"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Software Skinning"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Ninepatch Mode"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "OpenGL"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Batching Send Null"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Batching Stream"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Legacy Orphan Buffers"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Legacy Stream"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Batching"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Batching"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Batching In Editor"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Single Rect Fallback"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Max Join Item Commands"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Colored Vertex Format Threshold"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Scissor Area Threshold"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Max Join Items"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Batch Buffer Size"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Item Reordering Lookahead"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Flash Batching"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Diagnose Frame"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "GLES2"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Compatibility"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Disable Half Float"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Enable High Float"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Precision"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "UV Contract"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "UV Contract Amount"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Simple PVS"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "PVS Logging"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Signals"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Remove Danglers"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Flip Imported Portals"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Occlusion Culling"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Max Active Spheres"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Max Active Polygons"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Shader Compilation Mode"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Max Simultaneous Compiles"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Log Active Async Compiles Count"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Shader Cache Size (MB)"
-msgstr ""
diff --git a/editor/translations/tzm.po b/editor/translations/tzm.po
deleted file mode 100644
index e4f200a564..0000000000
--- a/editor/translations/tzm.po
+++ /dev/null
@@ -1,25683 +0,0 @@
-# Central Atlas Tamazight translation of the Godot Engine editor
-# Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur.
-# Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md).
-# This file is distributed under the same license as the Godot source code.
-#
-# Hakim Oubouali <hakim.oubouali.skr@gmail.com>, 2020.
-msgid ""
-msgstr ""
-"Project-Id-Version: Godot Engine editor\n"
-"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2020-10-18 14:21+0000\n"
-"Last-Translator: Hakim Oubouali <hakim.oubouali.skr@gmail.com>\n"
-"Language-Team: Central Atlas Tamazight <https://hosted.weblate.org/projects/"
-"godot-engine/godot/tzm/>\n"
-"Language: tzm\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit\n"
-"Plural-Forms: nplurals=2; plural=n >= 2 && (n < 11 || n > 99);\n"
-"X-Generator: Weblate 4.3.1-dev\n"
-
-#: core/bind/core_bind.cpp main/main.cpp
-msgid "Tablet Driver"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Clipboard"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Current Screen"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Exit Code"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "V-Sync Enabled"
-msgstr ""
-
-#: core/bind/core_bind.cpp main/main.cpp
-msgid "V-Sync Via Compositor"
-msgstr ""
-
-#: core/bind/core_bind.cpp main/main.cpp
-msgid "Delta Smoothing"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Low Processor Usage Mode"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Low Processor Usage Mode Sleep (µsec)"
-msgstr ""
-
-#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
-msgid "Keep Screen On"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Min Window Size"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Max Window Size"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Screen Orientation"
-msgstr ""
-
-#: core/bind/core_bind.cpp core/project_settings.cpp main/main.cpp
-#: platform/uwp/os_uwp.cpp
-msgid "Window"
-msgstr ""
-
-#: core/bind/core_bind.cpp core/project_settings.cpp
-msgid "Borderless"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Per Pixel Transparency Enabled"
-msgstr ""
-
-#: core/bind/core_bind.cpp core/project_settings.cpp
-msgid "Fullscreen"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Maximized"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Minimized"
-msgstr ""
-
-#: core/bind/core_bind.cpp core/project_settings.cpp scene/gui/dialogs.cpp
-#: scene/gui/graph_node.cpp
-msgid "Resizable"
-msgstr ""
-
-#: core/bind/core_bind.cpp core/os/input_event.cpp scene/2d/node_2d.cpp
-#: scene/2d/physics_body_2d.cpp scene/2d/remote_transform_2d.cpp
-#: scene/3d/physics_body.cpp scene/3d/remote_transform.cpp
-#: scene/gui/control.cpp scene/gui/line_edit.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Position"
-msgstr ""
-
-#: core/bind/core_bind.cpp core/project_settings.cpp editor/editor_settings.cpp
-#: main/main.cpp modules/gridmap/grid_map.cpp
-#: modules/visual_script/visual_script_nodes.cpp scene/2d/tile_map.cpp
-#: scene/3d/camera.cpp scene/3d/light.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
-#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/texture.cpp
-#: scene/resources/visual_shader.cpp servers/visual_server.cpp
-msgid "Size"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Endian Swap"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Editor Hint"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Print Error Messages"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Iterations Per Second"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Target FPS"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Time Scale"
-msgstr ""
-
-#: core/bind/core_bind.cpp main/main.cpp
-msgid "Physics Jitter Fix"
-msgstr ""
-
-#: core/bind/core_bind.cpp editor/plugins/version_control_editor_plugin.cpp
-msgid "Error"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Error String"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Error Line"
-msgstr ""
-
-#: core/bind/core_bind.cpp
-msgid "Result"
-msgstr ""
-
-#: core/command_queue_mt.cpp core/message_queue.cpp main/main.cpp
-msgid "Memory"
-msgstr ""
-
-#: core/command_queue_mt.cpp core/message_queue.cpp
-#: core/register_core_types.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles2/rasterizer_scene_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-#: drivers/gles3/rasterizer_storage_gles3.cpp main/main.cpp
-#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
-#: servers/visual_server.cpp
-msgid "Limits"
-msgstr ""
-
-#: core/command_queue_mt.cpp
-msgid "Command Queue"
-msgstr ""
-
-#: core/command_queue_mt.cpp
-msgid "Multithreading Queue Size (KB)"
-msgstr ""
-
-#: core/func_ref.cpp modules/visual_script/visual_script_builtin_funcs.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Function"
-msgstr ""
-
-#: core/image.cpp core/packed_data_container.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-msgid "Data"
-msgstr ""
-
-#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
-msgid "Network"
-msgstr ""
-
-#: core/io/file_access_network.cpp
-msgid "Remote FS"
-msgstr ""
-
-#: core/io/file_access_network.cpp
-msgid "Page Size"
-msgstr ""
-
-#: core/io/file_access_network.cpp
-msgid "Page Read Ahead"
-msgstr ""
-
-#: core/io/http_client.cpp
-msgid "Blocking Mode Enabled"
-msgstr ""
-
-#: core/io/http_client.cpp
-msgid "Connection"
-msgstr ""
-
-#: core/io/http_client.cpp
-msgid "Read Chunk Size"
-msgstr ""
-
-#: core/io/marshalls.cpp
-msgid "Object ID"
-msgstr ""
-
-#: core/io/multiplayer_api.cpp core/io/packet_peer.cpp
-msgid "Allow Object Decoding"
-msgstr ""
-
-#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
-msgid "Refuse New Network Connections"
-msgstr ""
-
-#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
-msgid "Network Peer"
-msgstr ""
-
-#: core/io/multiplayer_api.cpp scene/animation/animation_player.cpp
-msgid "Root Node"
-msgstr ""
-
-#: core/io/networked_multiplayer_peer.cpp
-msgid "Refuse New Connections"
-msgstr ""
-
-#: core/io/networked_multiplayer_peer.cpp
-msgid "Transfer Mode"
-msgstr ""
-
-#: core/io/packet_peer.cpp
-msgid "Encode Buffer Max Size"
-msgstr ""
-
-#: core/io/packet_peer.cpp
-msgid "Input Buffer Max Size"
-msgstr ""
-
-#: core/io/packet_peer.cpp
-msgid "Output Buffer Max Size"
-msgstr ""
-
-#: core/io/packet_peer.cpp
-msgid "Stream Peer"
-msgstr ""
-
-#: core/io/stream_peer.cpp
-msgid "Big Endian"
-msgstr ""
-
-#: core/io/stream_peer.cpp
-msgid "Data Array"
-msgstr ""
-
-#: core/io/stream_peer_ssl.cpp
-msgid "Blocking Handshake"
-msgstr ""
-
-#: core/io/udp_server.cpp
-msgid "Max Pending Connections"
-msgstr ""
-
-#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
-#: modules/visual_script/visual_script_builtin_funcs.cpp
-msgid "Invalid type argument to convert(), use TYPE_* constants."
-msgstr ""
-
-#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
-msgid "Expected a string of length 1 (a character)."
-msgstr ""
-
-#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
-#: modules/mono/glue/gd_glue.cpp
-#: modules/visual_script/visual_script_builtin_funcs.cpp
-msgid "Not enough bytes for decoding bytes, or invalid format."
-msgstr ""
-
-#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
-msgstr ""
-
-#: core/math/expression.cpp
-msgid "self can't be used because instance is null (not passed)"
-msgstr ""
-
-#: core/math/expression.cpp
-msgid "Invalid operands to operator %s, %s and %s."
-msgstr ""
-
-#: core/math/expression.cpp
-msgid "Invalid index of type %s for base type %s"
-msgstr ""
-
-#: core/math/expression.cpp
-msgid "Invalid named index '%s' for base type %s"
-msgstr ""
-
-#: core/math/expression.cpp
-msgid "Invalid arguments to construct '%s'"
-msgstr ""
-
-#: core/math/expression.cpp
-msgid "On call to '%s':"
-msgstr ""
-
-#: core/math/random_number_generator.cpp
-#: modules/opensimplex/open_simplex_noise.cpp
-msgid "Seed"
-msgstr ""
-
-#: core/math/random_number_generator.cpp
-msgid "State"
-msgstr ""
-
-#: core/message_queue.cpp
-msgid "Message Queue"
-msgstr ""
-
-#: core/message_queue.cpp
-msgid "Max Size (KB)"
-msgstr ""
-
-#: core/os/input_event.cpp editor/project_settings_editor.cpp
-#: servers/audio_server.cpp
-msgid "Device"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Alt"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Shift"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Control"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Meta"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Command"
-msgstr ""
-
-#: core/os/input_event.cpp scene/2d/touch_screen_button.cpp
-#: scene/gui/base_button.cpp scene/gui/texture_button.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Pressed"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Scancode"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Physical Scancode"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Unicode"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Echo"
-msgstr ""
-
-#: core/os/input_event.cpp scene/gui/base_button.cpp
-msgid "Button Mask"
-msgstr ""
-
-#: core/os/input_event.cpp scene/2d/node_2d.cpp scene/gui/control.cpp
-msgid "Global Position"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Factor"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Button Index"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Doubleclick"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Tilt"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Pressure"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Relative"
-msgstr ""
-
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/animation_player.cpp scene/resources/environment.cpp
-#: scene/resources/particles_material.cpp
-msgid "Speed"
-msgstr ""
-
-#: core/os/input_event.cpp editor/project_settings_editor.cpp
-#: scene/3d/sprite_3d.cpp
-msgid "Axis"
-msgstr ""
-
-#: core/os/input_event.cpp
-#, fuzzy
-msgid "Axis Value"
-msgstr "Azal:"
-
-#: core/os/input_event.cpp modules/visual_script/visual_script_func_nodes.cpp
-msgid "Index"
-msgstr ""
-
-#: core/os/input_event.cpp editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/touch_screen_button.cpp
-msgid "Action"
-msgstr ""
-
-#: core/os/input_event.cpp scene/resources/environment.cpp
-#: scene/resources/material.cpp
-msgid "Strength"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Delta"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Channel"
-msgstr ""
-
-#: core/os/input_event.cpp main/main.cpp
-msgid "Message"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Pitch"
-msgstr ""
-
-#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
-msgid "Velocity"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Instrument"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Controller Number"
-msgstr ""
-
-#: core/os/input_event.cpp
-msgid "Controller Value"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-#: platform/windows/export/export.cpp
-msgid "Application"
-msgstr ""
-
-#: core/project_settings.cpp main/main.cpp
-msgid "Config"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Project Settings Override"
-msgstr ""
-
-#: core/project_settings.cpp core/resource.cpp
-#: editor/animation_track_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/editor_help_search.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_profiler.cpp editor/plugins/tile_set_editor_plugin.cpp
-#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp
-#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
-#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
-#: scene/3d/skeleton.cpp scene/main/node.cpp scene/resources/mesh_library.cpp
-#: scene/resources/skin.cpp
-msgid "Name"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
-msgid "Description"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
-msgid "Run"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/run_settings_dialog.cpp main/main.cpp
-msgid "Main Scene"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Disable stdout"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Disable stderr"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Use Hidden Project Data Directory"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Use Custom User Dir"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Custom User Dir Name"
-msgstr ""
-
-#: core/project_settings.cpp main/main.cpp
-#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
-#: platform/uwp/os_uwp.cpp
-msgid "Display"
-msgstr ""
-
-#: core/project_settings.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/opensimplex/noise_texture.cpp scene/2d/line_2d.cpp
-#: scene/3d/label_3d.cpp scene/gui/text_edit.cpp scene/resources/texture.cpp
-msgid "Width"
-msgstr ""
-
-#: core/project_settings.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/gltf/gltf_node.cpp modules/opensimplex/noise_texture.cpp
-#: scene/2d/light_2d.cpp scene/resources/capsule_shape.cpp
-#: scene/resources/capsule_shape_2d.cpp scene/resources/cylinder_shape.cpp
-#: scene/resources/font.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/primitive_meshes.cpp scene/resources/texture.cpp
-msgid "Height"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Always On Top"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Test Width"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Test Height"
-msgstr ""
-
-#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
-msgid "Audio"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Default Bus Layout"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_export.cpp
-#: editor/editor_file_system.cpp editor/editor_node.cpp
-#: editor/editor_settings.cpp editor/script_create_dialog.cpp
-#: scene/2d/camera_2d.cpp scene/3d/light.cpp scene/main/node.cpp
-msgid "Editor"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Main Run Args"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Search In File Extensions"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Script Templates Search Path"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr ""
-
-#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
-#: scene/3d/collision_object.cpp scene/gui/control.cpp
-msgid "Input"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Accept"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Select"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Cancel"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Focus Next"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Focus Prev"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Left"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Right"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Up"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Down"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Page Up"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Page Down"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI Home"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "UI End"
-msgstr ""
-
-#: core/project_settings.cpp main/main.cpp modules/bullet/register_types.cpp
-#: modules/bullet/space_bullet.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp scene/main/scene_tree.cpp scene/main/viewport.cpp
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#: servers/physics/space_sw.cpp servers/physics_2d/physics_2d_server_sw.cpp
-#: servers/physics_2d/physics_2d_server_wrap_mt.h
-#: servers/physics_2d/space_2d_sw.cpp servers/physics_2d_server.cpp
-#: servers/physics_server.cpp
-msgid "Physics"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_settings.cpp
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp
-#: editor/plugins/spatial_editor_plugin.cpp main/main.cpp
-#: modules/bullet/register_types.cpp modules/bullet/space_bullet.cpp
-#: scene/3d/physics_body.cpp scene/resources/world.cpp
-#: servers/physics/space_sw.cpp servers/physics_server.cpp
-msgid "3D"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Smooth Trimesh Collision"
-msgstr ""
-
-#: core/project_settings.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles2/rasterizer_scene_gles2.cpp
-#: drivers/gles2/rasterizer_storage_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-#: drivers/gles3/rasterizer_storage_gles3.cpp main/main.cpp
-#: modules/lightmapper_cpu/register_types.cpp scene/main/scene_tree.cpp
-#: scene/main/viewport.cpp servers/visual/visual_server_scene.cpp
-#: servers/visual_server.cpp
-msgid "Rendering"
-msgstr ""
-
-#: core/project_settings.cpp drivers/gles2/rasterizer_storage_gles2.cpp
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-#: drivers/gles3/rasterizer_storage_gles3.cpp main/main.cpp
-#: modules/lightmapper_cpu/register_types.cpp scene/3d/baked_lightmap.cpp
-#: scene/main/scene_tree.cpp scene/resources/environment.cpp
-#: scene/resources/multimesh.cpp servers/visual/visual_server_scene.cpp
-#: servers/visual_server.cpp
-msgid "Quality"
-msgstr ""
-
-#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
-msgid "Filters"
-msgstr ""
-
-#: core/project_settings.cpp scene/main/viewport.cpp
-msgid "Sharpen Intensity"
-msgstr ""
-
-#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
-#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp
-#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
-#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
-#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
-#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
-#: servers/visual_server.cpp
-msgid "Debug"
-msgstr ""
-
-#: core/project_settings.cpp main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/resources/dynamic_font.cpp
-msgid "Settings"
-msgstr ""
-
-#: core/project_settings.cpp editor/script_editor_debugger.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Profiler"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Max Functions"
-msgstr ""
-
-#: core/project_settings.cpp scene/3d/vehicle_body.cpp
-msgid "Compression"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Formats"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Zstd"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Long Distance Matching"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Compression Level"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Window Log Size"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Zlib"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Gzip"
-msgstr ""
-
-#: core/project_settings.cpp platform/android/export/export.cpp
-msgid "Android"
-msgstr ""
-
-#: core/project_settings.cpp
-msgid "Modules"
-msgstr ""
-
-#: core/register_core_types.cpp
-msgid "TCP"
-msgstr ""
-
-#: core/register_core_types.cpp
-msgid "Connect Timeout Seconds"
-msgstr ""
-
-#: core/register_core_types.cpp
-msgid "Packet Peer Stream"
-msgstr ""
-
-#: core/register_core_types.cpp
-msgid "Max Buffer (Power of 2)"
-msgstr ""
-
-#: core/register_core_types.cpp editor/editor_settings.cpp main/main.cpp
-msgid "SSL"
-msgstr ""
-
-#: core/register_core_types.cpp main/main.cpp
-msgid "Certificates"
-msgstr ""
-
-#: core/resource.cpp editor/dependency_editor.cpp
-#: editor/editor_resource_picker.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Resource"
-msgstr ""
-
-#: core/resource.cpp
-msgid "Local To Scene"
-msgstr ""
-
-#: core/resource.cpp editor/dependency_editor.cpp
-#: editor/editor_autoload_settings.cpp editor/plugins/path_editor_plugin.cpp
-#: editor/project_manager.cpp editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Path"
-msgstr ""
-
-#: core/script_language.cpp
-msgid "Source Code"
-msgstr ""
-
-#: core/translation.cpp editor/project_settings_editor.cpp
-msgid "Locale"
-msgstr ""
-
-#: core/translation.cpp
-msgid "Test"
-msgstr ""
-
-#: core/translation.cpp scene/resources/font.cpp
-msgid "Fallback"
-msgstr ""
-
-#: core/ustring.cpp scene/resources/segment_shape_2d.cpp
-msgid "B"
-msgstr ""
-
-#: core/ustring.cpp
-msgid "KiB"
-msgstr ""
-
-#: core/ustring.cpp
-msgid "MiB"
-msgstr ""
-
-#: core/ustring.cpp
-msgid "GiB"
-msgstr ""
-
-#: core/ustring.cpp
-msgid "TiB"
-msgstr ""
-
-#: core/ustring.cpp
-msgid "PiB"
-msgstr ""
-
-#: core/ustring.cpp
-msgid "EiB"
-msgstr ""
-
-#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles2/rasterizer_scene_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-#: drivers/gles3/rasterizer_storage_gles3.cpp modules/gltf/gltf_state.cpp
-msgid "Buffers"
-msgstr ""
-
-#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-msgid "Canvas Polygon Buffer Size (KB)"
-msgstr ""
-
-#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-msgid "Canvas Polygon Index Buffer Size (KB)"
-msgstr ""
-
-#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp editor/editor_settings.cpp
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp main/main.cpp
-#: scene/2d/physics_body_2d.cpp scene/resources/world_2d.cpp
-#: servers/physics_2d/physics_2d_server_sw.cpp
-#: servers/physics_2d/physics_2d_server_wrap_mt.h
-#: servers/physics_2d/space_2d_sw.cpp servers/physics_2d_server.cpp
-#: servers/visual_server.cpp
-msgid "2D"
-msgstr ""
-
-#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-msgid "Snapping"
-msgstr ""
-
-#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
-#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-msgid "Use GPU Pixel Snap"
-msgstr ""
-
-#: drivers/gles2/rasterizer_scene_gles2.cpp
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Immediate Buffer Size (KB)"
-msgstr ""
-
-#: drivers/gles2/rasterizer_storage_gles2.cpp
-#: drivers/gles3/rasterizer_storage_gles3.cpp
-msgid "Lightmapping"
-msgstr ""
-
-#: drivers/gles2/rasterizer_storage_gles2.cpp
-#: drivers/gles3/rasterizer_storage_gles3.cpp
-msgid "Use Bicubic Sampling"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Max Renderable Elements"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Max Renderable Lights"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Max Renderable Reflections"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Max Lights Per Object"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Subsurface Scattering"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp editor/animation_track_editor.cpp
-#: editor/import/resource_importer_texture.cpp
-#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
-#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
-#: scene/2d/remote_transform_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/remote_transform.cpp scene/3d/spatial.cpp
-#: scene/animation/animation_blend_tree.cpp scene/gui/control.cpp
-#: scene/main/canvas_layer.cpp scene/resources/environment.cpp
-#: scene/resources/material.cpp scene/resources/particles_material.cpp
-msgid "Scale"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Follow Surface"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Weight Samples"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp
-msgid "Voxel Cone Tracing"
-msgstr ""
-
-#: drivers/gles3/rasterizer_scene_gles3.cpp scene/resources/environment.cpp
-msgid "High Quality"
-msgstr ""
-
-#: drivers/gles3/rasterizer_storage_gles3.cpp
-msgid "Blend Shape Max Buffer Size (KB)"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Free"
-msgstr "Amcix"
-
-#: editor/animation_bezier_editor.cpp
-msgid "Balanced"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Mirror"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp editor/editor_profiler.cpp
-msgid "Time:"
-msgstr "Akud:"
-
-#: editor/animation_bezier_editor.cpp
-msgid "Value:"
-msgstr "Azal:"
-
-#: editor/animation_bezier_editor.cpp
-msgid "Insert Key Here"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Duplicate Selected Key(s)"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Delete Selected Key(s)"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Add Bezier Point"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp
-msgid "Move Bezier Points"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
-msgid "Anim Duplicate Keys"
-msgstr ""
-
-#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
-msgid "Anim Delete Keys"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Change Keyframe Time"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Change Transition"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Change Transform"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Change Keyframe Value"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Change Call"
-msgstr ""
-
-#: editor/animation_track_editor.cpp scene/2d/animated_sprite.cpp
-#: scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Frame"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_profiler.cpp
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/particles_material.cpp servers/visual_server.cpp
-msgid "Time"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
-#: platform/osx/export/export.cpp
-msgid "Location"
-msgstr ""
-
-#: editor/animation_track_editor.cpp modules/gltf/gltf_node.cpp
-#: scene/2d/polygon_2d.cpp scene/2d/remote_transform_2d.cpp
-#: scene/3d/remote_transform.cpp scene/3d/spatial.cpp scene/gui/control.cpp
-msgid "Rotation"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_nodes.cpp scene/gui/range.cpp
-msgid "Value"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Arg Count"
-msgstr ""
-
-#: editor/animation_track_editor.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Args"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_settings.cpp
-#: editor/script_editor_debugger.cpp modules/gltf/gltf_accessor.cpp
-#: modules/gltf/gltf_light.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/3d/physics_body.cpp scene/resources/visual_shader_nodes.cpp
-msgid "Type"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "In Handle"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Out Handle"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#: editor/import/resource_importer_texture.cpp
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Start Offset"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "End Offset"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_settings.cpp
-#: editor/import/resource_importer_scene.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
-#: scene/animation/animation_blend_tree.cpp
-#: scene/resources/particles_material.cpp
-msgid "Animation"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Easing"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Multi Change Keyframe Time"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Multi Change Transition"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Multi Change Transform"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Multi Change Keyframe Value"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Multi Change Call"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Change Animation Length"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Change Animation Loop"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Property Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "3D Transform Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Call Method Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Bezier Curve Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Audio Playback Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation Playback Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation length (frames)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation length (seconds)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Add Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation Looping"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Functions:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Audio Clips:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Clips:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Change Track Path"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Toggle this track on/off."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Update Mode (How this property is set)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp scene/resources/gradient.cpp
-msgid "Interpolation Mode"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Loop Wrap Mode (Interpolate end with beginning on loop)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Remove this track."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Time (s): "
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Toggle Track Enabled"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Continuous"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Discrete"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Trigger"
-msgstr ""
-
-#: editor/animation_track_editor.cpp scene/3d/baked_lightmap.cpp
-msgid "Capture"
-msgstr "Amẓ"
-
-#: editor/animation_track_editor.cpp
-msgid "Nearest"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/plugins/curve_editor_plugin.cpp
-#: editor/property_editor.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
-msgid "Linear"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Cubic"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Clamp Loop Interp"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Wrap Loop Interp"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Insert Key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Duplicate Key(s)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Add RESET Value(s)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Delete Key(s)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Change Animation Update Mode"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Change Animation Interpolation Mode"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Change Animation Loop Mode"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Remove Anim Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_settings.cpp
-#: editor/plugins/path_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Editors"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_settings.cpp
-msgid "Confirm Insert Track"
-msgstr ""
-
-#. TRANSLATORS: %s will be replaced by a phrase describing the target of track.
-#: editor/animation_track_editor.cpp
-msgid "Create NEW track for %s and insert key?"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Create %d NEW tracks and insert keys?"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp editor/editor_feature_profile.cpp
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#: editor/script_create_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Create"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Insert"
-msgstr ""
-
-#. TRANSLATORS: This describes the target of new animation track, will be inserted into another string.
-#: editor/animation_track_editor.cpp
-msgid "node '%s'"
-msgstr ""
-
-#. TRANSLATORS: This describes the target of new animation track, will be inserted into another string.
-#: editor/animation_track_editor.cpp
-msgid "animation"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "AnimationPlayer can't animate itself, only other players."
-msgstr ""
-
-#. TRANSLATORS: This describes the target of new animation track, will be inserted into another string.
-#: editor/animation_track_editor.cpp
-msgid "property '%s'"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Create & Insert"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Insert Track & Key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Insert Key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Change Animation Step"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Rearrange Tracks"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Transform tracks only apply to Spatial-based nodes."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid ""
-"Audio tracks can only point to nodes of type:\n"
-"-AudioStreamPlayer\n"
-"-AudioStreamPlayer2D\n"
-"-AudioStreamPlayer3D"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation tracks can only point to AnimationPlayer nodes."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Not possible to add a new track without a root"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Invalid track for Bezier (no suitable sub-properties)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Add Bezier Track"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Track path is invalid, so can't add a key."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Track is not of type Spatial, can't insert key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Add Transform Track Key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Add Track Key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Track path is invalid, so can't add a method key."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Add Method Track Key"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Move Keys"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp scene/2d/node_2d.cpp
-#: scene/3d/spatial.cpp scene/main/canvas_layer.cpp
-#: servers/camera/camera_feed.cpp servers/physics_2d_server.cpp
-#: servers/physics_server.cpp
-msgid "Transform"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_help.cpp
-msgid "Methods"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Bezier"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Clipboard is empty!"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Paste Tracks"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Scale Keys"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid ""
-"This option does not work for Bezier editing, as it's only a single track."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim Add RESET Keys"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid ""
-"This animation belongs to an imported scene, so changes to imported tracks "
-"will not be saved.\n"
-"\n"
-"To enable the ability to add custom tracks, navigate to the scene's import "
-"settings and set\n"
-"\"Animation > Storage\" to \"Files\", enable \"Animation > Keep Custom "
-"Tracks\", then re-import.\n"
-"Alternatively, use an import preset that imports animations to separate "
-"files."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Warning: Editing imported animation"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Select an AnimationPlayer node to create and edit animations."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Only show tracks from nodes selected in tree."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Group tracks by node or display them as plain list."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Snap:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation step value."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Seconds"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
-#: scene/resources/texture.cpp
-msgid "FPS"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Animation properties."
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Copy Tracks"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Scale Selection"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Scale From Cursor"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Duplicate Selection"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Duplicate Transposed"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Delete Selection"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Go to Next Step"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Go to Previous Step"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Apply Reset"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Optimize Animation"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Clean-Up Animation"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Pick the node that will be animated:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Use Bezier Curves"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Create RESET Track(s)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Anim. Optimizer"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Max. Linear Error:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Max. Angular Error:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Max Optimizable Angle:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp scene/3d/room_manager.cpp
-#: servers/visual_server.cpp
-msgid "Optimize"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Remove invalid keys"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Remove unresolved and empty tracks"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Clean-up all animations"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Clean-Up Animation(s) (NO UNDO!)"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Clean-Up"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Scale Ratio:"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Select Tracks to Copy"
-msgstr ""
-
-#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_resource_picker.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Copy"
-msgstr ""
-
-#: editor/animation_track_editor.cpp
-msgid "Select All/None"
-msgstr ""
-
-#: editor/animation_track_editor_plugins.cpp
-msgid "Add Audio Track Clip"
-msgstr ""
-
-#: editor/animation_track_editor_plugins.cpp
-msgid "Change Audio Track Clip Start Offset"
-msgstr ""
-
-#: editor/animation_track_editor_plugins.cpp
-msgid "Change Audio Track Clip End Offset"
-msgstr ""
-
-#: editor/array_property_edit.cpp
-msgid "Resize Array"
-msgstr ""
-
-#: editor/array_property_edit.cpp
-msgid "Change Array Value Type"
-msgstr ""
-
-#: editor/array_property_edit.cpp
-msgid "Change Array Value"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Go to Line"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Line Number:"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "%d replaced."
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "%d match."
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "%d matches."
-msgstr ""
-
-#: editor/code_editor.cpp editor/find_in_files.cpp
-msgid "Match Case"
-msgstr ""
-
-#: editor/code_editor.cpp editor/find_in_files.cpp
-msgid "Whole Words"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr ""
-
-#: editor/code_editor.cpp editor/plugins/script_text_editor.cpp
-#: editor/plugins/text_editor.cpp
-msgid "Standard"
-msgstr ""
-
-#: editor/code_editor.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Toggle Scripts Panel"
-msgstr ""
-
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/texture_region_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
-msgid "Zoom In"
-msgstr ""
-
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/texture_region_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
-msgid "Zoom Out"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Reset Zoom"
-msgstr ""
-
-#: editor/code_editor.cpp modules/gdscript/gdscript.cpp
-msgid "Warnings"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Line and column numbers."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Method in target node must be specified."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Method name must be a valid identifier."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid ""
-"Target method not found. Specify a valid method or attach a script to the "
-"target node."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Connect to Node:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Connect to Script:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "From Signal:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Scene does not contain any script."
-msgstr ""
-
-#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
-#: editor/groups_editor.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Add"
-msgstr ""
-
-#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-msgid "Remove"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Add Extra Call Argument:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Extra Call Arguments:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Receiver Method:"
-msgstr ""
-
-#: editor/connections_dialog.cpp scene/3d/room_manager.cpp
-#: servers/visual_server.cpp
-msgid "Advanced"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Deferred"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid ""
-"Defers the signal, storing it in a queue and only firing it at idle time."
-msgstr ""
-
-#: editor/connections_dialog.cpp scene/resources/texture.cpp
-msgid "Oneshot"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Disconnects the signal after its first emission."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Cannot connect signal"
-msgstr ""
-
-#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/export_template_manager.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Close"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Connect"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Signal:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Connect '%s' to '%s'"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Disconnect '%s' from '%s'"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Disconnect all from signal: '%s'"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Connect..."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Disconnect"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Connect a Signal to a Method"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Edit Connection:"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Are you sure you want to remove all connections from the \"%s\" signal?"
-msgstr ""
-
-#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
-msgid "Signals"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Filter signals"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Are you sure you want to remove all connections from this signal?"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Disconnect All"
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Edit..."
-msgstr ""
-
-#: editor/connections_dialog.cpp
-msgid "Go to Method"
-msgstr ""
-
-#: editor/create_dialog.cpp
-msgid "Change %s Type"
-msgstr ""
-
-#: editor/create_dialog.cpp editor/project_settings_editor.cpp
-msgid "Change"
-msgstr ""
-
-#: editor/create_dialog.cpp
-msgid "Create New %s"
-msgstr ""
-
-#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr ""
-
-#: editor/create_dialog.cpp editor/property_selector.cpp
-msgid "No description available for %s."
-msgstr ""
-
-#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/filesystem_dock.cpp
-msgid "Favorites:"
-msgstr ""
-
-#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
-msgid "Recent:"
-msgstr ""
-
-#: editor/create_dialog.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp editor/rename_dialog.cpp
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Search:"
-msgstr ""
-
-#: editor/create_dialog.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Matches:"
-msgstr ""
-
-#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Description:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Search Replacement For:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Dependencies For:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid ""
-"Scene '%s' is currently being edited.\n"
-"Changes will only take effect when reloaded."
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid ""
-"Resource '%s' is in use.\n"
-"Changes will only take effect when reloaded."
-msgstr ""
-
-#: editor/dependency_editor.cpp
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Dependencies"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Dependencies:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Fix Broken"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Dependency Editor"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Search Replacement Resource:"
-msgstr ""
-
-#: editor/dependency_editor.cpp editor/editor_file_dialog.cpp
-#: editor/editor_help_search.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/script_create_dialog.cpp
-#: modules/visual_script/visual_script_property_selector.cpp
-#: scene/gui/file_dialog.cpp
-msgid "Open"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid ""
-"Remove the selected files from the project? (Cannot be undone.)\n"
-"Depending on your filesystem configuration, the files will either be moved "
-"to the system trash or deleted permanently."
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid ""
-"The files being removed are required by other resources in order for them to "
-"work.\n"
-"Remove them anyway? (Cannot be undone.)\n"
-"Depending on your filesystem configuration, the files will either be moved "
-"to the system trash or deleted permanently."
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Cannot remove:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Error loading:"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Load failed due to missing dependencies:"
-msgstr ""
-
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-msgid "Open Anyway"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Which action should be taken?"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Fix Dependencies"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Errors loading!"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Permanently delete %d item(s)? (No undo!)"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Show Dependencies"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Orphan Resource Explorer"
-msgstr ""
-
-#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
-#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
-#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
-msgid "Delete"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Owns"
-msgstr ""
-
-#: editor/dependency_editor.cpp
-msgid "Resources Without Explicit Ownership:"
-msgstr ""
-
-#: editor/dictionary_property_edit.cpp
-msgid "Change Dictionary Key"
-msgstr ""
-
-#: editor/dictionary_property_edit.cpp
-msgid "Change Dictionary Value"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Thanks from the Godot community!"
-msgstr ""
-
-#: editor/editor_about.cpp editor/editor_node.cpp editor/project_manager.cpp
-msgid "Click to copy."
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Project Founders"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Lead Developer"
-msgstr ""
-
-#. TRANSLATORS: This refers to a job title.
-#: editor/editor_about.cpp
-msgctxt "Job Title"
-msgid "Project Manager"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Authors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Platinum Sponsors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Gold Sponsors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Silver Sponsors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Bronze Sponsors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Mini Sponsors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Gold Donors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Silver Donors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Bronze Donors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Donors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "License"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Third-party Licenses"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid ""
-"Godot Engine relies on a number of third-party free and open source "
-"libraries, all compatible with the terms of its MIT license. The following "
-"is an exhaustive list of all such third-party components with their "
-"respective copyright statements and license terms."
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "All Components"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Components"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Licenses"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "Error opening asset file for \"%s\" (not in ZIP format)."
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "%s (already exists)"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "Contents of asset \"%s\" - No files conflict with your project:"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "Uncompressing Assets"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "The following files failed extraction from asset \"%s\":"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "(and %s more files)"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "Asset \"%s\" installed successfully!"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Success!"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp editor/editor_node.cpp
-msgid "Install"
-msgstr ""
-
-#: editor/editor_asset_installer.cpp
-msgid "Asset Installer"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Speakers"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Add Effect"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Rename Audio Bus"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Change Audio Bus Volume"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Toggle Audio Bus Solo"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Toggle Audio Bus Mute"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Toggle Audio Bus Bypass Effects"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Select Audio Bus Send"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Add Audio Bus Effect"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Move Bus Effect"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Delete Bus Effect"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Drag & drop to rearrange."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Solo"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Mute"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Bypass"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Bus Options"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
-msgid "Duplicate"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Reset Volume"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Delete Effect"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Add Audio Bus"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Master bus can't be deleted!"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Delete Audio Bus"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Duplicate Audio Bus"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Reset Bus Volume"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Move Audio Bus"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Save Audio Bus Layout As..."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Location for New Layout..."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Open Audio Bus Layout"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "There is no '%s' file."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Invalid file, not an audio bus layout."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Error saving file: %s"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Add Bus"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Add a new Audio Bus to this layout."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_create_dialog.cpp
-msgid "Load"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Load an existing Bus Layout."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Save As"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Save this Bus Layout to a file."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp editor/import_dock.cpp
-msgid "Load Default"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Load the default Bus Layout."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Create a new Bus Layout."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Audio Bus Layout"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Invalid name."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Cannot begin with a digit."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Valid characters:"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Must not collide with an existing engine class name."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Must not collide with an existing built-in type name."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Must not collide with an existing global constant name."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Keyword cannot be used as an autoload name."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Autoload '%s' already exists!"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Rename Autoload"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Toggle AutoLoad Globals"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Move Autoload"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Remove Autoload"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
-#: platform/osx/export/export.cpp platform/windows/export/export.cpp
-#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
-#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
-#: scene/resources/material.cpp servers/visual_server.cpp
-msgid "Enable"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Rearrange Autoloads"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Can't add autoload:"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "%s is an invalid path. File does not exist."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "%s is an invalid path. Not in resource path (res://)."
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Add AutoLoad"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp
-#: editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/script_create_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Path:"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Node Name:"
-msgstr ""
-
-#: editor/editor_autoload_settings.cpp
-msgid "Global Variable"
-msgstr ""
-
-#: editor/editor_data.cpp
-msgid "Paste Params"
-msgstr ""
-
-#: editor/editor_data.cpp
-msgid "Updating Scene"
-msgstr ""
-
-#: editor/editor_data.cpp
-msgid "Storing local changes..."
-msgstr ""
-
-#: editor/editor_data.cpp
-msgid "Updating scene..."
-msgstr ""
-
-#: editor/editor_data.cpp editor/editor_resource_picker.cpp
-msgid "[empty]"
-msgstr ""
-
-#: editor/editor_data.cpp editor/plugins/script_text_editor.cpp
-#: editor/plugins/text_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "[unsaved]"
-msgstr ""
-
-#: editor/editor_dir_dialog.cpp
-msgid "Please select a base directory first."
-msgstr ""
-
-#: editor/editor_dir_dialog.cpp
-msgid "Choose a Directory"
-msgstr ""
-
-#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/filesystem_dock.cpp editor/project_manager.cpp
-#: scene/gui/file_dialog.cpp
-msgid "Create Folder"
-msgstr ""
-
-#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
-#: editor/script_create_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp scene/gui/file_dialog.cpp
-msgid "Name:"
-msgstr ""
-
-#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
-msgid "Could not create folder."
-msgstr ""
-
-#: editor/editor_dir_dialog.cpp
-msgid "Choose"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Storing File:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "No export template found at the expected path:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Packing"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid ""
-"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
-"Etc' in Project Settings."
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid ""
-"Target platform requires 'ETC2' texture compression for GLES3. Enable "
-"'Import Etc 2' in Project Settings."
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid ""
-"Target platform requires 'ETC' texture compression for the driver fallback "
-"to GLES2.\n"
-"Enable 'Import Etc' in Project Settings, or disable 'Driver Fallback "
-"Enabled'."
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid ""
-"Target platform requires 'PVRTC' texture compression for GLES2. Enable "
-"'Import Pvrtc' in Project Settings."
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid ""
-"Target platform requires 'ETC2' or 'PVRTC' texture compression for GLES3. "
-"Enable 'Import Etc 2' or 'Import Pvrtc' in Project Settings."
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid ""
-"Target platform requires 'PVRTC' texture compression for the driver fallback "
-"to GLES2.\n"
-"Enable 'Import Pvrtc' in Project Settings, or disable 'Driver Fallback "
-"Enabled'."
-msgstr ""
-
-#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
-#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-msgid "Custom Template"
-msgstr ""
-
-#: editor/editor_export.cpp editor/project_export.cpp
-#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
-#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
-#: platform/uwp/export/export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Binary Format"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "64 Bits"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Embed PCK"
-msgstr ""
-
-#: editor/editor_export.cpp platform/osx/export/export.cpp
-msgid "Texture Format"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "BPTC"
-msgstr ""
-
-#: editor/editor_export.cpp platform/osx/export/export.cpp
-msgid "S3TC"
-msgstr ""
-
-#: editor/editor_export.cpp platform/osx/export/export.cpp
-msgid "ETC"
-msgstr ""
-
-#: editor/editor_export.cpp platform/osx/export/export.cpp
-msgid "ETC2"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "No BPTC Fallbacks"
-msgstr ""
-
-#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
-#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-msgid "Custom debug template not found."
-msgstr ""
-
-#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
-#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-msgid "Custom release template not found."
-msgstr ""
-
-#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Convert Text Resources To Binary On Export"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "3D Editor"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Script Editor"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
-msgid "Asset Library"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Scene Tree Editing"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Node Dock"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "FileSystem Dock"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Import Dock"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Allows to view and edit 3D scenes."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Allows to edit scripts using the integrated script editor."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Provides built-in access to the Asset Library."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Allows editing the node hierarchy in the Scene dock."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid ""
-"Allows to work with signals and groups of the node selected in the Scene "
-"dock."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Allows to browse the local file system via a dedicated dock."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid ""
-"Allows to configure import settings for individual assets. Requires the "
-"FileSystem dock to function."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "(current)"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "(none)"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Remove currently selected profile, '%s'? Cannot be undone."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Profile must be a valid filename and must not contain '.'"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Profile with this name already exists."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "(Editor Disabled, Properties Disabled)"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "(Properties Disabled)"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "(Editor Disabled)"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Class Options:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Enable Contextual Editor"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Class Properties:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Main Features:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Nodes and Classes:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "File '%s' format is invalid, import aborted."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid ""
-"Profile '%s' already exists. Remove it first before importing, import "
-"aborted."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Error saving profile to path: '%s'."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Reset to Default"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Current Profile:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Create Profile"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Remove Profile"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/import/resource_importer_scene.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: modules/fbx/editor_scene_importer_fbx.cpp
-msgid "Import"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
-msgid "Export"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Configure Selected Profile:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Extra Options:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Create or import a profile to edit available classes and properties."
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Godot Feature Profile"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Import Profile(s)"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Export Profile"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Manage Editor Feature Profiles"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
-msgid "Default Feature Profile"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Select Current Folder"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File exists, overwrite?"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Select This Folder"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-msgid "Copy Path"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-msgid "Open in File Manager"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/project_manager.cpp
-msgid "Show in File Manager"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-msgid "New Folder..."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/find_in_files.cpp
-msgid "Refresh"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "All Recognized"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "All Files (*)"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
-msgid "Save"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Save a File"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Access"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/editor_settings.cpp
-msgid "Display Mode"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp
-#: editor/import/resource_importer_wav.cpp main/main.cpp
-#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/light_2d.cpp scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
-#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
-#: scene/gui/control.cpp scene/gui/file_dialog.cpp
-#: scene/resources/environment.cpp scene/resources/material.cpp
-#: scene/resources/visual_shader.cpp
-#: servers/audio/effects/audio_effect_distortion.cpp
-msgid "Mode"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Current Dir"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Current File"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Current Path"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/editor_settings.cpp
-#: scene/gui/file_dialog.cpp
-msgid "Show Hidden Files"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Disable Overwrite Warning"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Go Back"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Go Forward"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Go Up"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Toggle Hidden Files"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Toggle Favorite"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/editor_resource_picker.cpp
-#: scene/gui/base_button.cpp
-msgid "Toggle Mode"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Focus Path"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Move Favorite Up"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Move Favorite Down"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Go to previous folder."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "Go to next folder."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Go to parent folder."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Refresh files."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-msgid "(Un)favorite current folder."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Toggle the visibility of hidden files."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-msgid "View items as a grid of thumbnails."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-msgid "View items as a list."
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Directories & Files:"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Preview:"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp
-#: editor/plugins/version_control_editor_plugin.cpp scene/gui/file_dialog.cpp
-msgid "File:"
-msgstr ""
-
-#: editor/editor_file_system.cpp
-msgid "ScanSources"
-msgstr ""
-
-#: editor/editor_file_system.cpp
-msgid ""
-"There are multiple importers for different types pointing to file %s, import "
-"aborted"
-msgstr ""
-
-#: editor/editor_file_system.cpp
-msgid "(Re)Importing Assets"
-msgstr ""
-
-#: editor/editor_file_system.cpp
-msgid "Reimport Missing Imported Files"
-msgstr ""
-
-#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
-#: scene/resources/style_box.cpp scene/resources/texture.cpp
-msgid "Top"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Class:"
-msgstr ""
-
-#: editor/editor_help.cpp editor/scene_tree_editor.cpp
-#: editor/script_create_dialog.cpp
-msgid "Inherits:"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Inherited by:"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Online Tutorials"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Properties"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "overrides %s:"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "default:"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Theme Properties"
-msgstr ""
-
-#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/gradient.cpp
-msgid "Colors"
-msgstr ""
-
-#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Constants"
-msgstr ""
-
-#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Fonts"
-msgstr ""
-
-#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
-#: platform/iphone/export/export.cpp
-msgid "Icons"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Styles"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Enumerations"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Property Descriptions"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "(value)"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid ""
-"There is currently no description for this property. Please help us by "
-"[color=$color][url=$url]contributing one[/url][/color]!"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Method Descriptions"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid ""
-"There is currently no description for this method. Please help us by "
-"[color=$color][url=$url]contributing one[/url][/color]!"
-msgstr ""
-
-#: editor/editor_help.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: modules/gdscript/editor/gdscript_highlighter.cpp
-#: modules/gdscript/gdscript_editor.cpp
-msgid "Text Editor"
-msgstr ""
-
-#: editor/editor_help.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Help"
-msgstr ""
-
-#: editor/editor_help.cpp
-msgid "Sort Functions Alphabetically"
-msgstr ""
-
-#: editor/editor_help_search.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Search Help"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Case Sensitive"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Show Hierarchy"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Display All"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Classes Only"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Methods Only"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Signals Only"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Constants Only"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Properties Only"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Theme Properties Only"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Member Type"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Class"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Method"
-msgstr ""
-
-#: editor/editor_help_search.cpp editor/plugins/script_text_editor.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Signal"
-msgstr ""
-
-#: editor/editor_help_search.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Constant"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Property"
-msgstr ""
-
-#: editor/editor_help_search.cpp
-msgid "Theme Property"
-msgstr ""
-
-#: editor/editor_inspector.cpp editor/project_settings_editor.cpp
-msgid "Property:"
-msgstr ""
-
-#: editor/editor_inspector.cpp editor/editor_spin_slider.cpp
-msgid "Label"
-msgstr ""
-
-#: editor/editor_inspector.cpp editor/editor_spin_slider.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Read Only"
-msgstr ""
-
-#: editor/editor_inspector.cpp editor/plugins/item_list_editor_plugin.cpp
-msgid "Checkable"
-msgstr ""
-
-#: editor/editor_inspector.cpp editor/plugins/item_list_editor_plugin.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Checked"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Draw Red"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Keying"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Pin value"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid ""
-"Pinning a value forces it to be saved even if it's equal to the default."
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Pin value [Disabled because '%s' is editor-only]"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Set Multiple:"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Pinned %s"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Unpinned %s"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Copy Property"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Paste Property"
-msgstr ""
-
-#: editor/editor_inspector.cpp
-msgid "Copy Property Path"
-msgstr ""
-
-#: editor/editor_log.cpp
-msgid "Output:"
-msgstr ""
-
-#: editor/editor_log.cpp editor/plugins/tile_map_editor_plugin.cpp
-msgid "Copy Selection"
-msgstr ""
-
-#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/property_editor.cpp editor/scene_tree_dock.cpp
-#: editor/script_editor_debugger.cpp
-#: modules/gdnative/gdnative_library_editor_plugin.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Clear"
-msgstr ""
-
-#: editor/editor_log.cpp
-msgid "Clear Output"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp editor/editor_node.cpp
-#: editor/editor_profiler.cpp
-msgid "Stop"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp editor/editor_profiler.cpp
-#: editor/plugins/animation_state_machine_editor.cpp editor/rename_dialog.cpp
-msgid "Start"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "%s/s"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "Down"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "Up"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp editor/editor_node.cpp
-#: scene/main/node.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Node"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "Incoming RPC"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "Incoming RSET"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "Outgoing RPC"
-msgstr ""
-
-#: editor/editor_network_profiler.cpp
-msgid "Outgoing RSET"
-msgstr ""
-
-#: editor/editor_node.cpp editor/project_manager.cpp
-msgid "New Window"
-msgstr ""
-
-#: editor/editor_node.cpp editor/project_manager.cpp
-msgid "Unnamed Project"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Spins when the editor window redraws.\n"
-"Update Continuously is enabled, which can increase power usage. Click to "
-"disable it."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Spins when the editor window redraws."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Imported resources can't be saved."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-msgid "Error saving resource!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This resource can't be saved because it does not belong to the edited scene. "
-"Make it unique first."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-msgid "Save Resource As..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Can't open file for writing:"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Requested file format unknown:"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Error while saving."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Can't open '%s'. The file could have been moved or deleted."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Error while parsing '%s'."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Unexpected end of file '%s'."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Missing '%s' or its dependencies."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Error while loading '%s'."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Saving Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Analyzing"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Creating Thumbnail"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "This operation can't be done without a tree root."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This scene can't be saved because there is a cyclic instancing inclusion.\n"
-"Please resolve it and then attempt to save again."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
-"be satisfied."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Could not save one or more scenes!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save All Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
-msgid "Can't overwrite scene that is still open!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Can't load MeshLibrary for merging!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Error saving MeshLibrary!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Can't load TileSet for merging!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Error saving TileSet!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"An error occurred while trying to save the editor layout.\n"
-"Make sure the editor's user data path is writable."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Default editor layout overridden.\n"
-"To restore the Default layout to its base settings, use the Delete Layout "
-"option and delete the Default layout."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Layout name not found!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Restored the Default layout to its base settings."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This resource belongs to a scene that was imported, so it's not editable.\n"
-"Please read the documentation relevant to importing scenes to better "
-"understand this workflow."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This resource belongs to a scene that was instanced or inherited.\n"
-"Changes to it won't be kept when saving the current scene."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This resource was imported, so it's not editable. Change its settings in the "
-"import panel and then re-import."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This scene was imported, so changes to it won't be kept.\n"
-"Instancing it or inheriting will allow making changes to it.\n"
-"Please read the documentation relevant to importing scenes to better "
-"understand this workflow."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This is a remote object, so changes to it won't be kept.\n"
-"Please read the documentation relevant to debugging to better understand "
-"this workflow."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "There is no defined scene to run."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save scene before running..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Could not start subprocess!"
-msgstr ""
-
-#: editor/editor_node.cpp editor/filesystem_dock.cpp
-msgid "Open Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Base Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Quick Open..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Quick Open Scene..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Quick Open Script..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save & Reload"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save changes to '%s' before reloading?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save & Close"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save changes to '%s' before closing?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "%s no longer exists! Please specify a new save location."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"The current scene has no root node, but %d modified external resource(s) "
-"were saved anyway."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"A root node is required to save the scene. You can add a root node using the "
-"Scene tree dock."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save Scene As..."
-msgstr ""
-
-#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
-msgid "This operation can't be done without a scene."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Export Mesh Library"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "This operation can't be done without a root node."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Export Tile Set"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "This operation can't be done without a selected node."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Current scene not saved. Open anyway?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Can't undo while mouse buttons are pressed."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Nothing to undo."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Undo: %s"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Can't redo while mouse buttons are pressed."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Nothing to redo."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Redo: %s"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Can't reload a scene that was never saved."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Reload Saved Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"The current scene has unsaved changes.\n"
-"Reload the saved scene anyway? This action cannot be undone."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Quick Run Scene..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Quit"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Yes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Exit the editor?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Project Manager?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save changes to the following scene(s) before reloading?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save & Quit"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save changes to the following scene(s) before quitting?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save changes to the following scene(s) before opening Project Manager?"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This option is deprecated. Situations where refresh must be forced are now "
-"considered a bug. Please report."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Pick a Main Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Close Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Reopen Closed Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: '%s'."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '%s'."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Unable to load addon script from path: '%s'. This might be due to a code "
-"error in that script.\n"
-"Disabling the addon at '%s' to prevent further errors."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Scene '%s' was automatically imported, so it can't be modified.\n"
-"To make changes to it, a new inherited scene can be created."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Error loading scene, it must be inside the project path. Use 'Import' to "
-"open the scene, then save it inside the project path."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene '%s' has broken dependencies:"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Clear Recent Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"No main scene has ever been defined, select one?\n"
-"You can change it later in \"Project Settings\" under the 'application' "
-"category."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Selected scene '%s' does not exist, select a valid one?\n"
-"You can change it later in \"Project Settings\" under the 'application' "
-"category."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Selected scene '%s' is not a scene file, select a valid one?\n"
-"You can change it later in \"Project Settings\" under the 'application' "
-"category."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save Layout"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Delete Layout"
-msgstr ""
-
-#: editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_resource_picker.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
-msgid "Show in FileSystem"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play This Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Close Tab"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Undo Close Tab"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Close Other Tabs"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Close Tabs to the Right"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Close All Tabs"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Switch Scene Tab"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "%d more files or folders"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "%d more folders"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "%d more files"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"Unable to write to file '%s', file in use, locked or lacking permissions."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
-#: servers/arvr/arvr_interface.cpp
-msgid "Interface"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Scene Tabs"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Always Show Close Button"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Resize If Many Tabs"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Minimum Width"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Output"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Always Clear Output On Play"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Always Open Output On Play"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Always Close Output On Stop"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save On Focus Loss"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Save Each Scene On Quit"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Quit Confirmation"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Show Update Spinner"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Update Continuously"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Update Vital Only"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Localize Settings"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Restore Scenes On Load"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Show Thumbnail On Hover"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-msgid "Inspector"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Default Property Name Style"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Default Float Step"
-msgstr ""
-
-#: editor/editor_node.cpp scene/gui/tree.cpp
-msgid "Disable Folding"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Auto Unfold Foreign Scenes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Horizontal Vector2 Editing"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Horizontal Vector Types Editing"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Resources In Current Inspector"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Resources To Open In New Inspector"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Default Color Picker Mode"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
-msgid "Username"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
-msgid "SSH Public Key Path"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
-msgid "SSH Private Key Path"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Dock Position"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_plugin.cpp
-msgid "Distraction Free Mode"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Toggle distraction-free mode."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Add a new scene."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Go to previously opened scene."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Copy Text"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Next tab"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Previous tab"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Filter Files..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Operations with scene files."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "New Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "New Inherited Scene..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Scene..."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Open Recent"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Save Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Convert To..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "MeshLibrary..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "TileSet..."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Undo"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Redo"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Miscellaneous project or scene-wide tools."
-msgstr ""
-
-#: editor/editor_node.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp modules/mono/editor/csharp_project.cpp
-msgid "Project"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Project Settings..."
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
-msgid "Set Up Version Control"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Shut Down Version Control"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Export..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Install Android Build Template..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open User Data Folder"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tools"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Orphan Resource Explorer..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Reload Current Project"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Quit to Project List"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Deploy with Remote Debug"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, using one-click deploy will make the executable "
-"attempt to connect to this computer's IP so the running project can be "
-"debugged.\n"
-"This option is intended to be used for remote debugging (typically with a "
-"mobile device).\n"
-"You don't need to enable it to use the GDScript debugger locally."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Small Deploy with Network Filesystem"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, using one-click deploy for Android will only "
-"export an executable without the project data.\n"
-"The filesystem will be provided from the project by the editor over the "
-"network.\n"
-"On Android, deploying will use the USB cable for faster performance. This "
-"option speeds up testing for projects with large assets."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Visible Collision Shapes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, collision shapes and raycast nodes (for 2D and "
-"3D) will be visible in the running project."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Visible Navigation"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, navigation meshes and polygons will be visible "
-"in the running project."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Force Shader Fallbacks"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, shaders will be used in their fallback form "
-"(either visible via an ubershader or hidden) during all the run time.\n"
-"This is useful for verifying the look and performance of fallbacks, which "
-"are normally displayed briefly.\n"
-"Asynchronous shader compilation must be enabled in the project settings for "
-"this option to make a difference."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Synchronize Scene Changes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, any changes made to the scene in the editor "
-"will be replicated in the running project.\n"
-"When used remotely on a device, this is more efficient when the network "
-"filesystem option is enabled."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Synchronize Script Changes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"When this option is enabled, any script that is saved will be reloaded in "
-"the running project.\n"
-"When used remotely on a device, this is more efficient when the network "
-"filesystem option is enabled."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Editor Settings..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Editor Layout"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Take Screenshot"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Screenshots are stored in the Editor Data/Settings Folder."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Toggle Fullscreen"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Editor Data/Settings Folder"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Editor Data Folder"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Editor Settings Folder"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Manage Editor Features..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Manage Export Templates..."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Online Documentation"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Questions & Answers"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Report a Bug"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Suggest a Feature"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Send Docs Feedback"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
-msgid "Community"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "About Godot"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Support Godot Development"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play the project."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Pause the scene execution for debugging."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Pause Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Stop the scene."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play the edited scene."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play custom scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Play Custom Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Changing the video driver requires restarting the editor."
-msgstr ""
-
-#: editor/editor_node.cpp editor/project_settings_editor.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Save & Restart"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Update All Changes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Update Vital Changes"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Hide Update Spinner"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/fileserver/editor_file_server.cpp
-#: modules/fbx/editor_scene_importer_fbx.cpp
-msgid "FileSystem"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Expand Bottom Panel"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Don't Save"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Android build template is missing, please install relevant templates."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Manage Templates"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Install from file"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Select android sources file"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"This will set up your project for custom Android builds by installing the "
-"source template to \"res://android/build\".\n"
-"You can then apply modifications and build your own custom APK on export "
-"(adding modules, changing the AndroidManifest.xml, etc.).\n"
-"Note that in order to make custom builds instead of using pre-built APKs, "
-"the \"Use Custom Build\" option should be enabled in the Android export "
-"preset."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"The Android build template is already installed in this project and it won't "
-"be overwritten.\n"
-"Remove the \"res://android/build\" directory manually before attempting this "
-"operation again."
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Import Templates From ZIP File"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Template Package"
-msgstr ""
-
-#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
-msgid "Export Library"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Merge With Existing"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Apply MeshInstance Transforms"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open & Run a Script"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid ""
-"The following files are newer on disk.\n"
-"What action should be taken?"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Reload"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Resave"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "New Inherited"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Load Errors"
-msgstr ""
-
-#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Select"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Select Current"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open 2D Editor"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open 3D Editor"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open Script Editor"
-msgstr ""
-
-#: editor/editor_node.cpp editor/project_manager.cpp
-msgid "Open Asset Library"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open the next Editor"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Open the previous Editor"
-msgstr ""
-
-#: editor/editor_node.h
-msgid "Warning!"
-msgstr ""
-
-#: editor/editor_path.cpp
-msgid "No sub-resources found."
-msgstr ""
-
-#: editor/editor_path.cpp
-msgid "Open a list of sub-resources."
-msgstr ""
-
-#: editor/editor_plugin.cpp
-msgid "Creating Mesh Previews"
-msgstr ""
-
-#: editor/editor_plugin.cpp
-msgid "Thumbnail..."
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp
-msgid "Main Script:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp
-msgid "Edit Plugin"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp
-msgid "Installed Plugins:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: scene/2d/remote_transform_2d.cpp scene/3d/remote_transform.cpp
-msgid "Update"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-#: platform/uwp/export/export.cpp
-msgid "Version"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp
-msgid "Author"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Measure:"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Frame Time (ms)"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Average Time (ms)"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Frame %"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Physics Frame %"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Inclusive"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Self"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid ""
-"Inclusive: Includes time from other functions called by this function.\n"
-"Use this to spot bottlenecks.\n"
-"\n"
-"Self: Only count the time spent in the function itself, not in other "
-"functions called by that function.\n"
-"Use this to find individual functions to optimize."
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Frame #:"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Calls"
-msgstr ""
-
-#: editor/editor_profiler.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Debugger"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Profiler Frame History Size"
-msgstr ""
-
-#: editor/editor_profiler.cpp
-msgid "Profiler Frame Max Functions"
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid "Edit Text:"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/script_create_dialog.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "On"
-msgstr ""
-
-#: editor/editor_properties.cpp modules/gridmap/grid_map.cpp
-#: scene/2d/collision_object_2d.cpp scene/2d/tile_map.cpp
-#: scene/3d/collision_object.cpp scene/3d/soft_body.cpp
-#: scene/main/canvas_layer.cpp
-msgid "Layer"
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid "Bit %d, value %d"
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid "[Empty]"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/plugins/root_motion_editor_plugin.cpp
-msgid "Assign..."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid "Invalid RID"
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
-"Can't create a ViewportTexture on resources saved as a file.\n"
-"Resource needs to belong to a scene."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
-"Can't create a ViewportTexture on this resource because it's not set as "
-"local to scene.\n"
-"Please switch on the 'local to scene' property on it (and all resources "
-"containing it up to a node)."
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Pick a Viewport"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Selected node is not a Viewport!"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Item"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "New Key:"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "New Value:"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Add Key/Value Pair"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp
-msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_resource_picker.cpp
-msgid "Quick Load"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp editor/property_editor.cpp
-msgid "Convert to %s"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp editor/plugins/theme_editor_plugin.cpp
-#: modules/visual_script/visual_script_flow_control.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Base Type"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp
-msgid "Edited Resource"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp scene/gui/line_edit.cpp
-#: scene/gui/slider.cpp scene/gui/spin_box.cpp
-msgid "Editable"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr ""
-
-#: editor/editor_resource_picker.cpp
-msgid "Script Owner"
-msgstr ""
-
-#: editor/editor_run_native.cpp
-msgid ""
-"No runnable export preset found for this platform.\n"
-"Please add a runnable preset in the Export menu or define an existing preset "
-"as runnable."
-msgstr ""
-
-#: editor/editor_run_script.cpp
-msgid "Write your logic in the _run() method."
-msgstr ""
-
-#: editor/editor_run_script.cpp
-msgid "There is an edited scene already."
-msgstr ""
-
-#: editor/editor_run_script.cpp
-msgid "Couldn't instance script:"
-msgstr ""
-
-#: editor/editor_run_script.cpp
-msgid "Did you forget the 'tool' keyword?"
-msgstr ""
-
-#: editor/editor_run_script.cpp
-msgid "Couldn't run script:"
-msgstr ""
-
-#: editor/editor_run_script.cpp
-msgid "Did you forget the '_run' method?"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Editor Language"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Display Scale"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Custom Display Scale"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Main Font Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Code Font Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Font Antialiased"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Font Hinting"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Main Font"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Main Font Bold"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Code Font"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Dim Editor On Dialog Popup"
-msgstr ""
-
-#: editor/editor_settings.cpp main/main.cpp
-msgid "Low Processor Mode Sleep (µsec)"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Unfocused Low Processor Mode Sleep (µsec)"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Separate Distraction Mode"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Automatically Open Screenshots"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Max Array Dictionary Items Per Page"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp scene/gui/control.cpp
-#: scene/register_scene_types.cpp
-msgid "Theme"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/import_dock.cpp
-msgid "Preset"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Icon And Font Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Base Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Accent Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/environment.cpp
-msgid "Contrast"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Relationship Line Opacity"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Highlight Tabs"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Border Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Use Graph Node Headers"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Additional Spacing"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Custom Theme"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Script Button"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Directories"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Autoscan Project Path"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Default Project Path"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "On Save"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Compress Binary Resources"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Safe Save On Backup Then Rename"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "File Dialog"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Thumbnail Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Docks"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Scene Tree"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Start Create Dialog Fully Expanded"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Always Show Folders"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Property Editor"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Auto Refresh Interval"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Subresource Hue Tint"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Color Theme"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/3d/label_3d.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Line Spacing"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_text_editor.cpp
-#: modules/gdscript/editor/gdscript_highlighter.cpp
-msgid "Highlighting"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Syntax Highlighting"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Highlight All Occurrences"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Highlight Current Line"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_text_editor.cpp
-msgid "Highlight Type Safe Lines"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Indent"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_text_editor.cpp
-msgid "Auto Indent"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Convert Indent On Save"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Draw Tabs"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Draw Spaces"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
-msgid "Navigation"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Smooth Scrolling"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "V Scroll Speed"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Minimap"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Minimap Width"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Mouse Extra Buttons Navigate History"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Appearance"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-msgid "Show Line Numbers"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Line Numbers Zero Padded"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Bookmark Gutter"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Breakpoint Gutter"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Info Gutter"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Code Folding"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Word Wrap"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Line Length Guidelines"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Line Length Guideline Soft Column"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Line Length Guideline Hard Column"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Script List"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Members Overview"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Files"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Trim Trailing Whitespace On Save"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Autosave Interval Secs"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Restore Scripts On Load"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Auto Reload And Parse Scripts On Save"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Auto Reload Scripts On External Change"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Create Signal Callbacks"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Sort Members Outline Alphabetically"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Cursor"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Scroll Past End Of File"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Block Caret"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Caret Blink"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Caret Blink Speed"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Right Click Moves Caret"
-msgstr ""
-
-#: editor/editor_settings.cpp modules/gdscript/gdscript.cpp
-#: modules/gdscript/gdscript_editor.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Completion"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Idle Parse Delay"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Auto Brace Complete"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Code Complete Delay"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Put Callhint Tooltip Below Current Line"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Callhint Tooltip Offset"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Complete File Paths"
-msgstr ""
-
-#: editor/editor_settings.cpp modules/gdscript/gdscript_editor.cpp
-msgid "Add Type Hints"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Use Single Quotes"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Show Help Index"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Help Font Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Help Source Font Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Help Title Font Size"
-msgstr ""
-
-#: editor/editor_settings.cpp modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Grid Map"
-msgstr ""
-
-#: editor/editor_settings.cpp modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Pick Distance"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/tile_map_editor_plugin.cpp
-msgid "Preview Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Primary Grid Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Secondary Grid Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Selection Box Color"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/path_editor_plugin.cpp
-#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
-msgid "3D Gizmos"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/path_editor_plugin.cpp
-#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
-msgid "Gizmo Colors"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Instanced"
-msgstr ""
-
-#: editor/editor_settings.cpp modules/gltf/gltf_node.cpp
-#: scene/3d/physics_body.cpp
-msgid "Joint"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/2d/collision_shape_2d.cpp
-#: scene/2d/cpu_particles_2d.cpp scene/2d/touch_screen_button.cpp
-#: scene/3d/collision_shape.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/occluder.cpp scene/3d/spring_arm.cpp
-#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
-#: servers/physics_server.cpp
-msgid "Shape"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Primary Grid Steps"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid Division Level Max"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid Division Level Min"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid Division Level Bias"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid XZ Plane"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid XY Plane"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Grid YZ Plane"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Default FOV"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Default Z Near"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Default Z Far"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Lightmap Baking Number Of CPU Threads"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Navigation Scheme"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Invert Y Axis"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Invert X Axis"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Zoom Style"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Emulate Numpad"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Emulate 3 Button Mouse"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Orbit Modifier"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Pan Modifier"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Zoom Modifier"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-msgid "Warped Mouse Panning"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Navigation Feel"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Orbit Sensitivity"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Orbit Inertia"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Translation Inertia"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Zoom Inertia"
-msgstr ""
-
-#: editor/editor_settings.cpp
-#, fuzzy
-msgid "Freelook"
-msgstr "Amcix"
-
-#: editor/editor_settings.cpp
-msgid "Freelook Navigation Scheme"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook Sensitivity"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook Inertia"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook Base Speed"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook Activation Modifier"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Freelook Speed Zoom Link"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/tile_map_editor_plugin.cpp
-msgid "Grid Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Guides Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Smart Snapping Line Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone Width"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone Color 1"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone Color 2"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone Selected Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone IK Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone Outline Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Bone Outline Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Viewport Border Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Constrain Editor View"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Simple Panning"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Scroll To Pan"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Pan Speed"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Poly Editor"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Point Grab Radius"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Previous Outline"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/scene_tree_dock.cpp
-msgid "Autorename Animation Tracks"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Default Create Bezier Tracks"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Default Create Reset Tracks"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Onion Layers Past Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Onion Layers Future Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Visual Editors"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Minimap Opacity"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Window Placement"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/2d/back_buffer_copy.cpp scene/2d/sprite.cpp
-#: scene/2d/visibility_notifier_2d.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/control.cpp
-msgid "Rect"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Rect Custom Position"
-msgstr ""
-
-#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
-msgid "Screen"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Auto Save"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Save Before Running"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Font Size"
-msgstr ""
-
-#: editor/editor_settings.cpp
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-msgid "Remote Host"
-msgstr ""
-
-#: editor/editor_settings.cpp
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-msgid "Remote Port"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Editor SSL Certificates"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Project Manager"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Sorting Order"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Symbol Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Keyword Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Control Flow Keyword Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Base Type Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Engine Type Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "User Type Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Comment Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "String Color"
-msgstr ""
-
-#: editor/editor_settings.cpp platform/javascript/export/export.cpp
-#: platform/uwp/export/export.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Background Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Completion Background Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Completion Selected Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Completion Existing Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Completion Scroll Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Completion Font Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Text Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Line Number Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Safe Line Number Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Caret Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Caret Background Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Text Selected Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Selection Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Brace Mismatch Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Current Line Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Line Length Guideline Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Word Highlighted Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Number Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Function Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Member Variable Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Mark Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Bookmark Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Breakpoint Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Executing Line Color"
-msgstr ""
-
-#: editor/editor_settings.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Code Folding Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Search Result Color"
-msgstr ""
-
-#: editor/editor_settings.cpp
-msgid "Search Result Border Color"
-msgstr ""
-
-#: editor/editor_spin_slider.cpp
-msgid "Hold %s to round to integers. Hold Shift for more precise changes."
-msgstr ""
-
-#: editor/editor_spin_slider.cpp scene/gui/button.cpp
-msgid "Flat"
-msgstr ""
-
-#: editor/editor_spin_slider.cpp
-msgid "Hide Slider"
-msgstr ""
-
-#: editor/editor_sub_scene.cpp
-msgid "Select Node(s) to Import"
-msgstr ""
-
-#: editor/editor_sub_scene.cpp editor/project_manager.cpp
-msgid "Browse"
-msgstr ""
-
-#: editor/editor_sub_scene.cpp
-msgid "Scene Path:"
-msgstr ""
-
-#: editor/editor_sub_scene.cpp
-msgid "Import From Node:"
-msgstr ""
-
-#. TRANSLATORS: %s refers to the name of a version control system (e.g. "Git").
-#: editor/editor_vcs_interface.cpp
-msgid "%s Error"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Open the folder containing these templates."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall these templates."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "There are no mirrors available."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Retrieving the mirror list..."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Starting the download..."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Connecting to the mirror..."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Can't resolve the requested address."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Can't connect to the mirror."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "No response from the mirror."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Request ended up in a redirect loop."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Request failed:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Download complete; extracting templates..."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Best available mirror"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Disconnected"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Resolving"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Can't Connect"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Connected"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Downloading"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Connection Error"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Can't open the export templates file."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside the export templates file: %s."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside the export templates file."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for extracting templates:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Remove templates for the version '%s'?"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Uncompressing Android Build Sources"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Current Version:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Export templates are missing. Download them or install from a file."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Export templates are installed and ready to be used."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Open Folder"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Open the folder containing installed templates for the current version."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall templates for the current version."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Download from:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Open in Web Browser"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Copy Mirror URL"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Download and Install"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid ""
-"Download and install templates for the current version from the best "
-"possible mirror."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Install from File"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Install templates from a local file."
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/find_in_files.cpp
-#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Cancel the download of the templates."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Other Installed Versions:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall Template"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid ""
-"The templates will continue to download.\n"
-"You may experience a short editor freeze when they finish."
-msgstr ""
-
-#: editor/fileserver/editor_file_server.cpp
-msgid "File Server"
-msgstr ""
-
-#: editor/fileserver/editor_file_server.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
-msgid "Password"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Favorites"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Status: Import of file failed. Please fix file and reimport manually."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid ""
-"Importing has been disabled for this file, so it can't be opened for editing."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Cannot move/rename resources root."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Error moving:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Error duplicating:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/scene_tree_editor.cpp
-msgid "No name provided."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Provided name contains invalid characters."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "A file or folder with this name already exists."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Name contains invalid characters."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid ""
-"This file extension is not recognized by the editor.\n"
-"If you want to rename it anyway, use your operating system's file manager.\n"
-"After renaming to an unknown extension, the file won't be shown in the "
-"editor anymore."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid ""
-"The following files or folders conflict with items in the target location "
-"'%s':\n"
-"\n"
-"%s\n"
-"\n"
-"Do you wish to overwrite them?"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Renaming file:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Renaming folder:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Duplicating file:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Duplicating folder:"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "New Inherited Scene"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Set As Main Scene"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Open Scenes"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Instance"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Add to Favorites"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Remove from Favorites"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "View Owners..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Move To..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "New Scene..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
-msgid "New Script..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "New Resource..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Expand All"
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Collapse All"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort files"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort by Name (Ascending)"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort by Name (Descending)"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort by Type (Ascending)"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort by Type (Descending)"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort by Last Modified"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Sort by First Modified"
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-msgid "Duplicate..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-msgid "Rename..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Focus the search box"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Previous Folder/File"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Next Folder/File"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Re-Scan Filesystem"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Toggle Split Mode"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Search files"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid ""
-"Scanning Files,\n"
-"Please Wait..."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Move"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/project_manager.cpp editor/rename_dialog.cpp
-#: editor/scene_tree_dock.cpp
-msgid "Rename"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Overwrite"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Create Scene"
-msgstr ""
-
-#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Create Script"
-msgstr ""
-
-#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Find in Files"
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Find:"
-msgstr ""
-
-#: editor/find_in_files.cpp editor/rename_dialog.cpp
-msgid "Replace:"
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Folder:"
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Filters:"
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid ""
-"Include the files with the following extensions. Add or remove them in "
-"ProjectSettings."
-msgstr ""
-
-#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-msgid "Find..."
-msgstr ""
-
-#: editor/find_in_files.cpp editor/plugins/script_text_editor.cpp
-msgid "Replace..."
-msgstr ""
-
-#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp
-msgid "Replace in Files"
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Replace All (NO UNDO)"
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Searching..."
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "%d match in %d file."
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "%d matches in %d file."
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "%d matches in %d files."
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Add to Group"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Remove from Group"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Group name already exists."
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Invalid group name."
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Rename Group"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Delete Group"
-msgstr ""
-
-#: editor/groups_editor.cpp editor/node_dock.cpp
-msgid "Groups"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Nodes Not in Group"
-msgstr ""
-
-#: editor/groups_editor.cpp editor/scene_tree_dock.cpp
-#: editor/scene_tree_editor.cpp
-msgid "Filter nodes"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Nodes in Group"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Empty groups will be automatically removed."
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Group Editor"
-msgstr ""
-
-#: editor/groups_editor.cpp
-msgid "Manage Groups"
-msgstr ""
-
-#: editor/import/editor_import_collada.cpp
-msgid "Collada"
-msgstr ""
-
-#: editor/import/editor_import_collada.cpp
-msgid "Use Ambient"
-msgstr ""
-
-#: editor/import/resource_importer_bitmask.cpp
-msgid "Create From"
-msgstr ""
-
-#: editor/import/resource_importer_bitmask.cpp
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
-msgstr ""
-
-#: editor/import/resource_importer_csv_translation.cpp
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_scene.cpp
-#: editor/import/resource_importer_texture.cpp
-#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
-msgid "Compress"
-msgstr ""
-
-#: editor/import/resource_importer_csv_translation.cpp
-msgid "Delimiter"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-msgid "ColorCorrect"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-msgid "No BPTC If RGB"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
-#: scene/resources/material.cpp scene/resources/particles_material.cpp
-#: scene/resources/texture.cpp scene/resources/visual_shader.cpp
-msgid "Flags"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
-#: scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
-msgid "Filter"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp
-msgid "Mipmaps"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp
-msgid "Anisotropic"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: editor/import/resource_importer_texture.cpp
-msgid "sRGB"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-msgid "Slices"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Horizontal"
-msgstr ""
-
-#: editor/import/resource_importer_layered_texture.cpp
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Vertical"
-msgstr ""
-
-#: editor/import/resource_importer_obj.cpp
-msgid "Generate Tangents"
-msgstr ""
-
-#: editor/import/resource_importer_obj.cpp
-msgid "Scale Mesh"
-msgstr ""
-
-#: editor/import/resource_importer_obj.cpp
-msgid "Offset Mesh"
-msgstr ""
-
-#: editor/import/resource_importer_obj.cpp
-#: editor/import/resource_importer_scene.cpp
-msgid "Octahedral Compression"
-msgstr ""
-
-#: editor/import/resource_importer_obj.cpp
-msgid "Optimize Mesh Flags"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import as Single Scene"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Animations"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Materials"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Objects"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Objects+Materials"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Objects+Animations"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Materials+Animations"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import with Separate Objects+Materials+Animations"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import as Multiple Scenes"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Import as Multiple Scenes+Materials"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
-#: scene/3d/physics_joint.cpp
-msgid "Nodes"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Root Type"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Root Name"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Root Scale"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Custom Script"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
-msgid "Storage"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Use Legacy Names"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Keep On Reimport"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Ensure Tangents"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Light Baking"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Lightmap Texel Size"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Use Named Skins"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "External Files"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Store In Subdir"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Filter Script"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Keep Custom Tracks"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Optimizer"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-#: editor/plugins/item_list_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
-#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
-#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
-#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
-#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/skeleton.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp scene/resources/material.cpp
-msgid "Enabled"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Max Linear Error"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Max Angular Error"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-#, fuzzy
-msgid "Max Angle"
-msgstr "Azal:"
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Remove Unused Tracks"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Clips"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/particles.cpp scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Import Scene"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Importing Scene..."
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Generating Lightmaps"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Running Custom Script..."
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Couldn't load post-import script:"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Invalid/broken script for post-import (check console):"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Error running post-import script:"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Did you return a Node-derived object in the `post_import()` method?"
-msgstr ""
-
-#: editor/import/resource_importer_scene.cpp
-msgid "Saving..."
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "2D, Detect 3D"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "2D Pixel"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "HDR Mode"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "BPTC LDR"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
-#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Process"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Fix Alpha Border"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Premult Alpha"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Hdr As Srgb"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Invert Color"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Normal Map Invert Y"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Size Limit"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "Detect 3D"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid "SVG"
-msgstr ""
-
-#: editor/import/resource_importer_texture.cpp
-msgid ""
-"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
-"texture will not display correctly on PC."
-msgstr ""
-
-#: editor/import/resource_importer_texture_atlas.cpp
-msgid "Atlas File"
-msgstr ""
-
-#: editor/import/resource_importer_texture_atlas.cpp
-msgid "Import Mode"
-msgstr ""
-
-#: editor/import/resource_importer_texture_atlas.cpp
-msgid "Crop To Region"
-msgstr ""
-
-#: editor/import/resource_importer_texture_atlas.cpp
-msgid "Trim Alpha Border From Region"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-msgid "8 Bit"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp main/main.cpp
-#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-#, fuzzy
-msgid "Max Rate"
-msgstr "Azal:"
-
-#: editor/import/resource_importer_wav.cpp
-#, fuzzy
-msgid "Max Rate Hz"
-msgstr "Azal:"
-
-#: editor/import/resource_importer_wav.cpp
-msgid "Trim"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-msgid "Normalize"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Mode"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Begin"
-msgstr ""
-
-#: editor/import/resource_importer_wav.cpp
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop End"
-msgstr ""
-
-#: editor/import_defaults_editor.cpp
-msgid "Select Importer"
-msgstr ""
-
-#: editor/import_defaults_editor.cpp
-msgid "Importer:"
-msgstr ""
-
-#: editor/import_defaults_editor.cpp
-msgid "Reset to Defaults"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Keep File (No Import)"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "%d Files"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Set as Default for '%s'"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Clear Default for '%s'"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Reimport"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid ""
-"You have pending changes that haven't been applied yet. Click Reimport to "
-"apply changes made to the import options.\n"
-"Selecting another resource in the FileSystem dock without clicking Reimport "
-"first will discard changes made in the Import dock."
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Import As:"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Save Scenes, Re-Import, and Restart"
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid "Changing the type of an imported file requires editor restart."
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid ""
-"WARNING: Assets exist that use this resource, they may stop loading properly."
-msgstr ""
-
-#: editor/import_dock.cpp
-msgid ""
-"Select a resource file in the filesystem or in the inspector to adjust "
-"import settings."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Failed to load resource."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Property Name Style"
-msgstr ""
-
-#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Capitalized"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Localized"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Localization not available for current language."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Copy Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Paste Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Save As..."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Extra resource options."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Edit Resource from Clipboard"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Make Resource Built-In"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Go to the previous edited object in history."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Go to the next edited object in history."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "History of recently edited objects."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Open documentation for this object."
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Filter properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Manage object properties."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Changes may be lost!"
-msgstr ""
-
-#: editor/multi_node_edit.cpp
-msgid "MultiNode Set"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Select a single node to edit its signals and groups."
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-msgid "Edit a Plugin"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-msgid "Create a Plugin"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-msgid "Plugin Name:"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-msgid "Subfolder:"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Author:"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
-msgid "Language:"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-msgid "Script Name:"
-msgstr ""
-
-#: editor/plugin_config_dialog.cpp
-msgid "Activate now?"
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Polygon"
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Create points."
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid ""
-"Edit points.\n"
-"LMB: Move Point\n"
-"RMB: Erase Point"
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Erase points."
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Edit Polygon"
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Insert Point"
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Edit Polygon (Remove Point)"
-msgstr ""
-
-#: editor/plugins/abstract_polygon_2d_editor.cpp
-msgid "Remove Polygon And Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Add Animation"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Add %s"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Load..."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Move Node Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Change BlendSpace1D Limits"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Change BlendSpace1D Labels"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "This type of node can't be used. Only root nodes are allowed."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Add Node Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Add Animation Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Remove BlendSpace1D Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-msgid "Move BlendSpace1D Node Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid ""
-"AnimationTree is inactive.\n"
-"Activate to enable playback, check node warnings if activation fails."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Set the blending position within the space"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Select and move points, create points with RMB."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp scene/gui/graph_edit.cpp
-msgid "Enable snap and show grid."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Open Editor"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Open Animation Node"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Triangle already exists."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Add Triangle"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Change BlendSpace2D Limits"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Change BlendSpace2D Labels"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Remove BlendSpace2D Point"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Remove BlendSpace2D Triangle"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "BlendSpace2D does not belong to an AnimationTree node."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "No triangles exist, so no blending can take place."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Toggle Auto Triangles"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Create triangles by connecting points."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Erase points and triangles."
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-msgid "Generate blend triangles automatically (instead of manually)"
-msgstr ""
-
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Blend:"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed:"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Edit Filters"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Output node can't be added to the blend tree."
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Add Node to BlendTree"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Node Moved"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Unable to connect, port may be in use or connection may be invalid."
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Nodes Connected"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Nodes Disconnected"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Set Animation"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Delete Node"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
-msgid "Delete Node(s)"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Toggle Filter On/Off"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Change Filter"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "No animation player set, so unable to retrieve track names."
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Player path set is invalid, so unable to retrieve track names."
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/root_motion_editor_plugin.cpp
-msgid ""
-"Animation player has no valid root node path, so unable to retrieve track "
-"names."
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Anim Clips"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Audio Clips"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Functions"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Node Renamed"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Add Node..."
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/root_motion_editor_plugin.cpp
-msgid "Edit Filtered Tracks:"
-msgstr ""
-
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Enable Filtering"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Toggle Autoplay"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "New Animation Name:"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "New Anim"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Change Animation Name:"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Delete Animation?"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Remove Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Invalid animation name!"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Animation name already exists!"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Rename Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Duplicate Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Blend Next Changed"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Change Blend Time"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Load Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "No animation resource on clipboard!"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Pasted Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Paste Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Play selected animation backwards from current pos. (A)"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Play selected animation backwards from end. (Shift+A)"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Stop animation playback. (S)"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Play selected animation from start. (Shift+D)"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Play selected animation from current pos. (D)"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Animation position (in seconds)."
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Scale animation playback globally for the node."
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Animation Tools"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Paste As Reference"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Edit Transitions..."
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Open in Inspector"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Display list of animations in player."
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Autoplay on Load"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Enable Onion Skinning"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Onion Skinning Options"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Directions"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Past"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Future"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp modules/csg/csg_shape.cpp
-#: scene/3d/collision_polygon.cpp scene/main/scene_tree.cpp
-#: scene/resources/material.cpp scene/resources/primitive_meshes.cpp
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Depth"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "1 step"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "2 steps"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "3 steps"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Differences Only"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Force White Modulate"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Include Gizmos (3D)"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Pin AnimationPlayer"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Create New Animation"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Animation Name:"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-msgid "Error!"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Blend Times:"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Next (Auto Queue):"
-msgstr ""
-
-#: editor/plugins/animation_player_editor_plugin.cpp
-msgid "Cross-Animation Blend Times"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Move Node"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition exists!"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Add Transition"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Node"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "End"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Immediate"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-#: scene/animation/animation_blend_tree.cpp
-msgid "Sync"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "At End"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: scene/3d/vehicle_body.cpp
-msgid "Travel"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Start and end nodes are needed for a sub-transition."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "No playback resource set at path: %s."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Node Removed"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition Removed"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Set Start Node (Autoplay)"
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid ""
-"Select and move nodes.\n"
-"RMB to add new nodes.\n"
-"Shift+LMB to create connections."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Create new nodes."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Connect nodes."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Remove selected node or transition."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Toggle autoplay this animation on start, restart or seek to zero."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Set the end animation. This is useful for sub-transitions."
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
-msgstr ""
-
-#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Play Mode:"
-msgstr ""
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "AnimationTree"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "New name:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Fade In (s):"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Fade Out (s):"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader.cpp
-msgid "Blend"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Auto Restart:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Restart (s):"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Random Restart (s):"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Start!"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Amount:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Blend 0:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Blend 1:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "X-Fade Time (s):"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Input"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Clear Auto-Advance"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Set Auto-Advance"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Delete Input"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Animation tree is valid."
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Animation tree is invalid."
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Animation Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "OneShot Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Mix Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Blend2 Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Blend3 Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Blend4 Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "TimeScale Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "TimeSeek Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Transition Node"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Import Animations..."
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Edit Node Filters"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
-msgid "Filters..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp scene/main/http_request.cpp
-msgid "Use Threads"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Contents:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "View Files"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect to host:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Cannot save response to:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Write error."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Redirect loop."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, timeout"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Timeout."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed SHA-256 hash check"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Downloading (%s / %s)..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Downloading..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Resolving..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Error making request"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Install..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download Error"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Available URLs"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Recently Updated"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Least Recently Updated"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Name (A-Z)"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Name (Z-A)"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "License (A-Z)"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "License (Z-A)"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Loading..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgctxt "Pagination"
-msgid "First"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgctxt "Pagination"
-msgid "Previous"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgctxt "Pagination"
-msgid "Next"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgctxt "Pagination"
-msgid "Last"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Search templates, projects, and demos"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Search assets (excluding templates, projects, and demos)"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Import..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Plugins..."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
-msgid "Sort:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Category:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Support"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed to get repository configuration."
-msgstr ""
-
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr ""
-
-#: editor/plugins/audio_stream_editor_plugin.cpp
-msgid "Audio Preview Play/Pause"
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid ""
-"Can't determine a save path for lightmap images.\n"
-"Save your scene and try again."
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
-"In Baked Light' and 'Generate Lightmap' flags are on."
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid "Failed creating lightmap images, make sure path is writable."
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid "Failed determining lightmap size. Maximum lightmap size too small?"
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid ""
-"Some mesh is invalid. Make sure the UV2 channel values are contained within "
-"the [0.0,1.0] square region."
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid ""
-"Godot editor was built without ray tracing support, lightmaps can't be baked."
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid "Bake Lightmaps"
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid "LightMap Bake"
-msgstr ""
-
-#: editor/plugins/baked_lightmap_editor_plugin.cpp
-msgid "Select lightmap bake file:"
-msgstr ""
-
-#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp scene/resources/mesh_library.cpp
-msgid "Preview"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Configure Snap"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Grid Offset:"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Grid Step:"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Primary Line Every:"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "steps"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Rotation Offset:"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Rotation Step:"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Scale Step:"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Move Vertical Guide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Create Vertical Guide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Remove Vertical Guide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Move Horizontal Guide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Create Horizontal Guide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Remove Horizontal Guide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Create Horizontal and Vertical Guides"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set CanvasItem \"%s\" Pivot Offset to (%d, %d)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Rotate %d CanvasItems"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Rotate CanvasItem \"%s\" to %d degrees"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Move CanvasItem \"%s\" Anchor"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Scale Node2D \"%s\" to (%s, %s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Resize Control \"%s\" to (%d, %d)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Scale %d CanvasItems"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Scale CanvasItem \"%s\" to (%s, %s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Move %d CanvasItems"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Move CanvasItem \"%s\" to (%d, %d)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Locked"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Grouped"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid ""
-"Children of containers have their anchors and margins values overridden by "
-"their parent."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Presets for the anchors and margins values of a Control node."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid ""
-"When active, moving Control nodes changes their anchors instead of their "
-"margins."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
-msgid "Top Left"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
-msgid "Top Right"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
-msgid "Bottom Right"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
-msgid "Bottom Left"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Center Left"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Center Top"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Center Right"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Center Bottom"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Center"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Left Wide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Top Wide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Right Wide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Bottom Wide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "VCenter Wide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "HCenter Wide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Full Rect"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Keep Ratio"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchors only"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors and Margins"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Project Camera Override\n"
-"Overrides the running project's camera with the editor viewport camera."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Project Camera Override\n"
-"No project instance running. Run the project from the editor to use this "
-"feature."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Lock Selected"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Unlock Selected"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Group Selected"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Ungroup Selected"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Paste Pose"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Clear Guides"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Create Custom Bone(s) from Node(s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Clear Bones"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Make IK Chain"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Clear IK Chain"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid ""
-"Warning: Children of a container get their position and size determined only "
-"by their parent."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/texture_region_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
-msgid "Zoom Reset"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp scene/gui/item_list.cpp
-#: scene/gui/tree.cpp
-msgid "Select Mode"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Drag: Rotate selected node around pivot."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move selected node."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Scale selected node."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "V: Set selected node's pivot position."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "RMB: Add node at position clicked."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Move Mode"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rotate Mode"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scale Mode"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Shift: Scale proportionally."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Show a list of all objects at the position clicked\n"
-"(same as Alt+RMB in select mode)."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Click to change object's rotation pivot."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Pan Mode"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Ruler Mode"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Toggle smart snapping."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Smart Snap"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Toggle grid snapping."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Grid Snap"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snapping Options"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Scale Snap"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Smart Snapping"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap..."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap to Parent"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap to Node Anchor"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap to Node Sides"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap to Node Center"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap to Other Nodes"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap to Guides"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Lock Selected Node(s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Unlock Selected Node(s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Group Selected Node(s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Ungroup Selected Node(s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton Options"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Bones"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Make Custom Bone(s) from Node(s)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Clear Custom Bones"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show When Snapping"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Hide"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Toggle Grid"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Grid"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Helpers"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Rulers"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Guides"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Origin"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Viewport"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Show Group And Lock Icons"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Center Selection"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Frame Selection"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Preview Canvas Scale"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Translation mask for inserting keys."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Rotation mask for inserting keys."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Scale mask for inserting keys."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Insert keys (based on mask)."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid ""
-"Auto insert keys when objects are translated, rotated or scaled (based on "
-"mask).\n"
-"Keys are only added to existing tracks, no new tracks will be created.\n"
-"Keys must be inserted manually for the first time."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Auto Insert Key"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Animation Key and Pose Options"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Insert Key (Existing Tracks)"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Copy Pose"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Clear Pose"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Add Node Here"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Instance Scene Here"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Multiply grid step by 2"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Divide grid step by 2"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Pan View"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 3.125%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 6.25%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 12.5%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 25%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 50%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 100%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 200%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 400%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 800%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom to 1600%"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Adding %s..."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Cannot instantiate multiple nodes without root."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Create Node"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Error instancing scene from %s"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Default Type"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid ""
-"Drag & drop + Shift : Add node as sibling\n"
-"Drag & drop + Alt : Change node type"
-msgstr ""
-
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Create Polygon3D"
-msgstr ""
-
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr ""
-
-#: editor/plugins/collision_shape_2d_editor_plugin.cpp
-msgid "Set Handle"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Load Emission Mask"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/cpu_particles_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Restart"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Clear Emission Mask"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/spatial_editor_gizmos.cpp
-msgid "Particles"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Generated Point Count:"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Emission Mask"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Solid Pixels"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Border Pixels"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Directed Border Pixels"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Capture from Pixel"
-msgstr ""
-
-#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Emission Colors"
-msgstr ""
-
-#: editor/plugins/cpu_particles_editor_plugin.cpp
-msgid "CPUParticles"
-msgstr ""
-
-#: editor/plugins/cpu_particles_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Create Emission Points From Mesh"
-msgstr ""
-
-#: editor/plugins/cpu_particles_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Create Emission Points From Node"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Flat 0"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Flat 1"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp
-msgid "Ease In"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp
-msgid "Ease Out"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Smoothstep"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve Point"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve Tangent"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Load Curve Preset"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Add Point"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Remove Point"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Left Linear"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Right Linear"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Load Preset"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Remove Curve Point"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Toggle Curve Linear Tangent"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Hold Shift to edit tangents individually"
-msgstr ""
-
-#: editor/plugins/curve_editor_plugin.cpp
-msgid "Right click to add point"
-msgstr ""
-
-#: editor/plugins/gi_probe_editor_plugin.cpp
-msgid "Bake GI Probe"
-msgstr ""
-
-#: editor/plugins/gradient_editor_plugin.cpp
-msgid "Gradient Edited"
-msgstr ""
-
-#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
-msgid "Swap GradientTexture2D Fill Points"
-msgstr ""
-
-#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
-msgid "Swap Gradient Fill Points"
-msgstr ""
-
-#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
-msgid "Toggle Grid Snap"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
-#: scene/3d/label_3d.cpp scene/gui/button.cpp scene/gui/dialogs.cpp
-#: scene/gui/label.cpp scene/gui/line_edit.cpp scene/gui/link_button.cpp
-#: scene/gui/rich_text_label.cpp scene/gui/text_edit.cpp
-#: scene/resources/primitive_meshes.cpp
-msgid "Text"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
-#: platform/osx/export/export.cpp platform/windows/export/export.cpp
-#: scene/gui/button.cpp scene/gui/item_list.cpp
-msgid "Icon"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp
-msgid "ID"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Separator"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp
-msgid "Item %d"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp
-msgid "Items"
-msgstr ""
-
-#: editor/plugins/item_list_editor_plugin.cpp
-msgid "Item List Editor"
-msgstr ""
-
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-msgid "Create Occluder Polygon"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh is empty!"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Couldn't create a Trimesh collision shape."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Static Trimesh Body"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "This doesn't work on scene root!"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Trimesh Static Shape"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Can't create a single convex collision shape for the scene root."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Couldn't create a single convex collision shape."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Simplified Convex Shape"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Single Convex Shape"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Can't create multiple convex collision shapes for the scene root."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Couldn't create any collision shapes."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Multiple Convex Shapes"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Navigation Mesh"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Contained Mesh is not of type ArrayMesh."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "UV Unwrap failed, mesh may not be manifold?"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "No mesh to debug."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh has no UV in layer %d."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "MeshInstance lacks a Mesh!"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh has not surface to create outlines from!"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh primitive type is not PRIMITIVE_TRIANGLES!"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Could not create outline!"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Outline"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp modules/csg/csg_shape.cpp
-#: modules/gltf/gltf_mesh.cpp modules/gltf/gltf_node.cpp
-#: scene/2d/mesh_instance_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/mesh_instance.cpp scene/resources/mesh_library.cpp
-#: scene/resources/multimesh.cpp scene/resources/primitive_meshes.cpp
-#: scene/resources/texture.cpp
-msgid "Mesh"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Trimesh Static Body"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid ""
-"Creates a StaticBody and assigns a polygon-based collision shape to it "
-"automatically.\n"
-"This is the most accurate (but slowest) option for collision detection."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Trimesh Collision Sibling"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid ""
-"Creates a polygon-based collision shape.\n"
-"This is the most accurate (but slowest) option for collision detection."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Single Convex Collision Sibling"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid ""
-"Creates a single convex collision shape.\n"
-"This is the fastest (but least accurate) option for collision detection."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Simplified Convex Collision Sibling"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid ""
-"Creates a simplified convex collision shape.\n"
-"This is similar to single collision shape, but can result in a simpler "
-"geometry in some cases, at the cost of accuracy."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Multiple Convex Collision Siblings"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid ""
-"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between a single convex collision and a "
-"polygon-based collision."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Outline Mesh..."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid ""
-"Creates a static outline mesh. The outline mesh will have its normals "
-"flipped automatically.\n"
-"This can be used instead of the SpatialMaterial Grow property when using "
-"that property isn't possible."
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "View UV1"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "View UV2"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Unwrap UV2 for Lightmap/AO"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Outline Mesh"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Outline Size:"
-msgstr ""
-
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "UV Channel Debug"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Remove item %d?"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid ""
-"Update from existing scene?:\n"
-"%s"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "MeshLibrary"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Add Item"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Remove Selected Item"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Import from Scene (Ignore Transforms)"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Import from Scene (Apply Transforms)"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Update from Scene"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Apply without Transforms"
-msgstr ""
-
-#: editor/plugins/mesh_library_editor_plugin.cpp
-msgid "Apply with Transforms"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "No mesh source specified (and no MultiMesh set in node)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "No mesh source specified (and MultiMesh contains no Mesh)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Mesh source is invalid (invalid path)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Mesh source is invalid (not a MeshInstance)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Mesh source is invalid (contains no Mesh resource)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "No surface source specified."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Surface source is invalid (invalid path)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Surface source is invalid (no geometry)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Surface source is invalid (no faces)."
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Select a Source Mesh:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Select a Target Surface:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Populate Surface"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Populate MultiMesh"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Target Surface:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Source Mesh:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "X-Axis"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Y-Axis"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Z-Axis"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Mesh Up Axis:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Random Rotation:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Random Tilt:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Random Scale:"
-msgstr ""
-
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Populate"
-msgstr ""
-
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create Navigation Polygon"
-msgstr ""
-
-#: editor/plugins/particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Convert to CPUParticles"
-msgstr ""
-
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Generating Visibility Rect"
-msgstr ""
-
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Generate Visibility Rect"
-msgstr ""
-
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Can only set point into a ParticlesMaterial process material"
-msgstr ""
-
-#: editor/plugins/particles_2d_editor_plugin.cpp
-msgid "Convert to CPUParticles2D"
-msgstr ""
-
-#: editor/plugins/particles_2d_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Generation Time (sec):"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "The geometry's faces don't contain any area."
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "The geometry doesn't contain any faces."
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "\"%s\" doesn't inherit from Spatial."
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "\"%s\" doesn't contain geometry."
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "\"%s\" doesn't contain face geometry."
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Create Emitter"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Points:"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Surface Points"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Surface Points+Normal (Directed)"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp scene/gui/video_player.cpp
-msgid "Volume"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "A processor material of type 'ParticlesMaterial' is required."
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Generating AABB"
-msgstr ""
-
-#: editor/plugins/particles_editor_plugin.cpp
-msgid "Generate Visibility AABB"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Remove Point from Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Remove Out-Control from Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Remove In-Control from Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Add Point to Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Split Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Move Point in Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Move In-Control in Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Move Out-Control in Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Select Points"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Shift+Drag: Select Control Points"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Click: Add Point"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Left Click: Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Right Click: Delete Point"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-msgid "Select Control Points (Shift+Drag)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Add Point (in empty space)"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Delete Point"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Close Curve"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-#: editor/plugins/theme_editor_preview.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp servers/visual_server.cpp
-msgid "Options"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Mirror Handle Angles"
-msgstr ""
-
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Mirror Handle Lengths"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Curve Point #"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Set Curve Point Position"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Set Curve In Position"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Set Curve Out Position"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Path"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Remove Path Point"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Remove Out-Control Point"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Remove In-Control Point"
-msgstr ""
-
-#: editor/plugins/path_editor_plugin.cpp
-msgid "Split Segment (in curve)"
-msgstr ""
-
-#: editor/plugins/physical_bone_plugin.cpp
-msgid "Move Joint"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid ""
-"The skeleton property of the Polygon2D does not point to a Skeleton2D node"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync Bones"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid ""
-"No texture in this polygon.\n"
-"Set a texture to be able to edit UV."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create UV Map"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid ""
-"Polygon 2D has internal vertices, so it can no longer be edited in the "
-"viewport."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Polygon & UV"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Internal Vertex"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Remove Internal Vertex"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Invalid Polygon (need 3 different vertices)"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Add Custom Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Remove Custom Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Transform UV Map"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Transform Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint Bone Weights"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Open Polygon 2D UV editor."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Polygon 2D UV Editor"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
-msgid "UV"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/line_2d.cpp scene/3d/cpu_particles.cpp scene/3d/portal.cpp
-#: scene/3d/room.cpp scene/resources/convex_polygon_shape.cpp
-#: scene/resources/convex_polygon_shape_2d.cpp
-msgid "Points"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
-msgid "Polygons"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp scene/3d/skeleton.cpp
-msgid "Bones"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Points"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Command: Rotate"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Shift: Move All"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Shift+Command: Scale"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Ctrl: Rotate"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Shift+Ctrl: Scale"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Move Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Rotate Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Scale Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create a custom polygon. Enables custom polygon rendering."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid ""
-"Remove a custom polygon. If none remain, custom polygon rendering is "
-"disabled."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Paint weights with specified intensity."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Unpaint weights with specified intensity."
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Radius:"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Copy Polygon to UV"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Copy UV to Polygon"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Clear UV"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Grid Settings"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp modules/csg/csg_shape.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Snap"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Enable Snap"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Configure Grid:"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Grid Offset X:"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Grid Offset Y:"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Grid Step X:"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Grid Step Y:"
-msgstr ""
-
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Sync Bones to Polygon"
-msgstr ""
-
-#: editor/plugins/ray_cast_2d_editor_plugin.cpp
-msgid "Set cast_to"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ERROR: Couldn't load resource!"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "Add Resource"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "Rename Resource"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Delete Resource"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "Resource clipboard is empty!"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "Paste Resource"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/scene_tree_editor.cpp
-msgid "Instance:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "Load Resource"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
-#: editor/plugins/room_manager_editor_plugin.cpp
-msgid "Flip Portals"
-msgstr ""
-
-#: editor/plugins/room_manager_editor_plugin.cpp
-msgid "Room Generate Points"
-msgstr ""
-
-#: editor/plugins/room_manager_editor_plugin.cpp
-msgid "Generate Points"
-msgstr ""
-
-#: editor/plugins/room_manager_editor_plugin.cpp
-msgid "Flip Portal"
-msgstr ""
-
-#: editor/plugins/room_manager_editor_plugin.cpp
-msgid "Occluder Set Transform"
-msgstr ""
-
-#: editor/plugins/room_manager_editor_plugin.cpp
-msgid "Center Node"
-msgstr ""
-
-#: editor/plugins/root_motion_editor_plugin.cpp
-msgid "AnimationTree has no path set to an AnimationPlayer"
-msgstr ""
-
-#: editor/plugins/root_motion_editor_plugin.cpp
-msgid "Path to AnimationPlayer is invalid"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Clear Recent Files"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Close and save changes?"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error writing TextFile:"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Could not load file at:"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving file!"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error Saving"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error importing theme."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error Importing"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "New Text File..."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Open File"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save File As..."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Can't obtain the script for running."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Script failed reloading, check console for errors."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Script is not in tool mode, will not be able to run."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"To run this script, it must inherit EditorScript and be set to tool mode."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Import Theme"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error while saving theme"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Error saving"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme As..."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "%s Class Reference"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-msgid "Find Next"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-msgid "Find Previous"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Filter scripts"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Toggle alphabetical sorting of the method list."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Filter methods"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp scene/2d/y_sort.cpp
-msgid "Sort"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Move Up"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Move Down"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Next Script"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Previous Script"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "File"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Open..."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Reopen Closed Script"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save All"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Soft Reload Script"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Copy Script Path"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "History Previous"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "History Next"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Import Theme..."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Reload Theme"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save Theme"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Close All"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Close Docs"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-msgid "Search"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
-msgid "Step Into"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
-msgid "Step Over"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
-msgid "Break"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Continue"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Keep Debugger Open"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Debug with External Editor"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Open Godot online documentation."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Search the reference documentation."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Go to previous edited document."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Go to next edited document."
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Discard"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"The following files are newer on disk.\n"
-"What action should be taken?:"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Search Results"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Open Dominant Script On Scene Change"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "External"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Use External Editor"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Exec Path"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Script Temperature Enabled"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Highlight Current Script"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Script Temperature History Size"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Current Script Background Color"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Group Help Pages"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Sort Scripts By"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "List Script Names As"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Exec Flags"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Clear Recent Scripts"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Connections to method:"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/script_editor_debugger.cpp
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Source"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
-msgid "Target"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid ""
-"Missing connected method '%s' for signal '%s' from node '%s' to node '%s'."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "[Ignore]"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Line"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Function"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Only resources from filesystem can be dropped."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Can't drop nodes because script '%s' is not used in this scene."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Lookup Symbol"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Pick Color"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Convert Case"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-#: scene/3d/label_3d.cpp scene/gui/label.cpp
-#: scene/resources/primitive_meshes.cpp
-msgid "Uppercase"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Lowercase"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Capitalize"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
-msgid "Syntax Highlighter"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-msgid "Bookmarks"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Breakpoints"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-msgid "Go To"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Cut"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Select All"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Delete Line"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Indent Left"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Indent Right"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Toggle Comment"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Fold/Unfold Line"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Fold All Lines"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Unfold All Lines"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Complete Symbol"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Evaluate Selection"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Trim Trailing Whitespace"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Convert Indent to Spaces"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Convert Indent to Tabs"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Find in Files..."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Replace in Files..."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Contextual Help"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Toggle Bookmark"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Next Bookmark"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Previous Bookmark"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Remove All Bookmarks"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Function..."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Line..."
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Toggle Breakpoint"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Remove All Breakpoints"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Next Breakpoint"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
-msgid "Go to Previous Breakpoint"
-msgstr ""
-
-#: editor/plugins/shader_editor_plugin.cpp
-msgid ""
-"This shader has been modified on on disk.\n"
-"What action should be taken?"
-msgstr ""
-
-#: editor/plugins/shader_editor_plugin.cpp scene/resources/material.cpp
-msgid "Shader"
-msgstr ""
-
-#: editor/plugins/skeleton_2d_editor_plugin.cpp
-msgid "This skeleton has no bones, create some children Bone2D nodes."
-msgstr ""
-
-#: editor/plugins/skeleton_2d_editor_plugin.cpp
-msgid "Set Rest Pose to Bones"
-msgstr ""
-
-#: editor/plugins/skeleton_2d_editor_plugin.cpp
-msgid "Create Rest Pose from Bones"
-msgstr ""
-
-#: editor/plugins/skeleton_2d_editor_plugin.cpp
-msgid "Skeleton2D"
-msgstr ""
-
-#: editor/plugins/skeleton_2d_editor_plugin.cpp
-msgid "Reset to Rest Pose"
-msgstr ""
-
-#: editor/plugins/skeleton_2d_editor_plugin.cpp
-msgid "Overwrite Rest Pose"
-msgstr ""
-
-#: editor/plugins/skeleton_editor_plugin.cpp
-msgid "Create physical bones"
-msgstr ""
-
-#: editor/plugins/skeleton_editor_plugin.cpp editor/spatial_editor_gizmos.cpp
-#: modules/gltf/gltf_node.cpp modules/gltf/gltf_skin.cpp
-#: scene/2d/polygon_2d.cpp scene/3d/mesh_instance.cpp
-msgid "Skeleton"
-msgstr ""
-
-#: editor/plugins/skeleton_editor_plugin.cpp
-msgid "Create physical skeleton"
-msgstr ""
-
-#: editor/plugins/skeleton_ik_editor_plugin.cpp
-msgid "Play IK"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_camera.cpp
-msgid "Perspective"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top Perspective"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom Perspective"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left Perspective"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right Perspective"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front Perspective"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear Orthogonal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear Perspective"
-msgstr ""
-
-#. TRANSLATORS: This will be appended to the view name when Auto Orthogonal is enabled.
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid " [auto]"
-msgstr ""
-
-#. TRANSLATORS: This will be appended to the view name when Portal Occulusion is enabled.
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid " [portals active]"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Transform Aborted."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "X-Axis Transform."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Y-Axis Transform."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Z-Axis Transform."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Plane Transform."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/texture_region_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp scene/2d/path_2d.cpp
-msgid "Rotate"
-msgstr ""
-
-#. TRANSLATORS: This refers to the movement that changes the position of an object.
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translate"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rotating %s degrees."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS: %d (%s ms)"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Align Transform with View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Align Rotation with View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "No parent to instance a child at."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Auto Orthogonal Enabled"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Lock View Rotation"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Normal"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Wireframe"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Overdraw"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Unshaded"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Environment"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Gizmos"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Information"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View FPS"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Half Resolution"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp scene/main/viewport.cpp
-msgid "Audio Listener"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Enable Doppler"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Cinematic Preview"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "(Not in GLES2)"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Debug draw modes are only available when using the GLES3 renderer, not GLES2."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Forward"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Backwards"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Down"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Slow Modifier"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Toggle Camera Preview"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Rotation Locked"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"To zoom further, change the camera's clipping planes (View -> Settings...)"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Note: The FPS value displayed is the editor's framerate.\n"
-"It cannot be used as a reliable indication of in-game performance."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Convert Rooms"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "XForm Dialog"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Click to toggle between visibility states.\n"
-"\n"
-"Open eye: Gizmo is visible.\n"
-"Closed eye: Gizmo is hidden.\n"
-"Half-open eye: Gizmo is also visible through opaque surfaces (\"x-ray\")."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes to Floor"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Couldn't find a solid floor to snap the selection to."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp scene/gui/graph_edit.cpp
-msgid "Use Snap"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Converts rooms for portal culling."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Orbit View Down"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Orbit View Left"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Orbit View Right"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Orbit View Up"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Orbit View 180"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Switch Perspective/Orthogonal View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Insert Animation Key"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Focus Origin"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Focus Selection"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Toggle Freelook"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Decrease Field of View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Increase Field of View"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Reset Field of View to Default"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Object to Floor"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Transform Dialog..."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "1 Viewport"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "2 Viewports"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "2 Viewports (Alt)"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "3 Viewports"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "3 Viewports (Alt)"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "4 Viewports"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Gizmos"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Origin"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Grid"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Portal Culling"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Occlusion Culling"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Settings..."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Settings"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translate Snap:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rotate Snap (deg.):"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scale Snap (%):"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Viewport Settings"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Perspective FOV (deg.):"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Z-Near:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Z-Far:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Transform Change"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translate:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rotate (deg.):"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scale (ratio):"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Transform Type"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pre"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Post"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Manipulator Gizmo Size"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Manipulator Gizmo Opacity"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Show Viewport Rotation Gizmo"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Unnamed Gizmo"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Create Mesh2D"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Mesh2D Preview"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Create Polygon2D"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Polygon2D Preview"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Create CollisionPolygon2D"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "CollisionPolygon2D Preview"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Create LightOccluder2D"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "LightOccluder2D Preview"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Sprite is empty!"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Can't convert a sprite using animation frames to mesh."
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Invalid geometry, can't replace by mesh."
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Invalid geometry, can't create polygon."
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Polygon2D"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Invalid geometry, can't create collision polygon."
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Create CollisionPolygon2D Sibling"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Invalid geometry, can't create light occluder."
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Create LightOccluder2D Sibling"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Sprite"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Update Preview"
-msgstr ""
-
-#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Settings:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "No Frames Selected"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Add %d Frame(s)"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Add Frame"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Unable to load images"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "ERROR: Couldn't load frame resource!"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Resource clipboard is empty or not a texture!"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Paste Frame"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Add Empty"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Change Animation FPS"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "(empty)"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Move Frame"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Animations:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "New Animation"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Speed:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/minimp3/resource_importer_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
-#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
-#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
-msgid "Loop"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Animation Frames:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Add a Texture from File"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Add Frames from a Sprite Sheet"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Insert Empty (Before)"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Insert Empty (After)"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Move (Before)"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Move (After)"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Select Frames"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Horizontal:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Vertical:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Separation:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Offset:"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Select/Clear All Frames"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Create Frames from Sprite Sheet"
-msgstr ""
-
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "SpriteFrames"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Set Region Rect"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Set Margin"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Snap Mode:"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Pixel Snap"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Grid Snap"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Auto Slice"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Step:"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "TextureRegion"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Styleboxes"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "{num} color(s)"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "No colors found."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "{num} constant(s)"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "No constants found."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "{num} font(s)"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "No fonts found."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "{num} icon(s)"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "No icons found."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "{num} stylebox(es)"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "No styleboxes found."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "{num} currently selected"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Nothing was selected for the import."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Importing Theme Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Importing items {n}/{n}"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Updating the editor"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Finalizing"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Filter:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "With Data"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select by data type:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible color items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible color items and their data."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect all visible color items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible constant items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible constant items and their data."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect all visible constant items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible font items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible font items and their data."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect all visible font items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible icon items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible icon items and their data."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect all visible icon items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible stylebox items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all visible stylebox items and their data."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect all visible stylebox items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid ""
-"Caution: Adding icon data may considerably increase the size of your Theme "
-"resource."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Collapse types."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Expand types."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all Theme items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select With Data"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select all Theme items with item data."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect All"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Deselect all Theme items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Import Selected"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid ""
-"Import Items tab has some items selected. Selection will be lost upon "
-"closing this window.\n"
-"Close anyway?"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Type"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid ""
-"Select a theme type from the list to edit its items.\n"
-"You can add a custom type or import a type with its items from another theme."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Color Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Rename Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Constant Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Font Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Icon Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All StyleBox Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid ""
-"This theme type is empty.\n"
-"Add more items to it manually or by importing from another theme."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Theme Type"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Theme Type"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Color Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Constant Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Font Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Icon Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Stylebox Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Rename Color Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Rename Constant Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Rename Font Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Rename Icon Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Rename Stylebox Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Invalid file, not a Theme resource."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Invalid file, same as the edited Theme resource."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Manage Theme Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Types:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Type:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Item:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add StyleBox Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Items:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Custom Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Theme Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Old Name:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Import Items"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Default Theme"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editor Theme"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select Another Theme Resource:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme Resource"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Another Theme"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Type"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Filter the list of types or create a new custom type:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Available Node-based types:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Type name is empty!"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Are you sure you want to create an empty type?"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Confirm Item Rename"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Cancel Item Rename"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Override Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Unpin this StyleBox as a main style."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid ""
-"Pin this StyleBox as a main style. Editing its properties will update the "
-"same properties in all other StyleBoxes of this type."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Item Type"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Set Variation Base Type"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Set Base Type"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Show Default"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Show default type items alongside items that have been overridden."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Override All"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Override all default type items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select the variation base type from a list of available types."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid ""
-"A type associated with a built-in class cannot be marked as a variation of "
-"another type."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme:"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Manage Items..."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add, remove, organize and import Theme items."
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Preview"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Default Preview"
-msgstr ""
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Select UI Scene:"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid ""
-"Toggle the control picker, allowing to visually select control types for "
-"edit."
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Toggle Button"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Disabled Button"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp scene/resources/mesh_library.cpp
-msgid "Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Disabled Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Check Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Checked Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Radio Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Checked Radio Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Named Separator"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Submenu"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Subitem 1"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Subitem 2"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Has"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Many"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Disabled LineEdit"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Tab 1"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Tab 2"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Tab 3"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Editable Item"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Subtree"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Has,Many,Options"
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Invalid path, the PackedScene resource was probably moved or removed."
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Invalid PackedScene resource, must have a Control node at its root."
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Invalid file, not a PackedScene resource."
-msgstr ""
-
-#: editor/plugins/theme_editor_preview.cpp
-msgid "Reload the scene to reflect its most actual state."
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Erase Selection"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Fix Invalid Tiles"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cut Selection"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Paint TileMap"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Line Draw"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Rectangle Paint"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket Fill"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Erase TileMap"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Find Tile"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Transpose"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Disable Autotile"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Enable Priority"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Filter tiles"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Give a TileSet resource to this TileMap to use its tiles."
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Paint Tile"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid ""
-"Shift+LMB: Line Draw\n"
-"Shift+Command+LMB: Rectangle Paint"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid ""
-"Shift+LMB: Line Draw\n"
-"Shift+Ctrl+LMB: Rectangle Paint"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Pick Tile"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Rotate Left"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Rotate Right"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Flip Horizontally"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Flip Vertically"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Clear Transform"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Tile Map"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Palette Min Width"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Palette Item H Separation"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Show Tile Names"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Show Tile Ids"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Sort Tiles By Name"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket Fill Preview"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Editor Side"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Display Grid"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Axis Color"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Add Texture(s) to TileSet."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove selected Texture from TileSet."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create from Scene"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Merge from Scene"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "New Single Tile"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "New Autotile"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "New Atlas"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Next Coordinate"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Select the next shape, subtile, or Tile."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Previous Coordinate"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Select the previous shape, subtile, or Tile."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
-msgid "Region"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp modules/csg/csg_shape.cpp
-#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
-#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
-#: scene/3d/collision_object.cpp scene/3d/physics_body.cpp
-#: scene/3d/physics_joint.cpp scene/3d/soft_body.cpp scene/main/scene_tree.cpp
-#: scene/resources/shape_2d.cpp
-msgid "Collision"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Occlusion"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/touch_screen_button.cpp
-msgid "Bitmask"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/3d/physics_joint.cpp
-#: scene/animation/animation_node_state_machine.cpp
-msgid "Priority"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/node_2d.cpp
-msgid "Z Index"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Region Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Collision Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Occlusion Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Navigation Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Bitmask Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Priority Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/item_list.cpp
-msgid "Icon Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Z Index Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Copy bitmask."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Paste bitmask."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Erase bitmask."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create a new rectangle."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "New Rectangle"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create a new polygon."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "New Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Delete Selected Shape"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Keep polygon inside region Rect."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Enable snap and show grid (configurable via the Inspector)."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Display Tile Names (Hold Alt Key)"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Add or select a texture on the left panel to edit the tiles bound to it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove selected texture? This will remove all tiles which use it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "You haven't selected a texture to remove."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create from scene? This will overwrite all current tiles."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Merge from scene?"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove Texture"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "%s file(s) were not added because was already on the list."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Drag handles to edit Rect.\n"
-"Click on another Tile to edit it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Delete selected Rect."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select current edited sub-tile.\n"
-"Click on another Tile to edit it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Delete polygon."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"LMB: Set bit on.\n"
-"RMB: Set bit off.\n"
-"Shift+LMB: Set wildcard bit.\n"
-"Click on another Tile to edit it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to use as icon, this will be also used on invalid autotile "
-"bindings.\n"
-"Click on another Tile to edit it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to change its priority.\n"
-"Click on another Tile to edit it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid ""
-"Select sub-tile to change its z index.\n"
-"Click on another Tile to edit it."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Set Tile Region"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create Tile"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Set Tile Icon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Edit Tile Bitmask"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Edit Collision Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Edit Occlusion Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Edit Navigation Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Paste Tile Bitmask"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Clear Tile Bitmask"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Make Polygon Concave"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Make Polygon Convex"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove Tile"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove Collision Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove Occlusion Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Remove Navigation Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Edit Tile Priority"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Edit Tile Z Index"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Make Convex"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Make Concave"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create Collision Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Create Occlusion Polygon"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "This property can't be changed."
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Snap Options"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/animated_sprite.cpp
-#: scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
-#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
-#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/label_3d.cpp scene/3d/path.cpp
-#: scene/3d/physics_body.cpp scene/3d/soft_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/style_box.cpp
-msgid "Offset"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp editor/rename_dialog.cpp
-#: scene/gui/range.cpp scene/resources/animation.cpp
-#: scene/resources/visual_shader_nodes.cpp servers/physics_2d_server.cpp
-#: servers/physics_server.cpp
-msgid "Step"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Separation"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Selected Tile"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/line_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/polygon_2d.cpp scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/texture_rect.cpp
-#: scene/resources/material.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
-msgid "Texture"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tex Offset"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp modules/csg/csg_shape.cpp
-#: scene/2d/canvas_item.cpp scene/2d/particles_2d.cpp
-#: scene/3d/mesh_instance.cpp scene/resources/primitive_meshes.cpp
-msgid "Material"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/canvas_item.cpp
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp scene/resources/style_box.cpp
-msgid "Modulate"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tile Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Autotile Bitmask Mode"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Subtile Size"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Subtile Spacing"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Occluder Offset"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Navigation Offset"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Shape Offset"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Shape Transform"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Selected Collision"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Selected Collision One Way"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Selected Collision One Way Margin"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Selected Navigation"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Selected Occlusion"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Tileset Script"
-msgstr ""
-
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "TileSet"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "No VCS plugins are available."
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid ""
-"Remote settings are empty. VCS features that use the network may not work."
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "No commit message was provided."
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Commit"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Staged Changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Unstaged Changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Commit:"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Date:"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Subtitle:"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Do you want to remove the %s branch?"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Do you want to remove the %s remote?"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Apply"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control System"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Initialize"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Remote Login"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Select SSH public key path"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Select SSH private key path"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "SSH Passphrase"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Detect new changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Discard all changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Stage all changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Unstage all changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Commit Message"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Commit Changes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Commit List"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Commit list size"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Branches"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Create New Branch"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Remove Branch"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Branch Name"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Remotes"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Create New Remote"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Remove Remote"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Remote Name"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Remote URL"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Fetch"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Pull"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Push"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Force Push"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Modified"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Renamed"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Deleted"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Typechange"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Unmerged"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "View:"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Split"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Unified"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "(GLES3 only)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Add Output"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Scalar"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Vector"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Boolean"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Sampler"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Add input port"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Add output port"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Change input port type"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Change output port type"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Change input port name"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Change output port name"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Remove input port"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Remove output port"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Set expression"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Resize VisualShader node"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Set Uniform Name"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Set Input Default Port"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Add Node to Visual Shader"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Node(s) Moved"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Duplicate Nodes"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Paste Nodes"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Delete Nodes"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Visual Shader Input Type Changed"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "UniformRef Name Changed"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Vertex"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Fragment"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp modules/gltf/gltf_node.cpp
-#: scene/3d/light.cpp
-msgid "Light"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Show resulted shader code."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Create Shader Node"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Color function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Color operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Grayscale function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Converts HSV vector to RGB equivalent."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Converts RGB vector to HSV equivalent."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Sepia function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Burn operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Darken operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Difference operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Dodge operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "HardLight operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Lighten operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Overlay operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Screen operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "SoftLight operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Color constant."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Color uniform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the boolean result of the %s comparison between two parameters."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Equal (==)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Greater Than (>)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Greater Than or Equal (>=)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns an associated vector if the provided scalars are equal, greater or "
-"less."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns the boolean result of the comparison between INF and a scalar "
-"parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns the boolean result of the comparison between NaN and a scalar "
-"parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Less Than (<)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Less Than or Equal (<=)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Not Equal (!=)"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns an associated vector if the provided boolean value is true or false."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns an associated scalar if the provided boolean value is true or false."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the boolean result of the comparison between two parameters."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns the boolean result of the comparison between INF (or NaN) and a "
-"scalar parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Boolean constant."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Boolean uniform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for all shader modes."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Input parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for vertex and fragment shader modes."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for fragment and light shader modes."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for fragment shader mode."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for light shader mode."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for vertex shader mode."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "'%s' input parameter for vertex and fragment shader mode."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Scalar function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Scalar operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "E constant (2.718282). Represents the base of the natural logarithm."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Epsilon constant (0.00001). Smallest possible scalar number."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Phi constant (1.618034). Golden ratio."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Pi/4 constant (0.785398) or 45 degrees."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Pi/2 constant (1.570796) or 90 degrees."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Pi constant (3.141593) or 180 degrees."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Tau constant (6.283185) or 360 degrees."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Sqrt2 constant (1.414214). Square root of 2."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the absolute value of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the arc-cosine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the inverse hyperbolic cosine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the arc-sine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the inverse hyperbolic sine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the arc-tangent of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the arc-tangent of the parameters."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the inverse hyperbolic tangent of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Finds the nearest integer that is greater than or equal to the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Constrains a value to lie between two further values."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the cosine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the hyperbolic cosine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Converts a quantity in radians to degrees."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Base-e Exponential."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Base-2 Exponential."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Finds the nearest integer less than or equal to the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Computes the fractional part of the argument."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the inverse of the square root of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Natural logarithm."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Base-2 logarithm."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the greater of two values."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the lesser of two values."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Linear interpolation between two scalars."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the opposite value of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "1.0 - scalar"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns the value of the first parameter raised to the power of the second."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Converts a quantity in degrees to radians."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "1.0 / scalar"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Finds the nearest integer to the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Finds the nearest even integer to the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Clamps the value between 0.0 and 1.0."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Extracts the sign of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the sine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the hyperbolic sine of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the square root of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"SmoothStep function( scalar(edge0), scalar(edge1), scalar(x) ).\n"
-"\n"
-"Returns 0.0 if 'x' is smaller than 'edge0' and 1.0 if x is larger than "
-"'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 "
-"using Hermite polynomials."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Step function( scalar(edge), scalar(x) ).\n"
-"\n"
-"Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the tangent of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the hyperbolic tangent of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Finds the truncated value of the parameter."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Adds scalar to scalar."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Divides scalar by scalar."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Multiplies scalar by scalar."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the remainder of the two scalars."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Subtracts scalar from scalar."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Scalar constant."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Scalar uniform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Perform the cubic texture lookup."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Perform the texture lookup."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Cubic texture uniform lookup."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "2D texture uniform lookup."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "2D texture uniform lookup with triplanar."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Transform function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Calculate the outer product of a pair of vectors.\n"
-"\n"
-"OuterProduct treats the first parameter 'c' as a column vector (matrix with "
-"one column) and the second parameter 'r' as a row vector (matrix with one "
-"row) and does a linear algebraic matrix multiply 'c * r', yielding a matrix "
-"whose number of rows is the number of components in 'c' and whose number of "
-"columns is the number of components in 'r'."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Composes transform from four vectors."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Decomposes transform to four vectors."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the determinant of a transform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the inverse of a transform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the transpose of a transform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Multiplies transform by transform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Multiplies vector by transform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Transform constant."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Transform uniform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Vector function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Vector operator."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Composes vector from three scalars."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Decomposes vector to three scalars."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the cross product of two vectors."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the distance between two points."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the dot product of two vectors."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns the vector that points in the same direction as a reference vector. "
-"The function has three vector parameters : N, the vector to orient, I, the "
-"incident vector, and Nref, the reference vector. If the dot product of I and "
-"Nref is smaller than zero the return value is N. Otherwise -N is returned."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the length of a vector."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Linear interpolation between two vectors."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Linear interpolation between two vectors using scalar."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Calculates the normalize product of vector."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "1.0 - vector"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "1.0 / vector"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns the vector that points in the direction of reflection ( a : incident "
-"vector, b : normal vector )."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the vector that points in the direction of refraction."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"SmoothStep function( vector(edge0), vector(edge1), vector(x) ).\n"
-"\n"
-"Returns 0.0 if 'x' is smaller than 'edge0' and 1.0 if 'x' is larger than "
-"'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 "
-"using Hermite polynomials."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"SmoothStep function( scalar(edge0), scalar(edge1), vector(x) ).\n"
-"\n"
-"Returns 0.0 if 'x' is smaller than 'edge0' and 1.0 if 'x' is larger than "
-"'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 "
-"using Hermite polynomials."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Step function( vector(edge), vector(x) ).\n"
-"\n"
-"Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Step function( scalar(edge), vector(x) ).\n"
-"\n"
-"Returns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Adds vector to vector."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Divides vector by vector."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Multiplies vector by vector."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Returns the remainder of the two vectors."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Subtracts vector from vector."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Vector constant."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Vector uniform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Custom Godot Shader Language expression, with custom amount of input and "
-"output ports. This is a direct injection of code into the vertex/fragment/"
-"light function, do not use it to write the function declarations inside."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Returns falloff based on the dot product of surface normal and view "
-"direction of camera (pass associated inputs to it)."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"Custom Godot Shader Language expression, which is placed on top of the "
-"resulted shader. You can place various function definitions inside and call "
-"it later in the Expressions. You can also declare varyings, uniforms and "
-"constants."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "A reference to an existing uniform."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "(Fragment/Light mode only) Scalar derivative function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "(Fragment/Light mode only) Vector derivative function."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"(Fragment/Light mode only) (Vector) Derivative in 'x' using local "
-"differencing."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"(Fragment/Light mode only) (Scalar) Derivative in 'x' using local "
-"differencing."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"(Fragment/Light mode only) (Vector) Derivative in 'y' using local "
-"differencing."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"(Fragment/Light mode only) (Scalar) Derivative in 'y' using local "
-"differencing."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"(Fragment/Light mode only) (Vector) Sum of absolute derivative in 'x' and "
-"'y'."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid ""
-"(Fragment/Light mode only) (Scalar) Sum of absolute derivative in 'x' and "
-"'y'."
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "VisualShader"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property:"
-msgstr ""
-
-#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Visual Shader Mode Changed"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Runnable"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export the project for all the presets defined."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "All presets must have an export path defined for Export All to work."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Delete preset '%s'?"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Exporting All"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export Path"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Presets"
-msgstr ""
-
-#: editor/project_export.cpp editor/project_settings_editor.cpp
-msgid "Add..."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"If checked, the preset will be available for use in one-click deploy.\n"
-"Only one preset per platform may be marked as runnable."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Resources"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export all resources in the project"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export selected scenes (and dependencies)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export selected resources (and dependencies)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export Mode:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Resources to export:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Filters to export non-resource files/folders\n"
-"(comma-separated, e.g: *.json, *.txt, docs/*)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Filters to exclude files/folders from project\n"
-"(comma-separated, e.g: *.json, *.txt, docs/*)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Features"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Custom (comma-separated):"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Feature List:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Script"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "GDScript Export Mode:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Compiled Bytecode (Faster Loading)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Encrypted (Provide Key Below)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "GDScript Encryption Key (256-bits as hexadecimal):"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Note: Encryption key needs to be stored in the binary,\n"
-"you need to build the export templates from source."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "More Info..."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export PCK/Zip..."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export Project..."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export All"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Choose an export mode:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export All..."
-msgstr ""
-
-#: editor/project_export.cpp editor/project_manager.cpp
-msgid "ZIP File"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Godot Project Pack"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Manage Export Templates"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export With Debug"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "The path specified doesn't exist."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Error opening package file (it's not in ZIP format)."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Invalid \".zip\" project file; it doesn't contain a \"project.godot\" file."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Please choose an empty folder."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Please choose a \"project.godot\" or \".zip\" file."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "This directory already contains a Godot project."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "New Game Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Imported Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Invalid project name."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Couldn't create folder."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "There is already a folder in this path with the specified name."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "It would be a good idea to name your project."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Invalid project path (changed anything?)."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Couldn't load project.godot in project path (error %d). It may be missing or "
-"corrupted."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Couldn't edit project.godot in project path."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Couldn't create project.godot in project path."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Package installed successfully!"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Rename Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Import Existing Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Import & Edit"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Create New Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Create & Edit"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Install Project:"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Install & Edit"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Project Name:"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Project Path:"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Project Installation Path:"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Renderer:"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "OpenGL ES 3.0"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Not supported by your GPU drivers."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Higher visual quality\n"
-"All features available\n"
-"Incompatible with older hardware\n"
-"Not recommended for web games"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "OpenGL ES 2.0"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Lower visual quality\n"
-"Some features not available\n"
-"Works on most hardware\n"
-"Recommended for web games"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Renderer can be changed later, but scenes may need to be adjusted."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Missing Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Error: Project is missing on the filesystem."
-msgstr ""
-
-#: editor/project_manager.cpp editor/scene_tree_dock.cpp
-msgid "Local"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Local Projects"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Asset Library Projects"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Can't open project at '%s'."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Are you sure to open more than one project?"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"The following project settings file does not specify the version of Godot "
-"through which it was created.\n"
-"\n"
-"%s\n"
-"\n"
-"If you proceed with opening it, it will be converted to Godot's current "
-"configuration file format.\n"
-"Warning: You won't be able to open the project with previous versions of the "
-"engine anymore."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"The following project settings file was generated by an older engine "
-"version, and needs to be converted for this version:\n"
-"\n"
-"%s\n"
-"\n"
-"Do you want to convert it?\n"
-"Warning: You won't be able to open the project with previous versions of the "
-"engine anymore."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"The project settings were created by a newer engine version, whose settings "
-"are not compatible with this version."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Can't run project: no main scene defined.\n"
-"Please edit the project and set the main scene in the Project Settings under "
-"the \"Application\" category."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Can't run project: Assets need to be imported.\n"
-"Please edit the project to trigger the initial import."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Are you sure to run %d projects at once?"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Remove %d projects from the list?"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Remove this project from the list?"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Remove all missing projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Language changed.\n"
-"The interface will update after restarting the editor or project manager."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"Are you sure to scan %s folders for existing Godot projects?\n"
-"This could take a while."
-msgstr ""
-
-#. TRANSLATORS: This refers to the application where users manage their Godot projects.
-#: editor/project_manager.cpp
-msgctxt "Application"
-msgid "Project Manager"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Last Modified"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Loading, please wait..."
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Edit Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Run Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Scan"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Scan Projects"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Select a Folder to Scan"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "New Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Import Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Remove Project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Remove Missing"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "About"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Restart Now"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Remove All"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Also delete project contents (no undo!)"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Can't run project"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"You currently don't have any projects.\n"
-"Would you like to explore official example projects in the Asset Library?"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Filter projects"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid ""
-"This field filters projects by name and last path component.\n"
-"To filter projects by name and full path, the query must contain at least "
-"one `/` character."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Physical Key"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Key "
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Joy Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Joy Axis"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Mouse Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid ""
-"Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or "
-"'\"'"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "An action with the name '%s' already exists."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Rename Input Action Event"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Change Action deadzone"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Add Input Action Event"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "All Devices"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid " (Physical)"
-msgstr ""
-
-#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-msgid "Press a Key..."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Mouse Button Index:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Left Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Right Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Middle Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Wheel Up Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Wheel Down Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Wheel Left Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Wheel Right Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "X Button 1"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "X Button 2"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Joypad Axis Index:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Joypad Button Index:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Erase Input Action"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Erase Input Action Event"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Add Event"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Button"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Left Button."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Right Button."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Middle Button."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Wheel Up."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Wheel Down."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Add Global Property"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Select a setting item first!"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "No property '%s' exists."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Setting '%s' is internal, and it can't be deleted."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Delete Item"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid ""
-"Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or "
-"'\"'."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Add Input Action"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Error saving settings."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Settings saved OK."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Moved Input Action Event"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Override for Feature"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Add %d Translations"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Remove Translation"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Translation Resource Remap: Add %d Path(s)"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Translation Resource Remap: Add %d Remap(s)"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Change Resource Remap Language"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Remove Resource Remap"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Remove Resource Remap Option"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Changed Locale Filter"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Changed Locale Filter Mode"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Project Settings (project.godot)"
-msgstr ""
-
-#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-msgid "General"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Override For..."
-msgstr ""
-
-#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-msgid "The editor must be restarted for changes to take effect."
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Input Map"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Action:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp scene/gui/scroll_container.cpp
-msgid "Deadzone"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Device:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Index:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Localization"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Translations"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Translations:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Remaps"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Resources:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Remaps by Locale:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Locales Filter"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Show All Locales"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Show Selected Locales Only"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Filter mode:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Locales:"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "AutoLoad"
-msgstr ""
-
-#: editor/project_settings_editor.cpp platform/android/export/export_plugin.cpp
-#: platform/iphone/export/export.cpp
-msgid "Plugins"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
-msgid "Import Defaults"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Preset..."
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Zero"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Easing In-Out"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Easing Out-In"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "File..."
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Dir..."
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Assign"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Select Node"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Error loading file: Not a resource!"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Pick a Node"
-msgstr ""
-
-#: editor/property_editor.cpp
-msgid "Bit %d, val %d."
-msgstr ""
-
-#: editor/property_selector.cpp
-msgid "Select Property"
-msgstr ""
-
-#: editor/property_selector.cpp
-msgid "Select Virtual Method"
-msgstr ""
-
-#: editor/property_selector.cpp
-msgid "Select Method"
-msgstr ""
-
-#: editor/rename_dialog.cpp editor/scene_tree_dock.cpp
-msgid "Batch Rename"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Prefix:"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Suffix:"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Use Regular Expressions"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Advanced Options"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Substitute"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Node name"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Node's parent name, if available"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Node type"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Current scene name"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Root node name"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid ""
-"Sequential integer counter.\n"
-"Compare counter options."
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Per-level Counter"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "If set, the counter restarts for each group of child nodes."
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Initial value for the counter"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Amount by which counter is incremented for each node"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Padding"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid ""
-"Minimum number of digits for the counter.\n"
-"Missing digits are padded with leading zeros."
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Post-Process"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Style"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Keep"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "PascalCase to snake_case"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "snake_case to PascalCase"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Case"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "To Lowercase"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "To Uppercase"
-msgstr ""
-
-#: editor/rename_dialog.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Reset"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "Regular Expression Error:"
-msgstr ""
-
-#: editor/rename_dialog.cpp
-msgid "At character %s"
-msgstr ""
-
-#: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp
-msgid "Reparent Node"
-msgstr ""
-
-#: editor/reparent_dialog.cpp
-msgid "Reparent Location (Select new Parent):"
-msgstr ""
-
-#: editor/reparent_dialog.cpp
-msgid "Keep Global Transform"
-msgstr ""
-
-#: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp
-msgid "Reparent"
-msgstr ""
-
-#: editor/run_settings_dialog.cpp
-msgid "Run Mode:"
-msgstr ""
-
-#: editor/run_settings_dialog.cpp scene/main/scene_tree.cpp
-msgid "Current Scene"
-msgstr ""
-
-#: editor/run_settings_dialog.cpp
-msgid "Main Scene Arguments:"
-msgstr ""
-
-#: editor/run_settings_dialog.cpp
-msgid "Scene Run Settings"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "No parent to instance the scenes at."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Error loading scene from %s"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Cannot instance the scene '%s' because the current scene exists within one "
-"of its nodes."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Instance Scene(s)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Replace with Branch Scene"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Instance Child Scene"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Can't paste root node into the same scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Paste Node(s)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Detach Script"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on the tree root."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Move Node In Parent"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Move Nodes In Parent"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Duplicate Node(s)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Can't reparent nodes in inherited scenes, order of nodes can't change."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Node must belong to the edited scene to become root."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Instantiated scenes can't become root"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Make node as Root"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Delete %d nodes and any children?"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Delete %d nodes?"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Delete the root node \"%s\"?"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Delete node \"%s\" and its children?"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Delete node \"%s\"?"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Saving the branch as a scene requires having a scene open in the editor."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Saving the branch as a scene requires selecting only one node, but you have "
-"selected %d nodes."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Can't save the root node branch as an instanced scene.\n"
-"To create an editable copy of the current scene, duplicate it using the "
-"FileSystem dock context menu\n"
-"or create an inherited scene using Scene > New Inherited Scene... instead."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Can't save the branch of an already instanced scene.\n"
-"To create a variation of a scene, you can make an inherited scene based on "
-"the instanced scene using Scene > New Inherited Scene... instead."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Can't save a branch which is a child of an already instantiated scene.\n"
-"To save this branch into its own scene, open the original scene, right click "
-"on this branch, and select \"Save Branch as Scene\"."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Can't save a branch which is part of an inherited scene.\n"
-"To save this branch into its own scene, open the original scene, right click "
-"on this branch, and select \"Save Branch as Scene\"."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Save New Scene As..."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Disabling \"editable_instance\" will cause all properties of the node to be "
-"reverted to their default."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Enabling \"Load As Placeholder\" will disable \"Editable Children\" and "
-"cause all properties of the node to be reverted to their default."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Make Local"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
-msgid "Another node already uses this unique name in the scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Enable Scene Unique Name"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
-msgid "Disable Scene Unique Name"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "New Scene Root"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Create Root Node:"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "2D Scene"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "3D Scene"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "User Interface"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Other Node"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Can't operate on nodes from a foreign scene!"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Can't operate on nodes the current scene inherits from!"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Attach Script"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Cut Node(s)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Remove Node(s)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Change type of node(s)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Couldn't save new scene. Likely dependencies (instances) couldn't be "
-"satisfied."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Error saving scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Error duplicating scene to save it."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Access as Scene Unique Name"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Clear Inheritance"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Editable Children"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Load As Placeholder"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Cannot attach a script: there are no languages registered.\n"
-"This is probably because this editor was built with all language modules "
-"disabled."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Add Child Node"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Expand/Collapse All"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Change Type"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Reparent to New Node"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Make Scene Root"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Merge From Scene"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp editor/script_editor_debugger.cpp
-msgid "Save Branch as Scene"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp editor/script_editor_debugger.cpp
-msgid "Copy Node Path"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Delete (No Confirm)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Add/Create a New Node."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"Instance a scene file as a Node. Creates an inherited scene if no root node "
-"exists."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Attach a new or existing script to the selected node."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Detach the script from the selected node."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Remote"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid ""
-"If selected, the Remote scene tree dock will cause the project to stutter "
-"every time it updates.\n"
-"Switch back to the Local scene tree dock to improve performance."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Show Scene Tree Root Selection"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Derive Script Globals By Name"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Use Favorites Root Selection"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Toggle Visible"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Unlock Node"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Button Group"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "(Connecting From)"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Node configuration warning:"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"This node can be accessed from within anywhere in the scene by preceding it "
-"with the '%s' prefix in a node path.\n"
-"Click to disable this."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"Node has %s connection(s) and %s group(s).\n"
-"Click to show signals dock."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"Node has %s connection(s).\n"
-"Click to show signals dock."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"Node is in %s group(s).\n"
-"Click to show groups dock."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Open Script:"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"Node is locked.\n"
-"Click to unlock it."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"Children are not selectable.\n"
-"Click to make selectable."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Toggle Visibility"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid ""
-"AnimationPlayer is pinned.\n"
-"Click to unpin."
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Invalid node name, the following characters are not allowed:"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Rename Node"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Scene Tree (Nodes):"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Node Configuration Warning!"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Select a Node"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Path is empty."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Filename is empty."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Path is not local."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Invalid base path."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "A directory with the same name exists."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "File does not exist."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Invalid extension."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Wrong extension chosen."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Error loading template '%s'"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Error - Could not create script in filesystem."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Error loading script from %s"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Overrides"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Open Script / Choose Location"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Open Script"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "File exists, it will be reused."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Invalid path."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Invalid class name."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Invalid inherited parent name or path."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Script path/name is valid."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Allowed: a-z, A-Z, 0-9, _ and ."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Built-in script (into scene file)."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Will create a new script file."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Will load an existing script file."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Script file already exists."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid ""
-"Note: Built-in scripts have some limitations and can't be edited using an "
-"external editor."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid ""
-"Warning: Having the script name be the same as a built-in type is usually "
-"not desired."
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Class Name:"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Template:"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Built-in Script:"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "Attach Node Script"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Bytes:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Warning:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Error:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "C++ Error"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "C++ Error:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "C++ Source"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Source:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "C++ Source:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Stack Trace"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Errors"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Child process connected."
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Copy Error"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Open C++ Source on GitHub"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Video RAM"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Skip Breakpoints"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Inspect Previous Instance"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Inspect Next Instance"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Stack Frames"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Filter stack variables"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Auto Switch To Remote Scene Tree"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Remote Scene Tree Refresh Interval"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Remote Inspect Refresh Interval"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Network Profiler"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Monitor"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Monitors"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Pick one or more items from the list to display the graph."
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "List of Video Memory Usage by Resource:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Total:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Export list to a CSV file"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Resource Path"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp scene/resources/audio_stream_sample.cpp
-#: servers/audio/effects/audio_effect_record.cpp
-msgid "Format"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp scene/main/viewport.cpp
-msgid "Usage"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp servers/visual_server.cpp
-msgid "Misc"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Clicked Control:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Clicked Control Type:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Live Edit Root:"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Set From Tree"
-msgstr ""
-
-#: editor/script_editor_debugger.cpp
-msgid "Export measures as CSV"
-msgstr ""
-
-#: editor/settings_config_dialog.cpp
-msgid "Erase Shortcut"
-msgstr ""
-
-#: editor/settings_config_dialog.cpp
-msgid "Restore Shortcut"
-msgstr ""
-
-#: editor/settings_config_dialog.cpp
-msgid "Change Shortcut"
-msgstr ""
-
-#: editor/settings_config_dialog.cpp
-msgid "Editor Settings"
-msgstr ""
-
-#: editor/settings_config_dialog.cpp
-msgid "Shortcuts"
-msgstr ""
-
-#: editor/settings_config_dialog.cpp
-msgid "Binding"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Light Radius"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Stream Player 3D"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change AudioStreamPlayer3D Emission Angle"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
-#: platform/osx/export/export.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Camera"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Camera FOV"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Camera Size"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Visibility Notifier"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Notifier AABB"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Particles AABB"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Reflection Probe"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Probe Extents"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "GI Probe"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Baked Indirect Light"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
-msgid "Change Sphere Shape Radius"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
-msgid "Change Box Shape Extents"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Capsule Shape Radius"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Capsule Shape Height"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Cylinder Shape Radius"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Cylinder Shape Height"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Change Ray Shape Length"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Navigation Edge"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Navigation Edge Disabled"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Navigation Solid"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Navigation Solid Disabled"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Joint Body A"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Joint Body B"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Room Edge"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Room Overlap"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Set Room Point Position"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp scene/3d/portal.cpp
-msgid "Portal Margin"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Portal Edge"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Portal Arrow"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Set Portal Point Position"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Portal Front"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Portal Back"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp scene/2d/light_occluder_2d.cpp
-#: scene/2d/tile_map.cpp
-msgid "Occluder"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Set Occluder Sphere Radius"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Set Occluder Sphere Position"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Set Occluder Polygon Point Position"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Set Occluder Hole Point Position"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Occluder Polygon Front"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Occluder Polygon Back"
-msgstr ""
-
-#: editor/spatial_editor_gizmos.cpp
-msgid "Occluder Hole"
-msgstr ""
-
-#: main/main.cpp
-msgid "Godot Physics"
-msgstr ""
-
-#: main/main.cpp servers/physics_2d/physics_2d_server_sw.cpp
-#: servers/visual/visual_server_scene.cpp
-msgid "Use BVH"
-msgstr ""
-
-#: main/main.cpp servers/physics_2d/physics_2d_server_sw.cpp
-#: servers/visual/visual_server_scene.cpp
-msgid "BVH Collision Margin"
-msgstr ""
-
-#: main/main.cpp
-msgid "Crash Handler"
-msgstr ""
-
-#: main/main.cpp
-msgid "Multithreaded Server"
-msgstr ""
-
-#: main/main.cpp
-msgid "RID Pool Prealloc"
-msgstr ""
-
-#: main/main.cpp
-msgid "Debugger stdout"
-msgstr ""
-
-#: main/main.cpp
-msgid "Max Chars Per Second"
-msgstr ""
-
-#: main/main.cpp
-msgid "Max Messages Per Frame"
-msgstr ""
-
-#: main/main.cpp
-msgid "Max Errors Per Second"
-msgstr ""
-
-#: main/main.cpp
-msgid "Max Warnings Per Second"
-msgstr ""
-
-#: main/main.cpp
-msgid "Flush stdout On Print"
-msgstr ""
-
-#: main/main.cpp servers/visual_server.cpp
-msgid "Logging"
-msgstr ""
-
-#: main/main.cpp
-msgid "File Logging"
-msgstr ""
-
-#: main/main.cpp
-msgid "Enable File Logging"
-msgstr ""
-
-#: main/main.cpp
-msgid "Log Path"
-msgstr ""
-
-#: main/main.cpp
-msgid "Max Log Files"
-msgstr ""
-
-#: main/main.cpp
-msgid "Driver"
-msgstr ""
-
-#: main/main.cpp
-msgid "Driver Name"
-msgstr ""
-
-#: main/main.cpp
-msgid "Fallback To GLES2"
-msgstr ""
-
-#: main/main.cpp
-msgid "Use Nvidia Rect Flicker Workaround"
-msgstr ""
-
-#: main/main.cpp
-msgid "DPI"
-msgstr ""
-
-#: main/main.cpp
-msgid "Allow hiDPI"
-msgstr ""
-
-#: main/main.cpp
-msgid "V-Sync"
-msgstr ""
-
-#: main/main.cpp
-msgid "Use V-Sync"
-msgstr ""
-
-#: main/main.cpp
-msgid "Per Pixel Transparency"
-msgstr ""
-
-#: main/main.cpp
-msgid "Allowed"
-msgstr ""
-
-#: main/main.cpp
-msgid "Intended Usage"
-msgstr ""
-
-#: main/main.cpp
-msgid "Framebuffer Allocation"
-msgstr ""
-
-#: main/main.cpp platform/uwp/os_uwp.cpp
-msgid "Energy Saving"
-msgstr ""
-
-#: main/main.cpp
-msgid "Threads"
-msgstr ""
-
-#: main/main.cpp servers/physics_2d/physics_2d_server_wrap_mt.h
-msgid "Thread Model"
-msgstr ""
-
-#: main/main.cpp
-msgid "Thread Safe BVH"
-msgstr ""
-
-#: main/main.cpp
-msgid "Handheld"
-msgstr ""
-
-#: main/main.cpp platform/javascript/export/export.cpp
-#: platform/uwp/export/export.cpp
-msgid "Orientation"
-msgstr ""
-
-#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
-msgid "Common"
-msgstr ""
-
-#: main/main.cpp
-msgid "Physics FPS"
-msgstr ""
-
-#: main/main.cpp
-msgid "Force FPS"
-msgstr ""
-
-#: main/main.cpp
-msgid "Enable Pause Aware Picking"
-msgstr ""
-
-#: main/main.cpp scene/gui/item_list.cpp scene/gui/popup_menu.cpp
-#: scene/gui/scroll_container.cpp scene/gui/text_edit.cpp scene/gui/tree.cpp
-#: scene/main/viewport.cpp scene/register_scene_types.cpp
-msgid "GUI"
-msgstr ""
-
-#: main/main.cpp
-msgid "Drop Mouse On GUI Input Disabled"
-msgstr ""
-
-#: main/main.cpp
-msgid "stdout"
-msgstr ""
-
-#: main/main.cpp
-msgid "Print FPS"
-msgstr ""
-
-#: main/main.cpp
-msgid "Verbose stdout"
-msgstr ""
-
-#: main/main.cpp scene/main/scene_tree.cpp scene/resources/multimesh.cpp
-msgid "Physics Interpolation"
-msgstr ""
-
-#: main/main.cpp
-msgid "Enable Warnings"
-msgstr ""
-
-#: main/main.cpp
-msgid "Frame Delay Msec"
-msgstr ""
-
-#: main/main.cpp
-msgid "Low Processor Mode"
-msgstr ""
-
-#: main/main.cpp
-msgid "Delta Sync After Draw"
-msgstr ""
-
-#: main/main.cpp
-msgid "iOS"
-msgstr ""
-
-#: main/main.cpp
-msgid "Hide Home Indicator"
-msgstr ""
-
-#: main/main.cpp
-msgid "Input Devices"
-msgstr ""
-
-#: main/main.cpp
-msgid "Pointing"
-msgstr ""
-
-#: main/main.cpp
-msgid "Touch Delay"
-msgstr ""
-
-#: main/main.cpp servers/visual_server.cpp
-msgid "GLES3"
-msgstr ""
-
-#: main/main.cpp servers/visual_server.cpp
-msgid "Shaders"
-msgstr ""
-
-#: main/main.cpp
-msgid "Debug Shader Fallbacks"
-msgstr ""
-
-#: main/main.cpp scene/3d/baked_lightmap.cpp scene/3d/camera.cpp
-#: scene/3d/world_environment.cpp scene/main/scene_tree.cpp
-#: scene/resources/world.cpp
-msgid "Environment"
-msgstr ""
-
-#: main/main.cpp
-msgid "Default Clear Color"
-msgstr ""
-
-#: main/main.cpp
-msgid "Boot Splash"
-msgstr ""
-
-#: main/main.cpp
-msgid "Show Image"
-msgstr ""
-
-#: main/main.cpp
-msgid "Image"
-msgstr ""
-
-#: main/main.cpp
-msgid "Fullsize"
-msgstr ""
-
-#: main/main.cpp scene/resources/dynamic_font.cpp
-msgid "Use Filter"
-msgstr ""
-
-#: main/main.cpp scene/resources/style_box.cpp
-msgid "BG Color"
-msgstr ""
-
-#: main/main.cpp
-msgid "macOS Native Icon"
-msgstr ""
-
-#: main/main.cpp
-msgid "Windows Native Icon"
-msgstr ""
-
-#: main/main.cpp
-msgid "Buffering"
-msgstr ""
-
-#: main/main.cpp
-msgid "Agile Event Flushing"
-msgstr ""
-
-#: main/main.cpp
-msgid "Emulate Touch From Mouse"
-msgstr ""
-
-#: main/main.cpp
-msgid "Emulate Mouse From Touch"
-msgstr ""
-
-#: main/main.cpp
-msgid "Mouse Cursor"
-msgstr ""
-
-#: main/main.cpp
-msgid "Custom Image"
-msgstr ""
-
-#: main/main.cpp
-msgid "Custom Image Hotspot"
-msgstr ""
-
-#: main/main.cpp
-msgid "Tooltip Position Offset"
-msgstr ""
-
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
-msgid "Debugger Agent"
-msgstr ""
-
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
-msgid "Wait For Debugger"
-msgstr ""
-
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
-msgid "Wait Timeout"
-msgstr ""
-
-#: main/main.cpp
-msgid "Runtime"
-msgstr ""
-
-#: main/main.cpp
-msgid "Unhandled Exception Policy"
-msgstr ""
-
-#: main/main.cpp
-msgid "Main Loop Type"
-msgstr ""
-
-#: main/main.cpp scene/gui/texture_progress.cpp
-#: scene/gui/viewport_container.cpp
-msgid "Stretch"
-msgstr ""
-
-#: main/main.cpp
-msgid "Aspect"
-msgstr ""
-
-#: main/main.cpp
-msgid "Shrink"
-msgstr ""
-
-#: main/main.cpp scene/main/scene_tree.cpp
-msgid "Auto Accept Quit"
-msgstr ""
-
-#: main/main.cpp scene/main/scene_tree.cpp
-msgid "Quit On Go Back"
-msgstr ""
-
-#: main/main.cpp scene/main/viewport.cpp
-msgid "Snap Controls To Pixels"
-msgstr ""
-
-#: main/main.cpp
-msgid "Dynamic Fonts"
-msgstr ""
-
-#: main/main.cpp
-msgid "Use Oversampling"
-msgstr ""
-
-#: modules/bullet/register_types.cpp modules/bullet/space_bullet.cpp
-msgid "Active Soft World"
-msgstr ""
-
-#: modules/csg/csg_gizmos.cpp
-msgid "CSG"
-msgstr ""
-
-#: modules/csg/csg_gizmos.cpp
-msgid "Change Cylinder Radius"
-msgstr ""
-
-#: modules/csg/csg_gizmos.cpp
-msgid "Change Cylinder Height"
-msgstr ""
-
-#: modules/csg/csg_gizmos.cpp
-msgid "Change Torus Inner Radius"
-msgstr ""
-
-#: modules/csg/csg_gizmos.cpp
-msgid "Change Torus Outer Radius"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Operation"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Calculate Tangents"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Use Collision"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp servers/physics_2d_server.cpp
-msgid "Collision Layer"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp scene/2d/ray_cast_2d.cpp scene/3d/camera.cpp
-#: scene/3d/ray_cast.cpp scene/3d/spring_arm.cpp
-#: scene/resources/navigation_mesh.cpp servers/physics_server.cpp
-msgid "Collision Mask"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Invert Faces"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp scene/2d/navigation_agent_2d.cpp
-#: scene/2d/navigation_obstacle_2d.cpp scene/3d/navigation_agent.cpp
-#: scene/3d/navigation_obstacle.cpp scene/3d/vehicle_body.cpp
-#: scene/animation/root_motion_view.cpp scene/resources/capsule_shape.cpp
-#: scene/resources/capsule_shape_2d.cpp scene/resources/circle_shape_2d.cpp
-#: scene/resources/cylinder_shape.cpp scene/resources/environment.cpp
-#: scene/resources/navigation_mesh.cpp scene/resources/primitive_meshes.cpp
-#: scene/resources/sphere_shape.cpp
-msgid "Radius"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp scene/resources/primitive_meshes.cpp
-msgid "Radial Segments"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp scene/resources/primitive_meshes.cpp
-msgid "Rings"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Smooth Faces"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Sides"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Cone"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Inner Radius"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Outer Radius"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Ring Sides"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
-#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
-msgid "Polygon"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Spin Degrees"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Spin Sides"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Node"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Interval Type"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Interval"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Simplify Angle"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Rotation"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Local"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Continuous U"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path U Distance"
-msgstr ""
-
-#: modules/csg/csg_shape.cpp
-msgid "Path Joined"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "Compression Mode"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "Transfer Channel"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "Channel Count"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "Always Ordered"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "Server Relay"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "DTLS Verify"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "DTLS Hostname"
-msgstr ""
-
-#: modules/enet/networked_multiplayer_enet.cpp
-msgid "Use DTLS"
-msgstr ""
-
-#: modules/fbx/editor_scene_importer_fbx.cpp
-msgid "FBX"
-msgstr ""
-
-#: modules/fbx/editor_scene_importer_fbx.cpp
-msgid "Use FBX"
-msgstr ""
-
-#: modules/gdnative/gdnative.cpp
-msgid "Config File"
-msgstr ""
-
-#: modules/gdnative/gdnative.cpp
-msgid "Load Once"
-msgstr ""
-
-#: modules/gdnative/gdnative.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Singleton"
-msgstr ""
-
-#: modules/gdnative/gdnative.cpp
-msgid "Symbol Prefix"
-msgstr ""
-
-#: modules/gdnative/gdnative.cpp
-msgid "Reloadable"
-msgstr ""
-
-#: modules/gdnative/gdnative.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-#: modules/gdnative/nativescript/nativescript.cpp
-msgid "Library"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Select the dynamic library for this entry"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Select dependencies of the library for this entry"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Remove current entry"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Double click to create a new entry"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Platform:"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Platform"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Dynamic Library"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "Add an architecture entry"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_editor_plugin.cpp
-msgid "GDNativeLibrary"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Enabled GDNative Singleton"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Disabled GDNative Singleton"
-msgstr ""
-
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
-msgstr ""
-
-#: modules/gdnative/nativescript/nativescript.cpp
-msgid "Class Name"
-msgstr ""
-
-#: modules/gdnative/nativescript/nativescript.cpp
-msgid "Script Class"
-msgstr ""
-
-#: modules/gdnative/nativescript/nativescript.cpp
-msgid "Icon Path"
-msgstr ""
-
-#: modules/gdnative/register_types.cpp
-msgid "GDNative"
-msgstr ""
-
-#: modules/gdscript/editor/gdscript_highlighter.cpp
-#: modules/gdscript/gdscript.cpp
-msgid "GDScript"
-msgstr ""
-
-#: modules/gdscript/editor/gdscript_highlighter.cpp
-msgid "Function Definition Color"
-msgstr ""
-
-#: modules/gdscript/editor/gdscript_highlighter.cpp
-msgid "Node Path Color"
-msgstr ""
-
-#: modules/gdscript/gdscript.cpp modules/visual_script/visual_script.cpp
-msgid "Max Call Stack"
-msgstr ""
-
-#: modules/gdscript/gdscript.cpp
-msgid "Treat Warnings As Errors"
-msgstr ""
-
-#: modules/gdscript/gdscript.cpp
-msgid "Exclude Addons"
-msgstr ""
-
-#: modules/gdscript/gdscript.cpp
-msgid "Autocomplete Setters And Getters"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Step argument is zero!"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Not a script with an instance"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Not based on a script"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Not based on a resource file"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Invalid instance dictionary format (missing @path)"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Invalid instance dictionary format (can't load script at @path)"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Invalid instance dictionary format (invalid script at @path)"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Invalid instance dictionary (invalid subclasses)"
-msgstr ""
-
-#: modules/gdscript/gdscript_functions.cpp
-msgid "Object can't provide a length."
-msgstr ""
-
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-msgid "Language Server"
-msgstr ""
-
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-msgid "Enable Smart Resolve"
-msgstr ""
-
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-msgid "Show Native Symbols In Editor"
-msgstr ""
-
-#: modules/gdscript/language_server/gdscript_language_server.cpp
-msgid "Use Thread"
-msgstr ""
-
-#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
-msgid "Export Mesh GLTF2"
-msgstr ""
-
-#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
-msgid "Export GLTF..."
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Buffer View"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp modules/gltf/gltf_buffer_view.cpp
-msgid "Byte Offset"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Component Type"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Normalized"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Count"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp scene/resources/visual_shader_nodes.cpp
-msgid "Min"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp scene/resources/visual_shader_nodes.cpp
-msgid "Max"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Sparse Count"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Sparse Indices Buffer View"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Sparse Indices Byte Offset"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Sparse Indices Component Type"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Sparse Values Buffer View"
-msgstr ""
-
-#: modules/gltf/gltf_accessor.cpp
-msgid "Sparse Values Byte Offset"
-msgstr ""
-
-#: modules/gltf/gltf_buffer_view.cpp
-msgid "Buffer"
-msgstr ""
-
-#: modules/gltf/gltf_buffer_view.cpp
-msgid "Byte Length"
-msgstr ""
-
-#: modules/gltf/gltf_buffer_view.cpp
-msgid "Byte Stride"
-msgstr ""
-
-#: modules/gltf/gltf_buffer_view.cpp
-msgid "Indices"
-msgstr ""
-
-#: modules/gltf/gltf_camera.cpp
-msgid "FOV Size"
-msgstr ""
-
-#: modules/gltf/gltf_camera.cpp
-msgid "Zfar"
-msgstr ""
-
-#: modules/gltf/gltf_camera.cpp
-msgid "Znear"
-msgstr ""
-
-#: modules/gltf/gltf_light.cpp scene/2d/canvas_modulate.cpp
-#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/light.cpp
-#: scene/animation/root_motion_view.cpp scene/gui/color_picker.cpp
-#: scene/gui/color_rect.cpp scene/gui/rich_text_effect.cpp
-#: scene/resources/environment.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp
-msgid "Color"
-msgstr ""
-
-#: modules/gltf/gltf_light.cpp scene/3d/reflection_probe.cpp
-#: scene/resources/environment.cpp
-msgid "Intensity"
-msgstr ""
-
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
-msgid "Range"
-msgstr ""
-
-#: modules/gltf/gltf_light.cpp
-msgid "Inner Cone Angle"
-msgstr ""
-
-#: modules/gltf/gltf_light.cpp
-msgid "Outer Cone Angle"
-msgstr ""
-
-#: modules/gltf/gltf_mesh.cpp
-msgid "Blend Weights"
-msgstr ""
-
-#: modules/gltf/gltf_mesh.cpp
-msgid "Instance Materials"
-msgstr ""
-
-#: modules/gltf/gltf_node.cpp scene/3d/skeleton.cpp
-msgid "Parent"
-msgstr ""
-
-#: modules/gltf/gltf_node.cpp
-msgid "Xform"
-msgstr ""
-
-#: modules/gltf/gltf_node.cpp scene/3d/mesh_instance.cpp
-msgid "Skin"
-msgstr ""
-
-#: modules/gltf/gltf_node.cpp scene/3d/spatial.cpp
-msgid "Translation"
-msgstr ""
-
-#: modules/gltf/gltf_node.cpp
-msgid "Children"
-msgstr ""
-
-#: modules/gltf/gltf_skeleton.cpp modules/gltf/gltf_skin.cpp
-msgid "Joints"
-msgstr ""
-
-#: modules/gltf/gltf_skeleton.cpp modules/gltf/gltf_skin.cpp
-msgid "Roots"
-msgstr ""
-
-#: modules/gltf/gltf_skeleton.cpp modules/gltf/gltf_state.cpp
-msgid "Unique Names"
-msgstr ""
-
-#: modules/gltf/gltf_skeleton.cpp
-msgid "Godot Bone Node"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Skin Root"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Joints Original"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Inverse Binds"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Non Joints"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Joint I To Bone I"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Joint I To Name"
-msgstr ""
-
-#: modules/gltf/gltf_skin.cpp
-msgid "Godot Skin"
-msgstr ""
-
-#: modules/gltf/gltf_spec_gloss.cpp
-msgid "Diffuse Img"
-msgstr ""
-
-#: modules/gltf/gltf_spec_gloss.cpp
-msgid "Diffuse Factor"
-msgstr ""
-
-#: modules/gltf/gltf_spec_gloss.cpp
-msgid "Gloss Factor"
-msgstr ""
-
-#: modules/gltf/gltf_spec_gloss.cpp
-msgid "Specular Factor"
-msgstr ""
-
-#: modules/gltf/gltf_spec_gloss.cpp
-msgid "Spec Gloss Img"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Json"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Major Version"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Minor Version"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "GLB Data"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Use Named Skin Binds"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Buffer Views"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Accessors"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Scene Name"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Root Nodes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp scene/2d/particles_2d.cpp
-#: scene/gui/texture_button.cpp scene/gui/texture_progress.cpp
-msgid "Textures"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
-msgid "Images"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Cameras"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp servers/visual_server.cpp
-msgid "Lights"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Unique Animation Names"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Skeletons"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Skeleton To Node"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Animations"
-msgstr ""
-
-#: modules/gltf/gltf_texture.cpp
-msgid "Src Image"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp
-msgid "Physics Material"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
-msgid "Use In Baked Light"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
-msgid "Cell"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp
-msgid "Octant Size"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp
-msgid "Center X"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp
-msgid "Center Y"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp
-msgid "Center Z"
-msgstr ""
-
-#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
-#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
-#: scene/resources/material.cpp
-msgid "Mask"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Next Plane"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Previous Plane"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Plane:"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Next Floor"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Previous Floor"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Floor:"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Delete Selection"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Fill Selection"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paste Selection"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Selection"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Snap View"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Clip Disabled"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Clip Above"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Clip Below"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Edit X Axis"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Edit Y Axis"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Edit Z Axis"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Rotate X"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Rotate Y"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Rotate Z"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Back Rotate X"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Back Rotate Y"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Back Rotate Z"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Cursor Clear Rotation"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Paste Selects"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Clear Selection"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Fill Selection"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Settings"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Pick Distance:"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Filter meshes"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Give a MeshLibrary resource to this GridMap to use its meshes."
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Begin Bake"
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Preparing data structures"
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Generate buffers"
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Direct lighting"
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Indirect lighting"
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Post processing"
-msgstr ""
-
-#: modules/lightmapper_cpu/lightmapper_cpu.cpp
-msgid "Plotting lightmaps"
-msgstr ""
-
-#: modules/lightmapper_cpu/register_types.cpp
-msgid "CPU Lightmapper"
-msgstr ""
-
-#: modules/lightmapper_cpu/register_types.cpp
-msgid "Low Quality Ray Count"
-msgstr ""
-
-#: modules/lightmapper_cpu/register_types.cpp
-msgid "Medium Quality Ray Count"
-msgstr ""
-
-#: modules/lightmapper_cpu/register_types.cpp
-msgid "High Quality Ray Count"
-msgstr ""
-
-#: modules/lightmapper_cpu/register_types.cpp
-msgid "Ultra Quality Ray Count"
-msgstr ""
-
-#: modules/minimp3/audio_stream_mp3.cpp
-#: modules/minimp3/resource_importer_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
-#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
-msgid "Loop Offset"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "Eye Height"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "IOD"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "Display Width"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "Display To Lens"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "Oversample"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "K1"
-msgstr ""
-
-#: modules/mobile_vr/mobile_vr_interface.cpp
-msgid "K2"
-msgstr ""
-
-#: modules/mono/csharp_script.cpp
-msgid "Class name can't be a reserved keyword"
-msgstr ""
-
-#: modules/mono/csharp_script.cpp
-msgid "Build Solution"
-msgstr ""
-
-#: modules/mono/editor/csharp_project.cpp
-msgid "Auto Update Project"
-msgstr ""
-
-#: modules/mono/mono_gd/gd_mono_utils.cpp
-msgid "End of inner exception stack trace"
-msgstr ""
-
-#: modules/navigation/navigation_mesh_editor_plugin.cpp
-#: scene/3d/navigation_mesh_instance.cpp
-msgid "A NavigationMesh resource must be set or created for this node to work."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_editor_plugin.cpp
-msgid "Bake NavMesh"
-msgstr ""
-
-#: modules/navigation/navigation_mesh_editor_plugin.cpp
-msgid "Clear the navigation mesh."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Setting up Configuration..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Calculating grid size..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Creating heightfield..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Marking walkable triangles..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Constructing compact heightfield..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Eroding walkable area..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Partitioning..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Creating contours..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Creating polymesh..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Converting to native navigation mesh..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Navigation Mesh Generator Setup:"
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Parsing Geometry..."
-msgstr ""
-
-#: modules/navigation/navigation_mesh_generator.cpp
-msgid "Done!"
-msgstr ""
-
-#: modules/opensimplex/noise_texture.cpp
-msgid "Seamless"
-msgstr ""
-
-#: modules/opensimplex/noise_texture.cpp
-msgid "As Normal Map"
-msgstr ""
-
-#: modules/opensimplex/noise_texture.cpp
-msgid "Bump Strength"
-msgstr ""
-
-#: modules/opensimplex/noise_texture.cpp
-msgid "Noise"
-msgstr ""
-
-#: modules/opensimplex/noise_texture.cpp
-msgid "Noise Offset"
-msgstr ""
-
-#: modules/opensimplex/open_simplex_noise.cpp
-msgid "Octaves"
-msgstr ""
-
-#: modules/opensimplex/open_simplex_noise.cpp
-msgid "Period"
-msgstr ""
-
-#: modules/opensimplex/open_simplex_noise.cpp
-msgid "Persistence"
-msgstr ""
-
-#: modules/opensimplex/open_simplex_noise.cpp
-msgid "Lacunarity"
-msgstr ""
-
-#: modules/regex/regex.cpp
-msgid "Subject"
-msgstr ""
-
-#: modules/regex/regex.cpp
-msgid "Names"
-msgstr ""
-
-#: modules/regex/regex.cpp
-msgid "Strings"
-msgstr ""
-
-#: modules/upnp/upnp.cpp
-msgid "Discover Multicast If"
-msgstr ""
-
-#: modules/upnp/upnp.cpp
-msgid "Discover Local Port"
-msgstr ""
-
-#: modules/upnp/upnp.cpp
-msgid "Discover IPv6"
-msgstr ""
-
-#: modules/upnp/upnp_device.cpp
-msgid "Description URL"
-msgstr ""
-
-#: modules/upnp/upnp_device.cpp
-msgid "Service Type"
-msgstr ""
-
-#: modules/upnp/upnp_device.cpp
-msgid "IGD Control URL"
-msgstr ""
-
-#: modules/upnp/upnp_device.cpp
-msgid "IGD Service Type"
-msgstr ""
-
-#: modules/upnp/upnp_device.cpp
-msgid "IGD Our Addr"
-msgstr ""
-
-#: modules/upnp/upnp_device.cpp
-msgid "IGD Status"
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid ""
-"A node yielded without working memory, please read the docs on how to yield "
-"properly!"
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid ""
-"Node yielded, but did not return a function state in the first working "
-"memory."
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid ""
-"Return value must be assigned to first element of node working memory! Fix "
-"your node please."
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid "Found sequence bit but not the node in the stack, report bug!"
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
-msgstr ""
-
-#: modules/visual_script/visual_script.cpp
-msgid "Visual Script"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Signal Arguments"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Argument Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Argument name"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Set Variable Default Value"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Set Variable Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Input Port"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Output Port"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Port Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Port Name"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Override an existing built-in function."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Create a new function."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Variables:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Create a new variable."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Signals:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Create a new signal."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Name is not a valid identifier:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Name already in use by another func/var/signal:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Rename Function"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Rename Variable"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Rename Signal"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Function"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Delete input port"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Variable"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Signal"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Input Port"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Output Port"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Expression"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Can't copy the function node."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Paste VisualScript Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove VisualScript Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Duplicate VisualScript Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Hold %s to drop a Getter. Hold Shift to drop a generic signature."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Hold %s to drop a simple reference to the node."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Hold Ctrl to drop a simple reference to the node."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Hold %s to drop a Variable Setter."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Hold Ctrl to drop a Variable Setter."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Preload Node"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Node(s)"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Node(s) From Tree"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid ""
-"Can't drop properties because script '%s' is not used in this scene.\n"
-"Drop holding 'Shift' to just copy the signature."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Getter Property"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Setter Property"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Base Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Move Node(s)"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove VisualScript Node"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Connect Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Disconnect Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Connect Node Data"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Connect Node Sequence"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Script already has function '%s'"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Input Value"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Resize Comment"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Can't create function with a function node."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Can't create function of nodes from nodes of multiple functions."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Select at least one node with sequence port."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Try to only have one sequence input in selection."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Create Function"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Make Tool:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Members:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Base Type:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Nodes..."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Function..."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "function_name"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Select or create a function to edit its graph."
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Delete Selected"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Find Node Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Copy Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Cut Nodes"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Make Function"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Refresh Graph"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit Member"
-msgstr ""
-
-#: modules/visual_script/visual_script_expression.cpp
-#: scene/resources/visual_shader.cpp
-msgid "Expression"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Return"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Return Enabled"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Return Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Condition"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "if (cond) is:"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "While"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "while (cond):"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "for (elem) in (input):"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Sequence"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "in order:"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Steps"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Switch"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "'input' is:"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Type Cast"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Is %s?"
-msgstr ""
-
-#: modules/visual_script/visual_script_flow_control.cpp
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Base Script"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "On %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "On Self"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Call Mode"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Basic Type"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Node Path"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Use Default Args"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Validate"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "RPC Call Mode"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Subtract %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Multiply %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Divide %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Mod %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "ShiftLeft %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "ShiftRight %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "BitAnd %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "BitOr %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "BitXor %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Set Mode"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Assign Op"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-#: modules/visual_script/visual_script_nodes.cpp
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Get %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Invalid index property name."
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Base object is not a Node!"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Path does not lead to Node!"
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Invalid index property name '%s' in node %s."
-msgstr ""
-
-#: modules/visual_script/visual_script_func_nodes.cpp
-msgid "Emit %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Compose Array"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp scene/resources/material.cpp
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Operator"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "a if cond, else b"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Var Name"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Preload"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Get Index"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Set Index"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Global Constant"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Class Constant"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Basic Constant"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Math Constant"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Get Engine Singleton"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Get Scene Node"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Get Scene Tree"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Get Self"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "CustomNode"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Custom node has no _step() method, can't process graph."
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid ""
-"Invalid return value from _step(), must be integer (seq out), or string "
-"(error)."
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "SubCall"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp scene/gui/graph_node.cpp
-msgid "Title"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Construct %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Get Local Var"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Set Local Var"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Action %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "Deconstruct %s"
-msgstr ""
-
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Search VisualScript"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Yield"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Wait"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Next Frame"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "Next Physics Frame"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "%s sec(s)"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp scene/main/timer.cpp
-msgid "Wait Time"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "WaitSignal"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "WaitNodeSignal"
-msgstr ""
-
-#: modules/visual_script/visual_script_yield_nodes.cpp
-msgid "WaitInstanceSignal"
-msgstr ""
-
-#: modules/webrtc/webrtc_data_channel.cpp
-msgid "Write Mode"
-msgstr ""
-
-#: modules/webrtc/webrtc_data_channel.h
-msgid "WebRTC"
-msgstr ""
-
-#: modules/webrtc/webrtc_data_channel.h
-msgid "Max Channel In Buffer (KB)"
-msgstr ""
-
-#: modules/websocket/websocket_client.cpp
-msgid "Verify SSL"
-msgstr ""
-
-#: modules/websocket/websocket_client.cpp
-msgid "Trusted SSL Certificate"
-msgstr ""
-
-#: modules/websocket/websocket_macros.h
-msgid "WebSocket Client"
-msgstr ""
-
-#: modules/websocket/websocket_macros.h
-msgid "Max In Buffer (KB)"
-msgstr ""
-
-#: modules/websocket/websocket_macros.h
-msgid "Max In Packets"
-msgstr ""
-
-#: modules/websocket/websocket_macros.h
-msgid "Max Out Buffer (KB)"
-msgstr ""
-
-#: modules/websocket/websocket_macros.h
-msgid "Max Out Packets"
-msgstr ""
-
-#: modules/websocket/websocket_macros.h
-msgid "WebSocket Server"
-msgstr ""
-
-#: modules/websocket/websocket_server.cpp
-msgid "Bind IP"
-msgstr ""
-
-#: modules/websocket/websocket_server.cpp
-msgid "Private Key"
-msgstr ""
-
-#: modules/websocket/websocket_server.cpp platform/javascript/export/export.cpp
-msgid "SSL Certificate"
-msgstr ""
-
-#: modules/websocket/websocket_server.cpp
-msgid "CA Chain"
-msgstr ""
-
-#: modules/websocket/websocket_server.cpp
-msgid "Handshake Timeout"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Session Mode"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Required Features"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Optional Features"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Requested Reference Space Types"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Reference Space Type"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Visibility State"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "Bounds Geometry"
-msgstr ""
-
-#: modules/webxr/webxr_interface.cpp
-msgid "XR Standard Mapping"
-msgstr ""
-
-#: platform/android/export/export.cpp
-msgid "Android SDK Path"
-msgstr ""
-
-#: platform/android/export/export.cpp
-msgid "Debug Keystore"
-msgstr ""
-
-#: platform/android/export/export.cpp
-msgid "Debug Keystore User"
-msgstr ""
-
-#: platform/android/export/export.cpp
-msgid "Debug Keystore Pass"
-msgstr ""
-
-#: platform/android/export/export.cpp
-msgid "Force System User"
-msgstr ""
-
-#: platform/android/export/export.cpp
-msgid "Shutdown ADB On Exit"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Launcher Icons"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Main 192 X 192"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Adaptive Foreground 432 X 432"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Adaptive Background 432 X 432"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Package name is missing."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Package segments must be of non-zero length."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "The character '%s' is not allowed in Android application package names."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "A digit cannot be the first character in a package segment."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "The character '%s' cannot be the first character in a package segment."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "The package must have at least one '.' separator."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Use Custom Build"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Export Format"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
-msgid "Architectures"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Keystore"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Debug User"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
-msgid "Debug Password"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Release User"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Release Password"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "One Click Deploy"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Clear Previous Install"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Code"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Min SDK"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Target SDK"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
-msgid "Package"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
-msgid "Unique Name"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Signed"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Classify As Game"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Retain Data On Uninstall"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Exclude From Recents"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Graphics"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "OpenGL Debug"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "XR Features"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "XR Mode"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Hand Tracking"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Hand Tracking Frequency"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Passthrough"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Immersive Mode"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Support Small"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Support Normal"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Support Large"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Support Xlarge"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "User Data Backup"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Allow"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
-msgid "Command Line"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
-msgid "Extra Args"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "APK Expansion"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Salt"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Public Key"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Permissions"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Custom Permissions"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Select device from the list"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Running on %s"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Exporting APK..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Uninstalling..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Installing to device, please wait..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not install to device: %s"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Running on device..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not execute on device."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Android build template not installed in the project. Install it from the "
-"Project menu."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Either Debug Keystore, Debug User AND Debug Password settings must be "
-"configured OR none of them."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Debug keystore not configured in the Editor Settings nor in the preset."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Either Release Keystore, Release User AND Release Password settings must be "
-"configured OR none of them."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Release keystore incorrectly configured in the export preset."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "A valid Android SDK path is required in Editor Settings."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Invalid Android SDK path in Editor Settings."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Missing 'platform-tools' directory!"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Unable to find Android SDK platform-tools' adb command."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Please check in the Android SDK directory specified in Editor Settings."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Missing 'build-tools' directory!"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Unable to find Android SDK build-tools' apksigner command."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Invalid public key for APK expansion."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Invalid package name:"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Invalid \"GodotPaymentV3\" module included in the \"android/modules\" "
-"project setting (changed in Godot 3.2.2).\n"
-"Replace it with the first-party \"GodotGooglePlayBilling\" plugin.\n"
-"Note that the singleton was also renamed from \"GodotPayments\" to "
-"\"GodotGooglePlayBilling\"."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "\"Use Custom Build\" must be enabled to use the plugins."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"\"Hand Tracking\" is only valid when \"Xr Mode\" is \"Oculus Mobile VrApi\" "
-"or \"OpenXR\"."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "\"Passthrough\" is only valid when \"Xr Mode\" is \"OpenXR\"."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Changing the \"Min Sdk\" is only valid when \"Use Custom Build\" is enabled."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Changing the \"Target Sdk\" is only valid when \"Use Custom Build\" is "
-"enabled."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Signing debug %s..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Signing release %s..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not find keystore, unable to export."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "'apksigner' returned with error #%d"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Verifying %s..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "'apksigner' verification of %s failed."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Exporting for Android"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Invalid filename! Android App Bundle requires the *.aab extension."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "APK Expansion not compatible with Android App Bundle."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Invalid filename! Android APK requires the *.apk extension."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Trying to build from a custom built template, but no version info for it "
-"exists. Please reinstall from the 'Project' menu."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
-"Please reinstall Android build template from 'Project' menu."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not write expansion package file!"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Building Android Project (gradle)"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Building of Android project failed, check output for the error.\n"
-"Alternatively visit docs.godotengine.org for Android build documentation."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Moving output"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Unable to copy and rename export file, check gradle project directory for "
-"outputs."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Creating APK..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
-"Please build a template with all required libraries, or uncheck the missing "
-"architectures in the export preset."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Adding files..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Aligning APK..."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
-msgid "Could not unzip temporary unaligned APK."
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Identifier is missing."
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "The character '%s' is not allowed in Identifier."
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Landscape Launch Screens"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 2436 X 1125"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 2208 X 1242"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 1024 X 768"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 2048 X 1536"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Portrait Launch Screens"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 640 X 960"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 640 X 1136"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 750 X 1334"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 1125 X 2436"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 768 X 1024"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 1536 X 2048"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 1242 X 2208"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "App Store Team ID"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Provisioning Profile UUID Debug"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Code Sign Identity Debug"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Export Method Debug"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Provisioning Profile UUID Release"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Code Sign Identity Release"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Export Method Release"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Targeted Device Family"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Info"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Identifier"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-#, fuzzy
-msgid "Signature"
-msgstr "Amẓ"
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Short Version"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-#: platform/windows/export/export.cpp
-msgid "Copyright"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Capabilities"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Access Wi-Fi"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Push Notifications"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "User Data"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Accessible From Files App"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Accessible From iTunes Sharing"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Privacy"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Camera Usage Description"
-msgstr ""
-
-#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
-msgid "Microphone Usage Description"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Photolibrary Usage Description"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 120 X 120"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPhone 180 X 180"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 76 X 76"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 152 X 152"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "iPad 167 X 167"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "App Store 1024 X 1024"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Spotlight 40 X 40"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Spotlight 80 X 80"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Storyboard"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Use Launch Screen Storyboard"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Image Scale Mode"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Custom Image @2x"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Custom Image @3x"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Use Custom BG Color"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Custom BG Color"
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "App Store Team ID not specified - cannot configure the project."
-msgstr ""
-
-#: platform/iphone/export/export.cpp
-msgid "Invalid Identifier:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Stop HTTP Server"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Run in Browser"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Run exported HTML in the system's default browser."
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Variant"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Export Type"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "VRAM Texture Compression"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "For Desktop"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "For Mobile"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "HTML"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Export Icon"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Custom HTML Shell"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Head Include"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Canvas Resize Policy"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Focus Canvas On Start"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Experimental Virtual Keyboard"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Progressive Web App"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Offline Page"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Icon 144 X 144"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Icon 180 X 180"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Icon 512 X 512"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Web"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "HTTP Host"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "HTTP Port"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "Use SSL"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
-msgid "SSL Key"
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Can't get filesystem access."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to get Info.plist hash."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Invalid Info.plist, no exe name."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Invalid Info.plist, no bundle id."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Invalid Info.plist, can't load."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to create \"%s\" subfolder."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to extract thin binary."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Invalid binary format."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Already signed!"
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to process nested resources."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to create _CodeSignature subfolder."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to get CodeResources hash."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp platform/osx/export/export.cpp
-msgid "Invalid entitlements file."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Invalid executable file."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Can't resize signature load command."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Failed to create fat binary."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Unknown bundle type."
-msgstr ""
-
-#: platform/osx/export/codesign.cpp
-msgid "Unknown object type."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "App Category"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "High Res"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Location Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Address Book Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Calendar Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Photos Library Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Desktop Folder Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Documents Folder Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Downloads Folder Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Network Volumes Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Removable Volumes Usage Description"
-msgstr ""
-
-#: platform/osx/export/export.cpp platform/windows/export/export.cpp
-msgid "Codesign"
-msgstr ""
-
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
-msgid "Identity"
-msgstr ""
-
-#: platform/osx/export/export.cpp platform/windows/export/export.cpp
-#, fuzzy
-msgid "Timestamp"
-msgstr "Akud:"
-
-#: platform/osx/export/export.cpp
-msgid "Hardened Runtime"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Replace Existing Signature"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Entitlements"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Custom File"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Allow JIT Code Execution"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Allow Unsigned Executable Memory"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Allow Dyld Environment Variables"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Disable Library Validation"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Audio Input"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Address Book"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Calendars"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Photos Library"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Apple Events"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Debugging"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "App Sandbox"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Network Server"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Network Client"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Device USB"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Device Bluetooth"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Files Downloads"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Files Pictures"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Files Music"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Files Movies"
-msgstr ""
-
-#: platform/osx/export/export.cpp platform/windows/export/export.cpp
-msgid "Custom Options"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Apple ID Name"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Apple ID Password"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Apple Team ID"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"You can check progress manually by opening a Terminal and running the "
-"following command:"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Run the following command to staple the notarization ticket to the exported "
-"application (optional):"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "No identity found."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Creating app bundle"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Relative symlinks are not supported on this OS, the exported project might "
-"be broken!"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
-"template archive."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Making PKG"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Ad-hoc signed applications require the 'Disable Library Validation' "
-"entitlement to load dynamic libraries."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Code signing bundle"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Making DMG"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Code signing DMG"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Making ZIP"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Notarization requires the app to be archived first, select the DMG or ZIP "
-"export format instead."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Sending archive for notarization"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Invalid bundle identifier:"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Warning: Built-in \"codesign\" is selected in the Editor Settings. Code "
-"signing is limited to ad-hoc signature only."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Warning: Xcode command line tools are not installed, using built-in "
-"\"codesign\". Code signing is limited to ad-hoc signature only."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization: Notarization with an ad-hoc signature is not supported."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization: Code signing is required for notarization."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization: Hardened runtime is required for notarization."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization: Timestamp runtime is required for notarization."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization: Apple ID name not specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Notarization: Apple ID password not specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Warning: Notarization is disabled. The exported project will be blocked by "
-"Gatekeeper if it's downloaded from an unknown source."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Code signing is disabled. The exported project will not run on Macs with "
-"enabled Gatekeeper and Apple Silicon powered Macs."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Hardened Runtime is not compatible with ad-hoc signature, and will be "
-"disabled!"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Timestamping is not compatible with ad-hoc signature, and will be disabled!"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Warning: Notarization is not supported from this OS. The exported project "
-"will be blocked by Gatekeeper if it's downloaded from an unknown source."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Privacy: Microphone access is enabled, but usage description is not "
-"specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Privacy: Camera access is enabled, but usage description is not specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Privacy: Location information access is enabled, but usage description is "
-"not specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Privacy: Address book access is enabled, but usage description is not "
-"specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Privacy: Calendar access is enabled, but usage description is not specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid ""
-"Privacy: Photo library access is enabled, but usage description is not "
-"specified."
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "macOS"
-msgstr ""
-
-#: platform/osx/export/export.cpp
-msgid "Force Builtin Codesign"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Architecture"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Display Name"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Short Name"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Publisher"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Publisher Display Name"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Product GUID"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Publisher GUID"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Signing"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Certificate"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Algorithm"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Major"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Minor"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Build"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Revision"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Landscape"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Portrait"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Landscape Flipped"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Portrait Flipped"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Store Logo"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Square 44 X 44 Logo"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Square 71 X 71 Logo"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Square 150 X 150 Logo"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Square 310 X 310 Logo"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Wide 310 X 150 Logo"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Splash Screen"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Tiles"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Show Name On Square 150 X 150"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Show Name On Wide 310 X 150"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Show Name On Square 310 X 310"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid package short name."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid package unique name."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid package publisher display name."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid product GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "UWP"
-msgstr ""
-
-#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
-msgid "Signtool"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Debug Certificate"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Identity Type"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Timestamp Server URL"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Digest Algorithm"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Modify Resources"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "File Version"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Product Version"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Company Name"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Product Name"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "File Description"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Trademarks"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid ""
-"The rcedit tool must be configured in the Editor Settings (Export > Windows "
-"> Rcedit) to change the icon or app information data."
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Invalid icon path:"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Invalid file version:"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Invalid product version:"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Windows"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Rcedit"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Osslsigncode"
-msgstr ""
-
-#: platform/windows/export/export.cpp
-msgid "Wine"
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
-#: scene/resources/texture.cpp
-msgid "Frames"
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp
-msgid ""
-"A SpriteFrames resource must be created or set in the \"Frames\" property in "
-"order for AnimatedSprite to display frames."
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
-#: scene/2d/particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Speed Scale"
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp scene/2d/audio_stream_player_2d.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/sprite_3d.cpp
-#: scene/audio/audio_stream_player.cpp
-msgid "Playing"
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-msgid "Centered"
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/texture_button.cpp scene/gui/texture_rect.cpp
-msgid "Flip H"
-msgstr ""
-
-#: scene/2d/animated_sprite.cpp scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/texture_button.cpp scene/gui/texture_rect.cpp
-msgid "Flip V"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Monitoring"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Monitorable"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Physics Overrides"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Space Override"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Gravity Point"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Gravity Distance Scale"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Gravity Vec"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/2d/cpu_particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Gravity"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Linear Damp"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Angular Damp"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Audio Bus"
-msgstr ""
-
-#: scene/2d/area_2d.cpp scene/3d/area.cpp
-msgid "Override"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
-#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
-msgid "Volume dB"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp
-#: servers/audio/effects/audio_effect_pitch_shift.cpp
-msgid "Pitch Scale"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Autoplay"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp
-msgid "Stream Paused"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
-msgid "Max Distance"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
-msgid "Attenuation"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Bus"
-msgstr ""
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-msgid "Area Mask"
-msgstr ""
-
-#: scene/2d/back_buffer_copy.cpp
-msgid "Copy Mode"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Anchor Mode"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Rotating"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/2d/listener_2d.cpp scene/3d/camera.cpp
-#: scene/3d/listener.cpp scene/animation/animation_blend_tree.cpp
-msgid "Current"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/gui/graph_edit.cpp
-msgid "Zoom"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/main/canvas_layer.cpp
-msgid "Custom Viewport"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/3d/camera.cpp
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp scene/main/timer.cpp
-msgid "Process Mode"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Limit"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
-#: scene/resources/style_box.cpp scene/resources/texture.cpp
-msgid "Left"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
-#: scene/resources/style_box.cpp scene/resources/texture.cpp
-msgid "Right"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
-#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
-#: scene/resources/texture.cpp
-msgid "Bottom"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Smoothed"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Draw Margin"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Drag Margin H Enabled"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Drag Margin V Enabled"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Smoothing"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "H"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "V"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Drag Margin"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Draw Screen"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Draw Limits"
-msgstr ""
-
-#: scene/2d/camera_2d.cpp
-msgid "Draw Drag Margin"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp scene/resources/environment.cpp
-#: scene/resources/material.cpp
-msgid "Blend Mode"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Light Mode"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Particles Animation"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Particles Anim H Frames"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Particles Anim V Frames"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Particles Anim Loop"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp scene/3d/spatial.cpp
-msgid "Visibility"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp scene/3d/spatial.cpp scene/gui/progress_bar.cpp
-#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
-msgid "Visible"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Self Modulate"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Show Behind Parent"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Show On Top"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp scene/2d/light_occluder_2d.cpp
-#: scene/2d/tile_map.cpp
-msgid "Light Mask"
-msgstr ""
-
-#: scene/2d/canvas_item.cpp
-msgid "Use Parent Material"
-msgstr ""
-
-#: scene/2d/canvas_modulate.cpp
-msgid ""
-"Only one visible CanvasModulate is allowed per scene (or set of instanced "
-"scenes). The first created one will work, while the rest will be ignored."
-msgstr ""
-
-#: scene/2d/collision_object_2d.cpp
-msgid ""
-"This node has no shape, so it can't collide or interact with other objects.\n"
-"Consider adding a CollisionShape2D or CollisionPolygon2D as a child to "
-"define its shape."
-msgstr ""
-
-#: scene/2d/collision_object_2d.cpp
-msgid "Pickable"
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp
-msgid ""
-"CollisionPolygon2D only serves to provide a collision shape to a "
-"CollisionObject2D derived node. Please only use it as a child of Area2D, "
-"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape."
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp
-msgid "An empty CollisionPolygon2D has no effect on collision."
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp
-msgid "Invalid polygon. At least 3 points are needed in 'Solids' build mode."
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp
-msgid "Invalid polygon. At least 2 points are needed in 'Segments' build mode."
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp scene/2d/collision_shape_2d.cpp
-msgid ""
-"The One Way Collision property will be ignored when the parent is an Area2D."
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp
-msgid "Build Mode"
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp scene/2d/collision_shape_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/3d/collision_shape.cpp
-#: scene/animation/animation_node_state_machine.cpp scene/gui/base_button.cpp
-#: scene/gui/texture_button.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Disabled"
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp scene/2d/collision_shape_2d.cpp
-msgid "One Way Collision"
-msgstr ""
-
-#: scene/2d/collision_polygon_2d.cpp scene/2d/collision_shape_2d.cpp
-msgid "One Way Collision Margin"
-msgstr ""
-
-#: scene/2d/collision_shape_2d.cpp
-msgid ""
-"CollisionShape2D only serves to provide a collision shape to a "
-"CollisionObject2D derived node. Please only use it as a child of Area2D, "
-"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape."
-msgstr ""
-
-#: scene/2d/collision_shape_2d.cpp
-msgid ""
-"A shape must be provided for CollisionShape2D to function. Please create a "
-"shape resource for it!"
-msgstr ""
-
-#: scene/2d/collision_shape_2d.cpp
-msgid ""
-"Polygon-based shapes are not meant be used nor edited directly through the "
-"CollisionShape2D node. Please use the CollisionPolygon2D node instead."
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp
-msgid ""
-"CPUParticles2D animation requires the usage of a CanvasItemMaterial with "
-"\"Particles Animation\" enabled."
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Emitting"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Lifetime"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp scene/main/timer.cpp
-msgid "One Shot"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Preprocess"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Explosiveness"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Randomness"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Lifetime Randomness"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Fixed FPS"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Fract Delta"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Drawing"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Local Coords"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-msgid "Draw Order"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Emission Shape"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Sphere Radius"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp
-msgid "Rect Extents"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-msgid "Normals"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Align Y"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Direction"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Spread"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Initial Velocity"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Velocity Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
-#: servers/physics_server.cpp
-msgid "Angular Velocity"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Velocity Curve"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Orbit Velocity"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Linear Accel"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Accel"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Accel Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Accel Curve"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Radial Accel"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Tangential Accel"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/physics_body.cpp
-#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Damping"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Damping Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Damping Curve"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
-#: scene/resources/particles_material.cpp
-msgid "Angle"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Angle Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Angle Curve"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-msgid "Scale Amount"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-msgid "Scale Amount Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-msgid "Scale Amount Curve"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Color Ramp"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Color Initial Ramp"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Hue Variation"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Variation"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Variation Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Variation Curve"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Speed Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Speed Curve"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Offset Random"
-msgstr ""
-
-#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/resources/particles_material.cpp
-msgid "Offset Curve"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Node A and Node B must be PhysicsBody2Ds"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Node A must be a PhysicsBody2D"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Node B must be a PhysicsBody2D"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Joint is not connected to two PhysicsBody2Ds"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Node A and Node B must be different PhysicsBody2Ds"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
-msgid "Node A"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
-msgid "Node B"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/3d/light.cpp scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-#: scene/resources/environment.cpp
-msgid "Bias"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Disable Collision"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-msgid "Softness"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp scene/resources/animation.cpp
-#: scene/resources/ray_shape.cpp scene/resources/segment_shape_2d.cpp
-msgid "Length"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp
-msgid "Initial Offset"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
-msgid "Rest Length"
-msgstr ""
-
-#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
-msgid "Stiffness"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid ""
-"A texture with the shape of the light must be supplied to the \"Texture\" "
-"property."
-msgstr ""
-
-#: scene/2d/light_2d.cpp scene/3d/light.cpp scene/gui/reference_rect.cpp
-msgid "Editor Only"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Texture Scale"
-msgstr ""
-
-#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/3d/light.cpp scene/resources/environment.cpp
-#: scene/resources/material.cpp scene/resources/sky.cpp
-msgid "Energy"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Z Min"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Z Max"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Layer Min"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Layer Max"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Item Cull Mask"
-msgstr ""
-
-#: scene/2d/light_2d.cpp scene/3d/light.cpp scene/resources/style_box.cpp
-msgid "Shadow"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Buffer Size"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Gradient Length"
-msgstr ""
-
-#: scene/2d/light_2d.cpp
-msgid "Filter Smooth"
-msgstr ""
-
-#: scene/2d/light_occluder_2d.cpp
-msgid "Closed"
-msgstr ""
-
-#: scene/2d/light_occluder_2d.cpp scene/resources/material.cpp
-msgid "Cull Mode"
-msgstr ""
-
-#: scene/2d/light_occluder_2d.cpp
-msgid ""
-"An occluder polygon must be set (or drawn) for this occluder to take effect."
-msgstr ""
-
-#: scene/2d/light_occluder_2d.cpp
-msgid "The occluder polygon for this occluder is empty. Please draw a polygon."
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Width Curve"
-msgstr ""
-
-#: scene/2d/line_2d.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Default Color"
-msgstr ""
-
-#: scene/2d/line_2d.cpp scene/resources/texture.cpp
-msgid "Fill"
-msgstr ""
-
-#: scene/2d/line_2d.cpp scene/resources/texture.cpp
-msgid "Gradient"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Texture Mode"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Capping"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Joint Mode"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Begin Cap Mode"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "End Cap Mode"
-msgstr ""
-
-#: scene/2d/line_2d.cpp scene/2d/polygon_2d.cpp scene/resources/style_box.cpp
-msgid "Border"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Sharp Limit"
-msgstr ""
-
-#: scene/2d/line_2d.cpp
-msgid "Round Precision"
-msgstr ""
-
-#: scene/2d/line_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Antialiased"
-msgstr ""
-
-#: scene/2d/multimesh_instance_2d.cpp scene/3d/multimesh_instance.cpp
-msgid "Multimesh"
-msgstr ""
-
-#: scene/2d/navigation_2d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/navigation.cpp scene/animation/root_motion_view.cpp
-#: scene/resources/world_2d.cpp servers/physics_2d/physics_2d_server_sw.cpp
-msgid "Cell Size"
-msgstr ""
-
-#: scene/2d/navigation_2d.cpp scene/3d/navigation.cpp
-msgid "Edge Connection Margin"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Target Desired Distance"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Neighbor Dist"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Max Neighbors"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Time Horizon"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Max Speed"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Path Max Distance"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-msgid "Avoidance Enabled"
-msgstr ""
-
-#: scene/2d/navigation_agent_2d.cpp
-msgid ""
-"The NavigationAgent2D can be used only under a Node2D inheriting parent node."
-msgstr ""
-
-#: scene/2d/navigation_obstacle_2d.cpp scene/3d/navigation_obstacle.cpp
-msgid "Estimate Radius"
-msgstr ""
-
-#: scene/2d/navigation_obstacle_2d.cpp
-msgid ""
-"The NavigationObstacle2D only serves to provide collision avoidance to a "
-"Node2D object."
-msgstr ""
-
-#: scene/2d/navigation_polygon.cpp
-msgid ""
-"A NavigationPolygon resource must be set or created for this node to work. "
-"Please set a property or draw a polygon."
-msgstr ""
-
-#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
-msgstr ""
-
-#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
-#: scene/main/canvas_layer.cpp
-msgid "Rotation Degrees"
-msgstr ""
-
-#: scene/2d/node_2d.cpp
-msgid "Global Rotation"
-msgstr ""
-
-#: scene/2d/node_2d.cpp
-msgid "Global Rotation Degrees"
-msgstr ""
-
-#: scene/2d/node_2d.cpp
-msgid "Global Scale"
-msgstr ""
-
-#: scene/2d/node_2d.cpp scene/3d/spatial.cpp
-msgid "Global Transform"
-msgstr ""
-
-#: scene/2d/node_2d.cpp
-msgid "Z As Relative"
-msgstr ""
-
-#: scene/2d/parallax_background.cpp scene/gui/scroll_container.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Scroll"
-msgstr ""
-
-#: scene/2d/parallax_background.cpp
-msgid "Base Offset"
-msgstr ""
-
-#: scene/2d/parallax_background.cpp
-msgid "Base Scale"
-msgstr ""
-
-#: scene/2d/parallax_background.cpp
-msgid "Limit Begin"
-msgstr ""
-
-#: scene/2d/parallax_background.cpp
-msgid "Limit End"
-msgstr ""
-
-#: scene/2d/parallax_background.cpp
-msgid "Ignore Camera Zoom"
-msgstr ""
-
-#: scene/2d/parallax_layer.cpp
-msgid ""
-"ParallaxLayer node only works when set as child of a ParallaxBackground node."
-msgstr ""
-
-#: scene/2d/parallax_layer.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp scene/3d/vehicle_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Motion"
-msgstr ""
-
-#: scene/2d/parallax_layer.cpp
-msgid "Mirroring"
-msgstr ""
-
-#: scene/2d/particles_2d.cpp
-msgid ""
-"GPU-based particles are not supported by the GLES2 video driver.\n"
-"Use the CPUParticles2D node instead. You can use the \"Convert to "
-"CPUParticles2D\" toolbar option for this purpose."
-msgstr ""
-
-#: scene/2d/particles_2d.cpp
-msgid ""
-"On macOS, Particles2D rendering is much slower than CPUParticles2D due to "
-"transform feedback being implemented on the CPU instead of the GPU.\n"
-"Consider using CPUParticles2D instead when targeting macOS.\n"
-"You can use the \"Convert to CPUParticles2D\" toolbar option for this "
-"purpose."
-msgstr ""
-
-#: scene/2d/particles_2d.cpp scene/3d/particles.cpp
-msgid ""
-"A material to process the particles is not assigned, so no behavior is "
-"imprinted."
-msgstr ""
-
-#: scene/2d/particles_2d.cpp
-msgid ""
-"Particles2D animation requires the usage of a CanvasItemMaterial with "
-"\"Particles Animation\" enabled."
-msgstr ""
-
-#: scene/2d/particles_2d.cpp
-msgid "Visibility Rect"
-msgstr ""
-
-#: scene/2d/particles_2d.cpp scene/3d/particles.cpp
-msgid "Process Material"
-msgstr ""
-
-#: scene/2d/path_2d.cpp scene/3d/path.cpp scene/resources/sky.cpp
-#: scene/resources/texture.cpp
-msgid "Curve"
-msgstr ""
-
-#: scene/2d/path_2d.cpp
-msgid "PathFollow2D only works when set as a child of a Path2D node."
-msgstr ""
-
-#: scene/2d/path_2d.cpp scene/3d/path.cpp
-msgid "Unit Offset"
-msgstr ""
-
-#: scene/2d/path_2d.cpp scene/3d/camera.cpp scene/3d/path.cpp
-msgid "H Offset"
-msgstr ""
-
-#: scene/2d/path_2d.cpp scene/3d/camera.cpp scene/3d/path.cpp
-msgid "V Offset"
-msgstr ""
-
-#: scene/2d/path_2d.cpp scene/3d/path.cpp
-msgid "Cubic Interp"
-msgstr ""
-
-#: scene/2d/path_2d.cpp
-msgid "Lookahead"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/visual_instance.cpp
-msgid "Layers"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Constant Linear Velocity"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Constant Angular Velocity"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp scene/3d/physics_body.cpp
-#: scene/resources/physics_material.cpp
-msgid "Friction"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp scene/3d/physics_body.cpp
-#: scene/resources/physics_material.cpp
-msgid "Bounce"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Physics Material Override"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Default Gravity"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
-msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
-"by the physics engine when running.\n"
-"Change the size in children collision shapes instead."
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Mass"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
-msgid "Inertia"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Weight"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Gravity Scale"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Custom Integrator"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Continuous CD"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Contacts Reported"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Contact Monitor"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Sleeping"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Can Sleep"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Damp"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Angular"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
-msgid "Applied Forces"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
-msgid "Torque"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Safe Margin"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Sync To Physics"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving Platform"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Apply Velocity On Leave"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
-#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/default_theme/default_theme.cpp
-#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
-msgid "Normal"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Remainder"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Local Shape"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collider"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collider ID"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collider RID"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collider Shape"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Collider Shape Index"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collider Velocity"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Collider Metadata"
-msgstr ""
-
-#: scene/2d/polygon_2d.cpp
-msgid "Invert"
-msgstr ""
-
-#: scene/2d/polygon_2d.cpp
-msgid "Vertex Colors"
-msgstr ""
-
-#: scene/2d/polygon_2d.cpp
-msgid "Internal Vertex Count"
-msgstr ""
-
-#: scene/2d/position_2d.cpp
-msgid "Gizmo Extents"
-msgstr ""
-
-#: scene/2d/ray_cast_2d.cpp scene/3d/ray_cast.cpp
-msgid "Exclude Parent"
-msgstr ""
-
-#: scene/2d/ray_cast_2d.cpp scene/3d/ray_cast.cpp
-msgid "Cast To"
-msgstr ""
-
-#: scene/2d/ray_cast_2d.cpp scene/3d/ray_cast.cpp
-msgid "Collide With"
-msgstr ""
-
-#: scene/2d/ray_cast_2d.cpp scene/3d/camera.cpp scene/3d/ray_cast.cpp
-msgid "Areas"
-msgstr ""
-
-#: scene/2d/ray_cast_2d.cpp scene/3d/camera.cpp scene/3d/ray_cast.cpp
-msgid "Bodies"
-msgstr ""
-
-#: scene/2d/remote_transform_2d.cpp
-msgid "Path property must point to a valid Node2D node to work."
-msgstr ""
-
-#: scene/2d/remote_transform_2d.cpp scene/3d/remote_transform.cpp
-msgid "Remote Path"
-msgstr ""
-
-#: scene/2d/remote_transform_2d.cpp scene/3d/remote_transform.cpp
-msgid "Use Global Coordinates"
-msgstr ""
-
-#: scene/2d/skeleton_2d.cpp scene/3d/skeleton.cpp
-msgid "Rest"
-msgstr ""
-
-#: scene/2d/skeleton_2d.cpp
-msgid "Default Length"
-msgstr ""
-
-#: scene/2d/skeleton_2d.cpp
-msgid "This Bone2D chain should end at a Skeleton2D node."
-msgstr ""
-
-#: scene/2d/skeleton_2d.cpp
-msgid "A Bone2D only works with a Skeleton2D or another Bone2D as parent node."
-msgstr ""
-
-#: scene/2d/skeleton_2d.cpp
-msgid ""
-"This bone lacks a proper REST pose. Go to the Skeleton2D node and set one."
-msgstr ""
-
-#: scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-msgid "Hframes"
-msgstr ""
-
-#: scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-msgid "Vframes"
-msgstr ""
-
-#: scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-msgid "Frame Coords"
-msgstr ""
-
-#: scene/2d/sprite.cpp scene/resources/texture.cpp
-msgid "Filter Clip"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid ""
-"TileMap with Use Parent on needs a parent CollisionObject2D to give shapes "
-"to. Please use it as a child of Area2D, StaticBody2D, RigidBody2D, "
-"KinematicBody2D, etc. to give them a shape."
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Tile Set"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Quadrant Size"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Custom Transform"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Half Offset"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Tile Origin"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Y Sort"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Show Collision"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Compatibility Mode"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Centered Textures"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Cell Clip UV"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Use Parent"
-msgstr ""
-
-#: scene/2d/tile_map.cpp
-msgid "Use Kinematic"
-msgstr ""
-
-#: scene/2d/touch_screen_button.cpp
-msgid "Shape Centered"
-msgstr ""
-
-#: scene/2d/touch_screen_button.cpp
-msgid "Shape Visible"
-msgstr ""
-
-#: scene/2d/touch_screen_button.cpp
-msgid "Passby Press"
-msgstr ""
-
-#: scene/2d/touch_screen_button.cpp
-msgid "Visibility Mode"
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp
-msgid ""
-"VisibilityEnabler2D works best when used with the edited scene root directly "
-"as parent."
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
-msgid "Pause Animations"
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
-msgid "Freeze Bodies"
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp
-msgid "Pause Particles"
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp
-msgid "Pause Animated Sprites"
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp
-msgid "Process Parent"
-msgstr ""
-
-#: scene/2d/visibility_notifier_2d.cpp
-msgid "Physics Process Parent"
-msgstr ""
-
-#: scene/3d/area.cpp
-msgid "Reverb Bus"
-msgstr ""
-
-#: scene/3d/area.cpp
-msgid "Uniformity"
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid "ARVRCamera must have an ARVROrigin node as its parent."
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid "Controller ID"
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp servers/arvr/arvr_positional_tracker.cpp
-msgid "Rumble"
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid "ARVRController must have an ARVROrigin node as its parent."
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid ""
-"The controller ID must not be 0 or this controller won't be bound to an "
-"actual controller."
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid "Anchor ID"
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid "ARVRAnchor must have an ARVROrigin node as its parent."
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid ""
-"The anchor ID must not be 0 or this anchor won't be bound to an actual "
-"anchor."
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp
-msgid "ARVROrigin requires an ARVRCamera child node."
-msgstr ""
-
-#: scene/3d/arvr_nodes.cpp servers/arvr_server.cpp
-msgid "World Scale"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Attenuation Model"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Unit dB"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Unit Size"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Max dB"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Out Of Range Mode"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Emission Angle"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Degrees"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Filter Attenuation dB"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Attenuation Filter"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_filter.cpp
-msgid "Cutoff Hz"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-#: servers/audio/effects/audio_effect_filter.cpp
-msgid "dB"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Doppler"
-msgstr ""
-
-#: scene/3d/audio_stream_player_3d.cpp
-msgid "Tracking"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/3d/reflection_probe.cpp
-msgid "Interior"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Finding meshes and lights"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Preparing geometry (%d/%d)"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Preparing environment"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Generating capture"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Saving lightmaps"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Done"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/3d/reflection_probe.cpp scene/resources/box_shape.cpp
-#: scene/resources/rectangle_shape_2d.cpp
-msgid "Extents"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Tweaks"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Bounces"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Bounce Indirect Energy"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Use Denoiser"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp scene/resources/texture.cpp
-msgid "Use HDR"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Use Color"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Default Texels Per Unit"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp scene/resources/texture.cpp
-msgid "Atlas"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Generate"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Max Size"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Custom Sky"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Custom Sky Rotation Degrees"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp scene/3d/ray_cast.cpp
-msgid "Custom Color"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Custom Energy"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Min Light"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-msgid "Propagation"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Image Path"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
-msgid "Light Data"
-msgstr ""
-
-#: scene/3d/bone_attachment.cpp scene/3d/physics_body.cpp
-msgid "Bone Name"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Keep Aspect"
-msgstr ""
-
-#: scene/3d/camera.cpp scene/3d/light.cpp scene/3d/reflection_probe.cpp
-msgid "Cull Mask"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Doppler Tracking"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Projection"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "FOV"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Frustum Offset"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Near"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Far"
-msgstr ""
-
-#: scene/3d/camera.cpp scene/3d/collision_polygon.cpp scene/3d/spring_arm.cpp
-#: scene/gui/control.cpp scene/resources/default_theme/default_theme.cpp
-#: scene/resources/shape.cpp scene/resources/style_box.cpp
-#: scene/resources/texture.cpp servers/physics_2d_server.cpp
-#: servers/physics_server.cpp
-msgid "Margin"
-msgstr ""
-
-#: scene/3d/camera.cpp
-msgid "Clip To"
-msgstr ""
-
-#: scene/3d/collision_object.cpp scene/3d/soft_body.cpp
-msgid "Ray Pickable"
-msgstr ""
-
-#: scene/3d/collision_object.cpp
-#, fuzzy
-msgid "Capture On Drag"
-msgstr "Amẓ"
-
-#: scene/3d/collision_object.cpp
-msgid ""
-"This node has no shape, so it can't collide or interact with other objects.\n"
-"Consider adding a CollisionShape or CollisionPolygon as a child to define "
-"its shape."
-msgstr ""
-
-#: scene/3d/collision_polygon.cpp
-msgid ""
-"CollisionPolygon only serves to provide a collision shape to a "
-"CollisionObject derived node. Please only use it as a child of Area, "
-"StaticBody, RigidBody, KinematicBody, etc. to give them a shape."
-msgstr ""
-
-#: scene/3d/collision_polygon.cpp
-msgid "An empty CollisionPolygon has no effect on collision."
-msgstr ""
-
-#: scene/3d/collision_shape.cpp
-msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
-msgstr ""
-
-#: scene/3d/collision_shape.cpp
-msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it."
-msgstr ""
-
-#: scene/3d/collision_shape.cpp
-msgid ""
-"Plane shapes don't work well and will be removed in future versions. Please "
-"don't use them."
-msgstr ""
-
-#: scene/3d/collision_shape.cpp
-msgid ""
-"ConcavePolygonShape doesn't support RigidBody in another mode than static."
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp
-msgid "Nothing is visible because no mesh has been assigned."
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp
-msgid ""
-"CPUParticles animation requires the usage of a SpatialMaterial whose "
-"Billboard Mode is set to \"Particle Billboard\"."
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Box Extents"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Ring Radius"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Ring Inner Radius"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Ring Height"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Ring Axis"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Rotate Y"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Disable Z"
-msgstr ""
-
-#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-msgid "Flatness"
-msgstr ""
-
-#: scene/3d/cull_instance.cpp servers/visual_server.cpp
-msgid "Portals"
-msgstr ""
-
-#: scene/3d/cull_instance.cpp
-msgid "Portal Mode"
-msgstr ""
-
-#: scene/3d/cull_instance.cpp
-msgid "Include In Bound"
-msgstr ""
-
-#: scene/3d/cull_instance.cpp
-msgid "Allow Merging"
-msgstr ""
-
-#: scene/3d/cull_instance.cpp
-msgid "Autoplace Priority"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
-msgid "Plotting Meshes"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
-msgid "Finishing Plot"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
-msgid ""
-"GIProbes are not supported by the GLES2 video driver.\n"
-"Use a BakedLightmap instead."
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
-msgid ""
-"The GIProbe Compress property has been deprecated due to known bugs and no "
-"longer has any effect.\n"
-"To remove this warning, disable the GIProbe's Compress property."
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
-msgid "Subdiv"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
-msgid "Dynamic Range"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp scene/3d/light.cpp
-msgid "Normal Bias"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
-#: scene/resources/primitive_meshes.cpp
-msgid "Pixel Size"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
-msgid "Billboard"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
-msgid "Shaded"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
-msgid "Double Sided"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp scene/resources/material.cpp
-msgid "No Depth Test"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp scene/resources/material.cpp
-msgid "Fixed Size"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp
-msgid "Alpha Cut"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/resources/material.cpp
-msgid "Alpha Scissor Threshold"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/3d/sprite_3d.cpp scene/resources/material.cpp
-msgid "Render Priority"
-msgstr ""
-
-#: scene/3d/label_3d.cpp
-msgid "Outline Render Priority"
-msgstr ""
-
-#: scene/3d/label_3d.cpp
-msgid "Outline Modulate"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/resources/default_theme/default_theme.cpp
-#: scene/resources/dynamic_font.cpp scene/resources/primitive_meshes.cpp
-msgid "Font"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/resources/primitive_meshes.cpp
-msgid "Horizontal Alignment"
-msgstr ""
-
-#: scene/3d/label_3d.cpp
-msgid "Vertical Alignment"
-msgstr ""
-
-#: scene/3d/label_3d.cpp scene/gui/dialogs.cpp scene/gui/label.cpp
-msgid "Autowrap"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Indirect Energy"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Negative"
-msgstr ""
-
-#: scene/3d/light.cpp scene/resources/material.cpp
-#: scene/resources/visual_shader.cpp
-msgid "Specular"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Bake Mode"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Contact"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Reverse Cull Face"
-msgstr ""
-
-#: scene/3d/light.cpp servers/visual_server.cpp
-msgid "Directional Shadow"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Split 1"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Split 2"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Split 3"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Blend Splits"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Bias Split Scale"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Depth Range"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Omni"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Shadow Mode"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Shadow Detail"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Spot"
-msgstr ""
-
-#: scene/3d/light.cpp
-msgid "Angle Attenuation"
-msgstr ""
-
-#: scene/3d/mesh_instance.cpp
-msgid "Software Skinning"
-msgstr ""
-
-#: scene/3d/mesh_instance.cpp
-msgid "Transform Normals"
-msgstr ""
-
-#: scene/3d/navigation.cpp scene/resources/curve.cpp
-msgid "Up Vector"
-msgstr ""
-
-#: scene/3d/navigation.cpp
-msgid "Cell Height"
-msgstr ""
-
-#: scene/3d/navigation_agent.cpp
-msgid "Agent Height Offset"
-msgstr ""
-
-#: scene/3d/navigation_agent.cpp
-msgid "Ignore Y"
-msgstr ""
-
-#: scene/3d/navigation_agent.cpp
-msgid ""
-"The NavigationAgent can be used only under a Spatial inheriting parent node."
-msgstr ""
-
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
-#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
-msgid "NavMesh"
-msgstr ""
-
-#: scene/3d/navigation_obstacle.cpp
-msgid ""
-"The NavigationObstacle only serves to provide collision avoidance to a "
-"Spatial inheriting parent object."
-msgstr ""
-
-#: scene/3d/occluder.cpp
-msgid "No shape is set."
-msgstr ""
-
-#: scene/3d/occluder.cpp
-msgid "Only uniform scales are supported."
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid ""
-"GPU-based particles are not supported by the GLES2 video driver.\n"
-"Use the CPUParticles node instead. You can use the \"Convert to "
-"CPUParticles\" toolbar option for this purpose."
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid ""
-"On macOS, Particles rendering is much slower than CPUParticles due to "
-"transform feedback being implemented on the CPU instead of the GPU.\n"
-"Consider using CPUParticles instead when targeting macOS.\n"
-"You can use the \"Convert to CPUParticles\" toolbar option for this purpose."
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid ""
-"Nothing is visible because meshes have not been assigned to draw passes."
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid ""
-"Particles animation requires the usage of a SpatialMaterial whose Billboard "
-"Mode is set to \"Particle Billboard\"."
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid "Visibility AABB"
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid "Draw Passes"
-msgstr ""
-
-#: scene/3d/particles.cpp
-msgid "Passes"
-msgstr ""
-
-#: scene/3d/path.cpp
-msgid "PathFollow only works when set as a child of a Path node."
-msgstr ""
-
-#: scene/3d/path.cpp
-msgid ""
-"PathFollow's ROTATION_ORIENTED requires \"Up Vector\" to be enabled in its "
-"parent Path's Curve resource."
-msgstr ""
-
-#: scene/3d/path.cpp
-msgid "Rotation Mode"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overridden "
-"by the physics engine when running.\n"
-"Change the size in children collision shapes instead."
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Axis Lock"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear X"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Y"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Z"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular X"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Y"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Z"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Motion X"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Motion Y"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Motion Z"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Joint Constraints"
-msgstr ""
-
-#: scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-msgid "Impulse Clamp"
-msgstr ""
-
-#: scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-msgid "Swing Span"
-msgstr ""
-
-#: scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-msgid "Twist Span"
-msgstr ""
-
-#: scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-#: scene/3d/vehicle_body.cpp
-msgid "Relaxation"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Enabled"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Upper"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Lower"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Bias"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Softness"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Relaxation"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Limit Upper"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Limit Lower"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Limit Softness"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Limit Restitution"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Limit Damping"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Restitution"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Limit Damping"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "X"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Y"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Z"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Limit Enabled"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Spring Enabled"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Spring Stiffness"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Spring Damping"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Equilibrium Point"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Restitution"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Linear Damping"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Restitution"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Damping"
-msgstr ""
-
-#: scene/3d/physics_body.cpp scene/3d/physics_joint.cpp
-msgid "ERP"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Spring Enabled"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Spring Stiffness"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Spring Damping"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Angular Equilibrium Point"
-msgstr ""
-
-#: scene/3d/physics_body.cpp
-msgid "Body Offset"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Node A and Node B must be PhysicsBodies"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Node A must be a PhysicsBody"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Node B must be a PhysicsBody"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Joint is not connected to any PhysicsBodies"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Node A and Node B must be different PhysicsBodies"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Solver"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Exclude Nodes"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Params"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Limit"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Upper"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Lower"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Motor"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Target Velocity"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Max Impulse"
-msgstr "Azal:"
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Limit"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Upper Distance"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Lower Distance"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Restitution"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Motion"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Ortho"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Upper Angle"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Lower Angle"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Motion"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Ortho"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Limit X"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Motor X"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Force Limit"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Spring X"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Equilibrium Point"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Limit X"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Motor X"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Spring X"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Limit Y"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Motor Y"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Spring Y"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Limit Y"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Motor Y"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Spring Y"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Limit Z"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Motor Z"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Linear Spring Z"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Limit Z"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Motor Z"
-msgstr ""
-
-#: scene/3d/physics_joint.cpp
-msgid "Angular Spring Z"
-msgstr ""
-
-#: scene/3d/portal.cpp
-msgid "The RoomManager should not be a child or grandchild of a Portal."
-msgstr ""
-
-#: scene/3d/portal.cpp
-msgid "A Room should not be a child or grandchild of a Portal."
-msgstr ""
-
-#: scene/3d/portal.cpp
-msgid "A RoomGroup should not be a child or grandchild of a Portal."
-msgstr ""
-
-#: scene/3d/portal.cpp
-msgid "Portal Active"
-msgstr ""
-
-#: scene/3d/portal.cpp scene/resources/occluder_shape_polygon.cpp
-msgid "Two Way"
-msgstr ""
-
-#: scene/3d/portal.cpp
-msgid "Linked Room"
-msgstr ""
-
-#: scene/3d/portal.cpp
-msgid "Use Default Margin"
-msgstr ""
-
-#: scene/3d/proximity_group.cpp
-msgid "Group Name"
-msgstr ""
-
-#: scene/3d/proximity_group.cpp
-msgid "Dispatch Mode"
-msgstr ""
-
-#: scene/3d/proximity_group.cpp
-msgid "Grid Radius"
-msgstr ""
-
-#: scene/3d/ray_cast.cpp
-msgid "Debug Shape"
-msgstr ""
-
-#: scene/3d/ray_cast.cpp scene/resources/style_box.cpp
-msgid "Thickness"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp scene/main/viewport.cpp
-msgid "Update Mode"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp
-msgid "Origin Offset"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp
-msgid "Box Projection"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp
-msgid "Enable Shadows"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp
-msgid "Ambient Color"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp
-msgid "Ambient Energy"
-msgstr ""
-
-#: scene/3d/reflection_probe.cpp
-msgid "Ambient Contrib"
-msgstr ""
-
-#: scene/3d/remote_transform.cpp
-msgid ""
-"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
-"derived node to work."
-msgstr ""
-
-#: scene/3d/room.cpp
-msgid "A Room cannot have another Room as a child or grandchild."
-msgstr ""
-
-#: scene/3d/room.cpp
-msgid "The RoomManager should not be placed inside a Room."
-msgstr ""
-
-#: scene/3d/room.cpp
-msgid "A RoomGroup should not be placed inside a Room."
-msgstr ""
-
-#: scene/3d/room.cpp
-msgid ""
-"Room convex hull contains a large number of planes.\n"
-"Consider simplifying the room bound in order to increase performance."
-msgstr ""
-
-#: scene/3d/room.cpp
-msgid "Use Default Simplify"
-msgstr ""
-
-#: scene/3d/room.cpp scene/3d/room_manager.cpp
-msgid "Room Simplify"
-msgstr ""
-
-#: scene/3d/room.cpp
-msgid "Bound"
-msgstr ""
-
-#: scene/3d/room_group.cpp
-msgid "Roomgroup Priority"
-msgstr ""
-
-#: scene/3d/room_group.cpp
-msgid "The RoomManager should not be placed inside a RoomGroup."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "The RoomList has not been assigned."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "The RoomList node should be a Spatial (or derived from Spatial)."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid ""
-"Portal Depth Limit is set to Zero.\n"
-"Only the Room that the Camera is in will render."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "There should only be one RoomManager in the SceneTree."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Main"
-msgstr ""
-
-#: scene/3d/room_manager.cpp scene/animation/animation_blend_tree.cpp
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Active"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Roomlist"
-msgstr ""
-
-#: scene/3d/room_manager.cpp servers/visual_server.cpp
-msgid "PVS"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "PVS Mode"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "PVS Filename"
-msgstr ""
-
-#: scene/3d/room_manager.cpp servers/visual_server.cpp
-msgid "Gameplay"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Gameplay Monitor"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Use Secondary PVS"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Merge Meshes"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Show Margins"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Debug Sprawl"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Overlap Warning Threshold"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Preview Camera"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Portal Depth Limit"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Default Portal Margin"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Roaming Expansion Margin"
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid ""
-"RoomList path is invalid.\n"
-"Please check the RoomList branch has been assigned in the RoomManager."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "RoomList contains no Rooms, aborting."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Misnamed nodes detected, check output log for details. Aborting."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid "Portal link room not found, check output log for details."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid ""
-"Portal autolink failed, check output log for details.\n"
-"Check the portal is facing outwards from the source room."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid ""
-"Room overlap detected, cameras may work incorrectly in overlapping area.\n"
-"Check output log for details."
-msgstr ""
-
-#: scene/3d/room_manager.cpp
-msgid ""
-"Error calculating room bounds.\n"
-"Ensure all rooms contain geometry or manual bounds."
-msgstr ""
-
-#: scene/3d/skeleton.cpp scene/resources/skin.cpp
-msgid "Pose"
-msgstr ""
-
-#: scene/3d/skeleton.cpp
-msgid "Bound Children"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Pinned Points"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Attachments"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Point Index"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Spatial Attachment Path"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Physics Enabled"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Parent Collision Ignore"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Simulation Precision"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Total Mass"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Linear Stiffness"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Areaangular Stiffness"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Volume Stiffness"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Pressure Coefficient"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Damping Coefficient"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Drag Coefficient"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "Pose Matching Coefficient"
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid "This body will be ignored until you set a mesh."
-msgstr ""
-
-#: scene/3d/soft_body.cpp
-msgid ""
-"Size changes to SoftBody will be overridden by the physics engine when "
-"running.\n"
-"Change the size in children collision shapes instead."
-msgstr ""
-
-#: scene/3d/spatial.cpp
-msgid "Matrix"
-msgstr ""
-
-#: scene/3d/spatial.cpp
-msgid "Gizmo"
-msgstr ""
-
-#: scene/3d/spatial_velocity_tracker.cpp
-msgid "Track Physics Step"
-msgstr ""
-
-#: scene/3d/spring_arm.cpp
-msgid "Spring Length"
-msgstr ""
-
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-msgid "Opacity"
-msgstr ""
-
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-msgid "Transparent"
-msgstr ""
-
-#: scene/3d/sprite_3d.cpp
-msgid ""
-"A SpriteFrames resource must be created or set in the \"Frames\" property in "
-"order for AnimatedSprite3D to display frames."
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid ""
-"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
-"it as a child of a VehicleBody."
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Per-Wheel Motion"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Engine Force"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Brake"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Steering"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "VehicleBody Motion"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Use As Traction"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Use As Steering"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Wheel"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Roll Influence"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Friction Slip"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Suspension"
-msgstr ""
-
-#: scene/3d/vehicle_body.cpp
-msgid "Max Force"
-msgstr ""
-
-#: scene/3d/visibility_notifier.cpp
-msgid "AABB"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp scene/resources/navigation_mesh.cpp
-msgid "Geometry"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Material Override"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Material Overlay"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Cast Shadow"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Extra Cull Margin"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Baked Light"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Generate Lightmap"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Lightmap Scale"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "LOD"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp scene/animation/skeleton_ik.cpp
-#: scene/resources/material.cpp
-msgid "Min Distance"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Min Hysteresis"
-msgstr ""
-
-#: scene/3d/visual_instance.cpp
-msgid "Max Hysteresis"
-msgstr ""
-
-#: scene/3d/world_environment.cpp
-msgid ""
-"WorldEnvironment requires its \"Environment\" property to contain an "
-"Environment to have a visible effect."
-msgstr ""
-
-#: scene/3d/world_environment.cpp
-msgid ""
-"Only one WorldEnvironment is allowed per scene (or set of instanced scenes)."
-msgstr ""
-
-#: scene/3d/world_environment.cpp
-msgid ""
-"This WorldEnvironment is ignored. Either add a Camera (for 3D scenes) or set "
-"this environment's Background Mode to Canvas (for 2D scenes)."
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "On BlendTree node '%s', animation not found: '%s'"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Animation not found: '%s'"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Mix Mode"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Fadein Time"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Fadeout Time"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Auto Restart"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Autorestart"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Delay"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Random Delay"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Add Amount"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Blend Amount"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Seek Position"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-msgid "Input Count"
-msgstr ""
-
-#: scene/animation/animation_blend_tree.cpp
-#: scene/animation/animation_node_state_machine.cpp
-msgid "Xfade Time"
-msgstr ""
-
-#: scene/animation/animation_node_state_machine.cpp
-msgid "Switch Mode"
-msgstr ""
-
-#: scene/animation/animation_node_state_machine.cpp
-msgid "Auto Advance"
-msgstr ""
-
-#: scene/animation/animation_node_state_machine.cpp
-msgid "Advance Condition"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Anim Apply Reset"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Current Animation"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Assigned Animation"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Reset On Save"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Current Animation Length"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Current Animation Position"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Playback Options"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Default Blend Time"
-msgstr ""
-
-#: scene/animation/animation_player.cpp
-msgid "Method Call Mode"
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "In node '%s', invalid animation: '%s'."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Invalid animation: '%s'."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Nothing connected to input '%s' of node '%s'."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "No root AnimationNode for the graph is set."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Path to an AnimationPlayer node containing animations is not set."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Path set for AnimationPlayer does not lead to an AnimationPlayer node."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "The AnimationPlayer root node is not a valid node."
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Tree Root"
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Anim Player"
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Root Motion"
-msgstr ""
-
-#: scene/animation/animation_tree.cpp
-msgid "Track"
-msgstr ""
-
-#: scene/animation/animation_tree_player.cpp
-msgid "This node has been deprecated. Use AnimationTree instead."
-msgstr ""
-
-#: scene/animation/animation_tree_player.cpp
-msgid "Playback"
-msgstr ""
-
-#: scene/animation/animation_tree_player.cpp
-msgid "Master Player"
-msgstr ""
-
-#: scene/animation/animation_tree_player.cpp
-msgid "Base Path"
-msgstr ""
-
-#: scene/animation/root_motion_view.cpp
-msgid "Animation Path"
-msgstr ""
-
-#: scene/animation/root_motion_view.cpp
-msgid "Zero Y"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Root Bone"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Tip Bone"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Interpolation"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Override Tip Basis"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Use Magnet"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Magnet"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Target Node"
-msgstr ""
-
-#: scene/animation/skeleton_ik.cpp
-msgid "Max Iterations"
-msgstr ""
-
-#: scene/animation/tween.cpp
-msgid "Playback Process Mode"
-msgstr ""
-
-#: scene/animation/tween.cpp
-msgid "Playback Speed"
-msgstr ""
-
-#: scene/audio/audio_stream_player.cpp
-msgid "Mix Target"
-msgstr ""
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/range.cpp
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Ratio"
-msgstr ""
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/texture_button.cpp
-#: scene/gui/texture_rect.cpp
-msgid "Stretch Mode"
-msgstr ""
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/box_container.cpp
-msgid "Alignment"
-msgstr ""
-
-#: scene/gui/base_button.cpp
-msgid "Shortcut In Tooltip"
-msgstr ""
-
-#: scene/gui/base_button.cpp
-msgid "Action Mode"
-msgstr ""
-
-#: scene/gui/base_button.cpp
-msgid "Enabled Focus Mode"
-msgstr ""
-
-#: scene/gui/base_button.cpp
-msgid "Keep Pressed Outside"
-msgstr ""
-
-#: scene/gui/base_button.cpp scene/gui/shortcut.cpp
-msgid "Shortcut"
-msgstr ""
-
-#: scene/gui/base_button.cpp
-msgid "Group"
-msgstr ""
-
-#: scene/gui/button.cpp scene/gui/label.cpp
-msgid "Clip Text"
-msgstr ""
-
-#: scene/gui/button.cpp scene/gui/label.cpp scene/gui/line_edit.cpp
-#: scene/gui/spin_box.cpp
-msgid "Align"
-msgstr ""
-
-#: scene/gui/button.cpp
-msgid "Icon Align"
-msgstr ""
-
-#: scene/gui/button.cpp
-msgid "Expand Icon"
-msgstr ""
-
-#: scene/gui/center_container.cpp
-msgid "Use Top Left"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid ""
-"Color: #%s\n"
-"LMB: Apply color\n"
-"RMB: Remove preset"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Edit Alpha"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "HSV Mode"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Raw Mode"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Deferred Mode"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Presets Enabled"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Presets Visible"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Pick a color from the editor window."
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "HSV"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Switch between hexadecimal and code values."
-msgstr ""
-
-#: scene/gui/color_picker.cpp
-msgid "Add current color as a preset."
-msgstr ""
-
-#: scene/gui/container.cpp
-msgid ""
-"Container by itself serves no purpose unless a script configures its "
-"children placement behavior.\n"
-"If you don't intend to add a script, use a plain Control node instead."
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Theme Overrides"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid ""
-"The Hint Tooltip won't be displayed as the control's Mouse Filter is set to "
-"\"Ignore\". To solve this, set the Mouse Filter to \"Stop\" or \"Pass\"."
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Anchor"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Grow Direction"
-msgstr ""
-
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
-msgid "Min Size"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Pivot Offset"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Clip Content"
-msgstr ""
-
-#: scene/gui/control.cpp scene/resources/visual_shader_nodes.cpp
-msgid "Hint"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Tooltip"
-msgstr ""
-
-#: scene/gui/control.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Focus"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Neighbour Left"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Neighbour Top"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Neighbour Right"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Neighbour Bottom"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Next"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Previous"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Mouse"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Default Cursor Shape"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Pass On Modal Close Click"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Size Flags"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Stretch Ratio"
-msgstr ""
-
-#: scene/gui/control.cpp
-msgid "Theme Type Variation"
-msgstr ""
-
-#: scene/gui/dialogs.cpp
-msgid "Window Title"
-msgstr ""
-
-#: scene/gui/dialogs.cpp
-msgid "Dialog"
-msgstr ""
-
-#: scene/gui/dialogs.cpp
-msgid "Hide On OK"
-msgstr ""
-
-#: scene/gui/dialogs.cpp
-msgid "Alert!"
-msgstr ""
-
-#: scene/gui/dialogs.cpp
-msgid "Please Confirm..."
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Mode Overrides Title"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Must use a valid extension."
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Right Disconnects"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Scroll Offset"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Snap Distance"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Zoom Min"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Zoom Max"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Zoom Step"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Show Zoom Label"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp scene/gui/text_edit.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Minimap"
-msgstr ""
-
-#: scene/gui/graph_edit.cpp
-msgid "Enable grid minimap."
-msgstr ""
-
-#: scene/gui/graph_node.cpp
-msgid "Show Close"
-msgstr ""
-
-#: scene/gui/graph_node.cpp scene/gui/option_button.cpp
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Selected"
-msgstr ""
-
-#: scene/gui/graph_node.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Comment"
-msgstr ""
-
-#: scene/gui/graph_node.cpp
-msgid "Overlay"
-msgstr ""
-
-#: scene/gui/grid_container.cpp scene/gui/item_list.cpp scene/gui/tree.cpp
-msgid "Columns"
-msgstr ""
-
-#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/text_edit.cpp
-#: scene/gui/tree.cpp scene/main/viewport.cpp
-#, fuzzy
-msgid "Timers"
-msgstr "Akud:"
-
-#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval Msec"
-msgstr ""
-
-#: scene/gui/item_list.cpp scene/gui/tree.cpp
-msgid "Allow Reselect"
-msgstr ""
-
-#: scene/gui/item_list.cpp scene/gui/tree.cpp
-msgid "Allow RMB Select"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Max Text Lines"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Auto Height"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Max Columns"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Same Column Width"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Fixed Column Width"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Icon Scale"
-msgstr ""
-
-#: scene/gui/item_list.cpp
-msgid "Fixed Icon Size"
-msgstr ""
-
-#: scene/gui/label.cpp
-msgid "V Align"
-msgstr ""
-
-#: scene/gui/label.cpp scene/gui/rich_text_label.cpp
-msgid "Visible Characters"
-msgstr ""
-
-#: scene/gui/label.cpp scene/gui/rich_text_label.cpp
-msgid "Percent Visible"
-msgstr ""
-
-#: scene/gui/label.cpp
-msgid "Lines Skipped"
-msgstr ""
-
-#: scene/gui/label.cpp
-msgid "Max Lines Visible"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/resources/navigation_mesh.cpp
-msgid "Max Length"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Secret"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Secret Character"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Expand To Text Length"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Context Menu Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Virtual Keyboard Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Clear Button Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Shortcut Keys Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Middle Mouse Paste Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Selecting Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/rich_text_label.cpp
-#: scene/gui/text_edit.cpp
-msgid "Deselect On Focus Loss Enabled"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Right Icon"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Placeholder"
-msgstr ""
-
-#: scene/gui/line_edit.cpp
-msgid "Alpha"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Caret"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Blink"
-msgstr ""
-
-#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Blink Speed"
-msgstr ""
-
-#: scene/gui/link_button.cpp
-msgid "Underline"
-msgstr ""
-
-#: scene/gui/menu_button.cpp
-msgid "Switch On Hover"
-msgstr ""
-
-#: scene/gui/nine_patch_rect.cpp scene/resources/style_box.cpp
-msgid "Draw Center"
-msgstr ""
-
-#: scene/gui/nine_patch_rect.cpp scene/resources/style_box.cpp
-msgid "Region Rect"
-msgstr ""
-
-#: scene/gui/nine_patch_rect.cpp
-msgid "Patch Margin"
-msgstr ""
-
-#: scene/gui/nine_patch_rect.cpp scene/resources/style_box.cpp
-msgid "Axis Stretch"
-msgstr ""
-
-#: scene/gui/nine_patch_rect.cpp
-msgid ""
-"The Tile and Tile Fit options for Axis Stretch properties are only effective "
-"when using the GLES3 rendering backend.\n"
-"The GLES2 backend is currently in use, so these modes will act like Stretch "
-"instead."
-msgstr ""
-
-#: scene/gui/popup.cpp
-msgid "Popup"
-msgstr ""
-
-#: scene/gui/popup.cpp
-msgid "Exclusive"
-msgstr ""
-
-#: scene/gui/popup.cpp
-msgid ""
-"Popups will hide by default unless you call popup() or any of the popup*() "
-"functions. Making them visible for editing is fine, but they will hide upon "
-"running."
-msgstr ""
-
-#: scene/gui/popup_menu.cpp
-msgid "Hide On Item Selection"
-msgstr ""
-
-#: scene/gui/popup_menu.cpp
-msgid "Hide On Checkable Item Selection"
-msgstr ""
-
-#: scene/gui/popup_menu.cpp
-msgid "Hide On State Item Selection"
-msgstr ""
-
-#: scene/gui/popup_menu.cpp
-msgid "Submenu Popup Delay"
-msgstr ""
-
-#: scene/gui/popup_menu.cpp
-msgid "Allow Search"
-msgstr ""
-
-#: scene/gui/progress_bar.cpp
-msgid "Percent"
-msgstr ""
-
-#: scene/gui/range.cpp
-msgid "If \"Exp Edit\" is enabled, \"Min Value\" must be greater than 0."
-msgstr ""
-
-#: scene/gui/range.cpp scene/resources/curve.cpp
-#, fuzzy
-msgid "Min Value"
-msgstr "Azal:"
-
-#: scene/gui/range.cpp scene/resources/curve.cpp
-#, fuzzy
-msgid "Max Value"
-msgstr "Azal:"
-
-#: scene/gui/range.cpp
-msgid "Page"
-msgstr ""
-
-#: scene/gui/range.cpp
-msgid "Exp Edit"
-msgstr ""
-
-#: scene/gui/range.cpp
-msgid "Rounded"
-msgstr ""
-
-#: scene/gui/range.cpp
-msgid "Allow Greater"
-msgstr ""
-
-#: scene/gui/range.cpp
-msgid "Allow Lesser"
-msgstr ""
-
-#: scene/gui/reference_rect.cpp
-msgid "Border Color"
-msgstr ""
-
-#: scene/gui/reference_rect.cpp scene/resources/style_box.cpp
-msgid "Border Width"
-msgstr ""
-
-#: scene/gui/rich_text_effect.cpp
-msgid "Relative Index"
-msgstr ""
-
-#: scene/gui/rich_text_effect.cpp
-msgid "Absolute Index"
-msgstr ""
-
-#: scene/gui/rich_text_effect.cpp
-msgid "Elapsed Time"
-msgstr ""
-
-#: scene/gui/rich_text_effect.cpp
-msgid "Env"
-msgstr ""
-
-#: scene/gui/rich_text_effect.cpp
-msgid "Character"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "BBCode"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Meta Underlined"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Tab Size"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Fit Content Height"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Scroll Active"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Scroll Following"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Selection Enabled"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp scene/gui/text_edit.cpp
-msgid "Override Selected Font Color"
-msgstr ""
-
-#: scene/gui/rich_text_label.cpp
-msgid "Custom Effects"
-msgstr ""
-
-#: scene/gui/scroll_bar.cpp
-msgid "Custom Step"
-msgstr ""
-
-#: scene/gui/scroll_container.cpp
-msgid ""
-"ScrollContainer is intended to work with a single child control.\n"
-"Use a container as child (VBox, HBox, etc.), or a Control and set the custom "
-"minimum size manually."
-msgstr ""
-
-#: scene/gui/scroll_container.cpp
-msgid "Follow Focus"
-msgstr ""
-
-#: scene/gui/scroll_container.cpp
-msgid "Horizontal Enabled"
-msgstr ""
-
-#: scene/gui/scroll_container.cpp
-msgid "Vertical Enabled"
-msgstr ""
-
-#: scene/gui/scroll_container.cpp
-msgid "Default Scroll Deadzone"
-msgstr ""
-
-#: scene/gui/slider.cpp
-msgid "Scrollable"
-msgstr ""
-
-#: scene/gui/slider.cpp
-msgid "Tick Count"
-msgstr ""
-
-#: scene/gui/slider.cpp
-msgid "Ticks On Borders"
-msgstr ""
-
-#: scene/gui/spin_box.cpp
-msgid "Prefix"
-msgstr ""
-
-#: scene/gui/spin_box.cpp
-msgid "Suffix"
-msgstr ""
-
-#: scene/gui/split_container.cpp
-msgid "Split Offset"
-msgstr ""
-
-#: scene/gui/split_container.cpp scene/gui/tree.cpp
-msgid "Collapsed"
-msgstr ""
-
-#: scene/gui/split_container.cpp
-msgid "Dragger Visibility"
-msgstr ""
-
-#: scene/gui/tab_container.cpp scene/gui/tabs.cpp
-msgid "Tab Align"
-msgstr ""
-
-#: scene/gui/tab_container.cpp scene/gui/tabs.cpp
-msgid "Current Tab"
-msgstr ""
-
-#: scene/gui/tab_container.cpp
-msgid "Tabs Visible"
-msgstr ""
-
-#: scene/gui/tab_container.cpp
-msgid "All Tabs In Front"
-msgstr ""
-
-#: scene/gui/tab_container.cpp scene/gui/tabs.cpp
-msgid "Drag To Rearrange Enabled"
-msgstr ""
-
-#: scene/gui/tab_container.cpp
-msgid "Use Hidden Tabs For Min Size"
-msgstr ""
-
-#: scene/gui/tabs.cpp
-msgid "Tab Close Display Policy"
-msgstr ""
-
-#: scene/gui/tabs.cpp
-msgid "Scrolling Enabled"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Readonly"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Bookmark Gutter"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Breakpoint Gutter"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Fold Gutter"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Hiding Enabled"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Wrap Enabled"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Scroll Vertical"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Scroll Horizontal"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Draw"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Block Mode"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Moving By Right Click"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Text Edit Idle Detect (sec)"
-msgstr ""
-
-#: scene/gui/text_edit.cpp
-msgid "Text Edit Undo Stack Max Size"
-msgstr ""
-
-#: scene/gui/texture_button.cpp scene/resources/default_theme/default_theme.cpp
-msgid "Hover"
-msgstr ""
-
-#: scene/gui/texture_button.cpp
-msgid "Focused"
-msgstr ""
-
-#: scene/gui/texture_button.cpp
-msgid "Click Mask"
-msgstr ""
-
-#: scene/gui/texture_button.cpp scene/gui/texture_rect.cpp
-#: scene/gui/video_player.cpp
-msgid "Expand"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Under"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Over"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Progress"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Progress Offset"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Fill Mode"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp scene/resources/material.cpp
-msgid "Tint"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Radial Fill"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Initial Angle"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Fill Degrees"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp scene/resources/primitive_meshes.cpp
-msgid "Center Offset"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Nine Patch Stretch"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Stretch Margin Left"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Stretch Margin Top"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Stretch Margin Right"
-msgstr ""
-
-#: scene/gui/texture_progress.cpp
-msgid "Stretch Margin Bottom"
-msgstr ""
-
-#: scene/gui/tree.cpp
-msgid "Custom Minimum Height"
-msgstr ""
-
-#: scene/gui/tree.cpp
-msgid "(Other)"
-msgstr ""
-
-#: scene/gui/tree.cpp
-msgid "Column Titles Visible"
-msgstr ""
-
-#: scene/gui/tree.cpp
-msgid "Hide Folding"
-msgstr ""
-
-#: scene/gui/tree.cpp
-msgid "Hide Root"
-msgstr ""
-
-#: scene/gui/tree.cpp
-msgid "Drop Mode Flags"
-msgstr ""
-
-#: scene/gui/video_player.cpp
-msgid "Audio Track"
-msgstr ""
-
-#: scene/gui/video_player.cpp scene/main/scene_tree.cpp scene/main/timer.cpp
-msgid "Paused"
-msgstr ""
-
-#: scene/gui/video_player.cpp
-msgid "Buffering Msec"
-msgstr ""
-
-#: scene/gui/video_player.cpp
-msgid "Stream Position"
-msgstr ""
-
-#: scene/gui/viewport_container.cpp
-msgid "Stretch Shrink"
-msgstr ""
-
-#: scene/main/canvas_layer.cpp
-msgid "Follow Viewport"
-msgstr ""
-
-#: scene/main/http_request.cpp
-msgid "Download File"
-msgstr ""
-
-#: scene/main/http_request.cpp
-msgid "Download Chunk Size"
-msgstr ""
-
-#: scene/main/http_request.cpp
-msgid "Body Size Limit"
-msgstr ""
-
-#: scene/main/http_request.cpp
-msgid "Max Redirects"
-msgstr ""
-
-#: scene/main/http_request.cpp
-#, fuzzy
-msgid "Timeout"
-msgstr "Akud:"
-
-#: scene/main/node.cpp
-msgid ""
-"Setting node name '%s' to be unique within scene for '%s', but it's already "
-"claimed by '%s'. This node is no longer set unique."
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Name Num Separator"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Name Casing"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Editor Description"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Pause Mode"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Physics Interpolation Mode"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Display Folded"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Filename"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Owner"
-msgstr ""
-
-#: scene/main/node.cpp scene/main/scene_tree.cpp
-msgid "Multiplayer"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Custom Multiplayer"
-msgstr ""
-
-#: scene/main/node.cpp
-msgid "Process Priority"
-msgstr ""
-
-#: scene/main/scene_tree.cpp scene/main/timer.cpp
-msgid "Time Left"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Debug Collisions Hint"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Debug Navigation Hint"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Use Font Oversampling"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Edited Scene Root"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Root"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Multiplayer Poll"
-msgstr ""
-
-#: scene/main/scene_tree.cpp scene/resources/mesh_library.cpp
-#: scene/resources/shape_2d.cpp
-msgid "Shapes"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Shape Color"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Contact Color"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Geometry Color"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Disabled Geometry Color"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Max Contacts Displayed"
-msgstr ""
-
-#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
-msgid "Draw 2D Outlines"
-msgstr ""
-
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
-msgid "Reflections"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Atlas Size"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Atlas Subdiv"
-msgstr ""
-
-#: scene/main/scene_tree.cpp scene/main/viewport.cpp
-msgid "MSAA"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Use FXAA"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Use Debanding"
-msgstr ""
-
-#: scene/main/scene_tree.cpp scene/main/viewport.cpp
-msgid "HDR"
-msgstr ""
-
-#: scene/main/scene_tree.cpp scene/main/viewport.cpp
-msgid "Use 32 BPC Depth"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Default Environment"
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid ""
-"Default Environment as specified in Project Settings (Rendering -> "
-"Environment -> Default Environment) could not be loaded."
-msgstr ""
-
-#: scene/main/scene_tree.cpp
-msgid "Enable Object Picking"
-msgstr ""
-
-#: scene/main/timer.cpp
-msgid ""
-"Very low timer wait times (< 0.05 seconds) may behave in significantly "
-"different ways depending on the rendered or physics frame rate.\n"
-"Consider using a script's process loop instead of relying on a Timer for "
-"very low wait times."
-msgstr ""
-
-#: scene/main/timer.cpp
-msgid "Autostart"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Viewport Path"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid ""
-"This viewport is not set as render target. If you intend for it to display "
-"its contents directly to the screen, make it a child of a Control so it can "
-"obtain a size. Otherwise, make it a RenderTarget and assign its internal "
-"texture to some node for display."
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid ""
-"The Viewport size must be greater than or equal to 2 pixels on both "
-"dimensions to render anything."
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "ARVR"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Size Override Stretch"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Own World"
-msgstr ""
-
-#: scene/main/viewport.cpp scene/resources/world_2d.cpp
-msgid "World"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "World 2D"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Transparent BG"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Handle Input Locally"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "FXAA"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Debanding"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Disable 3D"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Keep 3D Linear"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Render Direct To Screen"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Debug Draw"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Render Target"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "V Flip"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Clear Mode"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Enable 2D"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Enable 3D"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Object Picking"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Disable Input"
-msgstr ""
-
-#: scene/main/viewport.cpp servers/visual_server.cpp
-msgid "Shadow Atlas"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Quad 0"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Quad 1"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Quad 2"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Quad 3"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Canvas Transform"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Global Canvas Transform"
-msgstr ""
-
-#: scene/main/viewport.cpp
-msgid "Tooltip Delay (sec)"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "Swap OK Cancel"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "Layer Names"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "2D Render"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "3D Render"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "2D Physics"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "3D Physics"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "Use hiDPI"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "Custom"
-msgstr ""
-
-#: scene/register_scene_types.cpp
-msgid "Custom Font"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
-msgid "Mix Rate"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Stereo"
-msgstr ""
-
-#: scene/resources/concave_polygon_shape_2d.cpp
-msgid "Segments"
-msgstr ""
-
-#: scene/resources/curve.cpp
-msgid "Bake Resolution"
-msgstr ""
-
-#: scene/resources/curve.cpp
-msgid "Bake Interval"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Panel"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Hover"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Focus"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "H Separation"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Underline Spacing"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Arrow"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Arrow Margin"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Hover Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Checked Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Unchecked"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Unchecked Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Radio Checked"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Radio Checked Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Radio Unchecked"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Radio Unchecked Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Hover Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Check V Adjust"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "On Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Off"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Off Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Shadow"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Outline Modulate"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Shadow Offset X"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Shadow Offset Y"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Shadow As Outline"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Selected"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Uneditable"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Cursor Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Clear Button Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Clear Button Color Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Minimum Spaces"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "BG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "FG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Tab"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
-#: scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Folded"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Fold"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Readonly"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Completion Lines"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Completion Max Width"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Completion Scroll Width"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Scroll Focus"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grabber"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grabber Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grabber Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Increment"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Increment Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Increment Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Decrement"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Decrement Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Decrement Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Slider"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grabber Area"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grabber Area Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grabber Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Tick"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Updown"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Scaleborder Size"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Font"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Height"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Close Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Close H Offset"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Close V Offset"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Parent Folder"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Toggle Hidden"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Panel Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Labeled Separator Left"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Labeled Separator Right"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Separator"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Accel"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color Separator"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "V Separation"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Selected Frame"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Default Frame"
-msgstr "Azal:"
-
-#: scene/resources/default_theme/default_theme.cpp
-#, fuzzy
-msgid "Default Focus"
-msgstr "Azal:"
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Comment Focus"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Breakpoint"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Resizer"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Close Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Resizer Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Offset"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Close Offset"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Port Offset"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "BG Focus"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Selected Focus"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Cursor Unfocused"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Button Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Button Normal"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Button Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Button Hover"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Custom Button"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Custom Button Pressed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Custom Button Hover"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Select Arrow"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Arrow Collapsed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Button Font"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Title Button Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Guide Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Drop Position Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Relationship Line Color"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Custom Button Font Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Item Margin"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Button Margin"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Draw Relationship Lines"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Draw Guides"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Scroll Border"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Scroll Speed"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Icon Margin"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Line Separation"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Tab FG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Tab BG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Tab Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Menu"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Menu Highlight"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color FG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Font Color BG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Side Margin"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Top Margin"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Label V Align FG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Label V Align BG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Large"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Folder"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Folder Icon Modulate"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "File Icon Modulate"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Files Disabled"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "SV Width"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "SV Height"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "H Width"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Label Width"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Screen Picker"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Add Preset"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Color Hue"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Color Sample"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Preset BG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Overbright Indicator"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Preset FG"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Preset BG Icon"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Normal Font"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Bold Font"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Italics Font"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Bold Italics Font"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Mono Font"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Table H Separation"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Table V Separation"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Margin Left"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Margin Top"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Margin Right"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Margin Bottom"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Autohide"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Minus"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "More"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grid Minor"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Grid Major"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Selection Fill"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Selection Stroke"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Activity"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Bezier Len Pos"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Bezier Len Neg"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Port Grab Distance Horizontal"
-msgstr ""
-
-#: scene/resources/default_theme/default_theme.cpp
-msgid "Port Grab Distance Vertical"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Hinting"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Override Oversampling"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Font Path"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Outline Size"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Outline Color"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Use Mipmaps"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Extra Spacing"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Char"
-msgstr ""
-
-#: scene/resources/dynamic_font.cpp
-msgid "Font Data"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Background"
-msgstr ""
-
-#: scene/resources/environment.cpp scene/resources/sky.cpp
-msgid "Sky"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Sky Custom FOV"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Sky Orientation"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Sky Rotation"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Sky Rotation Degrees"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Canvas Max Layer"
-msgstr ""
-
-#: scene/resources/environment.cpp scene/resources/texture.cpp
-msgid "Camera Feed ID"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Ambient Light"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Sky Contribution"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Fog"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Sun Color"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Sun Amount"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Depth Enabled"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Depth Begin"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Depth End"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Depth Curve"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Transmit Enabled"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Transmit Curve"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Height Enabled"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Height Min"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Height Max"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Height Curve"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Tonemap"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Exposure"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "White"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Auto Exposure"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Min Luma"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Max Luma"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "SS Reflections"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Max Steps"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Fade In"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Fade Out"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Depth Tolerance"
-msgstr ""
-
-#: scene/resources/environment.cpp scene/resources/material.cpp
-msgid "Roughness"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "SSAO"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Radius 2"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Intensity 2"
-msgstr ""
-
-#: scene/resources/environment.cpp scene/resources/material.cpp
-msgid "Light Affect"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "AO Channel Affect"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Blur"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Edge Sharpness"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "DOF Far Blur"
-msgstr ""
-
-#: scene/resources/environment.cpp scene/resources/material.cpp
-msgid "Distance"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Transition"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "DOF Near Blur"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Glow"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Levels"
-msgstr ""
-
-#: scene/resources/environment.cpp
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "1"
-msgstr ""
-
-#: scene/resources/environment.cpp
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "2"
-msgstr ""
-
-#: scene/resources/environment.cpp
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "3"
-msgstr ""
-
-#: scene/resources/environment.cpp
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "4"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "5"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "6"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "7"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Bloom"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "HDR Threshold"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "HDR Luminance Cap"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "HDR Scale"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Bicubic Upscale"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Adjustments"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Brightness"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Saturation"
-msgstr ""
-
-#: scene/resources/environment.cpp
-msgid "Color Correction"
-msgstr ""
-
-#: scene/resources/font.cpp
-msgid "Ascent"
-msgstr ""
-
-#: scene/resources/font.cpp
-msgid "Distance Field"
-msgstr ""
-
-#: scene/resources/gradient.cpp
-msgid "Raw Data"
-msgstr ""
-
-#: scene/resources/gradient.cpp
-msgid "Offsets"
-msgstr ""
-
-#: scene/resources/height_map_shape.cpp
-msgid "Map Width"
-msgstr ""
-
-#: scene/resources/height_map_shape.cpp
-msgid "Map Depth"
-msgstr ""
-
-#: scene/resources/height_map_shape.cpp
-msgid "Map Data"
-msgstr ""
-
-#: scene/resources/line_shape_2d.cpp
-msgid "D"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Next Pass"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Use Shadow To Opacity"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Unshaded"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Vertex Lighting"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Use Point Size"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "World Triplanar"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Albedo Tex Force sRGB"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Do Not Receive Shadows"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Disable Ambient Light"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Ensure Correct Normals"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Albedo Tex MSDF"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Vertex Color"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Use As Albedo"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Is sRGB"
-msgstr ""
-
-#: scene/resources/material.cpp servers/visual_server.cpp
-msgid "Parameters"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Diffuse Mode"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Specular Mode"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Depth Draw Mode"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Line Width"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Point Size"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Billboard Mode"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Billboard Keep Scale"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Grow"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Grow Amount"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Use Alpha Scissor"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Particles Anim"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "H Frames"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "V Frames"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Albedo"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Metallic"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Texture Channel"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Emission"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "On UV2"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "NormalMap"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Rim"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Clearcoat"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Gloss"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Anisotropy"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Flowmap"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Ambient Occlusion"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Deep Parallax"
-msgstr ""
-
-#: scene/resources/material.cpp
-#, fuzzy
-msgid "Min Layers"
-msgstr "Azal:"
-
-#: scene/resources/material.cpp
-#, fuzzy
-msgid "Max Layers"
-msgstr "Azal:"
-
-#: scene/resources/material.cpp
-msgid "Flip Tangent"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Flip Binormal"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Subsurf Scatter"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Transmission"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Refraction"
-msgstr ""
-
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
-msgid "Detail"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "UV Layer"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "UV1"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Triplanar"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Triplanar Sharpness"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "UV2"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Proximity Fade"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Distance Fade"
-msgstr ""
-
-#: scene/resources/material.cpp
-msgid "Async Mode"
-msgstr ""
-
-#: scene/resources/mesh.cpp
-msgid "Lightmap Size Hint"
-msgstr ""
-
-#: scene/resources/mesh.cpp scene/resources/primitive_meshes.cpp
-msgid "Custom AABB"
-msgstr ""
-
-#: scene/resources/mesh_library.cpp
-msgid "Mesh Transform"
-msgstr ""
-
-#: scene/resources/mesh_library.cpp
-msgid "NavMesh Transform"
-msgstr ""
-
-#: scene/resources/multimesh.cpp
-msgid "Color Format"
-msgstr ""
-
-#: scene/resources/multimesh.cpp
-msgid "Transform Format"
-msgstr ""
-
-#: scene/resources/multimesh.cpp
-msgid "Custom Data Format"
-msgstr ""
-
-#: scene/resources/multimesh.cpp
-msgid "Instance Count"
-msgstr ""
-
-#: scene/resources/multimesh.cpp
-msgid "Visible Instance Count"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Sample Partition Type"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Parsed Geometry Type"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Source Geometry Mode"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Source Group Name"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Max Climb"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Max Slope"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Merge Size"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Max Error"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Verts Per Poly"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Sample Distance"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Sample Max Error"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Low Hanging Obstacles"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Ledge Spans"
-msgstr ""
-
-#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
-msgstr ""
-
-#: scene/resources/occluder_shape.cpp
-msgid "Spheres"
-msgstr ""
-
-#: scene/resources/occluder_shape.cpp
-msgid "OccluderShapeSphere Set Spheres"
-msgstr ""
-
-#: scene/resources/occluder_shape_polygon.cpp
-msgid "Polygon Points"
-msgstr ""
-
-#: scene/resources/occluder_shape_polygon.cpp
-msgid "Hole Points"
-msgstr ""
-
-#: scene/resources/packed_scene.cpp
-msgid "Bundled"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Trail"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Divisor"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Size Modifier"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Color Modifier"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Point Texture"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Normal Texture"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Color Texture"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Point Count"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Scale Random"
-msgstr ""
-
-#: scene/resources/particles_material.cpp
-msgid "Scale Curve"
-msgstr ""
-
-#: scene/resources/physics_material.cpp
-msgid "Rough"
-msgstr ""
-
-#: scene/resources/physics_material.cpp
-msgid "Absorbent"
-msgstr ""
-
-#: scene/resources/plane_shape.cpp
-msgid "Plane"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Flip Faces"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Mid Height"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Subdivide Width"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Subdivide Height"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Subdivide Depth"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Top Radius"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Bottom Radius"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Left To Right"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Is Hemisphere"
-msgstr ""
-
-#: scene/resources/primitive_meshes.cpp
-msgid "Curve Step"
-msgstr ""
-
-#: scene/resources/ray_shape.cpp scene/resources/segment_shape_2d.cpp
-msgid "Slips On Slope"
-msgstr ""
-
-#: scene/resources/segment_shape_2d.cpp
-msgid "A"
-msgstr ""
-
-#: scene/resources/shape_2d.cpp
-msgid "Custom Solver Bias"
-msgstr ""
-
-#: scene/resources/skin.cpp
-msgid "Bind Count"
-msgstr ""
-
-#: scene/resources/skin.cpp
-msgid "Bind"
-msgstr ""
-
-#: scene/resources/skin.cpp
-msgid "Bone"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Radiance Size"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Panorama"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Top Color"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Horizon Color"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Ground"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Bottom Color"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Sun"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Latitude"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Longitude"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Angle Min"
-msgstr ""
-
-#: scene/resources/sky.cpp
-msgid "Angle Max"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Content Margin"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Expand Margin"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Skew"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Corner Radius"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Corner Detail"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Anti Aliasing"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Grow Begin"
-msgstr ""
-
-#: scene/resources/style_box.cpp
-msgid "Grow End"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Load Path"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Base Texture"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Image Size"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Side"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Front"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Back"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Storage Mode"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
-msgid "Lossy Storage Quality"
-msgstr "Amẓ"
-
-#: scene/resources/texture.cpp
-msgid "From"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "To"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Base"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Current Frame"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Pause"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Which Feed"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Camera Is Active"
-msgstr ""
-
-#: scene/resources/theme.cpp
-msgid "Default Font"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Output Port For Preview"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Depth Draw"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Cull"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Diffuse"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Async"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Modes"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Input Name"
-msgstr ""
-
-#: scene/resources/visual_shader.cpp
-msgid "Uniform Name"
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid ""
-"The sampler port is connected but not used. Consider changing the source to "
-"'SamplerPort'."
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Invalid source for preview."
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Invalid source for shader."
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Texture Type"
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Cube Map"
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Default Value Enabled"
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-#, fuzzy
-msgid "Default Value"
-msgstr "Azal:"
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Color Default"
-msgstr ""
-
-#: scene/resources/visual_shader_nodes.cpp
-msgid "Invalid comparison function for that type."
-msgstr ""
-
-#: scene/resources/world.cpp
-msgid "Fallback Environment"
-msgstr ""
-
-#: scene/resources/world.cpp
-msgid "Scenario"
-msgstr ""
-
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Direct Space State"
-msgstr ""
-
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Default Gravity Vector"
-msgstr ""
-
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Default Linear Damp"
-msgstr ""
-
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Default Angular Damp"
-msgstr ""
-
-#: scene/resources/world_2d.cpp
-msgid "Canvas"
-msgstr ""
-
-#: servers/arvr/arvr_interface.cpp
-msgid "Is Primary"
-msgstr ""
-
-#: servers/arvr/arvr_interface.cpp
-msgid "Is Initialized"
-msgstr ""
-
-#: servers/arvr/arvr_interface.cpp
-msgid "AR"
-msgstr ""
-
-#: servers/arvr/arvr_interface.cpp
-msgid "Is Anchor Detection Enabled"
-msgstr ""
-
-#: servers/arvr_server.cpp
-msgid "Primary Interface"
-msgstr ""
-
-#: servers/audio/audio_stream.cpp
-msgid "Audio Stream"
-msgstr ""
-
-#: servers/audio/audio_stream.cpp
-msgid "Random Pitch"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_capture.cpp
-#: servers/audio/effects/audio_effect_spectrum_analyzer.cpp
-#: servers/audio/effects/audio_stream_generator.cpp
-msgid "Buffer Length"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "Voice Count"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Dry"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Wet"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "Voice"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-msgid "Depth (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_chorus.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-msgid "Pan"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_compressor.cpp
-#: servers/audio/effects/audio_effect_filter.cpp
-msgid "Gain"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Attack (µs)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Release (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Mix"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Sidechain"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Tap 1"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Tap 2"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_phaser.cpp
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Feedback"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Low-pass"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_distortion.cpp
-msgid "Pre Gain"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_distortion.cpp
-msgid "Keep Hf Hz"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_distortion.cpp
-msgid "Drive"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_distortion.cpp
-msgid "Post Gain"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_filter.cpp
-msgid "Resonance"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_limiter.cpp
-msgid "Ceiling dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_limiter.cpp
-msgid "Threshold dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_limiter.cpp
-msgid "Soft Clip dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_limiter.cpp
-msgid "Soft Clip Ratio"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Range Min Hz"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Range Max Hz"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_pitch_shift.cpp
-msgid "Oversampling"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_pitch_shift.cpp
-#: servers/audio/effects/audio_effect_spectrum_analyzer.cpp
-msgid "FFT Size"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Predelay"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Msec"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "Room Size"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "High-pass"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_spectrum_analyzer.cpp
-msgid "Tap Back Pos"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_stereo_enhance.cpp
-msgid "Pan Pullout"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_stereo_enhance.cpp
-msgid "Time Pullout (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_stereo_enhance.cpp
-msgid "Surround"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Enable Audio Input"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Output Latency"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Channel Disable Threshold dB"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Channel Disable Time"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Video Delay Compensation (ms)"
-msgstr ""
-
-#: servers/audio_server.cpp
-msgid "Bus Count"
-msgstr ""
-
-#: servers/audio_server.cpp
-#, fuzzy
-msgid "Capture Device"
-msgstr "Amẓ"
-
-#: servers/audio_server.cpp
-msgid "Global Rate Scale"
-msgstr ""
-
-#: servers/camera/camera_feed.cpp
-msgid "Feed"
-msgstr ""
-
-#: servers/camera/camera_feed.cpp
-msgid "Is Active"
-msgstr ""
-
-#: servers/physics/space_sw.cpp servers/physics_2d/space_2d_sw.cpp
-msgid "Sleep Threshold Linear"
-msgstr ""
-
-#: servers/physics/space_sw.cpp servers/physics_2d/space_2d_sw.cpp
-msgid "Sleep Threshold Angular"
-msgstr ""
-
-#: servers/physics/space_sw.cpp servers/physics_2d/space_2d_sw.cpp
-msgid "Time Before Sleep"
-msgstr ""
-
-#: servers/physics_2d/physics_2d_server_sw.cpp
-msgid "BP Hash Table Size"
-msgstr ""
-
-#: servers/physics_2d/physics_2d_server_sw.cpp
-msgid "Large Object Surface Threshold In Cells"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Inverse Mass"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Inverse Inertia"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Total Angular Damp"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Total Linear Damp"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Total Gravity"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Linear Velocity"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Exclude"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Shape RID"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collide With Bodies"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collide With Areas"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Motion Remainder"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collision Point"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collision Normal"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collision Depth"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collision Safe Fraction"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Collision Unsafe Fraction"
-msgstr ""
-
-#: servers/physics_2d_server.cpp servers/physics_server.cpp
-msgid "Physics Engine"
-msgstr ""
-
-#: servers/physics_server.cpp
-msgid "Center Of Mass"
-msgstr ""
-
-#: servers/physics_server.cpp
-msgid "Principal Inertia Axes"
-msgstr ""
-
-#: servers/visual/shader_language.cpp
-msgid "Varying may not be assigned in the '%s' function."
-msgstr ""
-
-#: servers/visual/shader_language.cpp
-msgid ""
-"Varyings which were assigned in 'vertex' function may not be reassigned in "
-"'fragment' or 'light'."
-msgstr ""
-
-#: servers/visual/shader_language.cpp
-msgid ""
-"Varyings which were assigned in 'fragment' function may not be reassigned in "
-"'vertex' or 'light'."
-msgstr ""
-
-#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
-msgstr ""
-
-#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
-msgstr ""
-
-#: servers/visual/shader_language.cpp
-msgid "Constants cannot be modified."
-msgstr ""
-
-#: servers/visual/visual_server_scene.cpp
-msgid "Spatial Partitioning"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Render Loop Enabled"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "VRAM Compression"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Import BPTC"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Import S3TC"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Import ETC"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Import ETC2"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Import PVRTC"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Lossless Compression"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Force PNG"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "WebP Compression Level"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Time Rollover Secs"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Cubemap Size"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Quadrant 0 Subdiv"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Quadrant 1 Subdiv"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Quadrant 2 Subdiv"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Quadrant 3 Subdiv"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Shadows"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Filter Mode"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Texture Array Reflections"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "High Quality GGX"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Irradiance Max Size"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Shading"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Force Vertex Shading"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Force Lambert Over Burley"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Force Blinn Over GGX"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Mesh Storage"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Split Stream"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Physical Light Attenuation"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Depth Prepass"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Disable For Vendors"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Anisotropic Filter Level"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Nearest Mipmap Filter"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Skinning"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Software Skinning Fallback"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Force Software Skinning"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Software Skinning"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Ninepatch Mode"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "OpenGL"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Batching Send Null"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Batching Stream"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Legacy Orphan Buffers"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Legacy Stream"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Batching"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Batching"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Batching In Editor"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Single Rect Fallback"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Max Join Item Commands"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Colored Vertex Format Threshold"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Scissor Area Threshold"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Max Join Items"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Batch Buffer Size"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Item Reordering Lookahead"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Flash Batching"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Diagnose Frame"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "GLES2"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Compatibility"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Disable Half Float"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Enable High Float"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Precision"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "UV Contract"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "UV Contract Amount"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Simple PVS"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "PVS Logging"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Use Signals"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Remove Danglers"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Flip Imported Portals"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Occlusion Culling"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Max Active Spheres"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Max Active Polygons"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Shader Compilation Mode"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Max Simultaneous Compiles"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Log Active Async Compiles Count"
-msgstr ""
-
-#: servers/visual_server.cpp
-msgid "Shader Cache Size (MB)"
-msgstr ""
diff --git a/editor/translations/uk.po b/editor/translations/uk.po
index 1d7d85c39e..6d96ccc30b 100644
--- a/editor/translations/uk.po
+++ b/editor/translations/uk.po
@@ -28,8 +28,8 @@ msgstr ""
"Project-Id-Version: Ukrainian (Godot Engine)\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-05-30 16:17+0000\n"
-"Last-Translator: МироÑлав <hlopukmyroslav@gmail.com>\n"
+"PO-Revision-Date: 2022-06-12 13:19+0000\n"
+"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/godot-engine/"
"godot/uk/>\n"
"Language: uk\n"
@@ -222,9 +222,10 @@ msgid "Data"
msgstr "Дані"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr "Мережа"
@@ -330,8 +331,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "ÐедоÑтатньо байтів Ð´Ð»Ñ Ñ—Ñ… Ð´ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð±Ð¾ вказано некоректний формат."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
-msgstr "Ðекоректні вхідні дані %i (не передано) у виразі"
+msgid "Invalid input %d (not passed) in expression"
+msgstr "Ðекоректні вхідні дані %d (не передано) у виразі"
#: core/math/expression.cpp
msgid "self can't be used because instance is null (not passed)"
@@ -376,6 +377,16 @@ msgstr "Черга повідомлень"
msgid "Max Size (KB)"
msgstr "МакÑ. розмір (кБ)"
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Режим переміщеннÑ"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "Видалити введеннÑ"
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -555,7 +566,8 @@ msgstr "ОпиÑ"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "ЗапуÑтити"
@@ -638,6 +650,10 @@ msgid "Main Run Args"
msgstr "Ðргументи оÑновного запуÑку"
#: core/project_settings.cpp
+msgid "Scene Naming"
+msgstr "Ð†Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ð½Ñ Ñцен"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr "Ð Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ у файлах"
@@ -645,18 +661,15 @@ msgstr "Ð Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ у файлах"
msgid "Script Templates Search Path"
msgstr "ШлÑÑ… пошуку Ð´Ð»Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñ–Ð² Ñкриптів"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñми"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+#, fuzzy
+msgid "Version Control Autoload On Startup"
msgstr "Ðвтоматично завантажувати під Ñ‡Ð°Ñ Ð·Ð°Ð¿ÑƒÑку"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Ðазва додатка"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñми"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -763,7 +776,8 @@ msgid "Quality"
msgstr "ЯкіÑть"
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
msgid "Filters"
msgstr "Фільтри"
@@ -1030,6 +1044,7 @@ msgstr "ВиÑока ÑкіÑть"
msgid "Blend Shape Max Buffer Size (KB)"
msgstr "МакÑ. розмір буфера форми Ð·Ð»Ð¸Ñ‚Ñ‚Ñ (кБ)"
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Вільні"
@@ -1046,7 +1061,7 @@ msgstr "Віддзеркалені"
msgid "Time:"
msgstr "ЧаÑ:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "ЗначеннÑ:"
@@ -1128,9 +1143,8 @@ msgid "Value"
msgstr "ЗначеннÑ"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Arg Count"
-msgstr "КількіÑть"
+msgstr "КількіÑть аргументів"
#: editor/animation_track_editor.cpp main/main.cpp
#: modules/mono/mono_gd/gd_mono.cpp
@@ -1145,14 +1159,12 @@ msgid "Type"
msgstr "Тип"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "In Handle"
-msgstr "Ð’Ñтановити обробник"
+msgstr "ДеÑкриптор входу"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Out Handle"
-msgstr "Ð’Ñтановити обробник"
+msgstr "ДеÑкриптор виходу"
#: editor/animation_track_editor.cpp
#: editor/import/resource_importer_texture.cpp
@@ -1162,14 +1174,12 @@ msgid "Stream"
msgstr "Потік"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Start Offset"
-msgstr "ВідÑтуп точки обертаннÑ"
+msgstr "Початковий відÑтуп"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "End Offset"
-msgstr "Гор. зміщеннÑ"
+msgstr "Кінцевий відÑтуп"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
#: editor/import/resource_importer_scene.cpp
@@ -1182,9 +1192,8 @@ msgid "Animation"
msgstr "ÐнімаціÑ"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Easing"
-msgstr "Перейти у-з"
+msgstr "Пом'ÑкшеннÑ"
#: editor/animation_track_editor.cpp
msgid "Anim Multi Change Keyframe Time"
@@ -1293,8 +1302,62 @@ msgid "Remove this track."
msgstr "Вилучити цю доріжку."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
-msgstr "Ð§Ð°Ñ (Ñ): "
+msgid "Time (s):"
+msgstr "Ð§Ð°Ñ (Ñ):"
+
+#: editor/animation_track_editor.cpp
+msgid "Position:"
+msgstr "РозташуваннÑ:"
+
+#: editor/animation_track_editor.cpp
+msgid "Rotation:"
+msgstr "ОбертаннÑ:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "МаÑштаб:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "Тип:"
+
+#: editor/animation_track_editor.cpp
+msgid "(Invalid, expected type: %s)"
+msgstr "(Ðекоректний, очікуваний тип: %s)"
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr "Пом'ÑкшеннÑ:"
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr "ДеÑкриптор входу:"
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr "ДеÑкриптор виходу:"
+
+#: editor/animation_track_editor.cpp
+msgid "Stream:"
+msgstr "Потік:"
+
+#: editor/animation_track_editor.cpp
+msgid "Start (s):"
+msgstr "Початок (Ñек.):"
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr "Кінець (Ñек.):"
+
+#: editor/animation_track_editor.cpp
+msgid "Animation Clip:"
+msgstr "Кліп анімації:"
#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
@@ -1509,8 +1572,8 @@ msgid "Add Method Track Key"
msgstr "Додати ключ доріжки методів"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
-msgstr "Ðе знайдено метод у об'єкті: "
+msgid "Method not found in object:"
+msgstr "Ðе знайдено метод у об'єкті:"
#: editor/animation_track_editor.cpp
msgid "Anim Move Keys"
@@ -2122,8 +2185,8 @@ msgid "Open"
msgstr "Відкрити"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "ВлаÑники:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
msgid ""
@@ -2426,7 +2489,7 @@ msgid "Bus Options"
msgstr "Параметри шини"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Дублювати"
@@ -2478,9 +2541,9 @@ msgstr "Відкрити ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð°ÑƒÐ´Ñ–Ð¾ шини"
msgid "There is no '%s' file."
msgstr "Ðемає файла «%s»."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
-msgstr "Макет"
+#: editor/editor_audio_buses.cpp
+msgid "Layout:"
+msgstr "КомпонуваннÑ:"
#: editor/editor_audio_buses.cpp
msgid "Invalid file, not an audio bus layout."
@@ -2682,6 +2745,25 @@ msgid "Choose"
msgstr "Оберіть"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "Повні шлÑхи до файлів"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "Пакунок уÑпішно вÑтановлено!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "Ðе вдалоÑÑ:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Ð—Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ:"
@@ -2694,6 +2776,31 @@ msgid "Packing"
msgstr "ПакуваннÑ"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Зберегти Ñк"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "Ðеможливо Ñтворити теку."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Ðе вдалоÑÑ ÐµÐºÑпортувати файли проєкту"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Ðеможливо відкрити файл Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Зберегти Ñк"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2810,11 +2917,33 @@ msgstr "Ðетипового шаблону діагноÑтики не знай
msgid "Custom release template not found."
msgstr "Ðетипового шаблону випуÑку не знайдено."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð°Ð¼Ð¸"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "Вказаного шлÑху Ð´Ð»Ñ ÐµÐºÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ðµ Ñ–Ñнує:"
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "Файл шаблону не знайдено:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "Ðеправильний шаблон екÑпорту:"
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+#, fuzzy
+msgid "PCK Embedding"
+msgstr "ФаÑка"
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr ""
"При екÑпортуванні у 32-бітовому режимі вбудовані PCK не можуть перевищувати "
@@ -2993,9 +3122,9 @@ msgid "Import"
msgstr "Імпорт"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "ЕкÑпортуваннÑ"
@@ -4146,14 +4275,6 @@ msgstr ""
"Ðе вдалоÑÑ Ð·Ð°Ð¿Ð¸Ñати до файла «%s», файл викориÑтовує інша програма, його "
"заблоковано або у Ð²Ð°Ñ Ð½ÐµÐ¼Ð°Ñ” відповідних прав доÑтупу до нього."
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Сцена"
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr "Ð†Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ð½Ñ Ñцен"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4268,6 +4389,10 @@ msgid "Default Color Picker Mode"
msgstr "Типовий режим піпетки кольорів"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñми"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "КориÑтувач"
@@ -4295,6 +4420,10 @@ msgstr "Перемкнути режим без відволіканнÑ."
msgid "Add a new scene."
msgstr "Додати нову Ñцену."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Сцена"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Перейти до раніше відкритої Ñцени."
@@ -4982,12 +5111,14 @@ msgid "Selected node is not a Viewport!"
msgstr "Позначений вузол не Ñ” панеллю переглÑду!"
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr "Розмір: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
+msgstr "Розмір:"
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr "Сторінка: "
+msgid "Page:"
+msgstr "Сторінка:"
#: editor/editor_properties_array_dict.cpp
#: editor/plugins/theme_editor_plugin.cpp
@@ -5084,6 +5215,11 @@ msgstr ""
"Будь лаÑка, додайте придатний до викориÑÑ‚Ð°Ð½Ð½Ñ Ð½Ð°Ð±Ñ–Ñ€ параметрів за допомогою "
"меню «ЕкÑпорт» або визначне наÑвний набір Ñк придатний до викориÑтаннÑ."
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Проєкт"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Ðапишіть Ñвою логіку в методі _run ()."
@@ -5339,7 +5475,9 @@ msgid "Draw Spaces"
msgstr "Ð’Ñ–Ð·ÑƒÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾Ð±Ñ–Ð»Ñ–Ð²"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr "ÐавігаціÑ"
@@ -5871,10 +6009,12 @@ msgstr "Вузол"
msgid "Port"
msgstr "Порт"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ”ÐºÑ‚Ð°Ð¼Ð¸"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Sorting Order"
msgstr "Режим упорÑдковуваннÑ"
@@ -6625,14 +6765,6 @@ msgid "Replace in Files"
msgstr "Замінити у файлах"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "Знайти: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "Замінити: "
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr "Замінити вÑÑ– (БЕЗ СКÐСУВÐÐÐЯ)"
@@ -6758,7 +6890,7 @@ msgstr "ПовтореннÑ"
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
msgid "Filter"
msgstr "Фільтр"
@@ -6992,8 +7124,8 @@ msgid "Generating Lightmaps"
msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ°Ñ€Ñ‚ оÑвітленнÑ"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
-msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ñітки: "
+msgid "Generating for Mesh:"
+msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ñітки:"
#: editor/import/resource_importer_scene.cpp
msgid "Running Custom Script..."
@@ -7020,6 +7152,18 @@ msgid "Saving..."
msgstr "ЗбереженнÑ..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr "2D, виÑвити 3D"
@@ -7821,10 +7965,12 @@ msgstr "Параметри калькуваннÑ"
msgid "Directions"
msgstr "ÐапрÑмки"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "Минулі"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "Майбутні"
@@ -7984,8 +8130,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr "Ð’Ñтановити кінець анімації. КориÑно Ð´Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð¼Ñ–Ð¶Ð½Ð¸Ñ… переходів."
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
-msgstr "Перехід: "
+msgid "Transition:"
+msgstr "Перехід:"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Play Mode:"
@@ -8001,11 +8147,6 @@ msgid "New name:"
msgstr "Ðова назва:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "МаÑштаб:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "ÐароÑÑ‚Ð°Ð½Ð½Ñ (Ñ):"
@@ -8914,6 +9055,7 @@ msgstr "Створити нетипові кіÑтки з вузлів"
msgid "Clear Custom Bones"
msgstr "ОчиÑтити нетипові кіÑтки"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -8977,6 +9119,10 @@ msgid "Preview Canvas Scale"
msgstr "Попередній переглÑд маÑштабованого полотна"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "Макет"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr "МаÑка перенеÑÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð²ÑтавлÑÐ½Ð½Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð²Ð¸Ñ… кадрів."
@@ -9308,9 +9454,8 @@ msgid "Icon"
msgstr "Піктограма"
#: editor/plugins/item_list_editor_plugin.cpp
-#, fuzzy
msgid "ID"
-msgstr "IOD"
+msgstr "Ідентифікатор"
#: editor/plugins/item_list_editor_plugin.cpp
#: scene/resources/default_theme/default_theme.cpp
@@ -9745,8 +9890,8 @@ msgid "Volume"
msgstr "Об'єм"
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr "Джерело випромінюваннÑ: "
+msgid "Emission Source:"
+msgstr "Джерело випромінюваннÑ:"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
@@ -9979,6 +10124,7 @@ msgid "Points"
msgstr "Точки"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr "Полігони"
@@ -10135,13 +10281,6 @@ msgid "Instance:"
msgstr "ЕкземплÑÑ€:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "Тип:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr "Відкрити в редакторі"
@@ -10150,10 +10289,6 @@ msgstr "Відкрити в редакторі"
msgid "Load Resource"
msgstr "Завантажити реÑурÑ"
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr "Передзавантажувач реÑурÑів"
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr "Віддзеркалити портали"
@@ -10850,13 +10985,15 @@ msgstr "Обертати"
msgid "Translate"
msgstr "ПереÑунути"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr "МаÑштаб: "
+msgid "Scaling:"
+msgstr "МаÑштаб:"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr "ПеренеÑеннÑ: "
+msgid "Translating:"
+msgstr "ПеренеÑеннÑ:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -10879,11 +11016,6 @@ msgid "Yaw:"
msgstr "РиÑканнÑ:"
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr "Розмір:"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr "Ðамальовано об'єктів:"
@@ -11372,7 +11504,8 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr "Ðекоректна геометріÑ, неможливо замінити Ñіткою."
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+#, fuzzy
+msgid "Convert to MeshInstance2D"
msgstr "Перетворити на Mesh2D"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11404,16 +11537,16 @@ msgid "Sprite"
msgstr "Спрайт"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr "СпрощеннÑ: "
+msgid "Simplification:"
+msgstr "СпрощеннÑ:"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
-msgstr "СтиÑÐºÐ°Ð½Ð½Ñ (пікÑелі): "
+msgid "Shrink (Pixels):"
+msgstr "СтиÑÐºÐ°Ð½Ð½Ñ (пікÑелі):"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
-msgstr "ЗроÑÑ‚Ð°Ð½Ð½Ñ (пікÑелі): "
+msgid "Grow (Pixels):"
+msgstr "ЗроÑÑ‚Ð°Ð½Ð½Ñ (пікÑелі):"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Update Preview"
@@ -12355,8 +12488,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr "Вибір попередньої форми, підплитки або плитки."
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr "ОблаÑть"
@@ -12650,9 +12782,8 @@ msgid "This property can't be changed."
msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ†Ñ–Ñ”Ñ— влаÑтивоÑті не можна змінювати."
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Snap Options"
-msgstr "Параметри прив'Ñзки"
+msgstr "Параметри прилипаннÑ"
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/animated_sprite.cpp
#: scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
@@ -12679,9 +12810,8 @@ msgid "Separation"
msgstr "РозділеннÑ"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Selected Tile"
-msgstr "Позначено"
+msgstr "Позначена плитка"
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/light_2d.cpp scene/2d/line_2d.cpp scene/2d/mesh_instance_2d.cpp
@@ -12694,9 +12824,8 @@ msgid "Texture"
msgstr "ТекÑтура"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Tex Offset"
-msgstr "ВідÑтуп заголовка"
+msgstr "ВідÑтуп текÑтури"
#: editor/plugins/tile_set_editor_plugin.cpp modules/csg/csg_shape.cpp
#: scene/2d/canvas_item.cpp scene/2d/particles_2d.cpp
@@ -12710,49 +12839,40 @@ msgid "Modulate"
msgstr "модулÑціÑ"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Tile Mode"
-msgstr "Перемкнути режим"
+msgstr "Режим плитки"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Autotile Bitmask Mode"
-msgstr "Режим бітової маÑки"
+msgstr "Режим бітової маÑки автоплитки"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Subtile Size"
-msgstr "Розмір обведеннÑ"
+msgstr "Розмір Ñубтитрів"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Subtile Spacing"
-msgstr "Інтервал між Ñ€Ñдками"
+msgstr "Інтервал Ñубтитрів"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Occluder Offset"
-msgstr "Створено затінювальний полігон"
+msgstr "ЗÑув покриттÑ"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Navigation Offset"
-msgstr "Поведінка навігації"
+msgstr "ВідÑтуп навігації"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Shape Offset"
-msgstr "Базове зміщеннÑ"
+msgstr "ВідÑтуп форми"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Shape Transform"
-msgstr "ПеретвореннÑ"
+msgstr "ÐŸÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð¸"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Selected Collision"
-msgstr "ЗіткненнÑ"
+msgstr "Позначене зіткненнÑ"
#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
@@ -12765,19 +12885,16 @@ msgid "Selected Collision One Way Margin"
msgstr "Поле Ð·Ñ–Ñ‚ÐºÐ½ÐµÐ½Ð½Ñ BVH"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Selected Navigation"
-msgstr "Видимі навігації"
+msgstr "Позначена навігаціÑ"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Selected Occlusion"
-msgstr "Ð¤Ð¾ÐºÑƒÑ Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ"
+msgstr "Позначене зіткненнÑ"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Tileset Script"
-msgstr "Filter Script (Фільтрувальний Ñкрипт)"
+msgstr "Скрипт набору плиток"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "TileSet"
@@ -13867,48 +13984,23 @@ msgstr "Ðктивний"
#: editor/project_export.cpp
msgid "Export the project for all the presets defined."
-msgstr ""
+msgstr "ЕкÑпортувати проєкт Ð´Ð»Ñ ÑƒÑÑ–Ñ… визначених наборів."
#: editor/project_export.cpp
msgid "All presets must have an export path defined for Export All to work."
msgstr ""
+"Щоб можна було ÑкориÑтатиÑÑ Ð¿ÑƒÐ½ÐºÑ‚Ð¾Ð¼ «ЕкÑпортувати уÑе», має бути визначено "
+"шлÑÑ… Ð´Ð»Ñ ÐµÐºÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ ÑƒÑÑ–Ñ… наборів."
#: editor/project_export.cpp
msgid "Delete preset '%s'?"
msgstr "Вилучити набір «%s»?"
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-"Ðе вдалоÑÑ ÐµÐºÑпортувати проєкт Ð´Ð»Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð¸ «%s».\n"
-"ЗдаєтьÑÑ, шаблони екÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ð¿ÑƒÑ‰ÐµÐ½Ð¾ або вони Ñ” некоректними."
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-"Ðе вдалоÑÑ ÐµÐºÑпортувати проєкт Ð´Ð»Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð¸ «%s».\n"
-"Причиною може бути помилка у налаштуваннÑÑ… у наборі налаштувань Ð´Ð»Ñ "
-"екÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð±Ð¾ параметрах екÑпортуваннÑ."
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "ЕкÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÑƒÑього"
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr "Вказаного шлÑху Ð´Ð»Ñ ÐµÐºÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ðµ Ñ–Ñнує:"
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-"Ðе виÑтачає шаблонів екÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð¸ або шаблони пошкоджено:"
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr "ШлÑÑ… екÑпорту"
@@ -14018,43 +14110,43 @@ msgid "More Info..."
msgstr "Додаткова інформаціÑ…"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export PCK/Zip..."
-msgstr "ЕкÑпортувати PCK/Zip"
+msgstr "ЕкÑпортувати PCK/Zip…"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export Project..."
-msgstr "ЕкÑпортувати проєкт"
+msgstr "ЕкÑпортувати проєкт…"
#: editor/project_export.cpp
msgid "Export All"
msgstr "ЕкÑпортувати уÑе"
#: editor/project_export.cpp
-#, fuzzy
msgid "Choose an export mode:"
-msgstr "Будь лаÑка, виберіть порожню теку."
+msgstr "Виберіть режим екÑпортуваннÑ:"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export All..."
-msgstr "ЕкÑпортувати уÑе"
+msgstr "ЕкÑпортувати уÑе…"
#: editor/project_export.cpp editor/project_manager.cpp
msgid "ZIP File"
msgstr "Файл ZIP"
#: editor/project_export.cpp
-#, fuzzy
msgid "Godot Project Pack"
-msgstr "Пакунок гри Godot"
+msgstr "Пакунок проєкту Godot"
#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr "Ðемає шаблонів екÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— платформи:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "ЗаÑновники проєкту"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "Ð£Ð¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð°Ð¼Ð¸ екÑпорту"
@@ -15603,8 +15695,8 @@ msgid "Attach Node Script"
msgstr "Долучити Ñкрипт вузла"
#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr "Віддалений "
+msgid "Remote %s:"
+msgstr "Віддалений %s:"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -16419,7 +16511,7 @@ msgstr "Сторони КільцÑ"
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
msgid "Polygon"
msgstr "Багатокутник"
@@ -16489,7 +16581,7 @@ msgstr "ÐŸÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ñервера"
#: modules/enet/networked_multiplayer_enet.cpp
msgid "DTLS Verify"
-msgstr ""
+msgstr "Перевірка DTLS"
#: modules/enet/networked_multiplayer_enet.cpp
msgid "DTLS Hostname"
@@ -16579,8 +16671,8 @@ msgid "Disabled GDNative Singleton"
msgstr "Вимкнений одинак GDNative"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
-msgstr "Бібліотеки: "
+msgid "Libraries:"
+msgstr "Бібліотеки:"
#: modules/gdnative/nativescript/nativescript.cpp
msgid "Class Name"
@@ -16605,7 +16697,7 @@ msgstr "Скрипт"
#: modules/gdscript/editor/gdscript_highlighter.cpp
msgid "Function Definition Color"
-msgstr ""
+msgstr "Колір Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ—"
#: modules/gdscript/editor/gdscript_highlighter.cpp
msgid "Node Path Color"
@@ -16621,11 +16713,11 @@ msgstr "вважати Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°Ð¼Ð¸"
#: modules/gdscript/gdscript.cpp
msgid "Exclude Addons"
-msgstr ""
+msgstr "Виключити додатки"
#: modules/gdscript/gdscript.cpp
msgid "Autocomplete Setters And Getters"
-msgstr ""
+msgstr "Ðвтоматичне Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð²Ñтановлювачів Ñ– отримувачів"
#: modules/gdscript/gdscript_functions.cpp
msgid "Step argument is zero!"
@@ -16975,7 +17067,6 @@ msgid "Use In Baked Light"
msgstr "ВикориÑтовувати у запеченому Ñвітлі"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr "Мобільний"
@@ -17001,6 +17092,19 @@ msgstr "Центр за Z"
msgid "Mask"
msgstr "МаÑка"
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "ÐавігаціÑ"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Поведінка навігації"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "ÐаÑтупна площина"
@@ -17404,8 +17508,8 @@ msgstr ""
"вузла! Будь лаÑка, виправте ваш вузол."
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
-msgstr "Вузлом повернуто некоректну поÑлідовніÑть даних: "
+msgid "Node returned an invalid sequence output:"
+msgstr "Вузлом повернуто некоректну поÑлідовніÑть даних:"
#: modules/visual_script/visual_script.cpp
msgid "Found sequence bit but not the node in the stack, report bug!"
@@ -17413,8 +17517,8 @@ msgstr ""
"ВиÑвлено біт поÑлідовноÑті, але не вузол у Ñтеку. Повідомте про цю ваду!"
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
-msgstr "ÐŸÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ñтека, глибина Ñтека: "
+msgid "Stack overflow with stack depth:"
+msgstr "ÐŸÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ñтека, глибина Ñтека:"
#: modules/visual_script/visual_script.cpp
msgid "Visual Script"
@@ -17782,16 +17886,16 @@ msgid "for (elem) in (input):"
msgstr "Ð´Ð»Ñ (elem) у (input):"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
-msgstr "Тип вводу не ітерабельний: "
+msgid "Input type not iterable:"
+msgstr "Ð†Ñ‚ÐµÑ€Ð°Ñ†Ñ–Ñ Ð·Ð° вхідним типом неможлива:"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Iterator became invalid"
msgstr "Ітератор Ñтав недійÑним"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
-msgstr "Ітератор Ñтав недійÑним: "
+msgid "Iterator became invalid:"
+msgstr "Ітератор Ñтав некоректним:"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Sequence"
@@ -17943,12 +18047,12 @@ msgid "Operator"
msgstr "Оператор"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ": Ðеправильний тип аргументу: "
+msgid "Invalid argument of type:"
+msgstr "Ðекоректний тип аргументу:"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ": ÐеприпуÑтимі аргументи: "
+msgid "Invalid arguments:"
+msgstr "Ðекоректні аргументи:"
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -17959,12 +18063,12 @@ msgid "Var Name"
msgstr "Ðазва змінної"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
-msgstr "Ðе знайдено VariableGet у Ñкрипті: "
+msgid "VariableGet not found in script:"
+msgstr "Ðе знайдено VariableGet у Ñкрипті:"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
-msgstr "Ðе знайдено VariableSet у Ñкрипті: "
+msgid "VariableSet not found in script:"
+msgstr "Ðе знайдено VariableSet у Ñкрипті:"
#: modules/visual_script/visual_script_nodes.cpp
msgid "Preload"
@@ -18451,10 +18555,6 @@ msgid "Could not execute on device."
msgstr "Ðе вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ на приÑтрої."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ програму apksigner."
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18589,12 +18689,17 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr "ВерÑÑ–Ñ Â«SDK цілі» має бути більшою або рівною за верÑÑ–ÑŽ «Мін. SDK»."
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "DMG із підпиÑуваннÑм коду"
+
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
"Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ «apksigner».\n"
"Будь лаÑка, перевірте, чи Ñ” програма доÑтупною у каталозі build-tools набору "
@@ -18614,6 +18719,11 @@ msgid "Could not find keystore, unable to export."
msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñховище ключів. Ðеможливо виконати екÑпортуваннÑ."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "Ðе вдалоÑÑ Ð·Ð°Ð¿ÑƒÑтити підпроцеÑ!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr "«apksigner» повернуто Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ помилку із номером %d"
@@ -18645,7 +18755,8 @@ msgstr ""
"Ðекоректна назва файла! Пакунок Android APK повинен мати ÑÑƒÑ„Ñ–ÐºÑ Ð½Ð°Ð·Ð²Ð¸ *.apk."
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+#, fuzzy
+msgid "Unsupported export format!"
msgstr "Ðепідтримуваний формат екÑпортуваннÑ!\n"
#: platform/android/export/export_plugin.cpp
@@ -18658,10 +18769,9 @@ msgstr ""
"допомогою меню «Проєкт»."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
"ÐевідповідніÑть верÑÑ–Ñ Ð´Ð»Ñ Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ð´Ð»Ñ Android:\n"
@@ -18671,13 +18781,15 @@ msgstr ""
"меню «Проєкт»."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
"Ðе вдалоÑÑ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿Ð¸Ñати файли res://android/build/res/*.xml із назвою проєкту"
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+#, fuzzy
+msgid "Could not export project files to gradle project."
msgstr "Ðе вдалоÑÑ ÐµÐºÑпортувати файли проєкту до проєкту gradle\n"
#: platform/android/export/export_plugin.cpp
@@ -18689,8 +18801,9 @@ msgid "Building Android Project (gradle)"
msgstr "Ð—Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ”ÐºÑ‚Ñƒ Android (gradle)"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
"Ðе вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ”ÐºÑ‚Ñƒ Android. ОзнайомтеÑÑ Ñ–Ð· виведеними "
@@ -18711,7 +18824,8 @@ msgstr ""
"дані можна знайти у каталозі проєкту gradle."
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+#, fuzzy
+msgid "Package not found: \"%s\"."
msgstr "Пакунок не знайдено: %s"
#: platform/android/export/export_plugin.cpp
@@ -18719,17 +18833,16 @@ msgid "Creating APK..."
msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ APK…"
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+#, fuzzy
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
"Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ шаблон APK Ð´Ð»Ñ ÐµÐºÑпортуваннÑ:\n"
"%s"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -18742,7 +18855,8 @@ msgid "Adding files..."
msgstr "Ð”Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð²â€¦"
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+#, fuzzy
+msgid "Could not export project files."
msgstr "Ðе вдалоÑÑ ÐµÐºÑпортувати файли проєкту"
#: platform/android/export/export_plugin.cpp
@@ -18977,6 +19091,17 @@ msgstr "Ðетиповий колір тла"
msgid "Custom BG Color"
msgstr "Ðетиповий колір тла"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð°Ð¼Ð¸"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Ðетипового шаблону випуÑку не знайдено."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18999,22 +19124,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Виконати екÑпортований HTML у браузері за умовчаннÑм ÑиÑтеми."
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ шаблон Ð´Ð»Ñ ÐµÐºÑпорту:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
msgstr "Ðеправильний шаблон екÑпорту:"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+#, fuzzy
+msgid "Could not write file: \"%s\"."
msgstr "Ðе вдалоÑÑ Ð·Ð°Ð¿Ð¸Ñати файл:"
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Поле піктограми"
+
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+#, fuzzy
+msgid "Could not read file: \"%s\"."
msgstr "Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ файл:"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Variant"
msgstr "Варіант"
@@ -19083,15 +19221,18 @@ msgid "Icon 512 X 512"
msgstr "Піктограма 512⨯12"
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+#, fuzzy
+msgid "Could not read HTML shell: \"%s\"."
msgstr "Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ оболонку HTML:"
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+#, fuzzy
+msgid "Could not create HTTP server directory: %s."
msgstr "Ðе вдалоÑÑ Ñтворити каталог на Ñервері HTTP:"
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+#, fuzzy
+msgid "Error starting HTTP server: %d."
msgstr "Помилка під Ñ‡Ð°Ñ Ñпроби запуÑку Ñервера HTTP:"
#: platform/javascript/export/export.cpp
@@ -19356,9 +19497,29 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Ðе вдалоÑÑ ÐµÐºÑпортувати файли проєкту"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "Ðе вдалоÑÑ Ð·Ð°Ð¿ÑƒÑтити підпроцеÑ!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "ЗаÑвідченнÑ"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
"ЗауваженнÑ: процедура заÑвідченнÑ, загалом, триває не більше години. Щойно "
"процедуру буде завершено, ви отримаєте Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ ÐµÐ»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð¾ÑŽ поштою."
@@ -19380,18 +19541,83 @@ msgstr ""
"програми (необов'Ñзкова процедура):"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+"ВикориÑÑ‚Ð°Ð½Ð½Ñ Ñ‡Ð°Ñових позначок Ñ” неÑуміÑним із одноразовим підпиÑом — його "
+"буде вимкнено!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+"Стійке Ñередовище запуÑку Ñ” неÑуміÑним із одноразовим підпиÑом — його буде "
+"вимкнено!"
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
msgid "No identity found."
msgstr "Ðе знайдено профілю."
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Помилка під Ñ‡Ð°Ñ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð°: %s"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+"У цій операційній ÑиÑтемі не передбачено підтримки відноÑних Ñимволічних "
+"поÑилань. ЕкÑпортований проєкт може виÑвитиÑÑ Ð½ÐµÐ¿Ñ€Ð°Ñ†ÐµÐ·Ð´Ð°Ñ‚Ð½Ð¸Ð¼!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "ÐапрÑмок"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "Ðе вдалоÑÑ Ð·Ð°Ð¿ÑƒÑтити підпроцеÑ!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Creating app bundle"
msgstr "Створюємо комплект програми"
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+#, fuzzy
+msgid "Could not find template app to export: \"%s\"."
msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ програму-шаблон Ð´Ð»Ñ ÐµÐºÑпортуваннÑ:"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Ðеправильний шаблон екÑпорту:"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -19400,8 +19626,9 @@ msgstr ""
"поÑилань. ЕкÑпортований проєкт може виÑвитиÑÑ Ð½ÐµÐ¿Ñ€Ð°Ñ†ÐµÐ·Ð´Ð°Ñ‚Ð½Ð¸Ð¼!"
#: platform/osx/export/export.cpp
+#, fuzzy
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
"Ðе знайдено двійкового файла шаблона «%s». Ймовірно, його немає у вашому "
@@ -19448,6 +19675,16 @@ msgid "Sending archive for notarization"
msgstr "ÐадÑилаємо архів Ð´Ð»Ñ Ð·Ð°ÑвідченнÑ"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "ПроєкціÑ"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr "Ðе вдалоÑÑ ÐµÐºÑпортувати файли проєкту до проєкту gradle\n"
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr "Ðекоректний ідентифікатор пакунка:"
@@ -19784,6 +20021,11 @@ msgid "Debug Algorithm"
msgstr "Ðлгоритм діагноÑтики"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸ тимчаÑовий файл:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr "Тип профілю"
@@ -19824,6 +20066,78 @@ msgid "Trademarks"
msgstr "Торгівельні марки"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "ІмпульÑні ÑповіщеннÑ"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñховище ключів. Ðеможливо виконати екÑпортуваннÑ."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñховище ключів. Ðеможливо виконати екÑпортуваннÑ."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+"Щоб мати змогу змінювати піктограму або дані щодо програми, має бути "
+"налаштовано інÑтрумент rcedit у параметрах редактора (ЕкÑпорт > Windows > "
+"Rcedit)."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñховище ключів. Ðеможливо виконати екÑпортуваннÑ."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñховище ключів. Ðеможливо виконати екÑпортуваннÑ."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Тип профілю"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Ðекоректна назва."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+"Щоб мати змогу змінювати піктограму або дані щодо програми, має бути "
+"налаштовано інÑтрумент rcedit у параметрах редактора (ЕкÑпорт > Windows > "
+"Rcedit)."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸ тимчаÑовий файл:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19845,6 +20159,23 @@ msgid "Invalid product version:"
msgstr "Ðекоректна верÑÑ–Ñ Ð¿Ñ€Ð¾Ð´ÑƒÐºÑ‚Ñƒ:"
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Ðекоректний виконуваний файл."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Windows"
msgstr "Вікна"
@@ -19860,6 +20191,10 @@ msgstr ""
msgid "Wine"
msgstr "Вино"
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
msgid "Frames"
@@ -19970,7 +20305,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr "МакÑ. відÑтань"
@@ -20748,17 +21084,19 @@ msgstr ""
"намалюйте багатокутник."
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-"NavigationPolygonInstance має бути дочірнім елементом вузла Navigation2D або "
-"елементом ще нижчої підпорÑдкованоÑті. Він надає лише навігаційні дані."
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr ""
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "За центром внизу"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "Подорож"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
msgid "Rotation Degrees"
@@ -21871,14 +22209,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr "NavigationAgent можна викориÑтовувати лише під проÑторовим вузлом."
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-"NavigationMeshInstance має бути дочірнім елементом вузла Navigation або "
-"елементом ще нижчої підпорÑдкованоÑті. Він надає лише навігаційні дані."
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr "NavMesh"
@@ -22923,9 +23253,8 @@ msgid "Delay"
msgstr "Затримка торканнÑ"
#: scene/animation/animation_blend_tree.cpp
-#, fuzzy
msgid "Random Delay"
-msgstr "Випадковий нахил:"
+msgstr "Випадкова затримка"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
@@ -24345,6 +24674,16 @@ msgid "3D Physics"
msgstr "ПроÑторова фізика"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "ÐавігаціÑ"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "ÐавігаціÑ"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr "ВикориÑтовувати hiDPI"
@@ -25593,7 +25932,7 @@ msgstr "Перехід"
msgid "Refraction"
msgstr "ЗаломленнÑ"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr "Подробиці"
@@ -25668,7 +26007,13 @@ msgid "Visible Instance Count"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Sample Partition Type"
+#, fuzzy
+msgid "Sampling"
+msgstr "МаÑштаб:"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "Ð’Ñтановити базовий тип змінної"
#: scene/resources/navigation_mesh.cpp
@@ -25684,7 +26029,13 @@ msgid "Source Group Name"
msgstr "Ðазва групи джерел"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+#, fuzzy
+msgid "Cells"
+msgstr "Мобільний"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
msgstr "ÐГЕÐТ"
#: scene/resources/navigation_mesh.cpp
@@ -25696,11 +26047,17 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Regions"
+msgstr "ОблаÑть"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr "Об'єднати зі Ñцени"
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+#, fuzzy
+msgid "Edges"
msgstr "Край"
#: scene/resources/navigation_mesh.cpp
@@ -25712,6 +26069,11 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Details"
+msgstr "Подробиці"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr "ВідÑтань диÑкретизації"
@@ -25728,7 +26090,7 @@ msgid "Ledge Spans"
msgstr "Розміри планки"
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -26102,6 +26464,11 @@ msgid "Scenario"
msgstr "Сценарій"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "ÐавігаціÑ"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -26117,6 +26484,26 @@ msgstr "Лівий лінійний"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Типовий крок переÑуваннÑ"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Розмір комірки"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "ВиÑота комірки"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Поле з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñ€ÐµÐ±ÐµÑ€"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr "Полотно"
diff --git a/editor/translations/ur_PK.po b/editor/translations/ur_PK.po
index 52abe6a0a3..79cb7b84e2 100644
--- a/editor/translations/ur_PK.po
+++ b/editor/translations/ur_PK.po
@@ -212,9 +212,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
#, fuzzy
msgid "Network"
msgstr ".تمام کا انتخاب"
@@ -328,7 +329,7 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "یا تو ڈیکوڈ کرنے Ú©Û’ لئے بائیٹس Ú©Ù… Ûیں یا پھر ناقص ÙØ§Ø±Ù…یٹ Ú¾Û’."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+msgid "Invalid input %d (not passed) in expression"
msgstr ""
#: core/math/expression.cpp
@@ -372,6 +373,15 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "ایکشن منتقل کریں"
+
+#: core/os/input.cpp
+msgid "Use Accumulated Input"
+msgstr ""
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -560,7 +570,8 @@ msgstr "سب سکریپشن بنائیں"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr ""
@@ -644,24 +655,23 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
-msgid "Search In File Extensions"
+msgid "Scene Naming"
msgstr ""
#: core/project_settings.cpp
-msgid "Script Templates Search Path"
+msgid "Search In File Extensions"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
+#: core/project_settings.cpp
+msgid "Script Templates Search Path"
msgstr ""
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+msgid "Version Control Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-msgid "Plugin Name"
+msgid "Version Control Plugin Name"
msgstr ""
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
@@ -770,7 +780,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "سب سکریپشن بنائیں"
@@ -1044,6 +1055,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr ""
@@ -1060,7 +1072,7 @@ msgstr ""
msgid "Time:"
msgstr ""
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr ""
@@ -1308,10 +1320,68 @@ msgid "Remove this track."
msgstr ".تمام کا انتخاب"
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+msgid "Time (s):"
msgstr ""
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr ".تمام کا انتخاب"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "مستقل"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "(Invalid, expected type: %s)"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Stream:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "ایکشن منتقل کریں"
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "سب سکریپشن بنائیں"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr ""
@@ -1521,7 +1591,7 @@ msgid "Add Method Track Key"
msgstr ""
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+msgid "Method not found in object:"
msgstr ""
#: editor/animation_track_editor.cpp
@@ -2125,7 +2195,7 @@ msgid "Open"
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
+msgid "Owners of: %s (Total: %d)"
msgstr ""
#: editor/dependency_editor.cpp
@@ -2421,7 +2491,7 @@ msgid "Bus Options"
msgstr "سب سکریپشن بنائیں"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr ""
@@ -2474,8 +2544,8 @@ msgstr ""
msgid "There is no '%s' file."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+msgid "Layout:"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -2680,6 +2750,22 @@ msgid "Choose"
msgstr ""
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Completed successfully."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Failed."
+msgstr ""
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr ""
@@ -2692,6 +2778,28 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp
+msgid "Save PCK"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "سب سکریپشن بنائیں"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "سب سکریپشن بنائیں"
+
+#: editor/editor_export.cpp
+msgid "Can't open file to read from path \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Save ZIP"
+msgstr ""
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2795,8 +2903,27 @@ msgstr ""
msgid "Custom release template not found."
msgstr ""
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr ".تمام کا انتخاب"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "The given export path doesn't exist."
+msgstr ""
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+msgid "Template file not found: \"%s\"."
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr ".تمام کا انتخاب"
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
msgstr ""
#: editor/editor_export.cpp
@@ -2975,9 +3102,9 @@ msgid "Import"
msgstr "درآمد"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr ""
@@ -4083,14 +4210,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr ""
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4210,6 +4329,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr ".تمام کا انتخاب"
@@ -4238,6 +4361,10 @@ msgstr ""
msgid "Add a new scene."
msgstr ""
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr ""
@@ -4881,11 +5008,13 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+msgid "Page:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
@@ -4983,6 +5112,11 @@ msgid ""
"as runnable."
msgstr ""
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "سب سکریپشن بنائیں"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -5245,7 +5379,9 @@ msgid "Draw Spaces"
msgstr ""
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
#, fuzzy
msgid "Navigation"
msgstr "سب سکریپشن بنائیں"
@@ -5803,10 +5939,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Sorting Order"
msgstr ""
@@ -6552,14 +6690,6 @@ msgid "Replace in Files"
msgstr "سب سکریپشن بنائیں"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr ""
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr ""
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr ""
@@ -6690,7 +6820,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "سب سکریپشن بنائیں"
@@ -6942,7 +7072,7 @@ msgid "Generating Lightmaps"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+msgid "Generating for Mesh:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -6970,6 +7100,18 @@ msgid "Saving..."
msgstr ""
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7781,10 +7923,12 @@ msgstr ""
msgid "Directions"
msgstr "سب سکریپشن بنائیں"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr ""
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr ""
@@ -7943,8 +8087,9 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
-msgstr ""
+#, fuzzy
+msgid "Transition:"
+msgstr "سب سکریپشن بنائیں"
#: editor/plugins/animation_state_machine_editor.cpp
#, fuzzy
@@ -7961,11 +8106,6 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr ""
@@ -8880,6 +9020,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr ""
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -8943,6 +9084,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -9698,7 +9843,7 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+msgid "Emission Source:"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
@@ -9938,6 +10083,7 @@ msgid "Points"
msgstr ".تمام کا انتخاب"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
#, fuzzy
msgid "Polygons"
msgstr "سب سکریپشن بنائیں"
@@ -10094,13 +10240,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -10109,10 +10248,6 @@ msgstr ""
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -10819,13 +10954,17 @@ msgstr ""
msgid "Translate"
msgstr ""
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr ""
+#, fuzzy
+msgid "Scaling:"
+msgstr "ایکشن منتقل کریں"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "سب سکریپشن بنائیں"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -10848,11 +10987,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11341,8 +11475,9 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
-msgstr ""
+#, fuzzy
+msgid "Convert to MeshInstance2D"
+msgstr ".تمام کا انتخاب"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Invalid geometry, can't create polygon."
@@ -11375,15 +11510,16 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "ایکشن منتقل کریں"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12351,8 +12487,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
#, fuzzy
msgid "Region"
msgstr "ایکشن منتقل کریں"
@@ -13845,31 +13980,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr ""
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr ""
@@ -14008,6 +14122,11 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "سب سکریپشن بنائیں"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr ""
@@ -15474,7 +15593,8 @@ msgid "Attach Node Script"
msgstr "سب سکریپشن بنائیں"
#: editor/script_editor_debugger.cpp
-msgid "Remote "
+#, fuzzy
+msgid "Remote %s:"
msgstr "ریموٹ "
#: editor/script_editor_debugger.cpp
@@ -16325,7 +16445,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "سب سکریپشن بنائیں"
@@ -16497,7 +16617,7 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+msgid "Libraries:"
msgstr ""
#: modules/gdnative/nativescript/nativescript.cpp
@@ -16912,7 +17032,6 @@ msgid "Use In Baked Light"
msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -16942,6 +17061,19 @@ msgstr ".اینیمیشن کی کیز کو ڈیلیٹ کرو"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "سب سکریپشن بنائیں"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "سب سکریپشن بنائیں"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -17352,7 +17484,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17360,7 +17492,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -17745,7 +17877,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17753,7 +17885,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -17912,12 +18044,14 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
+#, fuzzy
+msgid "Invalid argument of type:"
+msgstr "'%s' کی تعمیر کے لیے غلط دلائل"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
+#, fuzzy
+msgid "Invalid arguments:"
+msgstr "'%s' کی تعمیر کے لیے غلط دلائل"
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -17928,11 +18062,11 @@ msgid "Var Name"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+msgid "VariableGet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+msgid "VariableSet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
@@ -18453,10 +18587,6 @@ msgid "Could not execute on device."
msgstr "سب سکریپشن بنائیں"
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18560,12 +18690,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr ".تمام کا انتخاب"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18581,6 +18715,10 @@ msgid "Could not find keystore, unable to export."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Could not start apksigner executable."
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -18609,7 +18747,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18620,20 +18758,19 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
-msgstr ""
+#, fuzzy
+msgid "Could not export project files to gradle project."
+msgstr "سب سکریپشن بنائیں"
#: platform/android/export/export_plugin.cpp
msgid "Could not write expansion package file!"
@@ -18645,7 +18782,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -18660,7 +18797,7 @@ msgid ""
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18668,15 +18805,13 @@ msgid "Creating APK..."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
-msgstr ""
+#, fuzzy
+msgid "Could not find template APK to export: \"%s\"."
+msgstr "سب سکریپشن بنائیں"
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -18688,7 +18823,7 @@ msgstr ".تمام کا انتخاب"
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr "سب سکریپشن بنائیں"
#: platform/android/export/export_plugin.cpp
@@ -18924,6 +19059,16 @@ msgstr "ایکشن منتقل کریں"
msgid "Custom BG Color"
msgstr "ایکشن منتقل کریں"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr ".تمام کا انتخاب"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Export template not found."
+msgstr ""
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18945,24 +19090,34 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Could not open template for export: \"%s\"."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
-msgstr ""
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
+msgstr ".تمام کا انتخاب"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not write file:"
+msgid "Could not write file: \"%s\"."
msgstr "سب سکریپشن بنائیں"
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr ".تمام کا انتخاب"
+
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read file:"
+msgid "Could not read file: \"%s\"."
msgstr "سب سکریپشن بنائیں"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr ".تمام کا انتخاب"
@@ -19038,15 +19193,15 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr "سب سکریپشن بنائیں"
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr ""
#: platform/javascript/export/export.cpp
@@ -19330,9 +19485,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19348,18 +19522,72 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
msgid "No identity found."
msgstr ""
#: platform/osx/export/export.cpp
-msgid "Creating app bundle"
+msgid "Cannot sign file %s."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/osx/export/export.cpp
+msgid "Could not start hdiutil executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
msgstr ""
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
+msgid "Creating app bundle"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not find template app to export: \"%s\"."
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -19367,7 +19595,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -19408,6 +19636,15 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr ""
@@ -19713,6 +19950,11 @@ msgid "Debug Algorithm"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -19757,6 +19999,64 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "مستقل"
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "'%s' کی تعمیر کے لیے غلط دلائل"
+
+#: platform/windows/export/export.cpp
+msgid "Invalid timestamp server."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Failed to remove temporary file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19775,6 +20075,22 @@ msgid "Invalid product version:"
msgstr ""
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Failed to open executable file \"%s\"."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Windows"
msgstr ""
@@ -19790,6 +20106,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -19904,7 +20224,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
@@ -20693,13 +21014,16 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
+msgid "Navpoly"
msgstr ""
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr ".اینیمیشن کی کیز کو ڈیلیٹ کرو"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Travel Cost"
msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
@@ -21811,12 +22135,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -24300,6 +24618,16 @@ msgid "3D Physics"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "سب سکریپشن بنائیں"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "سب سکریپشن بنائیں"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -25653,7 +25981,7 @@ msgstr ""
msgid "Refraction"
msgstr ".تمام کا انتخاب"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -25731,7 +26059,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "ایکشن منتقل کریں"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr ".Ù†ÙˆÙ¹ÙØ¦Ø± Ú©Û’ اکسٹنٹ Ú©Ùˆ تبدیل کیجیۓ"
#: scene/resources/navigation_mesh.cpp
@@ -25747,10 +26080,15 @@ msgid "Source Group Name"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "سب سکریپشن بنائیں"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -25759,11 +26097,16 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Regions"
+msgstr "ایکشن منتقل کریں"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -25775,6 +26118,11 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Details"
+msgstr ".Ù†ÙˆÙ¹ÙØ¦Ø± Ú©Û’ اکسٹنٹ Ú©Ùˆ تبدیل کیجیۓ"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -25792,7 +26140,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -26183,6 +26531,11 @@ msgid "Scenario"
msgstr ""
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "سب سکریپشن بنائیں"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -26199,6 +26552,26 @@ msgstr ".Ù†ÙˆÙ¹ÙØ¦Ø± Ú©Û’ اکسٹنٹ Ú©Ùˆ تبدیل کیجیۓ"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr ".Ù†ÙˆÙ¹ÙØ¦Ø± Ú©Û’ اکسٹنٹ Ú©Ùˆ تبدیل کیجیۓ"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr ".Ù†ÙˆÙ¹ÙØ¦Ø± Ú©Û’ اکسٹنٹ Ú©Ùˆ تبدیل کیجیۓ"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr ".Ù†ÙˆÙ¹ÙØ¦Ø± Ú©Û’ اکسٹنٹ Ú©Ùˆ تبدیل کیجیۓ"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr ".تمام کا انتخاب"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/vi.po b/editor/translations/vi.po
index e39ad0f94a..a16d75a4bc 100644
--- a/editor/translations/vi.po
+++ b/editor/translations/vi.po
@@ -222,9 +222,10 @@ msgid "Data"
msgstr "Dữ liệu"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr "Mạng"
@@ -331,7 +332,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Không đủ byte để giải mã, hoặc định dạng không hợp lệ."
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "Äầu vào %i không hợp lệ (không được thông qua) trong biểu thức"
#: core/math/expression.cpp
@@ -375,6 +377,16 @@ msgstr "Hàng chỠthông điệp"
msgid "Max Size (KB)"
msgstr "Kích cỡ tối đa (KB)"
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "Chế độ Di chuyển"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "Xoá Input"
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -558,7 +570,8 @@ msgstr "Mô tả"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "Chạy"
@@ -646,6 +659,11 @@ msgid "Main Run Args"
msgstr "Tham số Cảnh chính:"
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "ÄÆ°á»ng dẫn Cảnh:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -653,18 +671,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr "ÄÆ°á»ng dẫn tìm kiếm bản mẫu kịch bản"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "Theo dõi phiên bản"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+#, fuzzy
+msgid "Version Control Autoload On Startup"
msgstr "Tự nạp khi khởi động"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "Tên trình cắm"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "Theo dõi phiên bản"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -775,7 +790,8 @@ msgid "Quality"
msgstr "Chất lượng"
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
msgid "Filters"
msgstr "Bá»™ lá»c"
@@ -1045,6 +1061,7 @@ msgstr "Chất lượng cao"
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "Tá»± do"
@@ -1061,7 +1078,7 @@ msgstr "Phản chiếu"
msgid "Time:"
msgstr "Thá»i gian:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "Giá trị:"
@@ -1310,10 +1327,75 @@ msgid "Remove this track."
msgstr "BỠtrack này."
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "Thá»i gian (s): "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "Vị trí"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "Bước xoay:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "Tỷ lệ:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "Kiểu:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "Bản mẫu xuất không hợp lệ:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Easing:"
+msgstr "Cảnh báo:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "In-Handle:"
+msgstr "Äặt tay nắm"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Out-Handle:"
+msgstr "Äặt tay nắm"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "Trình nghe âm thanh"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "Khởi động lại (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "End (s):"
+msgstr "MỠdần (s):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "Các hoạt hình:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "Bật tắt kích hoạt Track"
@@ -1525,7 +1607,8 @@ msgid "Add Method Track Key"
msgstr "Thêm khoá Method Track"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "Không tìm thấy phương thức trong đối tượng: "
#: editor/animation_track_editor.cpp
@@ -2133,8 +2216,8 @@ msgid "Open"
msgstr "Mở"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "Sở hữu của:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
#, fuzzy
@@ -2440,7 +2523,7 @@ msgid "Bus Options"
msgstr "Tùy chá»n Bus"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "Nhân đôi"
@@ -2492,8 +2575,9 @@ msgstr "Mở bố cục Bus âm thanh"
msgid "There is no '%s' file."
msgstr "Không có tệp tin '%s'."
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "Bố cục"
#: editor/editor_audio_buses.cpp
@@ -2698,6 +2782,25 @@ msgid "Choose"
msgstr "Chá»n"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "Sao chép đưá»ng dẫn nút"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "Cài đặt gói thành công!"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "Thất bại:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "Lưu trữ tệp tin:"
@@ -2710,6 +2813,31 @@ msgid "Packing"
msgstr "Äóng gói"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "Lưu thành"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "Không thể tạo folder."
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "Không viết được file:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "Không thể mở tệp để ghi:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "Lưu thành"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2824,11 +2952,33 @@ msgstr "Không tìm thấy bản mẫu gỡ lỗi tuỳ chỉnh."
msgid "Custom release template not found."
msgstr "Không tìm thấy bản mẫu phát hành tùy chỉnh."
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "Quản lý bản mẫu"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "ÄÆ°á»ng dẫn xuất không tồn tại:"
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "Không tìm thấy tệp bản mẫu:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "Bản mẫu xuất không hợp lệ:"
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+#, fuzzy
+msgid "PCK Embedding"
+msgstr "Äệm"
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr "Ở các bản xuất 32-bit thì PCK được nhúng vào không thể lớn hơn 4 GiB."
@@ -2995,9 +3145,9 @@ msgid "Import"
msgstr "Nhập"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "Xuất ra"
@@ -4127,15 +4277,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "Cảnh"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "ÄÆ°á»ng dẫn Cảnh:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4258,6 +4399,10 @@ msgid "Default Color Picker Mode"
msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "Theo dõi phiên bản"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "Tên ngưá»i dùng"
@@ -4285,6 +4430,10 @@ msgstr "Bật tắt chế độ tập trung."
msgid "Add a new scene."
msgstr "Thêm cảnh mới."
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "Cảnh"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "Trở vỠcảnh đã mở trước đó."
@@ -4946,11 +5095,15 @@ msgid "Selected node is not a Viewport!"
msgstr "Nút được chá»n không phải Cổng xem!"
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#, fuzzy
+msgid "Size:"
msgstr "Kích thước: "
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+#, fuzzy
+msgid "Page:"
msgstr "Trang: "
#: editor/editor_properties_array_dict.cpp
@@ -5044,6 +5197,11 @@ msgid ""
"as runnable."
msgstr ""
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "Dá»± Ãn"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Ghi logic của bạn trong hàm _run()."
@@ -5306,7 +5464,9 @@ msgid "Draw Spaces"
msgstr "Lượt gá»i"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr "Äiá»u hướng"
@@ -5889,10 +6049,12 @@ msgstr ""
msgid "Port"
msgstr "Cổng"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Trình quản lý Dự án"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -6674,14 +6836,6 @@ msgid "Replace in Files"
msgstr "Thay thế tất cả"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "Tìm: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "Thay thế: "
-
-#: editor/find_in_files.cpp
#, fuzzy
msgid "Replace All (NO UNDO)"
msgstr "Thay thế tất cả"
@@ -6811,7 +6965,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "Lá»c:"
@@ -7075,7 +7229,8 @@ msgid "Generating Lightmaps"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+#, fuzzy
+msgid "Generating for Mesh:"
msgstr "Tạo cho lưới: "
#: editor/import/resource_importer_scene.cpp
@@ -7104,6 +7259,18 @@ msgid "Saving..."
msgstr "Äang lưu ..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7911,10 +8078,12 @@ msgstr "Khung hình Liên tiếp"
msgid "Directions"
msgstr "Hướng đi"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "Quá khứ"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "Tương lai"
@@ -8074,7 +8243,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr "Äặt kết thúc hoạt ảnh. Hữu dụng cho sub-transitions."
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
+#, fuzzy
+msgid "Transition:"
msgstr "Chuyển tiếp: "
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8091,11 +8261,6 @@ msgid "New name:"
msgstr "Tên mới:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "Tỷ lệ:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "MỠdần (s):"
@@ -9003,6 +9168,7 @@ msgstr "Tạo xương tuỳ chá»n từ các nút"
msgid "Clear Custom Bones"
msgstr "Xoá sạch các xương tuỳ chỉnh"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9069,6 +9235,10 @@ msgid "Preview Canvas Scale"
msgstr "Xem trước tỉ lệ bức vẽ"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "Bố cục"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -9846,7 +10016,8 @@ msgid "Volume"
msgstr "Âm lượng"
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+#, fuzzy
+msgid "Emission Source:"
msgstr "Nguồn phát ra: "
#: editor/plugins/particles_editor_plugin.cpp
@@ -10082,6 +10253,7 @@ msgid "Points"
msgstr "Các Äiểm"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr "Äa giác"
@@ -10236,13 +10408,6 @@ msgid "Instance:"
msgstr "Thế:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "Kiểu:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr "Mở trong Trình biên soạn"
@@ -10251,10 +10416,6 @@ msgstr "Mở trong Trình biên soạn"
msgid "Load Resource"
msgstr "Nạp tài nguyên"
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr ""
-
#: editor/plugins/room_manager_editor_plugin.cpp
#, fuzzy
msgid "Flip Portals"
@@ -10979,13 +11140,17 @@ msgstr "Chế độ Xoay"
msgid "Translate"
msgstr "Bản dịch"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr ""
+#, fuzzy
+msgid "Scaling:"
+msgstr "Tỷ lệ:"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr ""
+#, fuzzy
+msgid "Translating:"
+msgstr "Bản dịch:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -11008,12 +11173,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
-msgid "Size:"
-msgstr "Kích thước: "
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11507,7 +11666,8 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr "Hình không hợp lệ, không thể thay thế bằng lưới."
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+#, fuzzy
+msgid "Convert to MeshInstance2D"
msgstr "Chuyển thành Mesh2D"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11539,15 +11699,18 @@ msgid "Sprite"
msgstr "Sprite"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
+#, fuzzy
+msgid "Simplification:"
msgstr "ÄÆ¡n giản hóa: "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+#, fuzzy
+msgid "Shrink (Pixels):"
msgstr "Thu nhá» (Äiểm ảnh): "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+#, fuzzy
+msgid "Grow (Pixels):"
msgstr "Phóng to (Äiểm ảnh): "
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12557,8 +12720,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr "Khu vá»±c"
@@ -14051,36 +14213,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-"Không thể xuất dá»± án cho ná»n tảng '%s'.\n"
-"Bản mẫu xuất dưá»ng như bị thiếu hoặc không hợp lệ."
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-"Không thể xuất dá»± án cho ná»n tảng '%s'.\n"
-"Có thể là do vấn đỠcấu hình trong cài đặt xuất bản hoặc cài đặt xuất bản "
-"của bạn."
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "Äang xuất tất cả"
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr "ÄÆ°á»ng dẫn xuất không tồn tại:"
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr "Các bản mẫu xuất cho ná»n tảng này bị thiếu/há»ng:"
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr "ÄÆ°á»ng dẫn xuất"
@@ -14226,6 +14362,11 @@ msgid "Export templates for this platform are missing:"
msgstr "Các mẫu xuất bản cho ná»n tảng này bị thiếu:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "Các đồng sáng lập dự án"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "Quản lí bản mẫu xuất"
@@ -15769,8 +15910,9 @@ msgid "Attach Node Script"
msgstr "Äính kèm tập lệnh cá»§a nút"
#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr ""
+#, fuzzy
+msgid "Remote %s:"
+msgstr "Từ xa"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -16651,7 +16793,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "Äa giác"
@@ -16828,7 +16970,8 @@ msgid "Disabled GDNative Singleton"
msgstr "Tắt đơn nhất GDNative"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+#, fuzzy
+msgid "Libraries:"
msgstr "Thư viện: "
#: modules/gdnative/nativescript/nativescript.cpp
@@ -17269,7 +17412,6 @@ msgid "Use In Baked Light"
msgstr "Ãnh sáng"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17299,6 +17441,19 @@ msgstr "Giữa"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "Äiá»u hướng"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "Chế độ di chuyển"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Mặt phẳng tiếp theo"
@@ -17720,7 +17875,8 @@ msgstr ""
"nút! Sửa lại nút của bạn."
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+#, fuzzy
+msgid "Node returned an invalid sequence output:"
msgstr "Nút trả vỠchuỗi không hợp lệ: "
#: modules/visual_script/visual_script.cpp
@@ -17729,7 +17885,8 @@ msgstr ""
"Tìm thấy chuỗi bit nhưng không phải là nút trong ngăn xếp, báo cáo lỗi!"
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+#, fuzzy
+msgid "Stack overflow with stack depth:"
msgstr "Tràn ngăn xếp ở ngăn xếp tầng: "
#: modules/visual_script/visual_script.cpp
@@ -18095,7 +18252,8 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+#, fuzzy
+msgid "Input type not iterable:"
msgstr "Kiểu đầu vào không lặp được: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18103,7 +18261,8 @@ msgid "Iterator became invalid"
msgstr "TrỠlặp không còn hợp lệ"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+#, fuzzy
+msgid "Iterator became invalid:"
msgstr "TrỠlặp không còn hợp lệ: "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18275,11 +18434,13 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
+#, fuzzy
+msgid "Invalid argument of type:"
msgstr ": Tham số có loại không hợp lệ: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
+#, fuzzy
+msgid "Invalid arguments:"
msgstr ": Tham số không hợp lệ: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18292,12 +18453,13 @@ msgid "Var Name"
msgstr "Tên"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+#, fuzzy
+msgid "VariableGet not found in script:"
msgstr "Không tìm thấy VariableGet trong tệp lệnh: "
#: modules/visual_script/visual_script_nodes.cpp
#, fuzzy
-msgid "VariableSet not found in script: "
+msgid "VariableSet not found in script:"
msgstr "Không tìm thấy VariableSet trong tệp lệnh: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18850,10 +19012,6 @@ msgid "Could not execute on device."
msgstr "Không thể tạo folder."
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr "Không tìm thấy công cụ 'apksigner'."
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18971,12 +19129,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "Tín hiệu"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -18996,6 +19158,11 @@ msgid "Could not find keystore, unable to export."
msgstr "Không thể mở bản mẫu để xuất:"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "Không thể bắt đầu quá trình phụ!"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -19026,7 +19193,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "Tên tệp không hợp lệ! Android APK cần đuôi *.apk ở cuối."
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19038,10 +19205,9 @@ msgstr ""
"phiên bản nào tồn tại. Vui lòng cài đặt lại từ bảng chá»n'Dá»± án'."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
"Phiên bản dựng Android không khớp:\n"
@@ -19051,12 +19217,12 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Could not export project files to gradle project\n"
+msgid "Could not export project files to gradle project."
msgstr "Không thể chỉnh sá»­a 'project.godot' trong đưá»ng dẫn dá»± án."
#: platform/android/export/export_plugin.cpp
@@ -19069,8 +19235,9 @@ msgid "Building Android Project (gradle)"
msgstr "Äang dá»±ng dá»± án Android (gradle)"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
"Xây dựng dự án Android thất bại, hãy kiểm tra đầu ra để biết lỗi.\n"
@@ -19090,7 +19257,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr "Không tìm thấy Animation: '%s'"
#: platform/android/export/export_plugin.cpp
@@ -19099,15 +19266,14 @@ msgid "Creating APK..."
msgstr "Tạo đưá»ng viá»n ..."
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+#, fuzzy
+msgid "Could not find template APK to export: \"%s\"."
msgstr "Không thể tìm APK bản mẫu để xuất:"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -19122,7 +19288,7 @@ msgstr "Äang thêm %s..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr "Không viết được file:"
#: platform/android/export/export_plugin.cpp
@@ -19364,6 +19530,17 @@ msgstr "Cắt các nút"
msgid "Custom BG Color"
msgstr "Cắt các nút"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "Quản lý bản mẫu"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Không tìm thấy bản mẫu phát hành tùy chỉnh."
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr "App Store Team ID không được chỉ định - không thể cấu hình dự án."
@@ -19385,23 +19562,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Chạy HTML được xuất với trình duyệt mặc định của máy."
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
msgstr "Không thể mở bản mẫu để xuất:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
msgstr "Bản mẫu xuất không hợp lệ:"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+#, fuzzy
+msgid "Could not write file: \"%s\"."
msgstr "Không viết được file:"
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "Äặt Lá»"
+
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read file:"
+msgid "Could not read file: \"%s\"."
msgstr "Không viết được file:"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "Thu phóng (theo tỉ lệ):"
@@ -19477,17 +19666,17 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr "Không Ä‘á»c được file hình khởi động:"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr "Không thể tạo folder."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr "Lỗi khi lưu scene."
#: platform/javascript/export/export.cpp
@@ -19787,9 +19976,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "Không viết được file:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "Không thể bắt đầu quá trình phụ!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "Bản địa hoá"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19805,29 +20013,85 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "Không tìm thấy tài nguyên phụ."
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "Lỗi lưu tệp: %s"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "Hướng đi"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "Không thể bắt đầu quá trình phụ!"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "Tạo hình thu nhá»"
#: platform/osx/export/export.cpp
#, fuzzy
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr "Không thể mở bản mẫu để xuất:"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "Bản mẫu xuất không hợp lệ:"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
"Không thấy tệp nhị phân bản mẫu được yêu cầu '%s'. Nó có thể bị thiếu trong "
@@ -19871,6 +20135,16 @@ msgstr ""
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "ZIP Creation"
+msgstr "Dá»± Ãn"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr "Không thể chỉnh sá»­a 'project.godot' trong đưá»ng dẫn dá»± án."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Invalid bundle identifier:"
msgstr "Äịnh danh không hợp lệ:"
@@ -20183,6 +20457,11 @@ msgid "Debug Algorithm"
msgstr "Trình gỡ lỗi"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "Không thể gỡ bá» tệp tạm thá»i:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20230,6 +20509,70 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "Xoay ngẫu nhiên:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "Không thể mở bản mẫu để xuất:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "Không thể mở bản mẫu để xuất:"
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "Không thể mở bản mẫu để xuất:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "Không thể mở bản mẫu để xuất:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "Äịnh danh không hợp lệ:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "Tên không hợp lệ."
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "Không thể gỡ bá» tệp tạm thá»i:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20251,6 +20594,23 @@ msgid "Invalid product version:"
msgstr "GUID sản phẩm không hợp lệ."
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "Tên đuôi không hợp lệ."
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "Cửa sổ mới"
@@ -20267,6 +20627,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20394,7 +20758,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Thêm vào Cảnh"
@@ -21250,17 +21615,19 @@ msgstr ""
"chạy được. Vui lòng đặt thuộc tính hoặc vẽ một đa giác."
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-"NavigationPolygonInstance phải là nút con hoặc cháu của nút Navigation2D. Nó "
-"chỉ cung cấp dữ liệu Ä‘iá»u hướng."
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr ""
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "Dưới giữa"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "Di chuyển"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
#, fuzzy
@@ -22476,14 +22843,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-"NavigationMeshInstance phải là nút con hoặc cháu một nút Navigation. Nó chỉ "
-"cung cấp dữ liệu Ä‘iá»u hướng."
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
#, fuzzy
msgid "NavMesh"
@@ -25151,6 +25510,16 @@ msgid "3D Physics"
msgstr "Vật lí"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "Äiá»u hướng"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "Äiá»u hướng"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -26568,7 +26937,7 @@ msgstr "Chuyển tiếp: "
msgid "Refraction"
msgstr "Thu phóng (theo tỉ lệ):"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -26651,7 +27020,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "Tỷ lệ:"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "Äặt loại biến"
#: scene/resources/navigation_mesh.cpp
@@ -26668,10 +27042,15 @@ msgid "Source Group Name"
msgstr "Nguồn"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "Tham số Cảnh chính:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -26681,11 +27060,16 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Regions"
+msgstr "Khu vá»±c"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Merge Size"
msgstr "Gộp từ Scene"
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26698,6 +27082,11 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Details"
+msgstr "Nạp mặc định"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -26714,7 +27103,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -27128,6 +27517,11 @@ msgid "Scenario"
msgstr "Cảnh"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "Äiá»u hướng"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -27145,6 +27539,26 @@ msgstr "Tịnh tuyến trái"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "Mặc định"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "Cập nhật bản xem trước"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "Kiểm tra"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "Chỉnh sửa kết nối:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/zh_CN.po b/editor/translations/zh_CN.po
index 445a2def36..ea23349421 100644
--- a/editor/translations/zh_CN.po
+++ b/editor/translations/zh_CN.po
@@ -89,7 +89,7 @@ msgstr ""
"Project-Id-Version: Chinese (Simplified) (Godot Engine)\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: 2018-01-20 12:15+0200\n"
-"PO-Revision-Date: 2022-05-27 04:48+0000\n"
+"PO-Revision-Date: 2022-06-19 11:52+0000\n"
"Last-Translator: Haoyu Qiu <timothyqiu32@gmail.com>\n"
"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
"godot-engine/godot/zh_Hans/>\n"
@@ -98,7 +98,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 4.13-dev\n"
+"X-Generator: Weblate 4.13.1-dev\n"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
@@ -282,9 +282,10 @@ msgid "Data"
msgstr "æ•°æ®"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr "网络"
@@ -388,8 +389,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "è§£ç å­—节数ä¸å¤Ÿï¼Œæˆ–æ ¼å¼æ— æ•ˆã€‚"
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
-msgstr "表达å¼çš„输入 %i 无效(未传递)"
+msgid "Invalid input %d (not passed) in expression"
+msgstr "表达å¼çš„输入 %d 无效(未传递)"
#: core/math/expression.cpp
msgid "self can't be used because instance is null (not passed)"
@@ -432,6 +433,14 @@ msgstr "消æ¯é˜Ÿåˆ—"
msgid "Max Size (KB)"
msgstr "最大大å°ï¼ˆKB)"
+#: core/os/input.cpp
+msgid "Mouse Mode"
+msgstr "鼠标模å¼"
+
+#: core/os/input.cpp
+msgid "Use Accumulated Input"
+msgstr "使用累积输入"
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -611,7 +620,8 @@ msgstr "æè¿°"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "è¿è¡Œ"
@@ -694,6 +704,10 @@ msgid "Main Run Args"
msgstr "主è¿è¡Œå‚æ•°"
#: core/project_settings.cpp
+msgid "Scene Naming"
+msgstr "场景命å"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr "æœç´¢æ–‡ä»¶æ‰©å±•å"
@@ -701,18 +715,15 @@ msgstr "æœç´¢æ–‡ä»¶æ‰©å±•å"
msgid "Script Templates Search Path"
msgstr "è„šæœ¬æ¨¡æ¿æœç´¢è·¯å¾„"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "版本控制"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+#, fuzzy
+msgid "Version Control Autoload On Startup"
msgstr "å¯åŠ¨æ—¶è‡ªåŠ¨åŠ è½½"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "æ’ä»¶å"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "版本控制"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -819,7 +830,8 @@ msgid "Quality"
msgstr "è´¨é‡"
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
msgid "Filters"
msgstr "过滤"
@@ -1086,6 +1098,7 @@ msgstr "高质é‡"
msgid "Blend Shape Max Buffer Size (KB)"
msgstr "æ··åˆå½¢çŠ¶æœ€å¤§ç¼“å†²åŒºå¤§å°ï¼ˆKB)"
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "自由"
@@ -1102,7 +1115,7 @@ msgstr "镜åƒ"
msgid "Time:"
msgstr "时间:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "值:"
@@ -1343,8 +1356,62 @@ msgid "Remove this track."
msgstr "移除该轨é“。"
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
-msgstr "时间(秒): "
+msgid "Time (s):"
+msgstr "时间(秒):"
+
+#: editor/animation_track_editor.cpp
+msgid "Position:"
+msgstr "ä½ç½®ï¼š"
+
+#: editor/animation_track_editor.cpp
+msgid "Rotation:"
+msgstr "旋转:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "缩放:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "类型:"
+
+#: editor/animation_track_editor.cpp
+msgid "(Invalid, expected type: %s)"
+msgstr "(无效,期望类型:%s)"
+
+#: editor/animation_track_editor.cpp
+msgid "Easing:"
+msgstr "缓动:"
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr "入点手柄:"
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr "出点手柄:"
+
+#: editor/animation_track_editor.cpp
+msgid "Stream:"
+msgstr "æµï¼š"
+
+#: editor/animation_track_editor.cpp
+msgid "Start (s):"
+msgstr "开始(秒):"
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr "结æŸï¼ˆç§’):"
+
+#: editor/animation_track_editor.cpp
+msgid "Animation Clip:"
+msgstr "动画剪辑:"
#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
@@ -1557,8 +1624,8 @@ msgid "Add Method Track Key"
msgstr "添加方法轨é“帧"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
-msgstr "对象方法未找到: "
+msgid "Method not found in object:"
+msgstr "对象方法未找到:"
#: editor/animation_track_editor.cpp
msgid "Anim Move Keys"
@@ -2159,8 +2226,8 @@ msgid "Open"
msgstr "打开"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "拥有者:"
+msgid "Owners of: %s (Total: %d)"
+msgstr "%s 的所有者(总计:%d)"
#: editor/dependency_editor.cpp
msgid ""
@@ -2457,7 +2524,7 @@ msgid "Bus Options"
msgstr "总线选项"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "创建副本"
@@ -2509,9 +2576,9 @@ msgstr "打开音频总线布局"
msgid "There is no '%s' file."
msgstr "文件 “%s†ä¸å­˜åœ¨ã€‚"
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
-msgstr "布局"
+#: editor/editor_audio_buses.cpp
+msgid "Layout:"
+msgstr "布局:"
#: editor/editor_audio_buses.cpp
msgid "Invalid file, not an audio bus layout."
@@ -2713,6 +2780,23 @@ msgid "Choose"
msgstr "选择"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr "针对平å°å¯¼å‡ºé¡¹ç›®ï¼š"
+
+#: editor/editor_export.cpp
+msgid "Completed with errors."
+msgstr "已完æˆï¼Œå­˜åœ¨é”™è¯¯ã€‚"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "æˆåŠŸå®Œæˆã€‚"
+
+#: editor/editor_export.cpp
+msgid "Failed."
+msgstr "失败。"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "ä¿å­˜æ–‡ä»¶ï¼š"
@@ -2725,6 +2809,26 @@ msgid "Packing"
msgstr "打包中"
#: editor/editor_export.cpp
+msgid "Save PCK"
+msgstr "ä¿å­˜ PCK"
+
+#: editor/editor_export.cpp
+msgid "Cannot create file \"%s\"."
+msgstr "无法创建文件“%sâ€ã€‚"
+
+#: editor/editor_export.cpp
+msgid "Failed to export project files."
+msgstr "导出项目文件失败。"
+
+#: editor/editor_export.cpp
+msgid "Can't open file to read from path \"%s\"."
+msgstr "无法打开ä½äºŽâ€œ%sâ€çš„æ–‡ä»¶ç”¨äºŽè¯»å–。"
+
+#: editor/editor_export.cpp
+msgid "Save ZIP"
+msgstr "ä¿å­˜ ZIP"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2833,9 +2937,26 @@ msgstr "找ä¸åˆ°è‡ªå®šä¹‰è°ƒè¯•模æ¿ã€‚"
msgid "Custom release template not found."
msgstr "找ä¸åˆ°è‡ªå®šä¹‰å‘布模æ¿ã€‚"
+#: editor/editor_export.cpp
+msgid "Prepare Template"
+msgstr "准备模æ¿"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "The given export path doesn't exist."
+msgstr "给定的导出路径ä¸å­˜åœ¨ã€‚"
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
-msgstr "找ä¸åˆ°æ¨¡æ¿æ–‡ä»¶ï¼š"
+msgid "Template file not found: \"%s\"."
+msgstr "æ¨¡æ¿æ–‡ä»¶ä¸å­˜åœ¨ï¼šâ€œ%sâ€ã€‚"
+
+#: editor/editor_export.cpp
+msgid "Failed to copy export template."
+msgstr "å¤åˆ¶å¯¼å‡ºæ¨¡æ¿å¤±è´¥ã€‚"
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
+msgstr "PCK 内嵌"
#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
@@ -3004,9 +3125,9 @@ msgid "Import"
msgstr "导入"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "导出"
@@ -4117,14 +4238,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr "无法写入文件“%sâ€ï¼Œæ–‡ä»¶è¢«å ç”¨ã€å·²é”å®šã€æˆ–æƒé™ä¸è¶³ã€‚"
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "场景"
-
-#: editor/editor_node.cpp
-msgid "Scene Naming"
-msgstr "场景命å"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4239,6 +4352,10 @@ msgid "Default Color Picker Mode"
msgstr "默认å–色器模å¼"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "版本控制"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
msgstr "用户å"
@@ -4266,6 +4383,10 @@ msgstr "切æ¢ä¸“注模å¼ã€‚"
msgid "Add a new scene."
msgstr "添加新场景。"
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "场景"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "转到上一个打开的场景。"
@@ -4929,12 +5050,14 @@ msgid "Selected node is not a Viewport!"
msgstr "é€‰å®šèŠ‚ç‚¹ä¸æ˜¯ Viewportï¼"
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr "大å°ï¼š "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
+msgstr "大å°ï¼š"
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr "页: "
+msgid "Page:"
+msgstr "页:"
#: editor/editor_properties_array_dict.cpp
#: editor/plugins/theme_editor_plugin.cpp
@@ -5027,6 +5150,10 @@ msgstr ""
"没有对应该平å°çš„坿‰§è¡Œå¯¼å‡ºé¢„设。\n"
"请在导出èœå•ä¸­æ·»åŠ å¯æ‰§è¡Œé¢„è®¾ï¼Œæˆ–å°†å·²æœ‰é¢„è®¾è®¾ä¸ºå¯æ‰§è¡Œã€‚"
+#: editor/editor_run_native.cpp
+msgid "Project Run"
+msgstr "项目è¿è¡Œ"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "在 _run() 方法中填写逻辑代ç ã€‚"
@@ -5280,7 +5407,9 @@ msgid "Draw Spaces"
msgstr "绘制空格"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr "导航"
@@ -5812,10 +5941,12 @@ msgstr "主机"
msgid "Port"
msgstr "端å£"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "项目管ç†å™¨"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Sorting Order"
msgstr "æŽ’åºæ–¹å¼"
@@ -6547,14 +6678,6 @@ msgid "Replace in Files"
msgstr "在文件中替æ¢"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "查找: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "替æ¢ï¼š "
-
-#: editor/find_in_files.cpp
msgid "Replace All (NO UNDO)"
msgstr "全部替æ¢ï¼ˆæ— æ³•撤销)"
@@ -6680,7 +6803,7 @@ msgstr "é‡å¤"
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
msgid "Filter"
msgstr "过滤"
@@ -6914,8 +7037,8 @@ msgid "Generating Lightmaps"
msgstr "正在生æˆå…‰ç…§è´´å›¾"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
-msgstr "正在生æˆç½‘格: "
+msgid "Generating for Mesh:"
+msgstr "正在生æˆç½‘格:"
#: editor/import/resource_importer_scene.cpp
msgid "Running Custom Script..."
@@ -6942,6 +7065,21 @@ msgid "Saving..."
msgstr "ä¿å­˜ä¸­..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+"%s:检测到纹ç†è¢«ç”¨äºŽ 3D 法线贴图。正在å¯ç”¨çº¢ç»¿çº¹ç†åŽ‹ç¼©ï¼Œé™ä½Žå†…存使用(è“通é“"
+"被丢弃)。"
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+"%s:检测到纹ç†è¢«ç”¨äºŽ 3D。正在å¯ç”¨è¿‡æ»¤ã€é‡å¤ã€Mipmap 生æˆå’Œ VRAM 纹ç†åŽ‹ç¼©ã€‚"
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr "2Dã€æ£€æµ‹ 3D"
@@ -7723,10 +7861,12 @@ msgstr "洋葱皮选项"
msgid "Directions"
msgstr "æ–¹å‘"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "过去"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "未æ¥"
@@ -7884,8 +8024,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr "设置终点结æŸåŠ¨ç”»ã€‚é€‚ç”¨äºŽå­è¿‡æ¸¡åŠ¨ç”»ã€‚"
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
-msgstr "过渡: "
+msgid "Transition:"
+msgstr "过渡:"
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Play Mode:"
@@ -7901,11 +8041,6 @@ msgid "New name:"
msgstr "æ–°å称:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "缩放:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "淡入(秒):"
@@ -8797,6 +8932,7 @@ msgstr "从节点制作自定义骨骼"
msgid "Clear Custom Bones"
msgstr "清除自定义骨骼"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -8860,6 +8996,10 @@ msgid "Preview Canvas Scale"
msgstr "预览画布缩放"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "布局"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr "用于æ’å…¥é”®çš„è½¬æ¢æŽ©ç ã€‚"
@@ -9618,8 +9758,8 @@ msgid "Volume"
msgstr "体积"
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr "å‘å°„æºï¼š "
+msgid "Emission Source:"
+msgstr "å‘å°„æºï¼š"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
@@ -9850,6 +9990,7 @@ msgid "Points"
msgstr "点"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr "多边形"
@@ -10003,13 +10144,6 @@ msgid "Instance:"
msgstr "实例:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "类型:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr "在编辑器中打开"
@@ -10018,10 +10152,6 @@ msgstr "在编辑器中打开"
msgid "Load Resource"
msgstr "加载资æº"
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr "预加载资æº"
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr "翻转入å£"
@@ -10710,13 +10840,15 @@ msgstr "旋转"
msgid "Translate"
msgstr "平移"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr "缩放: "
+msgid "Scaling:"
+msgstr "缩放:"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
-msgstr "移动: "
+msgid "Translating:"
+msgstr "移动:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
@@ -10739,11 +10871,6 @@ msgid "Yaw:"
msgstr "å航角:"
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr "大å°ï¼š"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr "绘制对象:"
@@ -11225,8 +11352,8 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr "无效的几何体,无法使用网格替æ¢ã€‚"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
-msgstr "转æ¢ä¸º Mesh2D"
+msgid "Convert to MeshInstance2D"
+msgstr "转æ¢ä¸º MeshInstance2D"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Invalid geometry, can't create polygon."
@@ -11257,16 +11384,16 @@ msgid "Sprite"
msgstr "Sprite"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr "简化: "
+msgid "Simplification:"
+msgstr "简化:"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
-msgstr "收缩(åƒç´ ï¼‰ï¼š "
+msgid "Shrink (Pixels):"
+msgstr "收缩(åƒç´ ï¼‰ï¼š"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
-msgstr "扩展(åƒç´ ï¼‰ï¼š "
+msgid "Grow (Pixels):"
+msgstr "扩展(åƒç´ ï¼‰ï¼š"
#: editor/plugins/sprite_editor_plugin.cpp
msgid "Update Preview"
@@ -12194,8 +12321,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr "选择上一个形状ã€å­å›¾å—ã€å›¾å—。"
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr "区域"
@@ -13640,46 +13766,21 @@ msgstr "坿‰§è¡Œçš„"
#: editor/project_export.cpp
msgid "Export the project for all the presets defined."
-msgstr ""
+msgstr "为定义的æ¯ä¸€ä¸ªé¢„设导出该项目。"
#: editor/project_export.cpp
msgid "All presets must have an export path defined for Export All to work."
-msgstr ""
+msgstr "所有预设必须都定义导出路径,æ‰èƒ½è¿›è¡Œâ€œå…¨éƒ¨å¯¼å‡ºâ€ã€‚"
#: editor/project_export.cpp
msgid "Delete preset '%s'?"
msgstr "是å¦åˆ é™¤é¢„设 “%sâ€ï¼Ÿ"
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-"æ— æ³•ä¸ºå¹³å° â€œ%s†导出项目。\n"
-"导出模æ¿ä¼¼ä¹Žç¼ºå¤±æˆ–无效。"
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-"æ— æ³•ä¸ºå¹³å° â€œ%s†导出项目。\n"
-"原因å¯èƒ½æ˜¯å¯¼å‡ºé¢„设或导出设置内的é…置有问题。"
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "全部导出"
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr "指定导出路径ä¸å­˜åœ¨ï¼š"
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr "该平å°çš„导出模æ¿ç¼ºå¤±æˆ–æŸå:"
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr "导出路径"
@@ -13788,43 +13889,42 @@ msgid "More Info..."
msgstr "更多信æ¯..."
#: editor/project_export.cpp
-#, fuzzy
msgid "Export PCK/Zip..."
-msgstr "导出 PCK/ZIP"
+msgstr "导出 PCK/Zip..."
#: editor/project_export.cpp
-#, fuzzy
msgid "Export Project..."
-msgstr "导出项目"
+msgstr "导出项目..."
#: editor/project_export.cpp
msgid "Export All"
msgstr "全部导出"
#: editor/project_export.cpp
-#, fuzzy
msgid "Choose an export mode:"
-msgstr "请选择空文件夹。"
+msgstr "请选择导出模å¼ï¼š"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export All..."
-msgstr "全部导出"
+msgstr "全部导出..."
#: editor/project_export.cpp editor/project_manager.cpp
msgid "ZIP File"
msgstr "ZIP 文件"
#: editor/project_export.cpp
-#, fuzzy
msgid "Godot Project Pack"
-msgstr "Godot 游æˆåŒ…"
+msgstr "Godot 项目包"
#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr "该平å°çš„导出模æ¿ç¼ºå¤±ï¼š"
#: editor/project_export.cpp
+msgid "Project Export"
+msgstr "项目导出"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "管ç†å¯¼å‡ºæ¨¡æ¿"
@@ -15325,8 +15425,8 @@ msgid "Attach Node Script"
msgstr "设置节点的脚本"
#: editor/script_editor_debugger.cpp
-msgid "Remote "
-msgstr "远程 "
+msgid "Remote %s:"
+msgstr "远程 %s:"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -16141,7 +16241,7 @@ msgstr "环边数"
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
msgid "Polygon"
msgstr "多边形"
@@ -16301,8 +16401,8 @@ msgid "Disabled GDNative Singleton"
msgstr "ç¦ç”¨çš„ GDNative å•例"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
-msgstr "库: "
+msgid "Libraries:"
+msgstr "库:"
#: modules/gdnative/nativescript/nativescript.cpp
msgid "Class Name"
@@ -16695,7 +16795,6 @@ msgid "Use In Baked Light"
msgstr "用于烘焙光照"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr "å•元格"
@@ -16721,6 +16820,17 @@ msgstr "Z 轴居中"
msgid "Mask"
msgstr "é®ç½©"
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+msgid "Bake Navigation"
+msgstr "烘焙导航"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+msgid "Navigation Layers"
+msgstr "导航层"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "下一平é¢"
@@ -17118,16 +17228,16 @@ msgid ""
msgstr "节点工作内存的第一个节点的返回值必须被赋值ï¼è¯·ä¿®æ­£èŠ‚ç‚¹ã€‚"
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
-msgstr "节点返回了一个无效的连续输出: "
+msgid "Node returned an invalid sequence output:"
+msgstr "节点返回了一个无效的åºåˆ—输出:"
#: modules/visual_script/visual_script.cpp
msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr "在éžå †æ ˆä¸­çš„节点中找到连续比特,请回报 Bugï¼"
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
-msgstr "堆栈深度溢出: "
+msgid "Stack overflow with stack depth:"
+msgstr "堆栈深度溢出:"
#: modules/visual_script/visual_script.cpp
msgid "Visual Script"
@@ -17488,16 +17598,16 @@ msgid "for (elem) in (input):"
msgstr "对 input 中的æ¯ä¸€ä¸ª elem:"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
-msgstr "输入类型ä¸å¯è¿­ä»£ï¼š "
+msgid "Input type not iterable:"
+msgstr "输入类型ä¸å¯è¿­ä»£ï¼š"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Iterator became invalid"
msgstr "迭代器失效"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
-msgstr "迭代器失效: "
+msgid "Iterator became invalid:"
+msgstr "迭代器失效:"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Sequence"
@@ -17648,12 +17758,12 @@ msgid "Operator"
msgstr "æ“作符"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ": æ— æ•ˆå‚æ•°ç±»åž‹: "
+msgid "Invalid argument of type:"
+msgstr "æ— æ•ˆå‚æ•°ç±»åž‹ï¼š"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ": æ— æ•ˆå‚æ•°: "
+msgid "Invalid arguments:"
+msgstr "æ— æ•ˆå‚æ•°ï¼š"
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -17664,12 +17774,12 @@ msgid "Var Name"
msgstr "å˜é‡åç§°"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
-msgstr "脚本中未找到 VariableGet: "
+msgid "VariableGet not found in script:"
+msgstr "脚本中未找到 VariableGet:"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
-msgstr "脚本中未找到 VariableSet: "
+msgid "VariableSet not found in script:"
+msgstr "脚本中未找到 VariableSet:"
#: modules/visual_script/visual_script_nodes.cpp
msgid "Preload"
@@ -18150,10 +18260,6 @@ msgid "Could not execute on device."
msgstr "无法在设备上è¿è¡Œã€‚"
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr "找ä¸åˆ°â€œapksignerâ€å·¥å…·ã€‚"
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18262,16 +18368,18 @@ msgstr "修改“Target Sdkâ€åªæœ‰åœ¨å½“å¯ç”¨â€œUse Custom Buildâ€æ—¶æ‰æœ‰æ
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr "“Target Sdkâ€ç‰ˆæœ¬å¿…须大于等于“Min Sdkâ€ç‰ˆæœ¬ã€‚"
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Code Signing"
+msgstr "代ç ç­¾å"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
-"无法找到“apksignerâ€ã€‚\n"
-"请检查 Android SDK çš„ build-tools ç›®å½•ä¸­æ˜¯å¦æœ‰æ­¤å‘½ä»¤ã€‚\n"
-"生æˆçš„ %s 未签å。"
+"无法找到“apksignerâ€ã€‚请检查 Android SDK çš„ build-tools ç›®å½•ä¸­æ˜¯å¦æœ‰æ­¤å‘½ä»¤ã€‚生"
+"æˆçš„ %s 未签å。"
#: platform/android/export/export_plugin.cpp
msgid "Signing debug %s..."
@@ -18286,6 +18394,10 @@ msgid "Could not find keystore, unable to export."
msgstr "找ä¸åˆ°å¯†é’¥åº“,无法导出。"
#: platform/android/export/export_plugin.cpp
+msgid "Could not start apksigner executable."
+msgstr "无法å¯åЍ apksigner 坿‰§è¡Œæ–‡ä»¶ã€‚"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr "“apksignerâ€è¿”回错误 #%d"
@@ -18314,8 +18426,8 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "无效文件åï¼Android APK 必须有 *.apk 扩展。"
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
-msgstr "䏿”¯æŒçš„导出格å¼ï¼\n"
+msgid "Unsupported export format!"
+msgstr "䏿”¯æŒçš„导出格å¼ï¼"
#: platform/android/export/export_plugin.cpp
msgid ""
@@ -18326,24 +18438,20 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
-"Android 构建版本ä¸åŒ¹é…:\n"
-" 安装的模æ¿ï¼š%s\n"
-" Godot 版本:%s\n"
-"请从“项目â€èœå•䏭釿–°å®‰è£… Android 构建模æ¿ã€‚"
+"Android 构建版本ä¸åŒ¹é…:安装的模æ¿ï¼š%s,Godot 版本:%s。请从“项目â€èœå•䏭釿–°"
+"安装 Android 构建模æ¿ã€‚"
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
-msgstr "无法使用项目å称覆盖 res://android/build/res/*.xml 文件"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
+msgstr "无法使用项目å称覆盖 res://android/build/res/*.xml 文件。"
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
-msgstr "无法将项目文件导出至 gradle 项目\n"
+msgid "Could not export project files to gradle project."
+msgstr "无法将项目文件导出至 gradle 项目。"
#: platform/android/export/export_plugin.cpp
msgid "Could not write expansion package file!"
@@ -18355,11 +18463,11 @@ msgstr "构建 Android 项目 (Gradle)"
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
-"Android 项目构建失败,请检查输出中显示的错误。\n"
-"也å¯ä»¥è®¿é—® docs.godotengine.org 查看 Android 构建文档。"
+"Android 项目构建失败,请检查输出中显示的错误。也å¯ä»¥è®¿é—® docs.godotengine."
+"org 查看 Android 构建文档。"
#: platform/android/export/export_plugin.cpp
msgid "Moving output"
@@ -18372,38 +18480,33 @@ msgid ""
msgstr "无法å¤åˆ¶ä¸Žæ›´å导出文件,请在 Gradle 项目文件夹内确认输出。"
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
-msgstr "包ä¸å­˜åœ¨ï¼š%s"
+msgid "Package not found: \"%s\"."
+msgstr "包ä¸å­˜åœ¨ï¼šâ€œ%sâ€ã€‚"
#: platform/android/export/export_plugin.cpp
msgid "Creating APK..."
msgstr "正在创建 APK……"
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
-msgstr ""
-"找ä¸åˆ°å¯¼å‡ºæ¨¡æ¿ APK:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
+msgstr "找ä¸åˆ°å¯¼å‡ºæ¨¡æ¿ APK:“%sâ€ã€‚"
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
-"导出模æ¿ç¼ºå¤±æ‰€é€‰æž¶æž„的库:%s。\n"
-"请使用全部所需的库构建模æ¿ï¼Œæˆ–è€…åœ¨å¯¼å‡ºé¢„è®¾ä¸­å–æ¶ˆå¯¹ç¼ºå¤±æž¶æž„的选择。"
+"导出模æ¿ç¼ºå¤±æ‰€é€‰æž¶æž„的库:%s。请使用全部所需的库构建模æ¿ï¼Œæˆ–者在导出预设中å–"
+"消对缺失架构的选择。"
#: platform/android/export/export_plugin.cpp
msgid "Adding files..."
msgstr "正在添加文件……"
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
-msgstr "无法导出项目文件"
+msgid "Could not export project files."
+msgstr "无法导出项目文件。"
#: platform/android/export/export_plugin.cpp
msgid "Aligning APK..."
@@ -18626,6 +18729,15 @@ msgstr "使用自定义背景色"
msgid "Custom BG Color"
msgstr "自定义背景色"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+msgid "Prepare Templates"
+msgstr "准备模æ¿"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Export template not found."
+msgstr "找ä¸åˆ°å¯¼å‡ºæ¨¡æ¿ã€‚"
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr "未指定 App Store Team ID - 无法é…置项目。"
@@ -18647,20 +18759,28 @@ msgid "Run exported HTML in the system's default browser."
msgstr "使用默认æµè§ˆå™¨æ‰“开导出的 HTML 文件。"
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
-msgstr "无法打开导出模æ¿ï¼š"
+msgid "Could not open template for export: \"%s\"."
+msgstr "无法打开导出模æ¿ï¼šâ€œ%sâ€ã€‚"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
-msgstr "å¯¼å‡ºæ¨¡æ¿æ— æ•ˆï¼š"
+msgid "Invalid export template: \"%s\"."
+msgstr "å¯¼å‡ºæ¨¡æ¿æ— æ•ˆï¼šâ€œ%sâ€ã€‚"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr "无法写入文件:"
+msgid "Could not write file: \"%s\"."
+msgstr "无法写入文件:“%sâ€ã€‚"
+
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+msgid "Icon Creation"
+msgstr "图标创建"
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
-msgstr "æ— æ³•è¯»å–æ–‡ä»¶ï¼š"
+msgid "Could not read file: \"%s\"."
+msgstr "æ— æ³•è¯»å–æ–‡ä»¶ï¼šâ€œ%sâ€ã€‚"
+
+#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr "PWA"
#: platform/javascript/export/export.cpp
msgid "Variant"
@@ -18731,16 +18851,16 @@ msgid "Icon 512 X 512"
msgstr "图标 512×512"
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
-msgstr "æ— æ³•è¯»å– HTML 壳:"
+msgid "Could not read HTML shell: \"%s\"."
+msgstr "æ— æ³•è¯»å– HTML 壳:“%sâ€ã€‚"
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
-msgstr "无法创建 HTTP æœåŠ¡å™¨ç›®å½•ï¼š"
+msgid "Could not create HTTP server directory: %s."
+msgstr "无法创建 HTTP æœåŠ¡å™¨ç›®å½•ï¼š%s。"
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
-msgstr "å¯åЍ HTTP æœåŠ¡å™¨æ—¶å‡ºé”™ï¼š"
+msgid "Error starting HTTP server: %d."
+msgstr "å¯åЍ HTTP æœåŠ¡å™¨æ—¶å‡ºé”™ï¼š%d。"
#: platform/javascript/export/export.cpp
msgid "Web"
@@ -19004,10 +19124,26 @@ msgid "Apple Team ID"
msgstr "Apple 团队 ID"
#: platform/osx/export/export.cpp
+msgid "Could not open icon file \"%s\"."
+msgstr "无法打开图标文件“%sâ€ã€‚"
+
+#: platform/osx/export/export.cpp
+msgid "Could not start xcrun executable."
+msgstr "无法å¯åЍ xcrun 坿‰§è¡Œæ–‡ä»¶ã€‚"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization failed."
+msgstr "å…¬è¯å¤±è´¥ã€‚"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr "å…¬è¯è¯·æ±‚ UUID:“%sâ€"
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
-msgstr "注æ„:公è¯è¿‡ç¨‹é€šå¸¸å°‘äºŽä¸€ä¸ªå°æ—¶ã€‚过程结æŸåŽï¼Œä½ ä¼šæ”¶åˆ°ä¸€å°é‚®ä»¶ã€‚"
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
+msgstr "å…¬è¯è¿‡ç¨‹é€šå¸¸å°‘äºŽä¸€ä¸ªå°æ—¶ã€‚过程结æŸåŽï¼Œä½ ä¼šæ”¶åˆ°ä¸€å°é‚®ä»¶ã€‚"
#: platform/osx/export/export.cpp
msgid ""
@@ -19022,16 +19158,67 @@ msgid ""
msgstr "è¿è¡Œä»¥ä¸‹å‘½ä»¤å°†å…¬è¯ç¥¨è¯è£…订到导出的应用中(å¯é€‰ï¼‰ï¼š"
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr "添加时间戳与 Ad-hoc ç­¾åä¸å…¼å®¹ï¼Œå·²è¢«ç¦ç”¨ï¼"
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr "加固è¿è¡Œæ—¶çŽ¯å¢ƒä¸Ž Ad-hoc ç­¾åä¸å…¼å®¹ï¼Œå·²è¢«ç¦ç”¨ï¼"
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr "内置 CodeSign 失败,错误为“%sâ€ã€‚"
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr "内置 CodeSign éœ€è¦ regex 模å—。"
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr "无法å¯åЍ codesign 坿‰§è¡Œæ–‡ä»¶ï¼Œè¯·ç¡®ä¿å·²å®‰è£… Xcode 命令行工具。"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
msgid "No identity found."
msgstr "没有找到身份。"
#: platform/osx/export/export.cpp
+msgid "Cannot sign file %s."
+msgstr "æ— æ³•ç­¾åæ–‡ä»¶ %s。"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr "䏿”¯æŒç›¸å¯¹ç¬¦å·é“¾æŽ¥ï¼Œå¯¼å‡ºçš„“%sâ€å¯èƒ½æŸåï¼"
+
+#: platform/osx/export/export.cpp
+msgid "DMG Creation"
+msgstr "DMG 创建"
+
+#: platform/osx/export/export.cpp
+msgid "Could not start hdiutil executable."
+msgstr "无法å¯åЍ hdiutil 坿‰§è¡Œæ–‡ä»¶ã€‚"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr "`hdiutil create` 失败 - 文件已存在。"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr "`hdiutil create` 失败。"
+
+#: platform/osx/export/export.cpp
msgid "Creating app bundle"
msgstr "正在创建应用æ†ç»‘包"
#: platform/osx/export/export.cpp
-msgid "Could not find template app to export:"
-msgstr "无法找到导出的模æ¿åº”用:"
+msgid "Could not find template app to export: \"%s\"."
+msgstr "无法找到导出的模æ¿åº”用:“%sâ€ã€‚"
+
+#: platform/osx/export/export.cpp
+msgid "Invalid export format."
+msgstr "å¯¼å‡ºæ ¼å¼æ— æ•ˆã€‚"
#: platform/osx/export/export.cpp
msgid ""
@@ -19041,9 +19228,9 @@ msgstr "该æ“ä½œç³»ç»Ÿä¸Šä¸æ”¯æŒç›¸å¯¹ç¬¦å·é“¾æŽ¥ï¼Œå¯¼å‡ºçš„项目å¯èƒ½æŸ
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
-msgstr "未找到请求的二进制模æ¿â€œ%sâ€ã€‚你的模æ¿å½’档中å¯èƒ½ç¼ºå¤±è¯¥æ–‡ä»¶ã€‚"
+msgstr "未找到请求的模æ¿äºŒè¿›åˆ¶æ–‡ä»¶â€œ%sâ€ã€‚你的模æ¿å½’档中å¯èƒ½ç¼ºå¤±è¯¥æ–‡ä»¶ã€‚"
#: platform/osx/export/export.cpp
msgid "Making PKG"
@@ -19082,6 +19269,14 @@ msgid "Sending archive for notarization"
msgstr "正在å‘é€å½’档进行公è¯"
#: platform/osx/export/export.cpp
+msgid "ZIP Creation"
+msgstr "ZIP 创建"
+
+#: platform/osx/export/export.cpp
+msgid "Could not open file to read from path \"%s\"."
+msgstr "无法打开ä½äºŽâ€œ%sâ€çš„æ–‡ä»¶è¿›è¡Œè¯»å–。"
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr "无效的包标识符:"
@@ -19386,6 +19581,10 @@ msgid "Debug Algorithm"
msgstr "调试算法"
#: platform/windows/export/export.cpp
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "é‡å‘½å临时文件“%sâ€å¤±è´¥ã€‚"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr "身份类型"
@@ -19426,6 +19625,70 @@ msgid "Trademarks"
msgstr "商标"
#: platform/windows/export/export.cpp
+msgid "Resources Modification"
+msgstr "资æºä¿®æ”¹"
+
+#: platform/windows/export/export.cpp
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "无法在“%sâ€æ‰¾åˆ° rcedit 坿‰§è¡Œæ–‡ä»¶ã€‚"
+
+#: platform/windows/export/export.cpp
+msgid "Could not find wine executable at \"%s\"."
+msgstr "无法在“%sâ€æ‰¾åˆ° wine 坿‰§è¡Œæ–‡ä»¶ã€‚"
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+"无法å¯åЍ rcedit 坿‰§è¡Œæ–‡ä»¶ï¼Œè¯·åœ¨ç¼–辑器设置中é…ç½® rcedit 路径(导出 > Windows "
+"> Rcedit)。"
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+"rcedit ä¿®æ”¹å¯æ‰§è¡Œæ–‡ä»¶å¤±è´¥ï¼š\n"
+"%s"
+
+#: platform/windows/export/export.cpp
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "无法在“%sâ€æ‰¾åˆ° signtool 坿‰§è¡Œæ–‡ä»¶ã€‚"
+
+#: platform/windows/export/export.cpp
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "无法在“%sâ€æ‰¾åˆ° osslsigncode 坿‰§è¡Œæ–‡ä»¶ã€‚"
+
+#: platform/windows/export/export.cpp
+msgid "Invalid identity type."
+msgstr "身份类型无效。"
+
+#: platform/windows/export/export.cpp
+msgid "Invalid timestamp server."
+msgstr "时间戳æœåŠ¡å™¨æ— æ•ˆã€‚"
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+"无法å¯åЍ signtool 坿‰§è¡Œæ–‡ä»¶ï¼Œè¯·åœ¨ç¼–辑器设置中é…ç½® signtool 路径(导出 > "
+"Windows > Signtool)。"
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+"Signtool ç­¾å坿‰§è¡Œæ–‡ä»¶å¤±è´¥ï¼š\n"
+"%s"
+
+#: platform/windows/export/export.cpp
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "移除临时文件“%sâ€å¤±è´¥ã€‚"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19446,6 +19709,22 @@ msgid "Invalid product version:"
msgstr "产å“版本无效:"
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr "Windows 坿‰§è¡Œæ–‡ä»¶ä¸èƒ½ >= 4GiB。"
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Failed to open executable file \"%s\"."
+msgstr "æ‰“å¼€å¯æ‰§è¡Œæ–‡ä»¶â€œ%sâ€å¤±è´¥ã€‚"
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr "坿‰§è¡Œæ–‡ä»¶å¤´å·²æŸå。"
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr "坿‰§è¡Œæ–‡ä»¶â€œpckâ€åŒºæœªæ‰¾åˆ°ã€‚"
+
+#: platform/windows/export/export.cpp
msgid "Windows"
msgstr "Windows"
@@ -19461,6 +19740,10 @@ msgstr "Osslsigncode"
msgid "Wine"
msgstr "Wine"
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr "32 ä½å¯æ‰§è¡Œæ–‡ä»¶æ— æ³•内嵌 >= 4 GiB 的数æ®ã€‚"
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
msgid "Frames"
@@ -19571,7 +19854,8 @@ msgstr "æš‚åœæµ"
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
msgid "Max Distance"
msgstr "最大è·ç¦»"
@@ -20331,17 +20615,17 @@ msgstr ""
"请为此节点设置一个 NavigationPolygon 类型的资æºä½œä¸ºå½¢çŠ¶ï¼Œè¿™æ ·å®ƒæ‰èƒ½æ­£å¸¸å·¥ä½œã€‚"
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-"NavigationPolygonInstance 类型的节点必须作为 Navigation2D çš„å­èŠ‚ç‚¹æˆ–å­å­™èŠ‚ç‚¹"
-"æ‰èƒ½ä¸ºå…¶æä¾›å¯¼èˆªæ•°æ®ã€‚"
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr "导航多边形"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Enter Cost"
+msgstr "进入消耗"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Travel Cost"
+msgstr "移动消耗"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
msgid "Rotation Degrees"
@@ -21421,14 +21705,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr "NavigationAgent åªèƒ½åœ¨ç»§æ‰¿ Spatial 的父节点下使用。"
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-"NavigationMeshInstance 类型节点必须作为 Navigation 节点的å­èŠ‚ç‚¹æˆ–å­å­™èŠ‚ç‚¹æ‰èƒ½"
-"æä¾›å¯¼èˆªæ•°æ®ã€‚"
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr "导航网格"
@@ -23819,6 +24095,14 @@ msgid "3D Physics"
msgstr "3D 物ç†"
#: scene/register_scene_types.cpp
+msgid "2D Navigation"
+msgstr "2D 导航"
+
+#: scene/register_scene_types.cpp
+msgid "3D Navigation"
+msgstr "3D 导航"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr "使用 hiDPI"
@@ -25029,7 +25313,7 @@ msgstr "传递"
msgid "Refraction"
msgstr "折射"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr "细节"
@@ -25102,8 +25386,12 @@ msgid "Visible Instance Count"
msgstr "å¯è§å®žä¾‹æ•°"
#: scene/resources/navigation_mesh.cpp
-msgid "Sample Partition Type"
-msgstr "采样分区类型"
+msgid "Sampling"
+msgstr "采样"
+
+#: scene/resources/navigation_mesh.cpp
+msgid "Partition Type"
+msgstr "分区类型"
#: scene/resources/navigation_mesh.cpp
msgid "Parsed Geometry Type"
@@ -25118,7 +25406,11 @@ msgid "Source Group Name"
msgstr "æ¥æºåˆ†ç»„åç§°"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
+msgstr "å•元格"
+
+#: scene/resources/navigation_mesh.cpp
+msgid "Agents"
msgstr "代ç†"
#: scene/resources/navigation_mesh.cpp
@@ -25130,11 +25422,15 @@ msgid "Max Slope"
msgstr "最大斜å¡"
#: scene/resources/navigation_mesh.cpp
+msgid "Regions"
+msgstr "地区"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr "åˆå¹¶å¤§å°"
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr "边界"
#: scene/resources/navigation_mesh.cpp
@@ -25146,6 +25442,10 @@ msgid "Verts Per Poly"
msgstr "æ¯å¤šè¾¹å½¢é¡¶ç‚¹æ•°"
#: scene/resources/navigation_mesh.cpp
+msgid "Details"
+msgstr "细节"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr "采样è·ç¦»"
@@ -25162,8 +25462,8 @@ msgid "Ledge Spans"
msgstr "凸å°èŒƒå›´"
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
-msgstr "过滤å¯è¡Œèµ°ä½Žé«˜åº¦èŒƒå›´"
+msgid "Walkable Low Height Spans"
+msgstr "å¯è¡Œèµ°ä½Žé«˜åº¦èŒƒå›´"
#: scene/resources/occluder_shape.cpp
msgid "Spheres"
@@ -25520,6 +25820,10 @@ msgid "Scenario"
msgstr "场景"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+msgid "Navigation Map"
+msgstr "导航地图"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr "DirectSpaceState"
@@ -25535,6 +25839,22 @@ msgstr "默认线性阻尼"
msgid "Default Angular Damp"
msgstr "默认角度阻尼"
+#: scene/resources/world.cpp
+msgid "Default Map Up"
+msgstr "默认地图上方"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+msgid "Default Cell Size"
+msgstr "默认å•元格大å°"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+msgid "Default Cell Height"
+msgstr "默认å•元格高度"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+msgid "Default Edge Connection Margin"
+msgstr "默认边界连接边è·"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr "画布"
diff --git a/editor/translations/zh_HK.po b/editor/translations/zh_HK.po
index 4387b39d1b..01c72c6ee1 100644
--- a/editor/translations/zh_HK.po
+++ b/editor/translations/zh_HK.po
@@ -220,9 +220,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
#, fuzzy
msgid "Network"
msgstr "匯出"
@@ -335,7 +336,7 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr ""
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+msgid "Invalid input %d (not passed) in expression"
msgstr ""
#: core/math/expression.cpp
@@ -379,6 +380,15 @@ msgstr ""
msgid "Max Size (KB)"
msgstr ""
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "移動模å¼"
+
+#: core/os/input.cpp
+msgid "Use Accumulated Input"
+msgstr ""
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -576,7 +586,8 @@ msgstr "æè¿°ï¼š"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "é‹è¡Œ"
@@ -665,6 +676,11 @@ msgid "Main Run Args"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
+msgid "Scene Naming"
+msgstr "場景路徑:"
+
+#: core/project_settings.cpp
msgid "Search In File Extensions"
msgstr ""
@@ -672,20 +688,15 @@ msgstr ""
msgid "Script Templates Search Path"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
+#: core/project_settings.cpp
#, fuzzy
-msgid "Version Control"
+msgid "Version Control Autoload On Startup"
msgstr "版本:"
#: core/project_settings.cpp
-msgid "Autoload On Startup"
-msgstr ""
-
-#: core/project_settings.cpp
#, fuzzy
-msgid "Plugin Name"
-msgstr "æ’件列表:"
+msgid "Version Control Plugin Name"
+msgstr "版本:"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -796,7 +807,8 @@ msgid "Quality"
msgstr ""
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "篩é¸:"
@@ -1075,6 +1087,7 @@ msgstr ""
msgid "Blend Shape Max Buffer Size (KB)"
msgstr ""
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "自由"
@@ -1091,7 +1104,7 @@ msgstr "å°ç¨±"
msgid "Time:"
msgstr "時間:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr ""
@@ -1353,11 +1366,72 @@ msgstr "移除被é¸å–的軌迹。"
#: editor/animation_track_editor.cpp
#, fuzzy
-msgid "Time (s): "
+msgid "Time (s):"
msgstr "時間:"
#: editor/animation_track_editor.cpp
#, fuzzy
+msgid "Position:"
+msgstr "åªé™é¸ä¸­"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "本地化"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "管ç†è¼¸å‡ºç¯„本"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Easing:"
+msgstr "翻譯:"
+
+#: editor/animation_track_editor.cpp
+msgid "In-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+msgid "Out-Handle:"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "編輯Node Curve"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "移動模å¼"
+
+#: editor/animation_track_editor.cpp
+msgid "End (s):"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "新增動畫"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
msgid "Toggle Track Enabled"
msgstr "啟用"
@@ -1588,7 +1662,7 @@ msgid "Add Method Track Key"
msgstr "æ’入軌跡和關éµå¹€"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+msgid "Method not found in object:"
msgstr ""
#: editor/animation_track_editor.cpp
@@ -2217,7 +2291,7 @@ msgid "Open"
msgstr "開啟"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
+msgid "Owners of: %s (Total: %d)"
msgstr ""
#: editor/dependency_editor.cpp
@@ -2527,7 +2601,7 @@ msgid "Bus Options"
msgstr "é¸é …"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "å†è£½"
@@ -2583,8 +2657,9 @@ msgstr ""
msgid "There is no '%s' file."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "佈局"
#: editor/editor_audio_buses.cpp
@@ -2801,6 +2876,24 @@ msgid "Choose"
msgstr "鏿“‡"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "複製路徑"
+
+#: editor/editor_export.cpp
+msgid "Completed successfully."
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "失敗:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr ""
@@ -2813,6 +2906,31 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "å¦å­˜ç‚º"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "無法新增資料夾"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "無法新增資料夾"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "ä¸èƒ½é–‹å•Ÿæª”案以供寫入:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "å¦å­˜ç‚º"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2916,8 +3034,29 @@ msgstr ""
msgid "Custom release template not found."
msgstr ""
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "管ç†è¼¸å‡ºç¯„本"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "檔案ä¸å­˜åœ¨."
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
+msgstr "時長(秒)。"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "管ç†è¼¸å‡ºç¯„本"
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+msgid "PCK Embedding"
msgstr ""
#: editor/editor_export.cpp
@@ -3104,9 +3243,9 @@ msgid "Import"
msgstr "å°Žå…¥"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "匯出"
@@ -4269,15 +4408,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "場景"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "場景路徑:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
msgid "Interface"
@@ -4405,6 +4535,11 @@ msgstr ""
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
+msgid "Version Control"
+msgstr "版本:"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+#, fuzzy
msgid "Username"
msgstr "釿–°å‘½å"
@@ -4434,6 +4569,10 @@ msgstr ""
msgid "Add a new scene."
msgstr "新增軌迹"
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "場景"
+
#: editor/editor_node.cpp
#, fuzzy
msgid "Go to previously opened scene."
@@ -5109,11 +5248,13 @@ msgid "Selected node is not a Viewport!"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+msgid "Page:"
msgstr ""
#: editor/editor_properties_array_dict.cpp
@@ -5212,6 +5353,11 @@ msgid ""
"as runnable."
msgstr ""
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "專案"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -5488,7 +5634,9 @@ msgid "Draw Spaces"
msgstr ""
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
#, fuzzy
msgid "Navigation"
msgstr "æ’ä»¶"
@@ -6069,10 +6217,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -6874,14 +7024,6 @@ msgid "Replace in Files"
msgstr "全部å–代"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "尋找: "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "å–代: "
-
-#: editor/find_in_files.cpp
#, fuzzy
msgid "Replace All (NO UNDO)"
msgstr "全部å–代"
@@ -7018,7 +7160,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "篩é¸:"
@@ -7281,7 +7423,8 @@ msgid "Generating Lightmaps"
msgstr "光照圖生æˆä¸­"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+#, fuzzy
+msgid "Generating for Mesh:"
msgstr "為Mesh生æˆä¸­ï¼š "
#: editor/import/resource_importer_scene.cpp
@@ -7309,6 +7452,18 @@ msgid "Saving..."
msgstr "儲存中..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -8160,11 +8315,13 @@ msgstr "é¸é …"
msgid "Directions"
msgstr "æè¿°ï¼š"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
msgid "Past"
msgstr "貼上"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr ""
@@ -8330,7 +8487,7 @@ msgstr ""
#: editor/plugins/animation_state_machine_editor.cpp
#, fuzzy
-msgid "Transition: "
+msgid "Transition:"
msgstr "éŽæ¸¡"
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8349,11 +8506,6 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr ""
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr ""
@@ -9293,6 +9445,7 @@ msgstr ""
msgid "Clear Custom Bones"
msgstr "é‹è¡Œå ´æ™¯"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9357,6 +9510,10 @@ msgid "Preview Canvas Scale"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "佈局"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr ""
@@ -10134,8 +10291,9 @@ msgid "Volume"
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
-msgstr ""
+#, fuzzy
+msgid "Emission Source:"
+msgstr "å¯è¦‹ç¢°æ’žåœ–å½¢"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
@@ -10376,6 +10534,7 @@ msgid "Points"
msgstr "下移"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
#, fuzzy
msgid "Polygons"
msgstr "æ’ä»¶"
@@ -10533,13 +10692,6 @@ msgid "Instance:"
msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr ""
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr ""
@@ -10548,11 +10700,6 @@ msgstr ""
msgid "Load Resource"
msgstr ""
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#, fuzzy
-msgid "ResourcePreloader"
-msgstr "資æº"
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr ""
@@ -11305,13 +11452,16 @@ msgstr ""
msgid "Translate"
msgstr "翻譯"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
-msgstr ""
+#, fuzzy
+msgid "Scaling:"
+msgstr "鏿“‡æ¨¡å¼"
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Translating: "
+msgid "Translating:"
msgstr "翻譯:"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -11335,11 +11485,6 @@ msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr ""
@@ -11843,7 +11988,7 @@ msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
#, fuzzy
-msgid "Convert to Mesh2D"
+msgid "Convert to MeshInstance2D"
msgstr "轉為..."
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11877,15 +12022,16 @@ msgid "Sprite"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
-msgstr ""
+#, fuzzy
+msgid "Simplification:"
+msgstr "行為"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+msgid "Shrink (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+msgid "Grow (Pixels):"
msgstr ""
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12901,8 +13047,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
#, fuzzy
msgid "Region"
msgstr "無干擾模å¼"
@@ -14430,34 +14575,12 @@ msgid "Delete preset '%s'?"
msgstr "è¦åˆªé™¤é¸ä¸­æª”案?"
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-
-#: editor/project_export.cpp
#, fuzzy
msgid "Exporting All"
msgstr "匯出"
#: editor/project_export.cpp
#, fuzzy
-msgid "The given export path doesn't exist:"
-msgstr "檔案ä¸å­˜åœ¨."
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr ""
-
-#: editor/project_export.cpp
-#, fuzzy
msgid "Export Path"
msgstr "匯出"
@@ -14601,6 +14724,11 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "專案開è’人"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "管ç†è¼¸å‡ºç¯„本"
@@ -16137,7 +16265,7 @@ msgstr "下一個腳本"
#: editor/script_editor_debugger.cpp
#, fuzzy
-msgid "Remote "
+msgid "Remote %s:"
msgstr "移除"
#: editor/script_editor_debugger.cpp
@@ -17007,7 +17135,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "æ’ä»¶"
@@ -17184,8 +17312,9 @@ msgid "Disabled GDNative Singleton"
msgstr ""
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
-msgstr ""
+#, fuzzy
+msgid "Libraries:"
+msgstr "MeshLibrary..."
#: modules/gdnative/nativescript/nativescript.cpp
#, fuzzy
@@ -17614,7 +17743,6 @@ msgid "Use In Baked Light"
msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17644,6 +17772,19 @@ msgstr "ä¸é¸"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "æ’ä»¶"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "æ’ä»¶"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Next Plane"
@@ -18064,7 +18205,7 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+msgid "Node returned an invalid sequence output:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -18072,7 +18213,7 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+msgid "Stack overflow with stack depth:"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -18470,7 +18611,7 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+msgid "Input type not iterable:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18478,7 +18619,7 @@ msgid "Iterator became invalid"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+msgid "Iterator became invalid:"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18640,12 +18781,14 @@ msgid "Operator"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
-msgstr ""
+#, fuzzy
+msgid "Invalid argument of type:"
+msgstr "無效字型"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
-msgstr ""
+#, fuzzy
+msgid "Invalid arguments:"
+msgstr "無效å稱。"
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
@@ -18657,11 +18800,11 @@ msgid "Var Name"
msgstr "å稱"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+msgid "VariableGet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+msgid "VariableSet not found in script:"
msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
@@ -19199,10 +19342,6 @@ msgid "Could not execute on device."
msgstr "無法新增資料夾"
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr ""
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -19307,12 +19446,16 @@ msgstr ""
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "訊號"
+
#: platform/android/export/export_plugin.cpp
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19330,6 +19473,10 @@ msgid "Could not find keystore, unable to export."
msgstr "無法新增資料夾"
#: platform/android/export/export_plugin.cpp
+msgid "Could not start apksigner executable."
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr ""
@@ -19360,7 +19507,7 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+msgid "Unsupported export format!"
msgstr ""
#: platform/android/export/export_plugin.cpp
@@ -19371,20 +19518,19 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr ""
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
-msgstr ""
+#, fuzzy
+msgid "Could not export project files to gradle project."
+msgstr "無法新增資料夾"
#: platform/android/export/export_plugin.cpp
#, fuzzy
@@ -19397,7 +19543,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
@@ -19413,7 +19559,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Package not found: %s"
+msgid "Package not found: \"%s\"."
msgstr "時長(秒)。"
#: platform/android/export/export_plugin.cpp
@@ -19423,15 +19569,12 @@ msgstr "連接中..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+msgid "Could not find template APK to export: \"%s\"."
msgstr "無法新增資料夾"
#: platform/android/export/export_plugin.cpp
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -19443,7 +19586,7 @@ msgstr "ç¯©é¸æª”案..."
#: platform/android/export/export_plugin.cpp
#, fuzzy
-msgid "Could not export project files"
+msgid "Could not export project files."
msgstr "無法新增資料夾"
#: platform/android/export/export_plugin.cpp
@@ -19685,6 +19828,17 @@ msgstr "貼上"
msgid "Custom BG Color"
msgstr "貼上"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "管ç†è¼¸å‡ºç¯„本"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "Export Template管ç†å™¨"
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -19709,25 +19863,34 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not open template for export:"
+msgid "Could not open template for export: \"%s\"."
msgstr "無法新增資料夾"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Invalid export template:"
+msgid "Invalid export template: \"%s\"."
msgstr "管ç†è¼¸å‡ºç¯„本"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not write file:"
+msgid "Could not write file: \"%s\"."
msgstr "無法新增資料夾"
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "內容:"
+
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read file:"
+msgid "Could not read file: \"%s\"."
msgstr "無法新增資料夾"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "翻譯:"
@@ -19803,17 +19966,17 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read HTML shell:"
+msgid "Could not read HTML shell: \"%s\"."
msgstr "無法新增資料夾"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not create HTTP server directory:"
+msgid "Could not create HTTP server directory: %s."
msgstr "無法新增資料夾"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Error starting HTTP server:"
+msgid "Error starting HTTP server: %d."
msgstr "儲存TileSet時出ç¾éŒ¯èª¤ï¼"
#: platform/javascript/export/export.cpp
@@ -20109,9 +20272,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "無法新增資料夾"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "無法新增資料夾"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "本地化"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -20127,21 +20309,75 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "找ä¸åˆ°!"
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "儲存TileSet時出ç¾éŒ¯èª¤ï¼"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "æè¿°ï¼š"
+
+#: platform/osx/export/export.cpp
+msgid "Could not start hdiutil executable."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "正在建立縮圖"
#: platform/osx/export/export.cpp
#, fuzzy
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr "無法新增資料夾"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "管ç†è¼¸å‡ºç¯„本"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -20149,7 +20385,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -20191,6 +20427,16 @@ msgstr ""
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "ZIP Creation"
+msgstr "專案"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr "無法新增資料夾"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Invalid bundle identifier:"
msgstr "無效字型"
@@ -20505,6 +20751,11 @@ msgid "Debug Algorithm"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "無法移除暫存檔:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20551,6 +20802,70 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "貼上動畫"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "無法新增資料夾"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "無法新增資料夾"
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "無法新增資料夾"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "無法新增資料夾"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "無效字型"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "無效å稱。"
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "無法移除暫存檔:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20572,6 +20887,23 @@ msgid "Invalid product version:"
msgstr "無效字型"
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "無效副檔å"
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid "Windows"
msgstr ""
@@ -20587,6 +20919,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20709,7 +21045,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Instance"
@@ -21515,13 +21852,16 @@ msgid ""
msgstr ""
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
+msgid "Navpoly"
msgstr ""
-#: scene/2d/navigation_polygon.cpp
-msgid "Navpoly"
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "ä¸é¸"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+msgid "Travel Cost"
msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
@@ -22671,12 +23011,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
msgid "NavMesh"
msgstr ""
@@ -25270,6 +25604,16 @@ msgid "3D Physics"
msgstr "物ç†å¹€ %"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "æ’ä»¶"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "æ’ä»¶"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -26660,7 +27004,7 @@ msgstr "éŽæ¸¡"
msgid "Refraction"
msgstr "翻譯:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -26741,7 +27085,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "鏿“‡æ¨¡å¼"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "更改動畫循環"
#: scene/resources/navigation_mesh.cpp
@@ -26758,10 +27107,15 @@ msgid "Source Group Name"
msgstr "來æº:"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "內容:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -26770,11 +27124,16 @@ msgid "Max Slope"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Regions"
+msgstr "無干擾模å¼"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Merge Size"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26787,6 +27146,11 @@ msgid "Verts Per Poly"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Details"
+msgstr "é è¨­"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
msgstr ""
@@ -26803,7 +27167,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -27207,6 +27571,11 @@ msgid "Scenario"
msgstr "場景"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "æ’ä»¶"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -27224,6 +27593,26 @@ msgstr "線性"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "é è¨­"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "é è¦½:"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "測試"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "編輯連接"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/editor/translations/zh_TW.po b/editor/translations/zh_TW.po
index 8f3f1374ea..be888529cc 100644
--- a/editor/translations/zh_TW.po
+++ b/editor/translations/zh_TW.po
@@ -240,9 +240,10 @@ msgid "Data"
msgstr "資料"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp main/main.cpp
+#: editor/editor_file_dialog.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#: modules/webrtc/webrtc_data_channel.h modules/websocket/websocket_macros.h
+#: scene/gui/file_dialog.cpp
msgid "Network"
msgstr "網路"
@@ -352,7 +353,8 @@ msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "ä½å…ƒçµ„長度ä¸è¶³ä»¥é€²è¡Œè§£ç¢¼æˆ–或格å¼ç„¡æ•ˆã€‚"
#: core/math/expression.cpp
-msgid "Invalid input %i (not passed) in expression"
+#, fuzzy
+msgid "Invalid input %d (not passed) in expression"
msgstr "é‹ç®—å¼ä¸­çš„輸入 %i 無效 (未傳éžï¼‰"
#: core/math/expression.cpp
@@ -397,6 +399,16 @@ msgstr "訊æ¯ä½‡åˆ—"
msgid "Max Size (KB)"
msgstr "最大大å°ï¼ˆKB)"
+#: core/os/input.cpp
+#, fuzzy
+msgid "Mouse Mode"
+msgstr "移動模å¼"
+
+#: core/os/input.cpp
+#, fuzzy
+msgid "Use Accumulated Input"
+msgstr "刪除輸入"
+
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
msgid "Device"
@@ -585,7 +597,8 @@ msgstr "說明"
#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
-#: main/main.cpp
+#: main/main.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp
msgid "Run"
msgstr "執行"
@@ -676,6 +689,11 @@ msgstr "主執行引數"
#: core/project_settings.cpp
#, fuzzy
+msgid "Scene Naming"
+msgstr "場景路徑:"
+
+#: core/project_settings.cpp
+#, fuzzy
msgid "Search In File Extensions"
msgstr "ä»¥å‰¯æª”åæœå°‹"
@@ -683,18 +701,15 @@ msgstr "ä»¥å‰¯æª”åæœå°‹"
msgid "Script Templates Search Path"
msgstr "è…³æœ¬æ¨£æ¿æœå°‹è·¯å¾‘"
-#: core/project_settings.cpp editor/editor_node.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "Version Control"
-msgstr "版本控制"
-
#: core/project_settings.cpp
-msgid "Autoload On Startup"
+#, fuzzy
+msgid "Version Control Autoload On Startup"
msgstr "啟動時自動載入"
#: core/project_settings.cpp
-msgid "Plugin Name"
-msgstr "外掛å稱"
+#, fuzzy
+msgid "Version Control Plugin Name"
+msgstr "版本控制"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
@@ -810,7 +825,8 @@ msgid "Quality"
msgstr "å“質"
#: core/project_settings.cpp scene/gui/file_dialog.cpp
-#: scene/main/scene_tree.cpp servers/visual_server.cpp
+#: scene/main/scene_tree.cpp scene/resources/navigation_mesh.cpp
+#: servers/visual_server.cpp
#, fuzzy
msgid "Filters"
msgstr "篩é¸å™¨"
@@ -1093,6 +1109,7 @@ msgstr "高å“質"
msgid "Blend Shape Max Buffer Size (KB)"
msgstr "æ··åˆå½¢ç‹€æœ€å¤§ç·©è¡å€å¤§å°ï¼ˆKB)"
+#. TRANSLATORS: Adjective, refers to the mode for Bezier handles (Free, Balanced, Mirror).
#: editor/animation_bezier_editor.cpp
msgid "Free"
msgstr "ä¸å—é™"
@@ -1109,7 +1126,7 @@ msgstr "é¡åƒ"
msgid "Time:"
msgstr "時間:"
-#: editor/animation_bezier_editor.cpp
+#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Value:"
msgstr "數值:"
@@ -1359,10 +1376,75 @@ msgid "Remove this track."
msgstr "移除該動畫軌。"
#: editor/animation_track_editor.cpp
-msgid "Time (s): "
+#, fuzzy
+msgid "Time (s):"
msgstr "時間(秒) : "
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Position:"
+msgstr "ä½ç½®"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Rotation:"
+msgstr "旋轉步長:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/animation_tree_player_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr "縮放:"
+
+#: editor/animation_track_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Type:"
+msgstr "型別:"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "(Invalid, expected type: %s)"
+msgstr "無效的輸出樣æ¿ï¼š"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Easing:"
+msgstr "緩入緩出"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "In-Handle:"
+msgstr "設定處ç†ç¨‹å¼"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Out-Handle:"
+msgstr "設定處ç†ç¨‹å¼"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Stream:"
+msgstr "串æµä½¿ç”¨è€…"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Start (s):"
+msgstr "釿–°é–‹å§‹ï¼ˆç§’):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "End (s):"
+msgstr "淡入(秒):"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Animation Clip:"
+msgstr "動畫:"
+
+#: editor/animation_track_editor.cpp
msgid "Toggle Track Enabled"
msgstr "啟用ï¼ç¦ç”¨è»Œé“"
@@ -1576,7 +1658,8 @@ msgid "Add Method Track Key"
msgstr "新增方法軌é“é—œéµç•«æ ¼"
#: editor/animation_track_editor.cpp
-msgid "Method not found in object: "
+#, fuzzy
+msgid "Method not found in object:"
msgstr "在物件中找ä¸åˆ°æ–¹æ³•: "
#: editor/animation_track_editor.cpp
@@ -2179,8 +2262,8 @@ msgid "Open"
msgstr "開啟"
#: editor/dependency_editor.cpp
-msgid "Owners Of:"
-msgstr "ç‚ºä¸‹åˆ—ä¹‹æ“æœ‰è€…:"
+msgid "Owners of: %s (Total: %d)"
+msgstr ""
#: editor/dependency_editor.cpp
msgid ""
@@ -2478,7 +2561,7 @@ msgid "Bus Options"
msgstr "åŒ¯æµæŽ’é¸é …"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/project_export.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr "é‡è¤‡"
@@ -2530,8 +2613,9 @@ msgstr "é–‹å•ŸéŸ³è¨ŠåŒ¯æµæŽ’é…ç½®"
msgid "There is no '%s' file."
msgstr "檔案「%sã€ä¸å­˜åœ¨ã€‚"
-#: editor/editor_audio_buses.cpp editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Layout"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Layout:"
msgstr "ç•«é¢é…ç½®"
#: editor/editor_audio_buses.cpp
@@ -2735,6 +2819,25 @@ msgid "Choose"
msgstr "鏿“‡"
#: editor/editor_export.cpp
+msgid "Project export for platform:"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed with errors."
+msgstr "複製節點路徑"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Completed successfully."
+msgstr "å¥—ä»¶å®‰è£æˆåŠŸï¼"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed."
+msgstr "失敗:"
+
+#: editor/editor_export.cpp
msgid "Storing File:"
msgstr "儲存檔案:"
@@ -2747,6 +2850,31 @@ msgid "Packing"
msgstr "正在打包"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save PCK"
+msgstr "å¦å­˜æ–°æª”"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Cannot create file \"%s\"."
+msgstr "無法新增資料夾。"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to export project files."
+msgstr "無法匯出專案檔案"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Can't open file to read from path \"%s\"."
+msgstr "無法開啟欲寫入的檔案:"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Save ZIP"
+msgstr "å¦å­˜æ–°æª”"
+
+#: editor/editor_export.cpp
msgid ""
"Target platform requires 'ETC' texture compression for GLES2. Enable 'Import "
"Etc' in Project Settings."
@@ -2863,11 +2991,33 @@ msgstr "找ä¸åˆ°è‡ªå®šç¾©åµéŒ¯æ¨£æ¿ã€‚"
msgid "Custom release template not found."
msgstr "找ä¸åˆ°è‡ªå®šç¾©ç™¼è¡Œæ¨£æ¿ã€‚"
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Prepare Template"
+msgstr "ç®¡ç†æ¨£æ¿"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "The given export path doesn't exist."
+msgstr "給定的匯出路徑ä¸å­˜åœ¨ï¼š"
+
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:"
+#, fuzzy
+msgid "Template file not found: \"%s\"."
msgstr "找ä¸åˆ°æ¨£æ¿æª”案:"
#: editor/editor_export.cpp
+#, fuzzy
+msgid "Failed to copy export template."
+msgstr "無效的輸出樣æ¿ï¼š"
+
+#: editor/editor_export.cpp platform/windows/export/export.cpp
+#: platform/x11/export/export.cpp
+#, fuzzy
+msgid "PCK Embedding"
+msgstr "å¡«å……"
+
+#: editor/editor_export.cpp
msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr "匯出 32 ä½å…ƒæª”時,內嵌 PCK 大å°ä¸å¾—è¶…éŽ 4 GB。"
@@ -3034,9 +3184,9 @@ msgid "Import"
msgstr "匯入"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
-#: platform/android/export/export.cpp platform/javascript/export/export.cpp
-#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
-#: platform/windows/export/export.cpp
+#: platform/android/export/export.cpp platform/android/export/export_plugin.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Export"
msgstr "匯出"
@@ -4167,15 +4317,6 @@ msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr "無法寫入檔案'%s',該檔案正被使用ã€éŽ–å®šæˆ–å› æ¬Šé™ä¸è¶³ã€‚"
-#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
-msgid "Scene"
-msgstr "場景"
-
-#: editor/editor_node.cpp
-#, fuzzy
-msgid "Scene Naming"
-msgstr "場景路徑:"
-
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
#, fuzzy
@@ -4306,6 +4447,10 @@ msgid "Default Color Picker Mode"
msgstr "é è¨­é¡è‰²æŒ‘é¸å™¨æ¨¡å¼"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
+msgid "Version Control"
+msgstr "版本控制"
+
+#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Username"
msgstr "釿–°å‘½å"
@@ -4334,6 +4479,10 @@ msgstr "切æ›ï¼å–消專注模å¼ã€‚"
msgid "Add a new scene."
msgstr "新增場景。"
+#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Scene"
+msgstr "場景"
+
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
msgstr "跳至上一個開啟的場景。"
@@ -5004,11 +5153,14 @@ msgid "Selected node is not a Viewport!"
msgstr "所é¸ç¯€é»žä¸¦éž Viewportï¼"
#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr "大å°ï¼š "
+#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Size:"
+msgstr "大å°ï¼š"
#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+#, fuzzy
+msgid "Page:"
msgstr "é ï¼š "
#: editor/editor_properties_array_dict.cpp
@@ -5106,6 +5258,11 @@ msgstr ""
"為找到å¯åŸ·è¡Œæ–¼è©²å¹³å°çš„匯出é è¨­è¨­å®šã€‚\n"
"請在 [匯出] é¸å–®ä¸­æ–°å¢žä¸€å€‹å¯åŸ·è¡Œçš„é è¨­è¨­å®šï¼Œæˆ–å°‡ç¾æœ‰çš„é è¨­è¨­å®šè¨­ç‚ºå¯åŸ·è¡Œã€‚"
+#: editor/editor_run_native.cpp
+#, fuzzy
+msgid "Project Run"
+msgstr "專案"
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "在 _run() 方法中填寫é‚輯。"
@@ -5399,7 +5556,9 @@ msgid "Draw Spaces"
msgstr "繪製呼å«ï¼š"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/tile_map.cpp
+#: scene/main/scene_tree.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
msgid "Navigation"
msgstr "導航"
@@ -6006,10 +6165,12 @@ msgstr ""
msgid "Port"
msgstr ""
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "專案管ç†å“¡"
+#. TRANSLATORS: Project Manager here refers to the tool used to create/manage Godot projects.
#: editor/editor_settings.cpp
#, fuzzy
msgid "Sorting Order"
@@ -6763,14 +6924,6 @@ msgid "Replace in Files"
msgstr "å–代全部"
#: editor/find_in_files.cpp
-msgid "Find: "
-msgstr "æœå°‹ï¼š "
-
-#: editor/find_in_files.cpp
-msgid "Replace: "
-msgstr "å–代: "
-
-#: editor/find_in_files.cpp
#, fuzzy
msgid "Replace All (NO UNDO)"
msgstr "å–代全部"
@@ -6900,7 +7053,7 @@ msgstr ""
#: editor/import/resource_importer_layered_texture.cpp
#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
-#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#: scene/gui/control.cpp
#, fuzzy
msgid "Filter"
msgstr "篩é¸ï¼š"
@@ -7168,7 +7321,8 @@ msgid "Generating Lightmaps"
msgstr "正在產生光照圖"
#: editor/import/resource_importer_scene.cpp
-msgid "Generating for Mesh: "
+#, fuzzy
+msgid "Generating for Mesh:"
msgstr "正在產生網格: "
#: editor/import/resource_importer_scene.cpp
@@ -7196,6 +7350,18 @@ msgid "Saving..."
msgstr "正在ä¿å­˜..."
#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used as a normal map in 3D. Enabling red-green "
+"texture compression to reduce memory usage (blue channel is discarded)."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid ""
+"%s: Texture detected as used in 3D. Enabling filter, repeat, mipmap "
+"generation and VRAM texture compression."
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
msgid "2D, Detect 3D"
msgstr ""
@@ -7998,10 +8164,12 @@ msgstr "æåœ–ç´™é¸é …"
msgid "Directions"
msgstr "æ–¹å‘"
+#. TRANSLATORS: Opposite of "Future", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Past"
msgstr "éŽåŽ»"
+#. TRANSLATORS: Opposite of "Past", refers to a direction in animation onion skinning.
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
msgstr "未來"
@@ -8159,7 +8327,8 @@ msgid "Set the end animation. This is useful for sub-transitions."
msgstr "設定çµå°¾å‹•畫。é©ç”¨æ–¼å­è½‰å ´ã€‚"
#: editor/plugins/animation_state_machine_editor.cpp
-msgid "Transition: "
+#, fuzzy
+msgid "Transition:"
msgstr "轉場: "
#: editor/plugins/animation_state_machine_editor.cpp
@@ -8176,11 +8345,6 @@ msgid "New name:"
msgstr "æ–°å稱:"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
-#: editor/plugins/multimesh_editor_plugin.cpp
-msgid "Scale:"
-msgstr "縮放:"
-
-#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Fade In (s):"
msgstr "淡入(秒):"
@@ -9081,6 +9245,7 @@ msgstr "自節點建立自定骨骼"
msgid "Clear Custom Bones"
msgstr "清除自定義骨骼"
+#. TRANSLATORS: Noun, name of the 2D/3D View menus.
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
@@ -9147,6 +9312,10 @@ msgid "Preview Canvas Scale"
msgstr "é è¦½ç•«å¸ƒæ¯”例"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr "ç•«é¢é…ç½®"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
msgstr "轉æ›é®ç½©ä»¥æ’入關éµå½±æ ¼ã€‚"
@@ -9910,7 +10079,8 @@ msgid "Volume"
msgstr "é«”ç©"
#: editor/plugins/particles_editor_plugin.cpp
-msgid "Emission Source: "
+#, fuzzy
+msgid "Emission Source:"
msgstr "發射æºï¼š "
#: editor/plugins/particles_editor_plugin.cpp
@@ -10142,6 +10312,7 @@ msgid "Points"
msgstr "點"
#: editor/plugins/polygon_2d_editor_plugin.cpp scene/2d/polygon_2d.cpp
+#: scene/resources/navigation_mesh.cpp
msgid "Polygons"
msgstr "多邊形"
@@ -10295,13 +10466,6 @@ msgid "Instance:"
msgstr "實體:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
-#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Type:"
-msgstr "型別:"
-
-#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
msgstr "在編輯器中開啟"
@@ -10310,10 +10474,6 @@ msgstr "在編輯器中開啟"
msgid "Load Resource"
msgstr "載入資æº"
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-msgid "ResourcePreloader"
-msgstr "資æºé å…ˆè¼‰å…¥å™¨"
-
#: editor/plugins/room_manager_editor_plugin.cpp
msgid "Flip Portals"
msgstr "翻轉入å£"
@@ -11010,12 +11170,16 @@ msgstr "旋轉"
msgid "Translate"
msgstr "移動"
+#. TRANSLATORS: Refers to changing the scale of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling: "
+#, fuzzy
+msgid "Scaling:"
msgstr "縮放: "
+#. TRANSLATORS: Refers to changing the position of a node in the 3D editor.
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Translating: "
+#, fuzzy
+msgid "Translating:"
msgstr "移動: "
#: editor/plugins/spatial_editor_plugin.cpp
@@ -11039,11 +11203,6 @@ msgid "Yaw:"
msgstr "åæ“ºï¼š"
#: editor/plugins/spatial_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Size:"
-msgstr "大å°ï¼š"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn:"
msgstr "繪製的物件:"
@@ -11528,7 +11687,8 @@ msgid "Invalid geometry, can't replace by mesh."
msgstr "無效的幾何圖形,無法以網格å–代。"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Convert to Mesh2D"
+#, fuzzy
+msgid "Convert to MeshInstance2D"
msgstr "轉æ›ç‚º Mesh2D"
#: editor/plugins/sprite_editor_plugin.cpp
@@ -11560,15 +11720,18 @@ msgid "Sprite"
msgstr "拼åˆåœ–"
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Simplification: "
+#, fuzzy
+msgid "Simplification:"
msgstr "簡化: "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Shrink (Pixels): "
+#, fuzzy
+msgid "Shrink (Pixels):"
msgstr "收縮(åƒç´ ï¼‰ï¼š "
#: editor/plugins/sprite_editor_plugin.cpp
-msgid "Grow (Pixels): "
+#, fuzzy
+msgid "Grow (Pixels):"
msgstr "擴展(åƒç´ ï¼‰ï¼š "
#: editor/plugins/sprite_editor_plugin.cpp
@@ -12515,8 +12678,7 @@ msgid "Select the previous shape, subtile, or Tile."
msgstr "鏿“‡å‰ä¸€å€‹å½¢ç‹€ã€å­åœ–å¡Šã€æˆ–圖塊。"
#: editor/plugins/tile_set_editor_plugin.cpp scene/2d/sprite.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/navigation_mesh.cpp
-#: scene/resources/texture.cpp
+#: scene/3d/sprite_3d.cpp scene/resources/texture.cpp
msgid "Region"
msgstr "å€åŸŸ"
@@ -14021,35 +14183,10 @@ msgid "Delete preset '%s'?"
msgstr "確定è¦åˆªé™¤é è¨­è¨­å®šã€Œ%sã€ï¼Ÿ"
#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"Export templates seem to be missing or invalid."
-msgstr ""
-"為平å°ã€Œ%sã€åŒ¯å‡ºå°ˆæ¡ˆå¤±æ•—。\n"
-"匯出樣æ¿ä¼¼ä¹Žå·²éºå¤±æˆ–無效。"
-
-#: editor/project_export.cpp
-msgid ""
-"Failed to export the project for platform '%s'.\n"
-"This might be due to a configuration issue in the export preset or your "
-"export settings."
-msgstr ""
-"為平å°ã€Œ%sã€åŒ¯å‡ºå°ˆæ¡ˆå¤±æ•—。\n"
-"å¯èƒ½æ˜¯ç”±æ–¼åŒ¯å‡ºé è¨­è¨­å®šæˆ–匯出設定中的組態設定有å•題導致。"
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "全部匯出"
#: editor/project_export.cpp
-msgid "The given export path doesn't exist:"
-msgstr "給定的匯出路徑ä¸å­˜åœ¨ï¼š"
-
-#: editor/project_export.cpp
-msgid "Export templates for this platform are missing/corrupted:"
-msgstr "該平å°çš„匯出範本éºå¤±ï¼ææ¯€ï¼š"
-
-#: editor/project_export.cpp
msgid "Export Path"
msgstr "匯出路徑"
@@ -14194,6 +14331,11 @@ msgid "Export templates for this platform are missing:"
msgstr "缺少匯出該平å°ç”¨çš„æ¨£æ¿ï¼š"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Project Export"
+msgstr "專案發起人"
+
+#: editor/project_export.cpp
msgid "Manage Export Templates"
msgstr "管ç†åŒ¯å‡ºæ¨£æ¿"
@@ -15691,7 +15833,8 @@ msgid "Attach Node Script"
msgstr "附加節點腳本"
#: editor/script_editor_debugger.cpp
-msgid "Remote "
+#, fuzzy
+msgid "Remote %s:"
msgstr "é ç«¯ "
#: editor/script_editor_debugger.cpp
@@ -16571,7 +16714,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
-#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
+#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid "Polygon"
msgstr "多邊形"
@@ -16749,7 +16892,8 @@ msgid "Disabled GDNative Singleton"
msgstr "ç¦ç”¨ GDNative 單例"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Libraries: "
+#, fuzzy
+msgid "Libraries:"
msgstr "函å¼åº«ï¼š "
#: modules/gdnative/nativescript/nativescript.cpp
@@ -17193,7 +17337,6 @@ msgid "Use In Baked Light"
msgstr "烘焙光照圖"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
-#: scene/resources/navigation_mesh.cpp
msgid "Cell"
msgstr ""
@@ -17223,6 +17366,19 @@ msgstr "中央"
msgid "Mask"
msgstr ""
+#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
+#, fuzzy
+msgid "Bake Navigation"
+msgstr "導航"
+
+#: modules/gridmap/grid_map.cpp scene/2d/navigation_2d.cpp
+#: scene/2d/navigation_agent_2d.cpp scene/2d/navigation_polygon.cpp
+#: scene/2d/tile_map.cpp scene/3d/navigation.cpp scene/3d/navigation_agent.cpp
+#: scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Navigation Layers"
+msgstr "導航模å¼"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "下一個平é¢"
@@ -17632,7 +17788,8 @@ msgid ""
msgstr "回傳值需被指定為é‹ç®—記憶體節點的第一個元素ï¼è«‹ä¿®æ­£è©²ç¯€é»žã€‚"
#: modules/visual_script/visual_script.cpp
-msgid "Node returned an invalid sequence output: "
+#, fuzzy
+msgid "Node returned an invalid sequence output:"
msgstr "節點回傳了一個無效的連續輸出: "
#: modules/visual_script/visual_script.cpp
@@ -17640,7 +17797,8 @@ msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr "發ç¾äº†é€£çºŒä½å…ƒ (Sequance Bit) 但並éžåœ¨å †ç–Šä¸­çš„節點,請回報該錯誤ï¼"
#: modules/visual_script/visual_script.cpp
-msgid "Stack overflow with stack depth: "
+#, fuzzy
+msgid "Stack overflow with stack depth:"
msgstr "堆疊深度的堆疊溢出: "
#: modules/visual_script/visual_script.cpp
@@ -18008,7 +18166,8 @@ msgid "for (elem) in (input):"
msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Input type not iterable: "
+#, fuzzy
+msgid "Input type not iterable:"
msgstr "輸入型別éžå¯è¿­ä»£åž‹åˆ¥ï¼š "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18016,7 +18175,8 @@ msgid "Iterator became invalid"
msgstr "迭代器已ä¸å¯ç”¨"
#: modules/visual_script/visual_script_flow_control.cpp
-msgid "Iterator became invalid: "
+#, fuzzy
+msgid "Iterator became invalid:"
msgstr "迭代器已ä¸å¯ç”¨ï¼š "
#: modules/visual_script/visual_script_flow_control.cpp
@@ -18190,11 +18350,13 @@ msgid "Operator"
msgstr "疊加é‹ç®—å­ã€‚"
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid argument of type: "
+#, fuzzy
+msgid "Invalid argument of type:"
msgstr ": 無效的引數型別: "
#: modules/visual_script/visual_script_nodes.cpp
-msgid ": Invalid arguments: "
+#, fuzzy
+msgid "Invalid arguments:"
msgstr ": 無效的引數: "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18207,11 +18369,13 @@ msgid "Var Name"
msgstr "å稱"
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableGet not found in script: "
+#, fuzzy
+msgid "VariableGet not found in script:"
msgstr "腳本中未找到 VariableGet(å–得變數): "
#: modules/visual_script/visual_script_nodes.cpp
-msgid "VariableSet not found in script: "
+#, fuzzy
+msgid "VariableSet not found in script:"
msgstr "腳本中未找到 VariableSet(設定變數): "
#: modules/visual_script/visual_script_nodes.cpp
@@ -18763,10 +18927,6 @@ msgid "Could not execute on device."
msgstr "無法於è£ç½®ä¸ŠåŸ·è¡Œã€‚"
#: platform/android/export/export_plugin.cpp
-msgid "Unable to find the 'apksigner' tool."
-msgstr "找ä¸åˆ°ã€Œapksignerã€å·¥å…·ã€‚"
-
-#: platform/android/export/export_plugin.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -18873,12 +19033,17 @@ msgstr "å°ã€ŒTarget Sdkã€çš„修改僅於「Use Custom Buildã€å•Ÿç”¨æ™‚有效ã
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr "「Target Sdkã€ç‰ˆæœ¬å¿…須高於或于「Min Sdkã€ç‰ˆæœ¬ä¸€è‡´ã€‚"
+#: platform/android/export/export_plugin.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Code Signing"
+msgstr "訊號"
+
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"'apksigner' could not be found.\n"
-"Please check the command is available in the Android SDK build-tools "
-"directory.\n"
-"The resulting %s is unsigned."
+"'apksigner' could not be found. Please check that the command is available "
+"in the Android SDK build-tools directory. The resulting %s is unsigned."
msgstr ""
"找ä¸åˆ°ã€Œapksigner'ã€ã€‚\n"
"è«‹ç¢ºèªæ­¤å‘½ä»¤å¯ç”¨æ–¼Android SDK build-tools的目錄。\n"
@@ -18897,6 +19062,11 @@ msgid "Could not find keystore, unable to export."
msgstr "找ä¸åˆ°é‡‘鑰儲存å€ï¼Œç„¡æ³•匯出。"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Could not start apksigner executable."
+msgstr "無法啟動å­è™•ç†ç¨‹åºï¼"
+
+#: platform/android/export/export_plugin.cpp
msgid "'apksigner' returned with error #%d"
msgstr "「apksignerã€å›žå‚³éŒ¯èª¤ #%d"
@@ -18925,7 +19095,8 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "無效的檔案å稱ï¼Android APK å¿…é ˆè¦æœ‰ *.apk 副檔å。"
#: platform/android/export/export_plugin.cpp
-msgid "Unsupported export format!\n"
+#, fuzzy
+msgid "Unsupported export format!"
msgstr "䏿”¯æ´çš„匯出格å¼ï¼\n"
#: platform/android/export/export_plugin.cpp
@@ -18936,10 +19107,9 @@ msgstr ""
"嘗試自自定建置樣æ¿é€²è¡Œå»ºç½®ï¼Œä½†ç„¡ç‰ˆæœ¬è³‡è¨Šå¯ç”¨ã€‚請自「專案ã€é¸å–®ä¸­é‡æ–°å®‰è£ã€‚"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Android build version mismatch:\n"
-" Template installed: %s\n"
-" Godot Version: %s\n"
+"Android build version mismatch: Template installed: %s, Godot version: %s. "
"Please reinstall Android build template from 'Project' menu."
msgstr ""
"Android 建置版本ä¸ç¬¦åˆï¼š\n"
@@ -18948,12 +19118,14 @@ msgstr ""
"請自「專案ã€ç›®éŒ„䏭釿–°å®‰è£ Android 建置樣æ¿ã€‚"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Unable to overwrite res://android/build/res/*.xml files with project name"
+"Unable to overwrite res://android/build/res/*.xml files with project name."
msgstr "無法以專案å稱覆蓋檔案res://android/build/res/*.xml"
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files to gradle project\n"
+#, fuzzy
+msgid "Could not export project files to gradle project."
msgstr "無法匯出專案檔至Gradle專案。\n"
#: platform/android/export/export_plugin.cpp
@@ -18965,8 +19137,9 @@ msgid "Building Android Project (gradle)"
msgstr "建置 Android 專案(Gradle)"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Building of Android project failed, check output for the error.\n"
+"Building of Android project failed, check output for the error. "
"Alternatively visit docs.godotengine.org for Android build documentation."
msgstr ""
"建置 Android 專案失敗,請檢查輸出以確èªéŒ¯èª¤ã€‚\n"
@@ -18983,7 +19156,8 @@ msgid ""
msgstr "無法複製並更å匯出的檔案,請於 Gradle 專案資料夾內確èªè¼¸å‡ºã€‚"
#: platform/android/export/export_plugin.cpp
-msgid "Package not found: %s"
+#, fuzzy
+msgid "Package not found: \"%s\"."
msgstr "未找到套件:「%sã€"
#: platform/android/export/export_plugin.cpp
@@ -18991,17 +19165,16 @@ msgid "Creating APK..."
msgstr "正在建立APK……"
#: platform/android/export/export_plugin.cpp
-msgid ""
-"Could not find template APK to export:\n"
-"%s"
+#, fuzzy
+msgid "Could not find template APK to export: \"%s\"."
msgstr ""
"找ä¸åˆ°æ¨£æ¿APK以匯出:\n"
"%s"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
msgid ""
-"Missing libraries in the export template for the selected architectures: "
-"%s.\n"
+"Missing libraries in the export template for the selected architectures: %s. "
"Please build a template with all required libraries, or uncheck the missing "
"architectures in the export preset."
msgstr ""
@@ -19013,7 +19186,8 @@ msgid "Adding files..."
msgstr "正在加入檔案 %s……"
#: platform/android/export/export_plugin.cpp
-msgid "Could not export project files"
+#, fuzzy
+msgid "Could not export project files."
msgstr "無法匯出專案檔案"
#: platform/android/export/export_plugin.cpp
@@ -19256,6 +19430,17 @@ msgstr "剪下節點"
msgid "Custom BG Color"
msgstr "剪下節點"
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Prepare Templates"
+msgstr "ç®¡ç†æ¨£æ¿"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Export template not found."
+msgstr "找ä¸åˆ°è‡ªå®šç¾©ç™¼è¡Œæ¨£æ¿ã€‚"
+
#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr "尚未設定 App Store Team ID - 無法設定專案。"
@@ -19277,22 +19462,35 @@ msgid "Run exported HTML in the system's default browser."
msgstr "在系統的é è¨­ç€è¦½å™¨ä¸­åŸ·è¡Œå·²åŒ¯å‡ºçš„ HTML。"
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+#, fuzzy
+msgid "Could not open template for export: \"%s\"."
msgstr "無法開啟樣æ¿ä»¥è¼¸å‡ºï¼š"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+#, fuzzy
+msgid "Invalid export template: \"%s\"."
msgstr "無效的輸出樣æ¿ï¼š"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+#, fuzzy
+msgid "Could not write file: \"%s\"."
msgstr "無法寫入檔案:"
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Icon Creation"
+msgstr "設定外邊è·"
+
#: platform/javascript/export/export.cpp
-msgid "Could not read file:"
+#, fuzzy
+msgid "Could not read file: \"%s\"."
msgstr "ç„¡æ³•è®€å–æª”案:"
#: platform/javascript/export/export.cpp
+msgid "PWA"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Variant"
msgstr "分隔:"
@@ -19367,15 +19565,18 @@ msgid "Icon 512 X 512"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read HTML shell:"
+#, fuzzy
+msgid "Could not read HTML shell: \"%s\"."
msgstr "無法讀å–HTML殼層:"
#: platform/javascript/export/export.cpp
-msgid "Could not create HTTP server directory:"
+#, fuzzy
+msgid "Could not create HTTP server directory: %s."
msgstr "無法建立HTTP伺æœå™¨ç›®éŒ„:"
#: platform/javascript/export/export.cpp
-msgid "Error starting HTTP server:"
+#, fuzzy
+msgid "Error starting HTTP server: %d."
msgstr "啟動HTTP伺æœå™¨æ™‚發生錯誤:"
#: platform/javascript/export/export.cpp
@@ -19675,9 +19876,28 @@ msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open icon file \"%s\"."
+msgstr "無法匯出專案檔案"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start xcrun executable."
+msgstr "無法啟動å­è™•ç†ç¨‹åºï¼"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization failed."
+msgstr "本地化"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization request UUID: \"%s\""
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
-"Note: The notarization process generally takes less than an hour. When the "
-"process is completed, you'll receive an email."
+"The notarization process generally takes less than an hour. When the process "
+"is completed, you'll receive an email."
msgstr ""
#: platform/osx/export/export.cpp
@@ -19693,23 +19913,78 @@ msgid ""
msgstr ""
#: platform/osx/export/export.cpp
+msgid "Timestamping is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign failed with error \"%s\"."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Built-in CodeSign require regex module."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid ""
+"Could not start codesign executable, make sure Xcode command line tools are "
+"installed."
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
msgid "No identity found."
msgstr "未發ç¾ä»»ä½•圖示。"
#: platform/osx/export/export.cpp
#, fuzzy
+msgid "Cannot sign file %s."
+msgstr "無法ä¿å­˜æª”案:%s"
+
+#: platform/osx/export/export.cpp
+msgid "Relative symlinks are not supported, exported \"%s\" might be broken!"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "DMG Creation"
+msgstr "æ–¹å‘"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not start hdiutil executable."
+msgstr "無法啟動å­è™•ç†ç¨‹åºï¼"
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed - file exists."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "`hdiutil create` failed."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
msgid "Creating app bundle"
msgstr "正在建立縮圖"
#: platform/osx/export/export.cpp
#, fuzzy
-msgid "Could not find template app to export:"
+msgid "Could not find template app to export: \"%s\"."
msgstr ""
"找ä¸åˆ°æ¨£æ¿APK以匯出:\n"
"%s"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid export format."
+msgstr "無效的輸出樣æ¿ï¼š"
+
+#: platform/osx/export/export.cpp
msgid ""
"Relative symlinks are not supported on this OS, the exported project might "
"be broken!"
@@ -19717,7 +19992,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid ""
-"Requested template binary '%s' not found. It might be missing from your "
+"Requested template binary \"%s\" not found. It might be missing from your "
"template archive."
msgstr ""
@@ -19758,6 +20033,16 @@ msgid "Sending archive for notarization"
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "ZIP Creation"
+msgstr "專案"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Could not open file to read from path \"%s\"."
+msgstr "無法匯出專案檔至Gradle專案。\n"
+
+#: platform/osx/export/export.cpp
msgid "Invalid bundle identifier:"
msgstr "無效的æ†ç¶è­˜åˆ¥ç¬¦ï¼š"
@@ -20073,6 +20358,11 @@ msgid "Debug Algorithm"
msgstr "除錯工具"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to rename temporary file \"%s\"."
+msgstr "無法移除臨時檔案:"
+
+#: platform/windows/export/export.cpp
msgid "Identity Type"
msgstr ""
@@ -20120,6 +20410,70 @@ msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Resources Modification"
+msgstr "隨機旋轉:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find rcedit executable at \"%s\"."
+msgstr "找ä¸åˆ°é‡‘鑰儲存å€ï¼Œç„¡æ³•匯出。"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find wine executable at \"%s\"."
+msgstr "找ä¸åˆ°é‡‘鑰儲存å€ï¼Œç„¡æ³•匯出。"
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start rcedit executable, configure rcedit path in the Editor "
+"Settings (Export > Windows > Rcedit)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"rcedit failed to modify executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find signtool executable at \"%s\"."
+msgstr "找ä¸åˆ°é‡‘鑰儲存å€ï¼Œç„¡æ³•匯出。"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Could not find osslsigncode executable at \"%s\"."
+msgstr "找ä¸åˆ°é‡‘鑰儲存å€ï¼Œç„¡æ³•匯出。"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid identity type."
+msgstr "無效的識別符:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Invalid timestamp server."
+msgstr "無效的å稱。"
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Could not start signtool executable, configure signtool path in the Editor "
+"Settings (Export > Windows > Signtool)."
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid ""
+"Signtool failed to sign executable:\n"
+"%s"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Failed to remove temporary file \"%s\"."
+msgstr "無法移除臨時檔案:"
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20141,6 +20495,23 @@ msgid "Invalid product version:"
msgstr "ç„¡æ•ˆçš„ç”¢å“ GUID。"
#: platform/windows/export/export.cpp
+msgid "Windows executables cannot be >= 4 GiB."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+#, fuzzy
+msgid "Failed to open executable file \"%s\"."
+msgstr "無效的副檔å。"
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable file header corrupted."
+msgstr ""
+
+#: platform/windows/export/export.cpp platform/x11/export/export.cpp
+msgid "Executable \"pck\" section not found."
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Windows"
msgstr "新視窗"
@@ -20157,6 +20528,10 @@ msgstr ""
msgid "Wine"
msgstr ""
+#: platform/x11/export/export.cpp
+msgid "32-bit executables cannot have embedded data >= 4 GiB."
+msgstr ""
+
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
#, fuzzy
@@ -20284,7 +20659,8 @@ msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
-#: scene/3d/visual_instance.cpp scene/resources/material.cpp
+#: scene/3d/visibility_notifier.cpp scene/3d/visual_instance.cpp
+#: scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "鏿“‡è·é›¢ï¼š"
@@ -21144,17 +21520,19 @@ msgstr ""
"多邊形。"
#: scene/2d/navigation_polygon.cpp
-msgid ""
-"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
-"node. It only provides navigation data."
-msgstr ""
-"NavigationPolygonInstance 必須是 Navigation2D 節點的å­ç´šæˆ–次å­ç´šã€‚其僅æä¾›å°Ž"
-"航資料。"
-
-#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
msgstr ""
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Enter Cost"
+msgstr "中下"
+
+#: scene/2d/navigation_polygon.cpp scene/3d/navigation_mesh_instance.cpp
+#, fuzzy
+msgid "Travel Cost"
+msgstr "行程"
+
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
#, fuzzy
@@ -22366,14 +22744,6 @@ msgid ""
"The NavigationAgent can be used only under a Spatial inheriting parent node."
msgstr ""
-#: scene/3d/navigation_mesh_instance.cpp
-msgid ""
-"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
-"It only provides navigation data."
-msgstr ""
-"NavigationMeshInstance 必須為 Navigation 節點的å­ç¯€é»žæˆ–次級å­ç¯€é»žã€‚其僅æä¾›å°Ž"
-"航資料。"
-
#: scene/3d/navigation_mesh_instance.cpp scene/resources/mesh_library.cpp
#, fuzzy
msgid "NavMesh"
@@ -25098,6 +25468,16 @@ msgid "3D Physics"
msgstr "物ç†"
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "2D Navigation"
+msgstr "導航"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "3D Navigation"
+msgstr "導航"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -26527,7 +26907,7 @@ msgstr "轉場: "
msgid "Refraction"
msgstr "分隔:"
-#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
+#: scene/resources/material.cpp
msgid "Detail"
msgstr ""
@@ -26612,7 +26992,12 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
-msgid "Sample Partition Type"
+msgid "Sampling"
+msgstr "縮放: "
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Partition Type"
msgstr "設定變數型別"
#: scene/resources/navigation_mesh.cpp
@@ -26630,10 +27015,15 @@ msgid "Source Group Name"
msgstr "來æº"
#: scene/resources/navigation_mesh.cpp
-msgid "Agent"
+msgid "Cells"
msgstr ""
#: scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Agents"
+msgstr "主場景引數:"
+
+#: scene/resources/navigation_mesh.cpp
msgid "Max Climb"
msgstr ""
@@ -26643,11 +27033,16 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Regions"
+msgstr "å€åŸŸ"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Merge Size"
msgstr "自場景åˆä½µ"
#: scene/resources/navigation_mesh.cpp
-msgid "Edge"
+msgid "Edges"
msgstr ""
#: scene/resources/navigation_mesh.cpp
@@ -26661,6 +27056,11 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
+msgid "Details"
+msgstr "顯示é è¨­"
+
+#: scene/resources/navigation_mesh.cpp
+#, fuzzy
msgid "Sample Distance"
msgstr "鏿“‡è·é›¢ï¼š"
@@ -26678,7 +27078,7 @@ msgid "Ledge Spans"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-msgid "Filter Walkable Low Height Spans"
+msgid "Walkable Low Height Spans"
msgstr ""
#: scene/resources/occluder_shape.cpp
@@ -27093,6 +27493,11 @@ msgid "Scenario"
msgstr "場景"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Navigation Map"
+msgstr "導航"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
msgstr ""
@@ -27110,6 +27515,26 @@ msgstr "左線性"
msgid "Default Angular Damp"
msgstr ""
+#: scene/resources/world.cpp
+#, fuzzy
+msgid "Default Map Up"
+msgstr "é è¨­æµ®é»žæ•¸é–“éš”"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Size"
+msgstr "é è¨­é è¦½"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Cell Height"
+msgstr "測試"
+
+#: scene/resources/world.cpp scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Default Edge Connection Margin"
+msgstr "編輯連接內容:"
+
#: scene/resources/world_2d.cpp
msgid "Canvas"
msgstr ""
diff --git a/main/main.cpp b/main/main.cpp
index 20270190b3..bfb0eacdfc 100644
--- a/main/main.cpp
+++ b/main/main.cpp
@@ -65,6 +65,8 @@
#include "servers/audio_server.h"
#include "servers/camera_server.h"
#include "servers/display_server.h"
+#include "servers/movie_writer/movie_writer.h"
+#include "servers/movie_writer/movie_writer_mjpeg.h"
#include "servers/navigation_server_2d.h"
#include "servers/navigation_server_3d.h"
#include "servers/physics_server_2d.h"
@@ -87,6 +89,7 @@
#include "editor/editor_settings.h"
#include "editor/editor_translation.h"
#include "editor/progress_dialog.h"
+#include "editor/project_converter_3_to_4.h"
#include "editor/project_manager.h"
#ifndef NO_EDITOR_SPLASH
#include "main/splash_editor.gen.h"
@@ -177,6 +180,9 @@ static bool debug_navigation = false;
static int frame_delay = 0;
static bool disable_render_loop = false;
static int fixed_fps = -1;
+static String write_movie_path;
+static MovieWriter *movie_writer = nullptr;
+static bool disable_vsync = false;
static bool print_fps = false;
#ifdef TOOLS_ENABLED
static bool dump_extension_api = false;
@@ -324,6 +330,8 @@ void Main::print_help(const char *p_binary) {
OS::get_singleton()->print(" --text-driver <driver> Text driver (Fonts, BiDi, shaping)\n");
OS::get_singleton()->print(" --tablet-driver <driver> Pen tablet input driver.\n");
OS::get_singleton()->print(" --headless Enable headless mode (--display-driver headless --audio-driver Dummy). Useful for servers and with --script.\n");
+ OS::get_singleton()->print(" --write-movie <file> Run the engine in a way that a movie is written (by default .avi MJPEG). Fixed FPS is forced when enabled, but can be used to change movie FPS. Disabling vsync can speed up movie writing but makes interaction more difficult.\n");
+ OS::get_singleton()->print(" --disable-vsync Force disabling of vsync. Run the engine in a way that a movie is written (by default .avi MJPEG). Fixed FPS is forced when enabled, but can be used to change movie FPS.\n");
OS::get_singleton()->print("\n");
@@ -368,6 +376,8 @@ void Main::print_help(const char *p_binary) {
OS::get_singleton()->print(" <path> should be absolute or relative to the project directory, and include the filename for the binary (e.g. 'builds/game.exe'). The target directory should exist.\n");
OS::get_singleton()->print(" --export-debug <preset> <path> Same as --export, but using the debug template.\n");
OS::get_singleton()->print(" --export-pack <preset> <path> Same as --export, but only export the game pack for the given preset. The <path> extension determines whether it will be in PCK or ZIP format.\n");
+ OS::get_singleton()->print(" --convert-3to4 Converts project from Godot 3.x to Godot 4.x.\n");
+ OS::get_singleton()->print(" --validate-conversion-3to4 Shows what elements will be renamed when converting project from Godot 3.x to Godot 4.x.\n");
OS::get_singleton()->print(" --doctool [<path>] Dump the engine API reference to the given <path> (defaults to current dir) in XML format, merging if existing files are found.\n");
OS::get_singleton()->print(" --no-docbase Disallow dumping the base types (used with --doctool).\n");
OS::get_singleton()->print(" --build-solutions Build the scripting solutions (e.g. for C# projects). Implies --editor and requires a valid project to edit.\n");
@@ -600,7 +610,9 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
GLOBAL_DEF_RST("application/run/flush_stdout_on_print.debug", true);
GLOBAL_DEF("debug/settings/crash_handler/message",
- String("Please include this when reporting the bug on https://github.com/godotengine/godot/issues"));
+ String("Please include this when reporting the bug to the project developer."));
+ GLOBAL_DEF("debug/settings/crash_handler/message.editor",
+ String("Please include this when reporting the bug on: https://github.com/godotengine/godot/issues"));
MAIN_PRINT("Main: Parse CMDLine");
@@ -996,6 +1008,14 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
editor = true;
cmdline_tool = true;
main_args.push_back(I->get());
+ } else if (I->get() == "--convert-3to4") {
+ // Actually handling is done in start().
+ cmdline_tool = true;
+ main_args.push_back(I->get());
+ } else if (I->get() == "--validate-conversion-3to4") {
+ // Actually handling is done in start().
+ cmdline_tool = true;
+ main_args.push_back(I->get());
} else if (I->get() == "--doctool") {
// Actually handling is done in start().
cmdline_tool = true;
@@ -1123,6 +1143,20 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
OS::get_singleton()->print("Missing fixed-fps argument, aborting.\n");
goto error;
}
+ } else if (I->get() == "--write-movie") {
+ if (I->next()) {
+ write_movie_path = I->next()->get();
+ N = I->next()->next();
+ if (fixed_fps == -1) {
+ fixed_fps = 60;
+ }
+ OS::get_singleton()->_writing_movie = true;
+ } else {
+ OS::get_singleton()->print("Missing write-movie argument, aborting.\n");
+ goto error;
+ }
+ } else if (I->get() == "--disable-vsync") {
+ disable_vsync = true;
} else if (I->get() == "--print-fps") {
print_fps = true;
} else if (I->get() == "--profile-gpu") {
@@ -1449,7 +1483,13 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
}
if (audio_driver_idx < 0) {
- audio_driver_idx = 0;
+ audio_driver_idx = 0; // 0 Is always available as the dummy driver (no sound)
+ }
+
+ if (write_movie_path != String()) {
+ // Always use dummy driver for audio driver (which is last), also in no threaded mode.
+ audio_driver_idx = AudioDriverManager::get_driver_count() - 1;
+ AudioDriverDummy::get_dummy_singleton()->set_use_threads(false);
}
{
@@ -1457,6 +1497,9 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
}
{
window_vsync_mode = DisplayServer::VSyncMode(int(GLOBAL_DEF("display/window/vsync/vsync_mode", DisplayServer::VSyncMode::VSYNC_ENABLED)));
+ if (disable_vsync) {
+ window_vsync_mode = DisplayServer::VSyncMode::VSYNC_DISABLED;
+ }
}
Engine::get_singleton()->set_physics_ticks_per_second(GLOBAL_DEF_BASIC("physics/common/physics_ticks_per_second", 60));
ProjectSettings::get_singleton()->set_custom_property_info("physics/common/physics_ticks_per_second",
@@ -1496,7 +1539,11 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
"0,33200,1,or_greater")); // No negative numbers
GLOBAL_DEF("display/window/ios/hide_home_indicator", true);
- GLOBAL_DEF("input_devices/pointing/ios/touch_delay", 0.150);
+ GLOBAL_DEF("input_devices/pointing/ios/touch_delay", 0.15);
+ ProjectSettings::get_singleton()->set_custom_property_info("input_devices/pointing/ios/touch_delay",
+ PropertyInfo(Variant::FLOAT,
+ "input_devices/pointing/ios/touch_delay",
+ PROPERTY_HINT_RANGE, "0,1,0.001"));
// XR project settings.
GLOBAL_DEF_RST_BASIC("xr/openxr/enabled", false);
@@ -1536,6 +1583,7 @@ error:
display_driver = "";
audio_driver = "";
tablet_driver = "";
+ write_movie_path = "";
project_path = "";
args.clear();
@@ -1708,6 +1756,14 @@ Error Main::setup2(Thread::ID p_main_tid_override) {
rendering_server->set_print_gpu_profile(true);
}
+ if (write_movie_path != String()) {
+ movie_writer = MovieWriter::find_writer_for_file(write_movie_path);
+ if (movie_writer == nullptr) {
+ ERR_PRINT("Can't find movie writer for file type, aborting: " + write_movie_path);
+ write_movie_path = String();
+ }
+ }
+
#ifdef UNIX_ENABLED
// Print warning after initializing the renderer but before initializing audio.
if (OS::get_singleton()->get_environment("USER") == "root" && !OS::get_singleton()->has_environment("GODOT_SILENCE_ROOT_WARNING")) {
@@ -1765,14 +1821,14 @@ Error Main::setup2(Thread::ID p_main_tid_override) {
MAIN_PRINT("Main: Load Boot Image");
- Color clear = GLOBAL_DEF("rendering/environment/defaults/default_clear_color", Color(0.3, 0.3, 0.3));
+ Color clear = GLOBAL_DEF_BASIC("rendering/environment/defaults/default_clear_color", Color(0.3, 0.3, 0.3));
RenderingServer::get_singleton()->set_default_clear_color(clear);
if (show_logo) { //boot logo!
- const bool boot_logo_image = GLOBAL_DEF("application/boot_splash/show_image", true);
- const String boot_logo_path = String(GLOBAL_DEF("application/boot_splash/image", String())).strip_edges();
- const bool boot_logo_scale = GLOBAL_DEF("application/boot_splash/fullsize", true);
- const bool boot_logo_filter = GLOBAL_DEF("application/boot_splash/use_filter", true);
+ const bool boot_logo_image = GLOBAL_DEF_BASIC("application/boot_splash/show_image", true);
+ const String boot_logo_path = String(GLOBAL_DEF_BASIC("application/boot_splash/image", String())).strip_edges();
+ const bool boot_logo_scale = GLOBAL_DEF_BASIC("application/boot_splash/fullsize", true);
+ const bool boot_logo_filter = GLOBAL_DEF_BASIC("application/boot_splash/use_filter", true);
ProjectSettings::get_singleton()->set_custom_property_info("application/boot_splash/image",
PropertyInfo(Variant::STRING,
"application/boot_splash/image",
@@ -1797,10 +1853,10 @@ Error Main::setup2(Thread::ID p_main_tid_override) {
#if defined(TOOLS_ENABLED) && !defined(NO_EDITOR_SPLASH)
const Color boot_bg_color =
- GLOBAL_DEF("application/boot_splash/bg_color",
+ GLOBAL_DEF_BASIC("application/boot_splash/bg_color",
(editor || project_manager) ? boot_splash_editor_bg_color : boot_splash_bg_color);
#else
- const Color boot_bg_color = GLOBAL_DEF("application/boot_splash/bg_color", boot_splash_bg_color);
+ const Color boot_bg_color = GLOBAL_DEF_BASIC("application/boot_splash/bg_color", boot_splash_bg_color);
#endif
if (boot_logo.is_valid()) {
RenderingServer::get_singleton()->set_boot_image(boot_logo, boot_bg_color, boot_logo_scale,
@@ -1832,7 +1888,7 @@ Error Main::setup2(Thread::ID p_main_tid_override) {
MAIN_PRINT("Main: DCC");
RenderingServer::get_singleton()->set_default_clear_color(
- GLOBAL_DEF("rendering/environment/defaults/default_clear_color", Color(0.3, 0.3, 0.3)));
+ GLOBAL_DEF_BASIC("rendering/environment/defaults/default_clear_color", Color(0.3, 0.3, 0.3)));
GLOBAL_DEF("application/config/icon", String());
ProjectSettings::get_singleton()->set_custom_property_info("application/config/icon",
@@ -1958,9 +2014,9 @@ Error Main::setup2(Thread::ID p_main_tid_override) {
// Theme needs modules to be initialized so that sub-resources can be loaded.
initialize_theme();
- GLOBAL_DEF("display/mouse_cursor/custom_image", String());
- GLOBAL_DEF("display/mouse_cursor/custom_image_hotspot", Vector2());
- GLOBAL_DEF("display/mouse_cursor/tooltip_position_offset", Point2(10, 10));
+ GLOBAL_DEF_BASIC("display/mouse_cursor/custom_image", String());
+ GLOBAL_DEF_BASIC("display/mouse_cursor/custom_image_hotspot", Vector2());
+ GLOBAL_DEF_BASIC("display/mouse_cursor/tooltip_position_offset", Point2(10, 10));
ProjectSettings::get_singleton()->set_custom_property_info("display/mouse_cursor/custom_image",
PropertyInfo(Variant::STRING,
"display/mouse_cursor/custom_image",
@@ -2035,6 +2091,8 @@ bool Main::start() {
String _export_preset;
bool export_debug = false;
bool export_pack_only = false;
+ bool converting_project = false;
+ bool validating_converting_project = false;
#endif
main_timer_sync.init(OS::get_singleton()->get_ticks_usec());
@@ -2050,6 +2108,10 @@ bool Main::start() {
#ifdef TOOLS_ENABLED
} else if (args[i] == "--no-docbase") {
doc_base = false;
+ } else if (args[i] == "--convert-3to4") {
+ converting_project = true;
+ } else if (args[i] == "--validate-conversion-3to4") {
+ validating_converting_project = true;
} else if (args[i] == "-e" || args[i] == "--editor") {
editor = true;
} else if (args[i] == "-p" || args[i] == "--project-manager") {
@@ -2203,6 +2265,18 @@ bool Main::start() {
NativeExtensionAPIDump::generate_extension_json_file("extension_api.json");
return false;
}
+
+ if (converting_project) {
+ int exit_code = ProjectConverter3To4().convert();
+ OS::get_singleton()->set_exit_code(exit_code);
+ return false;
+ }
+ if (validating_converting_project) {
+ int exit_code = ProjectConverter3To4().validate_conversion();
+ OS::get_singleton()->set_exit_code(exit_code);
+ return false;
+ }
+
#endif
if (script.is_empty() && game_path.is_empty() && String(GLOBAL_GET("application/run/main_scene")) != "") {
@@ -2615,6 +2689,9 @@ bool Main::start() {
OS::get_singleton()->set_main_loop(main_loop);
+ if (movie_writer) {
+ movie_writer->begin(DisplayServer::get_singleton()->window_get_size(), fixed_fps, write_movie_path);
+ }
return true;
}
@@ -2801,6 +2878,13 @@ bool Main::iteration() {
Input::get_singleton()->flush_buffered_events();
}
+ if (movie_writer) {
+ RID main_vp_rid = RenderingServer::get_singleton()->viewport_find_from_screen_attachment(DisplayServer::MAIN_WINDOW_ID);
+ RID main_vp_texture = RenderingServer::get_singleton()->viewport_get_texture(main_vp_rid);
+ Ref<Image> vp_tex = RenderingServer::get_singleton()->texture_2d_get(main_vp_texture);
+ movie_writer->add_frame(vp_tex);
+ }
+
if (fixed_fps != -1) {
return exit;
}
@@ -2840,6 +2924,10 @@ void Main::cleanup(bool p_force) {
ERR_FAIL_COND(!_start_success);
}
+ if (movie_writer) {
+ movie_writer->end();
+ }
+
ResourceLoader::remove_custom_loaders();
ResourceSaver::remove_custom_savers();
diff --git a/misc/dist/shell/_godot.zsh-completion b/misc/dist/shell/_godot.zsh-completion
index 6444ca337e..b17bb6e66b 100644
--- a/misc/dist/shell/_godot.zsh-completion
+++ b/misc/dist/shell/_godot.zsh-completion
@@ -78,6 +78,8 @@ _arguments \
'--export[export the project using the given preset and matching release template]:export preset name then path' \
'--export-debug[same as --export, but using the debug template]:export preset name then path' \
'--export-pack[same as --export, but only export the game pack for the given preset]:export preset name then path' \
+ '--convert-3to4[converts project from Godot 3.x to Godot 4.x]' \
+ '--validate-conversion-3to4[shows what elements will be renamed when converting project from Godot 3.x to Godot 4.x]' \
'--doctool[dump the engine API reference to the given path in XML format, merging if existing files are found]:path to base Godot build directory (optional):_dirs' \
'--no-docbase[disallow dumping the base types (used with --doctool)]' \
'--build-solutions[build the scripting solutions (e.g. for C# projects)]' \
diff --git a/misc/dist/shell/godot.bash-completion b/misc/dist/shell/godot.bash-completion
index 31e067e29a..1ab687e1fc 100644
--- a/misc/dist/shell/godot.bash-completion
+++ b/misc/dist/shell/godot.bash-completion
@@ -81,6 +81,8 @@ _complete_godot_options() {
--export
--export-debug
--export-pack
+--convert-3to4
+--validate-conversion-3to4
--doctool
--no-docbase
--build-solutions
diff --git a/misc/dist/shell/godot.fish b/misc/dist/shell/godot.fish
index da4ce1190c..d58066c135 100644
--- a/misc/dist/shell/godot.fish
+++ b/misc/dist/shell/godot.fish
@@ -93,6 +93,8 @@ complete -c godot -l check-only -d "Only parse for errors and quit (use with --s
complete -c godot -l export -d "Export the project using the given preset and matching release template" -x
complete -c godot -l export-debug -d "Same as --export, but using the debug template" -x
complete -c godot -l export-pack -d "Same as --export, but only export the game pack for the given preset" -x
+complete -c godot -l convert-3to4 -d "Converts project from Godot 3.x to Godot 4.x"
+complete -c godot -l validate-conversion-3to4 -d "Shows what elements will be renamed when converting project from Godot 3.x to Godot 4.x"
complete -c godot -l doctool -d "Dump the engine API reference to the given path in XML format, merging if existing files are found" -r
complete -c godot -l no-docbase -d "Disallow dumping the base types (used with --doctool)"
complete -c godot -l build-solutions -d "Build the scripting solutions (e.g. for C# projects)"
diff --git a/misc/hooks/pre-commit-make-rst b/misc/hooks/pre-commit-make-rst
index 38b397c494..7d115f1d13 100755
--- a/misc/hooks/pre-commit-make-rst
+++ b/misc/hooks/pre-commit-make-rst
@@ -9,4 +9,4 @@ if [[ "$py_ver" != "3" ]]; then
PYTHON+=3
fi
-$PYTHON doc/tools/make_rst.py doc/classes modules --dry-run
+$PYTHON doc/tools/make_rst.py doc/classes modules --dry-run --color
diff --git a/misc/scripts/check_ci_log.py b/misc/scripts/check_ci_log.py
index 2c75b83bd7..1e5a12eeb4 100755
--- a/misc/scripts/check_ci_log.py
+++ b/misc/scripts/check_ci_log.py
@@ -25,6 +25,8 @@ if (
file_contents.find("Program crashed with signal") != -1
or file_contents.find("Dumping the backtrace") != -1
or file_contents.find("Segmentation fault (core dumped)") != -1
+ or file_contents.find("Aborted (core dumped)") != -1
+ or file_contents.find("terminate called without an active exception") != -1
):
print("FATAL ERROR: Godot has been crashed.")
sys.exit(52)
diff --git a/misc/scripts/codespell.sh b/misc/scripts/codespell.sh
index f99c5d22b2..f99c5d22b2 100644..100755
--- a/misc/scripts/codespell.sh
+++ b/misc/scripts/codespell.sh
diff --git a/modules/csg/csg.h b/modules/csg/csg.h
index 53a9e5d722..738e3d68ea 100644
--- a/modules/csg/csg.h
+++ b/modules/csg/csg.h
@@ -130,9 +130,9 @@ struct CSGBrushOperation {
struct VertexKeyHash {
static _FORCE_INLINE_ uint32_t hash(const VertexKey &p_vk) {
- uint32_t h = hash_djb2_one_32(p_vk.x);
- h = hash_djb2_one_32(p_vk.y, h);
- h = hash_djb2_one_32(p_vk.z, h);
+ uint32_t h = hash_murmur3_one_32(p_vk.x);
+ h = hash_murmur3_one_32(p_vk.y, h);
+ h = hash_murmur3_one_32(p_vk.z, h);
return h;
}
};
diff --git a/modules/csg/csg_shape.cpp b/modules/csg/csg_shape.cpp
index 25772bebbe..0f09eb2020 100644
--- a/modules/csg/csg_shape.cpp
+++ b/modules/csg/csg_shape.cpp
@@ -638,7 +638,7 @@ void CSGShape3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_meshes"), &CSGShape3D::get_meshes);
ADD_PROPERTY(PropertyInfo(Variant::INT, "operation", PROPERTY_HINT_ENUM, "Union,Intersection,Subtraction"), "set_operation", "get_operation");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "snap", PROPERTY_HINT_RANGE, "0.0001,1,0.001"), "set_snap", "get_snap");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "snap", PROPERTY_HINT_RANGE, "0.0001,1,0.001,suffix:m"), "set_snap", "get_snap");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "calculate_tangents"), "set_calculate_tangents", "is_calculating_tangents");
ADD_GROUP("Collision", "collision_");
@@ -2135,7 +2135,7 @@ void CSGPolygon3D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::PACKED_VECTOR2_ARRAY, "polygon"), "set_polygon", "get_polygon");
ADD_PROPERTY(PropertyInfo(Variant::INT, "mode", PROPERTY_HINT_ENUM, "Depth,Spin,Path"), "set_mode", "get_mode");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "depth", PROPERTY_HINT_RANGE, "0.01,100.0,0.01,or_greater,exp"), "set_depth", "get_depth");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "depth", PROPERTY_HINT_RANGE, "0.01,100.0,0.01,or_greater,exp,suffix:m"), "set_depth", "get_depth");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "spin_degrees", PROPERTY_HINT_RANGE, "1,360,0.1"), "set_spin_degrees", "get_spin_degrees");
ADD_PROPERTY(PropertyInfo(Variant::INT, "spin_sides", PROPERTY_HINT_RANGE, "3,64,1"), "set_spin_sides", "get_spin_sides");
ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "path_node", PROPERTY_HINT_NODE_PATH_VALID_TYPES, "Path3D"), "set_path_node", "get_path_node");
@@ -2145,7 +2145,7 @@ void CSGPolygon3D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "path_rotation", PROPERTY_HINT_ENUM, "Polygon,Path,PathFollow"), "set_path_rotation", "get_path_rotation");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "path_local"), "set_path_local", "is_path_local");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "path_continuous_u"), "set_path_continuous_u", "is_path_continuous_u");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "path_u_distance", PROPERTY_HINT_RANGE, "0.0,10.0,0.01,or_greater"), "set_path_u_distance", "get_path_u_distance");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "path_u_distance", PROPERTY_HINT_RANGE, "0.0,10.0,0.01,or_greater,suffix:m"), "set_path_u_distance", "get_path_u_distance");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "path_joined"), "set_path_joined", "is_path_joined");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "smooth_faces"), "set_smooth_faces", "get_smooth_faces");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "material", PROPERTY_HINT_RESOURCE_TYPE, "BaseMaterial3D,ShaderMaterial"), "set_material", "get_material");
diff --git a/modules/csg/csg_shape.h b/modules/csg/csg_shape.h
index 0eaf5c3727..0b49dc4609 100644
--- a/modules/csg/csg_shape.h
+++ b/modules/csg/csg_shape.h
@@ -74,9 +74,9 @@ private:
struct Vector3Hasher {
_ALWAYS_INLINE_ uint32_t hash(const Vector3 &p_vec3) const {
- uint32_t h = hash_djb2_one_float(p_vec3.x);
- h = hash_djb2_one_float(p_vec3.y, h);
- h = hash_djb2_one_float(p_vec3.z, h);
+ uint32_t h = hash_murmur3_one_float(p_vec3.x);
+ h = hash_murmur3_one_float(p_vec3.y, h);
+ h = hash_murmur3_one_float(p_vec3.z, h);
return h;
}
};
diff --git a/modules/gdscript/editor/script_templates/EditorScenePostImport/basic_import_script.gd b/modules/gdscript/editor/script_templates/EditorScenePostImport/basic_import_script.gd
new file mode 100644
index 0000000000..556afe994b
--- /dev/null
+++ b/modules/gdscript/editor/script_templates/EditorScenePostImport/basic_import_script.gd
@@ -0,0 +1,9 @@
+# meta-description: Basic import script template
+@tool
+extends EditorScenePostImport
+
+
+# Called by the editor when a scene has this script set as the import script in the import tab.
+func _post_import(scene: Node) -> Object:
+ # Modify the contents of the scene upon import.
+ return scene # Return the modified root node when you're done.
diff --git a/modules/gdscript/editor/script_templates/EditorScenePostImport/no_comments.gd b/modules/gdscript/editor/script_templates/EditorScenePostImport/no_comments.gd
new file mode 100644
index 0000000000..875afb4fc0
--- /dev/null
+++ b/modules/gdscript/editor/script_templates/EditorScenePostImport/no_comments.gd
@@ -0,0 +1,7 @@
+# meta-description: Basic import script template (no comments)
+@tool
+extends EditorScenePostImport
+
+
+func _post_import(scene: Node) -> Object:
+ return scene
diff --git a/modules/gdscript/gdscript.cpp b/modules/gdscript/gdscript.cpp
index 55a7e39dec..617db883f8 100644
--- a/modules/gdscript/gdscript.cpp
+++ b/modules/gdscript/gdscript.cpp
@@ -62,7 +62,7 @@ GDScriptNativeClass::GDScriptNativeClass(const StringName &p_name) {
bool GDScriptNativeClass::_get(const StringName &p_name, Variant &r_ret) const {
bool ok;
- int v = ClassDB::get_integer_constant(name, p_name, &ok);
+ int64_t v = ClassDB::get_integer_constant(name, p_name, &ok);
if (ok) {
r_ret = v;
@@ -128,6 +128,7 @@ void GDScript::_super_implicit_constructor(GDScript *p_script, GDScriptInstance
return;
}
}
+ ERR_FAIL_NULL(p_script->implicit_initializer);
p_script->implicit_initializer->call(p_instance, nullptr, 0, r_error);
}
@@ -1475,6 +1476,9 @@ void GDScriptInstance::get_property_list(List<PropertyInfo> *p_properties) const
if (d.has("usage")) {
pinfo.usage = d["usage"];
}
+ if (d.has("class_name")) {
+ pinfo.class_name = d["class_name"];
+ }
props.push_back(pinfo);
}
diff --git a/modules/gdscript/gdscript.h b/modules/gdscript/gdscript.h
index 80f187a375..0057962d5e 100644
--- a/modules/gdscript/gdscript.h
+++ b/modules/gdscript/gdscript.h
@@ -368,7 +368,7 @@ public:
if (_debug_call_stack_pos >= _debug_max_call_stack) {
//stack overflow
- _debug_error = "Stack Overflow (Stack Size: " + itos(_debug_max_call_stack) + ")";
+ _debug_error = vformat("Stack overflow (stack size: %s). Check for infinite recursion in your script.", _debug_max_call_stack);
EngineDebugger::get_script_debugger()->debug(this);
return;
}
diff --git a/modules/gdscript/gdscript_analyzer.cpp b/modules/gdscript/gdscript_analyzer.cpp
index 9fa518ca0b..42b02ce3b9 100644
--- a/modules/gdscript/gdscript_analyzer.cpp
+++ b/modules/gdscript/gdscript_analyzer.cpp
@@ -1657,8 +1657,8 @@ void GDScriptAnalyzer::resolve_match_pattern(GDScriptParser::PatternNode *p_matc
p_match_pattern->bind->set_datatype(result);
#ifdef DEBUG_ENABLED
is_shadowing(p_match_pattern->bind, "pattern bind");
- if (p_match_pattern->bind->usages == 0) {
- parser->push_warning(p_match_pattern->bind, GDScriptWarning::UNASSIGNED_VARIABLE, p_match_pattern->bind->name);
+ if (p_match_pattern->bind->usages == 0 && !String(p_match_pattern->bind->name).begins_with("_")) {
+ parser->push_warning(p_match_pattern->bind, GDScriptWarning::UNUSED_VARIABLE, p_match_pattern->bind->name);
}
#endif
break;
@@ -2900,7 +2900,7 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
return;
}
bool valid = false;
- int int_constant = ClassDB::get_integer_constant(native, name, &valid);
+ int64_t int_constant = ClassDB::get_integer_constant(native, name, &valid);
if (valid) {
p_identifier->is_constant = true;
p_identifier->reduced_value = int_constant;
diff --git a/modules/gdscript/gdscript_compiler.cpp b/modules/gdscript/gdscript_compiler.cpp
index 910f94a936..25454030b1 100644
--- a/modules/gdscript/gdscript_compiler.cpp
+++ b/modules/gdscript/gdscript_compiler.cpp
@@ -312,7 +312,7 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_expression(CodeGen &code
// Class C++ integer constant.
if (nc) {
bool success = false;
- int constant = ClassDB::get_integer_constant(nc->get_name(), identifier, &success);
+ int64_t constant = ClassDB::get_integer_constant(nc->get_name(), identifier, &success);
if (success) {
return codegen.add_constant(constant);
}
@@ -1389,25 +1389,9 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_match_pattern(CodeGen &c
codegen.generator->pop_temporary();
codegen.generator->pop_temporary();
- // If this isn't the first, we need to OR with the previous pattern. If it's nested, we use AND instead.
- if (p_is_nested) {
- // Use the previous value as target, since we only need one temporary variable.
- codegen.generator->write_and_right_operand(result_addr);
- codegen.generator->write_end_and(p_previous_test);
- } else if (!p_is_first) {
- // Use the previous value as target, since we only need one temporary variable.
- codegen.generator->write_or_right_operand(result_addr);
- codegen.generator->write_end_or(p_previous_test);
- } else {
- // Just assign this value to the accumulator temporary.
- codegen.generator->write_assign(p_previous_test, result_addr);
- }
- codegen.generator->pop_temporary(); // Remove temp result addr.
-
// Create temporaries outside the loop so they can be reused.
GDScriptCodeGenerator::Address element_addr = codegen.add_temporary();
GDScriptCodeGenerator::Address element_type_addr = codegen.add_temporary();
- GDScriptCodeGenerator::Address test_addr = p_previous_test;
// Evaluate element by element.
for (int i = 0; i < p_pattern->array.size(); i++) {
@@ -1417,7 +1401,7 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_match_pattern(CodeGen &c
}
// Use AND here too, as we don't want to be checking elements if previous test failed (which means this might be an invalid get).
- codegen.generator->write_and_left_operand(test_addr);
+ codegen.generator->write_and_left_operand(result_addr);
// Add index to constant map.
GDScriptCodeGenerator::Address index_addr = codegen.add_constant(i);
@@ -1431,19 +1415,34 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_match_pattern(CodeGen &c
codegen.generator->write_call_utility(element_type_addr, "typeof", typeof_args);
// Try the pattern inside the element.
- test_addr = _parse_match_pattern(codegen, r_error, p_pattern->array[i], element_addr, element_type_addr, p_previous_test, false, true);
+ result_addr = _parse_match_pattern(codegen, r_error, p_pattern->array[i], element_addr, element_type_addr, result_addr, false, true);
if (r_error != OK) {
return GDScriptCodeGenerator::Address();
}
- codegen.generator->write_and_right_operand(test_addr);
- codegen.generator->write_end_and(test_addr);
+ codegen.generator->write_and_right_operand(result_addr);
+ codegen.generator->write_end_and(result_addr);
}
// Remove element temporaries.
codegen.generator->pop_temporary();
codegen.generator->pop_temporary();
- return test_addr;
+ // If this isn't the first, we need to OR with the previous pattern. If it's nested, we use AND instead.
+ if (p_is_nested) {
+ // Use the previous value as target, since we only need one temporary variable.
+ codegen.generator->write_and_right_operand(result_addr);
+ codegen.generator->write_end_and(p_previous_test);
+ } else if (!p_is_first) {
+ // Use the previous value as target, since we only need one temporary variable.
+ codegen.generator->write_or_right_operand(result_addr);
+ codegen.generator->write_end_or(p_previous_test);
+ } else {
+ // Just assign this value to the accumulator temporary.
+ codegen.generator->write_assign(p_previous_test, result_addr);
+ }
+ codegen.generator->pop_temporary(); // Remove temp result addr.
+
+ return p_previous_test;
} break;
case GDScriptParser::PatternNode::PT_DICTIONARY: {
if (p_is_nested) {
@@ -1488,27 +1487,9 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_match_pattern(CodeGen &c
codegen.generator->pop_temporary();
codegen.generator->pop_temporary();
- // If this isn't the first, we need to OR with the previous pattern. If it's nested, we use AND instead.
- if (p_is_nested) {
- // Use the previous value as target, since we only need one temporary variable.
- codegen.generator->write_and_right_operand(result_addr);
- codegen.generator->write_end_and(p_previous_test);
- } else if (!p_is_first) {
- // Use the previous value as target, since we only need one temporary variable.
- codegen.generator->write_or_right_operand(result_addr);
- codegen.generator->write_end_or(p_previous_test);
- } else {
- // Just assign this value to the accumulator temporary.
- codegen.generator->write_assign(p_previous_test, result_addr);
- }
- codegen.generator->pop_temporary(); // Remove temp result addr.
-
// Create temporaries outside the loop so they can be reused.
- temp_type.builtin_type = Variant::BOOL;
- GDScriptCodeGenerator::Address test_result = codegen.add_temporary(temp_type);
GDScriptCodeGenerator::Address element_addr = codegen.add_temporary();
GDScriptCodeGenerator::Address element_type_addr = codegen.add_temporary();
- GDScriptCodeGenerator::Address test_addr = p_previous_test;
// Evaluate element by element.
for (int i = 0; i < p_pattern->dictionary.size(); i++) {
@@ -1519,7 +1500,7 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_match_pattern(CodeGen &c
}
// Use AND here too, as we don't want to be checking elements if previous test failed (which means this might be an invalid get).
- codegen.generator->write_and_left_operand(test_addr);
+ codegen.generator->write_and_left_operand(result_addr);
// Get the pattern key.
GDScriptCodeGenerator::Address pattern_key_addr = _parse_expression(codegen, r_error, element.key);
@@ -1530,11 +1511,11 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_match_pattern(CodeGen &c
// Check if pattern key exists in user's dictionary. This will be AND-ed with next result.
func_args.clear();
func_args.push_back(pattern_key_addr);
- codegen.generator->write_call(test_result, p_value_addr, "has", func_args);
+ codegen.generator->write_call(result_addr, p_value_addr, "has", func_args);
if (element.value_pattern != nullptr) {
// Use AND here too, as we don't want to be checking elements if previous test failed (which means this might be an invalid get).
- codegen.generator->write_and_left_operand(test_result);
+ codegen.generator->write_and_left_operand(result_addr);
// Get actual value from user dictionary.
codegen.generator->write_get(element_addr, pattern_key_addr, p_value_addr);
@@ -1545,16 +1526,16 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_match_pattern(CodeGen &c
codegen.generator->write_call_utility(element_type_addr, "typeof", func_args);
// Try the pattern inside the value.
- test_addr = _parse_match_pattern(codegen, r_error, element.value_pattern, element_addr, element_type_addr, test_addr, false, true);
+ result_addr = _parse_match_pattern(codegen, r_error, element.value_pattern, element_addr, element_type_addr, result_addr, false, true);
if (r_error != OK) {
return GDScriptCodeGenerator::Address();
}
- codegen.generator->write_and_right_operand(test_addr);
- codegen.generator->write_end_and(test_addr);
+ codegen.generator->write_and_right_operand(result_addr);
+ codegen.generator->write_end_and(result_addr);
}
- codegen.generator->write_and_right_operand(test_addr);
- codegen.generator->write_end_and(test_addr);
+ codegen.generator->write_and_right_operand(result_addr);
+ codegen.generator->write_end_and(result_addr);
// Remove pattern key temporary.
if (pattern_key_addr.mode == GDScriptCodeGenerator::Address::TEMPORARY) {
@@ -1565,9 +1546,23 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_match_pattern(CodeGen &c
// Remove element temporaries.
codegen.generator->pop_temporary();
codegen.generator->pop_temporary();
- codegen.generator->pop_temporary();
- return test_addr;
+ // If this isn't the first, we need to OR with the previous pattern. If it's nested, we use AND instead.
+ if (p_is_nested) {
+ // Use the previous value as target, since we only need one temporary variable.
+ codegen.generator->write_and_right_operand(result_addr);
+ codegen.generator->write_end_and(p_previous_test);
+ } else if (!p_is_first) {
+ // Use the previous value as target, since we only need one temporary variable.
+ codegen.generator->write_or_right_operand(result_addr);
+ codegen.generator->write_end_or(p_previous_test);
+ } else {
+ // Just assign this value to the accumulator temporary.
+ codegen.generator->write_assign(p_previous_test, result_addr);
+ }
+ codegen.generator->pop_temporary(); // Remove temp result addr.
+
+ return p_previous_test;
} break;
case GDScriptParser::PatternNode::PT_REST:
// Do nothing.
diff --git a/modules/gdscript/gdscript_editor.cpp b/modules/gdscript/gdscript_editor.cpp
index 202d1dcdf4..5345143271 100644
--- a/modules/gdscript/gdscript_editor.cpp
+++ b/modules/gdscript/gdscript_editor.cpp
@@ -738,7 +738,7 @@ static void _get_directory_contents(EditorFileSystemDirectory *p_dir, HashMap<St
static void _find_annotation_arguments(const GDScriptParser::AnnotationNode *p_annotation, int p_argument, const String p_quote_style, HashMap<String, ScriptLanguage::CodeCompletionOption> &r_result) {
if (p_annotation->name == SNAME("@export_range")) {
- if (p_argument == 3 || p_argument == 4) {
+ if (p_argument == 3 || p_argument == 4 || p_argument == 5) {
// Slider hint.
ScriptLanguage::CodeCompletionOption slider1("or_greater", ScriptLanguage::CODE_COMPLETION_KIND_PLAIN_TEXT);
slider1.insert_text = slider1.display.quote(p_quote_style);
@@ -746,6 +746,9 @@ static void _find_annotation_arguments(const GDScriptParser::AnnotationNode *p_a
ScriptLanguage::CodeCompletionOption slider2("or_lesser", ScriptLanguage::CODE_COMPLETION_KIND_PLAIN_TEXT);
slider2.insert_text = slider2.display.quote(p_quote_style);
r_result.insert(slider2.display, slider2);
+ ScriptLanguage::CodeCompletionOption slider3("noslider", ScriptLanguage::CODE_COMPLETION_KIND_PLAIN_TEXT);
+ slider3.insert_text = slider3.display.quote(p_quote_style);
+ r_result.insert(slider3.display, slider3);
}
} else if (p_annotation->name == SNAME("@export_exp_easing")) {
if (p_argument == 0 || p_argument == 1) {
diff --git a/modules/gdscript/gdscript_lambda_callable.cpp b/modules/gdscript/gdscript_lambda_callable.cpp
index c43fa12c8c..a25bf9a306 100644
--- a/modules/gdscript/gdscript_lambda_callable.cpp
+++ b/modules/gdscript/gdscript_lambda_callable.cpp
@@ -91,7 +91,7 @@ GDScriptLambdaCallable::GDScriptLambdaCallable(Ref<GDScript> p_script, GDScriptF
function = p_function;
captures = p_captures;
- h = (uint32_t)hash_djb2_one_64((uint64_t)this);
+ h = (uint32_t)hash_murmur3_one_64((uint64_t)this);
}
bool GDScriptLambdaSelfCallable::compare_equal(const CallableCustom *p_a, const CallableCustom *p_b) {
@@ -161,7 +161,7 @@ GDScriptLambdaSelfCallable::GDScriptLambdaSelfCallable(Ref<RefCounted> p_self, G
function = p_function;
captures = p_captures;
- h = (uint32_t)hash_djb2_one_64((uint64_t)this);
+ h = (uint32_t)hash_murmur3_one_64((uint64_t)this);
}
GDScriptLambdaSelfCallable::GDScriptLambdaSelfCallable(Object *p_self, GDScriptFunction *p_function, const Vector<Variant> &p_captures) {
@@ -169,5 +169,5 @@ GDScriptLambdaSelfCallable::GDScriptLambdaSelfCallable(Object *p_self, GDScriptF
function = p_function;
captures = p_captures;
- h = (uint32_t)hash_djb2_one_64((uint64_t)this);
+ h = (uint32_t)hash_murmur3_one_64((uint64_t)this);
}
diff --git a/modules/gdscript/gdscript_parser.cpp b/modules/gdscript/gdscript_parser.cpp
index bc225850c9..5abbf907c7 100644
--- a/modules/gdscript/gdscript_parser.cpp
+++ b/modules/gdscript/gdscript_parser.cpp
@@ -120,7 +120,7 @@ GDScriptParser::GDScriptParser() {
register_annotation(MethodInfo("@export_global_dir"), AnnotationInfo::VARIABLE, &GDScriptParser::export_annotations<PROPERTY_HINT_GLOBAL_DIR, Variant::STRING>);
register_annotation(MethodInfo("@export_multiline"), AnnotationInfo::VARIABLE, &GDScriptParser::export_annotations<PROPERTY_HINT_MULTILINE_TEXT, Variant::STRING>);
register_annotation(MethodInfo("@export_placeholder"), AnnotationInfo::VARIABLE, &GDScriptParser::export_annotations<PROPERTY_HINT_PLACEHOLDER_TEXT, Variant::STRING>);
- register_annotation(MethodInfo("@export_range", { Variant::FLOAT, "min" }, { Variant::FLOAT, "max" }, { Variant::FLOAT, "step" }, { Variant::STRING, "slider1" }, { Variant::STRING, "slider2" }), AnnotationInfo::VARIABLE, &GDScriptParser::export_annotations<PROPERTY_HINT_RANGE, Variant::FLOAT>, 3);
+ register_annotation(MethodInfo("@export_range", { Variant::FLOAT, "min" }, { Variant::FLOAT, "max" }, { Variant::FLOAT, "step" }, { Variant::STRING, "slider1" }, { Variant::STRING, "slider2" }, { Variant::STRING, "slider3" }), AnnotationInfo::VARIABLE, &GDScriptParser::export_annotations<PROPERTY_HINT_RANGE, Variant::FLOAT>, 4);
register_annotation(MethodInfo("@export_exp_easing", { Variant::STRING, "hint1" }, { Variant::STRING, "hint2" }), AnnotationInfo::VARIABLE, &GDScriptParser::export_annotations<PROPERTY_HINT_EXP_EASING, Variant::FLOAT>, 2);
register_annotation(MethodInfo("@export_color_no_alpha"), AnnotationInfo::VARIABLE, &GDScriptParser::export_annotations<PROPERTY_HINT_COLOR_NO_ALPHA, Variant::COLOR>);
register_annotation(MethodInfo("@export_node_path", { Variant::STRING, "type" }), AnnotationInfo::VARIABLE, &GDScriptParser::export_annotations<PROPERTY_HINT_NODE_PATH_VALID_TYPES, Variant::NODE_PATH>, 1, true);
diff --git a/modules/gdscript/gdscript_rpc_callable.cpp b/modules/gdscript/gdscript_rpc_callable.cpp
index 07ef5aefcb..63ebd8acf5 100644
--- a/modules/gdscript/gdscript_rpc_callable.cpp
+++ b/modules/gdscript/gdscript_rpc_callable.cpp
@@ -71,7 +71,7 @@ GDScriptRPCCallable::GDScriptRPCCallable(Object *p_object, const StringName &p_m
object = p_object;
method = p_method;
h = method.hash();
- h = hash_djb2_one_64(object->get_instance_id(), h);
+ h = hash_murmur3_one_64(object->get_instance_id(), h);
node = Object::cast_to<Node>(object);
ERR_FAIL_COND_MSG(!node, "RPC can only be defined on class that extends Node.");
}
diff --git a/modules/gdscript/gdscript_vm.cpp b/modules/gdscript/gdscript_vm.cpp
index 55f4ebb1c5..20b8d29ec3 100644
--- a/modules/gdscript/gdscript_vm.cpp
+++ b/modules/gdscript/gdscript_vm.cpp
@@ -3432,9 +3432,9 @@ Variant GDScriptFunction::call(GDScriptInstance *p_instance, const Variant **p_a
_err_print_error(err_func.utf8().get_data(), err_file.utf8().get_data(), err_line, err_text.utf8().get_data(), false, ERR_HANDLER_SCRIPT);
}
-#endif
// Get a default return type in case of failure
retvalue = _get_default_variant_for_data_type(return_type);
+#endif
OPCODE_OUT;
}
diff --git a/modules/gdscript/language_server/gdscript_text_document.cpp b/modules/gdscript/language_server/gdscript_text_document.cpp
index d763701911..5ad9680ea0 100644
--- a/modules/gdscript/language_server/gdscript_text_document.cpp
+++ b/modules/gdscript/language_server/gdscript_text_document.cpp
@@ -169,6 +169,7 @@ Array GDScriptTextDocument::completion(const Dictionary &p_params) {
lsp::CompletionItem item;
item.label = option.display;
item.data = request_data;
+ item.insertText = option.insert_text;
switch (option.kind) {
case ScriptLanguage::CODE_COMPLETION_KIND_ENUM:
@@ -278,12 +279,7 @@ Dictionary GDScriptTextDocument::resolve(const Dictionary &p_params) {
item.documentation = symbol->render();
}
- if ((item.kind == lsp::CompletionItemKind::Method || item.kind == lsp::CompletionItemKind::Function) && !item.label.ends_with("):")) {
- item.insertText = item.label + "(";
- if (symbol && symbol->children.is_empty()) {
- item.insertText += ")";
- }
- } else if (item.kind == lsp::CompletionItemKind::Event) {
+ if (item.kind == lsp::CompletionItemKind::Event) {
if (params.context.triggerKind == lsp::CompletionTriggerKind::TriggerCharacter && (params.context.triggerCharacter == "(")) {
const String quote_style = EDITOR_GET("text_editor/completion/use_single_quotes") ? "'" : "\"";
item.insertText = item.label.quote(quote_style);
diff --git a/modules/gdscript/language_server/lsp.hpp b/modules/gdscript/language_server/lsp.hpp
index d4aa207972..1c9349097f 100644
--- a/modules/gdscript/language_server/lsp.hpp
+++ b/modules/gdscript/language_server/lsp.hpp
@@ -1004,8 +1004,8 @@ struct CompletionItem {
dict["label"] = label;
dict["kind"] = kind;
dict["data"] = data;
+ dict["insertText"] = insertText;
if (resolved) {
- dict["insertText"] = insertText;
dict["detail"] = detail;
dict["documentation"] = documentation.to_json();
dict["deprecated"] = deprecated;
diff --git a/modules/gdscript/tests/scripts/parser/features/match_bind_unused.gd b/modules/gdscript/tests/scripts/parser/features/match_bind_unused.gd
new file mode 100644
index 0000000000..707e4532cc
--- /dev/null
+++ b/modules/gdscript/tests/scripts/parser/features/match_bind_unused.gd
@@ -0,0 +1,13 @@
+# https://github.com/godotengine/godot/pull/61666
+
+func test():
+ var dict := {"key": "value"}
+ match dict:
+ {"key": var value}:
+ print(value) # used, no warning
+ match dict:
+ {"key": var value}:
+ pass # unused, warning
+ match dict:
+ {"key": var _value}:
+ pass # unused, suppressed warning from underscore
diff --git a/modules/gdscript/tests/scripts/parser/features/match_bind_unused.out b/modules/gdscript/tests/scripts/parser/features/match_bind_unused.out
new file mode 100644
index 0000000000..057c1b11e5
--- /dev/null
+++ b/modules/gdscript/tests/scripts/parser/features/match_bind_unused.out
@@ -0,0 +1,6 @@
+GDTEST_OK
+>> WARNING
+>> Line: 9
+>> UNUSED_VARIABLE
+>> The local variable 'value' is declared but never used in the block. If this is intended, prefix it with an underscore: '_value'
+value
diff --git a/modules/gdscript/tests/scripts/parser/features/match_dictionary.gd b/modules/gdscript/tests/scripts/parser/features/match_dictionary.gd
new file mode 100644
index 0000000000..377dd25e9e
--- /dev/null
+++ b/modules/gdscript/tests/scripts/parser/features/match_dictionary.gd
@@ -0,0 +1,43 @@
+func foo(x):
+ match x:
+ {"key1": "value1", "key2": "value2"}:
+ print('{"key1": "value1", "key2": "value2"}')
+ {"key1": "value1", "key2"}:
+ print('{"key1": "value1", "key2"}')
+ {"key1", "key2": "value2"}:
+ print('{"key1", "key2": "value2"}')
+ {"key1", "key2"}:
+ print('{"key1", "key2"}')
+ {"key1": "value1"}:
+ print('{"key1": "value1"}')
+ {"key1"}:
+ print('{"key1"}')
+ _:
+ print("wildcard")
+
+func bar(x):
+ match x:
+ {0}:
+ print("0")
+ {1}:
+ print("1")
+ {2}:
+ print("2")
+ _:
+ print("wildcard")
+
+func test():
+ foo({"key1": "value1", "key2": "value2"})
+ foo({"key1": "value1", "key2": ""})
+ foo({"key1": "", "key2": "value2"})
+ foo({"key1": "", "key2": ""})
+ foo({"key1": "value1"})
+ foo({"key1": ""})
+ foo({"key1": "value1", "key2": "value2", "key3": "value3"})
+ foo({"key1": "value1", "key3": ""})
+ foo({"key2": "value2"})
+ foo({"key3": ""})
+ bar({0: "0"})
+ bar({1: "1"})
+ bar({2: "2"})
+ bar({3: "3"})
diff --git a/modules/gdscript/tests/scripts/parser/features/match_dictionary.out b/modules/gdscript/tests/scripts/parser/features/match_dictionary.out
new file mode 100644
index 0000000000..4dee886927
--- /dev/null
+++ b/modules/gdscript/tests/scripts/parser/features/match_dictionary.out
@@ -0,0 +1,15 @@
+GDTEST_OK
+{"key1": "value1", "key2": "value2"}
+{"key1": "value1", "key2"}
+{"key1", "key2": "value2"}
+{"key1", "key2"}
+{"key1": "value1"}
+{"key1"}
+wildcard
+wildcard
+wildcard
+wildcard
+0
+1
+2
+wildcard
diff --git a/modules/gdscript/tests/scripts/parser/features/match_multiple_patterns_with_array.gd b/modules/gdscript/tests/scripts/parser/features/match_multiple_patterns_with_array.gd
new file mode 100644
index 0000000000..dbe223f5f5
--- /dev/null
+++ b/modules/gdscript/tests/scripts/parser/features/match_multiple_patterns_with_array.gd
@@ -0,0 +1,26 @@
+func foo(x):
+ match x:
+ 1, [2]:
+ print('1, [2]')
+ _:
+ print('wildcard')
+
+func bar(x):
+ match x:
+ [1], [2], [3]:
+ print('[1], [2], [3]')
+ [4]:
+ print('[4]')
+ _:
+ print('wildcard')
+
+func test():
+ foo(1)
+ foo([2])
+ foo(2)
+ bar([1])
+ bar([2])
+ bar([3])
+ bar([4])
+ bar([5])
+
diff --git a/modules/gdscript/tests/scripts/parser/features/match_multiple_patterns_with_array.out b/modules/gdscript/tests/scripts/parser/features/match_multiple_patterns_with_array.out
new file mode 100644
index 0000000000..a12b934d67
--- /dev/null
+++ b/modules/gdscript/tests/scripts/parser/features/match_multiple_patterns_with_array.out
@@ -0,0 +1,9 @@
+GDTEST_OK
+1, [2]
+1, [2]
+wildcard
+[1], [2], [3]
+[1], [2], [3]
+[1], [2], [3]
+[4]
+wildcard
diff --git a/modules/gdscript/tests/test_gdscript.cpp b/modules/gdscript/tests/test_gdscript.cpp
index d8f60d5e9b..cbcd7b2955 100644
--- a/modules/gdscript/tests/test_gdscript.cpp
+++ b/modules/gdscript/tests/test_gdscript.cpp
@@ -134,6 +134,34 @@ static void test_parser(const String &p_code, const String &p_script_path, const
#endif
}
+static void recursively_disassemble_functions(const Ref<GDScript> script, const Vector<String> &p_lines) {
+ for (const KeyValue<StringName, GDScriptFunction *> &E : script->get_member_functions()) {
+ const GDScriptFunction *func = E.value;
+
+ String signature = "Disassembling " + func->get_name().operator String() + "(";
+ for (int i = 0; i < func->get_argument_count(); i++) {
+ if (i > 0) {
+ signature += ", ";
+ }
+ signature += func->get_argument_name(i);
+ }
+ print_line(signature + ")");
+#ifdef TOOLS_ENABLED
+ func->disassemble(p_lines);
+#endif
+ print_line("");
+ print_line("");
+ }
+
+ for (const KeyValue<StringName, Ref<GDScript>> &F : script->get_subclasses()) {
+ const Ref<GDScript> inner_script = F.value;
+ print_line("");
+ print_line(vformat("Inner Class: %s", inner_script->get_script_class_name()));
+ print_line("");
+ recursively_disassemble_functions(inner_script, p_lines);
+ }
+}
+
static void test_compiler(const String &p_code, const String &p_script_path, const Vector<String> &p_lines) {
GDScriptParser parser;
Error err = parser.parse(p_code, p_script_path, false);
@@ -172,23 +200,7 @@ static void test_compiler(const String &p_code, const String &p_script_path, con
return;
}
- for (const KeyValue<StringName, GDScriptFunction *> &E : script->get_member_functions()) {
- const GDScriptFunction *func = E.value;
-
- String signature = "Disassembling " + func->get_name().operator String() + "(";
- for (int i = 0; i < func->get_argument_count(); i++) {
- if (i > 0) {
- signature += ", ";
- }
- signature += func->get_argument_name(i);
- }
- print_line(signature + ")");
-#ifdef TOOLS_ENABLED
- func->disassemble(p_lines);
-#endif
- print_line("");
- print_line("");
- }
+ recursively_disassemble_functions(script, p_lines);
}
void test(TestType p_type) {
diff --git a/modules/gridmap/doc_classes/GridMap.xml b/modules/gridmap/doc_classes/GridMap.xml
index 407ce961c8..499f54e3ba 100644
--- a/modules/gridmap/doc_classes/GridMap.xml
+++ b/modules/gridmap/doc_classes/GridMap.xml
@@ -73,6 +73,13 @@
Returns an array of [Transform3D] and [Mesh] references corresponding to the non-empty cells in the grid. The transforms are specified in world space.
</description>
</method>
+ <method name="get_navigation_layer_value" qualifiers="const">
+ <return type="bool" />
+ <argument index="0" name="layer_number" type="int" />
+ <description>
+ Returns whether or not the specified layer of the [member navigation_layers] bitmask is enabled, given a [code]layer_number[/code] between 1 and 32.
+ </description>
+ </method>
<method name="get_used_cells" qualifiers="const">
<return type="Array" />
<description>
@@ -133,6 +140,14 @@
Based on [code]value[/code], enables or disables the specified layer in the [member collision_mask], given a [code]layer_number[/code] between 1 and 32.
</description>
</method>
+ <method name="set_navigation_layer_value">
+ <return type="void" />
+ <argument index="0" name="layer_number" type="int" />
+ <argument index="1" name="value" type="bool" />
+ <description>
+ Based on [code]value[/code], enables or disables the specified layer in the [member navigation_layers] bitmask, given a [code]layer_number[/code] between 1 and 32.
+ </description>
+ </method>
<method name="world_to_map" qualifiers="const">
<return type="Vector3i" />
<argument index="0" name="world_position" type="Vector3" />
@@ -177,7 +192,7 @@
The assigned [MeshLibrary].
</member>
<member name="navigation_layers" type="int" setter="set_navigation_layers" getter="get_navigation_layers" default="1">
- The navigation layers the GridMap generates its navigable regions in.
+ A bitmask determining all navigation layers the GridMap generated navigation regions belong to. These navigation layers can be checked upon when requesting a path with [method NavigationServer3D.map_get_path].
</member>
<member name="physics_material" type="PhysicsMaterial" setter="set_physics_material" getter="get_physics_material">
Overrides the default friction and bounce physics properties for the whole [GridMap].
diff --git a/modules/gridmap/editor/grid_map_editor_plugin.cpp b/modules/gridmap/editor/grid_map_editor_plugin.cpp
index cfff5c61de..b694c109e1 100644
--- a/modules/gridmap/editor/grid_map_editor_plugin.cpp
+++ b/modules/gridmap/editor/grid_map_editor_plugin.cpp
@@ -1260,7 +1260,7 @@ GridMapEditor::GridMapEditor() {
info_message->set_text(TTR("Give a MeshLibrary resource to this GridMap to use its meshes."));
info_message->set_vertical_alignment(VERTICAL_ALIGNMENT_CENTER);
info_message->set_horizontal_alignment(HORIZONTAL_ALIGNMENT_CENTER);
- info_message->set_autowrap_mode(Label::AUTOWRAP_WORD_SMART);
+ info_message->set_autowrap_mode(TextServer::AUTOWRAP_WORD_SMART);
info_message->set_custom_minimum_size(Size2(100 * EDSCALE, 0));
info_message->set_anchors_and_offsets_preset(PRESET_WIDE, PRESET_MODE_KEEP_SIZE, 8 * EDSCALE);
mesh_library_palette->add_child(info_message);
diff --git a/modules/gridmap/grid_map.cpp b/modules/gridmap/grid_map.cpp
index dcdb520d11..7d80cbef7c 100644
--- a/modules/gridmap/grid_map.cpp
+++ b/modules/gridmap/grid_map.cpp
@@ -226,15 +226,33 @@ bool GridMap::is_baking_navigation() {
return bake_navigation;
}
-void GridMap::set_navigation_layers(uint32_t p_layers) {
- navigation_layers = p_layers;
+void GridMap::set_navigation_layers(uint32_t p_navigation_layers) {
+ navigation_layers = p_navigation_layers;
_recreate_octant_data();
}
-uint32_t GridMap::get_navigation_layers() {
+uint32_t GridMap::get_navigation_layers() const {
return navigation_layers;
}
+void GridMap::set_navigation_layer_value(int p_layer_number, bool p_value) {
+ ERR_FAIL_COND_MSG(p_layer_number < 1, "Navigation layer number must be between 1 and 32 inclusive.");
+ ERR_FAIL_COND_MSG(p_layer_number > 32, "Navigation layer number must be between 1 and 32 inclusive.");
+ uint32_t _navigation_layers = get_navigation_layers();
+ if (p_value) {
+ _navigation_layers |= 1 << (p_layer_number - 1);
+ } else {
+ _navigation_layers &= ~(1 << (p_layer_number - 1));
+ }
+ set_navigation_layers(_navigation_layers);
+}
+
+bool GridMap::get_navigation_layer_value(int p_layer_number) const {
+ ERR_FAIL_COND_V_MSG(p_layer_number < 1, false, "Navigation layer number must be between 1 and 32 inclusive.");
+ ERR_FAIL_COND_V_MSG(p_layer_number > 32, false, "Navigation layer number must be between 1 and 32 inclusive.");
+ return get_navigation_layers() & (1 << (p_layer_number - 1));
+}
+
void GridMap::set_mesh_library(const Ref<MeshLibrary> &p_mesh_library) {
if (!mesh_library.is_null()) {
mesh_library->unregister_owner(this);
@@ -433,6 +451,18 @@ void GridMap::_octant_transform(const OctantKey &p_key) {
RS::get_singleton()->instance_set_transform(g.collision_debug_instance, get_global_transform());
}
+ // update transform for NavigationServer regions and navigation debugmesh instances
+ for (const KeyValue<IndexKey, Octant::NavMesh> &E : g.navmesh_ids) {
+ if (bake_navigation) {
+ if (E.value.region.is_valid()) {
+ NavigationServer3D::get_singleton()->region_set_transform(E.value.region, get_global_transform() * E.value.xform);
+ }
+ if (E.value.navmesh_debug_instance.is_valid()) {
+ RS::get_singleton()->instance_set_transform(E.value.navmesh_debug_instance, get_global_transform() * E.value.xform);
+ }
+ }
+ }
+
for (int i = 0; i < g.multimesh_instances.size(); i++) {
RS::get_singleton()->instance_set_transform(g.multimesh_instances[i].instance, get_global_transform());
}
@@ -456,6 +486,9 @@ bool GridMap::_octant_update(const OctantKey &p_key) {
//erase navigation
for (const KeyValue<IndexKey, Octant::NavMesh> &E : g.navmesh_ids) {
NavigationServer3D::get_singleton()->free(E.value.region);
+ if (E.value.navmesh_debug_instance.is_valid()) {
+ RS::get_singleton()->free(E.value.navmesh_debug_instance);
+ }
}
g.navmesh_ids.clear();
@@ -533,11 +566,26 @@ bool GridMap::_octant_update(const OctantKey &p_key) {
if (bake_navigation) {
RID region = NavigationServer3D::get_singleton()->region_create();
- NavigationServer3D::get_singleton()->region_set_layers(region, navigation_layers);
+ NavigationServer3D::get_singleton()->region_set_navigation_layers(region, navigation_layers);
NavigationServer3D::get_singleton()->region_set_navmesh(region, navmesh);
- NavigationServer3D::get_singleton()->region_set_transform(region, get_global_transform() * mesh_library->get_item_navmesh_transform(c.item));
+ NavigationServer3D::get_singleton()->region_set_transform(region, get_global_transform() * nm.xform);
NavigationServer3D::get_singleton()->region_set_map(region, get_world_3d()->get_navigation_map());
nm.region = region;
+
+ // add navigation debugmesh visual instances if debug is enabled
+ SceneTree *st = SceneTree::get_singleton();
+ if (st && st->is_debugging_navigation_hint()) {
+ if (!nm.navmesh_debug_instance.is_valid()) {
+ RID navmesh_debug_rid = navmesh->get_debug_mesh()->get_rid();
+ nm.navmesh_debug_instance = RS::get_singleton()->instance_create();
+ RS::get_singleton()->instance_set_base(nm.navmesh_debug_instance, navmesh_debug_rid);
+ RS::get_singleton()->mesh_surface_set_material(navmesh_debug_rid, 0, st->get_debug_navigation_material()->get_rid());
+ }
+ if (is_inside_tree()) {
+ RS::get_singleton()->instance_set_scenario(nm.navmesh_debug_instance, get_world_3d()->get_scenario());
+ RS::get_singleton()->instance_set_transform(nm.navmesh_debug_instance, get_global_transform() * nm.xform);
+ }
+ }
}
g.navmesh_ids[E] = nm;
@@ -629,7 +677,7 @@ void GridMap::_octant_enter_world(const OctantKey &p_key) {
Ref<NavigationMesh> nm = mesh_library->get_item_navmesh(cell_map[F.key].item);
if (nm.is_valid()) {
RID region = NavigationServer3D::get_singleton()->region_create();
- NavigationServer3D::get_singleton()->region_set_layers(region, navigation_layers);
+ NavigationServer3D::get_singleton()->region_set_navigation_layers(region, navigation_layers);
NavigationServer3D::get_singleton()->region_set_navmesh(region, nm);
NavigationServer3D::get_singleton()->region_set_transform(region, get_global_transform() * F.value.xform);
NavigationServer3D::get_singleton()->region_set_map(region, get_world_3d()->get_navigation_map());
@@ -660,6 +708,10 @@ void GridMap::_octant_exit_world(const OctantKey &p_key) {
NavigationServer3D::get_singleton()->free(F.value.region);
F.value.region = RID();
}
+ if (F.value.navmesh_debug_instance.is_valid()) {
+ RS::get_singleton()->free(F.value.navmesh_debug_instance);
+ F.value.navmesh_debug_instance = RID();
+ }
}
}
@@ -678,7 +730,12 @@ void GridMap::_octant_clean_up(const OctantKey &p_key) {
// Erase navigation
for (const KeyValue<IndexKey, Octant::NavMesh> &E : g.navmesh_ids) {
- NavigationServer3D::get_singleton()->free(E.value.region);
+ if (E.value.region.is_valid()) {
+ NavigationServer3D::get_singleton()->free(E.value.region);
+ }
+ if (E.value.navmesh_debug_instance.is_valid()) {
+ RS::get_singleton()->free(E.value.navmesh_debug_instance);
+ }
}
g.navmesh_ids.clear();
@@ -846,6 +903,9 @@ void GridMap::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_navigation_layers", "layers"), &GridMap::set_navigation_layers);
ClassDB::bind_method(D_METHOD("get_navigation_layers"), &GridMap::get_navigation_layers);
+ ClassDB::bind_method(D_METHOD("set_navigation_layer_value", "layer_number", "value"), &GridMap::set_navigation_layer_value);
+ ClassDB::bind_method(D_METHOD("get_navigation_layer_value", "layer_number"), &GridMap::get_navigation_layer_value);
+
ClassDB::bind_method(D_METHOD("set_mesh_library", "mesh_library"), &GridMap::set_mesh_library);
ClassDB::bind_method(D_METHOD("get_mesh_library"), &GridMap::get_mesh_library);
@@ -890,7 +950,7 @@ void GridMap::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "mesh_library", PROPERTY_HINT_RESOURCE_TYPE, "MeshLibrary"), "set_mesh_library", "get_mesh_library");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "physics_material", PROPERTY_HINT_RESOURCE_TYPE, "PhysicsMaterial"), "set_physics_material", "get_physics_material");
ADD_GROUP("Cell", "cell_");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "cell_size"), "set_cell_size", "get_cell_size");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "cell_size", PROPERTY_HINT_NONE, "suffix:m"), "set_cell_size", "get_cell_size");
ADD_PROPERTY(PropertyInfo(Variant::INT, "cell_octant_size", PROPERTY_HINT_RANGE, "1,1024,1"), "set_octant_size", "get_octant_size");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "cell_center_x"), "set_center_x", "get_center_x");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "cell_center_y"), "set_center_y", "get_center_y");
diff --git a/modules/gridmap/grid_map.h b/modules/gridmap/grid_map.h
index d0872a839b..078a1d9de5 100644
--- a/modules/gridmap/grid_map.h
+++ b/modules/gridmap/grid_map.h
@@ -98,6 +98,7 @@ class GridMap : public Node3D {
struct NavMesh {
RID region;
Transform3D xform;
+ RID navmesh_debug_instance;
};
struct MultimeshInstance {
@@ -237,8 +238,11 @@ public:
void set_bake_navigation(bool p_bake_navigation);
bool is_baking_navigation();
- void set_navigation_layers(uint32_t p_layers);
- uint32_t get_navigation_layers();
+ void set_navigation_layers(uint32_t p_navigation_layers);
+ uint32_t get_navigation_layers() const;
+
+ void set_navigation_layer_value(int p_layer_number, bool p_value);
+ bool get_navigation_layer_value(int p_layer_number) const;
void set_mesh_library(const Ref<MeshLibrary> &p_mesh_library);
Ref<MeshLibrary> get_mesh_library() const;
diff --git a/modules/jpg/SCsub b/modules/jpg/SCsub
index 7c6ceeea29..b840542c1b 100644
--- a/modules/jpg/SCsub
+++ b/modules/jpg/SCsub
@@ -13,6 +13,7 @@ thirdparty_obj = []
thirdparty_dir = "#thirdparty/jpeg-compressor/"
thirdparty_sources = [
"jpgd.cpp",
+ "jpge.cpp",
]
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
diff --git a/modules/jpg/image_loader_jpegd.cpp b/modules/jpg/image_loader_jpegd.cpp
index 51358876a4..0e03fa65c8 100644
--- a/modules/jpg/image_loader_jpegd.cpp
+++ b/modules/jpg/image_loader_jpegd.cpp
@@ -33,7 +33,8 @@
#include "core/os/os.h"
#include "core/string/print_string.h"
-#include <jpgd.h>
+#include "thirdparty/jpeg-compressor/jpgd.h"
+#include "thirdparty/jpeg-compressor/jpge.h"
#include <string.h>
Error jpeg_load_image_from_buffer(Image *p_image, const uint8_t *p_buffer, int p_buffer_len) {
@@ -131,6 +132,59 @@ static Ref<Image> _jpegd_mem_loader_func(const uint8_t *p_png, int p_size) {
return img;
}
+static Error _jpgd_save_func(const String &p_path, const Ref<Image> &p_img, float p_quality) {
+ return OK;
+}
+
+class ImageLoaderJPGOSFile : public jpge::output_stream {
+public:
+ Ref<FileAccess> f;
+
+ virtual bool put_buf(const void *Pbuf, int len) {
+ f->store_buffer((const uint8_t *)Pbuf, len);
+ return true;
+ }
+};
+
+class ImageLoaderJPGOSBuffer : public jpge::output_stream {
+public:
+ Vector<uint8_t> *buffer = nullptr;
+ virtual bool put_buf(const void *Pbuf, int len) {
+ uint32_t base = buffer->size();
+ buffer->resize(base + len);
+ memcpy(buffer->ptrw() + base, Pbuf, len);
+ return true;
+ }
+};
+
+static Vector<uint8_t> _jpgd_buffer_save_func(const Ref<Image> &p_img, float p_quality) {
+ ERR_FAIL_COND_V(p_img.is_null() || p_img->is_empty(), Vector<uint8_t>());
+ Ref<Image> image = p_img;
+ if (image->get_format() != Image::FORMAT_RGB8) {
+ image->convert(Image::FORMAT_ETC2_RGB8);
+ }
+
+ jpge::params p;
+ p.m_quality = CLAMP(p_quality * 100, 1, 100);
+ Vector<uint8_t> output;
+ ImageLoaderJPGOSBuffer ob;
+ ob.buffer = &output;
+
+ jpge::jpeg_encoder enc;
+ enc.init(&ob, image->get_width(), image->get_height(), 3, p);
+
+ const uint8_t *src_data = image->get_data().ptr();
+ for (int i = 0; i < image->get_height(); i++) {
+ enc.process_scanline(&src_data[i * image->get_width() * 3]);
+ }
+
+ enc.process_scanline(nullptr);
+
+ return output;
+}
+
ImageLoaderJPG::ImageLoaderJPG() {
Image::_jpg_mem_loader_func = _jpegd_mem_loader_func;
+ Image::save_jpg_func = _jpgd_save_func;
+ Image::save_jpg_buffer_func = _jpgd_buffer_save_func;
}
diff --git a/modules/lightmapper_rd/lightmapper_rd.h b/modules/lightmapper_rd/lightmapper_rd.h
index 503f5f7009..bf9f9b5954 100644
--- a/modules/lightmapper_rd/lightmapper_rd.h
+++ b/modules/lightmapper_rd/lightmapper_rd.h
@@ -110,12 +110,12 @@ class LightmapperRD : public Lightmapper {
struct EdgeHash {
_FORCE_INLINE_ static uint32_t hash(const Edge &p_edge) {
- uint32_t h = hash_djb2_one_float(p_edge.a.x);
- h = hash_djb2_one_float(p_edge.a.y, h);
- h = hash_djb2_one_float(p_edge.a.z, h);
- h = hash_djb2_one_float(p_edge.b.x, h);
- h = hash_djb2_one_float(p_edge.b.y, h);
- h = hash_djb2_one_float(p_edge.b.z, h);
+ uint32_t h = hash_murmur3_one_float(p_edge.a.x);
+ h = hash_murmur3_one_float(p_edge.a.y, h);
+ h = hash_murmur3_one_float(p_edge.a.z, h);
+ h = hash_murmur3_one_float(p_edge.b.x, h);
+ h = hash_murmur3_one_float(p_edge.b.y, h);
+ h = hash_murmur3_one_float(p_edge.b.z, h);
return h;
}
};
@@ -146,15 +146,15 @@ class LightmapperRD : public Lightmapper {
struct VertexHash {
_FORCE_INLINE_ static uint32_t hash(const Vertex &p_vtx) {
- uint32_t h = hash_djb2_one_float(p_vtx.position[0]);
- h = hash_djb2_one_float(p_vtx.position[1], h);
- h = hash_djb2_one_float(p_vtx.position[2], h);
- h = hash_djb2_one_float(p_vtx.uv[0], h);
- h = hash_djb2_one_float(p_vtx.uv[1], h);
- h = hash_djb2_one_float(p_vtx.normal_xy[0], h);
- h = hash_djb2_one_float(p_vtx.normal_xy[1], h);
- h = hash_djb2_one_float(p_vtx.normal_z, h);
- return h;
+ uint32_t h = hash_murmur3_one_float(p_vtx.position[0]);
+ h = hash_murmur3_one_float(p_vtx.position[1], h);
+ h = hash_murmur3_one_float(p_vtx.position[2], h);
+ h = hash_murmur3_one_float(p_vtx.uv[0], h);
+ h = hash_murmur3_one_float(p_vtx.uv[1], h);
+ h = hash_murmur3_one_float(p_vtx.normal_xy[0], h);
+ h = hash_murmur3_one_float(p_vtx.normal_xy[1], h);
+ h = hash_murmur3_one_float(p_vtx.normal_z, h);
+ return hash_fmix32(h);
}
};
diff --git a/modules/minimp3/audio_stream_mp3.cpp b/modules/minimp3/audio_stream_mp3.cpp
index b5b51403f7..c37bea519f 100644
--- a/modules/minimp3/audio_stream_mp3.cpp
+++ b/modules/minimp3/audio_stream_mp3.cpp
@@ -38,7 +38,9 @@
#include "core/io/file_access.h"
int AudioStreamPlaybackMP3::_mix_internal(AudioFrame *p_buffer, int p_frames) {
- ERR_FAIL_COND_V(!active, 0);
+ if (!active) {
+ return 0;
+ }
int todo = p_frames;
diff --git a/modules/mono/class_db_api_json.cpp b/modules/mono/class_db_api_json.cpp
index 3afde1e8d3..c4547b4323 100644
--- a/modules/mono/class_db_api_json.cpp
+++ b/modules/mono/class_db_api_json.cpp
@@ -124,7 +124,7 @@ void class_db_api_to_json(const String &p_output_file, ClassDB::APIType p_api) {
List<StringName> snames;
- for (const KeyValue<StringName, int> &F : t->constant_map) {
+ for (const KeyValue<StringName, int64_t> &F : t->constant_map) {
snames.push_back(F.key);
}
diff --git a/modules/mono/csharp_script.cpp b/modules/mono/csharp_script.cpp
index bee4e0e1fb..622838b308 100644
--- a/modules/mono/csharp_script.cpp
+++ b/modules/mono/csharp_script.cpp
@@ -2807,7 +2807,8 @@ int CSharpScript::_try_get_member_export_hint(IMonoClassMember *p_member, Manage
GD_MONO_ASSERT_THREAD_ATTACHED;
if (p_variant_type == Variant::INT && p_type.type_encoding == MONO_TYPE_VALUETYPE && mono_class_is_enum(p_type.type_class->get_mono_ptr())) {
- r_hint = PROPERTY_HINT_ENUM;
+ MonoReflectionType *reftype = mono_type_get_object(mono_domain_get(), p_type.type_class->get_mono_type());
+ r_hint = GDMonoUtils::Marshal::type_has_flags_attribute(reftype) ? PROPERTY_HINT_FLAGS : PROPERTY_HINT_ENUM;
Vector<MonoClassField *> fields = p_type.type_class->get_enum_fields();
@@ -2844,7 +2845,8 @@ int CSharpScript::_try_get_member_export_hint(IMonoClassMember *p_member, Manage
uint64_t val = GDMonoUtils::unbox_enum_value(val_obj, enum_basetype, r_error);
ERR_FAIL_COND_V_MSG(r_error, -1, "Failed to unbox '" + enum_field_name + "' constant enum value.");
- if (val != (unsigned int)i) {
+ unsigned int expected_val = r_hint == PROPERTY_HINT_FLAGS ? 1 << i : i;
+ if (val != expected_val) {
uses_default_values = false;
}
diff --git a/modules/mono/editor/bindings_generator.cpp b/modules/mono/editor/bindings_generator.cpp
index e602396ede..9d3d481068 100644
--- a/modules/mono/editor/bindings_generator.cpp
+++ b/modules/mono/editor/bindings_generator.cpp
@@ -954,7 +954,7 @@ void BindingsGenerator::_generate_global_constants(StringBuilder &p_output) {
}
}
- p_output.append(MEMBER_BEGIN "public const int ");
+ p_output.append(MEMBER_BEGIN "public const long ");
p_output.append(iconstant.proxy_name);
p_output.append(" = ");
p_output.append(itos(iconstant.value));
@@ -992,6 +992,7 @@ void BindingsGenerator::_generate_global_constants(StringBuilder &p_output) {
p_output.append("\n" INDENT1 "public enum ");
p_output.append(enum_proxy_name);
+ p_output.append(" : long");
p_output.append("\n" INDENT1 OPEN_BLOCK);
const ConstantInterface &last = ienum.constants.back()->get();
@@ -1417,7 +1418,7 @@ Error BindingsGenerator::_generate_cs_type(const TypeInterface &itype, const Str
}
}
- output.append(MEMBER_BEGIN "public const int ");
+ output.append(MEMBER_BEGIN "public const long ");
output.append(iconstant.proxy_name);
output.append(" = ");
output.append(itos(iconstant.value));
@@ -1435,6 +1436,7 @@ Error BindingsGenerator::_generate_cs_type(const TypeInterface &itype, const Str
output.append(MEMBER_BEGIN "public enum ");
output.append(ienum.cname.operator String());
+ output.append(" : long");
output.append(MEMBER_BEGIN OPEN_BLOCK);
const ConstantInterface &last = ienum.constants.back()->get();
@@ -1652,7 +1654,9 @@ Error BindingsGenerator::_generate_cs_property(const BindingsGenerator::TypeInte
p_output.append("static ");
}
- p_output.append(prop_itype->cs_type);
+ String prop_cs_type = prop_itype->cs_type + _get_generic_type_parameters(*prop_itype, proptype_name.generic_type_parameters);
+
+ p_output.append(prop_cs_type);
p_output.append(" ");
p_output.append(p_iprop.proxy_name);
p_output.append("\n" INDENT2 OPEN_BLOCK);
@@ -1762,6 +1766,8 @@ Error BindingsGenerator::_generate_cs_method(const BindingsGenerator::TypeInterf
"Invalid default value for parameter '" + iarg.name + "' of method '" + p_itype.name + "." + p_imethod.name + "'.");
}
+ String arg_cs_type = arg_type->cs_type + _get_generic_type_parameters(*arg_type, iarg.type.generic_type_parameters);
+
// Add the current arguments to the signature
// If the argument has a default value which is not a constant, we will make it Nullable
{
@@ -1773,7 +1779,7 @@ Error BindingsGenerator::_generate_cs_method(const BindingsGenerator::TypeInterf
arguments_sig += "Nullable<";
}
- arguments_sig += arg_type->cs_type;
+ arguments_sig += arg_cs_type;
if (iarg.def_param_mode == ArgumentInterface::NULLABLE_VAL) {
arguments_sig += "> ";
@@ -1800,7 +1806,7 @@ Error BindingsGenerator::_generate_cs_method(const BindingsGenerator::TypeInterf
String arg_in = iarg.name;
arg_in += "_in";
- cs_in_statements += arg_type->cs_type;
+ cs_in_statements += arg_cs_type;
cs_in_statements += " ";
cs_in_statements += arg_in;
cs_in_statements += " = ";
@@ -1820,7 +1826,7 @@ Error BindingsGenerator::_generate_cs_method(const BindingsGenerator::TypeInterf
cs_in_statements += " : ";
}
- String cs_type = arg_type->cs_type;
+ String cs_type = arg_cs_type;
if (cs_type.ends_with("[]")) {
cs_type = cs_type.substr(0, cs_type.length() - 2);
}
@@ -1837,7 +1843,7 @@ Error BindingsGenerator::_generate_cs_method(const BindingsGenerator::TypeInterf
// Escape < and > in the attribute default value
String param_def_arg = def_arg.replacen("<", "&lt;").replacen(">", "&gt;");
- default_args_doc.append(MEMBER_BEGIN "/// <param name=\"" + param_tag_name + "\">If the parameter is null, then the default value is " + param_def_arg + "</param>");
+ default_args_doc.append(MEMBER_BEGIN "/// <param name=\"" + param_tag_name + "\">If the parameter is null, then the default value is <c>" + param_def_arg + "</c>.</param>");
} else {
icall_params += arg_type->cs_in.is_empty() ? iarg.name : sformat(arg_type->cs_in, iarg.name);
}
@@ -1903,7 +1909,9 @@ Error BindingsGenerator::_generate_cs_method(const BindingsGenerator::TypeInterf
p_output.append("virtual ");
}
- p_output.append(return_type->cs_type + " ");
+ String return_cs_type = return_type->cs_type + _get_generic_type_parameters(*return_type, p_imethod.return_type.generic_type_parameters);
+
+ p_output.append(return_cs_type + " ");
p_output.append(p_imethod.proxy_name + "(");
p_output.append(arguments_sig + ")\n" OPEN_BLOCK_L2);
@@ -1914,7 +1922,7 @@ Error BindingsGenerator::_generate_cs_method(const BindingsGenerator::TypeInterf
p_output.append("return;\n" CLOSE_BLOCK_L2);
} else {
p_output.append("return default(");
- p_output.append(return_type->cs_type);
+ p_output.append(return_cs_type);
p_output.append(");\n" CLOSE_BLOCK_L2);
}
@@ -1956,7 +1964,7 @@ Error BindingsGenerator::_generate_cs_method(const BindingsGenerator::TypeInterf
} else if (return_type->cs_out.is_empty()) {
p_output.append("return " + im_call + "(" + icall_params + ");\n");
} else {
- p_output.append(sformat(return_type->cs_out, im_call, icall_params, return_type->cs_type, return_type->im_type_out));
+ p_output.append(sformat(return_type->cs_out, im_call, icall_params, return_cs_type, return_type->im_type_out));
p_output.append("\n");
}
@@ -2517,6 +2525,42 @@ const BindingsGenerator::TypeInterface *BindingsGenerator::_get_type_or_placehol
return &placeholder_types.insert(placeholder.cname, placeholder)->value;
}
+const String BindingsGenerator::_get_generic_type_parameters(const TypeInterface &p_itype, const List<TypeReference> &p_generic_type_parameters) {
+ if (p_generic_type_parameters.is_empty()) {
+ return "";
+ }
+
+ ERR_FAIL_COND_V_MSG(p_itype.type_parameter_count != p_generic_type_parameters.size(), "",
+ "Generic type parameter count mismatch for type '" + p_itype.name + "'." +
+ " Found " + itos(p_generic_type_parameters.size()) + ", but requires " +
+ itos(p_itype.type_parameter_count) + ".");
+
+ int i = 0;
+ String params = "<";
+ for (const TypeReference &param_type : p_generic_type_parameters) {
+ const TypeInterface *param_itype = _get_type_or_placeholder(param_type);
+
+ ERR_FAIL_COND_V_MSG(param_itype->is_singleton, "",
+ "Generic type parameter is a singleton: '" + param_itype->name + "'.");
+
+ if (p_itype.api_type == ClassDB::API_CORE) {
+ ERR_FAIL_COND_V_MSG(param_itype->api_type == ClassDB::API_EDITOR, "",
+ "Generic type parameter '" + param_itype->name + "' has type from the editor API." +
+ " Core API cannot have dependencies on the editor API.");
+ }
+
+ params += param_itype->cs_type;
+ if (i < p_generic_type_parameters.size() - 1) {
+ params += ", ";
+ }
+
+ i++;
+ }
+ params += ">";
+
+ return params;
+}
+
StringName BindingsGenerator::_get_int_type_name_from_meta(GodotTypeInfo::Metadata p_meta) {
switch (p_meta) {
case GodotTypeInfo::METADATA_INT_IS_INT8:
@@ -2832,6 +2876,9 @@ bool BindingsGenerator::_populate_object_type_interfaces() {
ERR_FAIL_COND_V_MSG(bad_reference_hint, false,
String() + "Return type is reference but hint is not '" _STR(PROPERTY_HINT_RESOURCE_TYPE) "'." +
" Are you returning a reference type by pointer? Method: '" + itype.name + "." + imethod.name + "'.");
+ } else if (return_info.type == Variant::ARRAY && return_info.hint == PROPERTY_HINT_ARRAY_TYPE) {
+ imethod.return_type.cname = Variant::get_type_name(return_info.type);
+ imethod.return_type.generic_type_parameters.push_back(TypeReference(return_info.hint_string));
} else if (return_info.hint == PROPERTY_HINT_RESOURCE_TYPE) {
imethod.return_type.cname = return_info.hint_string;
} else if (return_info.type == Variant::NIL && return_info.usage & PROPERTY_USAGE_NIL_IS_VARIANT) {
@@ -2861,6 +2908,9 @@ bool BindingsGenerator::_populate_object_type_interfaces() {
iarg.type.is_enum = true;
} else if (arginfo.class_name != StringName()) {
iarg.type.cname = arginfo.class_name;
+ } else if (arginfo.type == Variant::ARRAY && arginfo.hint == PROPERTY_HINT_ARRAY_TYPE) {
+ iarg.type.cname = Variant::get_type_name(arginfo.type);
+ iarg.type.generic_type_parameters.push_back(TypeReference(arginfo.hint_string));
} else if (arginfo.hint == PROPERTY_HINT_RESOURCE_TYPE) {
iarg.type.cname = arginfo.hint_string;
} else if (arginfo.type == Variant::NIL) {
@@ -2966,6 +3016,9 @@ bool BindingsGenerator::_populate_object_type_interfaces() {
iarg.type.is_enum = true;
} else if (arginfo.class_name != StringName()) {
iarg.type.cname = arginfo.class_name;
+ } else if (arginfo.type == Variant::ARRAY && arginfo.hint == PROPERTY_HINT_ARRAY_TYPE) {
+ iarg.type.cname = Variant::get_type_name(arginfo.type);
+ iarg.type.generic_type_parameters.push_back(TypeReference(arginfo.hint_string));
} else if (arginfo.hint == PROPERTY_HINT_RESOURCE_TYPE) {
iarg.type.cname = arginfo.hint_string;
} else if (arginfo.type == Variant::NIL) {
@@ -3037,7 +3090,7 @@ bool BindingsGenerator::_populate_object_type_interfaces() {
const List<StringName> &enum_constants = E.value;
for (const StringName &constant_cname : enum_constants) {
String constant_name = constant_cname.operator String();
- int *value = class_info->constant_map.getptr(constant_cname);
+ int64_t *value = class_info->constant_map.getptr(constant_cname);
ERR_FAIL_NULL_V(value, false);
constants.erase(constant_name);
@@ -3072,7 +3125,7 @@ bool BindingsGenerator::_populate_object_type_interfaces() {
}
for (const String &constant_name : constants) {
- int *value = class_info->constant_map.getptr(StringName(constant_name));
+ int64_t *value = class_info->constant_map.getptr(StringName(constant_name));
ERR_FAIL_NULL_V(value, false);
ConstantInterface iconstant(constant_name, snake_to_pascal_case(constant_name, true), *value);
@@ -3549,13 +3602,14 @@ void BindingsGenerator::_populate_builtin_type_interfaces() {
itype.name = "Array";
itype.cname = itype.name;
itype.proxy_name = itype.name;
+ itype.type_parameter_count = 1;
itype.c_out = "\treturn memnew(Array(%1));\n";
itype.c_type = itype.name;
itype.c_type_in = itype.c_type + "*";
itype.c_type_out = itype.c_type + "*";
itype.cs_type = BINDINGS_NAMESPACE_COLLECTIONS "." + itype.proxy_name;
itype.cs_in = "%0." CS_SMETHOD_GETINSTANCE "()";
- itype.cs_out = "return new " + itype.cs_type + "(%0(%1));";
+ itype.cs_out = "return new %2(%0(%1));";
itype.im_type_in = "IntPtr";
itype.im_type_out = "IntPtr";
builtin_types.insert(itype.cname, itype);
@@ -3565,13 +3619,14 @@ void BindingsGenerator::_populate_builtin_type_interfaces() {
itype.name = "Dictionary";
itype.cname = itype.name;
itype.proxy_name = itype.name;
+ itype.type_parameter_count = 2;
itype.c_out = "\treturn memnew(Dictionary(%1));\n";
itype.c_type = itype.name;
itype.c_type_in = itype.c_type + "*";
itype.c_type_out = itype.c_type + "*";
itype.cs_type = BINDINGS_NAMESPACE_COLLECTIONS "." + itype.proxy_name;
itype.cs_in = "%0." CS_SMETHOD_GETINSTANCE "()";
- itype.cs_out = "return new " + itype.cs_type + "(%0(%1));";
+ itype.cs_out = "return new %2(%0(%1));";
itype.im_type_in = "IntPtr";
itype.im_type_out = "IntPtr";
builtin_types.insert(itype.cname, itype);
@@ -3613,7 +3668,7 @@ void BindingsGenerator::_populate_global_constants() {
}
}
- int constant_value = CoreConstants::get_global_constant_value(i);
+ int64_t constant_value = CoreConstants::get_global_constant_value(i);
StringName enum_name = CoreConstants::get_global_constant_enum(i);
ConstantInterface iconstant(constant_name, snake_to_pascal_case(constant_name, true), constant_value);
diff --git a/modules/mono/editor/bindings_generator.h b/modules/mono/editor/bindings_generator.h
index fb7e0e5a81..70c4f12146 100644
--- a/modules/mono/editor/bindings_generator.h
+++ b/modules/mono/editor/bindings_generator.h
@@ -45,12 +45,12 @@ class BindingsGenerator {
struct ConstantInterface {
String name;
String proxy_name;
- int value = 0;
+ int64_t value = 0;
const DocData::ConstantDoc *const_doc;
ConstantInterface() {}
- ConstantInterface(const String &p_name, const String &p_proxy_name, int p_value) {
+ ConstantInterface(const String &p_name, const String &p_proxy_name, int64_t p_value) {
name = p_name;
proxy_name = p_proxy_name;
value = p_value;
@@ -87,6 +87,8 @@ class BindingsGenerator {
StringName cname;
bool is_enum = false;
+ List<TypeReference> generic_type_parameters;
+
TypeReference() {}
TypeReference(const StringName &p_cname) :
@@ -206,6 +208,8 @@ class BindingsGenerator {
String name;
StringName cname;
+ int type_parameter_count;
+
/**
* Identifier name of the base class.
*/
@@ -679,6 +683,8 @@ class BindingsGenerator {
const TypeInterface *_get_type_or_null(const TypeReference &p_typeref);
const TypeInterface *_get_type_or_placeholder(const TypeReference &p_typeref);
+ const String _get_generic_type_parameters(const TypeInterface &p_itype, const List<TypeReference> &p_generic_type_parameters);
+
StringName _get_int_type_name_from_meta(GodotTypeInfo::Metadata p_meta);
StringName _get_float_type_name_from_meta(GodotTypeInfo::Metadata p_meta);
diff --git a/modules/mono/editor/script_templates/EditorScenePostImport/basic_import_script.cs b/modules/mono/editor/script_templates/EditorScenePostImport/basic_import_script.cs
new file mode 100644
index 0000000000..9e1b7ef580
--- /dev/null
+++ b/modules/mono/editor/script_templates/EditorScenePostImport/basic_import_script.cs
@@ -0,0 +1,16 @@
+// meta-description: Basic import script template
+
+#if TOOLS
+using _BINDINGS_NAMESPACE_;
+using System;
+
+[Tool]
+public partial class _CLASS_ : _BASE_
+{
+ public override Godot.Object _PostImport(Node scene)
+ {
+ // Modify the contents of the scene upon import.
+ return scene; // Return the modified root node when you're done.
+ }
+}
+#endif
diff --git a/modules/mono/editor/script_templates/EditorScenePostImport/no_comments.cs b/modules/mono/editor/script_templates/EditorScenePostImport/no_comments.cs
new file mode 100644
index 0000000000..bf2c9434e4
--- /dev/null
+++ b/modules/mono/editor/script_templates/EditorScenePostImport/no_comments.cs
@@ -0,0 +1,15 @@
+// meta-description: Basic import script template (no comments)
+
+#if TOOLS
+using _BINDINGS_NAMESPACE_;
+using System;
+
+[Tool]
+public partial class _CLASS_ : _BASE_
+{
+ public override Godot.Object _PostImport(Node scene)
+ {
+ return scene;
+ }
+}
+#endif
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/AssemblyHasScriptsAttribute.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/AssemblyHasScriptsAttribute.cs
index ef135da51a..2febf37f05 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/AssemblyHasScriptsAttribute.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/AssemblyHasScriptsAttribute.cs
@@ -2,17 +2,27 @@ using System;
namespace Godot
{
+ /// <summary>
+ /// An attribute that determines if an assembly has scripts. If so, what types of scripts the assembly has.
+ /// </summary>
[AttributeUsage(AttributeTargets.Assembly)]
public class AssemblyHasScriptsAttribute : Attribute
{
private readonly bool requiresLookup;
private readonly System.Type[] scriptTypes;
+ /// <summary>
+ /// Constructs a new AssemblyHasScriptsAttribute instance.
+ /// </summary>
public AssemblyHasScriptsAttribute()
{
requiresLookup = true;
}
+ /// <summary>
+ /// Constructs a new AssemblyHasScriptsAttribute instance.
+ /// </summary>
+ /// <param name="scriptTypes">The specified type(s) of scripts.</param>
public AssemblyHasScriptsAttribute(System.Type[] scriptTypes)
{
requiresLookup = false;
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/DisableGodotGeneratorsAttribute.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/DisableGodotGeneratorsAttribute.cs
index e93bc89811..0b00878e8c 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/DisableGodotGeneratorsAttribute.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/DisableGodotGeneratorsAttribute.cs
@@ -2,6 +2,9 @@ using System;
namespace Godot
{
+ /// <summary>
+ /// An attribute that disables Godot Generators.
+ /// </summary>
[AttributeUsage(AttributeTargets.Class)]
public class DisableGodotGeneratorsAttribute : Attribute { }
}
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/ExportAttribute.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/ExportAttribute.cs
index 6adf044886..46eb128d37 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/ExportAttribute.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/ExportAttribute.cs
@@ -2,12 +2,20 @@ using System;
namespace Godot
{
+ /// <summary>
+ /// An attribute used to export objects.
+ /// </summary>
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)]
public class ExportAttribute : Attribute
{
private PropertyHint hint;
private string hintString;
+ /// <summary>
+ /// Constructs a new ExportAttribute Instance.
+ /// </summary>
+ /// <param name="hint">A hint to the exported object.</param>
+ /// <param name="hintString">A string representing the exported object.</param>
public ExportAttribute(PropertyHint hint = PropertyHint.None, string hintString = "")
{
this.hint = hint;
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/GodotMethodAttribute.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/GodotMethodAttribute.cs
index 55848769d5..8d4ff0fdb7 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/GodotMethodAttribute.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/GodotMethodAttribute.cs
@@ -2,6 +2,9 @@ using System;
namespace Godot
{
+ /// <summary>
+ /// An attribute for a method.
+ /// </summary>
[AttributeUsage(AttributeTargets.Method)]
internal class GodotMethodAttribute : Attribute
{
@@ -9,6 +12,10 @@ namespace Godot
public string MethodName { get { return methodName; } }
+ /// <summary>
+ /// Constructs a new GodotMethodAttribute instance.
+ /// </summary>
+ /// <param name="methodName">The name of the method.</param>
public GodotMethodAttribute(string methodName)
{
this.methodName = methodName;
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/RPCAttributes.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/RPCAttributes.cs
index b8b9bc660c..f0d37c344d 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/RPCAttributes.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/RPCAttributes.cs
@@ -2,9 +2,15 @@ using System;
namespace Godot
{
+ /// <summary>
+ /// Constructs a new AnyPeerAttribute instance. Members with the AnyPeerAttribute are given authority over their own player.
+ /// </summary>
[AttributeUsage(AttributeTargets.Method)]
public class AnyPeerAttribute : Attribute { }
+ /// <summary>
+ /// Constructs a new AuthorityAttribute instance. Members with the AuthorityAttribute are given authority over the game.
+ /// </summary>
[AttributeUsage(AttributeTargets.Method)]
public class AuthorityAttribute : Attribute { }
}
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/ScriptPathAttribute.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/ScriptPathAttribute.cs
index 12eb1035c3..3ebb6612de 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/ScriptPathAttribute.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Attributes/ScriptPathAttribute.cs
@@ -2,11 +2,18 @@ using System;
namespace Godot
{
+ /// <summary>
+ /// An attribute that contains the path to the object's script.
+ /// </summary>
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
public class ScriptPathAttribute : Attribute
{
private string path;
+ /// <summary>
+ /// Constructs a new ScriptPathAttribute instance.
+ /// </summary>
+ /// <param name="path">The file path to the script</param>
public ScriptPathAttribute(string path)
{
this.path = path;
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/Dispatcher.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Dispatcher.cs
index 072e0f20ff..6475237002 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/Dispatcher.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Dispatcher.cs
@@ -4,9 +4,16 @@ namespace Godot
{
public static class Dispatcher
{
+ /// <summary>
+ /// Implements an external instance of GodotTaskScheduler.
+ /// </summary>
+ /// <returns>A GodotTaskScheduler instance.</returns>
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern GodotTaskScheduler godot_icall_DefaultGodotTaskScheduler();
+ /// <summary>
+ /// Initializes the synchronization context as the context of the GodotTaskScheduler.
+ /// </summary>
public static GodotSynchronizationContext SynchronizationContext =>
godot_icall_DefaultGodotTaskScheduler().Context;
}
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/GodotSynchronizationContext.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/GodotSynchronizationContext.cs
index c01c926e82..1b599beab5 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/GodotSynchronizationContext.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/GodotSynchronizationContext.cs
@@ -14,6 +14,9 @@ namespace Godot
_queue.Add(new KeyValuePair<SendOrPostCallback, object>(d, state));
}
+ /// <summary>
+ /// Calls the Key method on each workItem object in the _queue to activate their callbacks.
+ /// </summary>
public void ExecutePendingContinuations()
{
while (_queue.TryTake(out var workItem))
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/GodotTaskScheduler.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/GodotTaskScheduler.cs
index 8eaeea50dc..408bed71b2 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/GodotTaskScheduler.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/GodotTaskScheduler.cs
@@ -6,11 +6,25 @@ using System.Threading.Tasks;
namespace Godot
{
+ /// <summary>
+ /// GodotTaskScheduler contains a linked list of tasks to perform as a queue. Methods
+ /// within the class are used to control the queue and perform the contained tasks.
+ /// </summary>
public class GodotTaskScheduler : TaskScheduler
{
+ /// <summary>
+ /// The current synchronization context.
+ /// </summary>
internal GodotSynchronizationContext Context { get; }
+
+ /// <summary>
+ /// The queue of tasks for the task scheduler.
+ /// </summary>
private readonly LinkedList<Task> _tasks = new LinkedList<Task>();
+ /// <summary>
+ /// Constructs a new GodotTaskScheduler instance.
+ /// </summary>
public GodotTaskScheduler()
{
Context = new GodotSynchronizationContext();
@@ -53,12 +67,19 @@ namespace Godot
}
}
+ /// <summary>
+ /// Executes all queued tasks and pending tasks from the current context.
+ /// </summary>
public void Activate()
{
ExecuteQueuedTasks();
Context.ExecutePendingContinuations();
}
+ /// <summary>
+ /// Loops through and attempts to execute each task in _tasks.
+ /// </summary>
+ /// <exception cref="InvalidOperationException"></exception>
private void ExecuteQueuedTasks()
{
while (true)
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/Interfaces/IAwaitable.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Interfaces/IAwaitable.cs
index 0397957d00..e747e03c1e 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/Interfaces/IAwaitable.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Interfaces/IAwaitable.cs
@@ -1,10 +1,17 @@
namespace Godot
{
+ /// <summary>
+ /// An interface that requires a GetAwaiter() method to get a reference to the Awaiter.
+ /// </summary>
public interface IAwaitable
{
IAwaiter GetAwaiter();
}
+ /// <summary>
+ /// A templated interface that requires a GetAwaiter() method to get a reference to the Awaiter.
+ /// </summary>
+ /// <typeparam name="TResult">A reference to the result to be passed out.</typeparam>
public interface IAwaitable<out TResult>
{
IAwaiter<TResult> GetAwaiter();
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/Interfaces/IAwaiter.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Interfaces/IAwaiter.cs
index d3be9d781c..dec225eb29 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/Interfaces/IAwaiter.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Interfaces/IAwaiter.cs
@@ -2,6 +2,9 @@ using System.Runtime.CompilerServices;
namespace Godot
{
+ /// <summary>
+ /// An interface that requires a boolean for completion status and a method that gets the result of completion.
+ /// </summary>
public interface IAwaiter : INotifyCompletion
{
bool IsCompleted { get; }
@@ -9,6 +12,10 @@ namespace Godot
void GetResult();
}
+ /// <summary>
+ /// A templated interface that requires a boolean for completion status and a method that gets the result of completion and returns it.
+ /// </summary>
+ /// <typeparam name="TResult">A reference to the result to be passed out.</typeparam>
public interface IAwaiter<out TResult> : INotifyCompletion
{
bool IsCompleted { get; }
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/Interfaces/ISerializationListener.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Interfaces/ISerializationListener.cs
index c3fa2f3e82..90b4d1b8d3 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/Interfaces/ISerializationListener.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Interfaces/ISerializationListener.cs
@@ -1,5 +1,8 @@
namespace Godot
{
+ /// <summary>
+ /// An interface that requires methods for before and after serialization.
+ /// </summary>
public interface ISerializationListener
{
void OnBeforeSerialize();
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/MarshalUtils.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/MarshalUtils.cs
index ee4d0eed08..50ae2eb112 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/MarshalUtils.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/MarshalUtils.cs
@@ -80,6 +80,11 @@ namespace Godot
private static bool TypeIsGenericIDictionary(Type type) => type.GetGenericTypeDefinition() == typeof(IDictionary<,>);
/// <summary>
+ /// Returns <see langword="true"/> if the <see cref="FlagsAttribute"/> is applied to the given type.
+ /// </summary>
+ private static bool TypeHasFlagsAttribute(Type type) => type.IsDefined(typeof(FlagsAttribute), false);
+
+ /// <summary>
/// Returns the generic type definition of <paramref name="type"/>.
/// </summary>
/// <exception cref="InvalidOperationException">
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/Mathf.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Mathf.cs
index ce213da6a7..2b820070d6 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/Mathf.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Mathf.cs
@@ -276,10 +276,14 @@ namespace Godot
/// Returns a normalized value considering the given range.
/// This is the opposite of <see cref="Lerp(real_t, real_t, real_t)"/>.
/// </summary>
- /// <param name="from">The interpolated value.</param>
+ /// <param name="from">The start value for interpolation.</param>
/// <param name="to">The destination value for interpolation.</param>
- /// <param name="weight">A value on the range of 0.0 to 1.0, representing the amount of interpolation.</param>
- /// <returns>The resulting value of the inverse interpolation.</returns>
+ /// <param name="weight">The interpolated value.</param>
+ /// <returns>
+ /// The resulting value of the inverse interpolation.
+ /// The returned value will be between 0.0 and 1.0 if <paramref name="weight"/> is
+ /// between <paramref name="from"/> and <paramref name="to"/> (inclusive).
+ /// </returns>
public static real_t InverseLerp(real_t from, real_t to, real_t weight)
{
return (weight - from) / (to - from);
@@ -516,6 +520,21 @@ namespace Godot
}
/// <summary>
+ /// Maps a <paramref name="value"/> from [<paramref name="inFrom"/>, <paramref name="inTo"/>]
+ /// to [<paramref name="outFrom"/>, <paramref name="outTo"/>].
+ /// </summary>
+ /// <param name="value">The value to map.</param>
+ /// <param name="inFrom">The start value for the input interpolation.</param>
+ /// <param name="inTo">The destination value for the input interpolation.</param>
+ /// <param name="outFrom">The start value for the output interpolation.</param>
+ /// <param name="outTo">The destination value for the output interpolation.</param>
+ /// <returns>The resulting mapped value mapped.</returns>
+ public static real_t RangeLerp(real_t value, real_t inFrom, real_t inTo, real_t outFrom, real_t outTo)
+ {
+ return Lerp(outFrom, outTo, InverseLerp(inFrom, inTo, value));
+ }
+
+ /// <summary>
/// Rounds <paramref name="s"/> to the nearest whole number,
/// with halfway cases rounded towards the nearest multiple of two.
/// </summary>
diff --git a/modules/mono/managed_callable.cpp b/modules/mono/managed_callable.cpp
index 4f7783b765..c159bb9eea 100644
--- a/modules/mono/managed_callable.cpp
+++ b/modules/mono/managed_callable.cpp
@@ -66,9 +66,8 @@ bool ManagedCallable::compare_less(const CallableCustom *p_a, const CallableCust
}
uint32_t ManagedCallable::hash() const {
- // hmm
uint32_t hash = delegate_invoke->get_name().hash();
- return hash_djb2_one_64(delegate_handle.handle, hash);
+ return hash_murmur3_one_64(delegate_handle.handle, hash);
}
String ManagedCallable::get_as_text() const {
diff --git a/modules/mono/mono_gd/gd_mono_cache.cpp b/modules/mono/mono_gd/gd_mono_cache.cpp
index d8fd244067..44a8e26b8f 100644
--- a/modules/mono/mono_gd/gd_mono_cache.cpp
+++ b/modules/mono/mono_gd/gd_mono_cache.cpp
@@ -176,6 +176,7 @@ void CachedData::clear_godot_api_cache() {
methodthunk_MarshalUtils_TypeIsGenericIEnumerable.nullify();
methodthunk_MarshalUtils_TypeIsGenericICollection.nullify();
methodthunk_MarshalUtils_TypeIsGenericIDictionary.nullify();
+ methodthunk_MarshalUtils_TypeHasFlagsAttribute.nullify();
methodthunk_MarshalUtils_GetGenericTypeDefinition.nullify();
@@ -300,6 +301,7 @@ void update_godot_api_cache() {
CACHE_METHOD_THUNK_AND_CHECK(MarshalUtils, TypeIsGenericIEnumerable, GODOT_API_CLASS(MarshalUtils)->get_method("TypeIsGenericIEnumerable", 1));
CACHE_METHOD_THUNK_AND_CHECK(MarshalUtils, TypeIsGenericICollection, GODOT_API_CLASS(MarshalUtils)->get_method("TypeIsGenericICollection", 1));
CACHE_METHOD_THUNK_AND_CHECK(MarshalUtils, TypeIsGenericIDictionary, GODOT_API_CLASS(MarshalUtils)->get_method("TypeIsGenericIDictionary", 1));
+ CACHE_METHOD_THUNK_AND_CHECK(MarshalUtils, TypeHasFlagsAttribute, GODOT_API_CLASS(MarshalUtils)->get_method("TypeHasFlagsAttribute", 1));
CACHE_METHOD_THUNK_AND_CHECK(MarshalUtils, GetGenericTypeDefinition, GODOT_API_CLASS(MarshalUtils)->get_method("GetGenericTypeDefinition", 2));
diff --git a/modules/mono/mono_gd/gd_mono_cache.h b/modules/mono/mono_gd/gd_mono_cache.h
index 4000342c94..92136e1f41 100644
--- a/modules/mono/mono_gd/gd_mono_cache.h
+++ b/modules/mono/mono_gd/gd_mono_cache.h
@@ -147,6 +147,7 @@ struct CachedData {
GDMonoMethodThunkR<MonoBoolean, MonoReflectionType *> methodthunk_MarshalUtils_TypeIsGenericIEnumerable;
GDMonoMethodThunkR<MonoBoolean, MonoReflectionType *> methodthunk_MarshalUtils_TypeIsGenericICollection;
GDMonoMethodThunkR<MonoBoolean, MonoReflectionType *> methodthunk_MarshalUtils_TypeIsGenericIDictionary;
+ GDMonoMethodThunkR<MonoBoolean, MonoReflectionType *> methodthunk_MarshalUtils_TypeHasFlagsAttribute;
GDMonoMethodThunk<MonoReflectionType *, MonoReflectionType **> methodthunk_MarshalUtils_GetGenericTypeDefinition;
diff --git a/modules/mono/mono_gd/gd_mono_utils.cpp b/modules/mono/mono_gd/gd_mono_utils.cpp
index 25678be624..1983d6ebe2 100644
--- a/modules/mono/mono_gd/gd_mono_utils.cpp
+++ b/modules/mono/mono_gd/gd_mono_utils.cpp
@@ -614,6 +614,14 @@ bool type_is_generic_idictionary(MonoReflectionType *p_reftype) {
return (bool)res;
}
+bool type_has_flags_attribute(MonoReflectionType *p_reftype) {
+ NO_GLUE_RET(false);
+ MonoException *exc = nullptr;
+ MonoBoolean res = CACHED_METHOD_THUNK(MarshalUtils, TypeHasFlagsAttribute).invoke(p_reftype, &exc);
+ UNHANDLED_EXCEPTION(exc);
+ return (bool)res;
+}
+
void get_generic_type_definition(MonoReflectionType *p_reftype, MonoReflectionType **r_generic_reftype) {
MonoException *exc = nullptr;
CACHED_METHOD_THUNK(MarshalUtils, GetGenericTypeDefinition).invoke(p_reftype, r_generic_reftype, &exc);
diff --git a/modules/mono/mono_gd/gd_mono_utils.h b/modules/mono/mono_gd/gd_mono_utils.h
index 4c2c2c93c2..246a1cd31e 100644
--- a/modules/mono/mono_gd/gd_mono_utils.h
+++ b/modules/mono/mono_gd/gd_mono_utils.h
@@ -61,6 +61,7 @@ bool type_is_system_generic_dictionary(MonoReflectionType *p_reftype);
bool type_is_generic_ienumerable(MonoReflectionType *p_reftype);
bool type_is_generic_icollection(MonoReflectionType *p_reftype);
bool type_is_generic_idictionary(MonoReflectionType *p_reftype);
+bool type_has_flags_attribute(MonoReflectionType *p_reftype);
void get_generic_type_definition(MonoReflectionType *p_reftype, MonoReflectionType **r_generic_reftype);
diff --git a/modules/mono/signal_awaiter_utils.cpp b/modules/mono/signal_awaiter_utils.cpp
index 315a9c29f6..618e1b58e0 100644
--- a/modules/mono/signal_awaiter_utils.cpp
+++ b/modules/mono/signal_awaiter_utils.cpp
@@ -63,7 +63,7 @@ bool SignalAwaiterCallable::compare_less(const CallableCustom *p_a, const Callab
uint32_t SignalAwaiterCallable::hash() const {
uint32_t hash = signal.hash();
- return hash_djb2_one_64(target_id, hash);
+ return hash_murmur3_one_64(target_id, hash);
}
String SignalAwaiterCallable::get_as_text() const {
@@ -164,7 +164,7 @@ bool EventSignalCallable::compare_less(const CallableCustom *p_a, const Callable
uint32_t EventSignalCallable::hash() const {
uint32_t hash = event_signal->field->get_name().hash();
- return hash_djb2_one_64(owner->get_instance_id(), hash);
+ return hash_murmur3_one_64(owner->get_instance_id(), hash);
}
String EventSignalCallable::get_as_text() const {
diff --git a/modules/mono/utils/string_utils.cpp b/modules/mono/utils/string_utils.cpp
index e6975611d2..64b68b70af 100644
--- a/modules/mono/utils/string_utils.cpp
+++ b/modules/mono/utils/string_utils.cpp
@@ -145,7 +145,7 @@ bool is_csharp_keyword(const String &p_name) {
p_name == "do" || p_name == "double" || p_name == "else" || p_name == "enum" ||
p_name == "event" || p_name == "explicit" || p_name == "extern" || p_name == "false" ||
p_name == "finally" || p_name == "fixed" || p_name == "float" || p_name == "for" ||
- p_name == "forech" || p_name == "goto" || p_name == "if" || p_name == "implicit" ||
+ p_name == "foreach" || p_name == "goto" || p_name == "if" || p_name == "implicit" ||
p_name == "in" || p_name == "int" || p_name == "interface" || p_name == "internal" ||
p_name == "is" || p_name == "lock" || p_name == "long" || p_name == "namespace" ||
p_name == "new" || p_name == "null" || p_name == "object" || p_name == "operator" ||
diff --git a/modules/navigation/godot_navigation_server.cpp b/modules/navigation/godot_navigation_server.cpp
index cc9d05da47..2f8cb6c230 100644
--- a/modules/navigation/godot_navigation_server.cpp
+++ b/modules/navigation/godot_navigation_server.cpp
@@ -198,11 +198,11 @@ real_t GodotNavigationServer::map_get_edge_connection_margin(RID p_map) const {
return map->get_edge_connection_margin();
}
-Vector<Vector3> GodotNavigationServer::map_get_path(RID p_map, Vector3 p_origin, Vector3 p_destination, bool p_optimize, uint32_t p_layers) const {
+Vector<Vector3> GodotNavigationServer::map_get_path(RID p_map, Vector3 p_origin, Vector3 p_destination, bool p_optimize, uint32_t p_navigation_layers) const {
const NavMap *map = map_owner.get_or_null(p_map);
ERR_FAIL_COND_V(map == nullptr, Vector<Vector3>());
- return map->get_path(p_origin, p_destination, p_optimize, p_layers);
+ return map->get_path(p_origin, p_destination, p_optimize, p_navigation_layers);
}
Vector3 GodotNavigationServer::map_get_closest_point_to_segment(RID p_map, const Vector3 &p_from, const Vector3 &p_to, const bool p_use_collision) const {
@@ -309,18 +309,48 @@ COMMAND_2(region_set_transform, RID, p_region, Transform3D, p_transform) {
region->set_transform(p_transform);
}
-COMMAND_2(region_set_layers, RID, p_region, uint32_t, p_layers) {
+COMMAND_2(region_set_enter_cost, RID, p_region, real_t, p_enter_cost) {
NavRegion *region = region_owner.get_or_null(p_region);
ERR_FAIL_COND(region == nullptr);
+ ERR_FAIL_COND(p_enter_cost < 0.0);
- region->set_layers(p_layers);
+ region->set_enter_cost(p_enter_cost);
}
-uint32_t GodotNavigationServer::region_get_layers(RID p_region) const {
+real_t GodotNavigationServer::region_get_enter_cost(RID p_region) const {
NavRegion *region = region_owner.get_or_null(p_region);
ERR_FAIL_COND_V(region == nullptr, 0);
- return region->get_layers();
+ return region->get_enter_cost();
+}
+
+COMMAND_2(region_set_travel_cost, RID, p_region, real_t, p_travel_cost) {
+ NavRegion *region = region_owner.get_or_null(p_region);
+ ERR_FAIL_COND(region == nullptr);
+ ERR_FAIL_COND(p_travel_cost < 0.0);
+
+ region->set_travel_cost(p_travel_cost);
+}
+
+real_t GodotNavigationServer::region_get_travel_cost(RID p_region) const {
+ NavRegion *region = region_owner.get_or_null(p_region);
+ ERR_FAIL_COND_V(region == nullptr, 0);
+
+ return region->get_travel_cost();
+}
+
+COMMAND_2(region_set_navigation_layers, RID, p_region, uint32_t, p_navigation_layers) {
+ NavRegion *region = region_owner.get_or_null(p_region);
+ ERR_FAIL_COND(region == nullptr);
+
+ region->set_navigation_layers(p_navigation_layers);
+}
+
+uint32_t GodotNavigationServer::region_get_navigation_layers(RID p_region) const {
+ NavRegion *region = region_owner.get_or_null(p_region);
+ ERR_FAIL_COND_V(region == nullptr, 0);
+
+ return region->get_navigation_layers();
}
COMMAND_2(region_set_navmesh, RID, p_region, Ref<NavigationMesh>, p_nav_mesh) {
diff --git a/modules/navigation/godot_navigation_server.h b/modules/navigation/godot_navigation_server.h
index 89e7311e51..d931dbaee0 100644
--- a/modules/navigation/godot_navigation_server.h
+++ b/modules/navigation/godot_navigation_server.h
@@ -98,7 +98,7 @@ public:
COMMAND_2(map_set_edge_connection_margin, RID, p_map, real_t, p_connection_margin);
virtual real_t map_get_edge_connection_margin(RID p_map) const override;
- virtual Vector<Vector3> map_get_path(RID p_map, Vector3 p_origin, Vector3 p_destination, bool p_optimize, uint32_t p_layers = 1) const override;
+ virtual Vector<Vector3> map_get_path(RID p_map, Vector3 p_origin, Vector3 p_destination, bool p_optimize, uint32_t p_navigation_layers = 1) const override;
virtual Vector3 map_get_closest_point_to_segment(RID p_map, const Vector3 &p_from, const Vector3 &p_to, const bool p_use_collision = false) const override;
virtual Vector3 map_get_closest_point(RID p_map, const Vector3 &p_point) const override;
@@ -109,10 +109,16 @@ public:
virtual Array map_get_agents(RID p_map) const override;
virtual RID region_create() const override;
+
+ COMMAND_2(region_set_enter_cost, RID, p_region, real_t, p_enter_cost);
+ virtual real_t region_get_enter_cost(RID p_region) const override;
+ COMMAND_2(region_set_travel_cost, RID, p_region, real_t, p_travel_cost);
+ virtual real_t region_get_travel_cost(RID p_region) const override;
+
COMMAND_2(region_set_map, RID, p_region, RID, p_map);
virtual RID region_get_map(RID p_region) const override;
- COMMAND_2(region_set_layers, RID, p_region, uint32_t, p_layers);
- virtual uint32_t region_get_layers(RID p_region) const override;
+ COMMAND_2(region_set_navigation_layers, RID, p_region, uint32_t, p_navigation_layers);
+ virtual uint32_t region_get_navigation_layers(RID p_region) const override;
COMMAND_2(region_set_transform, RID, p_region, Transform3D, p_transform);
COMMAND_2(region_set_navmesh, RID, p_region, Ref<NavigationMesh>, p_nav_mesh);
virtual void region_bake_navmesh(Ref<NavigationMesh> r_mesh, Node *p_node) const override;
diff --git a/modules/navigation/nav_map.cpp b/modules/navigation/nav_map.cpp
index 344475fb37..17d6e0a0a1 100644
--- a/modules/navigation/nav_map.cpp
+++ b/modules/navigation/nav_map.cpp
@@ -65,7 +65,7 @@ gd::PointKey NavMap::get_point_key(const Vector3 &p_pos) const {
return p;
}
-Vector<Vector3> NavMap::get_path(Vector3 p_origin, Vector3 p_destination, bool p_optimize, uint32_t p_layers) const {
+Vector<Vector3> NavMap::get_path(Vector3 p_origin, Vector3 p_destination, bool p_optimize, uint32_t p_navigation_layers) const {
// Find the start poly and the end poly on this map.
const gd::Polygon *begin_poly = nullptr;
const gd::Polygon *end_poly = nullptr;
@@ -78,7 +78,7 @@ Vector<Vector3> NavMap::get_path(Vector3 p_origin, Vector3 p_destination, bool p
const gd::Polygon &p = polygons[i];
// Only consider the polygon if it in a region with compatible layers.
- if ((p_layers & p.owner->get_layers()) == 0) {
+ if ((p_navigation_layers & p.owner->get_navigation_layers()) == 0) {
continue;
}
@@ -140,6 +140,8 @@ Vector<Vector3> NavMap::get_path(Vector3 p_origin, Vector3 p_destination, bool p
float reachable_d = 1e30;
bool is_reachable = true;
+ gd::NavigationPoly *prev_least_cost_poly = nullptr;
+
while (true) {
// Takes the current least_cost_poly neighbors (iterating over its edges) and compute the traveled_distance.
for (size_t i = 0; i < navigation_polys[least_cost_id].poly->edges.size(); i++) {
@@ -152,13 +154,21 @@ Vector<Vector3> NavMap::get_path(Vector3 p_origin, Vector3 p_destination, bool p
const gd::Edge::Connection &connection = edge.connections[connection_index];
// Only consider the connection to another polygon if this polygon is in a region with compatible layers.
- if ((p_layers & connection.polygon->owner->get_layers()) == 0) {
+ if ((p_navigation_layers & connection.polygon->owner->get_navigation_layers()) == 0) {
continue;
}
+ float region_enter_cost = 0.0;
+ float region_travel_cost = least_cost_poly->poly->owner->get_travel_cost();
+
+ if (prev_least_cost_poly != nullptr && !(prev_least_cost_poly->poly->owner->get_self() == least_cost_poly->poly->owner->get_self())) {
+ region_enter_cost = least_cost_poly->poly->owner->get_enter_cost();
+ }
+ prev_least_cost_poly = least_cost_poly;
+
Vector3 pathway[2] = { connection.pathway_start, connection.pathway_end };
const Vector3 new_entry = Geometry3D::get_closest_point_to_segment(least_cost_poly->entry, pathway);
- const float new_distance = least_cost_poly->entry.distance_to(new_entry) + least_cost_poly->traveled_distance;
+ const float new_distance = (least_cost_poly->entry.distance_to(new_entry) * region_travel_cost) + region_enter_cost + least_cost_poly->traveled_distance;
const std::vector<gd::NavigationPoly>::iterator it = std::find(
navigation_polys.begin(),
@@ -238,7 +248,7 @@ Vector<Vector3> NavMap::get_path(Vector3 p_origin, Vector3 p_destination, bool p
for (List<uint32_t>::Element *element = to_visit.front(); element != nullptr; element = element->next()) {
gd::NavigationPoly *np = &navigation_polys[element->get()];
float cost = np->traveled_distance;
- cost += np->entry.distance_to(end_point);
+ cost += (np->entry.distance_to(end_point) * np->poly->owner->get_travel_cost());
if (cost < least_cost) {
least_cost_id = np->self_id;
least_cost = cost;
@@ -249,7 +259,7 @@ Vector<Vector3> NavMap::get_path(Vector3 p_origin, Vector3 p_destination, bool p
// Stores the further reachable end polygon, in case our goal is not reachable.
if (is_reachable) {
- float d = navigation_polys[least_cost_id].entry.distance_to(p_destination);
+ float d = navigation_polys[least_cost_id].entry.distance_to(p_destination) * navigation_polys[least_cost_id].poly->owner->get_travel_cost();
if (reachable_d > d) {
reachable_d = d;
reachable_end = navigation_polys[least_cost_id].poly;
@@ -563,7 +573,7 @@ void NavMap::sync() {
connections[ek].push_back(new_connection);
} else {
// The edge is already connected with another edge, skip.
- ERR_PRINT("Attempted to merge a navigation mesh triangle edge with another already-merged edge. This happens when the current `cell_size` is different from the one used to generate the navigation mesh. This will cause navigation problem.");
+ ERR_PRINT_ONCE("Attempted to merge a navigation mesh triangle edge with another already-merged edge. This happens when the current `cell_size` is different from the one used to generate the navigation mesh. This will cause navigation problems.");
}
}
}
diff --git a/modules/navigation/nav_map.h b/modules/navigation/nav_map.h
index f58a78d4ca..2036dbecd7 100644
--- a/modules/navigation/nav_map.h
+++ b/modules/navigation/nav_map.h
@@ -50,10 +50,10 @@ class NavMap : public NavRid {
/// To find the polygons edges the vertices are displaced in a grid where
/// each cell has the following cell_size.
- real_t cell_size = 0.3;
+ real_t cell_size = 0.25;
/// This value is used to detect the near edges to connect.
- real_t edge_connection_margin = 5.0;
+ real_t edge_connection_margin = 0.25;
bool regenerate_polygons = true;
bool regenerate_links = true;
@@ -105,7 +105,7 @@ public:
gd::PointKey get_point_key(const Vector3 &p_pos) const;
- Vector<Vector3> get_path(Vector3 p_origin, Vector3 p_destination, bool p_optimize, uint32_t p_layers = 1) const;
+ Vector<Vector3> get_path(Vector3 p_origin, Vector3 p_destination, bool p_optimize, uint32_t p_navigation_layers = 1) const;
Vector3 get_closest_point_to_segment(const Vector3 &p_from, const Vector3 &p_to, const bool p_use_collision) const;
Vector3 get_closest_point(const Vector3 &p_point) const;
Vector3 get_closest_point_normal(const Vector3 &p_point) const;
diff --git a/modules/navigation/nav_region.cpp b/modules/navigation/nav_region.cpp
index fea0ad519a..88740807eb 100644
--- a/modules/navigation/nav_region.cpp
+++ b/modules/navigation/nav_region.cpp
@@ -40,12 +40,12 @@ void NavRegion::set_map(NavMap *p_map) {
}
}
-void NavRegion::set_layers(uint32_t p_layers) {
- layers = p_layers;
+void NavRegion::set_navigation_layers(uint32_t p_navigation_layers) {
+ navigation_layers = p_navigation_layers;
}
-uint32_t NavRegion::get_layers() const {
- return layers;
+uint32_t NavRegion::get_navigation_layers() const {
+ return navigation_layers;
}
void NavRegion::set_transform(Transform3D p_transform) {
diff --git a/modules/navigation/nav_region.h b/modules/navigation/nav_region.h
index 7a6da281c0..484856ae36 100644
--- a/modules/navigation/nav_region.h
+++ b/modules/navigation/nav_region.h
@@ -45,7 +45,9 @@ class NavRegion : public NavRid {
NavMap *map = nullptr;
Transform3D transform;
Ref<NavigationMesh> mesh;
- uint32_t layers = 1;
+ uint32_t navigation_layers = 1;
+ float enter_cost = 0.0;
+ float travel_cost = 1.0;
Vector<gd::Edge::Connection> connections;
bool polygons_dirty = true;
@@ -65,8 +67,14 @@ public:
return map;
}
- void set_layers(uint32_t p_layers);
- uint32_t get_layers() const;
+ void set_enter_cost(float p_enter_cost) { enter_cost = MAX(p_enter_cost, 0.0); }
+ float get_enter_cost() const { return enter_cost; }
+
+ void set_travel_cost(float p_travel_cost) { travel_cost = MAX(p_travel_cost, 0.0); }
+ float get_travel_cost() const { return travel_cost; }
+
+ void set_navigation_layers(uint32_t p_navigation_layers);
+ uint32_t get_navigation_layers() const;
void set_transform(Transform3D transform);
const Transform3D &get_transform() const {
diff --git a/modules/navigation/navigation_mesh_generator.cpp b/modules/navigation/navigation_mesh_generator.cpp
index 1bc7cd7cdc..e430f5fd59 100644
--- a/modules/navigation/navigation_mesh_generator.cpp
+++ b/modules/navigation/navigation_mesh_generator.cpp
@@ -450,6 +450,31 @@ void NavigationMeshGenerator::_build_recast_navigation_mesh(
cfg.detailSampleDist = MAX(p_nav_mesh->get_cell_size() * p_nav_mesh->get_detail_sample_distance(), 0.1f);
cfg.detailSampleMaxError = p_nav_mesh->get_cell_height() * p_nav_mesh->get_detail_sample_max_error();
+ if (!Math::is_equal_approx((float)cfg.walkableHeight * cfg.ch, p_nav_mesh->get_agent_height())) {
+ WARN_PRINT("Property agent_height is ceiled to cell_height voxel units and loses precision.");
+ }
+ if (!Math::is_equal_approx((float)cfg.walkableClimb * cfg.ch, p_nav_mesh->get_agent_max_climb())) {
+ WARN_PRINT("Property agent_max_climb is floored to cell_height voxel units and loses precision.");
+ }
+ if (!Math::is_equal_approx((float)cfg.walkableRadius * cfg.cs, p_nav_mesh->get_agent_radius())) {
+ WARN_PRINT("Property agent_radius is ceiled to cell_size voxel units and loses precision.");
+ }
+ if (!Math::is_equal_approx((float)cfg.maxEdgeLen * cfg.cs, p_nav_mesh->get_edge_max_length())) {
+ WARN_PRINT("Property edge_max_length is rounded to cell_size voxel units and loses precision.");
+ }
+ if (!Math::is_equal_approx((float)cfg.minRegionArea, p_nav_mesh->get_region_min_size() * p_nav_mesh->get_region_min_size())) {
+ WARN_PRINT("Property region_min_size is converted to int and loses precision.");
+ }
+ if (!Math::is_equal_approx((float)cfg.mergeRegionArea, p_nav_mesh->get_region_merge_size() * p_nav_mesh->get_region_merge_size())) {
+ WARN_PRINT("Property region_merge_size is converted to int and loses precision.");
+ }
+ if (!Math::is_equal_approx((float)cfg.maxVertsPerPoly, p_nav_mesh->get_verts_per_poly())) {
+ WARN_PRINT("Property verts_per_poly is converted to int and loses precision.");
+ }
+ if (p_nav_mesh->get_cell_size() * p_nav_mesh->get_detail_sample_distance() < 0.1f) {
+ WARN_PRINT("Property detail_sample_distance is clamped to 0.1 world units as the resulting value from multiplying with cell_size is too low.");
+ }
+
cfg.bmin[0] = bmin[0];
cfg.bmin[1] = bmin[1];
cfg.bmin[2] = bmin[2];
diff --git a/modules/navigation/rvo_agent.cpp b/modules/navigation/rvo_agent.cpp
index a6a5660c0c..4ec72ad43f 100644
--- a/modules/navigation/rvo_agent.cpp
+++ b/modules/navigation/rvo_agent.cpp
@@ -65,8 +65,9 @@ void RvoAgent::dispatch_callback() {
return;
}
Object *obj = ObjectDB::get_instance(callback.id);
- if (obj == nullptr) {
+ if (!obj) {
callback.id = ObjectID();
+ return;
}
Callable::CallError responseCallError;
diff --git a/modules/noise/noise_texture.cpp b/modules/noise/noise_texture.cpp
index e9d16e548c..ca55d3b96d 100644
--- a/modules/noise/noise_texture.cpp
+++ b/modules/noise/noise_texture.cpp
@@ -81,8 +81,8 @@ void NoiseTexture::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_noise", "noise"), &NoiseTexture::set_noise);
ClassDB::bind_method(D_METHOD("get_noise"), &NoiseTexture::get_noise);
- ADD_PROPERTY(PropertyInfo(Variant::INT, "width", PROPERTY_HINT_RANGE, "1,2048,1,or_greater"), "set_width", "get_width");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "height", PROPERTY_HINT_RANGE, "1,2048,1,or_greater"), "set_height", "get_height");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "width", PROPERTY_HINT_RANGE, "1,2048,1,or_greater,suffix:px"), "set_width", "get_width");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "height", PROPERTY_HINT_RANGE, "1,2048,1,or_greater,suffix:px"), "set_height", "get_height");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "invert"), "set_invert", "get_invert");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "in_3d_space"), "set_in_3d_space", "is_in_3d_space");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "generate_mipmaps"), "set_generate_mipmaps", "is_generating_mipmaps");
diff --git a/modules/openxr/SCsub b/modules/openxr/SCsub
index ff320236a7..8783e061d2 100644
--- a/modules/openxr/SCsub
+++ b/modules/openxr/SCsub
@@ -81,6 +81,8 @@ if env["platform"] == "android":
if env["vulkan"]:
env_openxr.add_source_files(module_obj, "extensions/openxr_vulkan_extension.cpp")
+env_openxr.add_source_files(module_obj, "extensions/openxr_htc_vive_tracker_extension.cpp")
+
env.modules_sources += module_obj
if env["tools"]:
diff --git a/modules/openxr/action_map/openxr_action_map.cpp b/modules/openxr/action_map/openxr_action_map.cpp
index 366e131369..0eb5302442 100644
--- a/modules/openxr/action_map/openxr_action_map.cpp
+++ b/modules/openxr/action_map/openxr_action_map.cpp
@@ -182,10 +182,40 @@ void OpenXRActionMap::create_default_action_sets() {
Ref<OpenXRAction> ax_touch = action_set->add_new_action("ax_touch", "A/X touching", OpenXRAction::OPENXR_ACTION_BOOL, "/user/hand/left,/user/hand/right");
Ref<OpenXRAction> by_button = action_set->add_new_action("by_button", "B/Y button", OpenXRAction::OPENXR_ACTION_BOOL, "/user/hand/left,/user/hand/right");
Ref<OpenXRAction> by_touch = action_set->add_new_action("by_touch", "B/Y touching", OpenXRAction::OPENXR_ACTION_BOOL, "/user/hand/left,/user/hand/right");
- Ref<OpenXRAction> default_pose = action_set->add_new_action("default_pose", "Default pose", OpenXRAction::OPENXR_ACTION_POSE, "/user/hand/left,/user/hand/right");
+ Ref<OpenXRAction> default_pose = action_set->add_new_action("default_pose", "Default pose", OpenXRAction::OPENXR_ACTION_POSE,
+ "/user/hand/left,"
+ "/user/hand/right,"
+ // "/user/vive_tracker_htcx/role/handheld_object," <-- getting errors on this one
+ "/user/vive_tracker_htcx/role/left_foot,"
+ "/user/vive_tracker_htcx/role/right_foot,"
+ "/user/vive_tracker_htcx/role/left_shoulder,"
+ "/user/vive_tracker_htcx/role/right_shoulder,"
+ "/user/vive_tracker_htcx/role/left_elbow,"
+ "/user/vive_tracker_htcx/role/right_elbow,"
+ "/user/vive_tracker_htcx/role/left_knee,"
+ "/user/vive_tracker_htcx/role/right_knee,"
+ "/user/vive_tracker_htcx/role/waist,"
+ "/user/vive_tracker_htcx/role/chest,"
+ "/user/vive_tracker_htcx/role/camera,"
+ "/user/vive_tracker_htcx/role/keyboard");
Ref<OpenXRAction> aim_pose = action_set->add_new_action("aim_pose", "Aim pose", OpenXRAction::OPENXR_ACTION_POSE, "/user/hand/left,/user/hand/right");
Ref<OpenXRAction> grip_pose = action_set->add_new_action("grip_pose", "Grip pose", OpenXRAction::OPENXR_ACTION_POSE, "/user/hand/left,/user/hand/right");
- Ref<OpenXRAction> haptic = action_set->add_new_action("haptic", "Haptic", OpenXRAction::OPENXR_ACTION_HAPTIC, "/user/hand/left,/user/hand/right");
+ Ref<OpenXRAction> haptic = action_set->add_new_action("haptic", "Haptic", OpenXRAction::OPENXR_ACTION_HAPTIC,
+ "/user/hand/left,"
+ "/user/hand/right,"
+ // "/user/vive_tracker_htcx/role/handheld_object," <-- getting errors on this one
+ "/user/vive_tracker_htcx/role/left_foot,"
+ "/user/vive_tracker_htcx/role/right_foot,"
+ "/user/vive_tracker_htcx/role/left_shoulder,"
+ "/user/vive_tracker_htcx/role/right_shoulder,"
+ "/user/vive_tracker_htcx/role/left_elbow,"
+ "/user/vive_tracker_htcx/role/right_elbow,"
+ "/user/vive_tracker_htcx/role/left_knee,"
+ "/user/vive_tracker_htcx/role/right_knee,"
+ "/user/vive_tracker_htcx/role/waist,"
+ "/user/vive_tracker_htcx/role/chest,"
+ "/user/vive_tracker_htcx/role/camera,"
+ "/user/vive_tracker_htcx/role/keyboard");
// Create our interaction profiles
Ref<OpenXRInteractionProfile> profile = OpenXRInteractionProfile::new_profile("/interaction_profiles/khr/simple_controller");
@@ -399,6 +429,37 @@ void OpenXRActionMap::create_default_action_sets() {
profile->add_new_binding(primary_click, "/user/hand/left/input/trackpad/click,/user/hand/right/input/trackpad/click");
profile->add_new_binding(primary_touch, "/user/hand/left/input/trackpad/touch,/user/hand/right/input/trackpad/touch");
profile->add_new_binding(haptic, "/user/hand/left/output/haptic,/user/hand/right/output/haptic");
+
+ // Create our HTC Vive tracker profile
+ profile = OpenXRInteractionProfile::new_profile("/interaction_profiles/htc/vive_tracker_htcx");
+ profile->add_new_binding(default_pose,
+ // "/user/vive_tracker_htcx/role/handheld_object/input/grip/pose," <-- getting errors on this one
+ "/user/vive_tracker_htcx/role/left_foot/input/grip/pose,"
+ "/user/vive_tracker_htcx/role/right_foot/input/grip/pose,"
+ "/user/vive_tracker_htcx/role/left_shoulder/input/grip/pose,"
+ "/user/vive_tracker_htcx/role/right_shoulder/input/grip/pose,"
+ "/user/vive_tracker_htcx/role/left_elbow/input/grip/pose,"
+ "/user/vive_tracker_htcx/role/right_elbow/input/grip/pose,"
+ "/user/vive_tracker_htcx/role/left_knee/input/grip/pose,"
+ "/user/vive_tracker_htcx/role/right_knee/input/grip/pose,"
+ "/user/vive_tracker_htcx/role/waist/input/grip/pose,"
+ "/user/vive_tracker_htcx/role/chest/input/grip/pose,"
+ "/user/vive_tracker_htcx/role/camera/input/grip/pose,"
+ "/user/vive_tracker_htcx/role/keyboard/input/grip/pose");
+ profile->add_new_binding(haptic,
+ // "/user/vive_tracker_htcx/role/handheld_object/output/haptic," <-- getting errors on this one
+ "/user/vive_tracker_htcx/role/left_foot/output/haptic,"
+ "/user/vive_tracker_htcx/role/right_foot/output/haptic,"
+ "/user/vive_tracker_htcx/role/left_shoulder/output/haptic,"
+ "/user/vive_tracker_htcx/role/right_shoulder/output/haptic,"
+ "/user/vive_tracker_htcx/role/left_elbow/output/haptic,"
+ "/user/vive_tracker_htcx/role/right_elbow/output/haptic,"
+ "/user/vive_tracker_htcx/role/left_knee/output/haptic,"
+ "/user/vive_tracker_htcx/role/right_knee/output/haptic,"
+ "/user/vive_tracker_htcx/role/waist/output/haptic,"
+ "/user/vive_tracker_htcx/role/chest/output/haptic,"
+ "/user/vive_tracker_htcx/role/camera/output/haptic,"
+ "/user/vive_tracker_htcx/role/keyboard/output/haptic");
add_interaction_profile(profile);
}
diff --git a/modules/openxr/action_map/openxr_defs.cpp b/modules/openxr/action_map/openxr_defs.cpp
index e10326449c..89860199be 100644
--- a/modules/openxr/action_map/openxr_defs.cpp
+++ b/modules/openxr/action_map/openxr_defs.cpp
@@ -32,8 +32,28 @@
// Our top level paths to which devices can be bound
OpenXRDefs::TopLevelPath OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_TOP_LEVEL_PATH_MAX] = {
+ // Core OpenXR paths
{ "Left hand controller", "/user/hand/left" },
{ "Right hand controller", "/user/hand/right" },
+ { "Head", "/user/head" },
+ { "Gamepad", "/user/gamepad" },
+ { "Treadmill", "/user/treadmill" },
+
+ // Specific to HTC tracker extension
+ // { "Handheld object tracker", "/user/vive_tracker_htcx/role/handheld_object" },
+ { "Left foot tracker", "/user/vive_tracker_htcx/role/left_foot" },
+ { "Right foot tracker", "/user/vive_tracker_htcx/role/right_foot" },
+ { "Left shoulder tracker", "/user/vive_tracker_htcx/role/left_shoulder" },
+ { "Right shoulder tracker", "/user/vive_tracker_htcx/role/right_shoulder" },
+ { "Left elbow tracker", "/user/vive_tracker_htcx/role/left_elbow" },
+ { "Right elbow tracker", "/user/vive_tracker_htcx/role/right_elbow" },
+ { "Left knee tracker", "/user/vive_tracker_htcx/role/left_knee" },
+ { "Right knee tracker", "/user/vive_tracker_htcx/role/right_knee" },
+ { "Waist tracker", "/user/vive_tracker_htcx/role/waist" },
+ { "Chest tracker", "/user/vive_tracker_htcx/role/chest" },
+ { "Camera tracker", "/user/vive_tracker_htcx/role/camera" },
+ { "Keyboard tracker", "/user/vive_tracker_htcx/role/keyboard" },
+
};
// Fallback Khronos simple controller
@@ -378,6 +398,137 @@ OpenXRDefs::IOPath OpenXRDefs::huawei_controller_paths[] = {
{ "Haptic output", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_RIGHT_HAND], "/user/hand/right/output/haptic", OpenXRAction::OPENXR_ACTION_HAPTIC },
};
+// HTC Vive tracker
+// Interestingly enough trackers don't have buttons or inputs, yet these are defined in the spec.
+// I think this can be supported through attachments on the trackers.
+OpenXRDefs::IOPath OpenXRDefs::vive_tracker_controller_paths[] = {
+ // { "Menu click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_HANDHELD_TRACKER], "/user/vive_tracker_htcx/role/handheld_object/input/menu/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Menu click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_FOOT_TRACKER], "/user/vive_tracker_htcx/role/left_foot/input/menu/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Menu click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_FOOT_TRACKER], "/user/vive_tracker_htcx/role/right_foot/input/menu/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Menu click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_SHOULDER_TRACKER], "/user/vive_tracker_htcx/role/left_shoulder/input/menu/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Menu click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_SHOULDER_TRACKER], "/user/vive_tracker_htcx/role/right_shoulder/input/menu/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Menu click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_ELBOW_TRACKER], "/user/vive_tracker_htcx/role/left_elbow/input/menu/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Menu click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_ELBOW_TRACKER], "/user/vive_tracker_htcx/role/right_elbow/input/menu/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Menu click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_KNEE_TRACKER], "/user/vive_tracker_htcx/role/left_knee/input/menu/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Menu click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_KNEE_TRACKER], "/user/vive_tracker_htcx/role/right_knee/input/menu/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Menu click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_WAIST_TRACKER], "/user/vive_tracker_htcx/role/waist/input/menu/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Menu click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_CHEST_TRACKER], "/user/vive_tracker_htcx/role/chest/input/menu/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Menu click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_CAMERA_TRACKER], "/user/vive_tracker_htcx/role/camera/input/menu/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Menu click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_KEYBOARD_TRACKER], "/user/vive_tracker_htcx/role/keyboard/input/menu/click", OpenXRAction::OPENXR_ACTION_BOOL },
+
+ // { "Trigger", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_HANDHELD_TRACKER], "/user/vive_tracker_htcx/role/handheld_object/input/trigger/value", OpenXRAction::OPENXR_ACTION_FLOAT },
+ { "Trigger", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_FOOT_TRACKER], "/user/vive_tracker_htcx/role/left_foot/input/trigger/value", OpenXRAction::OPENXR_ACTION_FLOAT },
+ { "Trigger", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_FOOT_TRACKER], "/user/vive_tracker_htcx/role/right_foot/input/trigger/value", OpenXRAction::OPENXR_ACTION_FLOAT },
+ { "Trigger", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_SHOULDER_TRACKER], "/user/vive_tracker_htcx/role/left_shoulder/input/trigger/value", OpenXRAction::OPENXR_ACTION_FLOAT },
+ { "Trigger", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_SHOULDER_TRACKER], "/user/vive_tracker_htcx/role/right_shoulder/input/trigger/value", OpenXRAction::OPENXR_ACTION_FLOAT },
+ { "Trigger", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_ELBOW_TRACKER], "/user/vive_tracker_htcx/role/left_elbow/input/trigger/value", OpenXRAction::OPENXR_ACTION_FLOAT },
+ { "Trigger", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_ELBOW_TRACKER], "/user/vive_tracker_htcx/role/right_elbow/input/trigger/value", OpenXRAction::OPENXR_ACTION_FLOAT },
+ { "Trigger", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_KNEE_TRACKER], "/user/vive_tracker_htcx/role/left_knee/input/trigger/value", OpenXRAction::OPENXR_ACTION_FLOAT },
+ { "Trigger", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_KNEE_TRACKER], "/user/vive_tracker_htcx/role/right_knee/input/trigger/value", OpenXRAction::OPENXR_ACTION_FLOAT },
+ { "Trigger", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_WAIST_TRACKER], "/user/vive_tracker_htcx/role/waist/input/trigger/value", OpenXRAction::OPENXR_ACTION_FLOAT },
+ { "Trigger", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_CHEST_TRACKER], "/user/vive_tracker_htcx/role/chest/input/trigger/value", OpenXRAction::OPENXR_ACTION_FLOAT },
+ { "Trigger", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_CAMERA_TRACKER], "/user/vive_tracker_htcx/role/camera/input/trigger/value", OpenXRAction::OPENXR_ACTION_FLOAT },
+ { "Trigger", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_KEYBOARD_TRACKER], "/user/vive_tracker_htcx/role/keyboard/input/trigger/value", OpenXRAction::OPENXR_ACTION_FLOAT },
+
+ // { "Trigger click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_HANDHELD_TRACKER], "/user/vive_tracker_htcx/role/handheld_object/input/trigger/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trigger click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_FOOT_TRACKER], "/user/vive_tracker_htcx/role/left_foot/input/trigger/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trigger click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_FOOT_TRACKER], "/user/vive_tracker_htcx/role/right_foot/input/trigger/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trigger click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_SHOULDER_TRACKER], "/user/vive_tracker_htcx/role/left_shoulder/input/trigger/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trigger click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_SHOULDER_TRACKER], "/user/vive_tracker_htcx/role/right_shoulder/input/trigger/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trigger click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_ELBOW_TRACKER], "/user/vive_tracker_htcx/role/left_elbow/input/trigger/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trigger click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_ELBOW_TRACKER], "/user/vive_tracker_htcx/role/right_elbow/input/trigger/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trigger click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_KNEE_TRACKER], "/user/vive_tracker_htcx/role/left_knee/input/trigger/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trigger click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_KNEE_TRACKER], "/user/vive_tracker_htcx/role/right_knee/input/trigger/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trigger click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_WAIST_TRACKER], "/user/vive_tracker_htcx/role/waist/input/trigger/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trigger click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_CHEST_TRACKER], "/user/vive_tracker_htcx/role/chest/input/trigger/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trigger click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_CAMERA_TRACKER], "/user/vive_tracker_htcx/role/camera/input/trigger/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trigger click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_KEYBOARD_TRACKER], "/user/vive_tracker_htcx/role/keyboard/input/trigger/click", OpenXRAction::OPENXR_ACTION_BOOL },
+
+ // { "Squeeze click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_HANDHELD_TRACKER], "/user/vive_tracker_htcx/role/handheld_object/input/squeeze/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Squeeze click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_FOOT_TRACKER], "/user/vive_tracker_htcx/role/left_foot/input/squeeze/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Squeeze click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_FOOT_TRACKER], "/user/vive_tracker_htcx/role/right_foot/input/squeeze/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Squeeze click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_SHOULDER_TRACKER], "/user/vive_tracker_htcx/role/left_shoulder/input/squeeze/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Squeeze click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_SHOULDER_TRACKER], "/user/vive_tracker_htcx/role/right_shoulder/input/squeeze/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Squeeze click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_ELBOW_TRACKER], "/user/vive_tracker_htcx/role/left_elbow/input/squeeze/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Squeeze click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_ELBOW_TRACKER], "/user/vive_tracker_htcx/role/right_elbow/input/squeeze/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Squeeze click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_KNEE_TRACKER], "/user/vive_tracker_htcx/role/left_knee/input/squeeze/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Squeeze click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_KNEE_TRACKER], "/user/vive_tracker_htcx/role/right_knee/input/squeeze/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Squeeze click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_WAIST_TRACKER], "/user/vive_tracker_htcx/role/waist/input/squeeze/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Squeeze click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_CHEST_TRACKER], "/user/vive_tracker_htcx/role/chest/input/squeeze/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Squeeze click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_CAMERA_TRACKER], "/user/vive_tracker_htcx/role/camera/input/squeeze/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Squeeze click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_KEYBOARD_TRACKER], "/user/vive_tracker_htcx/role/keyboard/input/squeeze/click", OpenXRAction::OPENXR_ACTION_BOOL },
+
+ // { "Trackpad", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_HANDHELD_TRACKER], "/user/vive_tracker_htcx/role/handheld_object/input/trackpad", OpenXRAction::OPENXR_ACTION_VECTOR2 },
+ { "Trackpad", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_FOOT_TRACKER], "/user/vive_tracker_htcx/role/left_foot/input/trackpad", OpenXRAction::OPENXR_ACTION_VECTOR2 },
+ { "Trackpad", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_FOOT_TRACKER], "/user/vive_tracker_htcx/role/right_foot/input/trackpad", OpenXRAction::OPENXR_ACTION_VECTOR2 },
+ { "Trackpad", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_SHOULDER_TRACKER], "/user/vive_tracker_htcx/role/left_shoulder/input/trackpad", OpenXRAction::OPENXR_ACTION_VECTOR2 },
+ { "Trackpad", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_SHOULDER_TRACKER], "/user/vive_tracker_htcx/role/right_shoulder/input/trackpad", OpenXRAction::OPENXR_ACTION_VECTOR2 },
+ { "Trackpad", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_ELBOW_TRACKER], "/user/vive_tracker_htcx/role/left_elbow/input/trackpad", OpenXRAction::OPENXR_ACTION_VECTOR2 },
+ { "Trackpad", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_ELBOW_TRACKER], "/user/vive_tracker_htcx/role/right_elbow/input/trackpad", OpenXRAction::OPENXR_ACTION_VECTOR2 },
+ { "Trackpad", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_KNEE_TRACKER], "/user/vive_tracker_htcx/role/left_knee/input/trackpad", OpenXRAction::OPENXR_ACTION_VECTOR2 },
+ { "Trackpad", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_KNEE_TRACKER], "/user/vive_tracker_htcx/role/right_knee/input/trackpad", OpenXRAction::OPENXR_ACTION_VECTOR2 },
+ { "Trackpad", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_WAIST_TRACKER], "/user/vive_tracker_htcx/role/waist/input/trackpad", OpenXRAction::OPENXR_ACTION_VECTOR2 },
+ { "Trackpad", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_CHEST_TRACKER], "/user/vive_tracker_htcx/role/chest/input/trackpad", OpenXRAction::OPENXR_ACTION_VECTOR2 },
+ { "Trackpad", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_CAMERA_TRACKER], "/user/vive_tracker_htcx/role/camera/input/trackpad", OpenXRAction::OPENXR_ACTION_VECTOR2 },
+ { "Trackpad", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_KEYBOARD_TRACKER], "/user/vive_tracker_htcx/role/keyboard/input/trackpad", OpenXRAction::OPENXR_ACTION_VECTOR2 },
+
+ // { "Trackpad click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_HANDHELD_TRACKER], "/user/vive_tracker_htcx/role/handheld_object/input/trackpad/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trackpad click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_FOOT_TRACKER], "/user/vive_tracker_htcx/role/left_foot/input/trackpad/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trackpad click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_FOOT_TRACKER], "/user/vive_tracker_htcx/role/right_foot/input/trackpad/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trackpad click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_SHOULDER_TRACKER], "/user/vive_tracker_htcx/role/left_shoulder/input/trackpad/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trackpad click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_SHOULDER_TRACKER], "/user/vive_tracker_htcx/role/right_shoulder/input/trackpad/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trackpad click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_ELBOW_TRACKER], "/user/vive_tracker_htcx/role/left_elbow/input/trackpad/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trackpad click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_ELBOW_TRACKER], "/user/vive_tracker_htcx/role/right_elbow/input/trackpad/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trackpad click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_KNEE_TRACKER], "/user/vive_tracker_htcx/role/left_knee/input/trackpad/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trackpad click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_KNEE_TRACKER], "/user/vive_tracker_htcx/role/right_knee/input/trackpad/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trackpad click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_WAIST_TRACKER], "/user/vive_tracker_htcx/role/waist/input/trackpad/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trackpad click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_CHEST_TRACKER], "/user/vive_tracker_htcx/role/chest/input/trackpad/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trackpad click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_CAMERA_TRACKER], "/user/vive_tracker_htcx/role/camera/input/trackpad/click", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trackpad click", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_KEYBOARD_TRACKER], "/user/vive_tracker_htcx/role/keyboard/input/trackpad/click", OpenXRAction::OPENXR_ACTION_BOOL },
+
+ // { "Trackpad touch", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_HANDHELD_TRACKER], "/user/vive_tracker_htcx/role/handheld_object/input/trackpad/touch", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trackpad touch", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_FOOT_TRACKER], "/user/vive_tracker_htcx/role/left_foot/input/trackpad/touch", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trackpad touch", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_FOOT_TRACKER], "/user/vive_tracker_htcx/role/right_foot/input/trackpad/touch", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trackpad touch", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_SHOULDER_TRACKER], "/user/vive_tracker_htcx/role/left_shoulder/input/trackpad/touch", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trackpad touch", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_SHOULDER_TRACKER], "/user/vive_tracker_htcx/role/right_shoulder/input/trackpad/touch", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trackpad touch", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_ELBOW_TRACKER], "/user/vive_tracker_htcx/role/left_elbow/input/trackpad/touch", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trackpad touch", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_ELBOW_TRACKER], "/user/vive_tracker_htcx/role/right_elbow/input/trackpad/touch", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trackpad touch", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_KNEE_TRACKER], "/user/vive_tracker_htcx/role/left_knee/input/trackpad/touch", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trackpad touch", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_KNEE_TRACKER], "/user/vive_tracker_htcx/role/right_knee/input/trackpad/touch", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trackpad touch", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_WAIST_TRACKER], "/user/vive_tracker_htcx/role/waist/input/trackpad/touch", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trackpad touch", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_CHEST_TRACKER], "/user/vive_tracker_htcx/role/chest/input/trackpad/touch", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trackpad touch", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_CAMERA_TRACKER], "/user/vive_tracker_htcx/role/camera/input/trackpad/touch", OpenXRAction::OPENXR_ACTION_BOOL },
+ { "Trackpad touch", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_KEYBOARD_TRACKER], "/user/vive_tracker_htcx/role/keyboard/input/trackpad/touch", OpenXRAction::OPENXR_ACTION_BOOL },
+
+ // { "Grip pose", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_HANDHELD_TRACKER], "/user/vive_tracker_htcx/role/handheld_object/input/grip/pose", OpenXRAction::OPENXR_ACTION_POSE },
+ { "Grip pose", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_FOOT_TRACKER], "/user/vive_tracker_htcx/role/left_foot/input/grip/pose", OpenXRAction::OPENXR_ACTION_POSE },
+ { "Grip pose", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_FOOT_TRACKER], "/user/vive_tracker_htcx/role/right_foot/input/grip/pose", OpenXRAction::OPENXR_ACTION_POSE },
+ { "Grip pose", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_SHOULDER_TRACKER], "/user/vive_tracker_htcx/role/left_shoulder/input/grip/pose", OpenXRAction::OPENXR_ACTION_POSE },
+ { "Grip pose", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_SHOULDER_TRACKER], "/user/vive_tracker_htcx/role/right_shoulder/input/grip/pose", OpenXRAction::OPENXR_ACTION_POSE },
+ { "Grip pose", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_ELBOW_TRACKER], "/user/vive_tracker_htcx/role/left_elbow/input/grip/pose", OpenXRAction::OPENXR_ACTION_POSE },
+ { "Grip pose", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_ELBOW_TRACKER], "/user/vive_tracker_htcx/role/right_elbow/input/grip/pose", OpenXRAction::OPENXR_ACTION_POSE },
+ { "Grip pose", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_KNEE_TRACKER], "/user/vive_tracker_htcx/role/left_knee/input/grip/pose", OpenXRAction::OPENXR_ACTION_POSE },
+ { "Grip pose", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_KNEE_TRACKER], "/user/vive_tracker_htcx/role/right_knee/input/grip/pose", OpenXRAction::OPENXR_ACTION_POSE },
+ { "Grip pose", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_WAIST_TRACKER], "/user/vive_tracker_htcx/role/waist/input/grip/pose", OpenXRAction::OPENXR_ACTION_POSE },
+ { "Grip pose", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_CHEST_TRACKER], "/user/vive_tracker_htcx/role/chest/input/grip/pose", OpenXRAction::OPENXR_ACTION_POSE },
+ { "Grip pose", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_CAMERA_TRACKER], "/user/vive_tracker_htcx/role/camera/input/grip/pose", OpenXRAction::OPENXR_ACTION_POSE },
+ { "Grip pose", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_KEYBOARD_TRACKER], "/user/vive_tracker_htcx/role/keyboard/input/grip/pose", OpenXRAction::OPENXR_ACTION_POSE },
+
+ // { "Haptic output", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_HANDHELD_TRACKER], "/user/vive_tracker_htcx/role/handheld_object/output/haptic", OpenXRAction::OPENXR_ACTION_HAPTIC },
+ { "Haptic output", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_FOOT_TRACKER], "/user/vive_tracker_htcx/role/left_foot/output/haptic", OpenXRAction::OPENXR_ACTION_HAPTIC },
+ { "Haptic output", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_FOOT_TRACKER], "/user/vive_tracker_htcx/role/right_foot/output/haptic", OpenXRAction::OPENXR_ACTION_HAPTIC },
+ { "Haptic output", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_SHOULDER_TRACKER], "/user/vive_tracker_htcx/role/left_shoulder/output/haptic", OpenXRAction::OPENXR_ACTION_HAPTIC },
+ { "Haptic output", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_SHOULDER_TRACKER], "/user/vive_tracker_htcx/role/right_shoulder/output/haptic", OpenXRAction::OPENXR_ACTION_HAPTIC },
+ { "Haptic output", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_ELBOW_TRACKER], "/user/vive_tracker_htcx/role/left_elbow/output/haptic", OpenXRAction::OPENXR_ACTION_HAPTIC },
+ { "Haptic output", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_ELBOW_TRACKER], "/user/vive_tracker_htcx/role/right_elbow/output/haptic", OpenXRAction::OPENXR_ACTION_HAPTIC },
+ { "Haptic output", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_LEFT_KNEE_TRACKER], "/user/vive_tracker_htcx/role/left_knee/output/haptic", OpenXRAction::OPENXR_ACTION_HAPTIC },
+ { "Haptic output", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_RIGHT_KNEE_TRACKER], "/user/vive_tracker_htcx/role/right_knee/output/haptic", OpenXRAction::OPENXR_ACTION_HAPTIC },
+ { "Haptic output", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_WAIST_TRACKER], "/user/vive_tracker_htcx/role/waist/output/haptic", OpenXRAction::OPENXR_ACTION_HAPTIC },
+ { "Haptic output", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_CHEST_TRACKER], "/user/vive_tracker_htcx/role/chest/output/haptic", OpenXRAction::OPENXR_ACTION_HAPTIC },
+ { "Haptic output", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_CAMERA_TRACKER], "/user/vive_tracker_htcx/role/camera/output/haptic", OpenXRAction::OPENXR_ACTION_HAPTIC },
+ { "Haptic output", &OpenXRDefs::available_top_level_paths[OpenXRDefs::OPENXR_HTC_KEYBOARD_TRACKER], "/user/vive_tracker_htcx/role/keyboard/output/haptic", OpenXRAction::OPENXR_ACTION_HAPTIC },
+};
+
OpenXRDefs::InteractionProfile OpenXRDefs::available_interaction_profiles[] = {
{
"Simple controller", // display_name
@@ -439,6 +590,13 @@ OpenXRDefs::InteractionProfile OpenXRDefs::available_interaction_profiles[] = {
huawei_controller_paths, // io_paths
sizeof(huawei_controller_paths) / sizeof(OpenXRDefs::IOPath) // io_path_count
},
+
+ {
+ "HTC Vive tracker", // display_name
+ "/interaction_profiles/htc/vive_tracker_htcx", // openxr_path
+ vive_tracker_controller_paths, // io_paths
+ sizeof(vive_tracker_controller_paths) / sizeof(OpenXRDefs::IOPath) // io_path_count
+ },
};
int OpenXRDefs::available_interaction_profile_count = sizeof(OpenXRDefs::available_interaction_profiles) / sizeof(OpenXRDefs::InteractionProfile);
diff --git a/modules/openxr/action_map/openxr_defs.h b/modules/openxr/action_map/openxr_defs.h
index dbda4757f1..9bdd9a6ded 100644
--- a/modules/openxr/action_map/openxr_defs.h
+++ b/modules/openxr/action_map/openxr_defs.h
@@ -51,8 +51,28 @@
class OpenXRDefs {
public:
enum TOP_LEVEL_PATH {
+ // Core OpenXR toplevel paths
OPENXR_LEFT_HAND,
OPENXR_RIGHT_HAND,
+ OPENXR_HEAD,
+ OPENXR_GAMEPAD,
+ OPENXR_TREADMILL,
+
+ // HTC tracker extension toplevel paths
+ // OPENXR_HTC_HANDHELD_TRACKER,
+ OPENXR_HTC_LEFT_FOOT_TRACKER,
+ OPENXR_HTC_RIGHT_FOOT_TRACKER,
+ OPENXR_HTC_LEFT_SHOULDER_TRACKER,
+ OPENXR_HTC_RIGHT_SHOULDER_TRACKER,
+ OPENXR_HTC_LEFT_ELBOW_TRACKER,
+ OPENXR_HTC_RIGHT_ELBOW_TRACKER,
+ OPENXR_HTC_LEFT_KNEE_TRACKER,
+ OPENXR_HTC_RIGHT_KNEE_TRACKER,
+ OPENXR_HTC_WAIST_TRACKER,
+ OPENXR_HTC_CHEST_TRACKER,
+ OPENXR_HTC_CAMERA_TRACKER,
+ OPENXR_HTC_KEYBOARD_TRACKER,
+
OPENXR_TOP_LEVEL_PATH_MAX
};
@@ -89,6 +109,7 @@ private:
static IOPath vive_cosmos_paths[];
static IOPath vive_focus3_paths[];
static IOPath huawei_controller_paths[];
+ static IOPath vive_tracker_controller_paths[];
static InteractionProfile available_interaction_profiles[];
static int available_interaction_profile_count;
diff --git a/modules/openxr/extensions/openxr_htc_vive_tracker_extension.cpp b/modules/openxr/extensions/openxr_htc_vive_tracker_extension.cpp
new file mode 100644
index 0000000000..302acf4e30
--- /dev/null
+++ b/modules/openxr/extensions/openxr_htc_vive_tracker_extension.cpp
@@ -0,0 +1,67 @@
+/*************************************************************************/
+/* openxr_htc_vive_tracker_extension.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#include "openxr_htc_vive_tracker_extension.h"
+#include "core/string/print_string.h"
+
+OpenXRHTCViveTrackerExtension *OpenXRHTCViveTrackerExtension::singleton = nullptr;
+
+OpenXRHTCViveTrackerExtension *OpenXRHTCViveTrackerExtension::get_singleton() {
+ return singleton;
+}
+
+OpenXRHTCViveTrackerExtension::OpenXRHTCViveTrackerExtension(OpenXRAPI *p_openxr_api) :
+ OpenXRExtensionWrapper(p_openxr_api) {
+ singleton = this;
+
+ request_extensions[XR_HTCX_VIVE_TRACKER_INTERACTION_EXTENSION_NAME] = &available;
+}
+
+OpenXRHTCViveTrackerExtension::~OpenXRHTCViveTrackerExtension() {
+ singleton = nullptr;
+}
+
+bool OpenXRHTCViveTrackerExtension::is_available() {
+ return available;
+}
+
+bool OpenXRHTCViveTrackerExtension::on_event_polled(const XrEventDataBuffer &event) {
+ switch (event.type) {
+ case XR_TYPE_EVENT_DATA_VIVE_TRACKER_CONNECTED_HTCX: {
+ // Investigate if we need to do more here
+ print_verbose("OpenXR EVENT: VIVE tracker connected");
+
+ return true;
+ } break;
+ default: {
+ return false;
+ } break;
+ }
+}
diff --git a/modules/openxr/extensions/openxr_htc_vive_tracker_extension.h b/modules/openxr/extensions/openxr_htc_vive_tracker_extension.h
new file mode 100644
index 0000000000..7670bc074b
--- /dev/null
+++ b/modules/openxr/extensions/openxr_htc_vive_tracker_extension.h
@@ -0,0 +1,52 @@
+/*************************************************************************/
+/* openxr_htc_vive_tracker_extension.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifndef OPENXR_HTC_VIVE_TRACKER_EXTENSION_H
+#define OPENXR_HTC_VIVE_TRACKER_EXTENSION_H
+
+#include "openxr_extension_wrapper.h"
+
+class OpenXRHTCViveTrackerExtension : public OpenXRExtensionWrapper {
+public:
+ static OpenXRHTCViveTrackerExtension *get_singleton();
+
+ OpenXRHTCViveTrackerExtension(OpenXRAPI *p_openxr_api);
+ virtual ~OpenXRHTCViveTrackerExtension() override;
+
+ bool is_available();
+ virtual bool on_event_polled(const XrEventDataBuffer &event) override;
+
+private:
+ static OpenXRHTCViveTrackerExtension *singleton;
+
+ bool available = false;
+};
+
+#endif // !OPENXR_HTC_VIVE_TRACKER_EXTENSION_H
diff --git a/modules/openxr/openxr_api.cpp b/modules/openxr/openxr_api.cpp
index f42af0492f..5e35942012 100644
--- a/modules/openxr/openxr_api.cpp
+++ b/modules/openxr/openxr_api.cpp
@@ -48,7 +48,9 @@
#include "extensions/openxr_vulkan_extension.h"
#endif
-#include "openxr_interface.h"
+#include "extensions/openxr_htc_vive_tracker_extension.h"
+
+#include "modules/openxr/openxr_interface.h"
OpenXRAPI *OpenXRAPI::singleton = nullptr;
@@ -1102,7 +1104,7 @@ Size2 OpenXRAPI::get_recommended_target_size() {
return target_size;
}
-XRPose::TrackingConfidence OpenXRAPI::get_head_center(Transform3D &r_transform, Vector3 &r_linear_velocity, const Vector3 &r_angular_velocity) {
+XRPose::TrackingConfidence OpenXRAPI::get_head_center(Transform3D &r_transform, Vector3 &r_linear_velocity, Vector3 &r_angular_velocity) {
XrResult result;
ERR_FAIL_COND_V(!running, XRPose::XR_TRACKING_CONFIDENCE_NONE);
@@ -1644,6 +1646,9 @@ OpenXRAPI::OpenXRAPI() {
// our android wrapper will initialize our android loader at this point
register_extension_wrapper(memnew(OpenXRAndroidExtension(this)));
#endif
+
+ // register our other extensions
+ register_extension_wrapper(memnew(OpenXRHTCViveTrackerExtension(this)));
}
OpenXRAPI::~OpenXRAPI() {
@@ -1730,7 +1735,7 @@ XRPose::TrackingConfidence OpenXRAPI::transform_from_location(const XrHandJointL
return _transform_from_location(p_location, r_transform);
}
-void OpenXRAPI::parse_velocities(const XrSpaceVelocity &p_velocity, Vector3 &r_linear_velocity, Vector3 r_angular_velocity) {
+void OpenXRAPI::parse_velocities(const XrSpaceVelocity &p_velocity, Vector3 &r_linear_velocity, Vector3 &r_angular_velocity) {
if (p_velocity.velocityFlags & XR_SPACE_VELOCITY_LINEAR_VALID_BIT) {
XrVector3f linear_velocity = p_velocity.linearVelocity;
r_linear_velocity = Vector3(linear_velocity.x, linear_velocity.y, linear_velocity.z);
@@ -2303,7 +2308,7 @@ Vector2 OpenXRAPI::get_action_vector2(RID p_action, RID p_tracker) {
return result_state.isActive ? Vector2(result_state.currentState.x, result_state.currentState.y) : Vector2();
}
-XRPose::TrackingConfidence OpenXRAPI::get_action_pose(RID p_action, RID p_tracker, Transform3D &r_transform, Vector3 &r_linear_velocity, const Vector3 &r_angular_velocity) {
+XRPose::TrackingConfidence OpenXRAPI::get_action_pose(RID p_action, RID p_tracker, Transform3D &r_transform, Vector3 &r_linear_velocity, Vector3 &r_angular_velocity) {
ERR_FAIL_COND_V(session == XR_NULL_HANDLE, XRPose::XR_TRACKING_CONFIDENCE_NONE);
Action *action = action_owner.get_or_null(p_action);
ERR_FAIL_NULL_V(action, XRPose::XR_TRACKING_CONFIDENCE_NONE);
diff --git a/modules/openxr/openxr_api.h b/modules/openxr/openxr_api.h
index bd71f0e1c2..fe9e2937b2 100644
--- a/modules/openxr/openxr_api.h
+++ b/modules/openxr/openxr_api.h
@@ -225,7 +225,7 @@ protected:
// helper method to get a valid Transform3D from an openxr space location
XRPose::TrackingConfidence transform_from_location(const XrSpaceLocation &p_location, Transform3D &r_transform);
XRPose::TrackingConfidence transform_from_location(const XrHandJointLocationEXT &p_location, Transform3D &r_transform);
- void parse_velocities(const XrSpaceVelocity &p_velocity, Vector3 &r_linear_velocity, Vector3 r_angular_velocity);
+ void parse_velocities(const XrSpaceVelocity &p_velocity, Vector3 &r_linear_velocity, Vector3 &r_angular_velocity);
public:
static bool openxr_is_enabled(bool p_check_run_in_editor = true);
@@ -247,7 +247,7 @@ public:
bool can_render() { return instance != XR_NULL_HANDLE && session != XR_NULL_HANDLE && running && view_pose_valid && frame_state.shouldRender; };
Size2 get_recommended_target_size();
- XRPose::TrackingConfidence get_head_center(Transform3D &r_transform, Vector3 &r_linear_velocity, const Vector3 &r_angular_velocity);
+ XRPose::TrackingConfidence get_head_center(Transform3D &r_transform, Vector3 &r_linear_velocity, Vector3 &r_angular_velocity);
bool get_view_transform(uint32_t p_view, Transform3D &r_transform);
bool get_view_projection(uint32_t p_view, double p_z_near, double p_z_far, CameraMatrix &p_camera_matrix);
bool process();
@@ -285,7 +285,7 @@ public:
bool get_action_bool(RID p_action, RID p_tracker);
float get_action_float(RID p_action, RID p_tracker);
Vector2 get_action_vector2(RID p_action, RID p_tracker);
- XRPose::TrackingConfidence get_action_pose(RID p_action, RID p_tracker, Transform3D &r_transform, Vector3 &r_linear_velocity, const Vector3 &r_angular_velocity);
+ XRPose::TrackingConfidence get_action_pose(RID p_action, RID p_tracker, Transform3D &r_transform, Vector3 &r_linear_velocity, Vector3 &r_angular_velocity);
bool trigger_haptic_pulse(RID p_action, RID p_tracker, float p_frequency, float p_amplitude, XrDuration p_duration_ns);
OpenXRAPI();
diff --git a/modules/openxr/openxr_interface.cpp b/modules/openxr/openxr_interface.cpp
index ab06583932..9dfa005600 100644
--- a/modules/openxr/openxr_interface.cpp
+++ b/modules/openxr/openxr_interface.cpp
@@ -57,7 +57,24 @@ PackedStringArray OpenXRInterface::get_suggested_tracker_names() const {
PackedStringArray arr = {
"left_hand", // /user/hand/left is mapped to our defaults
"right_hand", // /user/hand/right is mapped to our defaults
- "/user/treadmill"
+ "/user/treadmill",
+
+ // Even though these are only available if you have the tracker extension,
+ // we add these as we may be deploying on a different platform than our
+ // editor is running on.
+ "/user/vive_tracker_htcx/role/handheld_object",
+ "/user/vive_tracker_htcx/role/left_foot",
+ "/user/vive_tracker_htcx/role/right_foot",
+ "/user/vive_tracker_htcx/role/left_shoulder",
+ "/user/vive_tracker_htcx/role/right_shoulder",
+ "/user/vive_tracker_htcx/role/left_elbow",
+ "/user/vive_tracker_htcx/role/right_elbow",
+ "/user/vive_tracker_htcx/role/left_knee",
+ "/user/vive_tracker_htcx/role/right_knee",
+ "/user/vive_tracker_htcx/role/waist",
+ "/user/vive_tracker_htcx/role/chest",
+ "/user/vive_tracker_htcx/role/camera",
+ "/user/vive_tracker_htcx/role/keyboard"
};
return arr;
diff --git a/modules/raycast/raycast_occlusion_cull.h b/modules/raycast/raycast_occlusion_cull.h
index 4474031991..6562c4e9c4 100644
--- a/modules/raycast/raycast_occlusion_cull.h
+++ b/modules/raycast/raycast_occlusion_cull.h
@@ -87,8 +87,8 @@ private:
RID instance;
static uint32_t hash(const InstanceID &p_ins) {
- uint32_t h = hash_djb2_one_64(p_ins.scenario.get_id());
- return hash_djb2_one_64(p_ins.instance.get_id(), h);
+ uint32_t h = hash_murmur3_one_64(p_ins.scenario.get_id());
+ return hash_fmix32(hash_murmur3_one_64(p_ins.instance.get_id(), h));
}
bool operator==(const InstanceID &rhs) const {
return instance == rhs.instance && rhs.scenario == scenario;
diff --git a/modules/text_server_adv/text_server_adv.cpp b/modules/text_server_adv/text_server_adv.cpp
index 0f45855a76..c4269a53f4 100644
--- a/modules/text_server_adv/text_server_adv.cpp
+++ b/modules/text_server_adv/text_server_adv.cpp
@@ -1288,7 +1288,16 @@ _FORCE_INLINE_ bool TextServerAdvanced::_ensure_cache_for_size(FontDataAdvanced
fargs.memory_size = p_font_data->data_size;
fargs.flags = FT_OPEN_MEMORY;
fargs.stream = &fd->stream;
- error = FT_Open_Face(ft_library, &fargs, 0, &fd->face);
+
+ int max_index = 0;
+ FT_Face tmp_face;
+ error = FT_Open_Face(ft_library, &fargs, -1, &tmp_face);
+ if (error == 0) {
+ max_index = tmp_face->num_faces - 1;
+ }
+ FT_Done_Face(tmp_face);
+
+ error = FT_Open_Face(ft_library, &fargs, CLAMP(p_font_data->face_index, 0, max_index), &fd->face);
if (error) {
FT_Done_Face(fd->face);
fd->face = nullptr;
@@ -1329,7 +1338,7 @@ _FORCE_INLINE_ bool TextServerAdvanced::_ensure_cache_for_size(FontDataAdvanced
fd->underline_position = (-FT_MulFix(fd->face->underline_position, fd->face->size->metrics.y_scale) / 64.0) / fd->oversampling * fd->scale;
fd->underline_thickness = (FT_MulFix(fd->face->underline_thickness, fd->face->size->metrics.y_scale) / 64.0) / fd->oversampling * fd->scale;
- hb_font_set_synthetic_slant(fd->hb_handle, p_font_data->transform.columns[0][1]);
+ hb_font_set_synthetic_slant(fd->hb_handle, p_font_data->transform[0][1]);
if (!p_font_data->face_init) {
// Get style flags and name.
@@ -1720,6 +1729,69 @@ void TextServerAdvanced::font_set_data_ptr(const RID &p_font_rid, const uint8_t
fd->data_size = p_data_size;
}
+void TextServerAdvanced::font_set_face_index(const RID &p_font_rid, int64_t p_face_index) {
+ ERR_FAIL_COND(p_face_index < 0);
+ ERR_FAIL_COND(p_face_index >= 0x7FFF);
+
+ FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
+ ERR_FAIL_COND(!fd);
+
+ MutexLock lock(fd->mutex);
+ if (fd->face_index != p_face_index) {
+ fd->face_index = p_face_index;
+ _font_clear_cache(fd);
+ }
+}
+
+int64_t TextServerAdvanced::font_get_face_index(const RID &p_font_rid) const {
+ FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
+ ERR_FAIL_COND_V(!fd, 0);
+
+ MutexLock lock(fd->mutex);
+ return fd->face_index;
+}
+
+int64_t TextServerAdvanced::font_get_face_count(const RID &p_font_rid) const {
+ FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
+ ERR_FAIL_COND_V(!fd, 0);
+
+ MutexLock lock(fd->mutex);
+ int face_count = 0;
+
+ if (fd->data_ptr && (fd->data_size > 0)) {
+ // Init dynamic font.
+#ifdef MODULE_FREETYPE_ENABLED
+ int error = 0;
+ if (!ft_library) {
+ error = FT_Init_FreeType(&ft_library);
+ ERR_FAIL_COND_V_MSG(error != 0, false, "FreeType: Error initializing library: '" + String(FT_Error_String(error)) + "'.");
+ }
+
+ FT_StreamRec stream;
+ memset(&stream, 0, sizeof(FT_StreamRec));
+ stream.base = (unsigned char *)fd->data_ptr;
+ stream.size = fd->data_size;
+ stream.pos = 0;
+
+ FT_Open_Args fargs;
+ memset(&fargs, 0, sizeof(FT_Open_Args));
+ fargs.memory_base = (unsigned char *)fd->data_ptr;
+ fargs.memory_size = fd->data_size;
+ fargs.flags = FT_OPEN_MEMORY;
+ fargs.stream = &stream;
+
+ FT_Face tmp_face;
+ error = FT_Open_Face(ft_library, &fargs, -1, &tmp_face);
+ if (error == 0) {
+ face_count = tmp_face->num_faces;
+ }
+ FT_Done_Face(tmp_face);
+#endif
+ }
+
+ return face_count;
+}
+
void TextServerAdvanced::font_set_style(const RID &p_font_rid, int64_t /*FontStyle*/ p_style) {
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
ERR_FAIL_COND(!fd);
@@ -2780,7 +2852,7 @@ Vector2 TextServerAdvanced::font_get_kerning(const RID &p_font_rid, int64_t p_si
ERR_FAIL_COND_V(!_ensure_cache_for_size(fd, size), Vector2());
- const HashMap<Vector2i, Vector2, VariantHasher, VariantComparator> &kern = fd->cache[size]->kerning_map;
+ const HashMap<Vector2i, Vector2> &kern = fd->cache[size]->kerning_map;
if (kern.has(p_glyph_pair)) {
if (fd->msdf) {
@@ -3272,7 +3344,7 @@ void TextServerAdvanced::font_set_global_oversampling(double p_oversampling) {
int64_t TextServerAdvanced::_convert_pos(const String &p_utf32, const Char16String &p_utf16, int64_t p_pos) const {
int64_t limit = p_pos;
if (p_utf32.length() != p_utf16.length()) {
- const UChar *data = p_utf16.ptr();
+ const UChar *data = p_utf16.get_data();
for (int i = 0; i < p_pos; i++) {
if (U16_IS_LEAD(data[i])) {
limit--;
@@ -4132,7 +4204,7 @@ void TextServerAdvanced::shaped_text_overrun_trim_to_width(const RID &p_shaped_l
Glyph *sd_glyphs = sd->glyphs.ptrw();
- if ((p_trim_flags & OVERRUN_TRIM) == OVERRUN_NO_TRIMMING || sd_glyphs == nullptr || p_width <= 0 || !(sd->width > p_width || enforce_ellipsis)) {
+ if ((p_trim_flags & OVERRUN_TRIM) == OVERRUN_NO_TRIM || sd_glyphs == nullptr || p_width <= 0 || !(sd->width > p_width || enforce_ellipsis)) {
sd->overrun_trim_data.trim_pos = -1;
sd->overrun_trim_data.ellipsis_pos = -1;
return;
@@ -4780,6 +4852,9 @@ void TextServerAdvanced::_shape_run(ShapedTextDataAdvanced *p_sd, int64_t p_star
RID f = p_fonts[p_fb_index];
FontDataAdvanced *fd = font_owner.get_or_null(f);
+ ERR_FAIL_COND(!fd);
+ MutexLock lock(fd->mutex);
+
Vector2i fss = _get_size(fd, fs);
hb_font_t *hb_font = _font_get_hb_handle(f, fs);
double scale = font_get_scale(f, fs);
@@ -5591,7 +5666,7 @@ PackedInt32Array TextServerAdvanced::string_get_word_breaks(const String &p_stri
HashSet<int> breaks;
UErrorCode err = U_ZERO_ERROR;
- UBreakIterator *bi = ubrk_open(UBRK_LINE, p_language.ascii().get_data(), (const UChar *)utf16.ptr(), utf16.length(), &err);
+ UBreakIterator *bi = ubrk_open(UBRK_LINE, p_language.ascii().get_data(), (const UChar *)utf16.get_data(), utf16.length(), &err);
if (U_FAILURE(err)) {
// No data loaded - use fallback.
for (int i = 0; i < p_string.length(); i++) {
@@ -5640,8 +5715,10 @@ TextServerAdvanced::TextServerAdvanced() {
TextServerAdvanced::~TextServerAdvanced() {
_bmp_free_font_funcs();
+#ifdef MODULE_FREETYPE_ENABLED
if (ft_library != nullptr) {
FT_Done_FreeType(ft_library);
}
+#endif
u_cleanup();
}
diff --git a/modules/text_server_adv/text_server_adv.h b/modules/text_server_adv/text_server_adv.h
index fe1d4bdcbf..e7690cb70d 100644
--- a/modules/text_server_adv/text_server_adv.h
+++ b/modules/text_server_adv/text_server_adv.h
@@ -67,8 +67,8 @@
#include <godot_cpp/classes/ref.hpp>
#include <godot_cpp/templates/hash_map.hpp>
+#include <godot_cpp/templates/hash_set.hpp>
#include <godot_cpp/templates/rid_owner.hpp>
-#include <godot_cpp/templates/set.hpp>
#include <godot_cpp/templates/thread_work_pool.hpp>
#include <godot_cpp/templates/vector.hpp>
@@ -191,7 +191,7 @@ class TextServerAdvanced : public TextServerExtension {
Vector<FontTexture> textures;
HashMap<int32_t, FontGlyph> glyph_map;
- HashMap<Vector2i, Vector2, VariantHasher, VariantComparator> kerning_map;
+ HashMap<Vector2i, Vector2> kerning_map;
hb_font_t *hb_handle = nullptr;
#ifdef MODULE_FREETYPE_ENABLED
@@ -247,6 +247,7 @@ class TextServerAdvanced : public TextServerExtension {
PackedByteArray data;
const uint8_t *data_ptr;
size_t data_size;
+ int face_index = 0;
mutable ThreadWorkPool work_pool;
~FontDataAdvanced() {
@@ -473,6 +474,11 @@ public:
virtual void font_set_data(const RID &p_font_rid, const PackedByteArray &p_data) override;
virtual void font_set_data_ptr(const RID &p_font_rid, const uint8_t *p_data_ptr, int64_t p_data_size) override;
+ virtual void font_set_face_index(const RID &p_font_rid, int64_t p_index) override;
+ virtual int64_t font_get_face_index(const RID &p_font_rid) const override;
+
+ virtual int64_t font_get_face_count(const RID &p_font_rid) const override;
+
virtual void font_set_style(const RID &p_font_rid, int64_t /*FontStyle*/ p_style) override;
virtual int64_t /*FontStyle*/ font_get_style(const RID &p_font_rid) const override;
diff --git a/modules/text_server_fb/text_server_fb.cpp b/modules/text_server_fb/text_server_fb.cpp
index 498b58175e..f93c5909c9 100644
--- a/modules/text_server_fb/text_server_fb.cpp
+++ b/modules/text_server_fb/text_server_fb.cpp
@@ -733,7 +733,16 @@ _FORCE_INLINE_ bool TextServerFallback::_ensure_cache_for_size(FontDataFallback
fargs.memory_size = p_font_data->data_size;
fargs.flags = FT_OPEN_MEMORY;
fargs.stream = &fd->stream;
- error = FT_Open_Face(ft_library, &fargs, 0, &fd->face);
+
+ int max_index = 0;
+ FT_Face tmp_face;
+ error = FT_Open_Face(ft_library, &fargs, -1, &tmp_face);
+ if (error == 0) {
+ max_index = tmp_face->num_faces - 1;
+ }
+ FT_Done_Face(tmp_face);
+
+ error = FT_Open_Face(ft_library, &fargs, CLAMP(p_font_data->face_index, 0, max_index), &fd->face);
if (error) {
FT_Done_Face(fd->face);
fd->face = nullptr;
@@ -892,6 +901,69 @@ void TextServerFallback::font_set_style(const RID &p_font_rid, int64_t /*FontSty
fd->style_flags = p_style;
}
+void TextServerFallback::font_set_face_index(const RID &p_font_rid, int64_t p_face_index) {
+ ERR_FAIL_COND(p_face_index < 0);
+ ERR_FAIL_COND(p_face_index >= 0x7FFF);
+
+ FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
+ ERR_FAIL_COND(!fd);
+
+ MutexLock lock(fd->mutex);
+ if (fd->face_index != p_face_index) {
+ fd->face_index = p_face_index;
+ _font_clear_cache(fd);
+ }
+}
+
+int64_t TextServerFallback::font_get_face_index(const RID &p_font_rid) const {
+ FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
+ ERR_FAIL_COND_V(!fd, 0);
+
+ MutexLock lock(fd->mutex);
+ return fd->face_index;
+}
+
+int64_t TextServerFallback::font_get_face_count(const RID &p_font_rid) const {
+ FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
+ ERR_FAIL_COND_V(!fd, 0);
+
+ MutexLock lock(fd->mutex);
+ int face_count = 0;
+
+ if (fd->data_ptr && (fd->data_size > 0)) {
+ // Init dynamic font.
+#ifdef MODULE_FREETYPE_ENABLED
+ int error = 0;
+ if (!ft_library) {
+ error = FT_Init_FreeType(&ft_library);
+ ERR_FAIL_COND_V_MSG(error != 0, false, "FreeType: Error initializing library: '" + String(FT_Error_String(error)) + "'.");
+ }
+
+ FT_StreamRec stream;
+ memset(&stream, 0, sizeof(FT_StreamRec));
+ stream.base = (unsigned char *)fd->data_ptr;
+ stream.size = fd->data_size;
+ stream.pos = 0;
+
+ FT_Open_Args fargs;
+ memset(&fargs, 0, sizeof(FT_Open_Args));
+ fargs.memory_base = (unsigned char *)fd->data_ptr;
+ fargs.memory_size = fd->data_size;
+ fargs.flags = FT_OPEN_MEMORY;
+ fargs.stream = &stream;
+
+ FT_Face tmp_face;
+ error = FT_Open_Face(ft_library, &fargs, -1, &tmp_face);
+ if (error == 0) {
+ face_count = tmp_face->num_faces;
+ }
+ FT_Done_Face(tmp_face);
+#endif
+ }
+
+ return face_count;
+}
+
int64_t /*FontStyle*/ TextServerFallback::font_get_style(const RID &p_font_rid) const {
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
ERR_FAIL_COND_V(!fd, 0);
@@ -1928,7 +2000,7 @@ Vector2 TextServerFallback::font_get_kerning(const RID &p_font_rid, int64_t p_si
ERR_FAIL_COND_V(!_ensure_cache_for_size(fd, size), Vector2());
- const HashMap<Vector2i, Vector2, VariantHasher, VariantComparator> &kern = fd->cache[size]->kerning_map;
+ const HashMap<Vector2i, Vector2> &kern = fd->cache[size]->kerning_map;
if (kern.has(p_glyph_pair)) {
if (fd->msdf) {
@@ -3164,7 +3236,7 @@ void TextServerFallback::shaped_text_overrun_trim_to_width(const RID &p_shaped_l
Glyph *sd_glyphs = sd->glyphs.ptrw();
- if ((p_trim_flags & OVERRUN_TRIM) == OVERRUN_NO_TRIMMING || sd_glyphs == nullptr || p_width <= 0 || !(sd->width > p_width || enforce_ellipsis)) {
+ if ((p_trim_flags & OVERRUN_TRIM) == OVERRUN_NO_TRIM || sd_glyphs == nullptr || p_width <= 0 || !(sd->width > p_width || enforce_ellipsis)) {
sd->overrun_trim_data.trim_pos = -1;
sd->overrun_trim_data.ellipsis_pos = -1;
return;
diff --git a/modules/text_server_fb/text_server_fb.h b/modules/text_server_fb/text_server_fb.h
index 0d2fc2628d..e4c81aed5b 100644
--- a/modules/text_server_fb/text_server_fb.h
+++ b/modules/text_server_fb/text_server_fb.h
@@ -67,8 +67,8 @@
#include <godot_cpp/classes/ref.hpp>
#include <godot_cpp/templates/hash_map.hpp>
+#include <godot_cpp/templates/hash_set.hpp>
#include <godot_cpp/templates/rid_owner.hpp>
-#include <godot_cpp/templates/set.hpp>
#include <godot_cpp/templates/thread_work_pool.hpp>
#include <godot_cpp/templates/vector.hpp>
@@ -159,7 +159,7 @@ class TextServerFallback : public TextServerExtension {
Vector<FontTexture> textures;
HashMap<int32_t, FontGlyph> glyph_map;
- HashMap<Vector2i, Vector2, VariantHasher, VariantComparator> kerning_map;
+ HashMap<Vector2i, Vector2> kerning_map;
#ifdef MODULE_FREETYPE_ENABLED
FT_Face face = nullptr;
@@ -209,6 +209,7 @@ class TextServerFallback : public TextServerExtension {
PackedByteArray data;
const uint8_t *data_ptr;
size_t data_size;
+ int face_index = 0;
mutable ThreadWorkPool work_pool;
@@ -364,6 +365,11 @@ public:
virtual void font_set_data(const RID &p_font_rid, const PackedByteArray &p_data) override;
virtual void font_set_data_ptr(const RID &p_font_rid, const uint8_t *p_data_ptr, int64_t p_data_size) override;
+ virtual void font_set_face_index(const RID &p_font_rid, int64_t p_index) override;
+ virtual int64_t font_get_face_index(const RID &p_font_rid) const override;
+
+ virtual int64_t font_get_face_count(const RID &p_font_rid) const override;
+
virtual void font_set_style(const RID &p_font_rid, int64_t /*FontStyle*/ p_style) override;
virtual int64_t /*FontStyle*/ font_get_style(const RID &p_font_rid) const override;
diff --git a/modules/visual_script/editor/visual_script_editor.cpp b/modules/visual_script/editor/visual_script_editor.cpp
index 684faf7c8e..ceea0eaf1d 100644
--- a/modules/visual_script/editor/visual_script_editor.cpp
+++ b/modules/visual_script/editor/visual_script_editor.cpp
@@ -889,7 +889,49 @@ void VisualScriptEditor::_update_graph(int p_only_id) {
EditorResourcePreview::get_singleton()->queue_edited_resource_preview(res, this, "_button_resource_previewed", arr);
} else if (pi.type == Variant::INT && pi.hint == PROPERTY_HINT_ENUM) {
- button->set_text(pi.hint_string.get_slice(",", value));
+ bool found = false;
+ const Vector<String> options = pi.hint_string.split(",");
+ int64_t current_val = 0;
+ for (const String &option : options) {
+ Vector<String> text_split = option.split(":");
+ if (text_split.size() != 1) {
+ current_val = text_split[1].to_int();
+ }
+ if (value.operator int() == current_val) {
+ button->set_text(text_split[0]);
+ found = true;
+ break;
+ }
+ current_val += 1;
+ }
+ if (!found) {
+ button->set_text(value);
+ }
+ } else if (pi.type == Variant::INT && pi.hint == PROPERTY_HINT_FLAGS) {
+ Vector<String> value_texts;
+ const Vector<String> options = pi.hint_string.split(",");
+ uint32_t v = value;
+ for (const String &option : options) {
+ uint32_t current_val;
+ Vector<String> text_split = option.split(":");
+ if (text_split.size() != -1) {
+ current_val = text_split[1].to_int();
+ } else {
+ current_val = 1 << i;
+ }
+ if ((v & current_val) == current_val) {
+ value_texts.push_back(text_split[0]);
+ }
+ }
+ if (value_texts.size() != 0) {
+ String value_text = value_texts[0];
+ for (const String &text : value_texts) {
+ value_text += " | " + text;
+ }
+ button->set_text(value_text);
+ } else {
+ button->set_text(value);
+ }
} else {
button->set_text(value);
}
@@ -3933,6 +3975,9 @@ void VisualScriptEditor::_notification(int p_what) {
case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: {
graph->get_panner()->setup((ViewPanner::ControlScheme)EDITOR_GET("editors/panning/sub_editors_panning_scheme").operator int(), ED_GET_SHORTCUT("canvas_item_editor/pan_view"), bool(EditorSettings::get_singleton()->get("editors/panning/simple_panning")));
graph->set_warped_panning(bool(EditorSettings::get_singleton()->get("editors/panning/warped_mouse_panning")));
+ graph->set_minimap_opacity(EditorSettings::get_singleton()->get("editors/visual_editors/minimap_opacity"));
+ graph->set_connection_lines_curvature(EditorSettings::get_singleton()->get("editors/visual_editors/lines_curvature"));
+ _update_graph();
} break;
case NOTIFICATION_READY: {
diff --git a/modules/visual_script/visual_script.cpp b/modules/visual_script/visual_script.cpp
index 24bb22960e..c4fafb6676 100644
--- a/modules/visual_script/visual_script.cpp
+++ b/modules/visual_script/visual_script.cpp
@@ -1528,7 +1528,7 @@ Variant VisualScriptInstance::_call_internal(const StringName &p_method, void *p
// If no exit bit was set, and has sequence outputs, guess next node.
if (output >= node->sequence_output_count) {
r_error.error = Callable::CallError::CALL_ERROR_INVALID_METHOD;
- error_str = RTR("Node returned an invalid sequence output: ") + itos(output);
+ error_str = RTR("Node returned an invalid sequence output:") + " " + itos(output);
error = true;
break;
}
@@ -1582,7 +1582,7 @@ Variant VisualScriptInstance::_call_internal(const StringName &p_method, void *p
if (!found) {
r_error.error = Callable::CallError::CALL_ERROR_INVALID_METHOD;
- error_str = RTR("Found sequence bit but not the node in the stack, report bug!");
+ error_str = RTR("Found sequence bit but not the node in the stack (please report).");
error = true;
break;
}
@@ -1594,7 +1594,7 @@ Variant VisualScriptInstance::_call_internal(const StringName &p_method, void *p
// Check for stack overflow.
if (flow_stack_pos + 1 >= flow_max) {
r_error.error = Callable::CallError::CALL_ERROR_INVALID_METHOD;
- error_str = RTR("Stack overflow with stack depth: ") + itos(output);
+ error_str = vformat(RTR("Stack overflow (stack size: %s). Check for infinite recursion in your script."), output);
error = true;
break;
}
diff --git a/modules/visual_script/visual_script.h b/modules/visual_script/visual_script.h
index 0f3b8de3fc..c2e4d0e597 100644
--- a/modules/visual_script/visual_script.h
+++ b/modules/visual_script/visual_script.h
@@ -522,7 +522,7 @@ public:
if (_debug_call_stack_pos >= _debug_max_call_stack) {
// Stack overflow.
- _debug_error = "Stack Overflow (Stack Size: " + itos(_debug_max_call_stack) + ")";
+ _debug_error = vformat("Stack overflow (stack size: %s). Check for infinite recursion in your script.", _debug_max_call_stack);
EngineDebugger::get_script_debugger()->debug(this);
return;
}
@@ -545,7 +545,7 @@ public:
}
if (_debug_call_stack_pos == 0) {
- _debug_error = "Stack Underflow (Engine Bug)";
+ _debug_error = "Stack underflow (engine bug), please report.";
EngineDebugger::get_script_debugger()->debug(this);
return;
}
diff --git a/modules/visual_script/visual_script_flow_control.cpp b/modules/visual_script/visual_script_flow_control.cpp
index 0e63753720..bbbb995635 100644
--- a/modules/visual_script/visual_script_flow_control.cpp
+++ b/modules/visual_script/visual_script_flow_control.cpp
@@ -391,7 +391,7 @@ public:
if (!valid) {
r_error.error = Callable::CallError::CALL_ERROR_INVALID_METHOD;
- r_error_str = RTR("Input type not iterable: ") + Variant::get_type_name(p_inputs[0]->get_type());
+ r_error_str = RTR("Input type not iterable:") + " " + Variant::get_type_name(p_inputs[0]->get_type());
return 0;
}
@@ -414,7 +414,7 @@ public:
if (!valid) {
r_error.error = Callable::CallError::CALL_ERROR_INVALID_METHOD;
- r_error_str = RTR("Iterator became invalid: ") + Variant::get_type_name(p_inputs[0]->get_type());
+ r_error_str = RTR("Iterator became invalid:") + " " + Variant::get_type_name(p_inputs[0]->get_type());
return 0;
}
diff --git a/modules/visual_script/visual_script_nodes.cpp b/modules/visual_script/visual_script_nodes.cpp
index ac33526ddc..2dfc6da181 100644
--- a/modules/visual_script/visual_script_nodes.cpp
+++ b/modules/visual_script/visual_script_nodes.cpp
@@ -1116,9 +1116,9 @@ public:
r_error_str = *p_outputs[0];
} else {
if (unary) {
- r_error_str = String(Variant::get_operator_name(op)) + RTR(": Invalid argument of type: ") + Variant::get_type_name(p_inputs[0]->get_type());
+ r_error_str = String(Variant::get_operator_name(op)) + ": " + RTR("Invalid argument of type:") + " " + Variant::get_type_name(p_inputs[0]->get_type());
} else {
- r_error_str = String(Variant::get_operator_name(op)) + RTR(": Invalid arguments: ") + "A: " + Variant::get_type_name(p_inputs[0]->get_type()) + " B: " + Variant::get_type_name(p_inputs[1]->get_type());
+ r_error_str = String(Variant::get_operator_name(op)) + ": " + RTR("Invalid arguments:") + " A: " + Variant::get_type_name(p_inputs[0]->get_type()) + ", B: " + Variant::get_type_name(p_inputs[1]->get_type());
}
}
}
@@ -1335,7 +1335,7 @@ public:
virtual int step(const Variant **p_inputs, Variant **p_outputs, StartMode p_start_mode, Variant *p_working_mem, Callable::CallError &r_error, String &r_error_str) override {
if (!instance->get_variable(variable, p_outputs[0])) {
r_error.error = Callable::CallError::CALL_ERROR_INVALID_METHOD;
- r_error_str = RTR("VariableGet not found in script: ") + "'" + String(variable) + "'";
+ r_error_str = RTR("VariableGet not found in script:") + " '" + String(variable) + "'";
return 0;
}
return 0;
@@ -1447,7 +1447,7 @@ public:
virtual int step(const Variant **p_inputs, Variant **p_outputs, StartMode p_start_mode, Variant *p_working_mem, Callable::CallError &r_error, String &r_error_str) override {
if (!instance->set_variable(variable, *p_inputs[0])) {
r_error.error = Callable::CallError::CALL_ERROR_INVALID_METHOD;
- r_error_str = RTR("VariableSet not found in script: ") + "'" + String(variable) + "'";
+ r_error_str = RTR("VariableSet not found in script:") + " '" + String(variable) + "'";
}
return 0;
diff --git a/modules/vorbis/audio_stream_ogg_vorbis.cpp b/modules/vorbis/audio_stream_ogg_vorbis.cpp
index b645a48c88..89a6b03ff8 100644
--- a/modules/vorbis/audio_stream_ogg_vorbis.cpp
+++ b/modules/vorbis/audio_stream_ogg_vorbis.cpp
@@ -36,23 +36,22 @@
int AudioStreamPlaybackOGGVorbis::_mix_internal(AudioFrame *p_buffer, int p_frames) {
ERR_FAIL_COND_V(!ready, 0);
- ERR_FAIL_COND_V(!active, 0);
+
+ if (!active) {
+ return 0;
+ }
int todo = p_frames;
int start_buffer = 0;
- int frames_mixed_this_step = p_frames;
-
- while (todo && active) {
+ while (todo > 0 && active) {
AudioFrame *buffer = p_buffer;
if (start_buffer > 0) {
buffer = buffer + start_buffer;
}
int mixed = _mix_frames_vorbis(buffer, todo);
- if (mixed < 0) {
- return 0;
- }
+ ERR_FAIL_COND_V(mixed < 0, 0);
todo -= mixed;
frames_mixed += mixed;
start_buffer += mixed;
@@ -67,16 +66,14 @@ int AudioStreamPlaybackOGGVorbis::_mix_internal(AudioFrame *p_buffer, int p_fram
// we still have buffer to fill, start from this element in the next iteration.
start_buffer = p_frames - todo;
} else {
- frames_mixed_this_step = p_frames - todo;
for (int i = p_frames - todo; i < p_frames; i++) {
p_buffer[i] = AudioFrame(0, 0);
}
active = false;
- todo = 0;
}
}
}
- return frames_mixed_this_step;
+ return p_frames - todo;
}
int AudioStreamPlaybackOGGVorbis::_mix_frames_vorbis(AudioFrame *p_buffer, int p_frames) {
diff --git a/modules/webp/image_loader_webp.cpp b/modules/webp/image_loader_webp.cpp
index 0e41f6c973..778d562278 100644
--- a/modules/webp/image_loader_webp.cpp
+++ b/modules/webp/image_loader_webp.cpp
@@ -34,184 +34,21 @@
#include "core/io/marshalls.h"
#include "core/os/os.h"
#include "core/string/print_string.h"
+#include "webp_common.h"
#include <stdlib.h>
#include <webp/decode.h>
#include <webp/encode.h>
-static Vector<uint8_t> _webp_lossy_pack(const Ref<Image> &p_image, float p_quality) {
- ERR_FAIL_COND_V(p_image.is_null() || p_image->is_empty(), Vector<uint8_t>());
-
- Ref<Image> img = p_image->duplicate();
- if (img->detect_alpha()) {
- img->convert(Image::FORMAT_RGBA8);
- } else {
- img->convert(Image::FORMAT_RGB8);
- }
-
- Size2 s(img->get_width(), img->get_height());
- Vector<uint8_t> data = img->get_data();
- const uint8_t *r = data.ptr();
-
- uint8_t *dst_buff = nullptr;
- size_t dst_size = 0;
- if (img->get_format() == Image::FORMAT_RGB8) {
- dst_size = WebPEncodeRGB(r, s.width, s.height, 3 * s.width, CLAMP(p_quality * 100.0, 0, 100.0), &dst_buff);
- } else {
- dst_size = WebPEncodeRGBA(r, s.width, s.height, 4 * s.width, CLAMP(p_quality * 100.0, 0, 100.0), &dst_buff);
- }
-
- ERR_FAIL_COND_V(dst_size == 0, Vector<uint8_t>());
- Vector<uint8_t> dst;
- dst.resize(4 + dst_size);
- uint8_t *w = dst.ptrw();
- w[0] = 'W';
- w[1] = 'E';
- w[2] = 'B';
- w[3] = 'P';
- memcpy(&w[4], dst_buff, dst_size);
- WebPFree(dst_buff);
-
- return dst;
-}
-
-static Vector<uint8_t> _webp_lossless_pack(const Ref<Image> &p_image) {
- ERR_FAIL_COND_V(p_image.is_null() || p_image->is_empty(), Vector<uint8_t>());
-
- int compression_level = ProjectSettings::get_singleton()->get("rendering/textures/lossless_compression/webp_compression_level");
- compression_level = CLAMP(compression_level, 0, 9);
-
- Ref<Image> img = p_image->duplicate();
- if (img->detect_alpha()) {
- img->convert(Image::FORMAT_RGBA8);
- } else {
- img->convert(Image::FORMAT_RGB8);
- }
-
- Size2 s(img->get_width(), img->get_height());
- Vector<uint8_t> data = img->get_data();
- const uint8_t *r = data.ptr();
-
- // we need to use the more complex API in order to access the 'exact' flag...
-
- WebPConfig config;
- WebPPicture pic;
- if (!WebPConfigInit(&config) || !WebPConfigLosslessPreset(&config, compression_level) || !WebPPictureInit(&pic)) {
- ERR_FAIL_V(Vector<uint8_t>());
- }
-
- WebPMemoryWriter wrt;
- config.exact = 1;
- pic.use_argb = 1;
- pic.width = s.width;
- pic.height = s.height;
- pic.writer = WebPMemoryWrite;
- pic.custom_ptr = &wrt;
- WebPMemoryWriterInit(&wrt);
-
- bool success_import = false;
- if (img->get_format() == Image::FORMAT_RGB8) {
- success_import = WebPPictureImportRGB(&pic, r, 3 * s.width);
- } else {
- success_import = WebPPictureImportRGBA(&pic, r, 4 * s.width);
- }
- bool success_encode = false;
- if (success_import) {
- success_encode = WebPEncode(&config, &pic);
- }
- WebPPictureFree(&pic);
-
- if (!success_encode) {
- WebPMemoryWriterClear(&wrt);
- ERR_FAIL_V_MSG(Vector<uint8_t>(), "WebP packing failed.");
- }
-
- // copy from wrt
- Vector<uint8_t> dst;
- dst.resize(4 + wrt.size);
- uint8_t *w = dst.ptrw();
- w[0] = 'W';
- w[1] = 'E';
- w[2] = 'B';
- w[3] = 'P';
- memcpy(&w[4], wrt.mem, wrt.size);
- WebPMemoryWriterClear(&wrt);
-
- return dst;
-}
-
-static Ref<Image> _webp_unpack(const Vector<uint8_t> &p_buffer) {
- int size = p_buffer.size() - 4;
- ERR_FAIL_COND_V(size <= 0, Ref<Image>());
- const uint8_t *r = p_buffer.ptr();
-
- ERR_FAIL_COND_V(r[0] != 'W' || r[1] != 'E' || r[2] != 'B' || r[3] != 'P', Ref<Image>());
- WebPBitstreamFeatures features;
- if (WebPGetFeatures(&r[4], size, &features) != VP8_STATUS_OK) {
- ERR_FAIL_V_MSG(Ref<Image>(), "Error unpacking WEBP image.");
- }
-
- /*
- print_line("width: "+itos(features.width));
- print_line("height: "+itos(features.height));
- print_line("alpha: "+itos(features.has_alpha));
- */
-
- Vector<uint8_t> dst_image;
- int datasize = features.width * features.height * (features.has_alpha ? 4 : 3);
- dst_image.resize(datasize);
-
- uint8_t *dst_w = dst_image.ptrw();
-
- bool errdec = false;
- if (features.has_alpha) {
- errdec = WebPDecodeRGBAInto(&r[4], size, dst_w, datasize, 4 * features.width) == nullptr;
- } else {
- errdec = WebPDecodeRGBInto(&r[4], size, dst_w, datasize, 3 * features.width) == nullptr;
- }
-
- ERR_FAIL_COND_V_MSG(errdec, Ref<Image>(), "Failed decoding WebP image.");
-
- Ref<Image> img = memnew(Image(features.width, features.height, 0, features.has_alpha ? Image::FORMAT_RGBA8 : Image::FORMAT_RGB8, dst_image));
- return img;
-}
-
-Error webp_load_image_from_buffer(Image *p_image, const uint8_t *p_buffer, int p_buffer_len) {
- ERR_FAIL_NULL_V(p_image, ERR_INVALID_PARAMETER);
-
- WebPBitstreamFeatures features;
- if (WebPGetFeatures(p_buffer, p_buffer_len, &features) != VP8_STATUS_OK) {
- ERR_FAIL_V(ERR_FILE_CORRUPT);
- }
-
- Vector<uint8_t> dst_image;
- int datasize = features.width * features.height * (features.has_alpha ? 4 : 3);
- dst_image.resize(datasize);
- uint8_t *dst_w = dst_image.ptrw();
-
- bool errdec = false;
- if (features.has_alpha) {
- errdec = WebPDecodeRGBAInto(p_buffer, p_buffer_len, dst_w, datasize, 4 * features.width) == nullptr;
- } else {
- errdec = WebPDecodeRGBInto(p_buffer, p_buffer_len, dst_w, datasize, 3 * features.width) == nullptr;
- }
-
- ERR_FAIL_COND_V_MSG(errdec, ERR_FILE_CORRUPT, "Failed decoding WebP image.");
-
- p_image->create(features.width, features.height, false, features.has_alpha ? Image::FORMAT_RGBA8 : Image::FORMAT_RGB8, dst_image);
-
- return OK;
-}
-
static Ref<Image> _webp_mem_loader_func(const uint8_t *p_png, int p_size) {
Ref<Image> img;
img.instantiate();
- Error err = webp_load_image_from_buffer(img.ptr(), p_png, p_size);
+ Error err = WebPCommon::webp_load_image_from_buffer(img.ptr(), p_png, p_size);
ERR_FAIL_COND_V(err, Ref<Image>());
return img;
}
-Error ImageLoaderWEBP::load_image(Ref<Image> p_image, Ref<FileAccess> f, bool p_force_linear, float p_scale) {
+Error ImageLoaderWebP::load_image(Ref<Image> p_image, Ref<FileAccess> f, bool p_force_linear, float p_scale) {
Vector<uint8_t> src_image;
uint64_t src_image_len = f->get_length();
ERR_FAIL_COND_V(src_image_len == 0, ERR_FILE_CORRUPT);
@@ -221,18 +58,18 @@ Error ImageLoaderWEBP::load_image(Ref<Image> p_image, Ref<FileAccess> f, bool p_
f->get_buffer(&w[0], src_image_len);
- Error err = webp_load_image_from_buffer(p_image.ptr(), w, src_image_len);
+ Error err = WebPCommon::webp_load_image_from_buffer(p_image.ptr(), w, src_image_len);
return err;
}
-void ImageLoaderWEBP::get_recognized_extensions(List<String> *p_extensions) const {
+void ImageLoaderWebP::get_recognized_extensions(List<String> *p_extensions) const {
p_extensions->push_back("webp");
}
-ImageLoaderWEBP::ImageLoaderWEBP() {
+ImageLoaderWebP::ImageLoaderWebP() {
Image::_webp_mem_loader_func = _webp_mem_loader_func;
- Image::webp_lossy_packer = _webp_lossy_pack;
- Image::webp_lossless_packer = _webp_lossless_pack;
- Image::webp_unpacker = _webp_unpack;
+ Image::webp_lossy_packer = WebPCommon::_webp_lossy_pack;
+ Image::webp_lossless_packer = WebPCommon::_webp_lossless_pack;
+ Image::webp_unpacker = WebPCommon::_webp_unpack;
}
diff --git a/modules/webp/image_loader_webp.h b/modules/webp/image_loader_webp.h
index 1acd1459a0..448f683eb3 100644
--- a/modules/webp/image_loader_webp.h
+++ b/modules/webp/image_loader_webp.h
@@ -33,11 +33,11 @@
#include "core/io/image_loader.h"
-class ImageLoaderWEBP : public ImageFormatLoader {
+class ImageLoaderWebP : public ImageFormatLoader {
public:
virtual Error load_image(Ref<Image> p_image, Ref<FileAccess> f, bool p_force_linear, float p_scale);
virtual void get_recognized_extensions(List<String> *p_extensions) const;
- ImageLoaderWEBP();
+ ImageLoaderWebP();
};
#endif
diff --git a/modules/webp/register_types.cpp b/modules/webp/register_types.cpp
index 148e325498..29f633743e 100644
--- a/modules/webp/register_types.cpp
+++ b/modules/webp/register_types.cpp
@@ -31,16 +31,20 @@
#include "register_types.h"
#include "image_loader_webp.h"
+#include "resource_saver_webp.h"
-static ImageLoaderWEBP *image_loader_webp = nullptr;
+static ImageLoaderWebP *image_loader_webp = nullptr;
+static Ref<ResourceSaverWebP> resource_saver_webp;
void initialize_webp_module(ModuleInitializationLevel p_level) {
if (p_level != MODULE_INITIALIZATION_LEVEL_SCENE) {
return;
}
- image_loader_webp = memnew(ImageLoaderWEBP);
+ image_loader_webp = memnew(ImageLoaderWebP);
+ resource_saver_webp.instantiate();
ImageLoader::add_image_format_loader(image_loader_webp);
+ ResourceSaver::add_resource_format_saver(resource_saver_webp);
}
void uninitialize_webp_module(ModuleInitializationLevel p_level) {
@@ -49,4 +53,6 @@ void uninitialize_webp_module(ModuleInitializationLevel p_level) {
}
memdelete(image_loader_webp);
+ ResourceSaver::remove_resource_format_saver(resource_saver_webp);
+ resource_saver_webp.unref();
}
diff --git a/modules/webp/resource_saver_webp.cpp b/modules/webp/resource_saver_webp.cpp
new file mode 100644
index 0000000000..d270d39163
--- /dev/null
+++ b/modules/webp/resource_saver_webp.cpp
@@ -0,0 +1,90 @@
+/*************************************************************************/
+/* resource_saver_webp.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#include "resource_saver_webp.h"
+
+#include "core/io/file_access.h"
+#include "core/io/image.h"
+#include "scene/resources/texture.h"
+#include "webp_common.h"
+
+Error ResourceSaverWebP::save(const String &p_path, const Ref<Resource> &p_resource, uint32_t p_flags) {
+ Ref<ImageTexture> texture = p_resource;
+
+ ERR_FAIL_COND_V_MSG(!texture.is_valid(), ERR_INVALID_PARAMETER, "Can't save invalid texture as WEBP.");
+ ERR_FAIL_COND_V_MSG(!texture->get_width(), ERR_INVALID_PARAMETER, "Can't save empty texture as WEBP.");
+
+ Ref<Image> img = texture->get_image();
+
+ Error err = save_image(p_path, img);
+
+ return err;
+}
+
+Error ResourceSaverWebP::save_image(const String &p_path, const Ref<Image> &p_img, const bool p_lossy, const float p_quality) {
+ Vector<uint8_t> buffer = save_image_to_buffer(p_img, p_lossy, p_quality);
+ Error err;
+ Ref<FileAccess> file = FileAccess::open(p_path, FileAccess::WRITE, &err);
+ ERR_FAIL_COND_V_MSG(err, err, vformat("Can't save WEBP at path: '%s'.", p_path));
+
+ const uint8_t *reader = buffer.ptr();
+
+ file->store_buffer(reader, buffer.size());
+ if (file->get_error() != OK && file->get_error() != ERR_FILE_EOF) {
+ return ERR_CANT_CREATE;
+ }
+
+ return OK;
+}
+
+Vector<uint8_t> ResourceSaverWebP::save_image_to_buffer(const Ref<Image> &p_img, const bool p_lossy, const float p_quality) {
+ Vector<uint8_t> buffer;
+ if (p_lossy) {
+ buffer = WebPCommon::_webp_lossy_pack(p_img, p_quality);
+ } else {
+ buffer = WebPCommon::_webp_lossless_pack(p_img);
+ }
+ return buffer;
+}
+
+bool ResourceSaverWebP::recognize(const Ref<Resource> &p_resource) const {
+ return (p_resource.is_valid() && p_resource->is_class("ImageTexture"));
+}
+
+void ResourceSaverWebP::get_recognized_extensions(const Ref<Resource> &p_resource, List<String> *p_extensions) const {
+ if (Object::cast_to<ImageTexture>(*p_resource)) {
+ p_extensions->push_back("webp");
+ }
+}
+
+ResourceSaverWebP::ResourceSaverWebP() {
+ Image::save_webp_func = &save_image;
+ Image::save_webp_buffer_func = &save_image_to_buffer;
+}
diff --git a/modules/webp/resource_saver_webp.h b/modules/webp/resource_saver_webp.h
new file mode 100644
index 0000000000..59e944efa0
--- /dev/null
+++ b/modules/webp/resource_saver_webp.h
@@ -0,0 +1,49 @@
+/*************************************************************************/
+/* resource_saver_webp.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifndef RESOURCE_SAVER_WEBP_H
+#define RESOURCE_SAVER_WEBP_H
+
+#include "core/io/image.h"
+#include "core/io/resource_saver.h"
+
+class ResourceSaverWebP : public ResourceFormatSaver {
+public:
+ static Error save_image(const String &p_path, const Ref<Image> &p_img, const bool p_lossy = false, const float p_quality = 0.75f);
+ static Vector<uint8_t> save_image_to_buffer(const Ref<Image> &p_img, const bool p_lossy = false, const float p_quality = 0.75f);
+
+ virtual Error save(const String &p_path, const Ref<Resource> &p_resource, uint32_t p_flags = 0);
+ virtual bool recognize(const Ref<Resource> &p_resource) const;
+ virtual void get_recognized_extensions(const Ref<Resource> &p_resource, List<String> *p_extensions) const;
+
+ ResourceSaverWebP();
+};
+
+#endif // RESOURCE_SAVER_WEBP_H
diff --git a/modules/webp/webp_common.cpp b/modules/webp/webp_common.cpp
new file mode 100644
index 0000000000..8657a98853
--- /dev/null
+++ b/modules/webp/webp_common.cpp
@@ -0,0 +1,190 @@
+/*************************************************************************/
+/* webp_common.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#include "webp_common.h"
+
+#include "core/config/project_settings.h"
+#include "core/os/os.h"
+
+#include <string.h>
+#include <webp/decode.h>
+#include <webp/encode.h>
+
+namespace WebPCommon {
+Vector<uint8_t> _webp_lossy_pack(const Ref<Image> &p_image, float p_quality) {
+ ERR_FAIL_COND_V(p_image.is_null() || p_image->is_empty(), Vector<uint8_t>());
+
+ Ref<Image> img = p_image->duplicate();
+ if (img->detect_alpha()) {
+ img->convert(Image::FORMAT_RGBA8);
+ } else {
+ img->convert(Image::FORMAT_RGB8);
+ }
+
+ Size2 s(img->get_width(), img->get_height());
+ Vector<uint8_t> data = img->get_data();
+ const uint8_t *r = data.ptr();
+
+ uint8_t *dst_buff = nullptr;
+ size_t dst_size = 0;
+ if (img->get_format() == Image::FORMAT_RGB8) {
+ dst_size = WebPEncodeRGB(r, s.width, s.height, 3 * s.width, CLAMP(p_quality * 100.0f, 0.0f, 100.0f), &dst_buff);
+ } else {
+ dst_size = WebPEncodeRGBA(r, s.width, s.height, 4 * s.width, CLAMP(p_quality * 100.0f, 0.0f, 100.0f), &dst_buff);
+ }
+
+ ERR_FAIL_COND_V(dst_size == 0, Vector<uint8_t>());
+ Vector<uint8_t> dst;
+ dst.resize(dst_size);
+ uint8_t *w = dst.ptrw();
+ memcpy(w, dst_buff, dst_size);
+ WebPFree(dst_buff);
+
+ return dst;
+}
+
+Vector<uint8_t> _webp_lossless_pack(const Ref<Image> &p_image) {
+ ERR_FAIL_COND_V(p_image.is_null() || p_image->is_empty(), Vector<uint8_t>());
+
+ int compression_level = ProjectSettings::get_singleton()->get("rendering/textures/lossless_compression/webp_compression_level");
+ compression_level = CLAMP(compression_level, 0, 9);
+
+ Ref<Image> img = p_image->duplicate();
+ if (img->detect_alpha()) {
+ img->convert(Image::FORMAT_RGBA8);
+ } else {
+ img->convert(Image::FORMAT_RGB8);
+ }
+
+ Size2 s(img->get_width(), img->get_height());
+ Vector<uint8_t> data = img->get_data();
+ const uint8_t *r = data.ptr();
+
+ // we need to use the more complex API in order to access the 'exact' flag...
+
+ WebPConfig config;
+ WebPPicture pic;
+ if (!WebPConfigInit(&config) || !WebPConfigLosslessPreset(&config, compression_level) || !WebPPictureInit(&pic)) {
+ ERR_FAIL_V(Vector<uint8_t>());
+ }
+
+ WebPMemoryWriter wrt;
+ config.exact = 1;
+ pic.use_argb = 1;
+ pic.width = s.width;
+ pic.height = s.height;
+ pic.writer = WebPMemoryWrite;
+ pic.custom_ptr = &wrt;
+ WebPMemoryWriterInit(&wrt);
+
+ bool success_import = false;
+ if (img->get_format() == Image::FORMAT_RGB8) {
+ success_import = WebPPictureImportRGB(&pic, r, 3 * s.width);
+ } else {
+ success_import = WebPPictureImportRGBA(&pic, r, 4 * s.width);
+ }
+ bool success_encode = false;
+ if (success_import) {
+ success_encode = WebPEncode(&config, &pic);
+ }
+ WebPPictureFree(&pic);
+
+ if (!success_encode) {
+ WebPMemoryWriterClear(&wrt);
+ ERR_FAIL_V_MSG(Vector<uint8_t>(), "WebP packing failed.");
+ }
+
+ // copy from wrt
+ Vector<uint8_t> dst;
+ dst.resize(wrt.size);
+ uint8_t *w = dst.ptrw();
+ memcpy(w, wrt.mem, wrt.size);
+ WebPMemoryWriterClear(&wrt);
+ return dst;
+}
+
+Ref<Image> _webp_unpack(const Vector<uint8_t> &p_buffer) {
+ int size = p_buffer.size();
+ ERR_FAIL_COND_V(size <= 0, Ref<Image>());
+ const uint8_t *r = p_buffer.ptr();
+
+ // A WebP file uses a RIFF header, which starts with "RIFF____WEBP".
+ ERR_FAIL_COND_V(r[0] != 'R' || r[1] != 'I' || r[2] != 'F' || r[3] != 'F' || r[8] != 'W' || r[9] != 'E' || r[10] != 'B' || r[11] != 'P', Ref<Image>());
+ WebPBitstreamFeatures features;
+ if (WebPGetFeatures(r, size, &features) != VP8_STATUS_OK) {
+ ERR_FAIL_V_MSG(Ref<Image>(), "Error unpacking WEBP image.");
+ }
+
+ Vector<uint8_t> dst_image;
+ int datasize = features.width * features.height * (features.has_alpha ? 4 : 3);
+ dst_image.resize(datasize);
+
+ uint8_t *dst_w = dst_image.ptrw();
+
+ bool errdec = false;
+ if (features.has_alpha) {
+ errdec = WebPDecodeRGBAInto(r, size, dst_w, datasize, 4 * features.width) == nullptr;
+ } else {
+ errdec = WebPDecodeRGBInto(r, size, dst_w, datasize, 3 * features.width) == nullptr;
+ }
+
+ ERR_FAIL_COND_V_MSG(errdec, Ref<Image>(), "Failed decoding WebP image.");
+
+ Ref<Image> img = memnew(Image(features.width, features.height, 0, features.has_alpha ? Image::FORMAT_RGBA8 : Image::FORMAT_RGB8, dst_image));
+ return img;
+}
+
+Error webp_load_image_from_buffer(Image *p_image, const uint8_t *p_buffer, int p_buffer_len) {
+ ERR_FAIL_NULL_V(p_image, ERR_INVALID_PARAMETER);
+
+ WebPBitstreamFeatures features;
+ if (WebPGetFeatures(p_buffer, p_buffer_len, &features) != VP8_STATUS_OK) {
+ ERR_FAIL_V(ERR_FILE_CORRUPT);
+ }
+
+ Vector<uint8_t> dst_image;
+ int datasize = features.width * features.height * (features.has_alpha ? 4 : 3);
+ dst_image.resize(datasize);
+ uint8_t *dst_w = dst_image.ptrw();
+
+ bool errdec = false;
+ if (features.has_alpha) {
+ errdec = WebPDecodeRGBAInto(p_buffer, p_buffer_len, dst_w, datasize, 4 * features.width) == nullptr;
+ } else {
+ errdec = WebPDecodeRGBInto(p_buffer, p_buffer_len, dst_w, datasize, 3 * features.width) == nullptr;
+ }
+
+ ERR_FAIL_COND_V_MSG(errdec, ERR_FILE_CORRUPT, "Failed decoding WebP image.");
+
+ p_image->create(features.width, features.height, false, features.has_alpha ? Image::FORMAT_RGBA8 : Image::FORMAT_RGB8, dst_image);
+
+ return OK;
+}
+} // namespace WebPCommon
diff --git a/modules/webp/webp_common.h b/modules/webp/webp_common.h
new file mode 100644
index 0000000000..11bef40256
--- /dev/null
+++ b/modules/webp/webp_common.h
@@ -0,0 +1,45 @@
+/*************************************************************************/
+/* webp_common.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifndef WEBP_COMMON_H
+#define WEBP_COMMON_H
+
+#include "core/io/image.h"
+
+namespace WebPCommon {
+// Given an image, pack this data into a WebP file.
+Vector<uint8_t> _webp_lossy_pack(const Ref<Image> &p_image, float p_quality);
+Vector<uint8_t> _webp_lossless_pack(const Ref<Image> &p_image);
+// Given a WebP file, unpack it into an image.
+Ref<Image> _webp_unpack(const Vector<uint8_t> &p_buffer);
+Error webp_load_image_from_buffer(Image *p_image, const uint8_t *p_buffer, int p_buffer_len);
+} //namespace WebPCommon
+
+#endif // WEBP_COMMON_H
diff --git a/modules/webrtc/doc_classes/WebRTCPeerConnection.xml b/modules/webrtc/doc_classes/WebRTCPeerConnection.xml
index b4d97077e3..fed67397d1 100644
--- a/modules/webrtc/doc_classes/WebRTCPeerConnection.xml
+++ b/modules/webrtc/doc_classes/WebRTCPeerConnection.xml
@@ -95,6 +95,13 @@
Call this method frequently (e.g. in [method Node._process] or [method Node._physics_process]) to properly receive signals.
</description>
</method>
+ <method name="set_default_extension" qualifiers="static">
+ <return type="void" />
+ <argument index="0" name="extension_class" type="StringName" />
+ <description>
+ Sets the [code]extension_class[/code] as the default [WebRTCPeerConnectionExtension] returned when creating a new [WebRTCPeerConnection].
+ </description>
+ </method>
<method name="set_local_description">
<return type="int" enum="Error" />
<argument index="0" name="type" type="String" />
diff --git a/modules/webrtc/doc_classes/WebRTCPeerConnectionExtension.xml b/modules/webrtc/doc_classes/WebRTCPeerConnectionExtension.xml
index e88acdc845..163d939ac1 100644
--- a/modules/webrtc/doc_classes/WebRTCPeerConnectionExtension.xml
+++ b/modules/webrtc/doc_classes/WebRTCPeerConnectionExtension.xml
@@ -62,10 +62,5 @@
<description>
</description>
</method>
- <method name="make_default">
- <return type="void" />
- <description>
- </description>
- </method>
</methods>
</class>
diff --git a/modules/webrtc/webrtc_peer_connection.cpp b/modules/webrtc/webrtc_peer_connection.cpp
index 7fdf26d3cd..75716017d7 100644
--- a/modules/webrtc/webrtc_peer_connection.cpp
+++ b/modules/webrtc/webrtc_peer_connection.cpp
@@ -32,13 +32,14 @@
#ifdef JAVASCRIPT_ENABLED
#include "webrtc_peer_connection_js.h"
-#else
-#include "webrtc_peer_connection_extension.h"
#endif
+#include "webrtc_peer_connection_extension.h"
+
StringName WebRTCPeerConnection::default_extension;
void WebRTCPeerConnection::set_default_extension(const StringName &p_extension) {
+ ERR_FAIL_COND_MSG(!ClassDB::is_parent_class(p_extension, WebRTCPeerConnectionExtension::get_class_static()), vformat("Can't make %s the default WebRTC extension since it does not extend WebRTCPeerConnectionExtension.", p_extension));
default_extension = p_extension;
}
@@ -56,6 +57,8 @@ WebRTCPeerConnection *WebRTCPeerConnection::create() {
}
void WebRTCPeerConnection::_bind_methods() {
+ ClassDB::bind_static_method(get_class_static(), D_METHOD("set_default_extension", "extension_class"), &WebRTCPeerConnectionExtension::set_default_extension);
+
ClassDB::bind_method(D_METHOD("initialize", "configuration"), &WebRTCPeerConnection::initialize, DEFVAL(Dictionary()));
ClassDB::bind_method(D_METHOD("create_data_channel", "label", "options"), &WebRTCPeerConnection::create_data_channel, DEFVAL(Dictionary()));
ClassDB::bind_method(D_METHOD("create_offer"), &WebRTCPeerConnection::create_offer);
diff --git a/modules/webrtc/webrtc_peer_connection_extension.cpp b/modules/webrtc/webrtc_peer_connection_extension.cpp
index 3bc7de217e..85c04b3b19 100644
--- a/modules/webrtc/webrtc_peer_connection_extension.cpp
+++ b/modules/webrtc/webrtc_peer_connection_extension.cpp
@@ -31,8 +31,6 @@
#include "webrtc_peer_connection_extension.h"
void WebRTCPeerConnectionExtension::_bind_methods() {
- ClassDB::bind_method(D_METHOD("make_default"), &WebRTCPeerConnectionExtension::make_default);
-
GDVIRTUAL_BIND(_get_connection_state);
GDVIRTUAL_BIND(_initialize, "p_config");
GDVIRTUAL_BIND(_create_data_channel, "p_label", "p_config");
@@ -44,11 +42,6 @@ void WebRTCPeerConnectionExtension::_bind_methods() {
GDVIRTUAL_BIND(_close);
}
-void WebRTCPeerConnectionExtension::make_default() {
- ERR_FAIL_COND_MSG(!_get_extension(), vformat("Can't make %s the default without extending it.", get_class()));
- WebRTCPeerConnection::set_default_extension(get_class());
-}
-
WebRTCPeerConnection::ConnectionState WebRTCPeerConnectionExtension::get_connection_state() const {
int state;
if (GDVIRTUAL_CALL(_get_connection_state, state)) {
diff --git a/modules/webrtc/webrtc_peer_connection_extension.h b/modules/webrtc/webrtc_peer_connection_extension.h
index 82e32b5602..bde19c173b 100644
--- a/modules/webrtc/webrtc_peer_connection_extension.h
+++ b/modules/webrtc/webrtc_peer_connection_extension.h
@@ -44,8 +44,6 @@ protected:
static void _bind_methods();
public:
- void make_default();
-
virtual ConnectionState get_connection_state() const override;
virtual Error initialize(Dictionary p_config = Dictionary()) override;
diff --git a/platform/android/export/export_plugin.cpp b/platform/android/export/export_plugin.cpp
index c692f10fd1..73c6fcc7e8 100644
--- a/platform/android/export/export_plugin.cpp
+++ b/platform/android/export/export_plugin.cpp
@@ -1818,7 +1818,7 @@ Error EditorExportPlatformAndroid::run(const Ref<EditorExportPreset> &p_preset,
String can_export_error;
bool can_export_missing_templates;
if (!can_export(p_preset, can_export_error, can_export_missing_templates)) {
- EditorNode::add_io_error(can_export_error);
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Run"), can_export_error);
return ERR_UNCONFIGURED;
}
@@ -1897,7 +1897,7 @@ Error EditorExportPlatformAndroid::run(const Ref<EditorExportPreset> &p_preset,
err = OS::get_singleton()->execute(adb, args, &output, &rv, true);
print_verbose(output);
if (err || rv != 0) {
- EditorNode::add_io_error(vformat(TTR("Could not install to device: %s"), output));
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Run"), vformat(TTR("Could not install to device: %s"), output));
CLEANUP_AND_RETURN(ERR_CANT_CREATE);
}
@@ -1975,7 +1975,7 @@ Error EditorExportPlatformAndroid::run(const Ref<EditorExportPreset> &p_preset,
err = OS::get_singleton()->execute(adb, args, &output, &rv, true);
print_verbose(output);
if (err || rv != 0) {
- EditorNode::add_io_error(TTR("Could not execute on device."));
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Run"), TTR("Could not execute on device."));
CLEANUP_AND_RETURN(ERR_CANT_CREATE);
}
@@ -2030,7 +2030,7 @@ String EditorExportPlatformAndroid::get_apksigner_path() {
da->list_dir_end();
if (apksigner_path.is_empty()) {
- EditorNode::get_singleton()->show_warning(TTR("Unable to find the 'apksigner' tool."));
+ print_error("Unable to find the 'apksigner' tool.");
}
return apksigner_path;
@@ -2335,7 +2335,7 @@ Error EditorExportPlatformAndroid::sign_apk(const Ref<EditorExportPreset> &p_pre
String apksigner = get_apksigner_path();
print_verbose("Starting signing of the " + export_label + " binary using " + apksigner);
if (!FileAccess::exists(apksigner)) {
- EditorNode::add_io_error(vformat(TTR("'apksigner' could not be found.\nPlease check the command is available in the Android SDK build-tools directory.\nThe resulting %s is unsigned."), export_label));
+ add_message(EXPORT_MESSAGE_WARNING, TTR("Code Signing"), vformat(TTR("'apksigner' could not be found. Please check that the command is available in the Android SDK build-tools directory. The resulting %s is unsigned."), export_label));
return OK;
}
@@ -2368,7 +2368,7 @@ Error EditorExportPlatformAndroid::sign_apk(const Ref<EditorExportPreset> &p_pre
}
if (!FileAccess::exists(keystore)) {
- EditorNode::add_io_error(TTR("Could not find keystore, unable to export."));
+ add_message(EXPORT_MESSAGE_WARNING, TTR("Code Signing"), TTR("Could not find keystore, unable to export."));
return ERR_FILE_CANT_OPEN;
}
@@ -2389,10 +2389,14 @@ Error EditorExportPlatformAndroid::sign_apk(const Ref<EditorExportPreset> &p_pre
}
int retval;
output.clear();
- OS::get_singleton()->execute(apksigner, args, &output, &retval, true);
+ Error err = OS::get_singleton()->execute(apksigner, args, &output, &retval, true);
+ if (err != OK) {
+ add_message(EXPORT_MESSAGE_WARNING, TTR("Code Signing"), TTR("Could not start apksigner executable."));
+ return err;
+ }
print_verbose(output);
if (retval) {
- EditorNode::add_io_error(vformat(TTR("'apksigner' returned with error #%d"), retval));
+ add_message(EXPORT_MESSAGE_WARNING, TTR("Code Signing"), vformat(TTR("'apksigner' returned with error #%d"), retval));
return ERR_CANT_CREATE;
}
@@ -2409,10 +2413,14 @@ Error EditorExportPlatformAndroid::sign_apk(const Ref<EditorExportPreset> &p_pre
}
output.clear();
- OS::get_singleton()->execute(apksigner, args, &output, &retval, true);
+ err = OS::get_singleton()->execute(apksigner, args, &output, &retval, true);
+ if (err != OK) {
+ add_message(EXPORT_MESSAGE_WARNING, TTR("Code Signing"), TTR("Could not start apksigner executable."));
+ return err;
+ }
print_verbose(output);
if (retval) {
- EditorNode::add_io_error(vformat(TTR("'apksigner' verification of %s failed."), export_label));
+ add_message(EXPORT_MESSAGE_WARNING, TTR("Code Signing"), vformat(TTR("'apksigner' verification of %s failed."), export_label));
return ERR_CANT_CREATE;
}
@@ -2520,22 +2528,21 @@ Error EditorExportPlatformAndroid::export_project_helper(const Ref<EditorExportP
if (export_format == EXPORT_FORMAT_AAB) {
if (!p_path.ends_with(".aab")) {
- EditorNode::get_singleton()->show_warning(TTR("Invalid filename! Android App Bundle requires the *.aab extension."));
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), TTR("Invalid filename! Android App Bundle requires the *.aab extension."));
return ERR_UNCONFIGURED;
}
if (apk_expansion) {
- EditorNode::get_singleton()->show_warning(TTR("APK Expansion not compatible with Android App Bundle."));
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), TTR("APK Expansion not compatible with Android App Bundle."));
return ERR_UNCONFIGURED;
}
}
if (export_format == EXPORT_FORMAT_APK && !p_path.ends_with(".apk")) {
- EditorNode::get_singleton()->show_warning(
- TTR("Invalid filename! Android APK requires the *.apk extension."));
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), TTR("Invalid filename! Android APK requires the *.apk extension."));
return ERR_UNCONFIGURED;
}
if (export_format > EXPORT_FORMAT_AAB || export_format < EXPORT_FORMAT_APK) {
- EditorNode::add_io_error(TTR("Unsupported export format!\n"));
- return ERR_UNCONFIGURED; //TODO: is this the right error?
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), TTR("Unsupported export format!"));
+ return ERR_UNCONFIGURED;
}
if (use_custom_build) {
@@ -2545,13 +2552,13 @@ Error EditorExportPlatformAndroid::export_project_helper(const Ref<EditorExportP
print_verbose("Checking build version..");
Ref<FileAccess> f = FileAccess::open("res://android/.build_version", FileAccess::READ);
if (f.is_null()) {
- EditorNode::get_singleton()->show_warning(TTR("Trying to build from a custom built template, but no version info for it exists. Please reinstall from the 'Project' menu."));
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), TTR("Trying to build from a custom built template, but no version info for it exists. Please reinstall from the 'Project' menu."));
return ERR_UNCONFIGURED;
}
String version = f->get_line().strip_edges();
print_verbose("- build version: " + version);
if (version != VERSION_FULL_CONFIG) {
- EditorNode::get_singleton()->show_warning(vformat(TTR("Android build version mismatch:\n Template installed: %s\n Godot Version: %s\nPlease reinstall Android build template from 'Project' menu."), version, VERSION_FULL_CONFIG));
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), vformat(TTR("Android build version mismatch: Template installed: %s, Godot version: %s. Please reinstall Android build template from 'Project' menu."), version, VERSION_FULL_CONFIG));
return ERR_UNCONFIGURED;
}
}
@@ -2564,7 +2571,7 @@ Error EditorExportPlatformAndroid::export_project_helper(const Ref<EditorExportP
String project_name = get_project_name(p_preset->get("package/name"));
err = _create_project_name_strings_files(p_preset, project_name); //project name localization.
if (err != OK) {
- EditorNode::add_io_error(TTR("Unable to overwrite res://android/build/res/*.xml files with project name"));
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), TTR("Unable to overwrite res://android/build/res/*.xml files with project name."));
}
// Copies the project icon files into the appropriate Gradle project directory.
_copy_icons_to_gradle_project(p_preset, processed_splash_config_xml, splash_image, splash_bg_color_image, main_image, foreground, background);
@@ -2581,7 +2588,7 @@ Error EditorExportPlatformAndroid::export_project_helper(const Ref<EditorExportP
user_data.debug = p_debug;
err = export_project_files(p_preset, p_debug, rename_and_store_file_in_gradle_project, &user_data, copy_gradle_so);
if (err != OK) {
- EditorNode::add_io_error(TTR("Could not export project files to gradle project\n"));
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), TTR("Could not export project files to gradle project."));
return err;
}
if (user_data.libs.size() > 0) {
@@ -2593,7 +2600,7 @@ Error EditorExportPlatformAndroid::export_project_helper(const Ref<EditorExportP
print_verbose("Saving apk expansion file..");
err = save_apk_expansion_file(p_preset, p_debug, p_path);
if (err != OK) {
- EditorNode::add_io_error(TTR("Could not write expansion package file!"));
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), TTR("Could not write expansion package file!"));
return err;
}
}
@@ -2678,7 +2685,7 @@ Error EditorExportPlatformAndroid::export_project_helper(const Ref<EditorExportP
debug_keystore = OS::get_singleton()->get_resource_dir().plus_file(debug_keystore).simplify_path();
}
if (!FileAccess::exists(debug_keystore)) {
- EditorNode::add_io_error(TTR("Could not find keystore, unable to export."));
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Code Signing"), TTR("Could not find keystore, unable to export."));
return ERR_FILE_CANT_OPEN;
}
@@ -2694,7 +2701,7 @@ Error EditorExportPlatformAndroid::export_project_helper(const Ref<EditorExportP
release_keystore = OS::get_singleton()->get_resource_dir().plus_file(release_keystore).simplify_path();
}
if (!FileAccess::exists(release_keystore)) {
- EditorNode::add_io_error(TTR("Could not find keystore, unable to export."));
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Code Signing"), TTR("Could not find keystore, unable to export."));
return ERR_FILE_CANT_OPEN;
}
@@ -2706,7 +2713,7 @@ Error EditorExportPlatformAndroid::export_project_helper(const Ref<EditorExportP
int result = EditorNode::get_singleton()->execute_and_show_output(TTR("Building Android Project (gradle)"), build_command, cmdline);
if (result != 0) {
- EditorNode::get_singleton()->show_warning(TTR("Building of Android project failed, check output for the error.\nAlternatively visit docs.godotengine.org for Android build documentation."));
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), TTR("Building of Android project failed, check output for the error. Alternatively visit docs.godotengine.org for Android build documentation."));
return ERR_CANT_CREATE;
}
@@ -2736,7 +2743,7 @@ Error EditorExportPlatformAndroid::export_project_helper(const Ref<EditorExportP
print_verbose("Copying Android binary using gradle command: " + String("\n") + build_command + " " + join_list(copy_args, String(" ")));
int copy_result = EditorNode::get_singleton()->execute_and_show_output(TTR("Moving output"), build_command, copy_args);
if (copy_result != 0) {
- EditorNode::get_singleton()->show_warning(TTR("Unable to copy and rename export file, check gradle project directory for outputs."));
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), TTR("Unable to copy and rename export file, check gradle project directory for outputs."));
return ERR_CANT_CREATE;
}
@@ -2758,7 +2765,7 @@ Error EditorExportPlatformAndroid::export_project_helper(const Ref<EditorExportP
src_apk = find_export_template("android_release.apk");
}
if (src_apk.is_empty()) {
- EditorNode::add_io_error(vformat(TTR("Package not found: %s"), src_apk));
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), vformat(TTR("Package not found: \"%s\"."), src_apk));
return ERR_FILE_NOT_FOUND;
}
}
@@ -2776,7 +2783,7 @@ Error EditorExportPlatformAndroid::export_project_helper(const Ref<EditorExportP
unzFile pkg = unzOpen2(src_apk.utf8().get_data(), &io);
if (!pkg) {
- EditorNode::add_io_error(vformat(TTR("Could not find template APK to export:\n%s"), src_apk));
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), vformat(TTR("Could not find template APK to export: \"%s\"."), src_apk));
return ERR_FILE_NOT_FOUND;
}
@@ -2907,7 +2914,7 @@ Error EditorExportPlatformAndroid::export_project_helper(const Ref<EditorExportP
if (!invalid_abis.is_empty()) {
String unsupported_arch = String(", ").join(invalid_abis);
- EditorNode::add_io_error(vformat(TTR("Missing libraries in the export template for the selected architectures: %s.\nPlease build a template with all required libraries, or uncheck the missing architectures in the export preset."), unsupported_arch));
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), vformat(TTR("Missing libraries in the export template for the selected architectures: %s. Please build a template with all required libraries, or uncheck the missing architectures in the export preset."), unsupported_arch));
CLEANUP_AND_RETURN(ERR_FILE_NOT_FOUND);
}
@@ -2925,7 +2932,7 @@ Error EditorExportPlatformAndroid::export_project_helper(const Ref<EditorExportP
if (apk_expansion) {
err = save_apk_expansion_file(p_preset, p_debug, p_path);
if (err != OK) {
- EditorNode::add_io_error(TTR("Could not write expansion package file!"));
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), TTR("Could not write expansion package file!"));
return err;
}
} else {
@@ -2938,7 +2945,7 @@ Error EditorExportPlatformAndroid::export_project_helper(const Ref<EditorExportP
if (err != OK) {
unzClose(pkg);
- EditorNode::add_io_error(TTR("Could not export project files"));
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), vformat(TTR("Could not export project files.")));
CLEANUP_AND_RETURN(ERR_SKIP);
}
@@ -2974,7 +2981,7 @@ Error EditorExportPlatformAndroid::export_project_helper(const Ref<EditorExportP
unzFile tmp_unaligned = unzOpen2(tmp_unaligned_path.utf8().get_data(), &io);
if (!tmp_unaligned) {
- EditorNode::add_io_error(TTR("Could not unzip temporary unaligned APK."));
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), vformat(TTR("Could not unzip temporary unaligned APK.")));
CLEANUP_AND_RETURN(ERR_FILE_NOT_FOUND);
}
diff --git a/platform/android/java/editor/src/main/java/org/godotengine/editor/GodotEditor.java b/platform/android/java/editor/src/main/java/org/godotengine/editor/GodotEditor.kt
index c05ed965ca..a1ade722e8 100644
--- a/platform/android/java/editor/src/main/java/org/godotengine/editor/GodotEditor.java
+++ b/platform/android/java/editor/src/main/java/org/godotengine/editor/GodotEditor.kt
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* GodotEditor.java */
+/* GodotEditor.kt */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,23 +28,17 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-package org.godotengine.editor;
+package org.godotengine.editor
-import org.godotengine.godot.FullScreenGodotApp;
-import org.godotengine.godot.utils.PermissionsUtil;
-
-import android.content.Intent;
-import android.os.Build;
-import android.os.Bundle;
-import android.os.Debug;
-
-import androidx.annotation.Nullable;
-import androidx.window.layout.WindowMetrics;
-import androidx.window.layout.WindowMetricsCalculator;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
+import android.content.Intent
+import android.os.Build
+import android.os.Bundle
+import android.os.Debug
+import androidx.window.layout.WindowMetricsCalculator
+import org.godotengine.godot.FullScreenGodotApp
+import org.godotengine.godot.utils.PermissionsUtil
+import java.util.*
+import kotlin.math.min
/**
* Base class for the Godot Android Editor activities.
@@ -55,97 +49,98 @@ import java.util.List;
*
* It also plays the role of the primary editor window.
*/
-public class GodotEditor extends FullScreenGodotApp {
- private static final boolean WAIT_FOR_DEBUGGER = false;
- private static final String COMMAND_LINE_PARAMS = "command_line_params";
+open class GodotEditor : FullScreenGodotApp() {
- private static final String EDITOR_ARG = "--editor";
- private static final String PROJECT_MANAGER_ARG = "--project-manager";
+ companion object {
+ private const val WAIT_FOR_DEBUGGER = false
- private final List<String> commandLineParams = new ArrayList<>();
+ private const val COMMAND_LINE_PARAMS = "command_line_params"
- @Override
- public void onCreate(Bundle savedInstanceState) {
- PermissionsUtil.requestManifestPermissions(this);
+ private const val EDITOR_ARG = "--editor"
+ private const val PROJECT_MANAGER_ARG = "--project-manager"
+ }
- String[] params = getIntent().getStringArrayExtra(COMMAND_LINE_PARAMS);
- updateCommandLineParams(params);
+ private val commandLineParams = ArrayList<String>()
- if (BuildConfig.BUILD_TYPE.equals("debug") && WAIT_FOR_DEBUGGER) {
- Debug.waitForDebugger();
+ override fun onCreate(savedInstanceState: Bundle?) {
+ PermissionsUtil.requestManifestPermissions(this)
+
+ val params = intent.getStringArrayExtra(COMMAND_LINE_PARAMS)
+ updateCommandLineParams(params)
+
+ if (BuildConfig.BUILD_TYPE == "debug" && WAIT_FOR_DEBUGGER) {
+ Debug.waitForDebugger()
}
- super.onCreate(savedInstanceState);
+
+ super.onCreate(savedInstanceState)
}
- private void updateCommandLineParams(@Nullable String[] args) {
+ private fun updateCommandLineParams(args: Array<String>?) {
// Update the list of command line params with the new args
- commandLineParams.clear();
- if (args != null && args.length > 0) {
- commandLineParams.addAll(Arrays.asList(args));
+ commandLineParams.clear()
+ if (args != null && args.isNotEmpty()) {
+ commandLineParams.addAll(listOf(*args))
}
}
- @Override
- public List<String> getCommandLine() {
- return commandLineParams;
- }
+ override fun getCommandLine() = commandLineParams
- @Override
- public void onNewGodotInstanceRequested(String[] args) {
+ override fun onNewGodotInstanceRequested(args: Array<String>) {
// Parse the arguments to figure out which activity to start.
- Class<?> targetClass = GodotGame.class;
+ var targetClass: Class<*> = GodotGame::class.java
+
// Whether we should launch the new godot instance in an adjacent window
// https://developer.android.com/reference/android/content/Intent#FLAG_ACTIVITY_LAUNCH_ADJACENT
- boolean launchAdjacent = Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && (isInMultiWindowMode() || isLargeScreen());
-
- for (String arg : args) {
- if (EDITOR_ARG.equals(arg)) {
- targetClass = GodotEditor.class;
- launchAdjacent = false;
- break;
+ var launchAdjacent =
+ Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && (isInMultiWindowMode || isLargeScreen)
+
+ for (arg in args) {
+ if (EDITOR_ARG == arg) {
+ targetClass = GodotEditor::class.java
+ launchAdjacent = false
+ break
}
- if (PROJECT_MANAGER_ARG.equals(arg)) {
- targetClass = GodotProjectManager.class;
- launchAdjacent = false;
- break;
+ if (PROJECT_MANAGER_ARG == arg) {
+ targetClass = GodotProjectManager::class.java
+ launchAdjacent = false
+ break
}
}
// Launch a new activity
- Intent newInstance = new Intent(this, targetClass)
- .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
- .putExtra(COMMAND_LINE_PARAMS, args);
+ val newInstance = Intent(this, targetClass)
+ .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+ .putExtra(COMMAND_LINE_PARAMS, args)
if (launchAdjacent) {
- newInstance.addFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT);
+ newInstance.addFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT)
}
- startActivity(newInstance);
+ startActivity(newInstance)
}
- protected boolean isLargeScreen() {
- WindowMetrics metrics =
- WindowMetricsCalculator.getOrCreate().computeMaximumWindowMetrics(this);
+ // Get the screen's density scale
+ protected val isLargeScreen: Boolean
+ // Get the minimum window size // Correspond to the EXPANDED window size class.
+ get() {
+ val metrics = WindowMetricsCalculator.getOrCreate().computeMaximumWindowMetrics(this)
- // Get the screen's density scale
- float scale = getResources().getDisplayMetrics().density;
+ // Get the screen's density scale
+ val scale = resources.displayMetrics.density
- // Get the minimum window size
- float minSize = Math.min(metrics.getBounds().width(), metrics.getBounds().height());
- float minSizeDp = minSize / scale;
- return minSizeDp >= 840f; // Correspond to the EXPANDED window size class.
- }
+ // Get the minimum window size
+ val minSize = min(metrics.bounds.width(), metrics.bounds.height()).toFloat()
+ val minSizeDp = minSize / scale
+ return minSizeDp >= 840f // Correspond to the EXPANDED window size class.
+ }
- @Override
- public void setRequestedOrientation(int requestedOrientation) {
+ override fun setRequestedOrientation(requestedOrientation: Int) {
if (!overrideOrientationRequest()) {
- super.setRequestedOrientation(requestedOrientation);
+ super.setRequestedOrientation(requestedOrientation)
}
}
/**
* The Godot Android Editor sets its own orientation via its AndroidManifest
*/
- protected boolean overrideOrientationRequest() {
- return true;
- }
+ protected open fun overrideOrientationRequest() = true
}
diff --git a/platform/android/java/editor/src/main/java/org/godotengine/editor/GodotGame.java b/platform/android/java/editor/src/main/java/org/godotengine/editor/GodotGame.kt
index 12766775a8..783095f93a 100644
--- a/platform/android/java/editor/src/main/java/org/godotengine/editor/GodotGame.java
+++ b/platform/android/java/editor/src/main/java/org/godotengine/editor/GodotGame.kt
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* GodotGame.java */
+/* GodotGame.kt */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,13 +28,11 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-package org.godotengine.editor;
+package org.godotengine.editor
/**
* Drives the 'run project' window of the Godot Editor.
*/
-public class GodotGame extends GodotEditor {
- protected boolean overrideOrientationRequest() {
- return false;
- }
+class GodotGame : GodotEditor() {
+ override fun overrideOrientationRequest() = false
}
diff --git a/platform/android/java/editor/src/main/java/org/godotengine/editor/GodotProjectManager.java b/platform/android/java/editor/src/main/java/org/godotengine/editor/GodotProjectManager.kt
index d30f66bb8c..bcf4659603 100644
--- a/platform/android/java/editor/src/main/java/org/godotengine/editor/GodotProjectManager.java
+++ b/platform/android/java/editor/src/main/java/org/godotengine/editor/GodotProjectManager.kt
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* GodotProjectManager.java */
+/* GodotProjectManager.kt */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,14 +28,13 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-package org.godotengine.editor;
+package org.godotengine.editor
/**
* Launcher activity for the Godot Android Editor.
*
* It presents the user with the project manager interface.
* Upon selection of a project, this activity (via its parent logic) starts the
- * {@link GodotEditor} activity.
+ * [GodotEditor] activity.
*/
-public class GodotProjectManager extends GodotEditor {
-}
+class GodotProjectManager : GodotEditor()
diff --git a/platform/android/java/lib/src/org/godotengine/godot/input/GodotInputHandler.java b/platform/android/java/lib/src/org/godotengine/godot/input/GodotInputHandler.java
index 8694bb91e1..ccfb865b1a 100644
--- a/platform/android/java/lib/src/org/godotengine/godot/input/GodotInputHandler.java
+++ b/platform/android/java/lib/src/org/godotengine/godot/input/GodotInputHandler.java
@@ -186,6 +186,9 @@ public class GodotInputHandler implements InputManager.InputDeviceListener {
if (mJoystickIds.indexOfKey(deviceId) >= 0) {
final int godotJoyId = mJoystickIds.get(deviceId);
Joystick joystick = mJoysticksDevices.get(deviceId);
+ if (joystick == null) {
+ return true;
+ }
for (int i = 0; i < joystick.axes.size(); i++) {
final int axis = joystick.axes.get(i);
diff --git a/platform/iphone/export/export_plugin.cpp b/platform/iphone/export/export_plugin.cpp
index 1f5e378098..4cf1c279eb 100644
--- a/platform/iphone/export/export_plugin.cpp
+++ b/platform/iphone/export/export_plugin.cpp
@@ -817,7 +817,11 @@ Error EditorExportPlatformIOS::_codesign(String p_file, void *p_userdata) {
codesign_args.push_back("-s");
codesign_args.push_back(sign_id);
codesign_args.push_back(p_file);
- return OS::get_singleton()->execute("codesign", codesign_args);
+ String str;
+ Error err = OS::get_singleton()->execute("codesign", codesign_args, &str, nullptr, true);
+ print_verbose("codesign (" + p_file + "):\n" + str);
+
+ return err;
}
return OK;
}
@@ -1392,7 +1396,7 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p
String err;
src_pkg_name = find_export_template("iphone.zip", &err);
if (src_pkg_name.is_empty()) {
- EditorNode::add_io_error(err);
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Prepare Templates"), TTR("Export template not found."));
return ERR_FILE_NOT_FOUND;
}
}
@@ -1487,7 +1491,7 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p
zlib_filefunc_def io = zipio_create_io(&io_fa);
unzFile src_pkg_zip = unzOpen2(src_pkg_name.utf8().get_data(), &io);
if (!src_pkg_zip) {
- EditorNode::add_io_error("Could not open export template (not a zip file?):\n" + src_pkg_name);
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Prepare Templates"), TTR("Could not open export template (not a zip file?): \"%s\".", src_pkg_name));
return ERR_CANT_OPEN;
}
diff --git a/platform/javascript/SCsub b/platform/javascript/SCsub
index 8d9ba82fd4..4827dc4627 100644
--- a/platform/javascript/SCsub
+++ b/platform/javascript/SCsub
@@ -37,6 +37,8 @@ for ext in env["JS_EXTERNS"]:
build = []
if env["gdnative_enabled"]:
build_targets = ["#bin/godot${PROGSUFFIX}.js", "#bin/godot${PROGSUFFIX}.wasm"]
+ if env["threads_enabled"]:
+ build_targets.append("#bin/godot${PROGSUFFIX}.worker.js")
# Reset libraries. The main runtime will only link emscripten libraries, not godot ones.
sys_env["LIBS"] = []
# We use IDBFS. Since Emscripten 1.39.1 it needs to be linked explicitly.
@@ -58,7 +60,7 @@ if env["gdnative_enabled"]:
wasm_env.Append(CCFLAGS=["-s", "SIDE_MODULE=2"])
wasm_env.Append(LINKFLAGS=["-s", "SIDE_MODULE=2"])
wasm = wasm_env.add_program("#bin/godot.side${PROGSUFFIX}.wasm", javascript_files)
- build = [sys[0], sys[1], wasm[0]]
+ build = sys + [wasm[0]]
else:
build_targets = ["#bin/godot${PROGSUFFIX}.js", "#bin/godot${PROGSUFFIX}.wasm"]
if env["threads_enabled"]:
@@ -87,5 +89,5 @@ wrap_list = [
js_wrapped = env.Textfile("#bin/godot", [env.File(f) for f in wrap_list], TEXTFILESUFFIX="${PROGSUFFIX}.wrapped.js")
# Extra will be the thread worker, or the GDNative side, or None
-extra = build[2] if len(build) > 2 else None
+extra = build[2:] if len(build) > 2 else None
env.CreateTemplateZip(js_wrapped, build[1], extra)
diff --git a/platform/javascript/detect.py b/platform/javascript/detect.py
index 4a9652fc1c..a769260f01 100644
--- a/platform/javascript/detect.py
+++ b/platform/javascript/detect.py
@@ -185,10 +185,6 @@ def configure(env):
if env["javascript_eval"]:
env.Append(CPPDEFINES=["JAVASCRIPT_EVAL_ENABLED"])
- if env["threads_enabled"] and env["gdnative_enabled"]:
- print("Threads and GDNative support can't be both enabled due to WebAssembly limitations")
- sys.exit(255)
-
# Thread support (via SharedArrayBuffer).
if env["threads_enabled"]:
env.Append(CPPDEFINES=["PTHREAD_NO_RENAME"])
@@ -201,9 +197,14 @@ def configure(env):
env.Append(CPPDEFINES=["NO_THREADS"])
if env["gdnative_enabled"]:
- major, minor, patch = get_compiler_version(env)
- if major < 2 or (major == 2 and minor == 0 and patch < 10):
- print("GDNative support requires emscripten >= 2.0.10, detected: %s.%s.%s" % (major, minor, patch))
+ cc_version = get_compiler_version(env)
+ cc_semver = (int(cc_version["major"]), int(cc_version["minor"]), int(cc_version["patch"]))
+ if cc_semver < (2, 0, 10):
+ print("GDNative support requires emscripten >= 2.0.10, detected: %s.%s.%s" % cc_semver)
+ sys.exit(255)
+
+ if env["threads_enabled"] and cc_semver < (3, 1, 14):
+ print("Threads and GDNative requires emscripten >= 3.1.14, detected: %s.%s.%s" % cc_semver)
sys.exit(255)
env.Append(CCFLAGS=["-s", "RELOCATABLE=1"])
env.Append(LINKFLAGS=["-s", "RELOCATABLE=1"])
diff --git a/platform/javascript/emscripten_helpers.py b/platform/javascript/emscripten_helpers.py
index 4dad2d5204..3cb1d75e52 100644
--- a/platform/javascript/emscripten_helpers.py
+++ b/platform/javascript/emscripten_helpers.py
@@ -52,10 +52,10 @@ def create_template_zip(env, js, wasm, extra):
]
# GDNative/Threads specific
if env["gdnative_enabled"]:
- in_files.append(extra) # Runtime
+ in_files.append(extra.pop()) # Runtime
out_files.append(zip_dir.File(binary_name + ".side.wasm"))
- elif env["threads_enabled"]:
- in_files.append(extra) # Worker
+ if env["threads_enabled"]:
+ in_files.append(extra.pop()) # Worker
out_files.append(zip_dir.File(binary_name + ".worker.js"))
service_worker = "#misc/dist/html/service-worker.js"
diff --git a/platform/javascript/export/export_plugin.cpp b/platform/javascript/export/export_plugin.cpp
index 3334e7394b..901580c140 100644
--- a/platform/javascript/export/export_plugin.cpp
+++ b/platform/javascript/export/export_plugin.cpp
@@ -38,12 +38,12 @@ Error EditorExportPlatformJavaScript::_extract_template(const String &p_template
unzFile pkg = unzOpen2(p_template.utf8().get_data(), &io);
if (!pkg) {
- EditorNode::get_singleton()->show_warning(TTR("Could not open template for export:") + "\n" + p_template);
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Prepare Templates"), vformat(TTR("Could not open template for export: \"%s\"."), p_template));
return ERR_FILE_NOT_FOUND;
}
if (unzGoToFirstFile(pkg) != UNZ_OK) {
- EditorNode::get_singleton()->show_warning(TTR("Invalid export template:") + "\n" + p_template);
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Prepare Templates"), vformat(TTR("Invalid export template: \"%s\"."), p_template));
unzClose(pkg);
return ERR_FILE_CORRUPT;
}
@@ -56,6 +56,11 @@ Error EditorExportPlatformJavaScript::_extract_template(const String &p_template
String file = String::utf8(fname);
+ // Skip folders.
+ if (file.ends_with("/")) {
+ continue;
+ }
+
// Skip service worker and offline page if not exporting pwa.
if (!pwa && (file == "godot.service.worker.js" || file == "godot.offline.html")) {
continue;
@@ -72,7 +77,7 @@ Error EditorExportPlatformJavaScript::_extract_template(const String &p_template
String dst = p_dir.plus_file(file.replace("godot", p_name));
Ref<FileAccess> f = FileAccess::open(dst, FileAccess::WRITE);
if (f.is_null()) {
- EditorNode::get_singleton()->show_warning(TTR("Could not write file:") + "\n" + dst);
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Prepare Templates"), vformat(TTR("Could not write file: \"%s\"."), dst));
unzClose(pkg);
return ERR_FILE_CANT_WRITE;
}
@@ -86,7 +91,7 @@ Error EditorExportPlatformJavaScript::_extract_template(const String &p_template
Error EditorExportPlatformJavaScript::_write_or_error(const uint8_t *p_content, int p_size, String p_path) {
Ref<FileAccess> f = FileAccess::open(p_path, FileAccess::WRITE);
if (f.is_null()) {
- EditorNode::get_singleton()->show_warning(TTR("Could not write file:") + "\n" + p_path);
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), vformat(TTR("Could not write file: \"%s\"."), p_path));
return ERR_FILE_CANT_WRITE;
}
f->store_buffer(p_content, p_size);
@@ -163,7 +168,7 @@ Error EditorExportPlatformJavaScript::_add_manifest_icon(const String &p_path, c
icon.instantiate();
const Error err = ImageLoader::load_image(p_icon, icon);
if (err != OK) {
- EditorNode::get_singleton()->show_warning(TTR("Could not read file:") + "\n" + p_icon);
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Icon Creation"), vformat(TTR("Could not read file: \"%s\"."), p_icon));
return err;
}
if (icon->get_width() != p_size || icon->get_height() != p_size) {
@@ -175,7 +180,7 @@ Error EditorExportPlatformJavaScript::_add_manifest_icon(const String &p_path, c
}
const Error err = icon->save_png(icon_dest);
if (err != OK) {
- EditorNode::get_singleton()->show_warning(TTR("Could not write file:") + "\n" + icon_dest);
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Icon Creation"), vformat(TTR("Could not write file: \"%s\"."), icon_dest));
return err;
}
Dictionary icon_dict;
@@ -210,7 +215,7 @@ Error EditorExportPlatformJavaScript::_build_pwa(const Ref<EditorExportPreset> &
cache_files.push_back(name + ".icon.png");
cache_files.push_back(name + ".apple-touch-icon.png");
}
- if (mode == EXPORT_MODE_THREADS) {
+ if (mode & EXPORT_MODE_THREADS) {
cache_files.push_back(name + ".worker.js");
cache_files.push_back(name + ".audio.worklet.js");
}
@@ -220,7 +225,7 @@ Error EditorExportPlatformJavaScript::_build_pwa(const Ref<EditorExportPreset> &
Array opt_cache_files;
opt_cache_files.push_back(name + ".wasm");
opt_cache_files.push_back(name + ".pck");
- if (mode == EXPORT_MODE_GDNATIVE) {
+ if (mode & EXPORT_MODE_GDNATIVE) {
opt_cache_files.push_back(name + ".side.wasm");
for (int i = 0; i < p_shared_objects.size(); i++) {
opt_cache_files.push_back(p_shared_objects[i].path.get_file());
@@ -233,7 +238,7 @@ Error EditorExportPlatformJavaScript::_build_pwa(const Ref<EditorExportPreset> &
{
Ref<FileAccess> f = FileAccess::open(sw_path, FileAccess::READ);
if (f.is_null()) {
- EditorNode::get_singleton()->show_warning(TTR("Could not read file:") + "\n" + sw_path);
+ add_message(EXPORT_MESSAGE_ERROR, TTR("PWA"), vformat(TTR("Could not read file: \"%s\"."), sw_path));
return ERR_FILE_CANT_READ;
}
sw.resize(f->get_length());
@@ -252,7 +257,7 @@ Error EditorExportPlatformJavaScript::_build_pwa(const Ref<EditorExportPreset> &
const String offline_dest = dir.plus_file(name + ".offline.html");
err = da->copy(ProjectSettings::get_singleton()->globalize_path(offline_page), offline_dest);
if (err != OK) {
- EditorNode::get_singleton()->show_warning(TTR("Could not read file:") + "\n" + offline_dest);
+ add_message(EXPORT_MESSAGE_ERROR, TTR("PWA"), vformat(TTR("Could not read file: \"%s\"."), offline_dest));
return err;
}
}
@@ -312,9 +317,10 @@ void EditorExportPlatformJavaScript::get_preset_features(const Ref<EditorExportP
}
}
ExportMode mode = (ExportMode)(int)p_preset->get("variant/export_type");
- if (mode == EXPORT_MODE_THREADS) {
+ if (mode & EXPORT_MODE_THREADS) {
r_features->push_back("threads");
- } else if (mode == EXPORT_MODE_GDNATIVE) {
+ }
+ if (mode & EXPORT_MODE_GDNATIVE) {
r_features->push_back("wasm32");
}
}
@@ -438,7 +444,7 @@ Error EditorExportPlatformJavaScript::export_project(const Ref<EditorExportPrese
}
if (!template_path.is_empty() && !FileAccess::exists(template_path)) {
- EditorNode::get_singleton()->show_warning(TTR("Template file not found:") + "\n" + template_path);
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Prepare Templates"), vformat(TTR("Template file not found: \"%s\"."), template_path));
return ERR_FILE_NOT_FOUND;
}
@@ -447,7 +453,7 @@ Error EditorExportPlatformJavaScript::export_project(const Ref<EditorExportPrese
String pck_path = base_path + ".pck";
Error error = save_pack(p_preset, p_debug, pck_path, &shared_objects);
if (error != OK) {
- EditorNode::get_singleton()->show_warning(TTR("Could not write file:") + "\n" + pck_path);
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), vformat(TTR("Could not write file: \"%s\"."), pck_path));
return error;
}
@@ -457,7 +463,7 @@ Error EditorExportPlatformJavaScript::export_project(const Ref<EditorExportPrese
String dst = base_dir.plus_file(shared_objects[i].path.get_file());
error = da->copy(shared_objects[i].path, dst);
if (error != OK) {
- EditorNode::get_singleton()->show_warning(TTR("Could not write file:") + "\n" + shared_objects[i].path.get_file());
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), vformat(TTR("Could not write file: \"%s\"."), shared_objects[i].path.get_file()));
return error;
}
}
@@ -485,7 +491,7 @@ Error EditorExportPlatformJavaScript::export_project(const Ref<EditorExportPrese
Vector<uint8_t> html;
f = FileAccess::open(html_path, FileAccess::READ);
if (f.is_null()) {
- EditorNode::get_singleton()->show_warning(TTR("Could not read HTML shell:") + "\n" + html_path);
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), vformat(TTR("Could not read HTML shell: \"%s\"."), html_path));
return ERR_FILE_CANT_READ;
}
html.resize(f->get_length());
@@ -503,7 +509,7 @@ Error EditorExportPlatformJavaScript::export_project(const Ref<EditorExportPrese
Ref<Image> splash = _get_project_splash();
const String splash_png_path = base_path + ".png";
if (splash->save_png(splash_png_path) != OK) {
- EditorNode::get_singleton()->show_warning(TTR("Could not write file:") + "\n" + splash_png_path);
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), vformat(TTR("Could not write file: \"%s\"."), splash_png_path));
return ERR_FILE_CANT_WRITE;
}
@@ -513,13 +519,13 @@ Error EditorExportPlatformJavaScript::export_project(const Ref<EditorExportPrese
Ref<Image> favicon = _get_project_icon();
const String favicon_png_path = base_path + ".icon.png";
if (favicon->save_png(favicon_png_path) != OK) {
- EditorNode::get_singleton()->show_warning(TTR("Could not write file:") + "\n" + favicon_png_path);
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), vformat(TTR("Could not write file: \"%s\"."), favicon_png_path));
return ERR_FILE_CANT_WRITE;
}
favicon->resize(180, 180);
const String apple_icon_png_path = base_path + ".apple-touch-icon.png";
if (favicon->save_png(apple_icon_png_path) != OK) {
- EditorNode::get_singleton()->show_warning(TTR("Could not write file:") + "\n" + apple_icon_png_path);
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), vformat(TTR("Could not write file: \"%s\"."), apple_icon_png_path));
return ERR_FILE_CANT_WRITE;
}
}
@@ -579,10 +585,11 @@ Error EditorExportPlatformJavaScript::run(const Ref<EditorExportPreset> &p_prese
if (!da->dir_exists(dest)) {
Error err = da->make_dir_recursive(dest);
if (err != OK) {
- EditorNode::get_singleton()->show_warning(TTR("Could not create HTTP server directory:") + "\n" + dest);
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Run"), vformat(TTR("Could not create HTTP server directory: %s."), dest));
return err;
}
}
+
const String basepath = dest.plus_file("tmp_js_export");
Error err = export_project(p_preset, true, basepath + ".html", p_debug_flags);
if (err != OK) {
@@ -625,7 +632,7 @@ Error EditorExportPlatformJavaScript::run(const Ref<EditorExportPreset> &p_prese
err = server->listen(bind_port, bind_ip, use_ssl, ssl_key, ssl_cert);
}
if (err != OK) {
- EditorNode::get_singleton()->show_warning(TTR("Error starting HTTP server:") + "\n" + itos(err));
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Run"), vformat(TTR("Error starting HTTP server: %d."), err));
return err;
}
diff --git a/platform/javascript/export/export_plugin.h b/platform/javascript/export/export_plugin.h
index 2d6cbfde38..1aaec5454d 100644
--- a/platform/javascript/export/export_plugin.h
+++ b/platform/javascript/export/export_plugin.h
@@ -61,19 +61,16 @@ class EditorExportPlatformJavaScript : public EditorExportPlatform {
EXPORT_MODE_NORMAL = 0,
EXPORT_MODE_THREADS = 1,
EXPORT_MODE_GDNATIVE = 2,
+ EXPORT_MODE_THREADS_GDNATIVE = 3,
};
String _get_template_name(ExportMode p_mode, bool p_debug) const {
String name = "webassembly";
- switch (p_mode) {
- case EXPORT_MODE_THREADS:
- name += "_threads";
- break;
- case EXPORT_MODE_GDNATIVE:
- name += "_gdnative";
- break;
- default:
- break;
+ if (p_mode & EXPORT_MODE_GDNATIVE) {
+ name += "_gdnative";
+ }
+ if (p_mode & EXPORT_MODE_THREADS) {
+ name += "_threads";
}
if (p_debug) {
name += "_debug.zip";
diff --git a/platform/linuxbsd/display_server_x11.cpp b/platform/linuxbsd/display_server_x11.cpp
index 887d916f35..4aec111022 100644
--- a/platform/linuxbsd/display_server_x11.cpp
+++ b/platform/linuxbsd/display_server_x11.cpp
@@ -3298,19 +3298,20 @@ void DisplayServerX11::popup_close(WindowID p_window) {
}
}
-void DisplayServerX11::mouse_process_popups() {
+bool DisplayServerX11::mouse_process_popups() {
_THREAD_SAFE_METHOD_
if (popup_list.is_empty()) {
- return;
+ return false;
}
uint64_t delta = OS::get_singleton()->get_ticks_msec() - time_since_popup;
if (delta < 250) {
- return;
+ return false;
}
int number_of_screens = XScreenCount(x11_display);
+ bool closed = false;
for (int i = 0; i < number_of_screens; i++) {
Window root, child;
int root_x, root_y, win_x, win_y;
@@ -3340,6 +3341,7 @@ void DisplayServerX11::mouse_process_popups() {
}
if (C) {
_send_window_event(windows[C->get()], DisplayServerX11::WINDOW_EVENT_CLOSE_REQUEST);
+ closed = true;
}
}
}
@@ -3347,6 +3349,7 @@ void DisplayServerX11::mouse_process_popups() {
last_mouse_monitor_pos = pos;
}
}
+ return closed;
}
void DisplayServerX11::process_events() {
@@ -3357,7 +3360,7 @@ void DisplayServerX11::process_events() {
++frame;
#endif
- mouse_process_popups();
+ bool ignore_events = mouse_process_popups();
if (app_focused) {
//verify that one of the windows has focus, else send focus out notification
@@ -3407,6 +3410,10 @@ void DisplayServerX11::process_events() {
for (uint32_t event_index = 0; event_index < events.size(); ++event_index) {
XEvent &event = events[event_index];
+ if (ignore_events) {
+ XFreeEventData(x11_display, &event.xcookie);
+ continue;
+ }
WindowID window_id = MAIN_WINDOW_ID;
diff --git a/platform/linuxbsd/display_server_x11.h b/platform/linuxbsd/display_server_x11.h
index 872af3dc09..4beeddd3a8 100644
--- a/platform/linuxbsd/display_server_x11.h
+++ b/platform/linuxbsd/display_server_x11.h
@@ -295,7 +295,7 @@ protected:
void _window_changed(XEvent *event);
public:
- void mouse_process_popups();
+ bool mouse_process_popups();
void popup_open(WindowID p_window);
void popup_close(WindowID p_window);
diff --git a/platform/linuxbsd/export/export_plugin.cpp b/platform/linuxbsd/export/export_plugin.cpp
index 9f7fab6ee8..4e14920e79 100644
--- a/platform/linuxbsd/export/export_plugin.cpp
+++ b/platform/linuxbsd/export/export_plugin.cpp
@@ -35,7 +35,10 @@
Error EditorExportPlatformLinuxBSD::_export_debug_script(const Ref<EditorExportPreset> &p_preset, const String &p_app_name, const String &p_pkg_name, const String &p_path) {
Ref<FileAccess> f = FileAccess::open(p_path, FileAccess::WRITE);
- ERR_FAIL_COND_V(f.is_null(), ERR_CANT_CREATE);
+ if (f.is_null()) {
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Debug Script Export"), vformat(TTR("Could not open file \"%s\"."), p_path));
+ return ERR_CANT_CREATE;
+ }
f->store_line("#!/bin/sh");
f->store_line("echo -ne '\\033c\\033]0;" + p_app_name + "\\a'");
@@ -67,6 +70,9 @@ Error EditorExportPlatformLinuxBSD::export_project(const Ref<EditorExportPreset>
String scr_path = p_path.get_basename() + ".sh";
err = _export_debug_script(p_preset, app_name, p_path.get_file(), scr_path);
FileAccess::set_unix_permissions(scr_path, 0755);
+ if (err != OK) {
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Debug Script Export"), TTR("Could not create console script."));
+ }
}
}
@@ -98,11 +104,12 @@ List<String> EditorExportPlatformLinuxBSD::get_binary_extensions(const Ref<Edito
return list;
}
-Error EditorExportPlatformLinuxBSD::fixup_embedded_pck(const String &p_path, int64_t p_embedded_start, int64_t p_embedded_size) const {
+Error EditorExportPlatformLinuxBSD::fixup_embedded_pck(const String &p_path, int64_t p_embedded_start, int64_t p_embedded_size) {
// Patch the header of the "pck" section in the ELF file so that it corresponds to the embedded data
Ref<FileAccess> f = FileAccess::open(p_path, FileAccess::READ_WRITE);
if (f.is_null()) {
+ add_message(EXPORT_MESSAGE_ERROR, TTR("PCK Embedding"), vformat(TTR("Failed to open executable file \"%s\"."), p_path));
return ERR_CANT_OPEN;
}
@@ -110,6 +117,7 @@ Error EditorExportPlatformLinuxBSD::fixup_embedded_pck(const String &p_path, int
{
uint32_t magic = f->get_32();
if (magic != 0x464c457f) { // 0x7F + "ELF"
+ add_message(EXPORT_MESSAGE_ERROR, TTR("PCK Embedding"), TTR("Executable file header corrupted."));
return ERR_FILE_CORRUPT;
}
}
@@ -119,7 +127,7 @@ Error EditorExportPlatformLinuxBSD::fixup_embedded_pck(const String &p_path, int
int bits = f->get_8() * 32;
if (bits == 32 && p_embedded_size >= 0x100000000) {
- ERR_FAIL_V_MSG(ERR_INVALID_DATA, "32-bit executables cannot have embedded data >= 4 GiB.");
+ add_message(EXPORT_MESSAGE_ERROR, TTR("PCK Embedding"), TTR("32-bit executables cannot have embedded data >= 4 GiB."));
}
// Get info about the section header table
@@ -196,5 +204,9 @@ Error EditorExportPlatformLinuxBSD::fixup_embedded_pck(const String &p_path, int
memfree(strings);
- return found ? OK : ERR_FILE_CORRUPT;
+ if (!found) {
+ add_message(EXPORT_MESSAGE_ERROR, TTR("PCK Embedding"), TTR("Executable \"pck\" section not found."));
+ return ERR_FILE_CORRUPT;
+ }
+ return OK;
}
diff --git a/platform/linuxbsd/export/export_plugin.h b/platform/linuxbsd/export/export_plugin.h
index 9ae5cf827a..e04bcc20f9 100644
--- a/platform/linuxbsd/export/export_plugin.h
+++ b/platform/linuxbsd/export/export_plugin.h
@@ -46,7 +46,7 @@ public:
virtual List<String> get_binary_extensions(const Ref<EditorExportPreset> &p_preset) const override;
virtual Error export_project(const Ref<EditorExportPreset> &p_preset, bool p_debug, const String &p_path, int p_flags = 0) override;
virtual String get_template_file_name(const String &p_target, const String &p_arch) const override;
- virtual Error fixup_embedded_pck(const String &p_path, int64_t p_embedded_start, int64_t p_embedded_size) const override;
+ virtual Error fixup_embedded_pck(const String &p_path, int64_t p_embedded_start, int64_t p_embedded_size) override;
};
#endif
diff --git a/platform/linuxbsd/key_mapping_x11.cpp b/platform/linuxbsd/key_mapping_x11.cpp
index afe965e038..047ee74671 100644
--- a/platform/linuxbsd/key_mapping_x11.cpp
+++ b/platform/linuxbsd/key_mapping_x11.cpp
@@ -135,6 +135,25 @@ static _XTranslatePair _xkeysym_to_keycode[] = {
{ XK_F14, Key::F14 },
{ XK_F15, Key::F15 },
{ XK_F16, Key::F16 },
+ { XK_F17, Key::F17 },
+ { XK_F18, Key::F18 },
+ { XK_F19, Key::F19 },
+ { XK_F20, Key::F20 },
+ { XK_F21, Key::F21 },
+ { XK_F22, Key::F22 },
+ { XK_F23, Key::F23 },
+ { XK_F24, Key::F24 },
+ { XK_F25, Key::F25 },
+ { XK_F26, Key::F26 },
+ { XK_F27, Key::F27 },
+ { XK_F28, Key::F28 },
+ { XK_F29, Key::F29 },
+ { XK_F30, Key::F30 },
+ { XK_F31, Key::F31 },
+ { XK_F32, Key::F32 },
+ { XK_F33, Key::F33 },
+ { XK_F34, Key::F34 },
+ { XK_F35, Key::F35 },
// media keys
{ XF86XK_Back, Key::BACK },
@@ -294,6 +313,29 @@ static _TranslatePair _scancode_to_keycode[] = {
{ Key::SUPER_L, 0x85 },
{ Key::SUPER_R, 0x86 },
{ Key::MENU, 0x87 },
+ { Key::F13, 0xBF },
+ { Key::F14, 0xC0 },
+ { Key::F15, 0xC1 },
+ { Key::F16, 0xC2 },
+ { Key::F17, 0xC3 },
+ { Key::F18, 0xC4 },
+ { Key::F19, 0xC5 },
+ { Key::F20, 0xC6 },
+ { Key::F21, 0xC7 },
+ { Key::F22, 0xC8 },
+ { Key::F23, 0xC9 },
+ { Key::F24, 0xCA },
+ { Key::F25, 0xCB },
+ { Key::F26, 0xCC },
+ { Key::F27, 0xCD },
+ { Key::F28, 0xCE },
+ { Key::F29, 0xCF },
+ { Key::F30, 0xD0 },
+ { Key::F31, 0xD1 },
+ { Key::F32, 0xD2 },
+ { Key::F33, 0xD3 },
+ { Key::F34, 0xD4 },
+ { Key::F35, 0xD5 },
{ Key::UNKNOWN, 0 }
};
diff --git a/platform/osx/display_server_osx.h b/platform/osx/display_server_osx.h
index 52b4fab2ea..9575cb29a2 100644
--- a/platform/osx/display_server_osx.h
+++ b/platform/osx/display_server_osx.h
@@ -208,7 +208,7 @@ public:
void push_to_key_event_buffer(const KeyEvent &p_event);
void update_im_text(const Point2i &p_selection, const String &p_text);
void set_last_focused_window(WindowID p_window);
- void mouse_process_popups(bool p_close = false);
+ bool mouse_process_popups(bool p_close = false);
void popup_open(WindowID p_window);
void popup_close(WindowID p_window);
void set_is_resizing(bool p_is_resizing);
diff --git a/platform/osx/display_server_osx.mm b/platform/osx/display_server_osx.mm
index 536751432b..b6a5813bd0 100644
--- a/platform/osx/display_server_osx.mm
+++ b/platform/osx/display_server_osx.mm
@@ -569,9 +569,6 @@ DisplayServerOSX::WindowData &DisplayServerOSX::get_window(WindowID p_window) {
}
void DisplayServerOSX::send_event(NSEvent *p_event) {
- if ([p_event type] == NSEventTypeLeftMouseDown || [p_event type] == NSEventTypeRightMouseDown || [p_event type] == NSEventTypeOtherMouseDown) {
- mouse_process_popups();
- }
// Special case handling of command-period, which is traditionally a special
// shortcut in macOS and doesn't arrive at our regular keyDown handler.
if ([p_event type] == NSEventTypeKeyDown) {
@@ -3085,15 +3082,17 @@ void DisplayServerOSX::popup_close(WindowID p_window) {
}
}
-void DisplayServerOSX::mouse_process_popups(bool p_close) {
+bool DisplayServerOSX::mouse_process_popups(bool p_close) {
_THREAD_SAFE_METHOD_
bool was_empty = popup_list.is_empty();
+ bool closed = false;
if (p_close) {
// Close all popups.
List<WindowID>::Element *E = popup_list.front();
if (E) {
send_window_event(windows[E->get()], DisplayServerOSX::WINDOW_EVENT_CLOSE_REQUEST);
+ closed = true;
}
if (!was_empty) {
// Inform OS that all popups are closed.
@@ -3102,7 +3101,7 @@ void DisplayServerOSX::mouse_process_popups(bool p_close) {
} else {
uint64_t delta = OS::get_singleton()->get_ticks_msec() - time_since_popup;
if (delta < 250) {
- return;
+ return false;
}
Point2i pos = mouse_get_position();
@@ -3125,12 +3124,14 @@ void DisplayServerOSX::mouse_process_popups(bool p_close) {
}
if (C) {
send_window_event(windows[C->get()], DisplayServerOSX::WINDOW_EVENT_CLOSE_REQUEST);
+ closed = true;
}
if (!was_empty && popup_list.is_empty()) {
// Inform OS that all popups are closed.
[[NSDistributedNotificationCenter defaultCenter] postNotificationName:@"com.apple.HIToolbox.endMenuTrackingNotification" object:@"org.godotengine.godot.popup_window"];
}
}
+ return closed;
}
DisplayServerOSX::DisplayServerOSX(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error) {
diff --git a/platform/osx/export/export_plugin.cpp b/platform/osx/export/export_plugin.cpp
index 9309b9f89b..7010709123 100644
--- a/platform/osx/export/export_plugin.cpp
+++ b/platform/osx/export/export_plugin.cpp
@@ -261,7 +261,8 @@ void EditorExportPlatformOSX::_make_icon(const Ref<Image> &p_icon, Vector<uint8_
if (f.is_null()) {
// Clean up generated file.
DirAccess::remove_file_or_error(path);
- ERR_FAIL();
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Icon Creation"), vformat(TTR("Could not open icon file \"%s\"."), path));
+ return;
}
int ofs = data.size();
@@ -441,18 +442,25 @@ Error EditorExportPlatformOSX::_notarize(const Ref<EditorExportPreset> &p_preset
String str;
Error err = OS::get_singleton()->execute("xcrun", args, &str, nullptr, true);
- ERR_FAIL_COND_V(err != OK, err);
+ if (err != OK || (str.find("not found") != -1) || (str.find("not recognized") != -1)) {
+ add_message(EXPORT_MESSAGE_WARNING, TTR("Notarization"), TTR("Could not start xcrun executable."));
+ return err;
+ }
print_verbose("altool (" + p_path + "):\n" + str);
- if (str.find("RequestUUID") == -1) {
- EditorNode::add_io_error("altool: " + str);
+ int rq_offset = str.find("RequestUUID");
+ if (rq_offset == -1) {
+ add_message(EXPORT_MESSAGE_WARNING, TTR("Notarization"), TTR("Notarization failed."));
return FAILED;
} else {
- print_line(TTR("Note: The notarization process generally takes less than an hour. When the process is completed, you'll receive an email."));
- print_line(" " + TTR("You can check progress manually by opening a Terminal and running the following command:"));
- print_line(" \"xcrun altool --notarization-history 0 -u <your email> -p <app-specific pwd>\"");
- print_line(" " + TTR("Run the following command to staple the notarization ticket to the exported application (optional):"));
- print_line(" \"xcrun stapler staple <app path>\"");
+ int next_nl = str.find("\n", rq_offset);
+ String request_uuid = (next_nl == -1) ? str.substr(rq_offset + 14, -1) : str.substr(rq_offset + 14, next_nl - rq_offset - 14);
+ add_message(EXPORT_MESSAGE_INFO, TTR("Notarization"), vformat(TTR("Notarization request UUID: \"%s\""), request_uuid));
+ add_message(EXPORT_MESSAGE_INFO, TTR("Notarization"), TTR("The notarization process generally takes less than an hour. When the process is completed, you'll receive an email."));
+ add_message(EXPORT_MESSAGE_INFO, TTR("Notarization"), "\t" + TTR("You can check progress manually by opening a Terminal and running the following command:"));
+ add_message(EXPORT_MESSAGE_INFO, TTR("Notarization"), "\t\t\"xcrun altool --notarization-history 0 -u <your email> -p <app-specific pwd>\"");
+ add_message(EXPORT_MESSAGE_INFO, TTR("Notarization"), "\t" + TTR("Run the following command to staple the notarization ticket to the exported application (optional):"));
+ add_message(EXPORT_MESSAGE_INFO, TTR("Notarization"), "\t\t\"xcrun stapler staple <app path>\"");
}
#endif
@@ -470,21 +478,21 @@ Error EditorExportPlatformOSX::_code_sign(const Ref<EditorExportPreset> &p_prese
#ifdef OSX_ENABLED
if (p_preset->get("codesign/timestamp") && p_warn) {
- WARN_PRINT("Timestamping is not compatible with ad-hoc signature, and was disabled!");
+ add_message(EXPORT_MESSAGE_INFO, TTR("Code Signing"), TTR("Timestamping is not compatible with ad-hoc signature, and was disabled!"));
}
if (p_preset->get("codesign/hardened_runtime") && p_warn) {
- WARN_PRINT("Hardened Runtime is not compatible with ad-hoc signature, and was disabled!");
+ add_message(EXPORT_MESSAGE_INFO, TTR("Code Signing"), TTR("Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"));
}
#endif
String error_msg;
Error err = CodeSign::codesign(false, p_preset->get("codesign/replace_existing_signature"), p_path, p_ent_path, error_msg);
if (err != OK) {
- EditorNode::add_io_error("Built-in CodeSign: " + error_msg);
+ add_message(EXPORT_MESSAGE_WARNING, TTR("Code Signing"), vformat(TTR("Built-in CodeSign failed with error \"%s\"."), error_msg));
return FAILED;
}
#else
- ERR_FAIL_V_MSG(FAILED, "Built-in CodeSign require regex module");
+ add_message(EXPORT_MESSAGE_WARNING, TTR("Code Signing"), TTR("Built-in CodeSign require regex module."));
#endif
return OK;
} else {
@@ -493,7 +501,7 @@ Error EditorExportPlatformOSX::_code_sign(const Ref<EditorExportPreset> &p_prese
if (p_preset->get("codesign/timestamp")) {
if (ad_hoc) {
if (p_warn) {
- WARN_PRINT("Timestamping is not compatible with ad-hoc signature, and was disabled!");
+ add_message(EXPORT_MESSAGE_INFO, TTR("Code Signing"), TTR("Timestamping is not compatible with ad-hoc signature, and was disabled!"));
}
} else {
args.push_back("--timestamp");
@@ -502,7 +510,7 @@ Error EditorExportPlatformOSX::_code_sign(const Ref<EditorExportPreset> &p_prese
if (p_preset->get("codesign/hardened_runtime")) {
if (ad_hoc) {
if (p_warn) {
- WARN_PRINT("Hardened Runtime is not compatible with ad-hoc signature, and was disabled!");
+ add_message(EXPORT_MESSAGE_INFO, TTR("Code Signing"), TTR("Hardened Runtime is not compatible with ad-hoc signature, and was disabled!"));
}
} else {
args.push_back("--options");
@@ -540,15 +548,18 @@ Error EditorExportPlatformOSX::_code_sign(const Ref<EditorExportPreset> &p_prese
String str;
Error err = OS::get_singleton()->execute("codesign", args, &str, nullptr, true);
- ERR_FAIL_COND_V(err != OK, err);
+ if (err != OK || (str.find("not found") != -1) || (str.find("not recognized") != -1)) {
+ add_message(EXPORT_MESSAGE_WARNING, TTR("Code Signing"), TTR("Could not start codesign executable, make sure Xcode command line tools are installed."));
+ return err;
+ }
print_verbose("codesign (" + p_path + "):\n" + str);
if (str.find("no identity found") != -1) {
- EditorNode::add_io_error("CodeSign: " + TTR("No identity found."));
+ add_message(EXPORT_MESSAGE_WARNING, TTR("Code Signing"), TTR("No identity found."));
return FAILED;
}
if ((str.find("unrecognized blob type") != -1) || (str.find("cannot read entitlement data") != -1)) {
- EditorNode::add_io_error("CodeSign: " + TTR("Invalid entitlements file."));
+ add_message(EXPORT_MESSAGE_WARNING, TTR("Code Signing"), TTR("Invalid entitlements file."));
return FAILED;
}
return OK;
@@ -593,7 +604,7 @@ Error EditorExportPlatformOSX::_code_sign_directory(const Ref<EditorExportPreset
return code_sign_error;
}
} else if (p_should_error_on_non_code) {
- ERR_PRINT(vformat("Cannot sign file %s.", current_file));
+ add_message(EXPORT_MESSAGE_WARNING, TTR("Code Signing"), vformat(TTR("Cannot sign file %s."), current_file));
return Error::FAILED;
}
@@ -611,7 +622,7 @@ Error EditorExportPlatformOSX::_copy_and_sign_files(Ref<DirAccess> &dir_access,
Error err{ OK };
if (dir_access->dir_exists(p_src_path)) {
#ifndef UNIX_ENABLED
- WARN_PRINT("Relative symlinks are not supported, exported " + p_src_path.get_file() + " might be broken!");
+ add_message(EXPORT_MESSAGE_INFO, TTR("Export"), vformat(TTR("Relative symlinks are not supported, exported \"%s\" might be broken!"), p_src_path.get_file()));
#endif
print_verbose("export framework: " + p_src_path + " -> " + p_in_app_path);
err = dir_access->make_dir_recursive(p_in_app_path);
@@ -668,14 +679,17 @@ Error EditorExportPlatformOSX::_create_dmg(const String &p_dmg_path, const Strin
String str;
Error err = OS::get_singleton()->execute("hdiutil", args, &str, nullptr, true);
- ERR_FAIL_COND_V(err != OK, err);
+ if (err != OK) {
+ add_message(EXPORT_MESSAGE_ERROR, TTR("DMG Creation"), TTR("Could not start hdiutil executable."));
+ return err;
+ }
print_verbose("hdiutil returned: " + str);
if (str.find("create failed") != -1) {
if (str.find("File exists") != -1) {
- EditorNode::add_io_error("hdiutil: " + TTR("DMG creation failed, file already exists."));
+ add_message(EXPORT_MESSAGE_ERROR, TTR("DMG Creation"), TTR("`hdiutil create` failed - file exists."));
} else {
- EditorNode::add_io_error("hdiutil: " + TTR("DMG create failed."));
+ add_message(EXPORT_MESSAGE_ERROR, TTR("DMG Creation"), TTR("`hdiutil create` failed."));
}
return FAILED;
}
@@ -685,7 +699,10 @@ Error EditorExportPlatformOSX::_create_dmg(const String &p_dmg_path, const Strin
Error EditorExportPlatformOSX::_export_debug_script(const Ref<EditorExportPreset> &p_preset, const String &p_app_name, const String &p_pkg_name, const String &p_path) {
Ref<FileAccess> f = FileAccess::open(p_path, FileAccess::WRITE);
- ERR_FAIL_COND_V(f.is_null(), ERR_CANT_CREATE);
+ if (f.is_null()) {
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Debug Script Export"), vformat(TTR("Could not open file \"%s\"."), p_path));
+ return ERR_CANT_CREATE;
+ }
f->store_line("#!/bin/sh");
f->store_line("echo -ne '\\033c\\033]0;" + p_app_name + "\\a'");
@@ -713,12 +730,13 @@ Error EditorExportPlatformOSX::export_project(const Ref<EditorExportPreset> &p_p
String err;
src_pkg_name = find_export_template("osx.zip", &err);
if (src_pkg_name.is_empty()) {
- EditorNode::add_io_error(err);
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Prepare Templates"), TTR("Export template not found."));
return ERR_FILE_NOT_FOUND;
}
}
if (!DirAccess::exists(p_path.get_base_dir())) {
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Prepare Templates"), TTR("The given export path doesn't exist."));
return ERR_FILE_BAD_PATH;
}
@@ -731,7 +749,7 @@ Error EditorExportPlatformOSX::export_project(const Ref<EditorExportPreset> &p_p
unzFile src_pkg_zip = unzOpen2(src_pkg_name.utf8().get_data(), &io);
if (!src_pkg_zip) {
- EditorNode::add_io_error(TTR("Could not find template app to export:") + "\n" + src_pkg_name);
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Prepare Templates"), vformat(TTR("Could not find template app to export: \"%s\"."), src_pkg_name));
return ERR_FILE_NOT_FOUND;
}
@@ -756,7 +774,7 @@ Error EditorExportPlatformOSX::export_project(const Ref<EditorExportPreset> &p_p
} else if (p_path.ends_with("app")) {
export_format = "app";
} else {
- EditorNode::add_io_error("Invalid export format");
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), TTR("Invalid export format."));
return ERR_CANT_CREATE;
}
@@ -781,13 +799,16 @@ Error EditorExportPlatformOSX::export_project(const Ref<EditorExportPreset> &p_p
Ref<DirAccess> tmp_app_dir = DirAccess::create_for_path(tmp_base_path_name);
if (tmp_app_dir.is_null()) {
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), vformat(TTR("Could not create directory: \"%s\"."), tmp_base_path_name));
err = ERR_CANT_CREATE;
}
DirAccess::remove_file_or_error(scr_path);
if (DirAccess::exists(tmp_app_path_name)) {
+ String old_dir = tmp_app_dir->get_current_dir();
if (tmp_app_dir->change_dir(tmp_app_path_name) == OK) {
tmp_app_dir->erase_contents_recursive();
+ tmp_app_dir->change_dir(old_dir);
}
}
@@ -797,21 +818,33 @@ Error EditorExportPlatformOSX::export_project(const Ref<EditorExportPreset> &p_p
if (err == OK) {
print_verbose("Creating " + tmp_app_path_name + "/Contents/MacOS");
err = tmp_app_dir->make_dir_recursive(tmp_app_path_name + "/Contents/MacOS");
+ if (err != OK) {
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), vformat(TTR("Could not create directory \"%s\"."), tmp_app_path_name + "/Contents/MacOS"));
+ }
}
if (err == OK) {
print_verbose("Creating " + tmp_app_path_name + "/Contents/Frameworks");
err = tmp_app_dir->make_dir_recursive(tmp_app_path_name + "/Contents/Frameworks");
+ if (err != OK) {
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), vformat(TTR("Could not create directory \"%s\"."), tmp_app_path_name + "/Contents/Frameworks"));
+ }
}
if ((err == OK) && helpers.size() > 0) {
print_line("Creating " + tmp_app_path_name + "/Contents/Helpers");
err = tmp_app_dir->make_dir_recursive(tmp_app_path_name + "/Contents/Helpers");
+ if (err != OK) {
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), vformat(TTR("Could not create directory \"%s\"."), tmp_app_path_name + "/Contents/Helpers"));
+ }
}
if (err == OK) {
print_verbose("Creating " + tmp_app_path_name + "/Contents/Resources");
err = tmp_app_dir->make_dir_recursive(tmp_app_path_name + "/Contents/Resources");
+ if (err != OK) {
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), vformat(TTR("Could not create directory \"%s\"."), tmp_app_path_name + "/Contents/Resources"));
+ }
}
Dictionary appnames = ProjectSettings::get_singleton()->get("application/config/name_localized");
@@ -955,16 +988,22 @@ Error EditorExportPlatformOSX::export_project(const Ref<EditorExportPreset> &p_p
if (((info.external_fa >> 16L) & 0120000) == 0120000) {
#ifndef UNIX_ENABLED
- WARN_PRINT(vformat("Relative symlinks are not supported on this OS, the exported project might be broken!"));
+ add_message(EXPORT_MESSAGE_INFO, TTR("Export"), TTR("Relative symlinks are not supported on this OS, the exported project might be broken!"));
#endif
// Handle symlinks in the archive.
file = tmp_app_path_name.plus_file(file);
if (err == OK) {
err = tmp_app_dir->make_dir_recursive(file.get_base_dir());
+ if (err != OK) {
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), vformat(TTR("Could not create directory \"%s\"."), file.get_base_dir()));
+ }
}
if (err == OK) {
String lnk_data = String::utf8((const char *)data.ptr(), data.size());
err = tmp_app_dir->create_link(lnk_data, file);
+ if (err != OK) {
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), vformat(TTR("Could not created symlink \"%s\" -> \"%s\"."), lnk_data, file));
+ }
print_verbose(vformat("ADDING SYMLINK %s => %s\n", file, lnk_data));
}
@@ -1039,6 +1078,9 @@ Error EditorExportPlatformOSX::export_project(const Ref<EditorExportPreset> &p_p
file = tmp_app_path_name.plus_file(file);
if (err == OK) {
err = tmp_app_dir->make_dir_recursive(file.get_base_dir());
+ if (err != OK) {
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), vformat(TTR("Could not create directory \"%s\"."), file.get_base_dir()));
+ }
}
if (err == OK) {
Ref<FileAccess> f = FileAccess::open(file, FileAccess::WRITE);
@@ -1049,6 +1091,7 @@ Error EditorExportPlatformOSX::export_project(const Ref<EditorExportPreset> &p_p
FileAccess::set_unix_permissions(file, 0755);
}
} else {
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), vformat(TTR("Could not open \"%s\"."), file));
err = ERR_CANT_CREATE;
}
}
@@ -1061,7 +1104,7 @@ Error EditorExportPlatformOSX::export_project(const Ref<EditorExportPreset> &p_p
unzClose(src_pkg_zip);
if (!found_binary) {
- ERR_PRINT(vformat("Requested template binary '%s' not found. It might be missing from your template archive.", binary_to_use));
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), vformat(TTR("Requested template binary \"%s\" not found. It might be missing from your template archive."), binary_to_use));
err = ERR_FILE_NOT_FOUND;
}
@@ -1071,6 +1114,9 @@ Error EditorExportPlatformOSX::export_project(const Ref<EditorExportPreset> &p_p
if ((con_scr == 1 && p_debug) || (con_scr == 2)) {
err = _export_debug_script(p_preset, pkg_name, tmp_app_path_name.get_file() + "/Contents/MacOS/" + pkg_name, scr_path);
FileAccess::set_unix_permissions(scr_path, 0755);
+ if (err != OK) {
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), TTR("Could not create console script."));
+ }
}
}
@@ -1214,6 +1260,7 @@ Error EditorExportPlatformOSX::export_project(const Ref<EditorExportPreset> &p_p
ent_f->store_line("</dict>");
ent_f->store_line("</plist>");
} else {
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Code Signing"), TTR("Could not create entitlements file."));
err = ERR_CANT_CREATE;
}
@@ -1231,6 +1278,7 @@ Error EditorExportPlatformOSX::export_project(const Ref<EditorExportPreset> &p_p
ent_f->store_line("</dict>");
ent_f->store_line("</plist>");
} else {
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Code Signing"), TTR("Could not create helper entitlements file."));
err = ERR_CANT_CREATE;
}
}
@@ -1258,7 +1306,7 @@ Error EditorExportPlatformOSX::export_project(const Ref<EditorExportPreset> &p_p
ad_hoc = (sign_identity == "" || sign_identity == "-");
bool lib_validation = p_preset->get("codesign/entitlements/disable_library_validation");
if ((!dylibs_found.is_empty() || !shared_objects.is_empty()) && sign_enabled && ad_hoc && !lib_validation) {
- ERR_PRINT("Ad-hoc signed applications require the 'Disable Library Validation' entitlement to load dynamic libraries.");
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Code Signing"), TTR("Ad-hoc signed applications require the 'Disable Library Validation' entitlement to load dynamic libraries."));
err = ERR_CANT_CREATE;
}
}
@@ -1342,7 +1390,7 @@ Error EditorExportPlatformOSX::export_project(const Ref<EditorExportPreset> &p_p
bool noto_enabled = p_preset->get("notarization/enable");
if (err == OK && noto_enabled) {
if (export_format == "app") {
- WARN_PRINT("Notarization requires the app to be archived first, select the DMG or ZIP export format instead.");
+ add_message(EXPORT_MESSAGE_INFO, TTR("Notarization"), TTR("Notarization requires the app to be archived first, select the DMG or ZIP export format instead."));
} else {
if (ep.step(TTR("Sending archive for notarization"), 4)) {
return ERR_SKIP;
@@ -1467,7 +1515,8 @@ void EditorExportPlatformOSX::_zip_folder_recursive(zipFile &p_zip, const String
Ref<FileAccess> fa = FileAccess::open(dir.plus_file(f), FileAccess::READ);
if (fa.is_null()) {
- ERR_FAIL_MSG(vformat("Can't open file to read from path \"%s\".", dir.plus_file(f)));
+ add_message(EXPORT_MESSAGE_ERROR, TTR("ZIP Creation"), vformat(TTR("Could not open file to read from path \"%s\"."), dir.plus_file(f)));
+ return;
}
const int bufsize = 16384;
uint8_t buf[bufsize];
diff --git a/platform/osx/godot_application.mm b/platform/osx/godot_application.mm
index 00a58700e8..13313a025a 100644
--- a/platform/osx/godot_application.mm
+++ b/platform/osx/godot_application.mm
@@ -37,6 +37,11 @@
- (void)sendEvent:(NSEvent *)event {
DisplayServerOSX *ds = (DisplayServerOSX *)DisplayServer::get_singleton();
if (ds) {
+ if ([event type] == NSEventTypeLeftMouseDown || [event type] == NSEventTypeRightMouseDown || [event type] == NSEventTypeOtherMouseDown) {
+ if (ds->mouse_process_popups()) {
+ return;
+ }
+ }
ds->send_event(event);
}
diff --git a/platform/osx/key_mapping_osx.mm b/platform/osx/key_mapping_osx.mm
index bfec45de58..0bf6bc7d1c 100644
--- a/platform/osx/key_mapping_osx.mm
+++ b/platform/osx/key_mapping_osx.mm
@@ -130,7 +130,7 @@ static const Key _osx_to_godot_table[128] = {
/* 3d */ Key::ALT,
/* 3e */ Key::CTRL,
/* 3f */ Key::UNKNOWN, /* Function */
- /* 40 */ Key::UNKNOWN, /* F17 */
+ /* 40 */ Key::F17,
/* 41 */ Key::KP_PERIOD,
/* 42 */ Key::UNKNOWN,
/* 43 */ Key::KP_MULTIPLY,
@@ -145,8 +145,8 @@ static const Key _osx_to_godot_table[128] = {
/* 4c */ Key::KP_ENTER,
/* 4d */ Key::UNKNOWN,
/* 4e */ Key::KP_SUBTRACT,
- /* 4f */ Key::UNKNOWN, /* F18 */
- /* 50 */ Key::UNKNOWN, /* F19 */
+ /* 4f */ Key::F18,
+ /* 50 */ Key::F19,
/* 51 */ Key::EQUAL, /* KeypadEqual */
/* 52 */ Key::KP_0,
/* 53 */ Key::KP_1,
@@ -156,7 +156,7 @@ static const Key _osx_to_godot_table[128] = {
/* 57 */ Key::KP_5,
/* 58 */ Key::KP_6,
/* 59 */ Key::KP_7,
- /* 5a */ Key::UNKNOWN, /* F20 */
+ /* 5a */ Key::F20,
/* 5b */ Key::KP_8,
/* 5c */ Key::KP_9,
/* 5d */ Key::YEN, /* JIS Yen */
@@ -366,7 +366,26 @@ static const _KeyCodeText _native_keycodes[] = {
{Key::F13 ,NSF13FunctionKey},
{Key::F14 ,NSF14FunctionKey},
{Key::F15 ,NSF15FunctionKey},
- {Key::F16 ,NSF16FunctionKey}, //* ... NSF35FunctionKey */
+ {Key::F16 ,NSF16FunctionKey},
+ {Key::F17 ,NSF17FunctionKey},
+ {Key::F18 ,NSF18FunctionKey},
+ {Key::F19 ,NSF19FunctionKey},
+ {Key::F20 ,NSF20FunctionKey},
+ {Key::F21 ,NSF21FunctionKey},
+ {Key::F22 ,NSF22FunctionKey},
+ {Key::F23 ,NSF23FunctionKey},
+ {Key::F24 ,NSF24FunctionKey},
+ {Key::F25 ,NSF25FunctionKey},
+ {Key::F26 ,NSF26FunctionKey},
+ {Key::F27 ,NSF27FunctionKey},
+ {Key::F28 ,NSF28FunctionKey},
+ {Key::F29 ,NSF29FunctionKey},
+ {Key::F30 ,NSF30FunctionKey},
+ {Key::F31 ,NSF31FunctionKey},
+ {Key::F32 ,NSF32FunctionKey},
+ {Key::F33 ,NSF33FunctionKey},
+ {Key::F34 ,NSF34FunctionKey},
+ {Key::F35 ,NSF35FunctionKey},
{Key::MENU ,NSMenuFunctionKey},
{Key::HELP ,NSHelpFunctionKey},
{Key::STOP ,NSStopFunctionKey},
diff --git a/platform/windows/display_server_windows.cpp b/platform/windows/display_server_windows.cpp
index 9763fb1066..998b0882b3 100644
--- a/platform/windows/display_server_windows.cpp
+++ b/platform/windows/display_server_windows.cpp
@@ -2199,6 +2199,7 @@ LRESULT DisplayServerWindows::MouseProc(int code, WPARAM wParam, LPARAM lParam)
}
if (C) {
_send_window_event(windows[C->get()], DisplayServerWindows::WINDOW_EVENT_CLOSE_REQUEST);
+ return 1;
}
} break;
}
diff --git a/platform/windows/export/export_plugin.cpp b/platform/windows/export/export_plugin.cpp
index 45281f037c..16c67345e0 100644
--- a/platform/windows/export/export_plugin.cpp
+++ b/platform/windows/export/export_plugin.cpp
@@ -43,7 +43,10 @@ Error EditorExportPlatformWindows::sign_shared_object(const Ref<EditorExportPres
Error EditorExportPlatformWindows::_export_debug_script(const Ref<EditorExportPreset> &p_preset, const String &p_app_name, const String &p_pkg_name, const String &p_path) {
Ref<FileAccess> f = FileAccess::open(p_path, FileAccess::WRITE);
- ERR_FAIL_COND_V(f.is_null(), ERR_CANT_CREATE);
+ if (f.is_null()) {
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Debug Script Export"), vformat(TTR("Could not open file \"%s\"."), p_path));
+ return ERR_CANT_CREATE;
+ }
f->store_line("@echo off");
f->store_line("title \"" + p_app_name + "\"");
@@ -55,10 +58,9 @@ Error EditorExportPlatformWindows::_export_debug_script(const Ref<EditorExportPr
Error EditorExportPlatformWindows::modify_template(const Ref<EditorExportPreset> &p_preset, bool p_debug, const String &p_path, int p_flags) {
if (p_preset->get("application/modify_resources")) {
- return _rcedit_add_data(p_preset, p_path);
- } else {
- return OK;
+ _rcedit_add_data(p_preset, p_path);
}
+ return OK;
}
Error EditorExportPlatformWindows::export_project(const Ref<EditorExportPreset> &p_preset, bool p_debug, const String &p_path, int p_flags) {
@@ -68,12 +70,15 @@ Error EditorExportPlatformWindows::export_project(const Ref<EditorExportPreset>
}
Error err = EditorExportPlatformPC::export_project(p_preset, p_debug, pck_path, p_flags);
if (p_preset->get("codesign/enable") && err == OK) {
- err = _code_sign(p_preset, pck_path);
+ _code_sign(p_preset, pck_path);
}
if (p_preset->get("binary_format/embed_pck") && err == OK) {
Ref<DirAccess> tmp_dir = DirAccess::create_for_path(p_path.get_base_dir());
err = tmp_dir->rename(pck_path, p_path);
+ if (err != OK) {
+ add_message(EXPORT_MESSAGE_ERROR, TTR("PCK Embedding"), vformat(TTR("Failed to rename temporary file \"%s\"."), pck_path));
+ }
}
String app_name;
@@ -89,7 +94,9 @@ Error EditorExportPlatformWindows::export_project(const Ref<EditorExportPreset>
int con_scr = p_preset->get("debug/export_console_script");
if ((con_scr == 1 && p_debug) || (con_scr == 2)) {
String scr_path = p_path.get_basename() + ".cmd";
- err = _export_debug_script(p_preset, app_name, p_path.get_file(), scr_path);
+ if (_export_debug_script(p_preset, app_name, p_path.get_file(), scr_path) != OK) {
+ add_message(EXPORT_MESSAGE_ERROR, TTR("Debug Script Export"), TTR("Could not create console script."));
+ }
}
}
@@ -142,7 +149,7 @@ Error EditorExportPlatformWindows::_rcedit_add_data(const Ref<EditorExportPreset
String rcedit_path = EditorSettings::get_singleton()->get("export/windows/rcedit");
if (rcedit_path != String() && !FileAccess::exists(rcedit_path)) {
- ERR_PRINT("Could not find rcedit executable at " + rcedit_path + ", aborting.");
+ add_message(EXPORT_MESSAGE_WARNING, TTR("Resources Modification"), vformat(TTR("Could not find rcedit executable at \"%s\"."), rcedit_path));
return ERR_FILE_NOT_FOUND;
}
@@ -155,7 +162,7 @@ Error EditorExportPlatformWindows::_rcedit_add_data(const Ref<EditorExportPreset
String wine_path = EditorSettings::get_singleton()->get("export/windows/wine");
if (!wine_path.is_empty() && !FileAccess::exists(wine_path)) {
- ERR_PRINT("Could not find wine executable at " + wine_path + ", aborting.");
+ add_message(EXPORT_MESSAGE_WARNING, TTR("Resources Modification"), vformat(TTR("Could not find wine executable at \"%s\"."), wine_path));
return ERR_FILE_NOT_FOUND;
}
@@ -222,10 +229,14 @@ Error EditorExportPlatformWindows::_rcedit_add_data(const Ref<EditorExportPreset
String str;
Error err = OS::get_singleton()->execute(rcedit_path, args, &str, nullptr, true);
- ERR_FAIL_COND_V_MSG(err != OK, err, "Could not start rcedit executable, configure rcedit path in the Editor Settings (Export > Windows > Rcedit).");
+ if (err != OK || (str.find("not found") != -1) || (str.find("not recognized") != -1)) {
+ add_message(EXPORT_MESSAGE_WARNING, TTR("Resources Modification"), TTR("Could not start rcedit executable, configure rcedit path in the Editor Settings (Export > Windows > Rcedit)."));
+ return err;
+ }
print_line("rcedit (" + p_path + "): " + str);
if (str.find("Fatal error") != -1) {
+ add_message(EXPORT_MESSAGE_WARNING, TTR("Resources Modification"), vformat(TTR("rcedit failed to modify executable:\n%s"), str));
return FAILED;
}
@@ -238,7 +249,7 @@ Error EditorExportPlatformWindows::_code_sign(const Ref<EditorExportPreset> &p_p
#ifdef WINDOWS_ENABLED
String signtool_path = EditorSettings::get_singleton()->get("export/windows/signtool");
if (!signtool_path.is_empty() && !FileAccess::exists(signtool_path)) {
- ERR_PRINT("Could not find signtool executable at " + signtool_path + ", aborting.");
+ add_message(EXPORT_MESSAGE_WARNING, TTR("Code Signing"), vformat(TTR("Could not find signtool executable at \"%s\"."), signtool_path));
return ERR_FILE_NOT_FOUND;
}
if (signtool_path.is_empty()) {
@@ -247,7 +258,7 @@ Error EditorExportPlatformWindows::_code_sign(const Ref<EditorExportPreset> &p_p
#else
String signtool_path = EditorSettings::get_singleton()->get("export/windows/osslsigncode");
if (!signtool_path.is_empty() && !FileAccess::exists(signtool_path)) {
- ERR_PRINT("Could not find osslsigncode executable at " + signtool_path + ", aborting.");
+ add_message(EXPORT_MESSAGE_WARNING, TTR("Code Signing"), vformat(TTR("Could not find osslsigncode executable at \"%s\"."), signtool_path));
return ERR_FILE_NOT_FOUND;
}
if (signtool_path.is_empty()) {
@@ -267,7 +278,7 @@ Error EditorExportPlatformWindows::_code_sign(const Ref<EditorExportPreset> &p_p
args.push_back("/f");
args.push_back(p_preset->get("codesign/identity"));
} else {
- EditorNode::add_io_error("codesign: no identity found");
+ add_message(EXPORT_MESSAGE_WARNING, TTR("Code Signing"), TTR("No identity found."));
return FAILED;
}
} else if (id_type == 2) { //Windows certificate store
@@ -275,11 +286,11 @@ Error EditorExportPlatformWindows::_code_sign(const Ref<EditorExportPreset> &p_p
args.push_back("/sha1");
args.push_back(p_preset->get("codesign/identity"));
} else {
- EditorNode::add_io_error("codesign: no identity found");
+ add_message(EXPORT_MESSAGE_WARNING, TTR("Code Signing"), TTR("No identity found."));
return FAILED;
}
} else {
- EditorNode::add_io_error("codesign: invalid identity type");
+ add_message(EXPORT_MESSAGE_WARNING, TTR("Code Signing"), TTR("Invalid identity type."));
return FAILED;
}
#else
@@ -287,7 +298,7 @@ Error EditorExportPlatformWindows::_code_sign(const Ref<EditorExportPreset> &p_p
args.push_back("-pkcs12");
args.push_back(p_preset->get("codesign/identity"));
} else {
- EditorNode::add_io_error("codesign: no identity found");
+ add_message(EXPORT_MESSAGE_WARNING, TTR("Code Signing"), TTR("No identity found."));
return FAILED;
}
#endif
@@ -319,7 +330,7 @@ Error EditorExportPlatformWindows::_code_sign(const Ref<EditorExportPreset> &p_p
args.push_back(p_preset->get("codesign/timestamp_server_url"));
#endif
} else {
- EditorNode::add_io_error("codesign: invalid timestamp server");
+ add_message(EXPORT_MESSAGE_WARNING, TTR("Code Signing"), TTR("Invalid timestamp server."));
return FAILED;
}
}
@@ -366,7 +377,10 @@ Error EditorExportPlatformWindows::_code_sign(const Ref<EditorExportPreset> &p_p
String str;
Error err = OS::get_singleton()->execute(signtool_path, args, &str, nullptr, true);
- ERR_FAIL_COND_V_MSG(err != OK, err, "Could not start signtool executable, configure signtool path in the Editor Settings (Export > Windows > Signtool).");
+ if (err != OK || (str.find("not found") != -1) || (str.find("not recognized") != -1)) {
+ add_message(EXPORT_MESSAGE_WARNING, TTR("Code Signing"), TTR("Could not start signtool executable, configure signtool path in the Editor Settings (Export > Windows > Signtool)."));
+ return err;
+ }
print_line("codesign (" + p_path + "): " + str);
#ifndef WINDOWS_ENABLED
@@ -374,6 +388,7 @@ Error EditorExportPlatformWindows::_code_sign(const Ref<EditorExportPreset> &p_p
#else
if (str.find("Failed") != -1) {
#endif
+ add_message(EXPORT_MESSAGE_WARNING, TTR("Code Signing"), vformat(TTR("Signtool failed to sign executable:\n%s"), str));
return FAILED;
}
@@ -381,10 +396,16 @@ Error EditorExportPlatformWindows::_code_sign(const Ref<EditorExportPreset> &p_p
Ref<DirAccess> tmp_dir = DirAccess::create_for_path(p_path.get_base_dir());
err = tmp_dir->remove(p_path);
- ERR_FAIL_COND_V(err != OK, err);
+ if (err != OK) {
+ add_message(EXPORT_MESSAGE_WARNING, TTR("Code Signing"), vformat(TTR("Failed to remove temporary file \"%s\"."), p_path));
+ return err;
+ }
err = tmp_dir->rename(p_path + "_signed", p_path);
- ERR_FAIL_COND_V(err != OK, err);
+ if (err != OK) {
+ add_message(EXPORT_MESSAGE_WARNING, TTR("Code Signing"), vformat(TTR("Failed to rename temporary file \"%s\"."), p_path + "_signed"));
+ return err;
+ }
#endif
return OK;
@@ -433,15 +454,17 @@ bool EditorExportPlatformWindows::can_export(const Ref<EditorExportPreset> &p_pr
return valid;
}
-Error EditorExportPlatformWindows::fixup_embedded_pck(const String &p_path, int64_t p_embedded_start, int64_t p_embedded_size) const {
+Error EditorExportPlatformWindows::fixup_embedded_pck(const String &p_path, int64_t p_embedded_start, int64_t p_embedded_size) {
// Patch the header of the "pck" section in the PE file so that it corresponds to the embedded data
if (p_embedded_size + p_embedded_start >= 0x100000000) { // Check for total executable size
- ERR_FAIL_V_MSG(ERR_INVALID_DATA, "Windows executables cannot be >= 4 GiB.");
+ add_message(EXPORT_MESSAGE_ERROR, TTR("PCK Embedding"), TTR("Windows executables cannot be >= 4 GiB."));
+ return ERR_INVALID_DATA;
}
Ref<FileAccess> f = FileAccess::open(p_path, FileAccess::READ_WRITE);
if (f.is_null()) {
+ add_message(EXPORT_MESSAGE_ERROR, TTR("PCK Embedding"), vformat(TTR("Failed to open executable file \"%s\"."), p_path));
return ERR_CANT_OPEN;
}
@@ -453,6 +476,7 @@ Error EditorExportPlatformWindows::fixup_embedded_pck(const String &p_path, int6
f->seek(pe_pos);
uint32_t magic = f->get_32();
if (magic != 0x00004550) {
+ add_message(EXPORT_MESSAGE_ERROR, TTR("PCK Embedding"), TTR("Executable file header corrupted."));
return ERR_FILE_CORRUPT;
}
}
@@ -502,5 +526,9 @@ Error EditorExportPlatformWindows::fixup_embedded_pck(const String &p_path, int6
}
}
- return found ? OK : ERR_FILE_CORRUPT;
+ if (!found) {
+ add_message(EXPORT_MESSAGE_ERROR, TTR("PCK Embedding"), TTR("Executable \"pck\" section not found."));
+ return ERR_FILE_CORRUPT;
+ }
+ return OK;
}
diff --git a/platform/windows/export/export_plugin.h b/platform/windows/export/export_plugin.h
index 61184a8987..51f98365a9 100644
--- a/platform/windows/export/export_plugin.h
+++ b/platform/windows/export/export_plugin.h
@@ -51,7 +51,7 @@ public:
virtual bool get_export_option_visibility(const String &p_option, const HashMap<StringName, Variant> &p_options) const override;
virtual bool can_export(const Ref<EditorExportPreset> &p_preset, String &r_error, bool &r_missing_templates) const override;
virtual String get_template_file_name(const String &p_target, const String &p_arch) const override;
- virtual Error fixup_embedded_pck(const String &p_path, int64_t p_embedded_start, int64_t p_embedded_size) const override;
+ virtual Error fixup_embedded_pck(const String &p_path, int64_t p_embedded_start, int64_t p_embedded_size) override;
};
#endif
diff --git a/platform/windows/key_mapping_windows.cpp b/platform/windows/key_mapping_windows.cpp
index e32dc0d1a6..2d8d68a575 100644
--- a/platform/windows/key_mapping_windows.cpp
+++ b/platform/windows/key_mapping_windows.cpp
@@ -179,7 +179,14 @@ static _WinTranslatePair _vk_to_keycode[] = {
{ Key::F14, VK_F14 }, // (0x7D)
{ Key::F15, VK_F15 }, // (0x7E)
{ Key::F16, VK_F16 }, // (0x7F)
- // We have no mappings for F17-F24. (0x80-87)
+ { Key::F17, VK_F17 }, // (0x80)
+ { Key::F18, VK_F18 }, // (0x81)
+ { Key::F19, VK_F19 }, // (0x82)
+ { Key::F20, VK_F20 }, // (0x83)
+ { Key::F21, VK_F21 }, // (0x84)
+ { Key::F22, VK_F22 }, // (0x85)
+ { Key::F23, VK_F23 }, // (0x86)
+ { Key::F24, VK_F24 }, // (0x87)
// 0x88-8F are reserved for UI navigation.
{ Key::NUMLOCK, VK_NUMLOCK }, // (0x90)
{ Key::SCROLLLOCK, VK_SCROLL }, // (0x91)
@@ -409,6 +416,14 @@ static _WinTranslatePair _scancode_to_keycode[] = {
{ Key::F14, 0x65 },
{ Key::F15, 0x66 },
{ Key::F16, 0x67 },
+ { Key::F17, 0x68 },
+ { Key::F18, 0x69 },
+ { Key::F19, 0x6A },
+ { Key::F20, 0x6B },
+ { Key::F21, 0x6C },
+ { Key::F22, 0x6D },
+ { Key::F23, 0x6E },
+ { Key::F24, 0x76 },
{ Key::UNKNOWN, 0 }
};
diff --git a/scene/2d/area_2d.cpp b/scene/2d/area_2d.cpp
index 02d9198e43..dfc1016c84 100644
--- a/scene/2d/area_2d.cpp
+++ b/scene/2d/area_2d.cpp
@@ -605,7 +605,7 @@ void Area2D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "gravity_space_override", PROPERTY_HINT_ENUM, "Disabled,Combine,Combine-Replace,Replace,Replace-Combine", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED), "set_gravity_space_override_mode", "get_gravity_space_override_mode");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "gravity_point", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED), "set_gravity_is_point", "is_gravity_a_point");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "gravity_point_distance_scale", PROPERTY_HINT_RANGE, "0,1024,0.001,or_greater,exp"), "set_gravity_point_distance_scale", "get_gravity_point_distance_scale");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "gravity_point_center"), "set_gravity_point_center", "get_gravity_point_center");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "gravity_point_center", PROPERTY_HINT_NONE, "suffix:px"), "set_gravity_point_center", "get_gravity_point_center");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "gravity_direction"), "set_gravity_direction", "get_gravity_direction");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "gravity", PROPERTY_HINT_RANGE, U"-4096,4096,0.001,or_lesser,or_greater,suffix:px/s\u00B2"), "set_gravity", "get_gravity");
diff --git a/scene/2d/audio_stream_player_2d.cpp b/scene/2d/audio_stream_player_2d.cpp
index e7f1740f0b..eaab58c4ae 100644
--- a/scene/2d/audio_stream_player_2d.cpp
+++ b/scene/2d/audio_stream_player_2d.cpp
@@ -30,6 +30,7 @@
#include "audio_stream_player_2d.h"
+#include "core/config/project_settings.h"
#include "scene/2d/area_2d.h"
#include "scene/2d/audio_listener_2d.h"
#include "scene/main/window.h"
@@ -186,7 +187,14 @@ void AudioStreamPlayer2D::_update_panning() {
float multiplier = Math::pow(1.0f - dist / max_distance, attenuation);
multiplier *= Math::db2linear(volume_db); //also apply player volume!
- float pan = CLAMP((relative_to_listener.x + screen_size.x * 0.5) / screen_size.x, 0.0, 1.0);
+ float pan = relative_to_listener.x / screen_size.x;
+ // Don't let the panning effect extend (too far) beyond the screen.
+ pan = CLAMP(pan, -1, 1);
+
+ // Bake in a constant factor here to allow the project setting defaults for 2d and 3d to be normalized to 1.0.
+ pan *= panning_strength * cached_global_panning_strength * 0.5f;
+
+ pan = CLAMP(pan + 0.5, 0.0, 1.0);
float l = 1.0 - pan;
float r = pan;
@@ -391,6 +399,15 @@ int AudioStreamPlayer2D::get_max_polyphony() const {
return max_polyphony;
}
+void AudioStreamPlayer2D::set_panning_strength(float p_panning_strength) {
+ ERR_FAIL_COND_MSG(p_panning_strength < 0, "Panning strength must be a positive number.");
+ panning_strength = p_panning_strength;
+}
+
+float AudioStreamPlayer2D::get_panning_strength() const {
+ return panning_strength;
+}
+
void AudioStreamPlayer2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_stream", "stream"), &AudioStreamPlayer2D::set_stream);
ClassDB::bind_method(D_METHOD("get_stream"), &AudioStreamPlayer2D::get_stream);
@@ -432,6 +449,9 @@ void AudioStreamPlayer2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_max_polyphony", "max_polyphony"), &AudioStreamPlayer2D::set_max_polyphony);
ClassDB::bind_method(D_METHOD("get_max_polyphony"), &AudioStreamPlayer2D::get_max_polyphony);
+ ClassDB::bind_method(D_METHOD("set_panning_strength", "panning_strength"), &AudioStreamPlayer2D::set_panning_strength);
+ ClassDB::bind_method(D_METHOD("get_panning_strength"), &AudioStreamPlayer2D::get_panning_strength);
+
ClassDB::bind_method(D_METHOD("get_stream_playback"), &AudioStreamPlayer2D::get_stream_playback);
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "stream", PROPERTY_HINT_RESOURCE_TYPE, "AudioStream"), "set_stream", "get_stream");
@@ -443,6 +463,7 @@ void AudioStreamPlayer2D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "max_distance", PROPERTY_HINT_RANGE, "1,4096,1,or_greater,exp,suffix:px"), "set_max_distance", "get_max_distance");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "attenuation", PROPERTY_HINT_EXP_EASING, "attenuation"), "set_attenuation", "get_attenuation");
ADD_PROPERTY(PropertyInfo(Variant::INT, "max_polyphony", PROPERTY_HINT_NONE, ""), "set_max_polyphony", "get_max_polyphony");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "panning_strength", PROPERTY_HINT_RANGE, "0,3,0.01,or_greater"), "set_panning_strength", "get_panning_strength");
ADD_PROPERTY(PropertyInfo(Variant::STRING_NAME, "bus", PROPERTY_HINT_ENUM, ""), "set_bus", "get_bus");
ADD_PROPERTY(PropertyInfo(Variant::INT, "area_mask", PROPERTY_HINT_LAYERS_2D_PHYSICS), "set_area_mask", "get_area_mask");
@@ -451,6 +472,7 @@ void AudioStreamPlayer2D::_bind_methods() {
AudioStreamPlayer2D::AudioStreamPlayer2D() {
AudioServer::get_singleton()->connect("bus_layout_changed", callable_mp(this, &AudioStreamPlayer2D::_bus_layout_changed));
+ cached_global_panning_strength = ProjectSettings::get_singleton()->get("audio/general/2d_panning_strength");
}
AudioStreamPlayer2D::~AudioStreamPlayer2D() {
diff --git a/scene/2d/audio_stream_player_2d.h b/scene/2d/audio_stream_player_2d.h
index 73b09e432f..a22782fe44 100644
--- a/scene/2d/audio_stream_player_2d.h
+++ b/scene/2d/audio_stream_player_2d.h
@@ -81,6 +81,9 @@ private:
float max_distance = 2000.0;
float attenuation = 1.0;
+ float panning_strength = 1.0f;
+ float cached_global_panning_strength = 1.0f;
+
protected:
void _validate_property(PropertyInfo &property) const override;
void _notification(int p_what);
@@ -123,6 +126,9 @@ public:
void set_max_polyphony(int p_max_polyphony);
int get_max_polyphony() const;
+ void set_panning_strength(float p_panning_strength);
+ float get_panning_strength() const;
+
Ref<AudioStreamPlayback> get_stream_playback();
AudioStreamPlayer2D();
diff --git a/scene/2d/back_buffer_copy.cpp b/scene/2d/back_buffer_copy.cpp
index c411aaf411..aa4ae01fd9 100644
--- a/scene/2d/back_buffer_copy.cpp
+++ b/scene/2d/back_buffer_copy.cpp
@@ -85,7 +85,7 @@ void BackBufferCopy::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_copy_mode"), &BackBufferCopy::get_copy_mode);
ADD_PROPERTY(PropertyInfo(Variant::INT, "copy_mode", PROPERTY_HINT_ENUM, "Disabled,Rect,Viewport"), "set_copy_mode", "get_copy_mode");
- ADD_PROPERTY(PropertyInfo(Variant::RECT2, "rect"), "set_rect", "get_rect");
+ ADD_PROPERTY(PropertyInfo(Variant::RECT2, "rect", PROPERTY_HINT_NONE, "suffix:px"), "set_rect", "get_rect");
BIND_ENUM_CONSTANT(COPY_MODE_DISABLED);
BIND_ENUM_CONSTANT(COPY_MODE_RECT);
diff --git a/scene/2d/camera_2d.cpp b/scene/2d/camera_2d.cpp
index f61dbc071d..2616d1f09e 100644
--- a/scene/2d/camera_2d.cpp
+++ b/scene/2d/camera_2d.cpp
@@ -729,24 +729,24 @@ void Camera2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_margin_drawing_enabled", "margin_drawing_enabled"), &Camera2D::set_margin_drawing_enabled);
ClassDB::bind_method(D_METHOD("is_margin_drawing_enabled"), &Camera2D::is_margin_drawing_enabled);
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "offset"), "set_offset", "get_offset");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "offset", PROPERTY_HINT_NONE, "suffix:px"), "set_offset", "get_offset");
ADD_PROPERTY(PropertyInfo(Variant::INT, "anchor_mode", PROPERTY_HINT_ENUM, "Fixed TopLeft,Drag Center"), "set_anchor_mode", "get_anchor_mode");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "rotating"), "set_rotating", "is_rotating");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "current"), "set_current", "is_current");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "zoom"), "set_zoom", "get_zoom");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "zoom", PROPERTY_HINT_LINK), "set_zoom", "get_zoom");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "custom_viewport", PROPERTY_HINT_RESOURCE_TYPE, "Viewport", PROPERTY_USAGE_NONE), "set_custom_viewport", "get_custom_viewport");
ADD_PROPERTY(PropertyInfo(Variant::INT, "process_callback", PROPERTY_HINT_ENUM, "Physics,Idle"), "set_process_callback", "get_process_callback");
ADD_GROUP("Limit", "limit_");
- ADD_PROPERTYI(PropertyInfo(Variant::INT, "limit_left"), "set_limit", "get_limit", SIDE_LEFT);
- ADD_PROPERTYI(PropertyInfo(Variant::INT, "limit_top"), "set_limit", "get_limit", SIDE_TOP);
- ADD_PROPERTYI(PropertyInfo(Variant::INT, "limit_right"), "set_limit", "get_limit", SIDE_RIGHT);
- ADD_PROPERTYI(PropertyInfo(Variant::INT, "limit_bottom"), "set_limit", "get_limit", SIDE_BOTTOM);
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "limit_left", PROPERTY_HINT_NONE, "suffix:px"), "set_limit", "get_limit", SIDE_LEFT);
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "limit_top", PROPERTY_HINT_NONE, "suffix:px"), "set_limit", "get_limit", SIDE_TOP);
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "limit_right", PROPERTY_HINT_NONE, "suffix:px"), "set_limit", "get_limit", SIDE_RIGHT);
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "limit_bottom", PROPERTY_HINT_NONE, "suffix:px"), "set_limit", "get_limit", SIDE_BOTTOM);
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "limit_smoothed"), "set_limit_smoothing_enabled", "is_limit_smoothing_enabled");
ADD_GROUP("Smoothing", "smoothing_");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "smoothing_enabled"), "set_enable_follow_smoothing", "is_follow_smoothing_enabled");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "smoothing_speed"), "set_follow_smoothing", "get_follow_smoothing");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "smoothing_speed", PROPERTY_HINT_NONE, "suffix:px/s"), "set_follow_smoothing", "get_follow_smoothing");
ADD_GROUP("Drag", "drag_");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "drag_horizontal_enabled"), "set_drag_horizontal_enabled", "is_drag_horizontal_enabled");
diff --git a/scene/2d/canvas_group.cpp b/scene/2d/canvas_group.cpp
index 37a858330c..bbf3fff0ad 100644
--- a/scene/2d/canvas_group.cpp
+++ b/scene/2d/canvas_group.cpp
@@ -75,8 +75,8 @@ void CanvasGroup::_bind_methods() {
ClassDB::bind_method(D_METHOD("is_using_mipmaps"), &CanvasGroup::is_using_mipmaps);
ADD_GROUP("Tweaks", "");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "fit_margin", PROPERTY_HINT_RANGE, "0,1024,1.0,or_greater"), "set_fit_margin", "get_fit_margin");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "clear_margin", PROPERTY_HINT_RANGE, "0,1024,1.0,or_greater"), "set_clear_margin", "get_clear_margin");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "fit_margin", PROPERTY_HINT_RANGE, "0,1024,1.0,or_greater,suffix:px"), "set_fit_margin", "get_fit_margin");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "clear_margin", PROPERTY_HINT_RANGE, "0,1024,1.0,or_greater,suffix:px"), "set_clear_margin", "get_clear_margin");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "use_mipmaps"), "set_use_mipmaps", "is_using_mipmaps");
}
diff --git a/scene/2d/collision_polygon_2d.cpp b/scene/2d/collision_polygon_2d.cpp
index 20840f5aea..8df29851e5 100644
--- a/scene/2d/collision_polygon_2d.cpp
+++ b/scene/2d/collision_polygon_2d.cpp
@@ -315,7 +315,7 @@ void CollisionPolygon2D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::PACKED_VECTOR2_ARRAY, "polygon"), "set_polygon", "get_polygon");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "disabled"), "set_disabled", "is_disabled");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "one_way_collision"), "set_one_way_collision", "is_one_way_collision_enabled");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "one_way_collision_margin", PROPERTY_HINT_RANGE, "0,128,0.1"), "set_one_way_collision_margin", "get_one_way_collision_margin");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "one_way_collision_margin", PROPERTY_HINT_RANGE, "0,128,0.1,suffix:px"), "set_one_way_collision_margin", "get_one_way_collision_margin");
BIND_ENUM_CONSTANT(BUILD_SOLIDS);
BIND_ENUM_CONSTANT(BUILD_SEGMENTS);
diff --git a/scene/2d/cpu_particles_2d.cpp b/scene/2d/cpu_particles_2d.cpp
index 07b58e9721..913003c7e6 100644
--- a/scene/2d/cpu_particles_2d.cpp
+++ b/scene/2d/cpu_particles_2d.cpp
@@ -1362,9 +1362,9 @@ void CPUParticles2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("convert_from_particles", "particles"), &CPUParticles2D::convert_from_particles);
ADD_GROUP("Emission Shape", "emission_");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "emission_shape", PROPERTY_HINT_ENUM, "Point,Sphere,Sphere Surface,Box,Points,Directed Points", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED), "set_emission_shape", "get_emission_shape");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "emission_shape", PROPERTY_HINT_ENUM, "Point,Sphere,Sphere Surface,Rectangle,Points,Directed Points", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED), "set_emission_shape", "get_emission_shape");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "emission_sphere_radius", PROPERTY_HINT_RANGE, "0.01,128,0.01,suffix:px"), "set_emission_sphere_radius", "get_emission_sphere_radius");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "emission_rect_extents"), "set_emission_rect_extents", "get_emission_rect_extents");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "emission_rect_extents", PROPERTY_HINT_NONE, "suffix:px"), "set_emission_rect_extents", "get_emission_rect_extents");
ADD_PROPERTY(PropertyInfo(Variant::PACKED_VECTOR2_ARRAY, "emission_points"), "set_emission_points", "get_emission_points");
ADD_PROPERTY(PropertyInfo(Variant::PACKED_VECTOR2_ARRAY, "emission_normals"), "set_emission_normals", "get_emission_normals");
ADD_PROPERTY(PropertyInfo(Variant::PACKED_COLOR_ARRAY, "emission_colors"), "set_emission_colors", "get_emission_colors");
diff --git a/scene/2d/gpu_particles_2d.cpp b/scene/2d/gpu_particles_2d.cpp
index d1b5f16e08..6edd75e62a 100644
--- a/scene/2d/gpu_particles_2d.cpp
+++ b/scene/2d/gpu_particles_2d.cpp
@@ -617,12 +617,12 @@ void GPUParticles2D::_bind_methods() {
ADD_GROUP("Collision", "collision_");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "collision_base_size", PROPERTY_HINT_RANGE, "0,128,0.01,or_greater,suffix:px"), "set_collision_base_size", "get_collision_base_size");
ADD_GROUP("Drawing", "");
- ADD_PROPERTY(PropertyInfo(Variant::RECT2, "visibility_rect"), "set_visibility_rect", "get_visibility_rect");
+ ADD_PROPERTY(PropertyInfo(Variant::RECT2, "visibility_rect", PROPERTY_HINT_NONE, "suffix:px"), "set_visibility_rect", "get_visibility_rect");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "local_coords"), "set_use_local_coordinates", "get_use_local_coordinates");
ADD_PROPERTY(PropertyInfo(Variant::INT, "draw_order", PROPERTY_HINT_ENUM, "Index,Lifetime,Reverse Lifetime"), "set_draw_order", "get_draw_order");
ADD_GROUP("Trails", "trail_");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "trail_enabled"), "set_trail_enabled", "is_trail_enabled");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "trail_length_secs", PROPERTY_HINT_RANGE, "0.01,10,0.01"), "set_trail_length", "get_trail_length");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "trail_length_secs", PROPERTY_HINT_RANGE, "0.01,10,0.01,suffix:s"), "set_trail_length", "get_trail_length");
ADD_PROPERTY(PropertyInfo(Variant::INT, "trail_sections", PROPERTY_HINT_RANGE, "2,128,1"), "set_trail_sections", "get_trail_sections");
ADD_PROPERTY(PropertyInfo(Variant::INT, "trail_section_subdivisions", PROPERTY_HINT_RANGE, "1,1024,1"), "set_trail_section_subdivisions", "get_trail_section_subdivisions");
ADD_GROUP("Process Material", "process_");
diff --git a/scene/2d/light_2d.cpp b/scene/2d/light_2d.cpp
index 28d9b284e6..0481a58431 100644
--- a/scene/2d/light_2d.cpp
+++ b/scene/2d/light_2d.cpp
@@ -30,6 +30,11 @@
#include "light_2d.h"
+void Light2D::owner_changed_notify() {
+ // For cases where owner changes _after_ entering tree (as example, editor editing).
+ _update_light_visibility();
+}
+
void Light2D::_update_light_visibility() {
if (!is_inside_tree()) {
return;
diff --git a/scene/2d/light_2d.h b/scene/2d/light_2d.h
index f7b1f420e3..a84b6516c0 100644
--- a/scene/2d/light_2d.h
+++ b/scene/2d/light_2d.h
@@ -73,6 +73,8 @@ private:
void _update_light_visibility();
+ virtual void owner_changed_notify() override;
+
protected:
_FORCE_INLINE_ RID _get_light() const { return canvas_light; }
void _notification(int p_what);
diff --git a/scene/2d/navigation_agent_2d.cpp b/scene/2d/navigation_agent_2d.cpp
index 80d60dca17..5a451a6dab 100644
--- a/scene/2d/navigation_agent_2d.cpp
+++ b/scene/2d/navigation_agent_2d.cpp
@@ -40,6 +40,9 @@ void NavigationAgent2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_avoidance_enabled", "enabled"), &NavigationAgent2D::set_avoidance_enabled);
ClassDB::bind_method(D_METHOD("get_avoidance_enabled"), &NavigationAgent2D::get_avoidance_enabled);
+ ClassDB::bind_method(D_METHOD("set_path_desired_distance", "desired_distance"), &NavigationAgent2D::set_path_desired_distance);
+ ClassDB::bind_method(D_METHOD("get_path_desired_distance"), &NavigationAgent2D::get_path_desired_distance);
+
ClassDB::bind_method(D_METHOD("set_target_desired_distance", "desired_distance"), &NavigationAgent2D::set_target_desired_distance);
ClassDB::bind_method(D_METHOD("get_target_desired_distance"), &NavigationAgent2D::get_target_desired_distance);
@@ -61,8 +64,14 @@ void NavigationAgent2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_path_max_distance", "max_speed"), &NavigationAgent2D::set_path_max_distance);
ClassDB::bind_method(D_METHOD("get_path_max_distance"), &NavigationAgent2D::get_path_max_distance);
- ClassDB::bind_method(D_METHOD("set_navigable_layers", "navigable_layers"), &NavigationAgent2D::set_navigable_layers);
- ClassDB::bind_method(D_METHOD("get_navigable_layers"), &NavigationAgent2D::get_navigable_layers);
+ ClassDB::bind_method(D_METHOD("set_navigation_layers", "navigation_layers"), &NavigationAgent2D::set_navigation_layers);
+ ClassDB::bind_method(D_METHOD("get_navigation_layers"), &NavigationAgent2D::get_navigation_layers);
+
+ ClassDB::bind_method(D_METHOD("set_navigation_layer_value", "layer_number", "value"), &NavigationAgent2D::set_navigation_layer_value);
+ ClassDB::bind_method(D_METHOD("get_navigation_layer_value", "layer_number"), &NavigationAgent2D::get_navigation_layer_value);
+
+ ClassDB::bind_method(D_METHOD("set_navigation_map", "navigation_map"), &NavigationAgent2D::set_navigation_map);
+ ClassDB::bind_method(D_METHOD("get_navigation_map"), &NavigationAgent2D::get_navigation_map);
ClassDB::bind_method(D_METHOD("set_target_location", "location"), &NavigationAgent2D::set_target_location);
ClassDB::bind_method(D_METHOD("get_target_location"), &NavigationAgent2D::get_target_location);
@@ -78,6 +87,7 @@ void NavigationAgent2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("_avoidance_done", "new_velocity"), &NavigationAgent2D::_avoidance_done);
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "path_desired_distance", PROPERTY_HINT_RANGE, "0.1,100,0.01,suffix:px"), "set_path_desired_distance", "get_path_desired_distance");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "target_desired_distance", PROPERTY_HINT_RANGE, "0.1,100,0.01,suffix:px"), "set_target_desired_distance", "get_target_desired_distance");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "radius", PROPERTY_HINT_RANGE, "0.1,500,0.01,suffix:px"), "set_radius", "get_radius");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "neighbor_dist", PROPERTY_HINT_RANGE, "0.1,100000,0.01,suffix:px"), "set_neighbor_dist", "get_neighbor_dist");
@@ -86,7 +96,7 @@ void NavigationAgent2D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "max_speed", PROPERTY_HINT_RANGE, "0.1,100000,0.01,suffix:px/s"), "set_max_speed", "get_max_speed");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "path_max_distance", PROPERTY_HINT_RANGE, "10,100,1,suffix:px"), "set_path_max_distance", "get_path_max_distance");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "avoidance_enabled"), "set_avoidance_enabled", "get_avoidance_enabled");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "navigable_layers", PROPERTY_HINT_LAYERS_2D_NAVIGATION), "set_navigable_layers", "get_navigable_layers");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "navigation_layers", PROPERTY_HINT_LAYERS_2D_NAVIGATION), "set_navigation_layers", "get_navigation_layers");
ADD_SIGNAL(MethodInfo("path_changed"));
ADD_SIGNAL(MethodInfo("target_reached"));
@@ -191,7 +201,11 @@ void NavigationAgent2D::set_agent_parent(Node *p_agent_parent) {
if (Object::cast_to<Node2D>(p_agent_parent) != nullptr) {
// place agent on navigation map first or else the RVO agent callback creation fails silently later
agent_parent = Object::cast_to<Node2D>(p_agent_parent);
- NavigationServer2D::get_singleton()->agent_set_map(get_rid(), agent_parent->get_world_2d()->get_navigation_map());
+ if (map_override.is_valid()) {
+ NavigationServer2D::get_singleton()->agent_set_map(get_rid(), map_override);
+ } else {
+ NavigationServer2D::get_singleton()->agent_set_map(get_rid(), agent_parent->get_world_2d()->get_navigation_map());
+ }
// create new avoidance callback if enabled
set_avoidance_enabled(avoidance_enabled);
} else {
@@ -200,16 +214,53 @@ void NavigationAgent2D::set_agent_parent(Node *p_agent_parent) {
}
}
-void NavigationAgent2D::set_navigable_layers(uint32_t p_layers) {
- bool layers_changed = navigable_layers != p_layers;
- navigable_layers = p_layers;
- if (layers_changed) {
+void NavigationAgent2D::set_navigation_layers(uint32_t p_navigation_layers) {
+ bool navigation_layers_changed = navigation_layers != p_navigation_layers;
+ navigation_layers = p_navigation_layers;
+ if (navigation_layers_changed) {
_request_repath();
}
}
-uint32_t NavigationAgent2D::get_navigable_layers() const {
- return navigable_layers;
+uint32_t NavigationAgent2D::get_navigation_layers() const {
+ return navigation_layers;
+}
+
+void NavigationAgent2D::set_navigation_layer_value(int p_layer_number, bool p_value) {
+ ERR_FAIL_COND_MSG(p_layer_number < 1, "Navigation layer number must be between 1 and 32 inclusive.");
+ ERR_FAIL_COND_MSG(p_layer_number > 32, "Navigation layer number must be between 1 and 32 inclusive.");
+ uint32_t _navigation_layers = get_navigation_layers();
+ if (p_value) {
+ _navigation_layers |= 1 << (p_layer_number - 1);
+ } else {
+ _navigation_layers &= ~(1 << (p_layer_number - 1));
+ }
+ set_navigation_layers(_navigation_layers);
+}
+
+bool NavigationAgent2D::get_navigation_layer_value(int p_layer_number) const {
+ ERR_FAIL_COND_V_MSG(p_layer_number < 1, false, "Navigation layer number must be between 1 and 32 inclusive.");
+ ERR_FAIL_COND_V_MSG(p_layer_number > 32, false, "Navigation layer number must be between 1 and 32 inclusive.");
+ return get_navigation_layers() & (1 << (p_layer_number - 1));
+}
+
+void NavigationAgent2D::set_navigation_map(RID p_navigation_map) {
+ map_override = p_navigation_map;
+ NavigationServer2D::get_singleton()->agent_set_map(agent, map_override);
+ _request_repath();
+}
+
+RID NavigationAgent2D::get_navigation_map() const {
+ if (map_override.is_valid()) {
+ return map_override;
+ } else if (agent_parent != nullptr) {
+ return agent_parent->get_world_2d()->get_navigation_map();
+ }
+ return RID();
+}
+
+void NavigationAgent2D::set_path_desired_distance(real_t p_dd) {
+ path_desired_distance = p_dd;
}
void NavigationAgent2D::set_target_desired_distance(real_t p_dd) {
@@ -360,7 +411,11 @@ void NavigationAgent2D::update_navigation() {
}
if (reload_path) {
- navigation_path = NavigationServer2D::get_singleton()->map_get_path(agent_parent->get_world_2d()->get_navigation_map(), o, target_location, true, navigable_layers);
+ if (map_override.is_valid()) {
+ navigation_path = NavigationServer2D::get_singleton()->map_get_path(map_override, o, target_location, true, navigation_layers);
+ } else {
+ navigation_path = NavigationServer2D::get_singleton()->map_get_path(agent_parent->get_world_2d()->get_navigation_map(), o, target_location, true, navigation_layers);
+ }
navigation_finished = false;
nav_path_index = 0;
emit_signal(SNAME("path_changed"));
@@ -373,7 +428,7 @@ void NavigationAgent2D::update_navigation() {
// Check if we can advance the navigation path
if (navigation_finished == false) {
// Advances to the next far away location.
- while (o.distance_to(navigation_path[nav_path_index]) < target_desired_distance) {
+ while (o.distance_to(navigation_path[nav_path_index]) < path_desired_distance) {
nav_path_index += 1;
if (nav_path_index == navigation_path.size()) {
_check_distance_to_target();
diff --git a/scene/2d/navigation_agent_2d.h b/scene/2d/navigation_agent_2d.h
index c9983119d0..032a15cad2 100644
--- a/scene/2d/navigation_agent_2d.h
+++ b/scene/2d/navigation_agent_2d.h
@@ -42,10 +42,12 @@ class NavigationAgent2D : public Node {
RID agent;
RID map_before_pause;
+ RID map_override;
bool avoidance_enabled = false;
- uint32_t navigable_layers = 1;
+ uint32_t navigation_layers = 1;
+ real_t path_desired_distance = 1.0;
real_t target_desired_distance = 1.0;
real_t radius = 0.0;
real_t neighbor_dist = 0.0;
@@ -84,8 +86,19 @@ public:
void set_agent_parent(Node *p_agent_parent);
- void set_navigable_layers(uint32_t p_layers);
- uint32_t get_navigable_layers() const;
+ void set_navigation_layers(uint32_t p_navigation_layers);
+ uint32_t get_navigation_layers() const;
+
+ void set_navigation_layer_value(int p_layer_number, bool p_value);
+ bool get_navigation_layer_value(int p_layer_number) const;
+
+ void set_navigation_map(RID p_navigation_map);
+ RID get_navigation_map() const;
+
+ void set_path_desired_distance(real_t p_dd);
+ real_t get_path_desired_distance() const {
+ return path_desired_distance;
+ }
void set_target_desired_distance(real_t p_dd);
real_t get_target_desired_distance() const {
diff --git a/scene/2d/navigation_region_2d.cpp b/scene/2d/navigation_region_2d.cpp
index 260faf1d68..6e8fd891cb 100644
--- a/scene/2d/navigation_region_2d.cpp
+++ b/scene/2d/navigation_region_2d.cpp
@@ -331,6 +331,7 @@ void NavigationPolygon::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_polygon_count"), &NavigationPolygon::get_polygon_count);
ClassDB::bind_method(D_METHOD("get_polygon", "idx"), &NavigationPolygon::get_polygon);
ClassDB::bind_method(D_METHOD("clear_polygons"), &NavigationPolygon::clear_polygons);
+ ClassDB::bind_method(D_METHOD("get_mesh"), &NavigationPolygon::get_mesh);
ClassDB::bind_method(D_METHOD("add_outline", "outline"), &NavigationPolygon::add_outline);
ClassDB::bind_method(D_METHOD("add_outline_at_index", "outline", "index"), &NavigationPolygon::add_outline_at_index);
@@ -379,12 +380,50 @@ bool NavigationRegion2D::is_enabled() const {
return enabled;
}
-void NavigationRegion2D::set_layers(uint32_t p_layers) {
- NavigationServer2D::get_singleton()->region_set_layers(region, p_layers);
+void NavigationRegion2D::set_navigation_layers(uint32_t p_navigation_layers) {
+ NavigationServer2D::get_singleton()->region_set_navigation_layers(region, p_navigation_layers);
}
-uint32_t NavigationRegion2D::get_layers() const {
- return NavigationServer2D::get_singleton()->region_get_layers(region);
+uint32_t NavigationRegion2D::get_navigation_layers() const {
+ return NavigationServer2D::get_singleton()->region_get_navigation_layers(region);
+}
+
+void NavigationRegion2D::set_navigation_layer_value(int p_layer_number, bool p_value) {
+ ERR_FAIL_COND_MSG(p_layer_number < 1, "Navigation layer number must be between 1 and 32 inclusive.");
+ ERR_FAIL_COND_MSG(p_layer_number > 32, "Navigation layer number must be between 1 and 32 inclusive.");
+ uint32_t _navigation_layers = get_navigation_layers();
+ if (p_value) {
+ _navigation_layers |= 1 << (p_layer_number - 1);
+ } else {
+ _navigation_layers &= ~(1 << (p_layer_number - 1));
+ }
+ set_navigation_layers(_navigation_layers);
+}
+
+bool NavigationRegion2D::get_navigation_layer_value(int p_layer_number) const {
+ ERR_FAIL_COND_V_MSG(p_layer_number < 1, false, "Navigation layer number must be between 1 and 32 inclusive.");
+ ERR_FAIL_COND_V_MSG(p_layer_number > 32, false, "Navigation layer number must be between 1 and 32 inclusive.");
+ return get_navigation_layers() & (1 << (p_layer_number - 1));
+}
+
+void NavigationRegion2D::set_enter_cost(real_t p_enter_cost) {
+ ERR_FAIL_COND_MSG(p_enter_cost < 0.0, "The enter_cost must be positive.");
+ enter_cost = MAX(p_enter_cost, 0.0);
+ NavigationServer2D::get_singleton()->region_set_enter_cost(region, p_enter_cost);
+}
+
+real_t NavigationRegion2D::get_enter_cost() const {
+ return enter_cost;
+}
+
+void NavigationRegion2D::set_travel_cost(real_t p_travel_cost) {
+ ERR_FAIL_COND_MSG(p_travel_cost < 0.0, "The travel_cost must be positive.");
+ travel_cost = MAX(p_travel_cost, 0.0);
+ NavigationServer2D::get_singleton()->region_set_enter_cost(region, travel_cost);
+}
+
+real_t NavigationRegion2D::get_travel_cost() const {
+ return travel_cost;
}
RID NavigationRegion2D::get_region_rid() const {
@@ -538,21 +577,34 @@ void NavigationRegion2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_enabled", "enabled"), &NavigationRegion2D::set_enabled);
ClassDB::bind_method(D_METHOD("is_enabled"), &NavigationRegion2D::is_enabled);
- ClassDB::bind_method(D_METHOD("set_layers", "layers"), &NavigationRegion2D::set_layers);
- ClassDB::bind_method(D_METHOD("get_layers"), &NavigationRegion2D::get_layers);
+ ClassDB::bind_method(D_METHOD("set_navigation_layers", "navigation_layers"), &NavigationRegion2D::set_navigation_layers);
+ ClassDB::bind_method(D_METHOD("get_navigation_layers"), &NavigationRegion2D::get_navigation_layers);
+
+ ClassDB::bind_method(D_METHOD("set_navigation_layer_value", "layer_number", "value"), &NavigationRegion2D::set_navigation_layer_value);
+ ClassDB::bind_method(D_METHOD("get_navigation_layer_value", "layer_number"), &NavigationRegion2D::get_navigation_layer_value);
ClassDB::bind_method(D_METHOD("get_region_rid"), &NavigationRegion2D::get_region_rid);
+ ClassDB::bind_method(D_METHOD("set_enter_cost", "enter_cost"), &NavigationRegion2D::set_enter_cost);
+ ClassDB::bind_method(D_METHOD("get_enter_cost"), &NavigationRegion2D::get_enter_cost);
+
+ ClassDB::bind_method(D_METHOD("set_travel_cost", "travel_cost"), &NavigationRegion2D::set_travel_cost);
+ ClassDB::bind_method(D_METHOD("get_travel_cost"), &NavigationRegion2D::get_travel_cost);
+
ClassDB::bind_method(D_METHOD("_navpoly_changed"), &NavigationRegion2D::_navpoly_changed);
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "navpoly", PROPERTY_HINT_RESOURCE_TYPE, "NavigationPolygon"), "set_navigation_polygon", "get_navigation_polygon");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "enabled"), "set_enabled", "is_enabled");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "layers", PROPERTY_HINT_LAYERS_2D_NAVIGATION), "set_layers", "get_layers");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "navigation_layers", PROPERTY_HINT_LAYERS_2D_NAVIGATION), "set_navigation_layers", "get_navigation_layers");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "enter_cost"), "set_enter_cost", "get_enter_cost");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "travel_cost"), "set_travel_cost", "get_travel_cost");
}
NavigationRegion2D::NavigationRegion2D() {
set_notify_transform(true);
region = NavigationServer2D::get_singleton()->region_create();
+ NavigationServer2D::get_singleton()->region_set_enter_cost(region, get_enter_cost());
+ NavigationServer2D::get_singleton()->region_set_travel_cost(region, get_travel_cost());
}
NavigationRegion2D::~NavigationRegion2D() {
diff --git a/scene/2d/navigation_region_2d.h b/scene/2d/navigation_region_2d.h
index 3c4a4e81d9..3c9df91fe3 100644
--- a/scene/2d/navigation_region_2d.h
+++ b/scene/2d/navigation_region_2d.h
@@ -98,6 +98,9 @@ class NavigationRegion2D : public Node2D {
RID region;
Ref<NavigationPolygon> navpoly;
+ real_t enter_cost = 0.0;
+ real_t travel_cost = 1.0;
+
void _navpoly_changed();
void _map_changed(RID p_RID);
@@ -114,11 +117,20 @@ public:
void set_enabled(bool p_enabled);
bool is_enabled() const;
- void set_layers(uint32_t p_layers);
- uint32_t get_layers() const;
+ void set_navigation_layers(uint32_t p_navigation_layers);
+ uint32_t get_navigation_layers() const;
+
+ void set_navigation_layer_value(int p_layer_number, bool p_value);
+ bool get_navigation_layer_value(int p_layer_number) const;
RID get_region_rid() const;
+ void set_enter_cost(real_t p_enter_cost);
+ real_t get_enter_cost() const;
+
+ void set_travel_cost(real_t p_travel_cost);
+ real_t get_travel_cost() const;
+
void set_navigation_polygon(const Ref<NavigationPolygon> &p_navpoly);
Ref<NavigationPolygon> get_navigation_polygon() const;
diff --git a/scene/2d/node_2d.cpp b/scene/2d/node_2d.cpp
index 2ed5ef905a..b2b848d380 100644
--- a/scene/2d/node_2d.cpp
+++ b/scene/2d/node_2d.cpp
@@ -244,9 +244,9 @@ Point2 Node2D::get_global_position() const {
}
void Node2D::set_global_position(const Point2 &p_pos) {
- CanvasItem *pi = get_parent_item();
- if (pi) {
- Transform2D inv = pi->get_global_transform().affine_inverse();
+ CanvasItem *parent = get_parent_item();
+ if (parent) {
+ Transform2D inv = parent->get_global_transform().affine_inverse();
set_position(inv.xform(p_pos));
} else {
set_position(p_pos);
@@ -257,25 +257,48 @@ real_t Node2D::get_global_rotation() const {
return get_global_transform().get_rotation();
}
-void Node2D::set_global_rotation(real_t p_radians) {
- CanvasItem *pi = get_parent_item();
- if (pi) {
- const real_t parent_global_rot = pi->get_global_transform().get_rotation();
- set_rotation(p_radians - parent_global_rot);
+real_t Node2D::get_global_skew() const {
+ return get_global_transform().get_skew();
+}
+
+void Node2D::set_global_rotation(const real_t p_radians) {
+ CanvasItem *parent = get_parent_item();
+ if (parent) {
+ Transform2D parent_global_transform = parent->get_global_transform();
+ Transform2D new_transform = parent_global_transform * get_transform();
+ new_transform.set_rotation(p_radians);
+ new_transform = parent_global_transform.affine_inverse() * new_transform;
+ set_rotation(new_transform.get_rotation());
} else {
set_rotation(p_radians);
}
}
+void Node2D::set_global_skew(const real_t p_radians) {
+ CanvasItem *parent = get_parent_item();
+ if (parent) {
+ Transform2D parent_global_transform = parent->get_global_transform();
+ Transform2D new_transform = parent_global_transform * get_transform();
+ new_transform.set_skew(p_radians);
+ new_transform = parent_global_transform.affine_inverse() * new_transform;
+ set_skew(new_transform.get_skew());
+ } else {
+ set_skew(p_radians);
+ }
+}
+
Size2 Node2D::get_global_scale() const {
return get_global_transform().get_scale();
}
void Node2D::set_global_scale(const Size2 &p_scale) {
- CanvasItem *pi = get_parent_item();
- if (pi) {
- const Size2 parent_global_scale = pi->get_global_transform().get_scale();
- set_scale(p_scale / parent_global_scale);
+ CanvasItem *parent = get_parent_item();
+ if (parent) {
+ Transform2D parent_global_transform = parent->get_global_transform();
+ Transform2D new_transform = parent_global_transform * get_transform();
+ new_transform.set_scale(p_scale);
+ new_transform = parent_global_transform.affine_inverse() * new_transform;
+ set_scale(new_transform.get_scale());
} else {
set_scale(p_scale);
}
@@ -295,9 +318,9 @@ void Node2D::set_transform(const Transform2D &p_transform) {
}
void Node2D::set_global_transform(const Transform2D &p_transform) {
- CanvasItem *pi = get_parent_item();
- if (pi) {
- set_transform(pi->get_global_transform().affine_inverse() * p_transform);
+ CanvasItem *parent = get_parent_item();
+ if (parent) {
+ set_transform(parent->get_global_transform().affine_inverse() * p_transform);
} else {
set_transform(p_transform);
}
@@ -388,6 +411,8 @@ void Node2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_global_position"), &Node2D::get_global_position);
ClassDB::bind_method(D_METHOD("set_global_rotation", "radians"), &Node2D::set_global_rotation);
ClassDB::bind_method(D_METHOD("get_global_rotation"), &Node2D::get_global_rotation);
+ ClassDB::bind_method(D_METHOD("set_global_skew", "radians"), &Node2D::set_global_skew);
+ ClassDB::bind_method(D_METHOD("get_global_skew"), &Node2D::get_global_skew);
ClassDB::bind_method(D_METHOD("set_global_scale", "scale"), &Node2D::set_global_scale);
ClassDB::bind_method(D_METHOD("get_global_scale"), &Node2D::get_global_scale);
@@ -414,13 +439,14 @@ void Node2D::_bind_methods() {
ADD_GROUP("Transform", "");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "position", PROPERTY_HINT_RANGE, "-99999,99999,0.001,or_lesser,or_greater,noslider,suffix:px"), "set_position", "get_position");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "rotation", PROPERTY_HINT_RANGE, "-360,360,0.1,or_lesser,or_greater,radians"), "set_rotation", "get_rotation");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "scale"), "set_scale", "get_scale");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "scale", PROPERTY_HINT_LINK), "set_scale", "get_scale");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "skew", PROPERTY_HINT_RANGE, "-89.9,89.9,0.1,radians"), "set_skew", "get_skew");
ADD_PROPERTY(PropertyInfo(Variant::TRANSFORM2D, "transform", PROPERTY_HINT_NONE, "suffix:px", PROPERTY_USAGE_NONE), "set_transform", "get_transform");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "global_position", PROPERTY_HINT_NONE, "suffix:px", PROPERTY_USAGE_NONE), "set_global_position", "get_global_position");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "global_rotation", PROPERTY_HINT_NONE, "radians", PROPERTY_USAGE_NONE), "set_global_rotation", "get_global_rotation");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "global_scale", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NONE), "set_global_scale", "get_global_scale");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "global_skew", PROPERTY_HINT_NONE, "radians", PROPERTY_USAGE_NONE), "set_global_skew", "get_global_skew");
ADD_PROPERTY(PropertyInfo(Variant::TRANSFORM2D, "global_transform", PROPERTY_HINT_NONE, "suffix:px", PROPERTY_USAGE_NONE), "set_global_transform", "get_global_transform");
ADD_GROUP("Ordering", "");
diff --git a/scene/2d/node_2d.h b/scene/2d/node_2d.h
index 69d14f82ad..473c34768f 100644
--- a/scene/2d/node_2d.h
+++ b/scene/2d/node_2d.h
@@ -92,12 +92,14 @@ public:
Point2 get_global_position() const;
real_t get_global_rotation() const;
+ real_t get_global_skew() const;
Size2 get_global_scale() const;
void set_transform(const Transform2D &p_transform);
void set_global_transform(const Transform2D &p_transform);
void set_global_position(const Point2 &p_pos);
- void set_global_rotation(real_t p_radians);
+ void set_global_rotation(const real_t p_radians);
+ void set_global_skew(const real_t p_radians);
void set_global_scale(const Size2 &p_scale);
void set_z_index(int p_z);
diff --git a/scene/2d/parallax_background.cpp b/scene/2d/parallax_background.cpp
index 506761d959..bd5a01f5a4 100644
--- a/scene/2d/parallax_background.cpp
+++ b/scene/2d/parallax_background.cpp
@@ -179,7 +179,7 @@ void ParallaxBackground::_bind_methods() {
ADD_GROUP("Scroll", "scroll_");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "scroll_offset", PROPERTY_HINT_NONE, "suffix:px"), "set_scroll_offset", "get_scroll_offset");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "scroll_base_offset", PROPERTY_HINT_NONE, "suffix:px"), "set_scroll_base_offset", "get_scroll_base_offset");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "scroll_base_scale"), "set_scroll_base_scale", "get_scroll_base_scale");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "scroll_base_scale", PROPERTY_HINT_LINK), "set_scroll_base_scale", "get_scroll_base_scale");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "scroll_limit_begin", PROPERTY_HINT_NONE, "suffix:px"), "set_limit_begin", "get_limit_begin");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "scroll_limit_end", PROPERTY_HINT_NONE, "suffix:px"), "set_limit_end", "get_limit_end");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "scroll_ignore_camera_zoom"), "set_ignore_camera_zoom", "is_ignore_camera_zoom");
diff --git a/scene/2d/parallax_layer.cpp b/scene/2d/parallax_layer.cpp
index d716f01a82..f0aad1b8a4 100644
--- a/scene/2d/parallax_layer.cpp
+++ b/scene/2d/parallax_layer.cpp
@@ -158,7 +158,7 @@ void ParallaxLayer::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_mirroring"), &ParallaxLayer::get_mirroring);
ADD_GROUP("Motion", "motion_");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "motion_scale"), "set_motion_scale", "get_motion_scale");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "motion_scale", PROPERTY_HINT_LINK), "set_motion_scale", "get_motion_scale");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "motion_offset", PROPERTY_HINT_NONE, "suffix:px"), "set_motion_offset", "get_motion_offset");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "motion_mirroring"), "set_mirroring", "get_mirroring");
}
diff --git a/scene/2d/physics_body_2d.cpp b/scene/2d/physics_body_2d.cpp
index e7ac6432c6..e60a5ed034 100644
--- a/scene/2d/physics_body_2d.cpp
+++ b/scene/2d/physics_body_2d.cpp
@@ -222,8 +222,8 @@ void StaticBody2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_physics_material_override"), &StaticBody2D::get_physics_material_override);
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "physics_material_override", PROPERTY_HINT_RESOURCE_TYPE, "PhysicsMaterial"), "set_physics_material_override", "get_physics_material_override");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "constant_linear_velocity"), "set_constant_linear_velocity", "get_constant_linear_velocity");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "constant_angular_velocity"), "set_constant_angular_velocity", "get_constant_angular_velocity");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "constant_linear_velocity", PROPERTY_HINT_NONE, "suffix:px/s"), "set_constant_linear_velocity", "get_constant_linear_velocity");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "constant_angular_velocity", PROPERTY_HINT_NONE, U"radians,suffix:\u00B0/s"), "set_constant_angular_velocity", "get_constant_angular_velocity");
}
StaticBody2D::StaticBody2D(PhysicsServer2D::BodyMode p_mode) :
@@ -1761,7 +1761,7 @@ void CharacterBody2D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "floor_constant_speed"), "set_floor_constant_speed_enabled", "is_floor_constant_speed_enabled");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "floor_block_on_wall"), "set_floor_block_on_wall_enabled", "is_floor_block_on_wall_enabled");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "floor_max_angle", PROPERTY_HINT_RANGE, "0,180,0.1,radians"), "set_floor_max_angle", "get_floor_max_angle");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "floor_snap_length", PROPERTY_HINT_RANGE, "0,32,0.1,or_greater"), "set_floor_snap_length", "get_floor_snap_length");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "floor_snap_length", PROPERTY_HINT_RANGE, "0,32,0.1,or_greater,suffix:px"), "set_floor_snap_length", "get_floor_snap_length");
ADD_GROUP("Moving Platform", "moving_platform");
ADD_PROPERTY(PropertyInfo(Variant::INT, "moving_platform_apply_velocity_on_leave", PROPERTY_HINT_ENUM, "Always,Upward Only,Never", PROPERTY_USAGE_DEFAULT), "set_moving_platform_apply_velocity_on_leave", "get_moving_platform_apply_velocity_on_leave");
ADD_PROPERTY(PropertyInfo(Variant::INT, "moving_platform_floor_layers", PROPERTY_HINT_LAYERS_2D_PHYSICS), "set_moving_platform_floor_layers", "get_moving_platform_floor_layers");
diff --git a/scene/2d/polygon_2d.cpp b/scene/2d/polygon_2d.cpp
index 4752d3148b..ba62941d3a 100644
--- a/scene/2d/polygon_2d.cpp
+++ b/scene/2d/polygon_2d.cpp
@@ -635,18 +635,19 @@ void Polygon2D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "color"), "set_color", "get_color");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "offset"), "set_offset", "get_offset");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "antialiased"), "set_antialiased", "get_antialiased");
- ADD_GROUP("Texture2D", "");
+
+ ADD_GROUP("Texture", "texture_");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_texture", "get_texture");
- ADD_GROUP("Texture2D", "texture_");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "texture_offset", PROPERTY_HINT_NONE, "suffix:px"), "set_texture_offset", "get_texture_offset");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "texture_scale"), "set_texture_scale", "get_texture_scale");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "texture_scale", PROPERTY_HINT_LINK), "set_texture_scale", "get_texture_scale");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "texture_rotation", PROPERTY_HINT_RANGE, "-360,360,0.1,or_lesser,or_greater,radians"), "set_texture_rotation", "get_texture_rotation");
+
ADD_GROUP("Skeleton", "");
ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "skeleton", PROPERTY_HINT_NODE_PATH_VALID_TYPES, "Skeleton2D"), "set_skeleton", "get_skeleton");
ADD_GROUP("Invert", "invert_");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "invert_enable"), "set_invert", "get_invert");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "invert_border", PROPERTY_HINT_RANGE, "0.1,16384,0.1"), "set_invert_border", "get_invert_border");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "invert_border", PROPERTY_HINT_RANGE, "0.1,16384,0.1,suffix:px"), "set_invert_border", "get_invert_border");
ADD_GROUP("Data", "");
ADD_PROPERTY(PropertyInfo(Variant::PACKED_VECTOR2_ARRAY, "polygon"), "set_polygon", "get_polygon");
diff --git a/scene/2d/shape_cast_2d.cpp b/scene/2d/shape_cast_2d.cpp
index a2f4b16ed3..ae810156a2 100644
--- a/scene/2d/shape_cast_2d.cpp
+++ b/scene/2d/shape_cast_2d.cpp
@@ -444,8 +444,8 @@ void ShapeCast2D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "enabled"), "set_enabled", "is_enabled");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "shape", PROPERTY_HINT_RESOURCE_TYPE, "Shape2D"), "set_shape", "get_shape");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "exclude_parent"), "set_exclude_parent_body", "get_exclude_parent_body");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "target_position"), "set_target_position", "get_target_position");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "margin", PROPERTY_HINT_RANGE, "0,100,0.01"), "set_margin", "get_margin");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "target_position", PROPERTY_HINT_NONE, "suffix:px"), "set_target_position", "get_target_position");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "margin", PROPERTY_HINT_RANGE, "0,100,0.01,suffix:px"), "set_margin", "get_margin");
ADD_PROPERTY(PropertyInfo(Variant::INT, "max_results"), "set_max_results", "get_max_results");
ADD_PROPERTY(PropertyInfo(Variant::INT, "collision_mask", PROPERTY_HINT_LAYERS_2D_PHYSICS), "set_collision_mask", "get_collision_mask");
ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "collision_result", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR), "", "_get_collision_result");
diff --git a/scene/2d/tile_map.cpp b/scene/2d/tile_map.cpp
index c4b923ff34..9c4b0feea2 100644
--- a/scene/2d/tile_map.cpp
+++ b/scene/2d/tile_map.cpp
@@ -36,43 +36,34 @@
HashMap<Vector2i, TileSet::CellNeighbor> TileMap::TerrainConstraint::get_overlapping_coords_and_peering_bits() const {
HashMap<Vector2i, TileSet::CellNeighbor> output;
+
+ ERR_FAIL_COND_V(is_center_bit(), output);
+
Ref<TileSet> tile_set = tile_map->get_tileset();
ERR_FAIL_COND_V(!tile_set.is_valid(), output);
TileSet::TileShape shape = tile_set->get_tile_shape();
if (shape == TileSet::TILE_SHAPE_SQUARE) {
switch (bit) {
- case 0:
+ case 1:
output[base_cell_coords] = TileSet::CELL_NEIGHBOR_RIGHT_SIDE;
output[tile_map->get_neighbor_cell(base_cell_coords, TileSet::CELL_NEIGHBOR_RIGHT_SIDE)] = TileSet::CELL_NEIGHBOR_LEFT_SIDE;
break;
- case 1:
+ case 2:
output[base_cell_coords] = TileSet::CELL_NEIGHBOR_BOTTOM_RIGHT_CORNER;
output[tile_map->get_neighbor_cell(base_cell_coords, TileSet::CELL_NEIGHBOR_RIGHT_SIDE)] = TileSet::CELL_NEIGHBOR_BOTTOM_LEFT_CORNER;
output[tile_map->get_neighbor_cell(base_cell_coords, TileSet::CELL_NEIGHBOR_BOTTOM_RIGHT_CORNER)] = TileSet::CELL_NEIGHBOR_TOP_LEFT_CORNER;
output[tile_map->get_neighbor_cell(base_cell_coords, TileSet::CELL_NEIGHBOR_BOTTOM_SIDE)] = TileSet::CELL_NEIGHBOR_TOP_RIGHT_CORNER;
break;
- case 2:
+ case 3:
output[base_cell_coords] = TileSet::CELL_NEIGHBOR_BOTTOM_SIDE;
output[tile_map->get_neighbor_cell(base_cell_coords, TileSet::CELL_NEIGHBOR_BOTTOM_SIDE)] = TileSet::CELL_NEIGHBOR_TOP_SIDE;
break;
- case 3:
- output[base_cell_coords] = TileSet::CELL_NEIGHBOR_BOTTOM_LEFT_CORNER;
- output[tile_map->get_neighbor_cell(base_cell_coords, TileSet::CELL_NEIGHBOR_BOTTOM_SIDE)] = TileSet::CELL_NEIGHBOR_TOP_LEFT_CORNER;
- output[tile_map->get_neighbor_cell(base_cell_coords, TileSet::CELL_NEIGHBOR_BOTTOM_LEFT_CORNER)] = TileSet::CELL_NEIGHBOR_TOP_RIGHT_CORNER;
- output[tile_map->get_neighbor_cell(base_cell_coords, TileSet::CELL_NEIGHBOR_LEFT_SIDE)] = TileSet::CELL_NEIGHBOR_BOTTOM_RIGHT_CORNER;
- break;
default:
ERR_FAIL_V(output);
}
} else if (shape == TileSet::TILE_SHAPE_ISOMETRIC) {
switch (bit) {
- case 0:
- output[base_cell_coords] = TileSet::CELL_NEIGHBOR_RIGHT_CORNER;
- output[tile_map->get_neighbor_cell(base_cell_coords, TileSet::CELL_NEIGHBOR_TOP_RIGHT_SIDE)] = TileSet::CELL_NEIGHBOR_BOTTOM_CORNER;
- output[tile_map->get_neighbor_cell(base_cell_coords, TileSet::CELL_NEIGHBOR_RIGHT_CORNER)] = TileSet::CELL_NEIGHBOR_LEFT_CORNER;
- output[tile_map->get_neighbor_cell(base_cell_coords, TileSet::CELL_NEIGHBOR_BOTTOM_RIGHT_SIDE)] = TileSet::CELL_NEIGHBOR_TOP_CORNER;
- break;
case 1:
output[base_cell_coords] = TileSet::CELL_NEIGHBOR_BOTTOM_RIGHT_SIDE;
output[tile_map->get_neighbor_cell(base_cell_coords, TileSet::CELL_NEIGHBOR_BOTTOM_RIGHT_SIDE)] = TileSet::CELL_NEIGHBOR_TOP_LEFT_SIDE;
@@ -95,25 +86,25 @@ HashMap<Vector2i, TileSet::CellNeighbor> TileMap::TerrainConstraint::get_overlap
TileSet::TileOffsetAxis offset_axis = tile_set->get_tile_offset_axis();
if (offset_axis == TileSet::TILE_OFFSET_AXIS_HORIZONTAL) {
switch (bit) {
- case 0:
+ case 1:
output[base_cell_coords] = TileSet::CELL_NEIGHBOR_RIGHT_SIDE;
output[tile_map->get_neighbor_cell(base_cell_coords, TileSet::CELL_NEIGHBOR_RIGHT_SIDE)] = TileSet::CELL_NEIGHBOR_LEFT_SIDE;
break;
- case 1:
+ case 2:
output[base_cell_coords] = TileSet::CELL_NEIGHBOR_BOTTOM_RIGHT_CORNER;
output[tile_map->get_neighbor_cell(base_cell_coords, TileSet::CELL_NEIGHBOR_RIGHT_SIDE)] = TileSet::CELL_NEIGHBOR_BOTTOM_LEFT_CORNER;
output[tile_map->get_neighbor_cell(base_cell_coords, TileSet::CELL_NEIGHBOR_BOTTOM_RIGHT_SIDE)] = TileSet::CELL_NEIGHBOR_TOP_CORNER;
break;
- case 2:
+ case 3:
output[base_cell_coords] = TileSet::CELL_NEIGHBOR_BOTTOM_RIGHT_SIDE;
output[tile_map->get_neighbor_cell(base_cell_coords, TileSet::CELL_NEIGHBOR_BOTTOM_RIGHT_SIDE)] = TileSet::CELL_NEIGHBOR_TOP_LEFT_SIDE;
break;
- case 3:
+ case 4:
output[base_cell_coords] = TileSet::CELL_NEIGHBOR_BOTTOM_CORNER;
output[tile_map->get_neighbor_cell(base_cell_coords, TileSet::CELL_NEIGHBOR_BOTTOM_RIGHT_SIDE)] = TileSet::CELL_NEIGHBOR_TOP_LEFT_CORNER;
output[tile_map->get_neighbor_cell(base_cell_coords, TileSet::CELL_NEIGHBOR_BOTTOM_LEFT_SIDE)] = TileSet::CELL_NEIGHBOR_TOP_RIGHT_CORNER;
break;
- case 4:
+ case 5:
output[base_cell_coords] = TileSet::CELL_NEIGHBOR_BOTTOM_LEFT_SIDE;
output[tile_map->get_neighbor_cell(base_cell_coords, TileSet::CELL_NEIGHBOR_BOTTOM_LEFT_SIDE)] = TileSet::CELL_NEIGHBOR_TOP_RIGHT_SIDE;
break;
@@ -122,25 +113,25 @@ HashMap<Vector2i, TileSet::CellNeighbor> TileMap::TerrainConstraint::get_overlap
}
} else {
switch (bit) {
- case 0:
+ case 1:
output[base_cell_coords] = TileSet::CELL_NEIGHBOR_RIGHT_CORNER;
output[tile_map->get_neighbor_cell(base_cell_coords, TileSet::CELL_NEIGHBOR_TOP_RIGHT_SIDE)] = TileSet::CELL_NEIGHBOR_BOTTOM_LEFT_CORNER;
output[tile_map->get_neighbor_cell(base_cell_coords, TileSet::CELL_NEIGHBOR_BOTTOM_RIGHT_SIDE)] = TileSet::CELL_NEIGHBOR_TOP_LEFT_CORNER;
break;
- case 1:
+ case 2:
output[base_cell_coords] = TileSet::CELL_NEIGHBOR_BOTTOM_RIGHT_SIDE;
output[tile_map->get_neighbor_cell(base_cell_coords, TileSet::CELL_NEIGHBOR_BOTTOM_RIGHT_SIDE)] = TileSet::CELL_NEIGHBOR_TOP_LEFT_SIDE;
break;
- case 2:
+ case 3:
output[base_cell_coords] = TileSet::CELL_NEIGHBOR_BOTTOM_RIGHT_CORNER;
output[tile_map->get_neighbor_cell(base_cell_coords, TileSet::CELL_NEIGHBOR_BOTTOM_RIGHT_SIDE)] = TileSet::CELL_NEIGHBOR_LEFT_CORNER;
output[tile_map->get_neighbor_cell(base_cell_coords, TileSet::CELL_NEIGHBOR_BOTTOM_SIDE)] = TileSet::CELL_NEIGHBOR_TOP_LEFT_CORNER;
break;
- case 3:
+ case 4:
output[base_cell_coords] = TileSet::CELL_NEIGHBOR_BOTTOM_SIDE;
output[tile_map->get_neighbor_cell(base_cell_coords, TileSet::CELL_NEIGHBOR_BOTTOM_SIDE)] = TileSet::CELL_NEIGHBOR_TOP_SIDE;
break;
- case 4:
+ case 5:
output[base_cell_coords] = TileSet::CELL_NEIGHBOR_BOTTOM_LEFT_SIDE;
output[tile_map->get_neighbor_cell(base_cell_coords, TileSet::CELL_NEIGHBOR_BOTTOM_LEFT_SIDE)] = TileSet::CELL_NEIGHBOR_TOP_RIGHT_SIDE;
break;
@@ -152,6 +143,17 @@ HashMap<Vector2i, TileSet::CellNeighbor> TileMap::TerrainConstraint::get_overlap
return output;
}
+TileMap::TerrainConstraint::TerrainConstraint(const TileMap *p_tile_map, const Vector2i &p_position, int p_terrain) {
+ tile_map = p_tile_map;
+
+ Ref<TileSet> tile_set = tile_map->get_tileset();
+ ERR_FAIL_COND(!tile_set.is_valid());
+
+ bit = 0;
+ base_cell_coords = p_position;
+ terrain = p_terrain;
+}
+
TileMap::TerrainConstraint::TerrainConstraint(const TileMap *p_tile_map, const Vector2i &p_position, const TileSet::CellNeighbor &p_bit, int p_terrain) {
// The way we build the constraint make it easy to detect conflicting constraints.
tile_map = p_tile_map;
@@ -163,35 +165,35 @@ TileMap::TerrainConstraint::TerrainConstraint(const TileMap *p_tile_map, const V
if (shape == TileSet::TILE_SHAPE_SQUARE) {
switch (p_bit) {
case TileSet::CELL_NEIGHBOR_RIGHT_SIDE:
- bit = 0;
+ bit = 1;
base_cell_coords = p_position;
break;
case TileSet::CELL_NEIGHBOR_BOTTOM_RIGHT_CORNER:
- bit = 1;
+ bit = 2;
base_cell_coords = p_position;
break;
case TileSet::CELL_NEIGHBOR_BOTTOM_SIDE:
- bit = 2;
+ bit = 3;
base_cell_coords = p_position;
break;
case TileSet::CELL_NEIGHBOR_BOTTOM_LEFT_CORNER:
- bit = 1;
+ bit = 2;
base_cell_coords = p_tile_map->get_neighbor_cell(p_position, TileSet::CELL_NEIGHBOR_LEFT_SIDE);
break;
case TileSet::CELL_NEIGHBOR_LEFT_SIDE:
- bit = 0;
+ bit = 1;
base_cell_coords = p_tile_map->get_neighbor_cell(p_position, TileSet::CELL_NEIGHBOR_LEFT_SIDE);
break;
case TileSet::CELL_NEIGHBOR_TOP_LEFT_CORNER:
- bit = 1;
+ bit = 2;
base_cell_coords = p_tile_map->get_neighbor_cell(p_position, TileSet::CELL_NEIGHBOR_TOP_LEFT_CORNER);
break;
case TileSet::CELL_NEIGHBOR_TOP_SIDE:
- bit = 2;
+ bit = 3;
base_cell_coords = p_tile_map->get_neighbor_cell(p_position, TileSet::CELL_NEIGHBOR_TOP_SIDE);
break;
case TileSet::CELL_NEIGHBOR_TOP_RIGHT_CORNER:
- bit = 1;
+ bit = 2;
base_cell_coords = p_tile_map->get_neighbor_cell(p_position, TileSet::CELL_NEIGHBOR_TOP_SIDE);
break;
default:
@@ -201,35 +203,35 @@ TileMap::TerrainConstraint::TerrainConstraint(const TileMap *p_tile_map, const V
} else if (shape == TileSet::TILE_SHAPE_ISOMETRIC) {
switch (p_bit) {
case TileSet::CELL_NEIGHBOR_RIGHT_CORNER:
- bit = 1;
+ bit = 2;
base_cell_coords = p_tile_map->get_neighbor_cell(p_position, TileSet::CELL_NEIGHBOR_TOP_RIGHT_SIDE);
break;
case TileSet::CELL_NEIGHBOR_BOTTOM_RIGHT_SIDE:
- bit = 0;
+ bit = 1;
base_cell_coords = p_position;
break;
case TileSet::CELL_NEIGHBOR_BOTTOM_CORNER:
- bit = 1;
+ bit = 2;
base_cell_coords = p_position;
break;
case TileSet::CELL_NEIGHBOR_BOTTOM_LEFT_SIDE:
- bit = 2;
+ bit = 3;
base_cell_coords = p_position;
break;
case TileSet::CELL_NEIGHBOR_LEFT_CORNER:
- bit = 1;
+ bit = 2;
base_cell_coords = p_tile_map->get_neighbor_cell(p_position, TileSet::CELL_NEIGHBOR_TOP_LEFT_SIDE);
break;
case TileSet::CELL_NEIGHBOR_TOP_LEFT_SIDE:
- bit = 0;
+ bit = 1;
base_cell_coords = p_tile_map->get_neighbor_cell(p_position, TileSet::CELL_NEIGHBOR_TOP_LEFT_SIDE);
break;
case TileSet::CELL_NEIGHBOR_TOP_CORNER:
- bit = 1;
+ bit = 2;
base_cell_coords = p_tile_map->get_neighbor_cell(p_position, TileSet::CELL_NEIGHBOR_TOP_CORNER);
break;
case TileSet::CELL_NEIGHBOR_TOP_RIGHT_SIDE:
- bit = 2;
+ bit = 3;
base_cell_coords = p_tile_map->get_neighbor_cell(p_position, TileSet::CELL_NEIGHBOR_TOP_RIGHT_SIDE);
break;
default:
@@ -242,51 +244,51 @@ TileMap::TerrainConstraint::TerrainConstraint(const TileMap *p_tile_map, const V
if (offset_axis == TileSet::TILE_OFFSET_AXIS_HORIZONTAL) {
switch (p_bit) {
case TileSet::CELL_NEIGHBOR_RIGHT_SIDE:
- bit = 0;
+ bit = 1;
base_cell_coords = p_position;
break;
case TileSet::CELL_NEIGHBOR_BOTTOM_RIGHT_CORNER:
- bit = 1;
+ bit = 2;
base_cell_coords = p_position;
break;
case TileSet::CELL_NEIGHBOR_BOTTOM_RIGHT_SIDE:
- bit = 2;
+ bit = 3;
base_cell_coords = p_position;
break;
case TileSet::CELL_NEIGHBOR_BOTTOM_CORNER:
- bit = 3;
+ bit = 4;
base_cell_coords = p_position;
break;
case TileSet::CELL_NEIGHBOR_BOTTOM_LEFT_SIDE:
- bit = 4;
+ bit = 5;
base_cell_coords = p_position;
break;
case TileSet::CELL_NEIGHBOR_BOTTOM_LEFT_CORNER:
- bit = 1;
+ bit = 2;
base_cell_coords = p_tile_map->get_neighbor_cell(p_position, TileSet::CELL_NEIGHBOR_LEFT_SIDE);
break;
case TileSet::CELL_NEIGHBOR_LEFT_SIDE:
- bit = 0;
+ bit = 1;
base_cell_coords = p_tile_map->get_neighbor_cell(p_position, TileSet::CELL_NEIGHBOR_LEFT_SIDE);
break;
case TileSet::CELL_NEIGHBOR_TOP_LEFT_CORNER:
- bit = 3;
+ bit = 4;
base_cell_coords = p_tile_map->get_neighbor_cell(p_position, TileSet::CELL_NEIGHBOR_TOP_LEFT_SIDE);
break;
case TileSet::CELL_NEIGHBOR_TOP_LEFT_SIDE:
- bit = 2;
+ bit = 3;
base_cell_coords = p_tile_map->get_neighbor_cell(p_position, TileSet::CELL_NEIGHBOR_TOP_LEFT_SIDE);
break;
case TileSet::CELL_NEIGHBOR_TOP_CORNER:
- bit = 1;
+ bit = 2;
base_cell_coords = p_tile_map->get_neighbor_cell(p_position, TileSet::CELL_NEIGHBOR_TOP_LEFT_SIDE);
break;
case TileSet::CELL_NEIGHBOR_TOP_RIGHT_SIDE:
- bit = 4;
+ bit = 5;
base_cell_coords = p_tile_map->get_neighbor_cell(p_position, TileSet::CELL_NEIGHBOR_TOP_RIGHT_SIDE);
break;
case TileSet::CELL_NEIGHBOR_TOP_RIGHT_CORNER:
- bit = 3;
+ bit = 4;
base_cell_coords = p_tile_map->get_neighbor_cell(p_position, TileSet::CELL_NEIGHBOR_TOP_RIGHT_SIDE);
break;
default:
@@ -296,51 +298,51 @@ TileMap::TerrainConstraint::TerrainConstraint(const TileMap *p_tile_map, const V
} else {
switch (p_bit) {
case TileSet::CELL_NEIGHBOR_RIGHT_CORNER:
- bit = 0;
+ bit = 1;
base_cell_coords = p_position;
break;
case TileSet::CELL_NEIGHBOR_BOTTOM_RIGHT_SIDE:
- bit = 1;
+ bit = 2;
base_cell_coords = p_position;
break;
case TileSet::CELL_NEIGHBOR_BOTTOM_RIGHT_CORNER:
- bit = 2;
+ bit = 3;
base_cell_coords = p_position;
break;
case TileSet::CELL_NEIGHBOR_BOTTOM_SIDE:
- bit = 3;
+ bit = 4;
base_cell_coords = p_position;
break;
case TileSet::CELL_NEIGHBOR_BOTTOM_LEFT_CORNER:
- bit = 0;
+ bit = 1;
base_cell_coords = p_tile_map->get_neighbor_cell(p_position, TileSet::CELL_NEIGHBOR_BOTTOM_LEFT_SIDE);
break;
case TileSet::CELL_NEIGHBOR_BOTTOM_LEFT_SIDE:
- bit = 4;
+ bit = 5;
base_cell_coords = p_position;
break;
case TileSet::CELL_NEIGHBOR_LEFT_CORNER:
- bit = 2;
+ bit = 3;
base_cell_coords = p_tile_map->get_neighbor_cell(p_position, TileSet::CELL_NEIGHBOR_TOP_LEFT_SIDE);
break;
case TileSet::CELL_NEIGHBOR_TOP_LEFT_SIDE:
- bit = 1;
+ bit = 2;
base_cell_coords = p_tile_map->get_neighbor_cell(p_position, TileSet::CELL_NEIGHBOR_TOP_LEFT_SIDE);
break;
case TileSet::CELL_NEIGHBOR_TOP_LEFT_CORNER:
- bit = 0;
+ bit = 1;
base_cell_coords = p_tile_map->get_neighbor_cell(p_position, TileSet::CELL_NEIGHBOR_TOP_LEFT_SIDE);
break;
case TileSet::CELL_NEIGHBOR_TOP_SIDE:
- bit = 3;
+ bit = 4;
base_cell_coords = p_tile_map->get_neighbor_cell(p_position, TileSet::CELL_NEIGHBOR_TOP_SIDE);
break;
case TileSet::CELL_NEIGHBOR_TOP_RIGHT_CORNER:
- bit = 2;
+ bit = 3;
base_cell_coords = p_tile_map->get_neighbor_cell(p_position, TileSet::CELL_NEIGHBOR_TOP_SIDE);
break;
case TileSet::CELL_NEIGHBOR_TOP_RIGHT_SIDE:
- bit = 4;
+ bit = 5;
base_cell_coords = p_tile_map->get_neighbor_cell(p_position, TileSet::CELL_NEIGHBOR_TOP_RIGHT_SIDE);
break;
default:
@@ -1088,7 +1090,7 @@ void TileMap::_rendering_update_dirty_quadrants(SelfList<TileMapQuadrant>::List
q.occluders.clear();
// Those allow to group cell per material or z-index.
- Ref<ShaderMaterial> prev_material;
+ Ref<Material> prev_material;
int prev_z_index = 0;
RID prev_canvas_item;
@@ -1127,7 +1129,7 @@ void TileMap::_rendering_update_dirty_quadrants(SelfList<TileMapQuadrant>::List
tile_data = atlas_source->get_tile_data(c.get_atlas_coords(), c.alternative_tile);
}
- Ref<ShaderMaterial> mat = tile_data->get_material();
+ Ref<Material> mat = tile_data->get_material();
int z_index = tile_data->get_z_index();
// Quandrant pos.
@@ -2149,37 +2151,75 @@ void TileMap::set_pattern(int p_layer, Vector2i p_position, const Ref<TileMapPat
}
}
-RBSet<TileSet::TerrainsPattern> TileMap::_get_valid_terrains_patterns_for_constraints(int p_terrain_set, const Vector2i &p_position, RBSet<TerrainConstraint> p_constraints) {
+TileSet::TerrainsPattern TileMap::_get_best_terrain_pattern_for_constraints(int p_terrain_set, const Vector2i &p_position, RBSet<TerrainConstraint> p_constraints) {
if (!tile_set.is_valid()) {
- return RBSet<TileSet::TerrainsPattern>();
+ return TileSet::TerrainsPattern();
}
// Returns all tiles compatible with the given constraints.
- RBSet<TileSet::TerrainsPattern> compatible_terrain_tile_patterns;
- for (TileSet::TerrainsPattern &terrain_pattern : tile_set->get_terrains_pattern_set(p_terrain_set)) {
- int valid = true;
+ RBMap<TileSet::TerrainsPattern, int> terrain_pattern_score;
+ RBSet<TileSet::TerrainsPattern> pattern_set = tile_set->get_terrains_pattern_set(p_terrain_set);
+ ERR_FAIL_COND_V(pattern_set.is_empty(), TileSet::TerrainsPattern());
+ for (TileSet::TerrainsPattern &terrain_pattern : pattern_set) {
+ int score = 0;
+
+ // Check the center bit constraint
+ TerrainConstraint terrain_constraint = TerrainConstraint(this, p_position, terrain_pattern.get_terrain());
+ RBSet<TerrainConstraint>::Element *in_set_constraint_element = p_constraints.find(terrain_constraint);
+ if (in_set_constraint_element && in_set_constraint_element->get().get_terrain() != terrain_constraint.get_terrain()) {
+ score += in_set_constraint_element->get().get_priority();
+ }
+
+ // Check the surrounding bits
for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
TileSet::CellNeighbor bit = TileSet::CellNeighbor(i);
- if (tile_set->is_valid_peering_bit_terrain(p_terrain_set, bit)) {
+ if (tile_set->is_valid_terrain_peering_bit(p_terrain_set, bit)) {
// Check if the bit is compatible with the constraints.
- TerrainConstraint terrain_bit_constraint = TerrainConstraint(this, p_position, bit, terrain_pattern.get_terrain(bit));
- RBSet<TerrainConstraint>::Element *in_set_constraint_element = p_constraints.find(terrain_bit_constraint);
+ TerrainConstraint terrain_bit_constraint = TerrainConstraint(this, p_position, bit, terrain_pattern.get_terrain_peering_bit(bit));
+ in_set_constraint_element = p_constraints.find(terrain_bit_constraint);
if (in_set_constraint_element && in_set_constraint_element->get().get_terrain() != terrain_bit_constraint.get_terrain()) {
- valid = false;
- break;
+ score += in_set_constraint_element->get().get_priority();
}
}
}
- if (valid) {
- compatible_terrain_tile_patterns.insert(terrain_pattern);
+ terrain_pattern_score[terrain_pattern] = score;
+ }
+
+ // Compute the minimum score
+ TileSet::TerrainsPattern min_score_pattern;
+ int min_score = INT32_MAX;
+ for (KeyValue<TileSet::TerrainsPattern, int> E : terrain_pattern_score) {
+ if (E.value < min_score) {
+ min_score_pattern = E.key;
+ min_score = E.value;
}
}
- return compatible_terrain_tile_patterns;
+ return min_score_pattern;
}
-RBSet<TileMap::TerrainConstraint> TileMap::get_terrain_constraints_from_removed_cells_list(int p_layer, const RBSet<Vector2i> &p_to_replace, int p_terrain_set, bool p_ignore_empty_terrains) const {
+RBSet<TileMap::TerrainConstraint> TileMap::_get_terrain_constraints_from_added_pattern(Vector2i p_position, int p_terrain_set, TileSet::TerrainsPattern p_terrains_pattern) const {
+ if (!tile_set.is_valid()) {
+ return RBSet<TerrainConstraint>();
+ }
+
+ // Compute the constraints needed from the surrounding tiles.
+ RBSet<TerrainConstraint> output;
+ output.insert(TerrainConstraint(this, p_position, p_terrains_pattern.get_terrain()));
+
+ for (uint32_t i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
+ TileSet::CellNeighbor side = TileSet::CellNeighbor(i);
+ if (tile_set->is_valid_terrain_peering_bit(p_terrain_set, side)) {
+ TerrainConstraint c = TerrainConstraint(this, p_position, side, p_terrains_pattern.get_terrain_peering_bit(side));
+ output.insert(c);
+ }
+ }
+
+ return output;
+}
+
+RBSet<TileMap::TerrainConstraint> TileMap::_get_terrain_constraints_from_cells_list(int p_layer, const RBSet<Vector2i> &p_cell_list, int p_terrain_set, bool p_ignore_empty_terrains) const {
if (!tile_set.is_valid()) {
return RBSet<TerrainConstraint>();
}
@@ -2187,12 +2227,12 @@ RBSet<TileMap::TerrainConstraint> TileMap::get_terrain_constraints_from_removed_
ERR_FAIL_INDEX_V(p_terrain_set, tile_set->get_terrain_sets_count(), RBSet<TerrainConstraint>());
ERR_FAIL_INDEX_V(p_layer, (int)layers.size(), RBSet<TerrainConstraint>());
- // Build a set of dummy constraints get the constrained points.
+ // Build a set of dummy constraints to get the constrained points.
RBSet<TerrainConstraint> dummy_constraints;
- for (const Vector2i &E : p_to_replace) {
+ for (const Vector2i &E : p_cell_list) {
for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) { // Iterates over sides.
TileSet::CellNeighbor bit = TileSet::CellNeighbor(i);
- if (tile_set->is_valid_peering_bit_terrain(p_terrain_set, bit)) {
+ if (tile_set->is_valid_terrain_peering_bit(p_terrain_set, bit)) {
dummy_constraints.insert(TerrainConstraint(this, E, bit, -1));
}
}
@@ -2200,35 +2240,31 @@ RBSet<TileMap::TerrainConstraint> TileMap::get_terrain_constraints_from_removed_
// For each constrained point, we get all overlapping tiles, and select the most adequate terrain for it.
RBSet<TerrainConstraint> constraints;
- for (const TerrainConstraint &E : dummy_constraints) {
- TerrainConstraint c = E;
-
+ for (const TerrainConstraint &E_constraint : dummy_constraints) {
HashMap<int, int> terrain_count;
// Count the number of occurrences per terrain.
- HashMap<Vector2i, TileSet::CellNeighbor> overlapping_terrain_bits = c.get_overlapping_coords_and_peering_bits();
+ HashMap<Vector2i, TileSet::CellNeighbor> overlapping_terrain_bits = E_constraint.get_overlapping_coords_and_peering_bits();
for (const KeyValue<Vector2i, TileSet::CellNeighbor> &E_overlapping : overlapping_terrain_bits) {
- if (!p_to_replace.has(E_overlapping.key)) {
- TileData *neighbor_tile_data = nullptr;
- TileMapCell neighbor_cell = get_cell(p_layer, E_overlapping.key);
- if (neighbor_cell.source_id != TileSet::INVALID_SOURCE) {
- Ref<TileSetSource> source = tile_set->get_source(neighbor_cell.source_id);
- Ref<TileSetAtlasSource> atlas_source = source;
- if (atlas_source.is_valid()) {
- TileData *tile_data = atlas_source->get_tile_data(neighbor_cell.get_atlas_coords(), neighbor_cell.alternative_tile);
- if (tile_data && tile_data->get_terrain_set() == p_terrain_set) {
- neighbor_tile_data = tile_data;
- }
+ TileData *neighbor_tile_data = nullptr;
+ TileMapCell neighbor_cell = get_cell(p_layer, E_overlapping.key);
+ if (neighbor_cell.source_id != TileSet::INVALID_SOURCE) {
+ Ref<TileSetSource> source = tile_set->get_source(neighbor_cell.source_id);
+ Ref<TileSetAtlasSource> atlas_source = source;
+ if (atlas_source.is_valid()) {
+ TileData *tile_data = atlas_source->get_tile_data(neighbor_cell.get_atlas_coords(), neighbor_cell.alternative_tile);
+ if (tile_data && tile_data->get_terrain_set() == p_terrain_set) {
+ neighbor_tile_data = tile_data;
}
}
+ }
- int terrain = neighbor_tile_data ? neighbor_tile_data->get_peering_bit_terrain(TileSet::CellNeighbor(E_overlapping.value)) : -1;
- if (!p_ignore_empty_terrains || terrain >= 0) {
- if (!terrain_count.has(terrain)) {
- terrain_count[terrain] = 0;
- }
- terrain_count[terrain] += 1;
+ int terrain = neighbor_tile_data ? neighbor_tile_data->get_terrain_peering_bit(TileSet::CellNeighbor(E_overlapping.value)) : -1;
+ if (!p_ignore_empty_terrains || terrain >= 0) {
+ if (!terrain_count.has(terrain)) {
+ terrain_count[terrain] = 0;
}
+ terrain_count[terrain] += 1;
}
}
@@ -2244,33 +2280,34 @@ RBSet<TileMap::TerrainConstraint> TileMap::get_terrain_constraints_from_removed_
// Set the adequate terrain.
if (max > 0) {
+ TerrainConstraint c = E_constraint;
c.set_terrain(max_terrain);
constraints.insert(c);
}
}
- return constraints;
-}
-
-RBSet<TileMap::TerrainConstraint> TileMap::get_terrain_constraints_from_added_tile(Vector2i p_position, int p_terrain_set, TileSet::TerrainsPattern p_terrains_pattern) const {
- if (!tile_set.is_valid()) {
- return RBSet<TerrainConstraint>();
- }
+ // Add the centers as constraints
+ for (Vector2i E_coords : p_cell_list) {
+ TileData *tile_data = nullptr;
+ TileMapCell cell = get_cell(p_layer, E_coords);
+ if (cell.source_id != TileSet::INVALID_SOURCE) {
+ Ref<TileSetSource> source = tile_set->get_source(cell.source_id);
+ Ref<TileSetAtlasSource> atlas_source = source;
+ if (atlas_source.is_valid()) {
+ tile_data = atlas_source->get_tile_data(cell.get_atlas_coords(), cell.alternative_tile);
+ }
+ }
- // Compute the constraints needed from the surrounding tiles.
- RBSet<TerrainConstraint> output;
- for (uint32_t i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
- TileSet::CellNeighbor side = TileSet::CellNeighbor(i);
- if (tile_set->is_valid_peering_bit_terrain(p_terrain_set, side)) {
- TerrainConstraint c = TerrainConstraint(this, p_position, side, p_terrains_pattern.get_terrain(side));
- output.insert(c);
+ int terrain = (tile_data && tile_data->get_terrain_set() == p_terrain_set) ? tile_data->get_terrain() : -1;
+ if (!p_ignore_empty_terrains || terrain >= 0) {
+ constraints.insert(TerrainConstraint(this, E_coords, terrain));
}
}
- return output;
+ return constraints;
}
-HashMap<Vector2i, TileSet::TerrainsPattern> TileMap::terrain_wave_function_collapse(const RBSet<Vector2i> &p_to_replace, int p_terrain_set, const RBSet<TerrainConstraint> p_constraints) {
+HashMap<Vector2i, TileSet::TerrainsPattern> TileMap::terrain_fill_constraints(const Vector<Vector2i> &p_to_replace, int p_terrain_set, const RBSet<TerrainConstraint> p_constraints) {
if (!tile_set.is_valid()) {
return HashMap<Vector2i, TileSet::TerrainsPattern>();
}
@@ -2278,110 +2315,287 @@ HashMap<Vector2i, TileSet::TerrainsPattern> TileMap::terrain_wave_function_colla
// Copy the constraints set.
RBSet<TerrainConstraint> constraints = p_constraints;
- // Compute all acceptable patterns for each cell.
- HashMap<Vector2i, RBSet<TileSet::TerrainsPattern>> per_cell_acceptable_tiles;
- for (Vector2i cell : p_to_replace) {
- per_cell_acceptable_tiles[cell] = _get_valid_terrains_patterns_for_constraints(p_terrain_set, cell, constraints);
- }
-
// Output map.
HashMap<Vector2i, TileSet::TerrainsPattern> output;
// Add all positions to a set.
- RBSet<Vector2i> to_replace = RBSet<Vector2i>(p_to_replace);
- while (!to_replace.is_empty()) {
- // Compute the minimum number of tile possibilities for each cell.
- int min_nb_possibilities = 100000000;
- for (const KeyValue<Vector2i, RBSet<TileSet::TerrainsPattern>> &E : per_cell_acceptable_tiles) {
- min_nb_possibilities = MIN(min_nb_possibilities, E.value.size());
- }
-
- // Get the set of possible cells to fill, out of the most constrained ones.
- LocalVector<Vector2i> to_choose_from;
- for (const KeyValue<Vector2i, RBSet<TileSet::TerrainsPattern>> &E : per_cell_acceptable_tiles) {
- if (E.value.size() == min_nb_possibilities) {
- to_choose_from.push_back(E.key);
- }
- }
-
- // Randomly a cell to fill out of the most constrained.
- Vector2i selected_cell_to_replace = to_choose_from[Math::random(0, to_choose_from.size() - 1)];
-
- // Get the list of acceptable patterns for the given cell.
- RBSet<TileSet::TerrainsPattern> valid_tiles = per_cell_acceptable_tiles[selected_cell_to_replace];
- if (valid_tiles.is_empty()) {
- break; // No possibilities :/
- }
-
- // Out of the possible patterns, prioritize the one which have the least amount of different terrains.
- LocalVector<TileSet::TerrainsPattern> valid_tiles_with_least_amount_of_terrains;
- int min_terrain_count = 10000;
- LocalVector<int> terrains_counts;
- int pattern_index = 0;
- for (const TileSet::TerrainsPattern &pattern : valid_tiles) {
- RBSet<int> terrains;
- for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
- TileSet::CellNeighbor side = TileSet::CellNeighbor(i);
- if (tile_set->is_valid_peering_bit_terrain(p_terrain_set, side)) {
- terrains.insert(pattern.get_terrain(side));
+ for (int i = 0; i < p_to_replace.size(); i++) {
+ const Vector2i &coords = p_to_replace[i];
+
+ // Select the best pattern for the given constraints
+ TileSet::TerrainsPattern pattern = _get_best_terrain_pattern_for_constraints(p_terrain_set, coords, constraints);
+
+ // Update the constraint set with the new ones
+ RBSet<TerrainConstraint> new_constraints = _get_terrain_constraints_from_added_pattern(coords, p_terrain_set, pattern);
+ for (const TerrainConstraint &E_constraint : new_constraints) {
+ if (constraints.has(E_constraint)) {
+ constraints.erase(E_constraint);
+ }
+ TerrainConstraint c = E_constraint;
+ c.set_priority(5);
+ constraints.insert(c);
+ }
+
+ output[coords] = pattern;
+ }
+ return output;
+}
+
+HashMap<Vector2i, TileSet::TerrainsPattern> TileMap::terrain_fill_connect(int p_layer, const Vector<Vector2i> &p_coords_array, int p_terrain_set, int p_terrain, bool p_ignore_empty_terrains) {
+ HashMap<Vector2i, TileSet::TerrainsPattern> output;
+ ERR_FAIL_COND_V(!tile_set.is_valid(), output);
+ ERR_FAIL_INDEX_V(p_terrain_set, tile_set->get_terrain_sets_count(), output);
+
+ // Build list and set of tiles that can be modified (painted and their surroundings)
+ Vector<Vector2i> can_modify_list;
+ RBSet<Vector2i> can_modify_set;
+ RBSet<Vector2i> painted_set;
+ for (int i = p_coords_array.size() - 1; i >= 0; i--) {
+ const Vector2i &coords = p_coords_array[i];
+ can_modify_list.push_back(coords);
+ can_modify_set.insert(coords);
+ painted_set.insert(coords);
+ }
+ for (Vector2i coords : p_coords_array) {
+ // Find the adequate neighbor
+ for (int j = 0; j < TileSet::CELL_NEIGHBOR_MAX; j++) {
+ TileSet::CellNeighbor bit = TileSet::CellNeighbor(j);
+ if (tile_set->is_valid_terrain_peering_bit(p_terrain_set, bit)) {
+ Vector2i neighbor = get_neighbor_cell(coords, bit);
+ if (!can_modify_set.has(neighbor)) {
+ can_modify_list.push_back(neighbor);
+ can_modify_set.insert(neighbor);
}
}
- min_terrain_count = MIN(min_terrain_count, terrains.size());
- terrains_counts.push_back(terrains.size());
- pattern_index++;
}
- pattern_index = 0;
- for (const TileSet::TerrainsPattern &pattern : valid_tiles) {
- if (terrains_counts[pattern_index] == min_terrain_count) {
- valid_tiles_with_least_amount_of_terrains.push_back(pattern);
+ }
+
+ // Build a set, out of the possibly modified tiles, of the one with a center bit that is set (or will be) to the painted terrain
+ RBSet<Vector2i> cells_with_terrain_center_bit;
+ for (Vector2i coords : can_modify_set) {
+ bool connect = false;
+ if (painted_set.has(coords)) {
+ connect = true;
+ } else {
+ // Get the center bit of the cell
+ TileData *tile_data = nullptr;
+ TileMapCell cell = get_cell(p_layer, coords);
+ if (cell.source_id != TileSet::INVALID_SOURCE) {
+ Ref<TileSetSource> source = tile_set->get_source(cell.source_id);
+ Ref<TileSetAtlasSource> atlas_source = source;
+ if (atlas_source.is_valid()) {
+ tile_data = atlas_source->get_tile_data(cell.get_atlas_coords(), cell.alternative_tile);
+ }
+ }
+
+ if (tile_data && tile_data->get_terrain_set() == p_terrain_set && tile_data->get_terrain() == p_terrain) {
+ connect = true;
+ }
+ }
+ if (connect) {
+ cells_with_terrain_center_bit.insert(coords);
+ }
+ }
+
+ RBSet<TerrainConstraint> constraints;
+
+ // Add new constraints from the path drawn.
+ for (Vector2i coords : p_coords_array) {
+ // Constraints on the center bit.
+ TerrainConstraint c = TerrainConstraint(this, coords, p_terrain);
+ c.set_priority(10);
+ constraints.insert(c);
+
+ // Constraints on the connecting bits.
+ for (int j = 0; j < TileSet::CELL_NEIGHBOR_MAX; j++) {
+ TileSet::CellNeighbor bit = TileSet::CellNeighbor(j);
+ if (tile_set->is_valid_terrain_peering_bit(p_terrain_set, bit)) {
+ c = TerrainConstraint(this, coords, bit, p_terrain);
+ c.set_priority(10);
+ if ((int(bit) % 2) == 0) {
+ // Side peering bits: add the constraint if the center is of the same terrain
+ Vector2i neighbor = get_neighbor_cell(coords, bit);
+ if (cells_with_terrain_center_bit.has(neighbor)) {
+ constraints.insert(c);
+ }
+ } else {
+ // Corner peering bits: add the constraint if all tiles on the constraint has the same center bit
+ HashMap<Vector2i, TileSet::CellNeighbor> overlapping_terrain_bits = c.get_overlapping_coords_and_peering_bits();
+ bool valid = true;
+ for (KeyValue<Vector2i, TileSet::CellNeighbor> kv : overlapping_terrain_bits) {
+ if (!cells_with_terrain_center_bit.has(kv.key)) {
+ valid = false;
+ break;
+ }
+ }
+ if (valid) {
+ constraints.insert(c);
+ }
+ }
}
- pattern_index++;
}
+ }
- // Randomly select a pattern out of the remaining ones.
- TileSet::TerrainsPattern selected_terrain_tile_pattern = valid_tiles_with_least_amount_of_terrains[Math::random(0, valid_tiles_with_least_amount_of_terrains.size() - 1)];
+ // Fills in the constraint list from existing tiles.
+ for (TerrainConstraint c : _get_terrain_constraints_from_cells_list(p_layer, can_modify_set, p_terrain_set, p_ignore_empty_terrains)) {
+ constraints.insert(c);
+ }
- // Set the selected cell into the output.
- output[selected_cell_to_replace] = selected_terrain_tile_pattern;
- to_replace.erase(selected_cell_to_replace);
- per_cell_acceptable_tiles.erase(selected_cell_to_replace);
+ // Fill the terrains.
+ output = terrain_fill_constraints(can_modify_list, p_terrain_set, constraints);
+ return output;
+}
- // Add the new constraints from the added tiles.
- RBSet<TerrainConstraint> new_constraints = get_terrain_constraints_from_added_tile(selected_cell_to_replace, p_terrain_set, selected_terrain_tile_pattern);
- for (const TerrainConstraint &E_constraint : new_constraints) {
- constraints.insert(E_constraint);
+HashMap<Vector2i, TileSet::TerrainsPattern> TileMap::terrain_fill_path(int p_layer, const Vector<Vector2i> &p_path, int p_terrain_set, int p_terrain, bool p_ignore_empty_terrains) {
+ HashMap<Vector2i, TileSet::TerrainsPattern> output;
+ ERR_FAIL_COND_V(!tile_set.is_valid(), output);
+ ERR_FAIL_INDEX_V(p_terrain_set, tile_set->get_terrain_sets_count(), output);
+
+ // Make sure the path is correct and build the peering bit list while doing it.
+ Vector<TileSet::CellNeighbor> neighbor_list;
+ for (int i = 0; i < p_path.size() - 1; i++) {
+ // Find the adequate neighbor
+ TileSet::CellNeighbor found_bit = TileSet::CELL_NEIGHBOR_MAX;
+ for (int j = 0; j < TileSet::CELL_NEIGHBOR_MAX; j++) {
+ TileSet::CellNeighbor bit = TileSet::CellNeighbor(j);
+ if (tile_set->is_valid_terrain_peering_bit(p_terrain_set, bit)) {
+ if (get_neighbor_cell(p_path[i], bit) == p_path[i + 1]) {
+ found_bit = bit;
+ break;
+ }
+ }
}
+ ERR_FAIL_COND_V_MSG(found_bit == TileSet::CELL_NEIGHBOR_MAX, output, vformat("Invalid terrain path, %s is not a neighbouring tile of %s", p_path[i + 1], p_path[i]));
+ neighbor_list.push_back(found_bit);
+ }
+
+ // Build list and set of tiles that can be modified (painted and their surroundings)
+ Vector<Vector2i> can_modify_list;
+ RBSet<Vector2i> can_modify_set;
+ for (int i = p_path.size() - 1; i >= 0; i--) {
+ const Vector2i &coords = p_path[i];
+ can_modify_list.push_back(coords);
+ can_modify_set.insert(coords);
+ }
+ for (Vector2i coords : p_path) {
+ // Find the adequate neighbor
+ for (int j = 0; j < TileSet::CELL_NEIGHBOR_MAX; j++) {
+ TileSet::CellNeighbor bit = TileSet::CellNeighbor(j);
+ if (tile_set->is_valid_terrain_peering_bit(p_terrain_set, bit)) {
+ Vector2i neighbor = get_neighbor_cell(coords, bit);
+ if (!can_modify_set.has(neighbor)) {
+ can_modify_list.push_back(neighbor);
+ can_modify_set.insert(neighbor);
+ }
+ }
+ }
+ }
+
+ RBSet<TerrainConstraint> constraints;
+
+ // Add new constraints from the path drawn.
+ for (Vector2i coords : p_path) {
+ // Constraints on the center bit
+ TerrainConstraint c = TerrainConstraint(this, coords, p_terrain);
+ c.set_priority(10);
+ constraints.insert(c);
+ }
+ for (int i = 0; i < p_path.size() - 1; i++) {
+ // Constraints on the peering bits.
+ TerrainConstraint c = TerrainConstraint(this, p_path[i], neighbor_list[i], p_terrain);
+ c.set_priority(10);
+ constraints.insert(c);
+ }
+
+ // Fills in the constraint list from existing tiles.
+ for (TerrainConstraint c : _get_terrain_constraints_from_cells_list(p_layer, can_modify_set, p_terrain_set, p_ignore_empty_terrains)) {
+ constraints.insert(c);
+ }
+
+ // Fill the terrains.
+ output = terrain_fill_constraints(can_modify_list, p_terrain_set, constraints);
+ return output;
+}
- // Compute valid tiles again for neighbors.
- for (uint32_t i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
- TileSet::CellNeighbor side = TileSet::CellNeighbor(i);
- if (is_existing_neighbor(side)) {
- Vector2i neighbor = get_neighbor_cell(selected_cell_to_replace, side);
- if (to_replace.has(neighbor)) {
- per_cell_acceptable_tiles[neighbor] = _get_valid_terrains_patterns_for_constraints(p_terrain_set, neighbor, constraints);
+HashMap<Vector2i, TileSet::TerrainsPattern> TileMap::terrain_fill_pattern(int p_layer, const Vector<Vector2i> &p_coords_array, int p_terrain_set, TileSet::TerrainsPattern p_terrains_pattern, bool p_ignore_empty_terrains) {
+ HashMap<Vector2i, TileSet::TerrainsPattern> output;
+ ERR_FAIL_COND_V(!tile_set.is_valid(), output);
+ ERR_FAIL_INDEX_V(p_terrain_set, tile_set->get_terrain_sets_count(), output);
+
+ // Build list and set of tiles that can be modified (painted and their surroundings).
+ Vector<Vector2i> can_modify_list;
+ RBSet<Vector2i> can_modify_set;
+ for (int i = p_coords_array.size() - 1; i >= 0; i--) {
+ const Vector2i &coords = p_coords_array[i];
+ can_modify_list.push_back(coords);
+ can_modify_set.insert(coords);
+ }
+ for (Vector2i coords : p_coords_array) {
+ // Find the adequate neighbor
+ for (int j = 0; j < TileSet::CELL_NEIGHBOR_MAX; j++) {
+ TileSet::CellNeighbor bit = TileSet::CellNeighbor(j);
+ if (tile_set->is_valid_terrain_peering_bit(p_terrain_set, bit)) {
+ Vector2i neighbor = get_neighbor_cell(coords, bit);
+ if (!can_modify_set.has(neighbor)) {
+ can_modify_list.push_back(neighbor);
+ can_modify_set.insert(neighbor);
}
}
}
}
+
+ // Add constraint by the new ones.
+ RBSet<TerrainConstraint> constraints;
+
+ // Add new constraints from the path drawn.
+ for (Vector2i coords : p_coords_array) {
+ // Constraints on the center bit
+ RBSet<TerrainConstraint> added_constraints = _get_terrain_constraints_from_added_pattern(coords, p_terrain_set, p_terrains_pattern);
+ for (TerrainConstraint c : added_constraints) {
+ c.set_priority(10);
+ constraints.insert(c);
+ }
+ }
+
+ // Fills in the constraint list from modified tiles border.
+ for (TerrainConstraint c : _get_terrain_constraints_from_cells_list(p_layer, can_modify_set, p_terrain_set, p_ignore_empty_terrains)) {
+ constraints.insert(c);
+ }
+
+ // Fill the terrains.
+ output = terrain_fill_constraints(can_modify_list, p_terrain_set, constraints);
return output;
}
-void TileMap::set_cells_from_surrounding_terrains(int p_layer, TypedArray<Vector2i> p_coords_array, int p_terrain_set, bool p_ignore_empty_terrains) {
+void TileMap::set_cells_terrain_connect(int p_layer, TypedArray<Vector2i> p_cells, int p_terrain_set, int p_terrain, bool p_ignore_empty_terrains) {
ERR_FAIL_COND(!tile_set.is_valid());
ERR_FAIL_INDEX(p_layer, (int)layers.size());
ERR_FAIL_INDEX(p_terrain_set, tile_set->get_terrain_sets_count());
- RBSet<Vector2i> coords_set;
- for (int i = 0; i < p_coords_array.size(); i++) {
- coords_set.insert(p_coords_array[i]);
+ Vector<Vector2i> vector_cells;
+ for (int i = 0; i < p_cells.size(); i++) {
+ vector_cells.push_back(p_cells[i]);
}
+ HashMap<Vector2i, TileSet::TerrainsPattern> terrain_fill_output = terrain_fill_connect(p_layer, vector_cells, p_terrain_set, p_terrain, p_ignore_empty_terrains);
+ for (const KeyValue<Vector2i, TileSet::TerrainsPattern> &E : terrain_fill_output) {
+ TileMapCell c = tile_set->get_random_tile_from_terrains_pattern(p_terrain_set, E.value);
+ set_cell(p_layer, E.key, c.source_id, c.get_atlas_coords(), c.alternative_tile);
+ }
+}
- RBSet<TileMap::TerrainConstraint> constraints = get_terrain_constraints_from_removed_cells_list(p_layer, coords_set, p_terrain_set, p_ignore_empty_terrains);
+void TileMap::set_cells_terrain_path(int p_layer, TypedArray<Vector2i> p_path, int p_terrain_set, int p_terrain, bool p_ignore_empty_terrains) {
+ ERR_FAIL_COND(!tile_set.is_valid());
+ ERR_FAIL_INDEX(p_layer, (int)layers.size());
+ ERR_FAIL_INDEX(p_terrain_set, tile_set->get_terrain_sets_count());
- HashMap<Vector2i, TileSet::TerrainsPattern> wfc_output = terrain_wave_function_collapse(coords_set, p_terrain_set, constraints);
- for (const KeyValue<Vector2i, TileSet::TerrainsPattern> &kv : wfc_output) {
- TileMapCell cell = tile_set->get_random_tile_from_terrains_pattern(p_terrain_set, kv.value);
- set_cell(p_layer, kv.key, cell.source_id, cell.get_atlas_coords(), cell.alternative_tile);
+ Vector<Vector2i> vector_path;
+ for (int i = 0; i < p_path.size(); i++) {
+ vector_path.push_back(p_path[i]);
+ }
+ HashMap<Vector2i, TileSet::TerrainsPattern> terrain_fill_output = terrain_fill_path(p_layer, vector_path, p_terrain_set, p_terrain, p_ignore_empty_terrains);
+ for (const KeyValue<Vector2i, TileSet::TerrainsPattern> &E : terrain_fill_output) {
+ TileMapCell c = tile_set->get_random_tile_from_terrains_pattern(p_terrain_set, E.value);
+ set_cell(p_layer, E.key, c.source_id, c.get_atlas_coords(), c.alternative_tile);
}
}
@@ -2729,7 +2943,7 @@ void TileMap::_get_property_list(List<PropertyInfo> *p_list) const {
p_list->push_back(PropertyInfo(Variant::BOOL, vformat("layer_%d/enabled", i), PROPERTY_HINT_NONE));
p_list->push_back(PropertyInfo(Variant::COLOR, vformat("layer_%d/modulate", i), PROPERTY_HINT_NONE));
p_list->push_back(PropertyInfo(Variant::BOOL, vformat("layer_%d/y_sort_enabled", i), PROPERTY_HINT_NONE));
- p_list->push_back(PropertyInfo(Variant::INT, vformat("layer_%d/y_sort_origin", i), PROPERTY_HINT_NONE));
+ p_list->push_back(PropertyInfo(Variant::INT, vformat("layer_%d/y_sort_origin", i), PROPERTY_HINT_NONE, "suffix:px"));
p_list->push_back(PropertyInfo(Variant::INT, vformat("layer_%d/z_index", i), PROPERTY_HINT_NONE));
p_list->push_back(PropertyInfo(Variant::OBJECT, vformat("layer_%d/tile_data", i), PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR));
}
@@ -3640,7 +3854,8 @@ void TileMap::_bind_methods() {
ClassDB::bind_method(D_METHOD("map_pattern", "position_in_tilemap", "coords_in_pattern", "pattern"), &TileMap::map_pattern);
ClassDB::bind_method(D_METHOD("set_pattern", "layer", "position", "pattern"), &TileMap::set_pattern);
- ClassDB::bind_method(D_METHOD("set_cells_from_surrounding_terrains", "layer", "cells", "terrain_set", "ignore_empty_terrains"), &TileMap::set_cells_from_surrounding_terrains, DEFVAL(true));
+ ClassDB::bind_method(D_METHOD("set_cells_terrain_connect", "layer", "cells", "terrain_set", "terrain", "ignore_empty_terrains"), &TileMap::set_cells_terrain_connect, DEFVAL(true));
+ ClassDB::bind_method(D_METHOD("set_cells_terrain_path", "layer", "path", "terrain_set", "terrain", "ignore_empty_terrains"), &TileMap::set_cells_terrain_path, DEFVAL(true));
ClassDB::bind_method(D_METHOD("fix_invalid_tiles"), &TileMap::fix_invalid_tiles);
ClassDB::bind_method(D_METHOD("clear_layer", "layer"), &TileMap::clear_layer);
diff --git a/scene/2d/tile_map.h b/scene/2d/tile_map.h
index 02a2b3a1c6..0ac94b9d45 100644
--- a/scene/2d/tile_map.h
+++ b/scene/2d/tile_map.h
@@ -119,6 +119,8 @@ public:
int bit = -1;
int terrain = -1;
+ int priority = 1;
+
public:
bool operator<(const TerrainConstraint &p_other) const {
if (base_cell_coords == p_other.base_cell_coords) {
@@ -128,13 +130,17 @@ public:
}
String to_string() const {
- return vformat("Constraint {pos:%s, bit:%d, terrain:%d}", base_cell_coords, bit, terrain);
+ return vformat("Constraint {pos:%s, bit:%d, terrain:%d, priotity:%d}", base_cell_coords, bit, terrain, priority);
}
Vector2i get_base_cell_coords() const {
return base_cell_coords;
}
+ bool is_center_bit() const {
+ return bit == 0;
+ }
+
HashMap<Vector2i, TileSet::CellNeighbor> get_overlapping_coords_and_peering_bits() const;
void set_terrain(int p_terrain) {
@@ -145,8 +151,17 @@ public:
return terrain;
}
- TerrainConstraint(const TileMap *p_tile_map, const Vector2i &p_position, const TileSet::CellNeighbor &p_bit, int p_terrain);
- TerrainConstraint() {}
+ void set_priority(int p_priority) {
+ priority = p_priority;
+ }
+
+ int get_priority() {
+ return priority;
+ }
+
+ TerrainConstraint(const TileMap *p_tile_map, const Vector2i &p_position, int p_terrain); // For the center terrain bit
+ TerrainConstraint(const TileMap *p_tile_map, const Vector2i &p_position, const TileSet::CellNeighbor &p_bit, int p_terrain); // For peering bits
+ TerrainConstraint(){};
};
enum VisibilityMode {
@@ -251,7 +266,9 @@ private:
void _scenes_draw_quadrant_debug(TileMapQuadrant *p_quadrant);
// Terrains.
- RBSet<TileSet::TerrainsPattern> _get_valid_terrains_patterns_for_constraints(int p_terrain_set, const Vector2i &p_position, RBSet<TerrainConstraint> p_constraints);
+ TileSet::TerrainsPattern _get_best_terrain_pattern_for_constraints(int p_terrain_set, const Vector2i &p_position, RBSet<TerrainConstraint> p_constraints);
+ RBSet<TerrainConstraint> _get_terrain_constraints_from_added_pattern(Vector2i p_position, int p_terrain_set, TileSet::TerrainsPattern p_terrains_pattern) const;
+ RBSet<TerrainConstraint> _get_terrain_constraints_from_cells_list(int p_layer, const RBSet<Vector2i> &p_on_map, int p_terrain_set, bool p_ignore_empty_terrains) const;
// Set and get tiles from data arrays.
void _set_tile_data(int p_layer, const Vector<int> &p_data);
@@ -333,10 +350,13 @@ public:
void set_pattern(int p_layer, Vector2i p_position, const Ref<TileMapPattern> p_pattern);
// Terrains.
- RBSet<TerrainConstraint> get_terrain_constraints_from_removed_cells_list(int p_layer, const RBSet<Vector2i> &p_to_replace, int p_terrain_set, bool p_ignore_empty_terrains = true) const; // Not exposed.
- RBSet<TerrainConstraint> get_terrain_constraints_from_added_tile(Vector2i p_position, int p_terrain_set, TileSet::TerrainsPattern p_terrains_pattern) const; // Not exposed.
- HashMap<Vector2i, TileSet::TerrainsPattern> terrain_wave_function_collapse(const RBSet<Vector2i> &p_to_replace, int p_terrain_set, const RBSet<TerrainConstraint> p_constraints); // Not exposed.
- void set_cells_from_surrounding_terrains(int p_layer, TypedArray<Vector2i> p_coords_array, int p_terrain_set, bool p_ignore_empty_terrains = true);
+ HashMap<Vector2i, TileSet::TerrainsPattern> terrain_fill_constraints(const Vector<Vector2i> &p_to_replace, int p_terrain_set, const RBSet<TerrainConstraint> p_constraints); // Not exposed.
+ HashMap<Vector2i, TileSet::TerrainsPattern> terrain_fill_connect(int p_layer, const Vector<Vector2i> &p_coords_array, int p_terrain_set, int p_terrain, bool p_ignore_empty_terrains = true); // Not exposed.
+ HashMap<Vector2i, TileSet::TerrainsPattern> terrain_fill_path(int p_layer, const Vector<Vector2i> &p_coords_array, int p_terrain_set, int p_terrain, bool p_ignore_empty_terrains = true); // Not exposed.
+ HashMap<Vector2i, TileSet::TerrainsPattern> terrain_fill_pattern(int p_layer, const Vector<Vector2i> &p_coords_array, int p_terrain_set, TileSet::TerrainsPattern p_terrains_pattern, bool p_ignore_empty_terrains = true); // Not exposed.
+
+ void set_cells_terrain_connect(int p_layer, TypedArray<Vector2i> p_cells, int p_terrain_set, int p_terrain, bool p_ignore_empty_terrains = true);
+ void set_cells_terrain_path(int p_layer, TypedArray<Vector2i> p_path, int p_terrain_set, int p_terrain, bool p_ignore_empty_terrains = true);
// Not exposed to users
TileMapCell get_cell(int p_layer, const Vector2i &p_coords, bool p_use_proxies = false) const;
@@ -365,7 +385,7 @@ public:
// For finding tiles from collision.
Vector2i get_coords_for_body_rid(RID p_physics_body);
- // Fixing a nclearing methods.
+ // Fixing and clearing methods.
void fix_invalid_tiles();
// Clears tiles from a given layer
diff --git a/scene/3d/area_3d.cpp b/scene/3d/area_3d.cpp
index c8c8c6a4e5..fb0c59daa1 100644
--- a/scene/3d/area_3d.cpp
+++ b/scene/3d/area_3d.cpp
@@ -728,7 +728,7 @@ void Area3D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "gravity_space_override", PROPERTY_HINT_ENUM, "Disabled,Combine,Combine-Replace,Replace,Replace-Combine", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED), "set_gravity_space_override_mode", "get_gravity_space_override_mode");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "gravity_point", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED), "set_gravity_is_point", "is_gravity_a_point");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "gravity_point_distance_scale", PROPERTY_HINT_RANGE, "0,1024,0.001,or_greater,exp"), "set_gravity_point_distance_scale", "get_gravity_point_distance_scale");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "gravity_point_center"), "set_gravity_point_center", "get_gravity_point_center");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "gravity_point_center", PROPERTY_HINT_NONE, "suffix:m"), "set_gravity_point_center", "get_gravity_point_center");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "gravity_direction"), "set_gravity_direction", "get_gravity_direction");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "gravity", PROPERTY_HINT_RANGE, U"-32,32,0.001,or_lesser,or_greater,suffix:m/s\u00B2"), "set_gravity", "get_gravity");
diff --git a/scene/3d/audio_stream_player_3d.cpp b/scene/3d/audio_stream_player_3d.cpp
index 7c1fb3779f..824ea0407e 100644
--- a/scene/3d/audio_stream_player_3d.cpp
+++ b/scene/3d/audio_stream_player_3d.cpp
@@ -30,6 +30,7 @@
#include "audio_stream_player_3d.h"
+#include "core/config/project_settings.h"
#include "scene/3d/area_3d.h"
#include "scene/3d/audio_listener_3d.h"
#include "scene/3d/camera_3d.h"
@@ -462,9 +463,10 @@ Vector<AudioFrame> AudioStreamPlayer3D::_update_panning() {
for (Ref<AudioStreamPlayback> &playback : stream_playbacks) {
AudioServer::get_singleton()->set_playback_highshelf_params(playback, linear_attenuation, attenuation_filter_cutoff_hz);
}
- //TODO: The lower the second parameter (tightness) the more the sound will "enclose" the listener (more undirected / playing from
- // speakers not facing the source) - this could be made distance dependent.
- _calc_output_vol(local_pos.normalized(), 4.0, output_volume_vector);
+ // Bake in a constant factor here to allow the project setting defaults for 2d and 3d to be normalized to 1.0.
+ float tightness = cached_global_panning_strength * 2.0f;
+ tightness *= panning_strength;
+ _calc_output_vol(local_pos.normalized(), tightness, output_volume_vector);
for (unsigned int k = 0; k < 4; k++) {
output_volume_vector.write[k] = multiplier * output_volume_vector[k];
@@ -792,6 +794,15 @@ int AudioStreamPlayer3D::get_max_polyphony() const {
return max_polyphony;
}
+void AudioStreamPlayer3D::set_panning_strength(float p_panning_strength) {
+ ERR_FAIL_COND_MSG(p_panning_strength < 0, "Panning strength must be a positive number.");
+ panning_strength = p_panning_strength;
+}
+
+float AudioStreamPlayer3D::get_panning_strength() const {
+ return panning_strength;
+}
+
void AudioStreamPlayer3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_stream", "stream"), &AudioStreamPlayer3D::set_stream);
ClassDB::bind_method(D_METHOD("get_stream"), &AudioStreamPlayer3D::get_stream);
@@ -857,6 +868,9 @@ void AudioStreamPlayer3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_max_polyphony", "max_polyphony"), &AudioStreamPlayer3D::set_max_polyphony);
ClassDB::bind_method(D_METHOD("get_max_polyphony"), &AudioStreamPlayer3D::get_max_polyphony);
+ ClassDB::bind_method(D_METHOD("set_panning_strength", "panning_strength"), &AudioStreamPlayer3D::set_panning_strength);
+ ClassDB::bind_method(D_METHOD("get_panning_strength"), &AudioStreamPlayer3D::get_panning_strength);
+
ClassDB::bind_method(D_METHOD("get_stream_playback"), &AudioStreamPlayer3D::get_stream_playback);
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "stream", PROPERTY_HINT_RESOURCE_TYPE, "AudioStream"), "set_stream", "get_stream");
@@ -870,6 +884,7 @@ void AudioStreamPlayer3D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "stream_paused", PROPERTY_HINT_NONE, ""), "set_stream_paused", "get_stream_paused");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "max_distance", PROPERTY_HINT_RANGE, "0,4096,0.01,or_greater,suffix:m"), "set_max_distance", "get_max_distance");
ADD_PROPERTY(PropertyInfo(Variant::INT, "max_polyphony", PROPERTY_HINT_NONE, ""), "set_max_polyphony", "get_max_polyphony");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "panning_strength", PROPERTY_HINT_RANGE, "0,3,0.01,or_greater"), "set_panning_strength", "get_panning_strength");
ADD_PROPERTY(PropertyInfo(Variant::STRING_NAME, "bus", PROPERTY_HINT_ENUM, ""), "set_bus", "get_bus");
ADD_PROPERTY(PropertyInfo(Variant::INT, "area_mask", PROPERTY_HINT_LAYERS_2D_PHYSICS), "set_area_mask", "get_area_mask");
ADD_GROUP("Emission Angle", "emission_angle");
@@ -898,6 +913,7 @@ AudioStreamPlayer3D::AudioStreamPlayer3D() {
velocity_tracker.instantiate();
AudioServer::get_singleton()->connect("bus_layout_changed", callable_mp(this, &AudioStreamPlayer3D::_bus_layout_changed));
set_disable_scale(true);
+ cached_global_panning_strength = ProjectSettings::get_singleton()->get("audio/general/3d_panning_strength");
}
AudioStreamPlayer3D::~AudioStreamPlayer3D() {
diff --git a/scene/3d/audio_stream_player_3d.h b/scene/3d/audio_stream_player_3d.h
index bc47a8de93..85ece6d8d5 100644
--- a/scene/3d/audio_stream_player_3d.h
+++ b/scene/3d/audio_stream_player_3d.h
@@ -116,6 +116,9 @@ private:
float _get_attenuation_db(float p_distance) const;
+ float panning_strength = 1.0f;
+ float cached_global_panning_strength = 1.0f;
+
protected:
void _validate_property(PropertyInfo &property) const override;
void _notification(int p_what);
@@ -182,6 +185,9 @@ public:
void set_stream_paused(bool p_pause);
bool get_stream_paused() const;
+ void set_panning_strength(float p_panning_strength);
+ float get_panning_strength() const;
+
Ref<AudioStreamPlayback> get_stream_playback();
AudioStreamPlayer3D();
diff --git a/scene/3d/fog_volume.cpp b/scene/3d/fog_volume.cpp
index 8fbadb4b7b..1b329143b6 100644
--- a/scene/3d/fog_volume.cpp
+++ b/scene/3d/fog_volume.cpp
@@ -40,7 +40,7 @@ void FogVolume::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_material", "material"), &FogVolume::set_material);
ClassDB::bind_method(D_METHOD("get_material"), &FogVolume::get_material);
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "extents", PROPERTY_HINT_RANGE, "0.01,1024,0.01,or_greater"), "set_extents", "get_extents");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "extents", PROPERTY_HINT_RANGE, "0.01,1024,0.01,or_greater,suffix:m"), "set_extents", "get_extents");
ADD_PROPERTY(PropertyInfo(Variant::INT, "shape", PROPERTY_HINT_ENUM, "Ellipsoid (Local),Cone (Local),Cylinder (Local),Box (Local),World (Global)"), "set_shape", "get_shape");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "material", PROPERTY_HINT_RESOURCE_TYPE, "FogMaterial,ShaderMaterial"), "set_material", "get_material");
}
diff --git a/scene/3d/gpu_particles_3d.cpp b/scene/3d/gpu_particles_3d.cpp
index 8008512546..d18c452ca7 100644
--- a/scene/3d/gpu_particles_3d.cpp
+++ b/scene/3d/gpu_particles_3d.cpp
@@ -579,7 +579,7 @@ void GPUParticles3D::_bind_methods() {
ADD_GROUP("Collision", "collision_");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "collision_base_size", PROPERTY_HINT_RANGE, "0,128,0.01,or_greater,suffix:m"), "set_collision_base_size", "get_collision_base_size");
ADD_GROUP("Drawing", "");
- ADD_PROPERTY(PropertyInfo(Variant::AABB, "visibility_aabb"), "set_visibility_aabb", "get_visibility_aabb");
+ ADD_PROPERTY(PropertyInfo(Variant::AABB, "visibility_aabb", PROPERTY_HINT_NONE, "suffix:m"), "set_visibility_aabb", "get_visibility_aabb");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "local_coords"), "set_use_local_coordinates", "get_use_local_coordinates");
ADD_PROPERTY(PropertyInfo(Variant::INT, "draw_order", PROPERTY_HINT_ENUM, "Index,Lifetime,Reverse Lifetime,View Depth"), "set_draw_order", "get_draw_order");
ADD_PROPERTY(PropertyInfo(Variant::INT, "transform_align", PROPERTY_HINT_ENUM, "Disabled,Z-Billboard,Y to Velocity,Z-Billboard + Y to Velocity"), "set_transform_align", "get_transform_align");
diff --git a/scene/3d/gpu_particles_collision_3d.cpp b/scene/3d/gpu_particles_collision_3d.cpp
index c1c5a2a631..da0789ccd5 100644
--- a/scene/3d/gpu_particles_collision_3d.cpp
+++ b/scene/3d/gpu_particles_collision_3d.cpp
@@ -516,7 +516,7 @@ void GPUParticlesCollisionSDF3D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "extents", PROPERTY_HINT_RANGE, "0.01,1024,0.01,or_greater,suffix:m"), "set_extents", "get_extents");
ADD_PROPERTY(PropertyInfo(Variant::INT, "resolution", PROPERTY_HINT_ENUM, "16,32,64,128,256,512,suffix:px"), "set_resolution", "get_resolution");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "thickness", PROPERTY_HINT_RANGE, "0.0,2.0,0.01"), "set_thickness", "get_thickness");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "thickness", PROPERTY_HINT_RANGE, "0.0,2.0,0.01,suffix:m"), "set_thickness", "get_thickness");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture3D"), "set_texture", "get_texture");
BIND_ENUM_CONSTANT(RESOLUTION_16);
diff --git a/scene/3d/joint_3d.cpp b/scene/3d/joint_3d.cpp
index b6fc83e599..0b824ef28b 100644
--- a/scene/3d/joint_3d.cpp
+++ b/scene/3d/joint_3d.cpp
@@ -331,7 +331,7 @@ void HingeJoint3D::_bind_methods() {
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "angular_limit/relaxation", PROPERTY_HINT_RANGE, "0.01,16,0.01"), "set_param", "get_param", PARAM_LIMIT_RELAXATION);
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "motor/enable"), "set_flag", "get_flag", FLAG_ENABLE_MOTOR);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "motor/target_velocity", PROPERTY_HINT_RANGE, "-200,200,0.01,or_greater,or_lesser"), "set_param", "get_param", PARAM_MOTOR_TARGET_VELOCITY);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "motor/target_velocity", PROPERTY_HINT_RANGE, "-200,200,0.01,or_greater,or_lesser,suffix:m/s"), "set_param", "get_param", PARAM_MOTOR_TARGET_VELOCITY);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "motor/max_impulse", PROPERTY_HINT_RANGE, "0.01,1024,0.01"), "set_param", "get_param", PARAM_MOTOR_MAX_IMPULSE);
BIND_ENUM_CONSTANT(PARAM_BIAS);
@@ -448,8 +448,8 @@ void SliderJoint3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("_set_lower_limit_angular", "lower_limit_angular"), &SliderJoint3D::_set_lower_limit_angular);
ClassDB::bind_method(D_METHOD("_get_lower_limit_angular"), &SliderJoint3D::_get_lower_limit_angular);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_limit/upper_distance", PROPERTY_HINT_RANGE, "-1024,1024,0.01"), "set_param", "get_param", PARAM_LINEAR_LIMIT_UPPER);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_limit/lower_distance", PROPERTY_HINT_RANGE, "-1024,1024,0.01"), "set_param", "get_param", PARAM_LINEAR_LIMIT_LOWER);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_limit/upper_distance", PROPERTY_HINT_RANGE, "-1024,1024,0.01,suffix:m"), "set_param", "get_param", PARAM_LINEAR_LIMIT_UPPER);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_limit/lower_distance", PROPERTY_HINT_RANGE, "-1024,1024,0.01,suffix:m"), "set_param", "get_param", PARAM_LINEAR_LIMIT_LOWER);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_limit/softness", PROPERTY_HINT_RANGE, "0.01,16.0,0.01"), "set_param", "get_param", PARAM_LINEAR_LIMIT_SOFTNESS);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_limit/restitution", PROPERTY_HINT_RANGE, "0.01,16.0,0.01"), "set_param", "get_param", PARAM_LINEAR_LIMIT_RESTITUTION);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_limit/damping", PROPERTY_HINT_RANGE, "0,16.0,0.01"), "set_param", "get_param", PARAM_LINEAR_LIMIT_DAMPING);
@@ -737,15 +737,18 @@ void Generic6DOFJoint3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_flag_z", "flag", "value"), &Generic6DOFJoint3D::set_flag_z);
ClassDB::bind_method(D_METHOD("get_flag_z", "flag"), &Generic6DOFJoint3D::get_flag_z);
+ // X
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "linear_limit_x/enabled"), "set_flag_x", "get_flag_x", FLAG_ENABLE_LINEAR_LIMIT);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_limit_x/upper_distance"), "set_param_x", "get_param_x", PARAM_LINEAR_UPPER_LIMIT);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_limit_x/lower_distance"), "set_param_x", "get_param_x", PARAM_LINEAR_LOWER_LIMIT);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_limit_x/upper_distance", PROPERTY_HINT_NONE, "suffix:m"), "set_param_x", "get_param_x", PARAM_LINEAR_UPPER_LIMIT);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_limit_x/lower_distance", PROPERTY_HINT_NONE, "suffix:m"), "set_param_x", "get_param_x", PARAM_LINEAR_LOWER_LIMIT);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_limit_x/softness", PROPERTY_HINT_RANGE, "0.01,16,0.01"), "set_param_x", "get_param_x", PARAM_LINEAR_LIMIT_SOFTNESS);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_limit_x/restitution", PROPERTY_HINT_RANGE, "0.01,16,0.01"), "set_param_x", "get_param_x", PARAM_LINEAR_RESTITUTION);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_limit_x/damping", PROPERTY_HINT_RANGE, "0.01,16,0.01"), "set_param_x", "get_param_x", PARAM_LINEAR_DAMPING);
+
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "linear_motor_x/enabled"), "set_flag_x", "get_flag_x", FLAG_ENABLE_LINEAR_MOTOR);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_motor_x/target_velocity"), "set_param_x", "get_param_x", PARAM_LINEAR_MOTOR_TARGET_VELOCITY);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_motor_x/target_velocity", PROPERTY_HINT_NONE, "suffix:m/s"), "set_param_x", "get_param_x", PARAM_LINEAR_MOTOR_TARGET_VELOCITY);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_motor_x/force_limit"), "set_param_x", "get_param_x", PARAM_LINEAR_MOTOR_FORCE_LIMIT);
+
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "linear_spring_x/enabled"), "set_flag_x", "get_flag_x", FLAG_ENABLE_LINEAR_SPRING);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_spring_x/stiffness"), "set_param_x", "get_param_x", PARAM_LINEAR_SPRING_STIFFNESS);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_spring_x/damping"), "set_param_x", "get_param_x", PARAM_LINEAR_SPRING_DAMPING);
@@ -759,56 +762,69 @@ void Generic6DOFJoint3D::_bind_methods() {
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "angular_limit_x/damping", PROPERTY_HINT_RANGE, "0.01,16,0.01"), "set_param_x", "get_param_x", PARAM_ANGULAR_DAMPING);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "angular_limit_x/force_limit"), "set_param_x", "get_param_x", PARAM_ANGULAR_FORCE_LIMIT);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "angular_limit_x/erp"), "set_param_x", "get_param_x", PARAM_ANGULAR_ERP);
+
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "angular_motor_x/enabled"), "set_flag_x", "get_flag_x", FLAG_ENABLE_MOTOR);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "angular_motor_x/target_velocity"), "set_param_x", "get_param_x", PARAM_ANGULAR_MOTOR_TARGET_VELOCITY);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "angular_motor_x/force_limit"), "set_param_x", "get_param_x", PARAM_ANGULAR_MOTOR_FORCE_LIMIT);
+
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "angular_spring_x/enabled"), "set_flag_x", "get_flag_x", FLAG_ENABLE_ANGULAR_SPRING);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "angular_spring_x/stiffness"), "set_param_x", "get_param_x", PARAM_ANGULAR_SPRING_STIFFNESS);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "angular_spring_x/damping"), "set_param_x", "get_param_x", PARAM_ANGULAR_SPRING_DAMPING);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "angular_spring_x/equilibrium_point"), "set_param_x", "get_param_x", PARAM_ANGULAR_SPRING_EQUILIBRIUM_POINT);
+ // Y
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "linear_limit_y/enabled"), "set_flag_y", "get_flag_y", FLAG_ENABLE_LINEAR_LIMIT);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_limit_y/upper_distance"), "set_param_y", "get_param_y", PARAM_LINEAR_UPPER_LIMIT);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_limit_y/lower_distance"), "set_param_y", "get_param_y", PARAM_LINEAR_LOWER_LIMIT);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_limit_y/upper_distance", PROPERTY_HINT_NONE, "suffix:m"), "set_param_y", "get_param_y", PARAM_LINEAR_UPPER_LIMIT);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_limit_y/lower_distance", PROPERTY_HINT_NONE, "suffix:m"), "set_param_y", "get_param_y", PARAM_LINEAR_LOWER_LIMIT);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_limit_y/softness", PROPERTY_HINT_RANGE, "0.01,16,0.01"), "set_param_y", "get_param_y", PARAM_LINEAR_LIMIT_SOFTNESS);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_limit_y/restitution", PROPERTY_HINT_RANGE, "0.01,16,0.01"), "set_param_y", "get_param_y", PARAM_LINEAR_RESTITUTION);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_limit_y/damping", PROPERTY_HINT_RANGE, "0.01,16,0.01"), "set_param_y", "get_param_y", PARAM_LINEAR_DAMPING);
+
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "linear_motor_y/enabled"), "set_flag_y", "get_flag_y", FLAG_ENABLE_LINEAR_MOTOR);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_motor_y/target_velocity"), "set_param_y", "get_param_y", PARAM_LINEAR_MOTOR_TARGET_VELOCITY);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_motor_y/target_velocity", PROPERTY_HINT_NONE, "suffix:m/s"), "set_param_y", "get_param_y", PARAM_LINEAR_MOTOR_TARGET_VELOCITY);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_motor_y/force_limit"), "set_param_y", "get_param_y", PARAM_LINEAR_MOTOR_FORCE_LIMIT);
+
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "linear_spring_y/enabled"), "set_flag_y", "get_flag_y", FLAG_ENABLE_LINEAR_SPRING);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_spring_y/stiffness"), "set_param_y", "get_param_y", PARAM_LINEAR_SPRING_STIFFNESS);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_spring_y/damping"), "set_param_y", "get_param_y", PARAM_LINEAR_SPRING_DAMPING);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_spring_y/equilibrium_point"), "set_param_y", "get_param_y", PARAM_LINEAR_SPRING_EQUILIBRIUM_POINT);
+
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "angular_limit_y/enabled"), "set_flag_y", "get_flag_y", FLAG_ENABLE_ANGULAR_LIMIT);
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "angular_limit_y/upper_angle", PROPERTY_HINT_RANGE, "-180,180,0.01"), "_set_angular_hi_limit_y", "_get_angular_hi_limit_y");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "angular_limit_y/lower_angle", PROPERTY_HINT_RANGE, "-180,180,0.01"), "_set_angular_lo_limit_y", "_get_angular_lo_limit_y");
+
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "angular_limit_y/softness", PROPERTY_HINT_RANGE, "0.01,16,0.01"), "set_param_y", "get_param_y", PARAM_ANGULAR_LIMIT_SOFTNESS);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "angular_limit_y/restitution", PROPERTY_HINT_RANGE, "0.01,16,0.01"), "set_param_y", "get_param_y", PARAM_ANGULAR_RESTITUTION);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "angular_limit_y/damping", PROPERTY_HINT_RANGE, "0.01,16,0.01"), "set_param_y", "get_param_y", PARAM_ANGULAR_DAMPING);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "angular_limit_y/force_limit"), "set_param_y", "get_param_y", PARAM_ANGULAR_FORCE_LIMIT);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "angular_limit_y/erp"), "set_param_y", "get_param_y", PARAM_ANGULAR_ERP);
+
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "angular_motor_y/enabled"), "set_flag_y", "get_flag_y", FLAG_ENABLE_MOTOR);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "angular_motor_y/target_velocity"), "set_param_y", "get_param_y", PARAM_ANGULAR_MOTOR_TARGET_VELOCITY);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "angular_motor_y/force_limit"), "set_param_y", "get_param_y", PARAM_ANGULAR_MOTOR_FORCE_LIMIT);
+
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "angular_spring_y/enabled"), "set_flag_y", "get_flag_y", FLAG_ENABLE_ANGULAR_SPRING);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "angular_spring_y/stiffness"), "set_param_y", "get_param_y", PARAM_ANGULAR_SPRING_STIFFNESS);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "angular_spring_y/damping"), "set_param_y", "get_param_y", PARAM_ANGULAR_SPRING_DAMPING);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "angular_spring_y/equilibrium_point"), "set_param_y", "get_param_y", PARAM_ANGULAR_SPRING_EQUILIBRIUM_POINT);
+ // Z
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "linear_limit_z/enabled"), "set_flag_z", "get_flag_z", FLAG_ENABLE_LINEAR_LIMIT);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_limit_z/upper_distance"), "set_param_z", "get_param_z", PARAM_LINEAR_UPPER_LIMIT);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_limit_z/lower_distance"), "set_param_z", "get_param_z", PARAM_LINEAR_LOWER_LIMIT);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_limit_z/upper_distance", PROPERTY_HINT_NONE, "suffix:m"), "set_param_z", "get_param_z", PARAM_LINEAR_UPPER_LIMIT);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_limit_z/lower_distance", PROPERTY_HINT_NONE, "suffix:m"), "set_param_z", "get_param_z", PARAM_LINEAR_LOWER_LIMIT);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_limit_z/softness", PROPERTY_HINT_RANGE, "0.01,16,0.01"), "set_param_z", "get_param_z", PARAM_LINEAR_LIMIT_SOFTNESS);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_limit_z/restitution", PROPERTY_HINT_RANGE, "0.01,16,0.01"), "set_param_z", "get_param_z", PARAM_LINEAR_RESTITUTION);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_limit_z/damping", PROPERTY_HINT_RANGE, "0.01,16,0.01"), "set_param_z", "get_param_z", PARAM_LINEAR_DAMPING);
+
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "linear_motor_z/enabled"), "set_flag_z", "get_flag_z", FLAG_ENABLE_LINEAR_MOTOR);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_motor_z/target_velocity"), "set_param_z", "get_param_z", PARAM_LINEAR_MOTOR_TARGET_VELOCITY);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_motor_z/target_velocity", PROPERTY_HINT_NONE, "suffix:m/s"), "set_param_z", "get_param_z", PARAM_LINEAR_MOTOR_TARGET_VELOCITY);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_motor_z/force_limit"), "set_param_z", "get_param_z", PARAM_LINEAR_MOTOR_FORCE_LIMIT);
+
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "linear_spring_z/enabled"), "set_flag_z", "get_flag_z", FLAG_ENABLE_LINEAR_SPRING);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_spring_z/stiffness"), "set_param_z", "get_param_z", PARAM_LINEAR_SPRING_STIFFNESS);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_spring_z/damping"), "set_param_z", "get_param_z", PARAM_LINEAR_SPRING_DAMPING);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "linear_spring_z/equilibrium_point"), "set_param_z", "get_param_z", PARAM_LINEAR_SPRING_EQUILIBRIUM_POINT);
+
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "angular_limit_z/enabled"), "set_flag_z", "get_flag_z", FLAG_ENABLE_ANGULAR_LIMIT);
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "angular_limit_z/upper_angle", PROPERTY_HINT_RANGE, "-180,180,0.01"), "_set_angular_hi_limit_z", "_get_angular_hi_limit_z");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "angular_limit_z/lower_angle", PROPERTY_HINT_RANGE, "-180,180,0.01"), "_set_angular_lo_limit_z", "_get_angular_lo_limit_z");
@@ -817,9 +833,11 @@ void Generic6DOFJoint3D::_bind_methods() {
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "angular_limit_z/damping", PROPERTY_HINT_RANGE, "0.01,16,0.01"), "set_param_z", "get_param_z", PARAM_ANGULAR_DAMPING);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "angular_limit_z/force_limit"), "set_param_z", "get_param_z", PARAM_ANGULAR_FORCE_LIMIT);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "angular_limit_z/erp"), "set_param_z", "get_param_z", PARAM_ANGULAR_ERP);
+
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "angular_motor_z/enabled"), "set_flag_z", "get_flag_z", FLAG_ENABLE_MOTOR);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "angular_motor_z/target_velocity"), "set_param_z", "get_param_z", PARAM_ANGULAR_MOTOR_TARGET_VELOCITY);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "angular_motor_z/force_limit"), "set_param_z", "get_param_z", PARAM_ANGULAR_MOTOR_FORCE_LIMIT);
+
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "angular_spring_z/enabled"), "set_flag_z", "get_flag_z", FLAG_ENABLE_ANGULAR_SPRING);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "angular_spring_z/stiffness"), "set_param_z", "get_param_z", PARAM_ANGULAR_SPRING_STIFFNESS);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "angular_spring_z/damping"), "set_param_z", "get_param_z", PARAM_ANGULAR_SPRING_DAMPING);
diff --git a/scene/3d/label_3d.cpp b/scene/3d/label_3d.cpp
index 78da22a0c3..0849b2c631 100644
--- a/scene/3d/label_3d.cpp
+++ b/scene/3d/label_3d.cpp
@@ -120,8 +120,8 @@ void Label3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("_font_changed"), &Label3D::_font_changed);
ClassDB::bind_method(D_METHOD("_im_update"), &Label3D::_im_update);
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "pixel_size", PROPERTY_HINT_RANGE, "0.0001,128,0.0001"), "set_pixel_size", "get_pixel_size");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "offset"), "set_offset", "get_offset");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "pixel_size", PROPERTY_HINT_RANGE, "0.0001,128,0.0001,suffix:m"), "set_pixel_size", "get_pixel_size");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "offset", PROPERTY_HINT_NONE, "suffix:px"), "set_offset", "get_offset");
ADD_GROUP("Flags", "");
ADD_PROPERTY(PropertyInfo(Variant::INT, "billboard", PROPERTY_HINT_ENUM, "Disabled,Enabled,Y-Billboard"), "set_billboard_mode", "get_billboard_mode");
@@ -140,14 +140,14 @@ void Label3D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "outline_modulate"), "set_outline_modulate", "get_outline_modulate");
ADD_PROPERTY(PropertyInfo(Variant::STRING, "text", PROPERTY_HINT_MULTILINE_TEXT, ""), "set_text", "get_text");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "font", PROPERTY_HINT_RESOURCE_TYPE, "Font"), "set_font", "get_font");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "font_size", PROPERTY_HINT_RANGE, "1,127,1"), "set_font_size", "get_font_size");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "outline_size", PROPERTY_HINT_RANGE, "0,127,1"), "set_outline_size", "get_outline_size");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "font_size", PROPERTY_HINT_RANGE, "1,127,1,suffix:px"), "set_font_size", "get_font_size");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "outline_size", PROPERTY_HINT_RANGE, "0,127,1,suffix:px"), "set_outline_size", "get_outline_size");
ADD_PROPERTY(PropertyInfo(Variant::INT, "horizontal_alignment", PROPERTY_HINT_ENUM, "Left,Center,Right,Fill"), "set_horizontal_alignment", "get_horizontal_alignment");
ADD_PROPERTY(PropertyInfo(Variant::INT, "vertical_alignment", PROPERTY_HINT_ENUM, "Top,Center,Bottom"), "set_vertical_alignment", "get_vertical_alignment");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "uppercase"), "set_uppercase", "is_uppercase");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "line_spacing"), "set_line_spacing", "get_line_spacing");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "line_spacing", PROPERTY_HINT_NONE, "suffix:px"), "set_line_spacing", "get_line_spacing");
ADD_PROPERTY(PropertyInfo(Variant::INT, "autowrap_mode", PROPERTY_HINT_ENUM, "Off,Arbitrary,Word,Word (Smart)"), "set_autowrap_mode", "get_autowrap_mode");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "width"), "set_width", "get_width");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "width", PROPERTY_HINT_NONE, "suffix:px"), "set_width", "get_width");
ADD_PROPERTY(PropertyInfo(Variant::INT, "structured_text_bidi_override", PROPERTY_HINT_ENUM, "Default,URI,File,Email,List,None,Custom"), "set_structured_text_bidi_override", "get_structured_text_bidi_override");
ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "structured_text_bidi_override_options"), "set_structured_text_bidi_override_options", "get_structured_text_bidi_override_options");
@@ -155,11 +155,6 @@ void Label3D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "text_direction", PROPERTY_HINT_ENUM, "Auto,Left-to-Right,Right-to-Left"), "set_text_direction", "get_text_direction");
ADD_PROPERTY(PropertyInfo(Variant::STRING, "language", PROPERTY_HINT_LOCALE_ID, ""), "set_language", "get_language");
- BIND_ENUM_CONSTANT(AUTOWRAP_OFF);
- BIND_ENUM_CONSTANT(AUTOWRAP_ARBITRARY);
- BIND_ENUM_CONSTANT(AUTOWRAP_WORD);
- BIND_ENUM_CONSTANT(AUTOWRAP_WORD_SMART);
-
BIND_ENUM_CONSTANT(FLAG_SHADED);
BIND_ENUM_CONSTANT(FLAG_DOUBLE_SIDED);
BIND_ENUM_CONSTANT(FLAG_DISABLE_DEPTH_TEST);
@@ -381,7 +376,7 @@ void Label3D::_generate_glyph_surfaces(const Glyph &p_glyph, Vector2 &r_offset,
} else {
mat_hash = hash_one_uint64(0);
}
- mat_hash = hash_djb2_one_64(p_priority | (p_outline_size << 31), mat_hash);
+ mat_hash = hash_fmix32(hash_murmur3_one_64(p_priority | (p_outline_size << 31), mat_hash));
if (!surfaces.has(mat_hash)) {
SurfaceData surf;
@@ -514,16 +509,16 @@ void Label3D::_shape() {
uint16_t autowrap_flags = TextServer::BREAK_MANDATORY;
switch (autowrap_mode) {
- case AUTOWRAP_WORD_SMART:
+ case TextServer::AUTOWRAP_WORD_SMART:
autowrap_flags = TextServer::BREAK_WORD_BOUND_ADAPTIVE | TextServer::BREAK_MANDATORY;
break;
- case AUTOWRAP_WORD:
+ case TextServer::AUTOWRAP_WORD:
autowrap_flags = TextServer::BREAK_WORD_BOUND | TextServer::BREAK_MANDATORY;
break;
- case AUTOWRAP_ARBITRARY:
+ case TextServer::AUTOWRAP_ARBITRARY:
autowrap_flags = TextServer::BREAK_GRAPHEME_BOUND | TextServer::BREAK_MANDATORY;
break;
- case AUTOWRAP_OFF:
+ case TextServer::AUTOWRAP_OFF:
break;
}
PackedInt32Array line_breaks = TS->shaped_text_get_line_breaks(text_rid, width, 0, autowrap_flags);
@@ -885,7 +880,7 @@ Color Label3D::get_outline_modulate() const {
return outline_modulate;
}
-void Label3D::set_autowrap_mode(Label3D::AutowrapMode p_mode) {
+void Label3D::set_autowrap_mode(TextServer::AutowrapMode p_mode) {
if (autowrap_mode != p_mode) {
autowrap_mode = p_mode;
dirty_lines = true;
@@ -893,7 +888,7 @@ void Label3D::set_autowrap_mode(Label3D::AutowrapMode p_mode) {
}
}
-Label3D::AutowrapMode Label3D::get_autowrap_mode() const {
+TextServer::AutowrapMode Label3D::get_autowrap_mode() const {
return autowrap_mode;
}
diff --git a/scene/3d/label_3d.h b/scene/3d/label_3d.h
index 62f4c3fe96..7766bca068 100644
--- a/scene/3d/label_3d.h
+++ b/scene/3d/label_3d.h
@@ -54,13 +54,6 @@ public:
ALPHA_CUT_OPAQUE_PREPASS
};
- enum AutowrapMode {
- AUTOWRAP_OFF,
- AUTOWRAP_ARBITRARY,
- AUTOWRAP_WORD,
- AUTOWRAP_WORD_SMART
- };
-
private:
real_t pixel_size = 0.01;
bool flags[FLAG_MAX] = {};
@@ -91,7 +84,7 @@ private:
String xl_text;
bool uppercase = false;
- AutowrapMode autowrap_mode = AUTOWRAP_OFF;
+ TextServer::AutowrapMode autowrap_mode = TextServer::AUTOWRAP_OFF;
float width = 500.0;
int font_size = 16;
@@ -200,8 +193,8 @@ public:
void set_outline_modulate(const Color &p_color);
Color get_outline_modulate() const;
- void set_autowrap_mode(AutowrapMode p_mode);
- AutowrapMode get_autowrap_mode() const;
+ void set_autowrap_mode(TextServer::AutowrapMode p_mode);
+ TextServer::AutowrapMode get_autowrap_mode() const;
void set_width(float p_width);
float get_width() const;
@@ -234,7 +227,6 @@ public:
~Label3D();
};
-VARIANT_ENUM_CAST(Label3D::AutowrapMode);
VARIANT_ENUM_CAST(Label3D::DrawFlags);
VARIANT_ENUM_CAST(Label3D::AlphaCutMode);
diff --git a/scene/3d/light_3d.cpp b/scene/3d/light_3d.cpp
index 2568defe0f..6c999d85e2 100644
--- a/scene/3d/light_3d.cpp
+++ b/scene/3d/light_3d.cpp
@@ -176,6 +176,11 @@ Ref<Texture2D> Light3D::get_projector() const {
return projector;
}
+void Light3D::owner_changed_notify() {
+ // For cases where owner changes _after_ entering tree (as example, editor editing).
+ _update_visibility();
+}
+
void Light3D::_update_visibility() {
if (!is_inside_tree()) {
return;
@@ -277,13 +282,13 @@ void Light3D::_bind_methods() {
ADD_GROUP("Light", "light_");
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "light_color", PROPERTY_HINT_COLOR_NO_ALPHA), "set_color", "get_color");
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "light_energy", PROPERTY_HINT_RANGE, "0,16,0.01,or_greater"), "set_param", "get_param", PARAM_ENERGY);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "light_indirect_energy", PROPERTY_HINT_RANGE, "0,16,0.01,or_greater"), "set_param", "get_param", PARAM_INDIRECT_ENERGY);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "light_energy", PROPERTY_HINT_RANGE, "0,16,0.001,or_greater"), "set_param", "get_param", PARAM_ENERGY);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "light_indirect_energy", PROPERTY_HINT_RANGE, "0,16,0.001,or_greater"), "set_param", "get_param", PARAM_INDIRECT_ENERGY);
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "light_projector", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_projector", "get_projector");
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "light_size", PROPERTY_HINT_RANGE, "0,1,0.01,or_greater"), "set_param", "get_param", PARAM_SIZE);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "light_angular_distance", PROPERTY_HINT_RANGE, "0,90,0.01,radians"), "set_param", "get_param", PARAM_SIZE);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "light_size", PROPERTY_HINT_RANGE, "0,1,0.001,or_greater,suffix:m"), "set_param", "get_param", PARAM_SIZE);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "light_angular_distance", PROPERTY_HINT_RANGE, "0,90,0.01,degrees"), "set_param", "get_param", PARAM_SIZE);
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "light_negative"), "set_negative", "is_negative");
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "light_specular", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_param", "get_param", PARAM_SPECULAR);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "light_specular", PROPERTY_HINT_RANGE, "0,16,0.001,or_greater"), "set_param", "get_param", PARAM_SPECULAR);
ADD_PROPERTY(PropertyInfo(Variant::INT, "light_bake_mode", PROPERTY_HINT_ENUM, "Disabled,Static (VoxelGI/SDFGI/LightmapGI),Dynamic (VoxelGI/SDFGI only)"), "set_bake_mode", "get_bake_mode");
ADD_PROPERTY(PropertyInfo(Variant::INT, "light_cull_mask", PROPERTY_HINT_LAYERS_3D_RENDER), "set_cull_mask", "get_cull_mask");
ADD_GROUP("Shadow", "shadow_");
@@ -291,14 +296,13 @@ void Light3D::_bind_methods() {
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "shadow_bias", PROPERTY_HINT_RANGE, "0,10,0.001"), "set_param", "get_param", PARAM_SHADOW_BIAS);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "shadow_normal_bias", PROPERTY_HINT_RANGE, "0,10,0.001"), "set_param", "get_param", PARAM_SHADOW_NORMAL_BIAS);
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "shadow_reverse_cull_face"), "set_shadow_reverse_cull_face", "get_shadow_reverse_cull_face");
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "shadow_transmittance_bias", PROPERTY_HINT_RANGE, "-16,16,0.01"), "set_param", "get_param", PARAM_TRANSMITTANCE_BIAS);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "shadow_fog_fade", PROPERTY_HINT_RANGE, "0.01,10,0.01"), "set_param", "get_param", PARAM_SHADOW_VOLUMETRIC_FOG_FADE);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "shadow_blur", PROPERTY_HINT_RANGE, "0.1,8,0.01"), "set_param", "get_param", PARAM_SHADOW_BLUR);
- ADD_GROUP("Distance Fade", "distance_fade_");
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "shadow_transmittance_bias", PROPERTY_HINT_RANGE, "-16,16,0.001"), "set_param", "get_param", PARAM_TRANSMITTANCE_BIAS);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "shadow_fog_fade", PROPERTY_HINT_RANGE, "0.001,10,0.001"), "set_param", "get_param", PARAM_SHADOW_VOLUMETRIC_FOG_FADE);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "shadow_blur", PROPERTY_HINT_RANGE, "0,10,0.001"), "set_param", "get_param", PARAM_SHADOW_BLUR);
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "distance_fade_enabled"), "set_enable_distance_fade", "is_distance_fade_enabled");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "distance_fade_begin", PROPERTY_HINT_RANGE, "0.0,4096.0,0.01,or_greater"), "set_distance_fade_begin", "get_distance_fade_begin");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "distance_fade_shadow", PROPERTY_HINT_RANGE, "0.0,4096.0,0.01,or_greater"), "set_distance_fade_shadow", "get_distance_fade_shadow");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "distance_fade_length", PROPERTY_HINT_RANGE, "0.0,4096.0,0.01,or_greater"), "set_distance_fade_length", "get_distance_fade_length");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "distance_fade_begin", PROPERTY_HINT_RANGE, "0.0,4096.0,0.01,or_greater,suffix:m"), "set_distance_fade_begin", "get_distance_fade_begin");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "distance_fade_shadow", PROPERTY_HINT_RANGE, "0.0,4096.0,0.01,or_greater,suffix:m"), "set_distance_fade_shadow", "get_distance_fade_shadow");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "distance_fade_length", PROPERTY_HINT_RANGE, "0.0,4096.0,0.01,or_greater,suffix:m"), "set_distance_fade_length", "get_distance_fade_length");
ADD_GROUP("Editor", "");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "editor_only"), "set_editor_only", "is_editor_only");
ADD_GROUP("", "");
@@ -458,7 +462,7 @@ void DirectionalLight3D::_bind_methods() {
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "directional_shadow_split_2", PROPERTY_HINT_RANGE, "0,1,0.001"), "set_param", "get_param", PARAM_SHADOW_SPLIT_2_OFFSET);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "directional_shadow_split_3", PROPERTY_HINT_RANGE, "0,1,0.001"), "set_param", "get_param", PARAM_SHADOW_SPLIT_3_OFFSET);
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "directional_shadow_blend_splits"), "set_blend_splits", "is_blend_splits_enabled");
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "directional_shadow_fade_start", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_param", "get_param", PARAM_SHADOW_FADE_START);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "directional_shadow_fade_start", PROPERTY_HINT_RANGE, "0,1,0.001"), "set_param", "get_param", PARAM_SHADOW_FADE_START);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "directional_shadow_max_distance", PROPERTY_HINT_RANGE, "0,8192,0.1,or_greater,exp"), "set_param", "get_param", PARAM_SHADOW_MAX_DISTANCE);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "directional_shadow_pancake_size", PROPERTY_HINT_RANGE, "0,1024,0.1,or_greater,exp"), "set_param", "get_param", PARAM_SHADOW_PANCAKE_SIZE);
@@ -508,7 +512,7 @@ void OmniLight3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_shadow_mode"), &OmniLight3D::get_shadow_mode);
ADD_GROUP("Omni", "omni_");
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "omni_range", PROPERTY_HINT_RANGE, "0,4096,0.1,or_greater,exp"), "set_param", "get_param", PARAM_RANGE);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "omni_range", PROPERTY_HINT_RANGE, "0,4096,0.001,or_greater,exp"), "set_param", "get_param", PARAM_RANGE);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "omni_attenuation", PROPERTY_HINT_EXP_EASING, "attenuation"), "set_param", "get_param", PARAM_ATTENUATION);
ADD_PROPERTY(PropertyInfo(Variant::INT, "omni_shadow_mode", PROPERTY_HINT_ENUM, "Dual Paraboloid,Cube"), "set_shadow_mode", "get_shadow_mode");
@@ -539,8 +543,8 @@ TypedArray<String> SpotLight3D::get_configuration_warnings() const {
void SpotLight3D::_bind_methods() {
ADD_GROUP("Spot", "spot_");
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "spot_range", PROPERTY_HINT_RANGE, "0,4096,0.1,or_greater,exp,suffix:m"), "set_param", "get_param", PARAM_RANGE);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "spot_range", PROPERTY_HINT_RANGE, "0,4096,0.001,or_greater,exp,suffix:m"), "set_param", "get_param", PARAM_RANGE);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "spot_attenuation", PROPERTY_HINT_EXP_EASING, "attenuation"), "set_param", "get_param", PARAM_ATTENUATION);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "spot_angle", PROPERTY_HINT_RANGE, "0,180,0.1,degrees"), "set_param", "get_param", PARAM_SPOT_ANGLE);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "spot_angle", PROPERTY_HINT_RANGE, "0,180,0.01,degrees"), "set_param", "get_param", PARAM_SPOT_ANGLE);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "spot_angle_attenuation", PROPERTY_HINT_EXP_EASING, "attenuation"), "set_param", "get_param", PARAM_SPOT_ATTENUATION);
}
diff --git a/scene/3d/light_3d.h b/scene/3d/light_3d.h
index 383fa644e5..6ff332df5a 100644
--- a/scene/3d/light_3d.h
+++ b/scene/3d/light_3d.h
@@ -85,6 +85,8 @@ private:
// bind helpers
+ virtual void owner_changed_notify() override;
+
protected:
RID light;
diff --git a/scene/3d/lightmap_gi.cpp b/scene/3d/lightmap_gi.cpp
index 5c63bdcf1d..a8eec4b1f3 100644
--- a/scene/3d/lightmap_gi.cpp
+++ b/scene/3d/lightmap_gi.cpp
@@ -73,7 +73,7 @@ void LightmapGIData::clear_users() {
}
void LightmapGIData::_set_user_data(const Array &p_data) {
- ERR_FAIL_COND(p_data.size() <= 0);
+ ERR_FAIL_COND(p_data.is_empty());
ERR_FAIL_COND((p_data.size() % 4) != 0);
for (int i = 0; i < p_data.size(); i += 4) {
@@ -92,6 +92,95 @@ Array LightmapGIData::_get_user_data() const {
return ret;
}
+void LightmapGIData::_set_light_textures_data(const Array &p_data) {
+ ERR_FAIL_COND(p_data.is_empty());
+
+ if (p_data.size() == 1) {
+ set_light_texture(p_data[0]);
+ } else {
+ Vector<Ref<Image>> images;
+ for (int i = 0; i < p_data.size(); i++) {
+ Ref<TextureLayered> texture = p_data[i];
+ for (int j = 0; j < texture->get_layers(); j++) {
+ images.push_back(texture->get_layer_data(j));
+ }
+ }
+
+ Ref<Texture2DArray> combined_texture;
+ combined_texture.instantiate();
+
+ combined_texture->create_from_images(images);
+ set_light_texture(combined_texture);
+ }
+}
+
+Array LightmapGIData::_get_light_textures_data() const {
+ Array ret;
+ if (light_texture.is_null()) {
+ return ret;
+ }
+
+ Vector<Ref<Image>> images;
+ for (int i = 0; i < light_texture->get_layers(); i++) {
+ images.push_back(light_texture->get_layer_data(i));
+ }
+
+ int slice_count = images.size();
+ int slice_width = images[0]->get_width();
+ int slice_height = images[0]->get_height();
+
+ int slices_per_texture = Image::MAX_HEIGHT / slice_height;
+ int texture_count = Math::ceil(slice_count / (float)slices_per_texture);
+
+ ret.resize(texture_count);
+
+ String base_name = get_path().get_basename();
+
+ int last_count = slice_count % slices_per_texture;
+ for (int i = 0; i < texture_count; i++) {
+ int texture_slice_count = (i == texture_count - 1 && last_count != 0) ? last_count : slices_per_texture;
+
+ Ref<Image> texture_image;
+ texture_image.instantiate();
+
+ texture_image->create(slice_width, slice_height * texture_slice_count, false, images[0]->get_format());
+
+ for (int j = 0; j < texture_slice_count; j++) {
+ texture_image->blit_rect(images[i * slices_per_texture + j], Rect2(0, 0, slice_width, slice_height), Point2(0, slice_height * j));
+ }
+
+ String texture_path = texture_count > 1 ? base_name + "_" + itos(i) + ".exr" : base_name + ".exr";
+
+ Ref<ConfigFile> config;
+ config.instantiate();
+
+ if (FileAccess::exists(texture_path + ".import")) {
+ config->load(texture_path + ".import");
+ }
+
+ config->set_value("remap", "importer", "2d_array_texture");
+ config->set_value("remap", "type", "CompressedTexture2DArray");
+ if (!config->has_section_key("params", "compress/mode")) {
+ config->set_value("params", "compress/mode", 2); //user may want another compression, so leave it be
+ }
+ config->set_value("params", "compress/channel_pack", 1);
+ config->set_value("params", "mipmaps/generate", false);
+ config->set_value("params", "slices/horizontal", 1);
+ config->set_value("params", "slices/vertical", texture_slice_count);
+
+ config->save(texture_path + ".import");
+
+ Error err = texture_image->save_exr(texture_path, false);
+ ERR_FAIL_COND_V(err, ret);
+ ResourceLoader::import(texture_path);
+ Ref<TextureLayered> t = ResourceLoader::load(texture_path); //if already loaded, it will be updated on refocus?
+ ERR_FAIL_COND_V(t.is_null(), ret);
+ ret[i] = t;
+ }
+
+ return ret;
+}
+
RID LightmapGIData::get_rid() const {
return lightmap;
}
@@ -188,6 +277,9 @@ void LightmapGIData::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_light_texture", "light_texture"), &LightmapGIData::set_light_texture);
ClassDB::bind_method(D_METHOD("get_light_texture"), &LightmapGIData::get_light_texture);
+ ClassDB::bind_method(D_METHOD("_set_light_textures_data", "data"), &LightmapGIData::_set_light_textures_data);
+ ClassDB::bind_method(D_METHOD("_get_light_textures_data"), &LightmapGIData::_get_light_textures_data);
+
ClassDB::bind_method(D_METHOD("set_uses_spherical_harmonics", "uses_spherical_harmonics"), &LightmapGIData::set_uses_spherical_harmonics);
ClassDB::bind_method(D_METHOD("is_using_spherical_harmonics"), &LightmapGIData::is_using_spherical_harmonics);
@@ -199,7 +291,8 @@ void LightmapGIData::_bind_methods() {
ClassDB::bind_method(D_METHOD("_set_probe_data", "data"), &LightmapGIData::_set_probe_data);
ClassDB::bind_method(D_METHOD("_get_probe_data"), &LightmapGIData::_get_probe_data);
- ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "light_texture", PROPERTY_HINT_RESOURCE_TYPE, "TextureLayered"), "set_light_texture", "get_light_texture");
+ ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "light_texture", PROPERTY_HINT_RESOURCE_TYPE, "TextureLayered", PROPERTY_USAGE_EDITOR | PROPERTY_USAGE_NETWORK), "set_light_texture", "get_light_texture"); // property usage default but no save
+ ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "light_textures", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR | PROPERTY_USAGE_INTERNAL), "_set_light_textures_data", "_get_light_textures_data");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "uses_spherical_harmonics", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR | PROPERTY_USAGE_INTERNAL), "set_uses_spherical_harmonics", "is_using_spherical_harmonics");
ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "user_data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR | PROPERTY_USAGE_INTERNAL), "_set_user_data", "_get_user_data");
ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "probe_data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR | PROPERTY_USAGE_INTERNAL), "_set_probe_data", "_get_probe_data");
@@ -572,7 +665,7 @@ void LightmapGI::_plot_triangle_into_octree(GenProbesOctree *p_cell, float p_cel
}
}
-void LightmapGI::_gen_new_positions_from_octree(const GenProbesOctree *p_cell, float p_cell_size, const Vector<Vector3> &probe_positions, LocalVector<Vector3> &new_probe_positions, HashMap<Vector3i, bool, Vector3iHash> &positions_used, const AABB &p_bounds) {
+void LightmapGI::_gen_new_positions_from_octree(const GenProbesOctree *p_cell, float p_cell_size, const Vector<Vector3> &probe_positions, LocalVector<Vector3> &new_probe_positions, HashMap<Vector3i, bool> &positions_used, const AABB &p_bounds) {
for (int i = 0; i < 8; i++) {
Vector3i pos = p_cell->offset;
if (i & 1) {
@@ -841,7 +934,7 @@ LightmapGI::BakeError LightmapGI::bake(Node *p_from_node, String p_image_data_pa
}
LocalVector<Vector3> new_probe_positions;
- HashMap<Vector3i, bool, Vector3iHash> positions_used;
+ HashMap<Vector3i, bool> positions_used;
for (uint32_t i = 0; i < 8; i++) { //insert bounding endpoints
Vector3i pos;
if (i & 1) {
@@ -953,53 +1046,6 @@ LightmapGI::BakeError LightmapGI::bake(Node *p_from_node, String p_image_data_pa
return BAKE_ERROR_MESHES_INVALID;
}
- /* POSTBAKE: Save Textures */
-
- Ref<TextureLayered> texture;
- {
- Vector<Ref<Image>> images;
- for (int i = 0; i < lightmapper->get_bake_texture_count(); i++) {
- images.push_back(lightmapper->get_bake_texture(i));
- }
- //we assume they are all the same, so let's create a large one for saving
- Ref<Image> large_image;
- large_image.instantiate();
-
- large_image->create(images[0]->get_width(), images[0]->get_height() * images.size(), false, images[0]->get_format());
-
- for (int i = 0; i < lightmapper->get_bake_texture_count(); i++) {
- large_image->blit_rect(images[i], Rect2(0, 0, images[i]->get_width(), images[i]->get_height()), Point2(0, images[i]->get_height() * i));
- }
-
- String base_path = p_image_data_path.get_basename() + ".exr";
-
- Ref<ConfigFile> config;
-
- config.instantiate();
- if (FileAccess::exists(base_path + ".import")) {
- config->load(base_path + ".import");
- }
-
- config->set_value("remap", "importer", "2d_array_texture");
- config->set_value("remap", "type", "CompressedTexture2DArray");
- if (!config->has_section_key("params", "compress/mode")) {
- config->set_value("params", "compress/mode", 2); //user may want another compression, so leave it be
- }
- config->set_value("params", "compress/channel_pack", 1);
- config->set_value("params", "mipmaps/generate", false);
- config->set_value("params", "slices/horizontal", 1);
- config->set_value("params", "slices/vertical", images.size());
-
- config->save(base_path + ".import");
-
- Error err = large_image->save_exr(base_path, false);
- ERR_FAIL_COND_V(err, BAKE_ERROR_CANT_CREATE_IMAGE);
- ResourceLoader::import(base_path);
- Ref<Texture> t = ResourceLoader::load(base_path); //if already loaded, it will be updated on refocus?
- ERR_FAIL_COND_V(t.is_null(), BAKE_ERROR_CANT_CREATE_IMAGE);
- texture = t;
- }
-
/* POSTBAKE: Save Light Data */
Ref<LightmapGIData> data;
@@ -1011,6 +1057,17 @@ LightmapGI::BakeError LightmapGI::bake(Node *p_from_node, String p_image_data_pa
data.instantiate();
}
+ Ref<Texture2DArray> texture;
+ {
+ Vector<Ref<Image>> images;
+ for (int i = 0; i < lightmapper->get_bake_texture_count(); i++) {
+ images.push_back(lightmapper->get_bake_texture(i));
+ }
+
+ texture.instantiate();
+ texture->create_from_images(images);
+ }
+
data->set_light_texture(texture);
data->set_uses_spherical_harmonics(directional);
@@ -1161,8 +1218,8 @@ LightmapGI::BakeError LightmapGI::bake(Node *p_from_node, String p_image_data_pa
/* Compute a BSP tree of the simplices, so it's easy to find the exact one */
}
- Error err = ResourceSaver::save(p_image_data_path, data);
data->set_path(p_image_data_path);
+ Error err = ResourceSaver::save(p_image_data_path, data);
if (err != OK) {
return BAKE_ERROR_CANT_CREATE_IMAGE;
diff --git a/scene/3d/lightmap_gi.h b/scene/3d/lightmap_gi.h
index d29d7a7c28..f7a23c776a 100644
--- a/scene/3d/lightmap_gi.h
+++ b/scene/3d/lightmap_gi.h
@@ -61,6 +61,8 @@ class LightmapGIData : public Resource {
Array _get_user_data() const;
void _set_probe_data(const Dictionary &p_data);
Dictionary _get_probe_data() const;
+ void _set_light_textures_data(const Array &p_data);
+ Array _get_light_textures_data() const;
protected:
static void _bind_methods();
@@ -210,16 +212,8 @@ private:
}
};
- struct Vector3iHash {
- _FORCE_INLINE_ static uint32_t hash(const Vector3i &p_vtx) {
- uint32_t h = hash_djb2_one_32(p_vtx.x);
- h = hash_djb2_one_32(p_vtx.y, h);
- return hash_djb2_one_32(p_vtx.z, h);
- }
- };
-
void _plot_triangle_into_octree(GenProbesOctree *p_cell, float p_cell_size, const Vector3 *p_triangle);
- void _gen_new_positions_from_octree(const GenProbesOctree *p_cell, float p_cell_size, const Vector<Vector3> &probe_positions, LocalVector<Vector3> &new_probe_positions, HashMap<Vector3i, bool, Vector3iHash> &positions_used, const AABB &p_bounds);
+ void _gen_new_positions_from_octree(const GenProbesOctree *p_cell, float p_cell_size, const Vector<Vector3> &probe_positions, LocalVector<Vector3> &new_probe_positions, HashMap<Vector3i, bool> &positions_used, const AABB &p_bounds);
protected:
void _validate_property(PropertyInfo &property) const override;
diff --git a/scene/3d/navigation_agent_3d.cpp b/scene/3d/navigation_agent_3d.cpp
index 947d6012d5..e5ec444335 100644
--- a/scene/3d/navigation_agent_3d.cpp
+++ b/scene/3d/navigation_agent_3d.cpp
@@ -38,6 +38,9 @@ void NavigationAgent3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_avoidance_enabled", "enabled"), &NavigationAgent3D::set_avoidance_enabled);
ClassDB::bind_method(D_METHOD("get_avoidance_enabled"), &NavigationAgent3D::get_avoidance_enabled);
+ ClassDB::bind_method(D_METHOD("set_path_desired_distance", "desired_distance"), &NavigationAgent3D::set_path_desired_distance);
+ ClassDB::bind_method(D_METHOD("get_path_desired_distance"), &NavigationAgent3D::get_path_desired_distance);
+
ClassDB::bind_method(D_METHOD("set_target_desired_distance", "desired_distance"), &NavigationAgent3D::set_target_desired_distance);
ClassDB::bind_method(D_METHOD("get_target_desired_distance"), &NavigationAgent3D::get_target_desired_distance);
@@ -65,8 +68,14 @@ void NavigationAgent3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_path_max_distance", "max_speed"), &NavigationAgent3D::set_path_max_distance);
ClassDB::bind_method(D_METHOD("get_path_max_distance"), &NavigationAgent3D::get_path_max_distance);
- ClassDB::bind_method(D_METHOD("set_navigable_layers", "navigable_layers"), &NavigationAgent3D::set_navigable_layers);
- ClassDB::bind_method(D_METHOD("get_navigable_layers"), &NavigationAgent3D::get_navigable_layers);
+ ClassDB::bind_method(D_METHOD("set_navigation_layers", "navigation_layers"), &NavigationAgent3D::set_navigation_layers);
+ ClassDB::bind_method(D_METHOD("get_navigation_layers"), &NavigationAgent3D::get_navigation_layers);
+
+ ClassDB::bind_method(D_METHOD("set_navigation_layer_value", "layer_number", "value"), &NavigationAgent3D::set_navigation_layer_value);
+ ClassDB::bind_method(D_METHOD("get_navigation_layer_value", "layer_number"), &NavigationAgent3D::get_navigation_layer_value);
+
+ ClassDB::bind_method(D_METHOD("set_navigation_map", "navigation_map"), &NavigationAgent3D::set_navigation_map);
+ ClassDB::bind_method(D_METHOD("get_navigation_map"), &NavigationAgent3D::get_navigation_map);
ClassDB::bind_method(D_METHOD("set_target_location", "location"), &NavigationAgent3D::set_target_location);
ClassDB::bind_method(D_METHOD("get_target_location"), &NavigationAgent3D::get_target_location);
@@ -82,6 +91,7 @@ void NavigationAgent3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("_avoidance_done", "new_velocity"), &NavigationAgent3D::_avoidance_done);
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "path_desired_distance", PROPERTY_HINT_RANGE, "0.1,100,0.01,suffix:m"), "set_path_desired_distance", "get_path_desired_distance");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "target_desired_distance", PROPERTY_HINT_RANGE, "0.1,100,0.01,suffix:m"), "set_target_desired_distance", "get_target_desired_distance");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "radius", PROPERTY_HINT_RANGE, "0.1,100,0.01,suffix:m"), "set_radius", "get_radius");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "agent_height_offset", PROPERTY_HINT_RANGE, "-100.0,100,0.01,suffix:m"), "set_agent_height_offset", "get_agent_height_offset");
@@ -92,7 +102,7 @@ void NavigationAgent3D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "path_max_distance", PROPERTY_HINT_RANGE, "0.01,100,0.1,suffix:m"), "set_path_max_distance", "get_path_max_distance");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "ignore_y"), "set_ignore_y", "get_ignore_y");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "avoidance_enabled"), "set_avoidance_enabled", "get_avoidance_enabled");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "navigable_layers", PROPERTY_HINT_LAYERS_3D_NAVIGATION), "set_navigable_layers", "get_navigable_layers");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "navigation_layers", PROPERTY_HINT_LAYERS_3D_NAVIGATION), "set_navigation_layers", "get_navigation_layers");
ADD_SIGNAL(MethodInfo("path_changed"));
ADD_SIGNAL(MethodInfo("target_reached"));
@@ -198,7 +208,11 @@ void NavigationAgent3D::set_agent_parent(Node *p_agent_parent) {
if (Object::cast_to<Node3D>(p_agent_parent) != nullptr) {
// place agent on navigation map first or else the RVO agent callback creation fails silently later
agent_parent = Object::cast_to<Node3D>(p_agent_parent);
- NavigationServer3D::get_singleton()->agent_set_map(get_rid(), agent_parent->get_world_3d()->get_navigation_map());
+ if (map_override.is_valid()) {
+ NavigationServer3D::get_singleton()->agent_set_map(get_rid(), map_override);
+ } else {
+ NavigationServer3D::get_singleton()->agent_set_map(get_rid(), agent_parent->get_world_3d()->get_navigation_map());
+ }
// create new avoidance callback if enabled
set_avoidance_enabled(avoidance_enabled);
} else {
@@ -207,16 +221,53 @@ void NavigationAgent3D::set_agent_parent(Node *p_agent_parent) {
}
}
-void NavigationAgent3D::set_navigable_layers(uint32_t p_layers) {
- bool layers_changed = navigable_layers != p_layers;
- navigable_layers = p_layers;
- if (layers_changed) {
+void NavigationAgent3D::set_navigation_layers(uint32_t p_navigation_layers) {
+ bool navigation_layers_changed = navigation_layers != p_navigation_layers;
+ navigation_layers = p_navigation_layers;
+ if (navigation_layers_changed) {
_request_repath();
}
}
-uint32_t NavigationAgent3D::get_navigable_layers() const {
- return navigable_layers;
+uint32_t NavigationAgent3D::get_navigation_layers() const {
+ return navigation_layers;
+}
+
+void NavigationAgent3D::set_navigation_layer_value(int p_layer_number, bool p_value) {
+ ERR_FAIL_COND_MSG(p_layer_number < 1, "Navigation layer number must be between 1 and 32 inclusive.");
+ ERR_FAIL_COND_MSG(p_layer_number > 32, "Navigation layer number must be between 1 and 32 inclusive.");
+ uint32_t _navigation_layers = get_navigation_layers();
+ if (p_value) {
+ _navigation_layers |= 1 << (p_layer_number - 1);
+ } else {
+ _navigation_layers &= ~(1 << (p_layer_number - 1));
+ }
+ set_navigation_layers(_navigation_layers);
+}
+
+bool NavigationAgent3D::get_navigation_layer_value(int p_layer_number) const {
+ ERR_FAIL_COND_V_MSG(p_layer_number < 1, false, "Navigation layer number must be between 1 and 32 inclusive.");
+ ERR_FAIL_COND_V_MSG(p_layer_number > 32, false, "Navigation layer number must be between 1 and 32 inclusive.");
+ return get_navigation_layers() & (1 << (p_layer_number - 1));
+}
+
+void NavigationAgent3D::set_navigation_map(RID p_navigation_map) {
+ map_override = p_navigation_map;
+ NavigationServer3D::get_singleton()->agent_set_map(agent, map_override);
+ _request_repath();
+}
+
+RID NavigationAgent3D::get_navigation_map() const {
+ if (map_override.is_valid()) {
+ return map_override;
+ } else if (agent_parent != nullptr) {
+ return agent_parent->get_world_3d()->get_navigation_map();
+ }
+ return RID();
+}
+
+void NavigationAgent3D::set_path_desired_distance(real_t p_dd) {
+ path_desired_distance = p_dd;
}
void NavigationAgent3D::set_target_desired_distance(real_t p_dd) {
@@ -377,7 +428,11 @@ void NavigationAgent3D::update_navigation() {
}
if (reload_path) {
- navigation_path = NavigationServer3D::get_singleton()->map_get_path(agent_parent->get_world_3d()->get_navigation_map(), o, target_location, true, navigable_layers);
+ if (map_override.is_valid()) {
+ navigation_path = NavigationServer3D::get_singleton()->map_get_path(map_override, o, target_location, true, navigation_layers);
+ } else {
+ navigation_path = NavigationServer3D::get_singleton()->map_get_path(agent_parent->get_world_3d()->get_navigation_map(), o, target_location, true, navigation_layers);
+ }
navigation_finished = false;
nav_path_index = 0;
emit_signal(SNAME("path_changed"));
@@ -390,7 +445,7 @@ void NavigationAgent3D::update_navigation() {
// Check if we can advance the navigation path
if (navigation_finished == false) {
// Advances to the next far away location.
- while (o.distance_to(navigation_path[nav_path_index] - Vector3(0, navigation_height_offset, 0)) < target_desired_distance) {
+ while (o.distance_to(navigation_path[nav_path_index] - Vector3(0, navigation_height_offset, 0)) < path_desired_distance) {
nav_path_index += 1;
if (nav_path_index == navigation_path.size()) {
_check_distance_to_target();
diff --git a/scene/3d/navigation_agent_3d.h b/scene/3d/navigation_agent_3d.h
index 633bf091d1..0a00d769c3 100644
--- a/scene/3d/navigation_agent_3d.h
+++ b/scene/3d/navigation_agent_3d.h
@@ -42,10 +42,12 @@ class NavigationAgent3D : public Node {
RID agent;
RID map_before_pause;
+ RID map_override;
bool avoidance_enabled = false;
- uint32_t navigable_layers = 1;
+ uint32_t navigation_layers = 1;
+ real_t path_desired_distance = 1.0;
real_t target_desired_distance = 1.0;
real_t radius = 0.0;
real_t navigation_height_offset = 0.0;
@@ -86,8 +88,19 @@ public:
void set_agent_parent(Node *p_agent_parent);
- void set_navigable_layers(uint32_t p_layers);
- uint32_t get_navigable_layers() const;
+ void set_navigation_layers(uint32_t p_navigation_layers);
+ uint32_t get_navigation_layers() const;
+
+ void set_navigation_layer_value(int p_layer_number, bool p_value);
+ bool get_navigation_layer_value(int p_layer_number) const;
+
+ void set_navigation_map(RID p_navigation_map);
+ RID get_navigation_map() const;
+
+ void set_path_desired_distance(real_t p_dd);
+ real_t get_path_desired_distance() const {
+ return path_desired_distance;
+ }
void set_target_desired_distance(real_t p_dd);
real_t get_target_desired_distance() const {
diff --git a/scene/3d/navigation_region_3d.cpp b/scene/3d/navigation_region_3d.cpp
index 6404432631..2a8149c6f6 100644
--- a/scene/3d/navigation_region_3d.cpp
+++ b/scene/3d/navigation_region_3d.cpp
@@ -65,12 +65,50 @@ bool NavigationRegion3D::is_enabled() const {
return enabled;
}
-void NavigationRegion3D::set_layers(uint32_t p_layers) {
- NavigationServer3D::get_singleton()->region_set_layers(region, p_layers);
+void NavigationRegion3D::set_navigation_layers(uint32_t p_navigation_layers) {
+ NavigationServer3D::get_singleton()->region_set_navigation_layers(region, p_navigation_layers);
}
-uint32_t NavigationRegion3D::get_layers() const {
- return NavigationServer3D::get_singleton()->region_get_layers(region);
+uint32_t NavigationRegion3D::get_navigation_layers() const {
+ return NavigationServer3D::get_singleton()->region_get_navigation_layers(region);
+}
+
+void NavigationRegion3D::set_navigation_layer_value(int p_layer_number, bool p_value) {
+ ERR_FAIL_COND_MSG(p_layer_number < 1, "Navigation layer number must be between 1 and 32 inclusive.");
+ ERR_FAIL_COND_MSG(p_layer_number > 32, "Navigation layer number must be between 1 and 32 inclusive.");
+ uint32_t _navigation_layers = get_navigation_layers();
+ if (p_value) {
+ _navigation_layers |= 1 << (p_layer_number - 1);
+ } else {
+ _navigation_layers &= ~(1 << (p_layer_number - 1));
+ }
+ set_navigation_layers(_navigation_layers);
+}
+
+bool NavigationRegion3D::get_navigation_layer_value(int p_layer_number) const {
+ ERR_FAIL_COND_V_MSG(p_layer_number < 1, false, "Navigation layer number must be between 1 and 32 inclusive.");
+ ERR_FAIL_COND_V_MSG(p_layer_number > 32, false, "Navigation layer number must be between 1 and 32 inclusive.");
+ return get_navigation_layers() & (1 << (p_layer_number - 1));
+}
+
+void NavigationRegion3D::set_enter_cost(real_t p_enter_cost) {
+ ERR_FAIL_COND_MSG(p_enter_cost < 0.0, "The enter_cost must be positive.");
+ enter_cost = MAX(p_enter_cost, 0.0);
+ NavigationServer3D::get_singleton()->region_set_enter_cost(region, p_enter_cost);
+}
+
+real_t NavigationRegion3D::get_enter_cost() const {
+ return enter_cost;
+}
+
+void NavigationRegion3D::set_travel_cost(real_t p_travel_cost) {
+ ERR_FAIL_COND_MSG(p_travel_cost < 0.0, "The travel_cost must be positive.");
+ travel_cost = MAX(p_travel_cost, 0.0);
+ NavigationServer3D::get_singleton()->region_set_enter_cost(region, travel_cost);
+}
+
+real_t NavigationRegion3D::get_travel_cost() const {
+ return travel_cost;
}
RID NavigationRegion3D::get_region_rid() const {
@@ -131,6 +169,17 @@ void NavigationRegion3D::set_navigation_mesh(const Ref<NavigationMesh> &p_navmes
NavigationServer3D::get_singleton()->region_set_navmesh(region, p_navmesh);
+ if (debug_view == nullptr && is_inside_tree() && navmesh.is_valid() && get_tree()->is_debugging_navigation_hint()) {
+ MeshInstance3D *dm = memnew(MeshInstance3D);
+ dm->set_mesh(navmesh->get_debug_mesh());
+ if (is_enabled()) {
+ dm->set_material_override(get_tree()->get_debug_navigation_material());
+ } else {
+ dm->set_material_override(get_tree()->get_debug_navigation_disabled_material());
+ }
+ add_child(dm);
+ debug_view = dm;
+ }
if (debug_view && navmesh.is_valid()) {
Object::cast_to<MeshInstance3D>(debug_view)->set_mesh(navmesh->get_debug_mesh());
}
@@ -208,17 +257,28 @@ void NavigationRegion3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_enabled", "enabled"), &NavigationRegion3D::set_enabled);
ClassDB::bind_method(D_METHOD("is_enabled"), &NavigationRegion3D::is_enabled);
- ClassDB::bind_method(D_METHOD("set_layers", "layers"), &NavigationRegion3D::set_layers);
- ClassDB::bind_method(D_METHOD("get_layers"), &NavigationRegion3D::get_layers);
+ ClassDB::bind_method(D_METHOD("set_navigation_layers", "navigation_layers"), &NavigationRegion3D::set_navigation_layers);
+ ClassDB::bind_method(D_METHOD("get_navigation_layers"), &NavigationRegion3D::get_navigation_layers);
+
+ ClassDB::bind_method(D_METHOD("set_navigation_layer_value", "layer_number", "value"), &NavigationRegion3D::set_navigation_layer_value);
+ ClassDB::bind_method(D_METHOD("get_navigation_layer_value", "layer_number"), &NavigationRegion3D::get_navigation_layer_value);
ClassDB::bind_method(D_METHOD("get_region_rid"), &NavigationRegion3D::get_region_rid);
+ ClassDB::bind_method(D_METHOD("set_enter_cost", "enter_cost"), &NavigationRegion3D::set_enter_cost);
+ ClassDB::bind_method(D_METHOD("get_enter_cost"), &NavigationRegion3D::get_enter_cost);
+
+ ClassDB::bind_method(D_METHOD("set_travel_cost", "travel_cost"), &NavigationRegion3D::set_travel_cost);
+ ClassDB::bind_method(D_METHOD("get_travel_cost"), &NavigationRegion3D::get_travel_cost);
+
ClassDB::bind_method(D_METHOD("bake_navigation_mesh", "on_thread"), &NavigationRegion3D::bake_navigation_mesh, DEFVAL(true));
ClassDB::bind_method(D_METHOD("_bake_finished", "nav_mesh"), &NavigationRegion3D::_bake_finished);
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "navmesh", PROPERTY_HINT_RESOURCE_TYPE, "NavigationMesh"), "set_navigation_mesh", "get_navigation_mesh");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "enabled"), "set_enabled", "is_enabled");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "layers", PROPERTY_HINT_LAYERS_3D_NAVIGATION), "set_layers", "get_layers");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "navigation_layers", PROPERTY_HINT_LAYERS_3D_NAVIGATION), "set_navigation_layers", "get_navigation_layers");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "enter_cost"), "set_enter_cost", "get_enter_cost");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "travel_cost"), "set_travel_cost", "get_travel_cost");
ADD_SIGNAL(MethodInfo("navigation_mesh_changed"));
ADD_SIGNAL(MethodInfo("bake_finished"));
@@ -232,6 +292,8 @@ void NavigationRegion3D::_navigation_changed() {
NavigationRegion3D::NavigationRegion3D() {
set_notify_transform(true);
region = NavigationServer3D::get_singleton()->region_create();
+ NavigationServer3D::get_singleton()->region_set_enter_cost(region, get_enter_cost());
+ NavigationServer3D::get_singleton()->region_set_travel_cost(region, get_travel_cost());
}
NavigationRegion3D::~NavigationRegion3D() {
diff --git a/scene/3d/navigation_region_3d.h b/scene/3d/navigation_region_3d.h
index 140dfebf6a..aaaf5dd3b8 100644
--- a/scene/3d/navigation_region_3d.h
+++ b/scene/3d/navigation_region_3d.h
@@ -41,6 +41,9 @@ class NavigationRegion3D : public Node3D {
RID region;
Ref<NavigationMesh> navmesh;
+ real_t enter_cost = 0.0;
+ real_t travel_cost = 1.0;
+
Node *debug_view = nullptr;
Thread bake_thread;
@@ -54,11 +57,20 @@ public:
void set_enabled(bool p_enabled);
bool is_enabled() const;
- void set_layers(uint32_t p_layers);
- uint32_t get_layers() const;
+ void set_navigation_layers(uint32_t p_navigation_layers);
+ uint32_t get_navigation_layers() const;
+
+ void set_navigation_layer_value(int p_layer_number, bool p_value);
+ bool get_navigation_layer_value(int p_layer_number) const;
RID get_region_rid() const;
+ void set_enter_cost(real_t p_enter_cost);
+ real_t get_enter_cost() const;
+
+ void set_travel_cost(real_t p_travel_cost);
+ real_t get_travel_cost() const;
+
void set_navigation_mesh(const Ref<NavigationMesh> &p_navmesh);
Ref<NavigationMesh> get_navigation_mesh() const;
diff --git a/scene/3d/node_3d.cpp b/scene/3d/node_3d.cpp
index a76d57a09f..6e36815f2b 100644
--- a/scene/3d/node_3d.cpp
+++ b/scene/3d/node_3d.cpp
@@ -984,7 +984,7 @@ void Node3D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "rotation", PROPERTY_HINT_RANGE, "-360,360,0.1,or_lesser,or_greater,radians", PROPERTY_USAGE_EDITOR), "set_rotation", "get_rotation");
ADD_PROPERTY(PropertyInfo(Variant::QUATERNION, "quaternion", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR), "set_quaternion", "get_quaternion");
ADD_PROPERTY(PropertyInfo(Variant::BASIS, "basis", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR), "set_basis", "get_basis");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "scale", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR), "set_scale", "get_scale");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "scale", PROPERTY_HINT_LINK, "", PROPERTY_USAGE_EDITOR), "set_scale", "get_scale");
ADD_PROPERTY(PropertyInfo(Variant::INT, "rotation_edit_mode", PROPERTY_HINT_ENUM, "Euler,Quaternion,Basis"), "set_rotation_edit_mode", "get_rotation_edit_mode");
ADD_PROPERTY(PropertyInfo(Variant::INT, "rotation_order", PROPERTY_HINT_ENUM, "XYZ,XZY,YXZ,YZX,ZXY,ZYX"), "set_rotation_order", "get_rotation_order");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "top_level"), "set_as_top_level", "is_set_as_top_level");
diff --git a/scene/3d/occluder_instance_3d.cpp b/scene/3d/occluder_instance_3d.cpp
index f848eaab2e..66d0a8c4e2 100644
--- a/scene/3d/occluder_instance_3d.cpp
+++ b/scene/3d/occluder_instance_3d.cpp
@@ -219,7 +219,7 @@ void QuadOccluder3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_size", "size"), &QuadOccluder3D::set_size);
ClassDB::bind_method(D_METHOD("get_size"), &QuadOccluder3D::get_size);
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "size"), "set_size", "get_size");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "size", PROPERTY_HINT_NONE, "suffix:m"), "set_size", "get_size");
}
QuadOccluder3D::QuadOccluder3D() {
@@ -285,7 +285,7 @@ void BoxOccluder3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_size", "size"), &BoxOccluder3D::set_size);
ClassDB::bind_method(D_METHOD("get_size"), &BoxOccluder3D::get_size);
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "size"), "set_size", "get_size");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "size", PROPERTY_HINT_NONE, "suffix:m"), "set_size", "get_size");
}
BoxOccluder3D::BoxOccluder3D() {
@@ -354,7 +354,7 @@ void SphereOccluder3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_radius", "radius"), &SphereOccluder3D::set_radius);
ClassDB::bind_method(D_METHOD("get_radius"), &SphereOccluder3D::get_radius);
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "radius"), "set_radius", "get_radius");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "radius", PROPERTY_HINT_NONE, "suffix:m"), "set_radius", "get_radius");
}
SphereOccluder3D::SphereOccluder3D() {
@@ -736,7 +736,7 @@ void OccluderInstance3D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "occluder", PROPERTY_HINT_RESOURCE_TYPE, "Occluder3D"), "set_occluder", "get_occluder");
ADD_GROUP("Bake", "bake_");
ADD_PROPERTY(PropertyInfo(Variant::INT, "bake_mask", PROPERTY_HINT_LAYERS_3D_RENDER), "set_bake_mask", "get_bake_mask");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "bake_simplification_distance", PROPERTY_HINT_RANGE, "0.0,2.0,0.01"), "set_bake_simplification_distance", "get_bake_simplification_distance");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "bake_simplification_distance", PROPERTY_HINT_RANGE, "0.0,2.0,0.01,suffix:m"), "set_bake_simplification_distance", "get_bake_simplification_distance");
}
OccluderInstance3D::OccluderInstance3D() {
diff --git a/scene/3d/path_3d.cpp b/scene/3d/path_3d.cpp
index 8c2b1c6889..e13cf6f9c8 100644
--- a/scene/3d/path_3d.cpp
+++ b/scene/3d/path_3d.cpp
@@ -157,10 +157,14 @@ void PathFollow3D::_update_transform(bool p_update_xyz_rot) {
// for a discussion about why not Frenet frame.
t.origin = pos;
-
- if (p_update_xyz_rot && delta_offset != 0) { // Only update rotation if some parameter has changed - i.e. not on addition to scene tree.
- Vector3 t_prev = (pos - c->interpolate_baked(offset - delta_offset, cubic)).normalized();
- Vector3 t_cur = (c->interpolate_baked(offset + delta_offset, cubic) - pos).normalized();
+ if (p_update_xyz_rot && prev_offset != offset) { // Only update rotation if some parameter has changed - i.e. not on addition to scene tree.
+ real_t sample_distance = bi * 0.01;
+ Vector3 t_prev_pos_a = c->interpolate_baked(prev_offset - sample_distance, cubic);
+ Vector3 t_prev_pos_b = c->interpolate_baked(prev_offset + sample_distance, cubic);
+ Vector3 t_cur_pos_a = c->interpolate_baked(offset - sample_distance, cubic);
+ Vector3 t_cur_pos_b = c->interpolate_baked(offset + sample_distance, cubic);
+ Vector3 t_prev = (t_prev_pos_a - t_prev_pos_b).normalized();
+ Vector3 t_cur = (t_cur_pos_a - t_cur_pos_b).normalized();
Vector3 axis = t_prev.cross(t_cur);
real_t dot = t_prev.dot(t_cur);
@@ -303,7 +307,7 @@ void PathFollow3D::_bind_methods() {
}
void PathFollow3D::set_offset(real_t p_offset) {
- delta_offset = p_offset - offset;
+ prev_offset = offset;
offset = p_offset;
if (path) {
diff --git a/scene/3d/path_3d.h b/scene/3d/path_3d.h
index e9ab557693..cb67a044d1 100644
--- a/scene/3d/path_3d.h
+++ b/scene/3d/path_3d.h
@@ -65,7 +65,7 @@ public:
private:
Path3D *path = nullptr;
- real_t delta_offset = 0.0; // Change in offset since last _update_transform.
+ real_t prev_offset = 0.0; // Offset during the last _update_transform.
real_t offset = 0.0;
real_t h_offset = 0.0;
real_t v_offset = 0.0;
diff --git a/scene/3d/physics_body_3d.cpp b/scene/3d/physics_body_3d.cpp
index 982254c94d..30f7a025fa 100644
--- a/scene/3d/physics_body_3d.cpp
+++ b/scene/3d/physics_body_3d.cpp
@@ -261,8 +261,8 @@ void StaticBody3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_physics_material_override"), &StaticBody3D::get_physics_material_override);
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "physics_material_override", PROPERTY_HINT_RESOURCE_TYPE, "PhysicsMaterial"), "set_physics_material_override", "get_physics_material_override");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "constant_linear_velocity"), "set_constant_linear_velocity", "get_constant_linear_velocity");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "constant_angular_velocity"), "set_constant_angular_velocity", "get_constant_angular_velocity");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "constant_linear_velocity", PROPERTY_HINT_NONE, "suffix:m/s"), "set_constant_linear_velocity", "get_constant_linear_velocity");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "constant_angular_velocity", PROPERTY_HINT_NONE, U"radians,suffix:\u00B0/s"), "set_constant_angular_velocity", "get_constant_angular_velocity");
}
StaticBody3D::StaticBody3D(PhysicsServer3D::BodyMode p_mode) :
@@ -1101,7 +1101,7 @@ void RigidDynamicBody3D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "linear_damp_mode", PROPERTY_HINT_ENUM, "Combine,Replace"), "set_linear_damp_mode", "get_linear_damp_mode");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "linear_damp", PROPERTY_HINT_RANGE, "0,100,0.001,or_greater"), "set_linear_damp", "get_linear_damp");
ADD_GROUP("Angular", "angular_");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "angular_velocity", PROPERTY_HINT_NONE, "suffix:rad/s"), "set_angular_velocity", "get_angular_velocity");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "angular_velocity", PROPERTY_HINT_NONE, U"radians,suffix:\u00B0/s"), "set_angular_velocity", "get_angular_velocity");
ADD_PROPERTY(PropertyInfo(Variant::INT, "angular_damp_mode", PROPERTY_HINT_ENUM, "Combine,Replace"), "set_angular_damp_mode", "get_angular_damp_mode");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "angular_damp", PROPERTY_HINT_RANGE, "0,100,0.001,or_greater"), "set_angular_damp", "get_angular_damp");
ADD_GROUP("Constant Forces", "constant_");
@@ -2007,7 +2007,7 @@ void CharacterBody3D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "floor_constant_speed"), "set_floor_constant_speed_enabled", "is_floor_constant_speed_enabled");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "floor_block_on_wall"), "set_floor_block_on_wall_enabled", "is_floor_block_on_wall_enabled");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "floor_max_angle", PROPERTY_HINT_RANGE, "0,180,0.1,radians"), "set_floor_max_angle", "get_floor_max_angle");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "floor_snap_length", PROPERTY_HINT_RANGE, "0,1,0.01,or_greater"), "set_floor_snap_length", "get_floor_snap_length");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "floor_snap_length", PROPERTY_HINT_RANGE, "0,1,0.01,or_greater,suffix:m"), "set_floor_snap_length", "get_floor_snap_length");
ADD_GROUP("Moving Platform", "moving_platform");
ADD_PROPERTY(PropertyInfo(Variant::INT, "moving_platform_apply_velocity_on_leave", PROPERTY_HINT_ENUM, "Always,Upward Only,Never", PROPERTY_USAGE_DEFAULT), "set_moving_platform_apply_velocity_on_leave", "get_moving_platform_apply_velocity_on_leave");
ADD_PROPERTY(PropertyInfo(Variant::INT, "moving_platform_floor_layers", PROPERTY_HINT_LAYERS_2D_PHYSICS), "set_moving_platform_floor_layers", "get_moving_platform_floor_layers");
@@ -2998,8 +2998,8 @@ void PhysicalBone3D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "linear_damp", PROPERTY_HINT_RANGE, "0,100,0.001,or_greater"), "set_linear_damp", "get_linear_damp");
ADD_PROPERTY(PropertyInfo(Variant::INT, "angular_damp_mode", PROPERTY_HINT_ENUM, "Combine,Replace"), "set_angular_damp_mode", "get_angular_damp_mode");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "angular_damp", PROPERTY_HINT_RANGE, "0,100,0.001,or_greater"), "set_angular_damp", "get_angular_damp");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "linear_velocity"), "set_linear_velocity", "get_linear_velocity");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "angular_velocity"), "set_angular_velocity", "get_angular_velocity");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "linear_velocity", PROPERTY_HINT_NONE, "suffix:m/s"), "set_linear_velocity", "get_linear_velocity");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "angular_velocity", PROPERTY_HINT_NONE, U"radians,suffix:\u00B0/s"), "set_angular_velocity", "get_angular_velocity");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "can_sleep"), "set_can_sleep", "is_able_to_sleep");
BIND_ENUM_CONSTANT(DAMP_MODE_COMBINE);
diff --git a/scene/3d/skeleton_3d.cpp b/scene/3d/skeleton_3d.cpp
index ba2029788e..fbd5f31dd5 100644
--- a/scene/3d/skeleton_3d.cpp
+++ b/scene/3d/skeleton_3d.cpp
@@ -326,13 +326,11 @@ void Skeleton3D::_notification(int p_what) {
case NOTIFICATION_INTERNAL_PHYSICS_PROCESS: {
// This is active only if the skeleton animates the physical bones
// and the state of the bone is not active.
- if (Engine::get_singleton()->is_editor_hint()) {
- if (animate_physical_bones) {
- for (int i = 0; i < bones.size(); i += 1) {
- if (bones[i].physical_bone) {
- if (bones[i].physical_bone->is_simulating_physics() == false) {
- bones[i].physical_bone->reset_to_rest_position();
- }
+ if (animate_physical_bones) {
+ for (int i = 0; i < bones.size(); i += 1) {
+ if (bones[i].physical_bone) {
+ if (bones[i].physical_bone->is_simulating_physics() == false) {
+ bones[i].physical_bone->reset_to_rest_position();
}
}
}
diff --git a/scene/3d/skeleton_ik_3d.cpp b/scene/3d/skeleton_ik_3d.cpp
index 55bbba26c3..2182c5ba11 100644
--- a/scene/3d/skeleton_ik_3d.cpp
+++ b/scene/3d/skeleton_ik_3d.cpp
@@ -396,7 +396,7 @@ void SkeletonIK3D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "use_magnet"), "set_use_magnet", "is_using_magnet");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "magnet", PROPERTY_HINT_NONE, "suffix:m"), "set_magnet_position", "get_magnet_position");
ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "target_node"), "set_target_node", "get_target_node");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "min_distance"), "set_min_distance", "get_min_distance");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "min_distance", PROPERTY_HINT_NONE, "suffix:m"), "set_min_distance", "get_min_distance");
ADD_PROPERTY(PropertyInfo(Variant::INT, "max_iterations"), "set_max_iterations", "get_max_iterations");
}
diff --git a/scene/3d/soft_dynamic_body_3d.cpp b/scene/3d/soft_dynamic_body_3d.cpp
index 5816c0650f..d68e7fd527 100644
--- a/scene/3d/soft_dynamic_body_3d.cpp
+++ b/scene/3d/soft_dynamic_body_3d.cpp
@@ -165,7 +165,7 @@ void SoftDynamicBody3D::_get_property_list(List<PropertyInfo> *p_list) const {
p_list->push_back(PropertyInfo(Variant::PACKED_INT32_ARRAY, PNAME("pinned_points")));
for (int i = 0; i < pinned_points_indices_size; ++i) {
- const String prefix = vformat("%s/%d", PNAME("attachments"), i);
+ const String prefix = vformat("%s/%d/", PNAME("attachments"), i);
p_list->push_back(PropertyInfo(Variant::INT, prefix + PNAME("point_index")));
p_list->push_back(PropertyInfo(Variant::NODE_PATH, prefix + PNAME("spatial_attachment_path")));
p_list->push_back(PropertyInfo(Variant::VECTOR3, prefix + PNAME("offset")));
diff --git a/scene/3d/sprite_3d.cpp b/scene/3d/sprite_3d.cpp
index 8cb5081047..55b55d924c 100644
--- a/scene/3d/sprite_3d.cpp
+++ b/scene/3d/sprite_3d.cpp
@@ -333,11 +333,11 @@ void SpriteBase3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("_im_update"), &SpriteBase3D::_im_update);
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "centered"), "set_centered", "is_centered");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "offset"), "set_offset", "get_offset");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "offset", PROPERTY_HINT_NONE, "suffix:px"), "set_offset", "get_offset");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "flip_h"), "set_flip_h", "is_flipped_h");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "flip_v"), "set_flip_v", "is_flipped_v");
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "modulate"), "set_modulate", "get_modulate");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "pixel_size", PROPERTY_HINT_RANGE, "0.0001,128,0.0001"), "set_pixel_size", "get_pixel_size");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "pixel_size", PROPERTY_HINT_RANGE, "0.0001,128,0.0001,suffix:m"), "set_pixel_size", "get_pixel_size");
ADD_PROPERTY(PropertyInfo(Variant::INT, "axis", PROPERTY_HINT_ENUM, "X-Axis,Y-Axis,Z-Axis"), "set_axis", "get_axis");
ADD_GROUP("Flags", "");
ADD_PROPERTY(PropertyInfo(Variant::INT, "billboard", PROPERTY_HINT_ENUM, "Disabled,Enabled,Y-Billboard"), "set_billboard_mode", "get_billboard_mode");
@@ -792,10 +792,10 @@ void Sprite3D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "hframes", PROPERTY_HINT_RANGE, "1,16384,1"), "set_hframes", "get_hframes");
ADD_PROPERTY(PropertyInfo(Variant::INT, "vframes", PROPERTY_HINT_RANGE, "1,16384,1"), "set_vframes", "get_vframes");
ADD_PROPERTY(PropertyInfo(Variant::INT, "frame"), "set_frame", "get_frame");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "frame_coords", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR), "set_frame_coords", "get_frame_coords");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "frame_coords", PROPERTY_HINT_NONE, "suffix:px", PROPERTY_USAGE_EDITOR), "set_frame_coords", "get_frame_coords");
ADD_GROUP("Region", "region_");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "region_enabled"), "set_region_enabled", "is_region_enabled");
- ADD_PROPERTY(PropertyInfo(Variant::RECT2, "region_rect"), "set_region_rect", "get_region_rect");
+ ADD_PROPERTY(PropertyInfo(Variant::RECT2, "region_rect", PROPERTY_HINT_NONE, "suffix:px"), "set_region_rect", "get_region_rect");
ADD_SIGNAL(MethodInfo("frame_changed"));
ADD_SIGNAL(MethodInfo("texture_changed"));
diff --git a/scene/3d/visual_instance_3d.cpp b/scene/3d/visual_instance_3d.cpp
index e40c8bfa2b..6df50bc491 100644
--- a/scene/3d/visual_instance_3d.cpp
+++ b/scene/3d/visual_instance_3d.cpp
@@ -466,10 +466,10 @@ void GeometryInstance3D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "gi_lightmap_scale", PROPERTY_HINT_ENUM, String::utf8("1×,2×,4×,8×")), "set_lightmap_scale", "get_lightmap_scale");
ADD_GROUP("Visibility Range", "visibility_range_");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "visibility_range_begin", PROPERTY_HINT_RANGE, "0.0,4096.0,0.01"), "set_visibility_range_begin", "get_visibility_range_begin");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "visibility_range_begin_margin", PROPERTY_HINT_RANGE, "0.0,4096.0,0.01"), "set_visibility_range_begin_margin", "get_visibility_range_begin_margin");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "visibility_range_end", PROPERTY_HINT_RANGE, "0.0,4096.0,0.01"), "set_visibility_range_end", "get_visibility_range_end");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "visibility_range_end_margin", PROPERTY_HINT_RANGE, "0.0,4096.0,0.01"), "set_visibility_range_end_margin", "get_visibility_range_end_margin");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "visibility_range_begin", PROPERTY_HINT_RANGE, "0.0,4096.0,0.01,suffix:m"), "set_visibility_range_begin", "get_visibility_range_begin");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "visibility_range_begin_margin", PROPERTY_HINT_RANGE, "0.0,4096.0,0.01,suffix:m"), "set_visibility_range_begin_margin", "get_visibility_range_begin_margin");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "visibility_range_end", PROPERTY_HINT_RANGE, "0.0,4096.0,0.01,suffix:m"), "set_visibility_range_end", "get_visibility_range_end");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "visibility_range_end_margin", PROPERTY_HINT_RANGE, "0.0,4096.0,0.01,suffix:m"), "set_visibility_range_end_margin", "get_visibility_range_end_margin");
ADD_PROPERTY(PropertyInfo(Variant::INT, "visibility_range_fade_mode", PROPERTY_HINT_ENUM, "Disabled,Self,Dependencies"), "set_visibility_range_fade_mode", "get_visibility_range_fade_mode");
//ADD_SIGNAL( MethodInfo("visibility_changed"));
diff --git a/scene/3d/voxel_gi.cpp b/scene/3d/voxel_gi.cpp
index 29e495ce1b..d81b59b3fc 100644
--- a/scene/3d/voxel_gi.cpp
+++ b/scene/3d/voxel_gi.cpp
@@ -476,7 +476,7 @@ void VoxelGI::_bind_methods() {
ClassDB::set_method_flags(get_class_static(), _scs_create("debug_bake"), METHOD_FLAGS_DEFAULT | METHOD_FLAG_EDITOR);
ADD_PROPERTY(PropertyInfo(Variant::INT, "subdiv", PROPERTY_HINT_ENUM, "64,128,256,512"), "set_subdiv", "get_subdiv");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "extents"), "set_extents", "get_extents");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "extents", PROPERTY_HINT_NONE, "suffix:m"), "set_extents", "get_extents");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "VoxelGIData", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_DO_NOT_SHARE_ON_DUPLICATE), "set_probe_data", "get_probe_data");
BIND_ENUM_CONSTANT(SUBDIV_64);
diff --git a/scene/animation/animation_blend_tree.cpp b/scene/animation/animation_blend_tree.cpp
index 17a99ed034..1d537837bd 100644
--- a/scene/animation/animation_blend_tree.cpp
+++ b/scene/animation/animation_blend_tree.cpp
@@ -375,14 +375,14 @@ void AnimationNodeOneShot::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "mix_mode", PROPERTY_HINT_ENUM, "Blend,Add"), "set_mix_mode", "get_mix_mode");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "fadein_time", PROPERTY_HINT_RANGE, "0,60,0.01,or_greater"), "set_fadein_time", "get_fadein_time");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "fadeout_time", PROPERTY_HINT_RANGE, "0,60,0.01,or_greater"), "set_fadeout_time", "get_fadeout_time");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "fadein_time", PROPERTY_HINT_RANGE, "0,60,0.01,or_greater,suffix:s"), "set_fadein_time", "get_fadein_time");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "fadeout_time", PROPERTY_HINT_RANGE, "0,60,0.01,or_greater,suffix:s"), "set_fadeout_time", "get_fadeout_time");
ADD_GROUP("Auto Restart", "autorestart_");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "autorestart"), "set_autorestart", "has_autorestart");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "autorestart_delay", PROPERTY_HINT_RANGE, "0,60,0.01,or_greater"), "set_autorestart_delay", "get_autorestart_delay");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "autorestart_random_delay", PROPERTY_HINT_RANGE, "0,60,0.01,or_greater"), "set_autorestart_random_delay", "get_autorestart_random_delay");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "autorestart_delay", PROPERTY_HINT_RANGE, "0,60,0.01,or_greater,suffix:s"), "set_autorestart_delay", "get_autorestart_delay");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "autorestart_random_delay", PROPERTY_HINT_RANGE, "0,60,0.01,or_greater,suffix:s"), "set_autorestart_random_delay", "get_autorestart_random_delay");
ADD_GROUP("", "");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "sync"), "set_use_sync", "is_using_sync");
@@ -825,7 +825,7 @@ void AnimationNodeTransition::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_cross_fade_time"), &AnimationNodeTransition::get_cross_fade_time);
ADD_PROPERTY(PropertyInfo(Variant::INT, "input_count", PROPERTY_HINT_RANGE, "0,64,1", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED), "set_enabled_inputs", "get_enabled_inputs");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "xfade_time", PROPERTY_HINT_RANGE, "0,120,0.01"), "set_cross_fade_time", "get_cross_fade_time");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "xfade_time", PROPERTY_HINT_RANGE, "0,120,0.01,suffix:s"), "set_cross_fade_time", "get_cross_fade_time");
for (int i = 0; i < MAX_INPUTS; i++) {
ADD_PROPERTYI(PropertyInfo(Variant::STRING, "input_" + itos(i) + "/name", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_INTERNAL), "set_input_caption", "get_input_caption", i);
diff --git a/scene/animation/animation_node_state_machine.cpp b/scene/animation/animation_node_state_machine.cpp
index fcc4548929..8dcf538b8f 100644
--- a/scene/animation/animation_node_state_machine.cpp
+++ b/scene/animation/animation_node_state_machine.cpp
@@ -118,7 +118,7 @@ void AnimationNodeStateMachineTransition::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "switch_mode", PROPERTY_HINT_ENUM, "Immediate,Sync,At End"), "set_switch_mode", "get_switch_mode");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "auto_advance"), "set_auto_advance", "has_auto_advance");
ADD_PROPERTY(PropertyInfo(Variant::STRING_NAME, "advance_condition"), "set_advance_condition", "get_advance_condition");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "xfade_time", PROPERTY_HINT_RANGE, "0,240,0.01"), "set_xfade_time", "get_xfade_time");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "xfade_time", PROPERTY_HINT_RANGE, "0,240,0.01,suffix:s"), "set_xfade_time", "get_xfade_time");
ADD_PROPERTY(PropertyInfo(Variant::INT, "priority", PROPERTY_HINT_RANGE, "0,32,1"), "set_priority", "get_priority");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "disabled"), "set_disabled", "is_disabled");
@@ -435,7 +435,7 @@ double AnimationNodeStateMachinePlayback::process(AnimationNodeStateMachine *p_s
// handles start_node: if previous state machine is pointing to a node inside the current state machine, starts the current machine from start_node to prev_local_to
if (p_state_machine->start_node == current && p_state_machine->transitions[i].local_from == current) {
- if (p_state_machine->prev_state_machine.is_valid()) {
+ if (p_state_machine->prev_state_machine != nullptr) {
Ref<AnimationNodeStateMachinePlayback> prev_playback = p_state_machine->prev_state_machine->get_parameter("playback");
if (prev_playback.is_valid()) {
@@ -471,9 +471,9 @@ double AnimationNodeStateMachinePlayback::process(AnimationNodeStateMachine *p_s
}
if (next == p_state_machine->end_node) {
- Ref<AnimationNodeStateMachine> prev_state_machine = p_state_machine->prev_state_machine;
+ AnimationNodeStateMachine *prev_state_machine = p_state_machine->prev_state_machine;
- if (prev_state_machine.is_valid()) {
+ if (prev_state_machine != nullptr) {
Ref<AnimationNodeStateMachinePlayback> prev_playback = prev_state_machine->get_parameter("playback");
if (prev_playback.is_valid()) {
@@ -655,7 +655,7 @@ void AnimationNodeStateMachine::add_node(const StringName &p_name, Ref<Animation
if (anodesm.is_valid()) {
anodesm->state_machine_name = p_name;
- anodesm->prev_state_machine = (Ref<AnimationNodeStateMachine>)this;
+ anodesm->prev_state_machine = this;
}
emit_changed();
@@ -821,7 +821,7 @@ void AnimationNodeStateMachine::_rename_transition(const StringName &p_name, con
void AnimationNodeStateMachine::get_node_list(List<StringName> *r_nodes) const {
List<StringName> nodes;
for (const KeyValue<StringName, State> &E : states) {
- if (E.key == end_node && !prev_state_machine.is_valid()) {
+ if (E.key == end_node && prev_state_machine == nullptr) {
continue;
}
@@ -834,7 +834,7 @@ void AnimationNodeStateMachine::get_node_list(List<StringName> *r_nodes) const {
}
}
-Ref<AnimationNodeStateMachine> AnimationNodeStateMachine::get_prev_state_machine() const {
+AnimationNodeStateMachine *AnimationNodeStateMachine::get_prev_state_machine() const {
return prev_state_machine;
}
@@ -862,10 +862,10 @@ int AnimationNodeStateMachine::find_transition(const StringName &p_from, const S
return -1;
}
-bool AnimationNodeStateMachine::_can_connect(const StringName &p_name, Vector<Ref<AnimationNodeStateMachine>> p_parents) const {
+bool AnimationNodeStateMachine::_can_connect(const StringName &p_name, Vector<AnimationNodeStateMachine *> p_parents) {
if (p_parents.is_empty()) {
- Ref<AnimationNodeStateMachine> prev = (Ref<AnimationNodeStateMachine>)this;
- while (prev.is_valid()) {
+ AnimationNodeStateMachine *prev = this;
+ while (prev != nullptr) {
p_parents.push_back(prev);
prev = prev->prev_state_machine;
}
@@ -874,7 +874,7 @@ bool AnimationNodeStateMachine::_can_connect(const StringName &p_name, Vector<Re
if (states.has(p_name)) {
Ref<AnimationNodeStateMachine> anodesm = states[p_name].node;
- if (anodesm.is_valid() && p_parents.find(anodesm) != -1) {
+ if (anodesm.is_valid() && p_parents.find(anodesm.ptr()) != -1) {
return false;
}
@@ -889,7 +889,7 @@ bool AnimationNodeStateMachine::_can_connect(const StringName &p_name, Vector<Re
}
if (path[0] == "..") {
- if (prev_state_machine.is_valid()) {
+ if (prev_state_machine != nullptr) {
return prev_state_machine->_can_connect(name.replace_first("../", ""), p_parents);
}
} else if (states.has(path[0])) {
diff --git a/scene/animation/animation_node_state_machine.h b/scene/animation/animation_node_state_machine.h
index 9eeac6a183..20f2d6f858 100644
--- a/scene/animation/animation_node_state_machine.h
+++ b/scene/animation/animation_node_state_machine.h
@@ -166,7 +166,7 @@ private:
StringName playback = "playback";
StringName state_machine_name;
- Ref<AnimationNodeStateMachine> prev_state_machine;
+ AnimationNodeStateMachine *prev_state_machine = nullptr;
bool updating_transitions = false;
Vector2 graph_offset;
@@ -174,7 +174,7 @@ private:
void _tree_changed();
void _remove_transition(const Ref<AnimationNodeStateMachineTransition> p_transition);
void _rename_transition(const StringName &p_name, const StringName &p_new_name);
- bool _can_connect(const StringName &p_name, const Vector<Ref<AnimationNodeStateMachine>> p_parents = Vector<Ref<AnimationNodeStateMachine>>()) const;
+ bool _can_connect(const StringName &p_name, Vector<AnimationNodeStateMachine *> p_parents = Vector<AnimationNodeStateMachine *>());
StringName _get_shortest_path(const StringName &p_path) const;
protected:
@@ -221,7 +221,7 @@ public:
bool can_edit_node(const StringName &p_name) const;
- Ref<AnimationNodeStateMachine> get_prev_state_machine() const;
+ AnimationNodeStateMachine *get_prev_state_machine() const;
void set_graph_offset(const Vector2 &p_offset);
Vector2 get_graph_offset() const;
diff --git a/scene/animation/animation_player.cpp b/scene/animation/animation_player.cpp
index 921b59748c..2afe9ac35f 100644
--- a/scene/animation/animation_player.cpp
+++ b/scene/animation/animation_player.cpp
@@ -283,6 +283,9 @@ void AnimationPlayer::_ensure_node_caches(AnimationData *p_anim, Node *p_root_ov
setup_pass++;
for (int i = 0; i < a->get_track_count(); i++) {
+ if (!a->track_is_enabled(i)) {
+ continue;
+ }
p_anim->node_cache.write[i] = nullptr;
Ref<Resource> resource;
Vector<StringName> leftover_path;
@@ -1909,7 +1912,7 @@ NodePath AnimationPlayer::get_root() const {
void AnimationPlayer::get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const {
String pf = p_function;
- if (p_idx == 0 && (p_function == "play" || p_function == "play_backwards" || p_function == "remove_animation" || p_function == "has_animation" || p_function == "queue")) {
+ if (p_idx == 0 && (p_function == "play" || p_function == "play_backwards" || p_function == "has_animation" || p_function == "queue")) {
List<StringName> al;
get_animation_list(&al);
for (const StringName &name : al) {
@@ -1991,8 +1994,8 @@ Ref<AnimatedValuesBackup> AnimationPlayer::apply_reset(bool p_user_initiated) {
Ref<AnimationLibrary> al;
al.instantiate();
al->add_animation(SceneStringNames::get_singleton()->RESET, reset_anim);
- aux_player->add_animation_library("default", al);
- aux_player->set_assigned_animation("default/" + SceneStringNames::get_singleton()->RESET);
+ aux_player->add_animation_library("", al);
+ aux_player->set_assigned_animation(SceneStringNames::get_singleton()->RESET);
// Forcing the use of the original root because the scene where original player belongs may be not the active one
Node *root = get_node(get_root());
Ref<AnimatedValuesBackup> old_values = aux_player->backup_animated_values(root);
@@ -2095,7 +2098,7 @@ void AnimationPlayer::_bind_methods() {
ADD_GROUP("Playback Options", "playback_");
ADD_PROPERTY(PropertyInfo(Variant::INT, "playback_process_mode", PROPERTY_HINT_ENUM, "Physics,Idle,Manual"), "set_process_callback", "get_process_callback");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "playback_default_blend_time", PROPERTY_HINT_RANGE, "0,4096,0.01"), "set_default_blend_time", "get_default_blend_time");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "playback_default_blend_time", PROPERTY_HINT_RANGE, "0,4096,0.01,suffix:s"), "set_default_blend_time", "get_default_blend_time");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "playback_active", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NONE), "set_active", "is_active");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "playback_speed", PROPERTY_HINT_RANGE, "-64,64,0.01"), "set_speed_scale", "get_speed_scale");
ADD_PROPERTY(PropertyInfo(Variant::INT, "method_call_mode", PROPERTY_HINT_ENUM, "Deferred,Immediate"), "set_method_call_mode", "get_method_call_mode");
diff --git a/scene/animation/animation_player.h b/scene/animation/animation_player.h
index 7e4bda14e5..d3eb37a345 100644
--- a/scene/animation/animation_player.h
+++ b/scene/animation/animation_player.h
@@ -155,8 +155,8 @@ private:
static uint32_t hash(const TrackNodeCacheKey &p_key) {
uint32_t h = hash_one_uint64(p_key.id);
- h = hash_djb2_one_32(p_key.bone_idx, h);
- return hash_djb2_one_32(p_key.blend_shape_idx, h);
+ h = hash_murmur3_one_32(p_key.bone_idx, h);
+ return hash_fmix32(hash_murmur3_one_32(p_key.blend_shape_idx, h));
}
inline bool operator==(const TrackNodeCacheKey &p_right) const {
diff --git a/scene/animation/animation_tree.cpp b/scene/animation/animation_tree.cpp
index d34e8db093..bcd49d75fa 100644
--- a/scene/animation/animation_tree.cpp
+++ b/scene/animation/animation_tree.cpp
@@ -276,7 +276,7 @@ double AnimationNode::_blend_node(const StringName &p_subpath, const Vector<Stri
String new_path;
AnimationNode *new_parent;
- //this is the slowest part of processing, but as strings process in powers of 2, and the paths always exist, it will not result in that many allocations
+ // This is the slowest part of processing, but as strings process in powers of 2, and the paths always exist, it will not result in that many allocations.
if (p_new_parent) {
new_parent = p_new_parent;
new_path = String(base_path) + String(p_subpath) + "/";
@@ -286,6 +286,9 @@ double AnimationNode::_blend_node(const StringName &p_subpath, const Vector<Stri
new_path = String(parent->base_path) + String(p_subpath) + "/";
}
+ // If tracks for blending don't exist for one of the animations, Rest or RESET animation is blended as init animation instead.
+ // Then, blend weight is 0 means that the init animation blend weight is 1.
+ // Therefore, the blending process must be executed even if the blend weight is 0.
if (!p_seek && p_optimize && !any_valid) {
return p_node->_pre_process(new_path, new_parent, state, 0, p_seek, p_seek_root, p_connections);
}
@@ -919,7 +922,6 @@ void AnimationTree::_process_graph(double p_delta) {
state.valid = true;
state.invalid_reasons = "";
state.animation_states.clear(); //will need to be re-created
- state.valid = true;
state.player = player;
state.last_pass = process_pass;
state.tree = this;
@@ -966,6 +968,10 @@ void AnimationTree::_process_graph(double p_delta) {
#endif // _3D_DISABLED
for (int i = 0; i < a->get_track_count(); i++) {
+ if (!a->track_is_enabled(i)) {
+ continue;
+ }
+
NodePath path = a->track_get_path(i);
ERR_CONTINUE(!track_cache.has(path));
@@ -1324,12 +1330,21 @@ void AnimationTree::_process_graph(double p_delta) {
if (blend < CMP_EPSILON) {
continue; //nothing to blend
}
- List<int> indices;
- a->value_track_get_key_indices(i, time, delta, &indices, pingponged);
- for (int &F : indices) {
- Variant value = a->track_get_key_value(i, F);
+ if (seeked) {
+ int idx = a->track_find_key(i, time);
+ if (idx < 0) {
+ continue;
+ }
+ Variant value = a->track_get_key_value(i, idx);
t->object->set_indexed(t->subpath, value);
+ } else {
+ List<int> indices;
+ a->value_track_get_key_indices(i, time, delta, &indices, pingponged);
+ for (int &F : indices) {
+ Variant value = a->track_get_key_value(i, F);
+ t->object->set_indexed(t->subpath, value);
+ }
}
}
@@ -1338,20 +1353,27 @@ void AnimationTree::_process_graph(double p_delta) {
if (blend < CMP_EPSILON) {
continue; //nothing to blend
}
- if (!seeked && Math::is_zero_approx(delta)) {
- continue;
- }
TrackCacheMethod *t = static_cast<TrackCacheMethod *>(track);
- List<int> indices;
-
- a->method_track_get_key_indices(i, time, delta, &indices, pingponged);
-
- for (int &F : indices) {
- StringName method = a->method_track_get_name(i, F);
- Vector<Variant> params = a->method_track_get_params(i, F);
+ if (seeked) {
+ int idx = a->track_find_key(i, time);
+ if (idx < 0) {
+ continue;
+ }
+ StringName method = a->method_track_get_name(i, idx);
+ Vector<Variant> params = a->method_track_get_params(i, idx);
if (can_call) {
- _call_object(t->object, method, params, true);
+ _call_object(t->object, method, params, false);
+ }
+ } else {
+ List<int> indices;
+ a->method_track_get_key_indices(i, time, delta, &indices, pingponged);
+ for (int &F : indices) {
+ StringName method = a->method_track_get_name(i, F);
+ Vector<Variant> params = a->method_track_get_params(i, F);
+ if (can_call) {
+ _call_object(t->object, method, params, true);
+ }
}
}
} break;
diff --git a/scene/animation/root_motion_view.cpp b/scene/animation/root_motion_view.cpp
index 3192f5f7cd..47f08219a9 100644
--- a/scene/animation/root_motion_view.cpp
+++ b/scene/animation/root_motion_view.cpp
@@ -183,8 +183,8 @@ void RootMotionView::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "animation_path", PROPERTY_HINT_NODE_PATH_VALID_TYPES, "AnimationTree"), "set_animation_path", "get_animation_path");
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "color"), "set_color", "get_color");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "cell_size", PROPERTY_HINT_RANGE, "0.1,16,0.01,or_greater"), "set_cell_size", "get_cell_size");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "radius", PROPERTY_HINT_RANGE, "0.1,16,0.01,or_greater"), "set_radius", "get_radius");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "cell_size", PROPERTY_HINT_RANGE, "0.1,16,0.01,or_greater,suffix:m"), "set_cell_size", "get_cell_size");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "radius", PROPERTY_HINT_RANGE, "0.1,16,0.01,or_greater,suffix:m"), "set_radius", "get_radius");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "zero_y"), "set_zero_y", "get_zero_y");
}
diff --git a/scene/gui/button.cpp b/scene/gui/button.cpp
index c54897035a..1371c9cd57 100644
--- a/scene/gui/button.cpp
+++ b/scene/gui/button.cpp
@@ -35,7 +35,7 @@
Size2 Button::get_minimum_size() const {
Size2 minsize = text_buf->get_size();
- if (clip_text) {
+ if (clip_text || overrun_behavior != TextServer::OVERRUN_NO_TRIMMING) {
minsize.width = 0;
}
@@ -292,9 +292,9 @@ void Button::_notification(int p_what) {
icon_ofs.x = 0.0;
}
int text_clip = size.width - style->get_minimum_size().width - icon_ofs.width;
- text_buf->set_width(clip_text ? text_clip : -1);
+ text_buf->set_width((clip_text || overrun_behavior != TextServer::OVERRUN_NO_TRIMMING) ? text_clip : -1);
- int text_width = MAX(1, clip_text ? MIN(text_clip, text_buf->get_size().x) : text_buf->get_size().x);
+ int text_width = MAX(1, (clip_text || overrun_behavior != TextServer::OVERRUN_NO_TRIMMING) ? MIN(text_clip, text_buf->get_size().x) : text_buf->get_size().x);
if (_internal_margin[SIDE_LEFT] > 0) {
text_clip -= _internal_margin[SIDE_LEFT] + get_theme_constant(SNAME("h_separation"));
@@ -364,6 +364,21 @@ void Button::_shape() {
text_buf->set_direction((TextServer::Direction)text_direction);
}
text_buf->add_string(xl_text, font, font_size, opentype_features, (!language.is_empty()) ? language : TranslationServer::get_singleton()->get_tool_locale());
+ text_buf->set_text_overrun_behavior(overrun_behavior);
+}
+
+void Button::set_text_overrun_behavior(TextServer::OverrunBehavior p_behavior) {
+ if (overrun_behavior != p_behavior) {
+ overrun_behavior = p_behavior;
+ _shape();
+
+ update();
+ update_minimum_size();
+ }
+}
+
+TextServer::OverrunBehavior Button::get_text_overrun_behavior() const {
+ return overrun_behavior;
}
void Button::set_text(const String &p_text) {
@@ -550,6 +565,8 @@ void Button::_get_property_list(List<PropertyInfo> *p_list) const {
void Button::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_text", "text"), &Button::set_text);
ClassDB::bind_method(D_METHOD("get_text"), &Button::get_text);
+ ClassDB::bind_method(D_METHOD("set_text_overrun_behavior", "overrun_behavior"), &Button::set_text_overrun_behavior);
+ ClassDB::bind_method(D_METHOD("get_text_overrun_behavior"), &Button::get_text_overrun_behavior);
ClassDB::bind_method(D_METHOD("set_text_direction", "direction"), &Button::set_text_direction);
ClassDB::bind_method(D_METHOD("get_text_direction"), &Button::get_text_direction);
ClassDB::bind_method(D_METHOD("set_opentype_feature", "tag", "value"), &Button::set_opentype_feature);
@@ -577,6 +594,7 @@ void Button::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "flat"), "set_flat", "is_flat");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "clip_text"), "set_clip_text", "get_clip_text");
ADD_PROPERTY(PropertyInfo(Variant::INT, "alignment", PROPERTY_HINT_ENUM, "Left,Center,Right"), "set_text_alignment", "get_text_alignment");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "text_overrun_behavior", PROPERTY_HINT_ENUM, "Trim Nothing,Trim Characters,Trim Words,Ellipsis,Word Ellipsis"), "set_text_overrun_behavior", "get_text_overrun_behavior");
ADD_PROPERTY(PropertyInfo(Variant::INT, "icon_alignment", PROPERTY_HINT_ENUM, "Left,Center,Right"), "set_icon_alignment", "get_icon_alignment");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "expand_icon"), "set_expand_icon", "is_expand_icon");
}
diff --git a/scene/gui/button.h b/scene/gui/button.h
index 1abf86c986..a1d71195cb 100644
--- a/scene/gui/button.h
+++ b/scene/gui/button.h
@@ -46,6 +46,7 @@ private:
Dictionary opentype_features;
String language;
TextDirection text_direction = TEXT_DIRECTION_AUTO;
+ TextServer::OverrunBehavior overrun_behavior = TextServer::OVERRUN_NO_TRIMMING;
Ref<Texture2D> icon;
bool expand_icon = false;
@@ -71,6 +72,9 @@ public:
void set_text(const String &p_text);
String get_text() const;
+ void set_text_overrun_behavior(TextServer::OverrunBehavior p_behavior);
+ TextServer::OverrunBehavior get_text_overrun_behavior() const;
+
void set_text_direction(TextDirection p_text_direction);
TextDirection get_text_direction() const;
diff --git a/scene/gui/color_picker.cpp b/scene/gui/color_picker.cpp
index 6f7ad94139..28d645e8f6 100644
--- a/scene/gui/color_picker.cpp
+++ b/scene/gui/color_picker.cpp
@@ -31,6 +31,7 @@
#include "color_picker.h"
#include "core/input/input.h"
+#include "core/math/color.h"
#include "core/os/keyboard.h"
#include "core/os/os.h"
#include "scene/main/window.h"
@@ -39,6 +40,9 @@
#include "editor/editor_settings.h"
#endif
+#include "thirdparty/misc/ok_color.h"
+#include "thirdparty/misc/ok_color_shader.h"
+
List<Color> ColorPicker::preset_cache;
void ColorPicker::_notification(int p_what) {
@@ -102,6 +106,7 @@ void ColorPicker::_notification(int p_what) {
Ref<Shader> ColorPicker::wheel_shader;
Ref<Shader> ColorPicker::circle_shader;
+Ref<Shader> ColorPicker::circle_ok_color_shader;
void ColorPicker::init_shaders() {
wheel_shader.instantiate();
@@ -152,11 +157,36 @@ void fragment() {
COLOR = vec4(mix(vec3(1.0), clamp(abs(fract(vec3((a - TAU) / TAU) + vec3(1.0, 2.0 / 3.0, 1.0 / 3.0)) * 6.0 - vec3(3.0)) - vec3(1.0), 0.0, 1.0), ((float(sqrt(x * x + y * y)) * 2.0)) / 1.0) * vec3(v), (b + b2 + b3 + b4) / 4.00);
})");
+
+ circle_ok_color_shader.instantiate();
+ circle_ok_color_shader->set_code(OK_COLOR_SHADER + R"(
+// ColorPicker ok color hsv circle shader.
+
+uniform float v = 1.0;
+
+void fragment() {
+ float x = UV.x - 0.5;
+ float y = UV.y - 0.5;
+ x += 0.001;
+ y += 0.001;
+ float b = float(sqrt(x * x + y * y) < 0.5);
+ x -= 0.002;
+ float b2 = float(sqrt(x * x + y * y) < 0.5);
+ y -= 0.002;
+ float b3 = float(sqrt(x * x + y * y) < 0.5);
+ x += 0.002;
+ float b4 = float(sqrt(x * x + y * y) < 0.5);
+ float s = sqrt(x * x + y * y);
+ float h = atan(y, x) / (2.0*M_PI);
+ vec3 col = okhsl_to_srgb(vec3(h, s, v));
+ COLOR = vec4(col, (b + b2 + b3 + b4) / 4.00);
+})");
}
void ColorPicker::finish_shaders() {
wheel_shader.unref();
circle_shader.unref();
+ circle_ok_color_shader.unref();
}
void ColorPicker::set_focus_on_line_edit() {
@@ -166,8 +196,12 @@ void ColorPicker::set_focus_on_line_edit() {
void ColorPicker::_update_controls() {
const char *rgb[3] = { "R", "G", "B" };
const char *hsv[3] = { "H", "S", "V" };
-
- if (hsv_mode_enabled) {
+ const char *hsl[3] = { "H", "S", "L" };
+ if (hsv_mode_enabled && picker_type == SHAPE_OKHSL_CIRCLE) {
+ for (int i = 0; i < 3; i++) {
+ labels[i]->set_text(hsl[i]);
+ }
+ } else if (hsv_mode_enabled && picker_type != SHAPE_OKHSL_CIRCLE) {
for (int i = 0; i < 3; i++) {
labels[i]->set_text(hsv[i]);
}
@@ -176,14 +210,23 @@ void ColorPicker::_update_controls() {
labels[i]->set_text(rgb[i]);
}
}
-
+ if (picker_type == SHAPE_OKHSL_CIRCLE) {
+ btn_hsv->set_text(RTR("OKHSL"));
+ } else {
+ btn_hsv->set_text(RTR("HSV"));
+ }
if (hsv_mode_enabled) {
set_raw_mode(false);
+ set_hsv_mode(true);
btn_raw->set_disabled(true);
} else if (raw_mode_enabled) {
+ set_raw_mode(true);
set_hsv_mode(false);
+ btn_raw->set_disabled(false);
btn_hsv->set_disabled(true);
} else {
+ set_raw_mode(false);
+ set_hsv_mode(false);
btn_raw->set_disabled(false);
btn_hsv->set_disabled(false);
}
@@ -236,8 +279,15 @@ void ColorPicker::_update_controls() {
wheel_edit->show();
w_edit->show();
uv_edit->hide();
-
wheel->set_material(circle_mat);
+ circle_mat->set_shader(circle_shader);
+ break;
+ case SHAPE_OKHSL_CIRCLE:
+ wheel_edit->show();
+ w_edit->show();
+ uv_edit->hide();
+ wheel->set_material(circle_mat);
+ circle_mat->set_shader(circle_ok_color_shader);
break;
default: {
}
@@ -246,11 +296,17 @@ void ColorPicker::_update_controls() {
void ColorPicker::_set_pick_color(const Color &p_color, bool p_update_sliders) {
color = p_color;
- if (color != last_hsv) {
- h = color.get_h();
- s = color.get_s();
- v = color.get_v();
- last_hsv = color;
+ if (color != last_color) {
+ if (picker_type == SHAPE_OKHSL_CIRCLE) {
+ h = color.get_ok_hsl_h();
+ s = color.get_ok_hsl_s();
+ v = color.get_ok_hsl_l();
+ } else {
+ h = color.get_h();
+ s = color.get_s();
+ v = color.get_v();
+ }
+ last_color = color;
}
if (!is_inside_tree()) {
@@ -301,10 +357,13 @@ void ColorPicker::_value_changed(double) {
h = scroll[0]->get_value() / 360.0;
s = scroll[1]->get_value() / 100.0;
v = scroll[2]->get_value() / 100.0;
- color.set_hsv(h, s, v, scroll[3]->get_value() / 255.0);
-
- last_hsv = color;
+ if (picker_type == SHAPE_OKHSL_CIRCLE) {
+ color.set_ok_hsl(h, s, v, Math::round(scroll[3]->get_value() / 255.0));
+ } else {
+ color.set_hsv(h, s, v, Math::round(scroll[3]->get_value() / 255.0));
+ }
+ last_color = color;
} else {
for (int i = 0; i < 4; i++) {
color.components[i] = scroll[i]->get_value() / (raw_mode_enabled ? 1.0 : 255.0);
@@ -342,7 +401,6 @@ void ColorPicker::_update_color(bool p_update_sliders) {
for (int i = 0; i < 4; i++) {
scroll[i]->set_step(1.0);
}
-
scroll[0]->set_max(359);
scroll[0]->set_value(h * 360.0);
scroll[1]->set_max(100);
@@ -350,7 +408,7 @@ void ColorPicker::_update_color(bool p_update_sliders) {
scroll[2]->set_max(100);
scroll[2]->set_value(v * 100.0);
scroll[3]->set_max(255);
- scroll[3]->set_value(color.components[3] * 255.0);
+ scroll[3]->set_value(Math::round(color.components[3] * 255.0));
} else {
for (int i = 0; i < 4; i++) {
if (raw_mode_enabled) {
@@ -362,7 +420,7 @@ void ColorPicker::_update_color(bool p_update_sliders) {
scroll[i]->set_value(color.components[i]);
} else {
scroll[i]->set_step(1);
- const float byte_value = color.components[i] * 255.0;
+ const float byte_value = Math::round(color.components[i] * 255.0);
scroll[i]->set_max(next_power_of_2(MAX(255, byte_value)) - 1);
scroll[i]->set_value(byte_value);
}
@@ -426,7 +484,6 @@ Color ColorPicker::get_pick_color() const {
void ColorPicker::set_picker_shape(PickerShapeType p_picker_type) {
ERR_FAIL_INDEX(p_picker_type, SHAPE_MAX);
picker_type = p_picker_type;
-
_update_controls();
_update_color();
}
@@ -702,7 +759,7 @@ void ColorPicker::_hsv_draw(int p_which, Control *c) {
Ref<Texture2D> cursor = get_theme_icon(SNAME("picker_cursor"), SNAME("ColorPicker"));
int x;
int y;
- if (picker_type == SHAPE_VHS_CIRCLE) {
+ if (picker_type == SHAPE_VHS_CIRCLE || picker_type == SHAPE_OKHSL_CIRCLE) {
x = center.x + (center.x * Math::cos(h * Math_TAU) * s) - (cursor->get_width() / 2);
y = center.y + (center.y * Math::sin(h * Math_TAU) * s) - (cursor->get_height() / 2);
} else {
@@ -735,6 +792,25 @@ void ColorPicker::_hsv_draw(int p_which, Control *c) {
Color col;
col.set_hsv(h, 1, 1);
c->draw_line(Point2(0, y), Point2(c->get_size().x, y), col.inverted());
+ } else if (picker_type == SHAPE_OKHSL_CIRCLE) {
+ Vector<Point2> points;
+ Vector<Color> colors;
+ Color col;
+ col.set_ok_hsl(h, s, 1);
+ points.resize(4);
+ colors.resize(4);
+ points.set(0, Vector2());
+ points.set(1, Vector2(c->get_size().x, 0));
+ points.set(2, c->get_size());
+ points.set(3, Vector2(0, c->get_size().y));
+ colors.set(0, col);
+ colors.set(1, col);
+ colors.set(2, Color(0, 0, 0));
+ colors.set(3, Color(0, 0, 0));
+ c->draw_polygon(points, colors);
+ int y = c->get_size().y - c->get_size().y * CLAMP(v, 0, 1);
+ col.set_ok_hsl(h, 1, v);
+ c->draw_line(Point2(0, y), Point2(c->get_size().x, y), col.inverted());
} else if (picker_type == SHAPE_VHS_CIRCLE) {
Vector<Point2> points;
Vector<Color> colors;
@@ -757,7 +833,7 @@ void ColorPicker::_hsv_draw(int p_which, Control *c) {
}
} else if (p_which == 2) {
c->draw_rect(Rect2(Point2(), c->get_size()), Color(1, 1, 1));
- if (picker_type == SHAPE_VHS_CIRCLE) {
+ if (picker_type == SHAPE_VHS_CIRCLE || picker_type == SHAPE_OKHSL_CIRCLE) {
circle_mat->set_shader_param("v", v);
}
}
@@ -793,10 +869,19 @@ void ColorPicker::_slider_draw(int p_which) {
}
Color s_col;
Color v_col;
- s_col.set_hsv(h, 0, v);
+ if (picker_type == SHAPE_OKHSL_CIRCLE) {
+ s_col.set_ok_hsl(h, 0, v);
+ } else {
+ s_col.set_hsv(h, 0, v);
+ }
left_color = (p_which == 1) ? s_col : Color(0, 0, 0);
- s_col.set_hsv(h, 1, v);
- v_col.set_hsv(h, s, 1);
+ if (picker_type == SHAPE_OKHSL_CIRCLE) {
+ s_col.set_ok_hsl(h, 1, v);
+ v_col.set_ok_hsl(h, s, 1);
+ } else {
+ s_col.set_hsv(h, 1, v);
+ v_col.set_hsv(h, s, 1);
+ }
right_color = (p_which == 1) ? s_col : v_col;
} else {
left_color = Color(
@@ -828,9 +913,8 @@ void ColorPicker::_uv_input(const Ref<InputEvent> &p_event, Control *c) {
if (bev.is_valid()) {
if (bev->is_pressed() && bev->get_button_index() == MouseButton::LEFT) {
Vector2 center = c->get_size() / 2.0;
- if (picker_type == SHAPE_VHS_CIRCLE) {
+ if (picker_type == SHAPE_VHS_CIRCLE || picker_type == SHAPE_OKHSL_CIRCLE) {
real_t dist = center.distance_to(bev->get_position());
-
if (dist <= center.x) {
real_t rad = center.angle_to_point(bev->get_position());
h = ((rad >= 0) ? rad : (Math_TAU + rad)) / Math_TAU;
@@ -867,8 +951,13 @@ void ColorPicker::_uv_input(const Ref<InputEvent> &p_event, Control *c) {
}
}
changing_color = true;
- color.set_hsv(h, s, v, color.a);
- last_hsv = color;
+ if (picker_type == SHAPE_OKHSL_CIRCLE) {
+ color.set_ok_hsl(h, s, v, color.a);
+ } else if (picker_type != SHAPE_OKHSL_CIRCLE) {
+ color.set_hsv(h, s, v, color.a);
+ }
+ last_color = color;
+
set_pick_color(color);
_update_color();
if (!deferred_mode_enabled) {
@@ -892,7 +981,7 @@ void ColorPicker::_uv_input(const Ref<InputEvent> &p_event, Control *c) {
}
Vector2 center = c->get_size() / 2.0;
- if (picker_type == SHAPE_VHS_CIRCLE) {
+ if (picker_type == SHAPE_VHS_CIRCLE || picker_type == SHAPE_OKHSL_CIRCLE) {
real_t dist = center.distance_to(mev->get_position());
real_t rad = center.angle_to_point(mev->get_position());
h = ((rad >= 0) ? rad : (Math_TAU + rad)) / Math_TAU;
@@ -913,9 +1002,12 @@ void ColorPicker::_uv_input(const Ref<InputEvent> &p_event, Control *c) {
v = 1.0 - (y - corner_y) / real_size.y;
}
}
-
- color.set_hsv(h, s, v, color.a);
- last_hsv = color;
+ if (picker_type != SHAPE_OKHSL_CIRCLE) {
+ color.set_hsv(h, s, v, color.a);
+ } else if (picker_type == SHAPE_OKHSL_CIRCLE) {
+ color.set_ok_hsl(h, s, v, color.a);
+ }
+ last_color = color;
set_pick_color(color);
_update_color();
if (!deferred_mode_enabled) {
@@ -931,7 +1023,7 @@ void ColorPicker::_w_input(const Ref<InputEvent> &p_event) {
if (bev->is_pressed() && bev->get_button_index() == MouseButton::LEFT) {
changing_color = true;
float y = CLAMP((float)bev->get_position().y, 0, w_edit->get_size().height);
- if (picker_type == SHAPE_VHS_CIRCLE) {
+ if (picker_type == SHAPE_VHS_CIRCLE || picker_type == SHAPE_OKHSL_CIRCLE) {
v = 1.0 - (y / w_edit->get_size().height);
} else {
h = y / w_edit->get_size().height;
@@ -939,8 +1031,12 @@ void ColorPicker::_w_input(const Ref<InputEvent> &p_event) {
} else {
changing_color = false;
}
- color.set_hsv(h, s, v, color.a);
- last_hsv = color;
+ if (picker_type != SHAPE_OKHSL_CIRCLE) {
+ color.set_hsv(h, s, v, color.a);
+ } else if (picker_type == SHAPE_OKHSL_CIRCLE) {
+ color.set_ok_hsl(h, s, v, color.a);
+ }
+ last_color = color;
set_pick_color(color);
_update_color();
if (!deferred_mode_enabled) {
@@ -957,13 +1053,17 @@ void ColorPicker::_w_input(const Ref<InputEvent> &p_event) {
return;
}
float y = CLAMP((float)mev->get_position().y, 0, w_edit->get_size().height);
- if (picker_type == SHAPE_VHS_CIRCLE) {
+ if (picker_type == SHAPE_VHS_CIRCLE || picker_type == SHAPE_OKHSL_CIRCLE) {
v = 1.0 - (y / w_edit->get_size().height);
} else {
h = y / w_edit->get_size().height;
}
- color.set_hsv(h, s, v, color.a);
- last_hsv = color;
+ if (hsv_mode_enabled && picker_type != SHAPE_OKHSL_CIRCLE) {
+ color.set_hsv(h, s, v, color.a);
+ } else if (hsv_mode_enabled && picker_type == SHAPE_OKHSL_CIRCLE) {
+ color.set_ok_hsl(h, s, v, color.a);
+ }
+ last_color = color;
set_pick_color(color);
_update_color();
if (!deferred_mode_enabled) {
@@ -1008,7 +1108,7 @@ void ColorPicker::_screen_input(const Ref<InputEvent> &p_event) {
Ref<Image> img = r->get_texture()->get_image();
if (img.is_valid() && !img->is_empty()) {
Vector2 ofs = mev->get_global_position() - r->get_visible_rect().get_position();
- Color c = img->get_pixel(ofs.x, r->get_visible_rect().size.height - ofs.y);
+ Color c = img->get_pixel(ofs.x, ofs.y);
set_pick_color(c);
}
@@ -1035,6 +1135,8 @@ void ColorPicker::_screen_pick_pressed() {
screen->connect("gui_input", callable_mp(this, &ColorPicker::_screen_input));
// It immediately toggles off in the first press otherwise.
screen->call_deferred(SNAME("connect"), "hidden", Callable(btn_pick, "set_pressed"), varray(false));
+ } else {
+ screen->show();
}
screen->raise();
#ifndef _MSC_VER
@@ -1128,7 +1230,7 @@ void ColorPicker::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "hsv_mode"), "set_hsv_mode", "is_hsv_mode");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "raw_mode"), "set_raw_mode", "is_raw_mode");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "deferred_mode"), "set_deferred_mode", "is_deferred_mode");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "picker_shape", PROPERTY_HINT_ENUM, "HSV Rectangle,HSV Rectangle Wheel,VHS Circle"), "set_picker_shape", "get_picker_shape");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "picker_shape", PROPERTY_HINT_ENUM, "HSV Rectangle,HSV Rectangle Wheel,VHS Circle,OKHSL Circle"), "set_picker_shape", "get_picker_shape");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "presets_enabled"), "set_presets_enabled", "are_presets_enabled");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "presets_visible"), "set_presets_visible", "are_presets_visible");
@@ -1139,6 +1241,7 @@ void ColorPicker::_bind_methods() {
BIND_ENUM_CONSTANT(SHAPE_HSV_RECTANGLE);
BIND_ENUM_CONSTANT(SHAPE_HSV_WHEEL);
BIND_ENUM_CONSTANT(SHAPE_VHS_CIRCLE);
+ BIND_ENUM_CONSTANT(SHAPE_OKHSL_CIRCLE);
}
ColorPicker::ColorPicker() :
diff --git a/scene/gui/color_picker.h b/scene/gui/color_picker.h
index 6f3e16009c..953be032ec 100644
--- a/scene/gui/color_picker.h
+++ b/scene/gui/color_picker.h
@@ -68,6 +68,7 @@ public:
SHAPE_HSV_RECTANGLE,
SHAPE_HSV_WHEEL,
SHAPE_VHS_CIRCLE,
+ SHAPE_OKHSL_CIRCLE,
SHAPE_MAX
};
@@ -75,6 +76,7 @@ public:
private:
static Ref<Shader> wheel_shader;
static Ref<Shader> circle_shader;
+ static Ref<Shader> circle_ok_color_shader;
static List<Color> preset_cache;
Control *screen = nullptr;
@@ -124,7 +126,7 @@ private:
float h = 0.0;
float s = 0.0;
float v = 0.0;
- Color last_hsv;
+ Color last_color;
void _html_submitted(const String &p_html);
void _value_changed(double);
@@ -161,6 +163,8 @@ public:
void set_edit_alpha(bool p_show);
bool is_editing_alpha() const;
+ int get_preset_size();
+
void _set_pick_color(const Color &p_color, bool p_update_sliders);
void set_pick_color(const Color &p_color);
Color get_pick_color() const;
diff --git a/scene/gui/control.cpp b/scene/gui/control.cpp
index db78b4adb6..036d00345d 100644
--- a/scene/gui/control.cpp
+++ b/scene/gui/control.cpp
@@ -414,7 +414,7 @@ void Control::_get_property_list(List<PropertyInfo> *p_list) const {
usage |= PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_CHECKED;
}
- p_list->push_back(PropertyInfo(Variant::INT, "theme_override_font_sizes/" + E, PROPERTY_HINT_RANGE, "1,256,1,or_greater", usage));
+ p_list->push_back(PropertyInfo(Variant::INT, "theme_override_font_sizes/" + E, PROPERTY_HINT_RANGE, "1,256,1,or_greater,suffix:px", usage));
}
}
{
@@ -478,6 +478,10 @@ void Control::_validate_property(PropertyInfo &property) const {
}
}
+ if (property.name == "scale") {
+ property.hint = PROPERTY_HINT_LINK;
+ }
+
// Validate which positioning properties should be displayed depending on the parent and the layout mode.
Node *parent_node = get_parent_control();
if (!parent_node) {
@@ -3282,7 +3286,7 @@ void Control::_bind_methods() {
ADD_GROUP("Layout", "");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "clip_contents"), "set_clip_contents", "is_clipping_contents");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "minimum_size"), "set_custom_minimum_size", "get_custom_minimum_size");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "minimum_size", PROPERTY_HINT_NONE, "suffix:px"), "set_custom_minimum_size", "get_custom_minimum_size");
ADD_PROPERTY(PropertyInfo(Variant::INT, "layout_direction", PROPERTY_HINT_ENUM, "Inherited,Locale,Left-to-Right,Right-to-Left"), "set_layout_direction", "get_layout_direction");
ADD_PROPERTY(PropertyInfo(Variant::INT, "layout_mode", PROPERTY_HINT_ENUM, "Position,Anchors,Container,Uncontrolled", PROPERTY_USAGE_EDITOR | PROPERTY_USAGE_INTERNAL), "_set_layout_mode", "_get_layout_mode");
ADD_PROPERTY_DEFAULT("layout_mode", LayoutMode::LAYOUT_MODE_POSITION);
@@ -3317,7 +3321,7 @@ void Control::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "global_position", PROPERTY_HINT_NONE, "suffix:px", PROPERTY_USAGE_NONE), "_set_global_position", "get_global_position");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "rotation", PROPERTY_HINT_RANGE, "-360,360,0.1,or_lesser,or_greater,radians"), "set_rotation", "get_rotation");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "scale"), "set_scale", "get_scale");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "pivot_offset"), "set_pivot_offset", "get_pivot_offset");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "pivot_offset", PROPERTY_HINT_NONE, "suffix:px"), "set_pivot_offset", "get_pivot_offset");
ADD_SUBGROUP("Container Sizing", "size_flags_");
ADD_PROPERTY(PropertyInfo(Variant::INT, "size_flags_horizontal", PROPERTY_HINT_FLAGS, "Fill:1,Expand:2,Shrink Center:4,Shrink End:8"), "set_h_size_flags", "get_h_size_flags");
diff --git a/scene/gui/dialogs.cpp b/scene/gui/dialogs.cpp
index 0bb96a18a5..192d214262 100644
--- a/scene/gui/dialogs.cpp
+++ b/scene/gui/dialogs.cpp
@@ -154,11 +154,11 @@ bool AcceptDialog::get_close_on_escape() const {
}
void AcceptDialog::set_autowrap(bool p_autowrap) {
- label->set_autowrap_mode(p_autowrap ? Label::AUTOWRAP_WORD : Label::AUTOWRAP_OFF);
+ label->set_autowrap_mode(p_autowrap ? TextServer::AUTOWRAP_WORD : TextServer::AUTOWRAP_OFF);
}
bool AcceptDialog::has_autowrap() {
- return label->get_autowrap_mode() != Label::AUTOWRAP_OFF;
+ return label->get_autowrap_mode() != TextServer::AUTOWRAP_OFF;
}
void AcceptDialog::register_text_enter(Control *p_line_edit) {
diff --git a/scene/gui/graph_edit.cpp b/scene/gui/graph_edit.cpp
index 446d9e800a..c219eafbf7 100644
--- a/scene/gui/graph_edit.cpp
+++ b/scene/gui/graph_edit.cpp
@@ -508,8 +508,9 @@ void GraphEdit::_notification(int p_what) {
void GraphEdit::_update_comment_enclosed_nodes_list(GraphNode *p_node, HashMap<StringName, Vector<GraphNode *>> &p_comment_enclosed_nodes) {
Rect2 comment_node_rect = p_node->get_rect();
- Vector<GraphNode *> enclosed_nodes;
+ comment_node_rect.size *= zoom;
+ Vector<GraphNode *> enclosed_nodes;
for (int i = 0; i < get_child_count(); i++) {
GraphNode *gn = Object::cast_to<GraphNode>(get_child(i));
if (!gn || gn->is_selected()) {
@@ -517,6 +518,8 @@ void GraphEdit::_update_comment_enclosed_nodes_list(GraphNode *p_node, HashMap<S
}
Rect2 node_rect = gn->get_rect();
+ node_rect.size *= zoom;
+
bool included = comment_node_rect.encloses(node_rect);
if (included) {
enclosed_nodes.push_back(gn);
@@ -2314,14 +2317,14 @@ void GraphEdit::_bind_methods() {
GDVIRTUAL_BIND(_get_connection_line, "from", "to")
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "right_disconnects"), "set_right_disconnects", "is_right_disconnects_enabled");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "scroll_offset"), "set_scroll_ofs", "get_scroll_ofs");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "snap_distance"), "set_snap", "get_snap");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "scroll_offset", PROPERTY_HINT_NONE, "suffix:px"), "set_scroll_ofs", "get_scroll_ofs");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "snap_distance", PROPERTY_HINT_NONE, "suffix:px"), "set_snap", "get_snap");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "use_snap"), "set_use_snap", "is_using_snap");
ADD_PROPERTY(PropertyInfo(Variant::INT, "panning_scheme", PROPERTY_HINT_ENUM, "Scroll Zooms,Scroll Pans"), "set_panning_scheme", "get_panning_scheme");
ADD_GROUP("Connection Lines", "connection_lines");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "connection_lines_curvature"), "set_connection_lines_curvature", "get_connection_lines_curvature");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "connection_lines_thickness"), "set_connection_lines_thickness", "get_connection_lines_thickness");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "connection_lines_thickness", PROPERTY_HINT_NONE, "suffix:px"), "set_connection_lines_thickness", "get_connection_lines_thickness");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "connection_lines_antialiased"), "set_connection_lines_antialiased", "is_connection_lines_antialiased");
ADD_GROUP("Zoom", "");
@@ -2333,7 +2336,7 @@ void GraphEdit::_bind_methods() {
ADD_GROUP("Minimap", "minimap");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "minimap_enabled"), "set_minimap_enabled", "is_minimap_enabled");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "minimap_size"), "set_minimap_size", "get_minimap_size");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "minimap_size", PROPERTY_HINT_NONE, "suffix:px"), "set_minimap_size", "get_minimap_size");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "minimap_opacity"), "set_minimap_opacity", "get_minimap_opacity");
ADD_SIGNAL(MethodInfo("connection_request", PropertyInfo(Variant::STRING_NAME, "from"), PropertyInfo(Variant::INT, "from_slot"), PropertyInfo(Variant::STRING_NAME, "to"), PropertyInfo(Variant::INT, "to_slot")));
diff --git a/scene/gui/graph_node.cpp b/scene/gui/graph_node.cpp
index 5cb28a30e8..87706cd0d7 100644
--- a/scene/gui/graph_node.cpp
+++ b/scene/gui/graph_node.cpp
@@ -1107,7 +1107,7 @@ void GraphNode::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::STRING, "title"), "set_title", "get_title");
ADD_PROPERTY(PropertyInfo(Variant::INT, "text_direction", PROPERTY_HINT_ENUM, "Auto,Left-to-Right,Right-to-Left,Inherited"), "set_text_direction", "get_text_direction");
ADD_PROPERTY(PropertyInfo(Variant::STRING, "language", PROPERTY_HINT_LOCALE_ID, ""), "set_language", "get_language");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "position_offset"), "set_position_offset", "get_position_offset");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "position_offset", PROPERTY_HINT_NONE, "suffix:px"), "set_position_offset", "get_position_offset");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "show_close"), "set_show_close_button", "is_close_button_visible");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "resizable"), "set_resizable", "is_resizable");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "selected"), "set_selected", "is_selected");
diff --git a/scene/gui/item_list.cpp b/scene/gui/item_list.cpp
index 8b22f3722a..aeb5338022 100644
--- a/scene/gui/item_list.cpp
+++ b/scene/gui/item_list.cpp
@@ -1550,7 +1550,7 @@ bool ItemList::has_auto_height() const {
return auto_height;
}
-void ItemList::set_text_overrun_behavior(TextParagraph::OverrunBehavior p_behavior) {
+void ItemList::set_text_overrun_behavior(TextServer::OverrunBehavior p_behavior) {
if (text_overrun_behavior != p_behavior) {
text_overrun_behavior = p_behavior;
for (int i = 0; i < items.size(); i++) {
@@ -1561,7 +1561,7 @@ void ItemList::set_text_overrun_behavior(TextParagraph::OverrunBehavior p_behavi
}
}
-TextParagraph::OverrunBehavior ItemList::get_text_overrun_behavior() const {
+TextServer::OverrunBehavior ItemList::get_text_overrun_behavior() const {
return text_overrun_behavior;
}
@@ -1763,11 +1763,11 @@ void ItemList::_bind_methods() {
ADD_GROUP("Columns", "");
ADD_PROPERTY(PropertyInfo(Variant::INT, "max_columns", PROPERTY_HINT_RANGE, "0,10,1,or_greater"), "set_max_columns", "get_max_columns");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "same_column_width"), "set_same_column_width", "is_same_column_width");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "fixed_column_width", PROPERTY_HINT_RANGE, "0,100,1,or_greater"), "set_fixed_column_width", "get_fixed_column_width");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "fixed_column_width", PROPERTY_HINT_RANGE, "0,100,1,or_greater,suffix:px"), "set_fixed_column_width", "get_fixed_column_width");
ADD_GROUP("Icon", "");
ADD_PROPERTY(PropertyInfo(Variant::INT, "icon_mode", PROPERTY_HINT_ENUM, "Top,Left"), "set_icon_mode", "get_icon_mode");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "icon_scale"), "set_icon_scale", "get_icon_scale");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "fixed_icon_size"), "set_fixed_icon_size", "get_fixed_icon_size");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "fixed_icon_size", PROPERTY_HINT_NONE, "suffix:px"), "set_fixed_icon_size", "get_fixed_icon_size");
BIND_ENUM_CONSTANT(ICON_MODE_TOP);
BIND_ENUM_CONSTANT(ICON_MODE_LEFT);
diff --git a/scene/gui/item_list.h b/scene/gui/item_list.h
index ffbe7d055a..a15b090149 100644
--- a/scene/gui/item_list.h
+++ b/scene/gui/item_list.h
@@ -99,7 +99,7 @@ private:
SelectMode select_mode = SELECT_SINGLE;
IconMode icon_mode = ICON_MODE_LEFT;
VScrollBar *scroll_bar = nullptr;
- TextParagraph::OverrunBehavior text_overrun_behavior = TextParagraph::OVERRUN_TRIM_ELLIPSIS;
+ TextServer::OverrunBehavior text_overrun_behavior = TextServer::OVERRUN_TRIM_ELLIPSIS;
uint64_t search_time_msec = 0;
String search_string;
@@ -188,8 +188,8 @@ public:
void set_item_custom_fg_color(int p_idx, const Color &p_custom_fg_color);
Color get_item_custom_fg_color(int p_idx) const;
- void set_text_overrun_behavior(TextParagraph::OverrunBehavior p_behavior);
- TextParagraph::OverrunBehavior get_text_overrun_behavior() const;
+ void set_text_overrun_behavior(TextServer::OverrunBehavior p_behavior);
+ TextServer::OverrunBehavior get_text_overrun_behavior() const;
void select(int p_idx, bool p_single = true);
void deselect(int p_idx);
diff --git a/scene/gui/label.cpp b/scene/gui/label.cpp
index eda3d40f63..82ab7c2e18 100644
--- a/scene/gui/label.cpp
+++ b/scene/gui/label.cpp
@@ -36,19 +36,19 @@
#include "servers/text_server.h"
-void Label::set_autowrap_mode(Label::AutowrapMode p_mode) {
+void Label::set_autowrap_mode(TextServer::AutowrapMode p_mode) {
if (autowrap_mode != p_mode) {
autowrap_mode = p_mode;
lines_dirty = true;
}
update();
- if (clip || overrun_behavior != OVERRUN_NO_TRIMMING) {
+ if (clip || overrun_behavior != TextServer::OVERRUN_NO_TRIMMING) {
update_minimum_size();
}
}
-Label::AutowrapMode Label::get_autowrap_mode() const {
+TextServer::AutowrapMode Label::get_autowrap_mode() const {
return autowrap_mode;
}
@@ -96,7 +96,7 @@ void Label::_shape() {
int font_size = get_theme_font_size(SNAME("font_size"));
ERR_FAIL_COND(font.is_null());
String text = (uppercase) ? TS->string_to_upper(xl_text, lang) : xl_text;
- if (visible_chars >= 0 && visible_chars_behavior == VC_CHARS_BEFORE_SHAPING) {
+ if (visible_chars >= 0 && visible_chars_behavior == TextServer::VC_CHARS_BEFORE_SHAPING) {
text = text.substr(0, visible_chars);
}
if (dirty) {
@@ -121,16 +121,16 @@ void Label::_shape() {
uint16_t autowrap_flags = TextServer::BREAK_MANDATORY;
switch (autowrap_mode) {
- case AUTOWRAP_WORD_SMART:
+ case TextServer::AUTOWRAP_WORD_SMART:
autowrap_flags = TextServer::BREAK_WORD_BOUND_ADAPTIVE | TextServer::BREAK_MANDATORY;
break;
- case AUTOWRAP_WORD:
+ case TextServer::AUTOWRAP_WORD:
autowrap_flags = TextServer::BREAK_WORD_BOUND | TextServer::BREAK_MANDATORY;
break;
- case AUTOWRAP_ARBITRARY:
+ case TextServer::AUTOWRAP_ARBITRARY:
autowrap_flags = TextServer::BREAK_GRAPHEME_BOUND | TextServer::BREAK_MANDATORY;
break;
- case AUTOWRAP_OFF:
+ case TextServer::AUTOWRAP_OFF:
break;
}
PackedInt32Array line_breaks = TS->shaped_text_get_line_breaks(text_rid, width, 0, autowrap_flags);
@@ -146,7 +146,7 @@ void Label::_shape() {
return;
}
- if (autowrap_mode == AUTOWRAP_OFF) {
+ if (autowrap_mode == TextServer::AUTOWRAP_OFF) {
minsize.width = 0.0f;
for (int i = 0; i < lines_rid.size(); i++) {
if (minsize.width < TS->shaped_text_get_size(lines_rid[i]).x) {
@@ -156,31 +156,31 @@ void Label::_shape() {
}
if (lines_dirty) {
- uint16_t overrun_flags = TextServer::OVERRUN_NO_TRIMMING;
+ uint16_t overrun_flags = TextServer::OVERRUN_NO_TRIM;
switch (overrun_behavior) {
- case OVERRUN_TRIM_WORD_ELLIPSIS:
+ case TextServer::OVERRUN_TRIM_WORD_ELLIPSIS:
overrun_flags |= TextServer::OVERRUN_TRIM;
overrun_flags |= TextServer::OVERRUN_TRIM_WORD_ONLY;
overrun_flags |= TextServer::OVERRUN_ADD_ELLIPSIS;
break;
- case OVERRUN_TRIM_ELLIPSIS:
+ case TextServer::OVERRUN_TRIM_ELLIPSIS:
overrun_flags |= TextServer::OVERRUN_TRIM;
overrun_flags |= TextServer::OVERRUN_ADD_ELLIPSIS;
break;
- case OVERRUN_TRIM_WORD:
+ case TextServer::OVERRUN_TRIM_WORD:
overrun_flags |= TextServer::OVERRUN_TRIM;
overrun_flags |= TextServer::OVERRUN_TRIM_WORD_ONLY;
break;
- case OVERRUN_TRIM_CHAR:
+ case TextServer::OVERRUN_TRIM_CHAR:
overrun_flags |= TextServer::OVERRUN_TRIM;
break;
- case OVERRUN_NO_TRIMMING:
+ case TextServer::OVERRUN_NO_TRIMMING:
break;
}
// Fill after min_size calculation.
- if (autowrap_mode != AUTOWRAP_OFF) {
+ if (autowrap_mode != TextServer::AUTOWRAP_OFF) {
int visible_lines = get_visible_line_count();
bool lines_hidden = visible_lines > 0 && visible_lines < lines_rid.size();
if (lines_hidden) {
@@ -215,7 +215,7 @@ void Label::_shape() {
_update_visible();
- if (autowrap_mode == AUTOWRAP_OFF || !clip || overrun_behavior == OVERRUN_NO_TRIMMING) {
+ if (autowrap_mode == TextServer::AUTOWRAP_OFF || !clip || overrun_behavior == TextServer::OVERRUN_NO_TRIMMING) {
update_minimum_size();
}
}
@@ -326,9 +326,9 @@ void Label::_notification(int p_what) {
}
int last_line = MIN(lines_rid.size(), lines_visible + lines_skipped);
- bool trim_chars = (visible_chars >= 0) && (visible_chars_behavior == VC_CHARS_AFTER_SHAPING);
- bool trim_glyphs_ltr = (visible_chars >= 0) && ((visible_chars_behavior == VC_GLYPHS_LTR) || ((visible_chars_behavior == VC_GLYPHS_AUTO) && !rtl_layout));
- bool trim_glyphs_rtl = (visible_chars >= 0) && ((visible_chars_behavior == VC_GLYPHS_RTL) || ((visible_chars_behavior == VC_GLYPHS_AUTO) && rtl_layout));
+ bool trim_chars = (visible_chars >= 0) && (visible_chars_behavior == TextServer::VC_CHARS_AFTER_SHAPING);
+ bool trim_glyphs_ltr = (visible_chars >= 0) && ((visible_chars_behavior == TextServer::VC_GLYPHS_LTR) || ((visible_chars_behavior == TextServer::VC_GLYPHS_AUTO) && !rtl_layout));
+ bool trim_glyphs_rtl = (visible_chars >= 0) && ((visible_chars_behavior == TextServer::VC_GLYPHS_RTL) || ((visible_chars_behavior == TextServer::VC_GLYPHS_AUTO) && rtl_layout));
// Get real total height.
int total_glyphs = 0;
@@ -377,7 +377,7 @@ void Label::_notification(int p_what) {
ofs.y += TS->shaped_text_get_ascent(lines_rid[i]) + font->get_spacing(TextServer::SPACING_TOP);
switch (horizontal_alignment) {
case HORIZONTAL_ALIGNMENT_FILL:
- if (rtl && autowrap_mode != AUTOWRAP_OFF) {
+ if (rtl && autowrap_mode != TextServer::AUTOWRAP_OFF) {
ofs.x = int(size.width - style->get_margin(SIDE_RIGHT) - line_size.width);
} else {
ofs.x = style->get_offset().x;
@@ -554,10 +554,10 @@ Size2 Label::get_minimum_size() const {
min_size.height = MAX(min_size.height, font->get_height(get_theme_font_size(SNAME("font_size"))) + font->get_spacing(TextServer::SPACING_TOP) + font->get_spacing(TextServer::SPACING_BOTTOM));
Size2 min_style = get_theme_stylebox(SNAME("normal"))->get_minimum_size();
- if (autowrap_mode != AUTOWRAP_OFF) {
- return Size2(1, (clip || overrun_behavior != OVERRUN_NO_TRIMMING) ? 1 : min_size.height) + min_style;
+ if (autowrap_mode != TextServer::AUTOWRAP_OFF) {
+ return Size2(1, (clip || overrun_behavior != TextServer::OVERRUN_NO_TRIMMING) ? 1 : min_size.height) + min_style;
} else {
- if (clip || overrun_behavior != OVERRUN_NO_TRIMMING) {
+ if (clip || overrun_behavior != TextServer::OVERRUN_NO_TRIMMING) {
min_size.width = 1;
}
return min_size + min_style;
@@ -719,18 +719,18 @@ bool Label::is_clipping_text() const {
return clip;
}
-void Label::set_text_overrun_behavior(Label::OverrunBehavior p_behavior) {
+void Label::set_text_overrun_behavior(TextServer::OverrunBehavior p_behavior) {
if (overrun_behavior != p_behavior) {
overrun_behavior = p_behavior;
lines_dirty = true;
}
update();
- if (clip || overrun_behavior != OVERRUN_NO_TRIMMING) {
+ if (clip || overrun_behavior != TextServer::OVERRUN_NO_TRIMMING) {
update_minimum_size();
}
}
-Label::OverrunBehavior Label::get_text_overrun_behavior() const {
+TextServer::OverrunBehavior Label::get_text_overrun_behavior() const {
return overrun_behavior;
}
@@ -746,7 +746,7 @@ void Label::set_visible_characters(int p_amount) {
} else {
percent_visible = 1.0;
}
- if (visible_chars_behavior == VC_CHARS_BEFORE_SHAPING) {
+ if (visible_chars_behavior == TextServer::VC_CHARS_BEFORE_SHAPING) {
dirty = true;
}
update();
@@ -766,7 +766,7 @@ void Label::set_percent_visible(float p_percent) {
visible_chars = get_total_character_count() * p_percent;
percent_visible = p_percent;
}
- if (visible_chars_behavior == VC_CHARS_BEFORE_SHAPING) {
+ if (visible_chars_behavior == TextServer::VC_CHARS_BEFORE_SHAPING) {
dirty = true;
}
update();
@@ -777,11 +777,11 @@ float Label::get_percent_visible() const {
return percent_visible;
}
-Label::VisibleCharactersBehavior Label::get_visible_characters_behavior() const {
+TextServer::VisibleCharactersBehavior Label::get_visible_characters_behavior() const {
return visible_chars_behavior;
}
-void Label::set_visible_characters_behavior(Label::VisibleCharactersBehavior p_behavior) {
+void Label::set_visible_characters_behavior(TextServer::VisibleCharactersBehavior p_behavior) {
if (visible_chars_behavior != p_behavior) {
visible_chars_behavior = p_behavior;
dirty = true;
@@ -909,23 +909,6 @@ void Label::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_structured_text_bidi_override_options", "args"), &Label::set_structured_text_bidi_override_options);
ClassDB::bind_method(D_METHOD("get_structured_text_bidi_override_options"), &Label::get_structured_text_bidi_override_options);
- BIND_ENUM_CONSTANT(AUTOWRAP_OFF);
- BIND_ENUM_CONSTANT(AUTOWRAP_ARBITRARY);
- BIND_ENUM_CONSTANT(AUTOWRAP_WORD);
- BIND_ENUM_CONSTANT(AUTOWRAP_WORD_SMART);
-
- BIND_ENUM_CONSTANT(OVERRUN_NO_TRIMMING);
- BIND_ENUM_CONSTANT(OVERRUN_TRIM_CHAR);
- BIND_ENUM_CONSTANT(OVERRUN_TRIM_WORD);
- BIND_ENUM_CONSTANT(OVERRUN_TRIM_ELLIPSIS);
- BIND_ENUM_CONSTANT(OVERRUN_TRIM_WORD_ELLIPSIS);
-
- BIND_ENUM_CONSTANT(VC_CHARS_BEFORE_SHAPING);
- BIND_ENUM_CONSTANT(VC_CHARS_AFTER_SHAPING);
- BIND_ENUM_CONSTANT(VC_GLYPHS_AUTO);
- BIND_ENUM_CONSTANT(VC_GLYPHS_LTR);
- BIND_ENUM_CONSTANT(VC_GLYPHS_RTL);
-
ADD_PROPERTY(PropertyInfo(Variant::STRING, "text", PROPERTY_HINT_MULTILINE_TEXT, "", PROPERTY_USAGE_DEFAULT_INTL), "set_text", "get_text");
ADD_PROPERTY(PropertyInfo(Variant::INT, "horizontal_alignment", PROPERTY_HINT_ENUM, "Left,Center,Right,Fill"), "set_horizontal_alignment", "get_horizontal_alignment");
ADD_PROPERTY(PropertyInfo(Variant::INT, "vertical_alignment", PROPERTY_HINT_ENUM, "Top,Center,Bottom,Fill"), "set_vertical_alignment", "get_vertical_alignment");
diff --git a/scene/gui/label.h b/scene/gui/label.h
index f7b725928f..fac3d75a1b 100644
--- a/scene/gui/label.h
+++ b/scene/gui/label.h
@@ -36,38 +36,14 @@
class Label : public Control {
GDCLASS(Label, Control);
-public:
- enum AutowrapMode {
- AUTOWRAP_OFF,
- AUTOWRAP_ARBITRARY,
- AUTOWRAP_WORD,
- AUTOWRAP_WORD_SMART
- };
-
- enum OverrunBehavior {
- OVERRUN_NO_TRIMMING,
- OVERRUN_TRIM_CHAR,
- OVERRUN_TRIM_WORD,
- OVERRUN_TRIM_ELLIPSIS,
- OVERRUN_TRIM_WORD_ELLIPSIS,
- };
-
- enum VisibleCharactersBehavior {
- VC_CHARS_BEFORE_SHAPING,
- VC_CHARS_AFTER_SHAPING,
- VC_GLYPHS_AUTO,
- VC_GLYPHS_LTR,
- VC_GLYPHS_RTL,
- };
-
private:
HorizontalAlignment horizontal_alignment = HORIZONTAL_ALIGNMENT_LEFT;
VerticalAlignment vertical_alignment = VERTICAL_ALIGNMENT_TOP;
String text;
String xl_text;
- AutowrapMode autowrap_mode = AUTOWRAP_OFF;
+ TextServer::AutowrapMode autowrap_mode = TextServer::AUTOWRAP_OFF;
bool clip = false;
- OverrunBehavior overrun_behavior = OVERRUN_NO_TRIMMING;
+ TextServer::OverrunBehavior overrun_behavior = TextServer::OVERRUN_NO_TRIMMING;
Size2 minsize;
bool uppercase = false;
@@ -85,7 +61,7 @@ private:
float percent_visible = 1.0;
- VisibleCharactersBehavior visible_chars_behavior = VC_CHARS_BEFORE_SHAPING;
+ TextServer::VisibleCharactersBehavior visible_chars_behavior = TextServer::VC_CHARS_BEFORE_SHAPING;
int visible_chars = -1;
int lines_skipped = 0;
int max_lines_visible = -1;
@@ -130,14 +106,14 @@ public:
void set_structured_text_bidi_override_options(Array p_args);
Array get_structured_text_bidi_override_options() const;
- void set_autowrap_mode(AutowrapMode p_mode);
- AutowrapMode get_autowrap_mode() const;
+ void set_autowrap_mode(TextServer::AutowrapMode p_mode);
+ TextServer::AutowrapMode get_autowrap_mode() const;
void set_uppercase(bool p_uppercase);
bool is_uppercase() const;
- VisibleCharactersBehavior get_visible_characters_behavior() const;
- void set_visible_characters_behavior(VisibleCharactersBehavior p_behavior);
+ TextServer::VisibleCharactersBehavior get_visible_characters_behavior() const;
+ void set_visible_characters_behavior(TextServer::VisibleCharactersBehavior p_behavior);
void set_visible_characters(int p_amount);
int get_visible_characters() const;
@@ -146,8 +122,8 @@ public:
void set_clip_text(bool p_clip);
bool is_clipping_text() const;
- void set_text_overrun_behavior(OverrunBehavior p_behavior);
- OverrunBehavior get_text_overrun_behavior() const;
+ void set_text_overrun_behavior(TextServer::OverrunBehavior p_behavior);
+ TextServer::OverrunBehavior get_text_overrun_behavior() const;
void set_percent_visible(float p_percent);
float get_percent_visible() const;
@@ -166,8 +142,4 @@ public:
~Label();
};
-VARIANT_ENUM_CAST(Label::AutowrapMode);
-VARIANT_ENUM_CAST(Label::OverrunBehavior);
-VARIANT_ENUM_CAST(Label::VisibleCharactersBehavior);
-
#endif
diff --git a/scene/gui/line_edit.cpp b/scene/gui/line_edit.cpp
index fd9db4ea1b..540250c8e9 100644
--- a/scene/gui/line_edit.cpp
+++ b/scene/gui/line_edit.cpp
@@ -312,7 +312,7 @@ void LineEdit::gui_input(const Ref<InputEvent> &p_event) {
selection.end = text.length();
selection.double_click = true;
last_dblclk = 0;
- caret_column = selection.begin;
+ set_caret_column(selection.begin);
if (!pass && DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_CLIPBOARD_PRIMARY)) {
DisplayServer::get_singleton()->clipboard_set_primary(text);
}
@@ -327,7 +327,7 @@ void LineEdit::gui_input(const Ref<InputEvent> &p_event) {
selection.begin = words[i];
selection.end = words[i + 1];
selection.double_click = true;
- caret_column = selection.end;
+ set_caret_column(selection.end);
break;
}
}
@@ -1686,13 +1686,17 @@ Size2 LineEdit::get_minimum_size() const {
min_size.height = MAX(TS->shaped_text_get_size(text_rid).y + font->get_spacing(TextServer::SPACING_TOP) + font->get_spacing(TextServer::SPACING_BOTTOM), font->get_height(font_size));
// Take icons into account.
- bool using_placeholder = text.is_empty() && ime_text.is_empty();
- bool display_clear_icon = !using_placeholder && is_editable() && clear_button_enabled;
- if (right_icon.is_valid() || display_clear_icon) {
- Ref<Texture2D> r_icon = display_clear_icon ? Control::get_theme_icon(SNAME("clear")) : right_icon;
- min_size.width += r_icon->get_width();
- min_size.height = MAX(min_size.height, r_icon->get_height());
+ int icon_max_width = 0;
+ if (right_icon.is_valid()) {
+ min_size.height = MAX(min_size.height, right_icon->get_height());
+ icon_max_width = right_icon->get_width();
+ }
+ if (clear_button_enabled) {
+ Ref<Texture2D> clear_icon = Control::get_theme_icon(SNAME("clear"));
+ min_size.height = MAX(min_size.height, clear_icon->get_height());
+ icon_max_width = MAX(icon_max_width, clear_icon->get_width());
}
+ min_size.width += icon_max_width;
return style->get_minimum_size() + min_size;
}
diff --git a/scene/gui/nine_patch_rect.cpp b/scene/gui/nine_patch_rect.cpp
index 4f34ece86f..8fee10b19a 100644
--- a/scene/gui/nine_patch_rect.cpp
+++ b/scene/gui/nine_patch_rect.cpp
@@ -73,13 +73,13 @@ void NinePatchRect::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_texture", "get_texture");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "draw_center"), "set_draw_center", "is_draw_center_enabled");
- ADD_PROPERTY(PropertyInfo(Variant::RECT2, "region_rect"), "set_region_rect", "get_region_rect");
+ ADD_PROPERTY(PropertyInfo(Variant::RECT2, "region_rect", PROPERTY_HINT_NONE, "suffix:px"), "set_region_rect", "get_region_rect");
ADD_GROUP("Patch Margin", "patch_margin_");
- ADD_PROPERTYI(PropertyInfo(Variant::INT, "patch_margin_left", PROPERTY_HINT_RANGE, "0,16384,1"), "set_patch_margin", "get_patch_margin", SIDE_LEFT);
- ADD_PROPERTYI(PropertyInfo(Variant::INT, "patch_margin_top", PROPERTY_HINT_RANGE, "0,16384,1"), "set_patch_margin", "get_patch_margin", SIDE_TOP);
- ADD_PROPERTYI(PropertyInfo(Variant::INT, "patch_margin_right", PROPERTY_HINT_RANGE, "0,16384,1"), "set_patch_margin", "get_patch_margin", SIDE_RIGHT);
- ADD_PROPERTYI(PropertyInfo(Variant::INT, "patch_margin_bottom", PROPERTY_HINT_RANGE, "0,16384,1"), "set_patch_margin", "get_patch_margin", SIDE_BOTTOM);
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "patch_margin_left", PROPERTY_HINT_RANGE, "0,16384,1,suffix:px"), "set_patch_margin", "get_patch_margin", SIDE_LEFT);
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "patch_margin_top", PROPERTY_HINT_RANGE, "0,16384,1,suffix:px"), "set_patch_margin", "get_patch_margin", SIDE_TOP);
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "patch_margin_right", PROPERTY_HINT_RANGE, "0,16384,1,suffix:px"), "set_patch_margin", "get_patch_margin", SIDE_RIGHT);
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "patch_margin_bottom", PROPERTY_HINT_RANGE, "0,16384,1,suffix:px"), "set_patch_margin", "get_patch_margin", SIDE_BOTTOM);
ADD_GROUP("Axis Stretch", "axis_stretch_");
ADD_PROPERTY(PropertyInfo(Variant::INT, "axis_stretch_horizontal", PROPERTY_HINT_ENUM, "Stretch,Tile,Tile Fit"), "set_h_axis_stretch_mode", "get_h_axis_stretch_mode");
ADD_PROPERTY(PropertyInfo(Variant::INT, "axis_stretch_vertical", PROPERTY_HINT_ENUM, "Stretch,Tile,Tile Fit"), "set_v_axis_stretch_mode", "get_v_axis_stretch_mode");
diff --git a/scene/gui/popup.cpp b/scene/gui/popup.cpp
index 6532fc5934..c4396f636a 100644
--- a/scene/gui/popup.cpp
+++ b/scene/gui/popup.cpp
@@ -108,9 +108,7 @@ void Popup::_close_pressed() {
_deinitialize_visible_parents();
- // Hide after returning to process events, but only if we don't
- // get popped up in the interim.
- call_deferred(SNAME("_popup_conditional_hide"));
+ call_deferred(SNAME("hide"));
}
void Popup::_post_popup() {
@@ -118,15 +116,8 @@ void Popup::_post_popup() {
popped_up = true;
}
-void Popup::_popup_conditional_hide() {
- if (!popped_up) {
- hide();
- }
-}
-
void Popup::_bind_methods() {
ADD_SIGNAL(MethodInfo("popup_hide"));
- ClassDB::bind_method(D_METHOD("_popup_conditional_hide"), &Popup::_popup_conditional_hide);
}
Rect2i Popup::_popup_adjust_rect() const {
diff --git a/scene/gui/popup.h b/scene/gui/popup.h
index 27f46d4a97..b53c8be50f 100644
--- a/scene/gui/popup.h
+++ b/scene/gui/popup.h
@@ -48,8 +48,6 @@ class Popup : public Window {
void _initialize_visible_parents();
void _deinitialize_visible_parents();
- void _parent_focused();
-
protected:
void _close_pressed();
virtual Rect2i _popup_adjust_rect() const override;
@@ -57,7 +55,7 @@ protected:
void _notification(int p_what);
static void _bind_methods();
- void _popup_conditional_hide();
+ virtual void _parent_focused();
virtual void _post_popup() override;
diff --git a/scene/gui/popup_menu.cpp b/scene/gui/popup_menu.cpp
index 8303d6db57..5931c112eb 100644
--- a/scene/gui/popup_menu.cpp
+++ b/scene/gui/popup_menu.cpp
@@ -243,6 +243,29 @@ void PopupMenu::_activate_submenu(int p_over, bool p_by_keyboard) {
}
}
+void PopupMenu::_parent_focused() {
+ if (is_embedded()) {
+ Point2 mouse_pos_adjusted;
+ Window *window_parent = Object::cast_to<Window>(get_parent()->get_viewport());
+ while (window_parent) {
+ if (!window_parent->is_embedded()) {
+ mouse_pos_adjusted += window_parent->get_position();
+ break;
+ }
+
+ window_parent = Object::cast_to<Window>(window_parent->get_parent()->get_viewport());
+ }
+
+ Rect2 safe_area = DisplayServer::get_singleton()->window_get_popup_safe_rect(get_window_id());
+ Point2 pos = DisplayServer::get_singleton()->mouse_get_position() - mouse_pos_adjusted;
+ if (safe_area == Rect2i() || !safe_area.has_point(pos)) {
+ Popup::_parent_focused();
+ } else {
+ grab_focus();
+ }
+ }
+}
+
void PopupMenu::_submenu_timeout() {
if (mouse_over == submenu_over) {
_activate_submenu(mouse_over);
@@ -1251,6 +1274,11 @@ Ref<Shortcut> PopupMenu::get_item_shortcut(int p_idx) const {
return items[p_idx].shortcut;
}
+int PopupMenu::get_item_horizontal_offset(int p_idx) const {
+ ERR_FAIL_INDEX_V(p_idx, items.size(), 0);
+ return items[p_idx].h_ofs;
+}
+
int PopupMenu::get_item_state(int p_idx) const {
ERR_FAIL_INDEX_V(p_idx, items.size(), -1);
return items[p_idx].state;
@@ -1316,7 +1344,7 @@ void PopupMenu::set_item_shortcut(int p_idx, const Ref<Shortcut> &p_shortcut, bo
control->update();
}
-void PopupMenu::set_item_h_offset(int p_idx, int p_offset) {
+void PopupMenu::set_item_horizontal_offset(int p_idx, int p_offset) {
if (p_idx < 0) {
p_idx += get_item_count();
}
@@ -1839,6 +1867,7 @@ void PopupMenu::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_item_as_radio_checkable", "index", "enable"), &PopupMenu::set_item_as_radio_checkable);
ClassDB::bind_method(D_METHOD("set_item_tooltip", "index", "tooltip"), &PopupMenu::set_item_tooltip);
ClassDB::bind_method(D_METHOD("set_item_shortcut", "index", "shortcut", "global"), &PopupMenu::set_item_shortcut, DEFVAL(false));
+ ClassDB::bind_method(D_METHOD("set_item_horizontal_offset", "index", "offset"), &PopupMenu::set_item_horizontal_offset);
ClassDB::bind_method(D_METHOD("set_item_multistate", "index", "state"), &PopupMenu::set_item_multistate);
ClassDB::bind_method(D_METHOD("set_item_shortcut_disabled", "index", "disabled"), &PopupMenu::set_item_shortcut_disabled);
@@ -1864,6 +1893,7 @@ void PopupMenu::_bind_methods() {
ClassDB::bind_method(D_METHOD("is_item_shortcut_disabled", "index"), &PopupMenu::is_item_shortcut_disabled);
ClassDB::bind_method(D_METHOD("get_item_tooltip", "index"), &PopupMenu::get_item_tooltip);
ClassDB::bind_method(D_METHOD("get_item_shortcut", "index"), &PopupMenu::get_item_shortcut);
+ ClassDB::bind_method(D_METHOD("get_item_horizontal_offset", "index"), &PopupMenu::get_item_horizontal_offset);
ClassDB::bind_method(D_METHOD("set_current_index", "index"), &PopupMenu::set_current_index);
ClassDB::bind_method(D_METHOD("get_current_index"), &PopupMenu::get_current_index);
@@ -1895,7 +1925,7 @@ void PopupMenu::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "hide_on_item_selection"), "set_hide_on_item_selection", "is_hide_on_item_selection");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "hide_on_checkable_item_selection"), "set_hide_on_checkable_item_selection", "is_hide_on_checkable_item_selection");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "hide_on_state_item_selection"), "set_hide_on_state_item_selection", "is_hide_on_state_item_selection");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "submenu_popup_delay"), "set_submenu_popup_delay", "get_submenu_popup_delay");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "submenu_popup_delay", PROPERTY_HINT_NONE, "suffix:s"), "set_submenu_popup_delay", "get_submenu_popup_delay");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "allow_search"), "set_allow_search", "get_allow_search");
ADD_ARRAY_COUNT("Items", "item_count", "set_item_count", "get_item_count", "item_");
diff --git a/scene/gui/popup_menu.h b/scene/gui/popup_menu.h
index 12587b7e73..8218c6122e 100644
--- a/scene/gui/popup_menu.h
+++ b/scene/gui/popup_menu.h
@@ -148,6 +148,8 @@ public:
// this value should be updated to reflect the new size.
static const int ITEM_PROPERTY_SIZE = 10;
+ virtual void _parent_focused() override;
+
void add_item(const String &p_label, int p_id = -1, Key p_accel = Key::NONE);
void add_icon_item(const Ref<Texture2D> &p_icon, const String &p_label, int p_id = -1, Key p_accel = Key::NONE);
void add_check_item(const String &p_label, int p_id = -1, Key p_accel = Key::NONE);
@@ -184,7 +186,7 @@ public:
void set_item_as_radio_checkable(int p_idx, bool p_radio_checkable);
void set_item_tooltip(int p_idx, const String &p_tooltip);
void set_item_shortcut(int p_idx, const Ref<Shortcut> &p_shortcut, bool p_global = false);
- void set_item_h_offset(int p_idx, int p_offset);
+ void set_item_horizontal_offset(int p_idx, int p_offset);
void set_item_multistate(int p_idx, int p_state);
void toggle_item_multistate(int p_idx);
void set_item_shortcut_disabled(int p_idx, bool p_disabled);
@@ -210,6 +212,7 @@ public:
bool is_item_shortcut_disabled(int p_idx) const;
String get_item_tooltip(int p_idx) const;
Ref<Shortcut> get_item_shortcut(int p_idx) const;
+ int get_item_horizontal_offset(int p_idx) const;
int get_item_state(int p_idx) const;
void set_current_index(int p_idx);
diff --git a/scene/gui/reference_rect.cpp b/scene/gui/reference_rect.cpp
index ed79da5c22..5190a5a7d2 100644
--- a/scene/gui/reference_rect.cpp
+++ b/scene/gui/reference_rect.cpp
@@ -83,6 +83,6 @@ void ReferenceRect::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_editor_only", "enabled"), &ReferenceRect::set_editor_only);
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "border_color"), "set_border_color", "get_border_color");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "border_width", PROPERTY_HINT_RANGE, "0.0,5.0,0.1,or_greater"), "set_border_width", "get_border_width");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "border_width", PROPERTY_HINT_RANGE, "0.0,5.0,0.1,or_greater,suffix:px"), "set_border_width", "get_border_width");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "editor_only"), "set_editor_only", "get_editor_only");
}
diff --git a/scene/gui/rich_text_label.cpp b/scene/gui/rich_text_label.cpp
index 94c2a9e64b..0516c8e722 100644
--- a/scene/gui/rich_text_label.cpp
+++ b/scene/gui/rich_text_label.cpp
@@ -414,7 +414,7 @@ float RichTextLabel::_resize_line(ItemFrame *p_frame, int p_line, const Ref<Font
}
l.offset.y = p_h;
- return l.offset.y + l.text_buf->get_size().y + l.text_buf->get_line_count() * get_theme_constant(SNAME("line_separation"));
+ return _calculate_line_vertical_offset(l);
}
float RichTextLabel::_shape_line(ItemFrame *p_frame, int p_line, const Ref<Font> &p_base_font, int p_base_font_size, int p_width, float p_h, int *r_char_offset) {
@@ -426,16 +426,16 @@ float RichTextLabel::_shape_line(ItemFrame *p_frame, int p_line, const Ref<Font>
uint16_t autowrap_flags = TextServer::BREAK_MANDATORY;
switch (autowrap_mode) {
- case AUTOWRAP_WORD_SMART:
+ case TextServer::AUTOWRAP_WORD_SMART:
autowrap_flags = TextServer::BREAK_WORD_BOUND_ADAPTIVE | TextServer::BREAK_MANDATORY;
break;
- case AUTOWRAP_WORD:
+ case TextServer::AUTOWRAP_WORD:
autowrap_flags = TextServer::BREAK_WORD_BOUND | TextServer::BREAK_MANDATORY;
break;
- case AUTOWRAP_ARBITRARY:
+ case TextServer::AUTOWRAP_ARBITRARY:
autowrap_flags = TextServer::BREAK_GRAPHEME_BOUND | TextServer::BREAK_MANDATORY;
break;
- case AUTOWRAP_OFF:
+ case TextServer::AUTOWRAP_OFF:
break;
}
@@ -462,7 +462,7 @@ float RichTextLabel::_shape_line(ItemFrame *p_frame, int p_line, const Ref<Font>
Item *it_to = (p_line + 1 < (int)p_frame->lines.size()) ? p_frame->lines[p_line + 1].from : nullptr;
int remaining_characters = visible_characters - l.char_offset;
for (Item *it = l.from; it && it != it_to; it = _get_next_item(it)) {
- if (visible_chars_behavior == VC_CHARS_BEFORE_SHAPING && visible_characters >= 0 && remaining_characters <= 0) {
+ if (visible_chars_behavior == TextServer::VC_CHARS_BEFORE_SHAPING && visible_characters >= 0 && remaining_characters <= 0) {
break;
}
switch (it->type) {
@@ -501,7 +501,7 @@ float RichTextLabel::_shape_line(ItemFrame *p_frame, int p_line, const Ref<Font>
Dictionary font_ftr = _find_font_features(it);
String lang = _find_language(it);
String tx = t->text;
- if (visible_chars_behavior == VC_CHARS_BEFORE_SHAPING && visible_characters >= 0 && remaining_characters >= 0) {
+ if (visible_chars_behavior == TextServer::VC_CHARS_BEFORE_SHAPING && visible_characters >= 0 && remaining_characters >= 0) {
tx = tx.substr(0, remaining_characters);
}
remaining_characters -= tx.length();
@@ -683,7 +683,7 @@ float RichTextLabel::_shape_line(ItemFrame *p_frame, int p_line, const Ref<Font>
*r_char_offset = l.char_offset + l.char_count;
l.offset.y = p_h;
- return l.offset.y + l.text_buf->get_size().y + l.text_buf->get_line_count() * get_theme_constant(SNAME("line_separation"));
+ return _calculate_line_vertical_offset(l);
}
int RichTextLabel::_draw_line(ItemFrame *p_frame, int p_line, const Vector2 &p_ofs, int p_width, const Color &p_base_color, int p_outline_size, const Color &p_outline_color, const Color &p_font_shadow_color, int p_shadow_outline_size, const Point2 &p_shadow_ofs, int &r_processed_glyphs) {
@@ -707,9 +707,9 @@ int RichTextLabel::_draw_line(ItemFrame *p_frame, int p_line, const Vector2 &p_o
bool rtl = (l.text_buf->get_direction() == TextServer::DIRECTION_RTL);
bool lrtl = is_layout_rtl();
- bool trim_chars = (visible_characters >= 0) && (visible_chars_behavior == VC_CHARS_AFTER_SHAPING);
- bool trim_glyphs_ltr = (visible_characters >= 0) && ((visible_chars_behavior == VC_GLYPHS_LTR) || ((visible_chars_behavior == VC_GLYPHS_AUTO) && !lrtl));
- bool trim_glyphs_rtl = (visible_characters >= 0) && ((visible_chars_behavior == VC_GLYPHS_RTL) || ((visible_chars_behavior == VC_GLYPHS_AUTO) && lrtl));
+ bool trim_chars = (visible_characters >= 0) && (visible_chars_behavior == TextServer::VC_CHARS_AFTER_SHAPING);
+ bool trim_glyphs_ltr = (visible_characters >= 0) && ((visible_chars_behavior == TextServer::VC_GLYPHS_LTR) || ((visible_chars_behavior == TextServer::VC_GLYPHS_AUTO) && !lrtl));
+ bool trim_glyphs_rtl = (visible_characters >= 0) && ((visible_chars_behavior == TextServer::VC_GLYPHS_RTL) || ((visible_chars_behavior == TextServer::VC_GLYPHS_AUTO) && lrtl));
int total_glyphs = (trim_glyphs_ltr || trim_glyphs_rtl) ? get_total_glyph_count() : 0;
int visible_glyphs = total_glyphs * percent_visible;
@@ -1243,8 +1243,8 @@ int RichTextLabel::_draw_line(ItemFrame *p_frame, int p_line, const Vector2 &p_o
// Draw glyphs.
for (int j = 0; j < glyphs[i].repeat; j++) {
+ bool skip = (trim_chars && l.char_offset + glyphs[i].end > visible_characters) || (trim_glyphs_ltr && (r_processed_glyphs >= visible_glyphs)) || (trim_glyphs_rtl && (r_processed_glyphs < total_glyphs - visible_glyphs));
if (visible) {
- bool skip = (trim_chars && l.char_offset + glyphs[i].end > visible_characters) || (trim_glyphs_ltr && (r_processed_glyphs >= visible_glyphs)) || (trim_glyphs_rtl && (r_processed_glyphs < total_glyphs - visible_glyphs));
if (!skip) {
if (frid != RID()) {
TS->font_draw_glyph(frid, ci, glyphs[i].font_size, p_ofs + fx_offset + off, gl, selected ? selection_fg : font_color);
@@ -1254,6 +1254,27 @@ int RichTextLabel::_draw_line(ItemFrame *p_frame, int p_line, const Vector2 &p_o
}
r_processed_glyphs++;
}
+ if (skip) {
+ // End underline/overline/strikethrough is previous glyph is skipped.
+ if (ul_started) {
+ ul_started = false;
+ float y_off = TS->shaped_text_get_underline_position(rid);
+ float underline_width = TS->shaped_text_get_underline_thickness(rid) * get_theme_default_base_scale();
+ draw_line(ul_start + Vector2(0, y_off), p_ofs + Vector2(off.x, off.y + y_off), ul_color, underline_width);
+ }
+ if (dot_ul_started) {
+ dot_ul_started = false;
+ float y_off = TS->shaped_text_get_underline_position(rid);
+ float underline_width = TS->shaped_text_get_underline_thickness(rid) * get_theme_default_base_scale();
+ draw_dashed_line(dot_ul_start + Vector2(0, y_off), p_ofs + Vector2(off.x, off.y + y_off), dot_ul_color, underline_width, underline_width * 2);
+ }
+ if (st_started) {
+ st_started = false;
+ float y_off = -TS->shaped_text_get_ascent(rid) + TS->shaped_text_get_size(rid).y / 2;
+ float underline_width = TS->shaped_text_get_underline_thickness(rid) * get_theme_default_base_scale();
+ draw_line(st_start + Vector2(0, y_off), p_ofs + Vector2(off.x, off.y + y_off), st_color, underline_width);
+ }
+ }
off.x += glyphs[i].advance;
}
}
@@ -1566,7 +1587,7 @@ int RichTextLabel::_find_first_line(int p_from, int p_to, int p_vofs) const {
while (l < r) {
int m = Math::floor(double(l + r) / 2.0);
MutexLock lock(main->lines[m].text_buf->get_mutex());
- int ofs = main->lines[m].offset.y + main->lines[m].text_buf->get_size().y + main->lines[m].text_buf->get_line_count() * get_theme_constant(SNAME("line_separation"));
+ int ofs = _calculate_line_vertical_offset(main->lines[m]);
if (ofs < p_vofs) {
l = m + 1;
} else {
@@ -1576,6 +1597,10 @@ int RichTextLabel::_find_first_line(int p_from, int p_to, int p_vofs) const {
return l;
}
+_FORCE_INLINE_ float RichTextLabel::_calculate_line_vertical_offset(const RichTextLabel::Line &line) const {
+ return line.get_height(get_theme_constant(SNAME("line_separation")));
+}
+
void RichTextLabel::_notification(int p_what) {
switch (p_what) {
case NOTIFICATION_MOUSE_EXIT: {
@@ -1609,6 +1634,7 @@ void RichTextLabel::_notification(int p_what) {
update();
} break;
+ case NOTIFICATION_PREDELETE:
case NOTIFICATION_EXIT_TREE: {
_stop_thread();
} break;
@@ -2489,7 +2515,7 @@ bool RichTextLabel::_validate_line_caches() {
// Resize lines without reshaping.
int fi = main->first_resized_line.load();
- float total_height = 0;
+ float total_height = (fi == 0) ? 0 : _calculate_line_vertical_offset(main->lines[fi - 1]);
for (int i = fi; i < (int)main->lines.size(); i++) {
total_height = _resize_line(main, i, base_font, base_font_size, text_rect.get_size().width - scroll_w, total_height);
@@ -2551,6 +2577,10 @@ bool RichTextLabel::_validate_line_caches() {
void RichTextLabel::_process_line_caches() {
// Shape invalid lines.
+ if (!is_inside_tree()) {
+ return;
+ }
+
MutexLock data_lock(data_mutex);
Rect2 text_rect = _get_text_rect();
@@ -2560,10 +2590,9 @@ void RichTextLabel::_process_line_caches() {
int fi = main->first_invalid_line.load();
int total_chars = (fi == 0) ? 0 : (main->lines[fi].char_offset + main->lines[fi].char_count);
- float total_height = 0;
+ float total_height = (fi == 0) ? 0 : _calculate_line_vertical_offset(main->lines[fi - 1]);
for (int i = fi; i < (int)main->lines.size(); i++) {
total_height = _shape_line(main, i, base_font, base_font_size, text_rect.get_size().width - scroll_w, total_height, &total_chars);
-
updating_scroll = true;
bool exceeds = total_height > ctrl_height && scroll_active;
if (exceeds != scroll_visible) {
@@ -2577,11 +2606,11 @@ void RichTextLabel::_process_line_caches() {
scroll_w = 0;
vscroll->hide();
}
-
main->first_invalid_line.store(0);
main->first_resized_line.store(0);
main->first_invalid_font_line.store(0);
+ // since scroll was added or removed we need to resize all lines
total_height = 0;
for (int j = 0; j <= i; j++) {
total_height = _resize_line(main, j, base_font, base_font_size, text_rect.get_size().width - scroll_w, total_height);
@@ -3369,21 +3398,34 @@ void RichTextLabel::append_text(const String &p_bbcode) {
bool in_bold = false;
bool in_italics = false;
+ bool after_list_open_tag = false;
+ bool after_list_close_tag = false;
set_process_internal(false);
- while (pos < p_bbcode.length()) {
+ while (pos <= p_bbcode.length()) {
int brk_pos = p_bbcode.find("[", pos);
if (brk_pos < 0) {
brk_pos = p_bbcode.length();
}
- if (brk_pos > pos) {
- add_text(p_bbcode.substr(pos, brk_pos - pos));
+ String text = brk_pos > pos ? p_bbcode.substr(pos, brk_pos - pos) : "";
+
+ // Trim the first newline character, it may be added later as needed.
+ if (after_list_close_tag || after_list_open_tag) {
+ text = text.trim_prefix("\n");
}
if (brk_pos == p_bbcode.length()) {
+ // For tags that are not properly closed.
+ if (text.is_empty() && after_list_open_tag) {
+ text = "\n";
+ }
+
+ if (!text.is_empty()) {
+ add_text(text);
+ }
break; //nothing else to add
}
@@ -3391,7 +3433,8 @@ void RichTextLabel::append_text(const String &p_bbcode) {
if (brk_end == -1) {
//no close, add the rest
- add_text(p_bbcode.substr(brk_pos, p_bbcode.length() - brk_pos));
+ text += p_bbcode.substr(brk_pos, p_bbcode.length() - brk_pos);
+ add_text(text);
break;
}
@@ -3437,18 +3480,60 @@ void RichTextLabel::append_text(const String &p_bbcode) {
}
if (!tag_ok) {
- add_text("[" + tag);
+ text += "[" + tag;
+ add_text(text);
+ after_list_open_tag = false;
+ after_list_close_tag = false;
pos = brk_end;
continue;
}
+ if (text.is_empty() && after_list_open_tag) {
+ text = "\n"; // Make empty list have at least one item.
+ }
+ after_list_open_tag = false;
+
+ if (tag == "/ol" || tag == "/ul") {
+ if (!text.is_empty()) {
+ // Make sure text ends with a newline character, that is, the last item
+ // will wrap at the end of block.
+ if (!text.ends_with("\n")) {
+ text += "\n";
+ }
+ } else if (!after_list_close_tag) {
+ text = "\n"; // Make the innermost list item wrap at the end of lists.
+ }
+ after_list_close_tag = true;
+ } else {
+ after_list_close_tag = false;
+ }
+
+ if (!text.is_empty()) {
+ add_text(text);
+ }
+
tag_stack.pop_front();
pos = brk_end + 1;
if (tag != "/img" && tag != "/dropcap") {
pop();
}
+ continue;
+ }
+
+ if (tag == "ol" || tag.begins_with("ol ") || tag == "ul" || tag.begins_with("ul ")) {
+ if (text.is_empty() && after_list_open_tag) {
+ text = "\n"; // Make each list have at least one item at the beginning.
+ }
+ after_list_open_tag = true;
+ } else {
+ after_list_open_tag = false;
+ }
+ if (!text.is_empty()) {
+ add_text(text);
+ }
+ after_list_close_tag = false;
- } else if (tag == "b") {
+ if (tag == "b") {
//use bold font
in_bold = true;
if (in_italics) {
@@ -4667,7 +4752,7 @@ String RichTextLabel::get_language() const {
return language;
}
-void RichTextLabel::set_autowrap_mode(RichTextLabel::AutowrapMode p_mode) {
+void RichTextLabel::set_autowrap_mode(TextServer::AutowrapMode p_mode) {
if (autowrap_mode != p_mode) {
_stop_thread();
@@ -4678,7 +4763,7 @@ void RichTextLabel::set_autowrap_mode(RichTextLabel::AutowrapMode p_mode) {
}
}
-RichTextLabel::AutowrapMode RichTextLabel::get_autowrap_mode() const {
+TextServer::AutowrapMode RichTextLabel::get_autowrap_mode() const {
return autowrap_mode;
}
@@ -4693,7 +4778,7 @@ void RichTextLabel::set_percent_visible(float p_percent) {
visible_characters = get_total_character_count() * p_percent;
percent_visible = p_percent;
}
- if (visible_chars_behavior == VC_CHARS_BEFORE_SHAPING) {
+ if (visible_chars_behavior == TextServer::VC_CHARS_BEFORE_SHAPING) {
main->first_invalid_line.store(0); //invalidate ALL
_validate_line_caches();
}
@@ -4910,7 +4995,7 @@ void RichTextLabel::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "bbcode_enabled"), "set_use_bbcode", "is_using_bbcode");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "threaded"), "set_threaded", "is_threaded");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "progress_bar_delay"), "set_progress_bar_delay", "get_progress_bar_delay");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "progress_bar_delay", PROPERTY_HINT_NONE, "suffix:ms"), "set_progress_bar_delay", "get_progress_bar_delay");
ADD_PROPERTY(PropertyInfo(Variant::INT, "tab_size", PROPERTY_HINT_RANGE, "0,24,1"), "set_tab_size", "get_tab_size");
ADD_PROPERTY(PropertyInfo(Variant::STRING, "text", PROPERTY_HINT_MULTILINE_TEXT), "set_text", "get_text");
@@ -4947,11 +5032,6 @@ void RichTextLabel::_bind_methods() {
ADD_SIGNAL(MethodInfo("finished"));
- BIND_ENUM_CONSTANT(AUTOWRAP_OFF);
- BIND_ENUM_CONSTANT(AUTOWRAP_ARBITRARY);
- BIND_ENUM_CONSTANT(AUTOWRAP_WORD);
- BIND_ENUM_CONSTANT(AUTOWRAP_WORD_SMART);
-
BIND_ENUM_CONSTANT(LIST_NUMBERS);
BIND_ENUM_CONSTANT(LIST_LETTERS);
BIND_ENUM_CONSTANT(LIST_ROMAN);
@@ -4984,19 +5064,13 @@ void RichTextLabel::_bind_methods() {
BIND_ENUM_CONSTANT(ITEM_HINT);
BIND_ENUM_CONSTANT(ITEM_DROPCAP);
BIND_ENUM_CONSTANT(ITEM_CUSTOMFX);
-
- BIND_ENUM_CONSTANT(VC_CHARS_BEFORE_SHAPING);
- BIND_ENUM_CONSTANT(VC_CHARS_AFTER_SHAPING);
- BIND_ENUM_CONSTANT(VC_GLYPHS_AUTO);
- BIND_ENUM_CONSTANT(VC_GLYPHS_LTR);
- BIND_ENUM_CONSTANT(VC_GLYPHS_RTL);
}
-RichTextLabel::VisibleCharactersBehavior RichTextLabel::get_visible_characters_behavior() const {
+TextServer::VisibleCharactersBehavior RichTextLabel::get_visible_characters_behavior() const {
return visible_chars_behavior;
}
-void RichTextLabel::set_visible_characters_behavior(RichTextLabel::VisibleCharactersBehavior p_behavior) {
+void RichTextLabel::set_visible_characters_behavior(TextServer::VisibleCharactersBehavior p_behavior) {
if (visible_chars_behavior != p_behavior) {
_stop_thread();
@@ -5020,7 +5094,7 @@ void RichTextLabel::set_visible_characters(int p_visible) {
percent_visible = (float)p_visible / (float)total_char_count;
}
}
- if (visible_chars_behavior == VC_CHARS_BEFORE_SHAPING) {
+ if (visible_chars_behavior == TextServer::VC_CHARS_BEFORE_SHAPING) {
main->first_invalid_line.store(0); //invalidate ALL
_validate_line_caches();
}
diff --git a/scene/gui/rich_text_label.h b/scene/gui/rich_text_label.h
index 7fbd5f1745..c697320976 100644
--- a/scene/gui/rich_text_label.h
+++ b/scene/gui/rich_text_label.h
@@ -40,13 +40,6 @@ class RichTextLabel : public Control {
GDCLASS(RichTextLabel, Control);
public:
- enum AutowrapMode {
- AUTOWRAP_OFF,
- AUTOWRAP_ARBITRARY,
- AUTOWRAP_WORD,
- AUTOWRAP_WORD_SMART
- };
-
enum ListType {
LIST_NUMBERS,
LIST_LETTERS,
@@ -84,14 +77,6 @@ public:
ITEM_CUSTOMFX
};
- enum VisibleCharactersBehavior {
- VC_CHARS_BEFORE_SHAPING,
- VC_CHARS_AFTER_SHAPING,
- VC_GLYPHS_AUTO,
- VC_GLYPHS_LTR,
- VC_GLYPHS_RTL,
- };
-
enum MenuItems {
MENU_COPY,
MENU_SELECT_ALL,
@@ -117,6 +102,10 @@ private:
int char_count = 0;
Line() { text_buf.instantiate(); }
+
+ _FORCE_INLINE_ float get_height(float line_separation) const {
+ return offset.y + text_buf->get_size().y + text_buf->get_line_count() * line_separation;
+ }
};
struct Item {
@@ -380,7 +369,7 @@ private:
VScrollBar *vscroll = nullptr;
- AutowrapMode autowrap_mode = AUTOWRAP_WORD_SMART;
+ TextServer::AutowrapMode autowrap_mode = TextServer::AUTOWRAP_WORD_SMART;
bool scroll_visible = false;
bool scroll_follow = false;
@@ -456,7 +445,7 @@ private:
int visible_characters = -1;
float percent_visible = 1.0;
- VisibleCharactersBehavior visible_chars_behavior = VC_CHARS_BEFORE_SHAPING;
+ TextServer::VisibleCharactersBehavior visible_chars_behavior = TextServer::VC_CHARS_BEFORE_SHAPING;
bool _is_click_inside_selection() const;
void _find_click(ItemFrame *p_frame, const Point2i &p_click, ItemFrame **r_click_frame = nullptr, int *r_click_line = nullptr, Item **r_click_item = nullptr, int *r_click_char = nullptr, bool *r_outside = nullptr);
@@ -504,6 +493,8 @@ private:
void _scroll_changed(double);
int _find_first_line(int p_from, int p_to, int p_vofs) const;
+ _FORCE_INLINE_ float _calculate_line_vertical_offset(const Line &line) const;
+
virtual void gui_input(const Ref<InputEvent> &p_event) override;
virtual String get_tooltip(const Point2 &p_pos) const override;
Item *_get_next_item(Item *p_item, bool p_free = false) const;
@@ -658,8 +649,8 @@ public:
void set_language(const String &p_language);
String get_language() const;
- void set_autowrap_mode(AutowrapMode p_mode);
- AutowrapMode get_autowrap_mode() const;
+ void set_autowrap_mode(TextServer::AutowrapMode p_mode);
+ TextServer::AutowrapMode get_autowrap_mode() const;
void set_structured_text_bidi_override(TextServer::StructuredTextParser p_parser);
TextServer::StructuredTextParser get_structured_text_bidi_override() const;
@@ -677,8 +668,8 @@ public:
void set_percent_visible(float p_percent);
float get_percent_visible() const;
- VisibleCharactersBehavior get_visible_characters_behavior() const;
- void set_visible_characters_behavior(VisibleCharactersBehavior p_behavior);
+ TextServer::VisibleCharactersBehavior get_visible_characters_behavior() const;
+ void set_visible_characters_behavior(TextServer::VisibleCharactersBehavior p_behavior);
void set_effects(Array p_effects);
Array get_effects();
@@ -692,9 +683,7 @@ public:
~RichTextLabel();
};
-VARIANT_ENUM_CAST(RichTextLabel::AutowrapMode);
VARIANT_ENUM_CAST(RichTextLabel::ListType);
VARIANT_ENUM_CAST(RichTextLabel::ItemType);
-VARIANT_ENUM_CAST(RichTextLabel::VisibleCharactersBehavior);
#endif // RICH_TEXT_LABEL_H
diff --git a/scene/gui/scroll_bar.cpp b/scene/gui/scroll_bar.cpp
index e1b0e8cca8..f387f91a8b 100644
--- a/scene/gui/scroll_bar.cpp
+++ b/scene/gui/scroll_bar.cpp
@@ -622,7 +622,7 @@ void ScrollBar::_bind_methods() {
ADD_SIGNAL(MethodInfo("scrolling"));
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "custom_step", PROPERTY_HINT_RANGE, "-1,4096"), "set_custom_step", "get_custom_step");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "custom_step", PROPERTY_HINT_RANGE, "-1,4096,suffix:px"), "set_custom_step", "get_custom_step");
}
ScrollBar::ScrollBar(Orientation p_orientation) {
diff --git a/scene/gui/scroll_container.cpp b/scene/gui/scroll_container.cpp
index 135bad4689..871cc520e9 100644
--- a/scene/gui/scroll_container.cpp
+++ b/scene/gui/scroll_container.cpp
@@ -578,8 +578,8 @@ void ScrollContainer::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "follow_focus"), "set_follow_focus", "is_following_focus");
ADD_GROUP("Scroll", "scroll_");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "scroll_horizontal"), "set_h_scroll", "get_h_scroll");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "scroll_vertical"), "set_v_scroll", "get_v_scroll");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "scroll_horizontal", PROPERTY_HINT_NONE, "suffix:px"), "set_h_scroll", "get_h_scroll");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "scroll_vertical", PROPERTY_HINT_NONE, "suffix:px"), "set_v_scroll", "get_v_scroll");
ADD_PROPERTY(PropertyInfo(Variant::INT, "horizontal_scroll_mode", PROPERTY_HINT_ENUM, "Disabled,Auto,Always Show,Never Show"), "set_horizontal_scroll_mode", "get_horizontal_scroll_mode");
ADD_PROPERTY(PropertyInfo(Variant::INT, "vertical_scroll_mode", PROPERTY_HINT_ENUM, "Disabled,Auto,Always Show,Never Show"), "set_vertical_scroll_mode", "get_vertical_scroll_mode");
ADD_PROPERTY(PropertyInfo(Variant::INT, "scroll_deadzone"), "set_deadzone", "get_deadzone");
diff --git a/scene/gui/split_container.cpp b/scene/gui/split_container.cpp
index 6845d46721..d7aa516ee6 100644
--- a/scene/gui/split_container.cpp
+++ b/scene/gui/split_container.cpp
@@ -377,7 +377,7 @@ void SplitContainer::_bind_methods() {
ADD_SIGNAL(MethodInfo("dragged", PropertyInfo(Variant::INT, "offset")));
- ADD_PROPERTY(PropertyInfo(Variant::INT, "split_offset"), "set_split_offset", "get_split_offset");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "split_offset", PROPERTY_HINT_NONE, "suffix:px"), "set_split_offset", "get_split_offset");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "collapsed"), "set_collapsed", "is_collapsed");
ADD_PROPERTY(PropertyInfo(Variant::INT, "dragger_visibility", PROPERTY_HINT_ENUM, "Visible,Hidden,Hidden and Collapsed"), "set_dragger_visibility", "get_dragger_visibility");
diff --git a/scene/gui/tab_bar.cpp b/scene/gui/tab_bar.cpp
index fec8d11bef..b4c90596f9 100644
--- a/scene/gui/tab_bar.cpp
+++ b/scene/gui/tab_bar.cpp
@@ -1606,7 +1606,7 @@ void TabBar::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "tab_alignment", PROPERTY_HINT_ENUM, "Left,Center,Right"), "set_tab_alignment", "get_tab_alignment");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "clip_tabs"), "set_clip_tabs", "get_clip_tabs");
ADD_PROPERTY(PropertyInfo(Variant::INT, "tab_close_display_policy", PROPERTY_HINT_ENUM, "Show Never,Show Active Only,Show Always"), "set_tab_close_display_policy", "get_tab_close_display_policy");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "max_tab_width", PROPERTY_HINT_RANGE, "0,99999,1"), "set_max_tab_width", "get_max_tab_width");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "max_tab_width", PROPERTY_HINT_RANGE, "0,99999,1,suffix:px"), "set_max_tab_width", "get_max_tab_width");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "scrolling_enabled"), "set_scrolling_enabled", "get_scrolling_enabled");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "drag_to_rearrange_enabled"), "set_drag_to_rearrange_enabled", "get_drag_to_rearrange_enabled");
ADD_PROPERTY(PropertyInfo(Variant::INT, "tabs_rearrange_group"), "set_tabs_rearrange_group", "get_tabs_rearrange_group");
diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp
index 0f74c9c357..d9a91590f7 100644
--- a/scene/gui/text_edit.cpp
+++ b/scene/gui/text_edit.cpp
@@ -3080,7 +3080,7 @@ void TextEdit::set_line(int p_line, const String &p_new_text) {
_remove_text(p_line, 0, p_line, text[p_line].length());
_insert_text(p_line, 0, p_new_text);
if (caret.line == p_line && caret.column > p_new_text.length()) {
- set_caret_column(MIN(caret.column, p_new_text.length()), false);
+ set_caret_column(p_new_text.length(), false);
}
if (has_selection() && p_line == selection.to_line && selection.to_column > text[p_line].length()) {
selection.to_column = text[p_line].length();
@@ -5420,19 +5420,19 @@ void TextEdit::_bind_methods() {
ADD_GROUP("Scroll", "scroll_");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "scroll_smooth"), "set_smooth_scroll_enable", "is_smooth_scroll_enabled");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "scroll_v_scroll_speed"), "set_v_scroll_speed", "get_v_scroll_speed");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "scroll_v_scroll_speed", PROPERTY_HINT_NONE, "suffix:px/s"), "set_v_scroll_speed", "get_v_scroll_speed");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "scroll_past_end_of_file"), "set_scroll_past_end_of_file_enabled", "is_scroll_past_end_of_file_enabled");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "scroll_vertical"), "set_v_scroll", "get_v_scroll");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "scroll_horizontal"), "set_h_scroll", "get_h_scroll");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "scroll_vertical", PROPERTY_HINT_NONE, "suffix:px"), "set_v_scroll", "get_v_scroll");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "scroll_horizontal", PROPERTY_HINT_NONE, "suffix:px"), "set_h_scroll", "get_h_scroll");
ADD_GROUP("Minimap", "minimap_");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "minimap_draw"), "set_draw_minimap", "is_drawing_minimap");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "minimap_width"), "set_minimap_width", "get_minimap_width");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "minimap_width", PROPERTY_HINT_NONE, "suffix:px"), "set_minimap_width", "get_minimap_width");
ADD_GROUP("Caret", "caret_");
ADD_PROPERTY(PropertyInfo(Variant::INT, "caret_type", PROPERTY_HINT_ENUM, "Line,Block"), "set_caret_type", "get_caret_type");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "caret_blink"), "set_caret_blink_enabled", "is_caret_blink_enabled");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "caret_blink_speed", PROPERTY_HINT_RANGE, "0.1,10,0.01"), "set_caret_blink_speed", "get_caret_blink_speed");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "caret_blink_speed", PROPERTY_HINT_RANGE, "0.1,10,0.01,suffix:s"), "set_caret_blink_speed", "get_caret_blink_speed");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "caret_move_on_right_click"), "set_move_caret_on_right_click_enabled", "is_move_caret_on_right_click_enabled");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "caret_mid_grapheme"), "set_caret_mid_grapheme_enabled", "is_caret_mid_grapheme_enabled");
diff --git a/scene/gui/texture_progress_bar.cpp b/scene/gui/texture_progress_bar.cpp
index 081d065efe..94e0a6f226 100644
--- a/scene/gui/texture_progress_bar.cpp
+++ b/scene/gui/texture_progress_bar.cpp
@@ -633,16 +633,16 @@ void TextureProgressBar::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "nine_patch_stretch"), "set_nine_patch_stretch", "get_nine_patch_stretch");
ADD_GROUP("Stretch Margin", "stretch_margin_");
- ADD_PROPERTYI(PropertyInfo(Variant::INT, "stretch_margin_left", PROPERTY_HINT_RANGE, "0,16384,1"), "set_stretch_margin", "get_stretch_margin", SIDE_LEFT);
- ADD_PROPERTYI(PropertyInfo(Variant::INT, "stretch_margin_top", PROPERTY_HINT_RANGE, "0,16384,1"), "set_stretch_margin", "get_stretch_margin", SIDE_TOP);
- ADD_PROPERTYI(PropertyInfo(Variant::INT, "stretch_margin_right", PROPERTY_HINT_RANGE, "0,16384,1"), "set_stretch_margin", "get_stretch_margin", SIDE_RIGHT);
- ADD_PROPERTYI(PropertyInfo(Variant::INT, "stretch_margin_bottom", PROPERTY_HINT_RANGE, "0,16384,1"), "set_stretch_margin", "get_stretch_margin", SIDE_BOTTOM);
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "stretch_margin_left", PROPERTY_HINT_RANGE, "0,16384,1,suffix:px"), "set_stretch_margin", "get_stretch_margin", SIDE_LEFT);
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "stretch_margin_top", PROPERTY_HINT_RANGE, "0,16384,1,suffix:px"), "set_stretch_margin", "get_stretch_margin", SIDE_TOP);
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "stretch_margin_right", PROPERTY_HINT_RANGE, "0,16384,1,suffix:px"), "set_stretch_margin", "get_stretch_margin", SIDE_RIGHT);
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "stretch_margin_bottom", PROPERTY_HINT_RANGE, "0,16384,1,suffix:px"), "set_stretch_margin", "get_stretch_margin", SIDE_BOTTOM);
ADD_GROUP("Textures", "texture_");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "texture_under", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_under_texture", "get_under_texture");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "texture_over", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_over_texture", "get_over_texture");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "texture_progress", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_progress_texture", "get_progress_texture");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "texture_progress_offset"), "set_texture_progress_offset", "get_texture_progress_offset");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "texture_progress_offset", PROPERTY_HINT_NONE, "suffix:px"), "set_texture_progress_offset", "get_texture_progress_offset");
ADD_GROUP("Tint", "tint_");
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "tint_under"), "set_tint_under", "get_tint_under");
@@ -652,7 +652,7 @@ void TextureProgressBar::_bind_methods() {
ADD_GROUP("Radial Fill", "radial_");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "radial_initial_angle", PROPERTY_HINT_RANGE, "0.0,360.0,0.1,slider,degrees"), "set_radial_initial_angle", "get_radial_initial_angle");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "radial_fill_degrees", PROPERTY_HINT_RANGE, "0.0,360.0,0.1,slider,degrees"), "set_fill_degrees", "get_fill_degrees");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "radial_center_offset"), "set_radial_center_offset", "get_radial_center_offset");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "radial_center_offset", PROPERTY_HINT_NONE, "suffix:px"), "set_radial_center_offset", "get_radial_center_offset");
BIND_ENUM_CONSTANT(FILL_LEFT_TO_RIGHT);
BIND_ENUM_CONSTANT(FILL_RIGHT_TO_LEFT);
diff --git a/scene/gui/video_stream_player.cpp b/scene/gui/video_stream_player.cpp
index 20bc9a1028..122e36904b 100644
--- a/scene/gui/video_stream_player.cpp
+++ b/scene/gui/video_stream_player.cpp
@@ -448,7 +448,7 @@ void VideoStreamPlayer::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "autoplay"), "set_autoplay", "has_autoplay");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "paused"), "set_paused", "is_paused");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "expand"), "set_expand", "has_expand");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "buffering_msec", PROPERTY_HINT_RANGE, "10,1000"), "set_buffering_msec", "get_buffering_msec");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "buffering_msec", PROPERTY_HINT_RANGE, "10,1000,suffix:ms"), "set_buffering_msec", "get_buffering_msec");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "stream_position", PROPERTY_HINT_RANGE, "0,1280000,0.1", PROPERTY_USAGE_NONE), "set_stream_position", "get_stream_position");
ADD_PROPERTY(PropertyInfo(Variant::STRING_NAME, "bus", PROPERTY_HINT_ENUM, ""), "set_bus", "get_bus");
diff --git a/scene/main/canvas_item.cpp b/scene/main/canvas_item.cpp
index 20f3f82a4e..3dc358a6c2 100644
--- a/scene/main/canvas_item.cpp
+++ b/scene/main/canvas_item.cpp
@@ -239,7 +239,7 @@ void CanvasItem::_enter_canvas() {
get_viewport()->gui_reset_canvas_sort_index();
}
- get_tree()->call_group_flags(SceneTree::GROUP_CALL_UNIQUE, group, SNAME("_top_level_raise_self"));
+ get_tree()->call_group_flags(SceneTree::GROUP_CALL_UNIQUE | SceneTree::GROUP_CALL_DEFERRED, group, SNAME("_top_level_raise_self"));
} else {
CanvasItem *parent = get_parent_item();
@@ -320,7 +320,7 @@ void CanvasItem::_notification(int p_what) {
}
if (group != StringName()) {
- get_tree()->call_group_flags(SceneTree::GROUP_CALL_UNIQUE, group, "_top_level_raise_self");
+ get_tree()->call_group_flags(SceneTree::GROUP_CALL_UNIQUE | SceneTree::GROUP_CALL_DEFERRED, group, "_top_level_raise_self");
} else {
CanvasItem *p = get_parent_item();
ERR_FAIL_COND(!p);
diff --git a/scene/main/canvas_layer.cpp b/scene/main/canvas_layer.cpp
index da96246de2..3a071ef542 100644
--- a/scene/main/canvas_layer.cpp
+++ b/scene/main/canvas_layer.cpp
@@ -328,10 +328,10 @@ void CanvasLayer::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "layer", PROPERTY_HINT_RANGE, "-128,128,1"), "set_layer", "get_layer");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "visible"), "set_visible", "is_visible");
ADD_GROUP("Transform", "");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "offset"), "set_offset", "get_offset");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "offset", PROPERTY_HINT_NONE, "suffix:px"), "set_offset", "get_offset");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "rotation", PROPERTY_HINT_RANGE, "-1080,1080,0.1,or_lesser,or_greater,radians"), "set_rotation", "get_rotation");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "scale"), "set_scale", "get_scale");
- ADD_PROPERTY(PropertyInfo(Variant::TRANSFORM2D, "transform"), "set_transform", "get_transform");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "scale", PROPERTY_HINT_LINK), "set_scale", "get_scale");
+ ADD_PROPERTY(PropertyInfo(Variant::TRANSFORM2D, "transform", PROPERTY_HINT_NONE, "suffix:px"), "set_transform", "get_transform");
ADD_GROUP("", "");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "custom_viewport", PROPERTY_HINT_RESOURCE_TYPE, "Viewport", PROPERTY_USAGE_NONE), "set_custom_viewport", "get_custom_viewport");
ADD_GROUP("Follow Viewport", "follow_viewport");
diff --git a/scene/main/http_request.cpp b/scene/main/http_request.cpp
index 34b0e19d31..9a23bc65bf 100644
--- a/scene/main/http_request.cpp
+++ b/scene/main/http_request.cpp
@@ -607,12 +607,12 @@ void HTTPRequest::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_https_proxy", "host", "port"), &HTTPRequest::set_https_proxy);
ADD_PROPERTY(PropertyInfo(Variant::STRING, "download_file", PROPERTY_HINT_FILE), "set_download_file", "get_download_file");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "download_chunk_size", PROPERTY_HINT_RANGE, "256,16777216"), "set_download_chunk_size", "get_download_chunk_size");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "download_chunk_size", PROPERTY_HINT_RANGE, "256,16777216,suffix:B"), "set_download_chunk_size", "get_download_chunk_size");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "use_threads"), "set_use_threads", "is_using_threads");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "accept_gzip"), "set_accept_gzip", "is_accepting_gzip");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "body_size_limit", PROPERTY_HINT_RANGE, "-1,2000000000"), "set_body_size_limit", "get_body_size_limit");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "body_size_limit", PROPERTY_HINT_RANGE, "-1,2000000000,suffix:B"), "set_body_size_limit", "get_body_size_limit");
ADD_PROPERTY(PropertyInfo(Variant::INT, "max_redirects", PROPERTY_HINT_RANGE, "-1,64"), "set_max_redirects", "get_max_redirects");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "timeout", PROPERTY_HINT_RANGE, "0,3600,0.1,or_greater"), "set_timeout", "get_timeout");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "timeout", PROPERTY_HINT_RANGE, "0,3600,0.1,or_greater,suffix:s"), "set_timeout", "get_timeout");
ADD_SIGNAL(MethodInfo("request_completed", PropertyInfo(Variant::INT, "result"), PropertyInfo(Variant::INT, "response_code"), PropertyInfo(Variant::PACKED_STRING_ARRAY, "headers"), PropertyInfo(Variant::PACKED_BYTE_ARRAY, "body")));
diff --git a/scene/main/node.cpp b/scene/main/node.cpp
index 27f240164c..a30eb036db 100644
--- a/scene/main/node.cpp
+++ b/scene/main/node.cpp
@@ -300,7 +300,7 @@ void Node::_propagate_exit_tree() {
if (data.parent) {
Variant c = this;
const Variant *cptr = &c;
- data.parent->emit_signalp(SNAME("child_exited_tree"), &cptr, 1);
+ data.parent->emit_signalp(SNAME("child_exiting_tree"), &cptr, 1);
}
// exit groups
@@ -420,6 +420,9 @@ void Node::move_child_notify(Node *p_child) {
// to be used when not wanted
}
+void Node::owner_changed_notify() {
+}
+
void Node::set_physics_process(bool p_process) {
if (data.physics_process == p_process) {
return;
@@ -1544,6 +1547,8 @@ void Node::_set_owner_nocheck(Node *p_owner) {
data.owner = p_owner;
data.owner->data.owned.push_back(this);
data.OW = data.owner->data.owned.back();
+
+ owner_changed_notify();
}
void Node::_release_unique_name_in_owner() {
@@ -2973,7 +2978,7 @@ void Node::_bind_methods() {
ADD_SIGNAL(MethodInfo("tree_exiting"));
ADD_SIGNAL(MethodInfo("tree_exited"));
ADD_SIGNAL(MethodInfo("child_entered_tree", PropertyInfo(Variant::OBJECT, "node", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_DEFAULT, "Node")));
- ADD_SIGNAL(MethodInfo("child_exited_tree", PropertyInfo(Variant::OBJECT, "node", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_DEFAULT, "Node")));
+ ADD_SIGNAL(MethodInfo("child_exiting_tree", PropertyInfo(Variant::OBJECT, "node", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_DEFAULT, "Node")));
ADD_PROPERTY(PropertyInfo(Variant::STRING_NAME, "name", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NONE), "set_name", "get_name");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "unique_name_in_owner", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR), "set_unique_name_in_owner", "is_unique_name_in_owner");
diff --git a/scene/main/node.h b/scene/main/node.h
index 8de6c1ce69..5b7bc0a587 100644
--- a/scene/main/node.h
+++ b/scene/main/node.h
@@ -208,6 +208,7 @@ protected:
virtual void add_child_notify(Node *p_child);
virtual void remove_child_notify(Node *p_child);
virtual void move_child_notify(Node *p_child);
+ virtual void owner_changed_notify();
void _propagate_replace_owner(Node *p_owner, Node *p_by_owner);
diff --git a/scene/main/scene_tree.cpp b/scene/main/scene_tree.cpp
index b695dddf65..dd77877c7d 100644
--- a/scene/main/scene_tree.cpp
+++ b/scene/main/scene_tree.cpp
@@ -386,7 +386,7 @@ void SceneTree::set_group_flags(uint32_t p_call_flags, const StringName &p_group
}
void SceneTree::notify_group(const StringName &p_group, int p_notification) {
- notify_group_flags(0, p_group, p_notification);
+ notify_group_flags(GROUP_CALL_DEFAULT, p_group, p_notification);
}
void SceneTree::set_group(const StringName &p_group, const String &p_name, const Variant &p_value) {
@@ -1373,14 +1373,17 @@ SceneTree::SceneTree() {
root->set_as_audio_listener_2d(true);
current_scene = nullptr;
- const int msaa_mode = GLOBAL_DEF("rendering/anti_aliasing/quality/msaa", 0);
+ const int msaa_mode = GLOBAL_DEF_BASIC("rendering/anti_aliasing/quality/msaa", 0);
ProjectSettings::get_singleton()->set_custom_property_info("rendering/anti_aliasing/quality/msaa", PropertyInfo(Variant::INT, "rendering/anti_aliasing/quality/msaa", PROPERTY_HINT_ENUM, String::utf8("Disabled (Fastest),2× (Average),4× (Slow),8× (Slowest)")));
root->set_msaa(Viewport::MSAA(msaa_mode));
- const int ssaa_mode = GLOBAL_DEF("rendering/anti_aliasing/quality/screen_space_aa", 0);
+ const int ssaa_mode = GLOBAL_DEF_BASIC("rendering/anti_aliasing/quality/screen_space_aa", 0);
ProjectSettings::get_singleton()->set_custom_property_info("rendering/anti_aliasing/quality/screen_space_aa", PropertyInfo(Variant::INT, "rendering/anti_aliasing/quality/screen_space_aa", PROPERTY_HINT_ENUM, "Disabled (Fastest),FXAA (Fast)"));
root->set_screen_space_aa(Viewport::ScreenSpaceAA(ssaa_mode));
+ const bool use_taa = GLOBAL_DEF_BASIC("rendering/anti_aliasing/quality/use_taa", false);
+ root->set_use_taa(use_taa);
+
const bool use_debanding = GLOBAL_DEF("rendering/anti_aliasing/quality/use_debanding", false);
root->set_use_debanding(use_debanding);
diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp
index 590c73de0b..1ad011f867 100644
--- a/scene/main/viewport.cpp
+++ b/scene/main/viewport.cpp
@@ -161,29 +161,6 @@ ViewportTexture::~ViewportTexture() {
}
}
-/////////////////////////////////////
-
-// Aliases used to provide custom styles to tooltips in the default
-// theme and editor theme.
-// TooltipPanel is also used for custom tooltips, while TooltipLabel
-// is only relevant for default tooltips.
-
-class TooltipPanel : public PopupPanel {
- GDCLASS(TooltipPanel, PopupPanel);
-
-public:
- TooltipPanel() {}
-};
-
-class TooltipLabel : public Label {
- GDCLASS(TooltipLabel, Label);
-
-public:
- TooltipLabel() {}
-};
-
-/////////////////////////////////////
-
void Viewport::_sub_window_update_order() {
for (int i = 0; i < gui.sub_windows.size(); i++) {
RS::get_singleton()->canvas_item_set_draw_index(gui.sub_windows[i].canvas_item, i);
@@ -1221,7 +1198,8 @@ void Viewport::_gui_show_tooltip() {
}
// Popup window which houses the tooltip content.
- TooltipPanel *panel = memnew(TooltipPanel);
+ PopupPanel *panel = memnew(PopupPanel);
+ panel->set_theme_type_variation(SNAME("TooltipPanel"));
// Controls can implement `make_custom_tooltip` to provide their own tooltip.
// This should be a Control node which will be added as child to a TooltipPanel.
@@ -1229,7 +1207,8 @@ void Viewport::_gui_show_tooltip() {
// If no custom tooltip is given, use a default implementation.
if (!base_tooltip) {
- gui.tooltip_label = memnew(TooltipLabel);
+ gui.tooltip_label = memnew(Label);
+ gui.tooltip_label->set_theme_type_variation(SNAME("TooltipLabel"));
gui.tooltip_label->set_auto_translate(gui.tooltip_control->is_auto_translating());
gui.tooltip_label->set_text(tooltip_text);
base_tooltip = gui.tooltip_label;
@@ -2897,6 +2876,18 @@ Viewport::ScreenSpaceAA Viewport::get_screen_space_aa() const {
return screen_space_aa;
}
+void Viewport::set_use_taa(bool p_use_taa) {
+ if (use_taa == p_use_taa) {
+ return;
+ }
+ use_taa = p_use_taa;
+ RS::get_singleton()->viewport_set_use_taa(viewport, p_use_taa);
+}
+
+bool Viewport::is_using_taa() const {
+ return use_taa;
+}
+
void Viewport::set_use_debanding(bool p_use_debanding) {
if (use_debanding == p_use_debanding) {
return;
@@ -3458,8 +3449,8 @@ void Viewport::_own_world_3d_changed() {
_update_audio_listener_3d();
}
-void Viewport::set_use_own_world_3d(bool p_world_3d) {
- if (p_world_3d == own_world_3d.is_valid()) {
+void Viewport::set_use_own_world_3d(bool p_use_own_world_3d) {
+ if (p_use_own_world_3d == own_world_3d.is_valid()) {
return;
}
@@ -3467,18 +3458,18 @@ void Viewport::set_use_own_world_3d(bool p_world_3d) {
_propagate_exit_world_3d(this);
}
- if (!p_world_3d) {
- own_world_3d = Ref<World3D>();
- if (world_3d.is_valid()) {
- world_3d->disconnect(CoreStringNames::get_singleton()->changed, callable_mp(this, &Viewport::_own_world_3d_changed));
- }
- } else {
+ if (p_use_own_world_3d) {
if (world_3d.is_valid()) {
own_world_3d = world_3d->duplicate();
world_3d->connect(CoreStringNames::get_singleton()->changed, callable_mp(this, &Viewport::_own_world_3d_changed));
} else {
own_world_3d = Ref<World3D>(memnew(World3D));
}
+ } else {
+ own_world_3d = Ref<World3D>();
+ if (world_3d.is_valid()) {
+ world_3d->disconnect(CoreStringNames::get_singleton()->changed, callable_mp(this, &Viewport::_own_world_3d_changed));
+ }
}
if (is_inside_tree()) {
@@ -3632,6 +3623,9 @@ void Viewport::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_screen_space_aa", "screen_space_aa"), &Viewport::set_screen_space_aa);
ClassDB::bind_method(D_METHOD("get_screen_space_aa"), &Viewport::get_screen_space_aa);
+ ClassDB::bind_method(D_METHOD("set_use_taa", "enable"), &Viewport::set_use_taa);
+ ClassDB::bind_method(D_METHOD("is_using_taa"), &Viewport::is_using_taa);
+
ClassDB::bind_method(D_METHOD("set_use_debanding", "enable"), &Viewport::set_use_debanding);
ClassDB::bind_method(D_METHOD("is_using_debanding"), &Viewport::is_using_debanding);
@@ -3760,6 +3754,7 @@ void Viewport::_bind_methods() {
ADD_GROUP("Rendering", "");
ADD_PROPERTY(PropertyInfo(Variant::INT, "msaa", PROPERTY_HINT_ENUM, String::utf8("Disabled (Fastest),2× (Average),4× (Slow),8× (Slowest)")), "set_msaa", "get_msaa");
ADD_PROPERTY(PropertyInfo(Variant::INT, "screen_space_aa", PROPERTY_HINT_ENUM, "Disabled (Fastest),FXAA (Fast)"), "set_screen_space_aa", "get_screen_space_aa");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "use_taa"), "set_use_taa", "is_using_taa");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "use_debanding"), "set_use_debanding", "is_using_debanding");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "use_occlusion_culling"), "set_use_occlusion_culling", "is_using_occlusion_culling");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "mesh_lod_threshold", PROPERTY_HINT_RANGE, "0,1024,0.1"), "set_mesh_lod_threshold", "get_mesh_lod_threshold");
@@ -3858,6 +3853,7 @@ void Viewport::_bind_methods() {
BIND_ENUM_CONSTANT(DEBUG_DRAW_CLUSTER_DECALS);
BIND_ENUM_CONSTANT(DEBUG_DRAW_CLUSTER_REFLECTION_PROBES);
BIND_ENUM_CONSTANT(DEBUG_DRAW_OCCLUDERS)
+ BIND_ENUM_CONSTANT(DEBUG_DRAW_MOTION_VECTORS)
BIND_ENUM_CONSTANT(DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_NEAREST);
BIND_ENUM_CONSTANT(DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_LINEAR);
@@ -4053,8 +4049,8 @@ void SubViewport::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_clear_mode", "mode"), &SubViewport::set_clear_mode);
ClassDB::bind_method(D_METHOD("get_clear_mode"), &SubViewport::get_clear_mode);
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2I, "size"), "set_size", "get_size");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2I, "size_2d_override"), "set_size_2d_override", "get_size_2d_override");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2I, "size", PROPERTY_HINT_NONE, "suffix:px"), "set_size", "get_size");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2I, "size_2d_override", PROPERTY_HINT_NONE, "suffix:px"), "set_size_2d_override", "get_size_2d_override");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "size_2d_override_stretch"), "set_size_2d_override_stretch", "is_size_2d_override_stretch_enabled");
ADD_GROUP("Render Target", "render_target_");
ADD_PROPERTY(PropertyInfo(Variant::INT, "render_target_clear_mode", PROPERTY_HINT_ENUM, "Always,Never,Next Frame"), "set_clear_mode", "get_clear_mode");
diff --git a/scene/main/viewport.h b/scene/main/viewport.h
index 5bca5a2dda..a22a2acf49 100644
--- a/scene/main/viewport.h
+++ b/scene/main/viewport.h
@@ -160,6 +160,7 @@ public:
DEBUG_DRAW_CLUSTER_DECALS,
DEBUG_DRAW_CLUSTER_REFLECTION_PROBES,
DEBUG_DRAW_OCCLUDERS,
+ DEBUG_DRAW_MOTION_VECTORS,
};
enum DefaultCanvasItemTextureFilter {
@@ -291,6 +292,7 @@ private:
MSAA msaa = MSAA_DISABLED;
ScreenSpaceAA screen_space_aa = SCREEN_SPACE_AA_DISABLED;
+ bool use_taa = false;
Scaling3DMode scaling_3d_mode = SCALING_3D_MODE_BILINEAR;
float scaling_3d_scale = 1.0;
@@ -515,6 +517,9 @@ public:
void set_screen_space_aa(ScreenSpaceAA p_screen_space_aa);
ScreenSpaceAA get_screen_space_aa() const;
+ void set_use_taa(bool p_use_taa);
+ bool is_using_taa() const;
+
void set_scaling_3d_mode(Scaling3DMode p_scaling_3d_mode);
Scaling3DMode get_scaling_3d_mode() const;
@@ -676,7 +681,7 @@ public:
Ref<World3D> get_world_3d() const;
Ref<World3D> find_world_3d() const;
void _own_world_3d_changed();
- void set_use_own_world_3d(bool p_world_3d);
+ void set_use_own_world_3d(bool p_use_own_world_3d);
bool is_using_own_world_3d() const;
void _propagate_enter_world_3d(Node *p_node);
void _propagate_exit_world_3d(Node *p_node);
diff --git a/scene/main/window.cpp b/scene/main/window.cpp
index 193f18c075..69fb5fdf07 100644
--- a/scene/main/window.cpp
+++ b/scene/main/window.cpp
@@ -111,31 +111,19 @@ Size2i Window::get_real_size() const {
void Window::set_max_size(const Size2i &p_max_size) {
max_size = p_max_size;
- if (window_id != DisplayServer::INVALID_WINDOW_ID) {
- DisplayServer::get_singleton()->window_set_max_size(max_size, window_id);
- }
_update_window_size();
}
Size2i Window::get_max_size() const {
- if (window_id != DisplayServer::INVALID_WINDOW_ID) {
- max_size = DisplayServer::get_singleton()->window_get_max_size(window_id);
- }
return max_size;
}
void Window::set_min_size(const Size2i &p_min_size) {
min_size = p_min_size;
- if (!wrap_controls && window_id != DisplayServer::INVALID_WINDOW_ID) {
- DisplayServer::get_singleton()->window_set_min_size(min_size, window_id);
- }
_update_window_size();
}
Size2i Window::get_min_size() const {
- if (window_id != DisplayServer::INVALID_WINDOW_ID) {
- min_size = DisplayServer::get_singleton()->window_get_min_size(window_id);
- }
return min_size;
}
@@ -165,14 +153,26 @@ void Window::set_flag(Flags p_flag, bool p_enabled) {
embedder->_sub_window_update(this);
} else if (window_id != DisplayServer::INVALID_WINDOW_ID) {
+#ifdef TOOLS_ENABLED
+ if ((p_flag != FLAG_POPUP) || !(Engine::get_singleton()->is_editor_hint() && get_tree()->get_edited_scene_root() && (get_tree()->get_edited_scene_root()->is_ancestor_of(this) || get_tree()->get_edited_scene_root() == this))) {
+ DisplayServer::get_singleton()->window_set_flag(DisplayServer::WindowFlags(p_flag), p_enabled, window_id);
+ }
+#else
DisplayServer::get_singleton()->window_set_flag(DisplayServer::WindowFlags(p_flag), p_enabled, window_id);
+#endif
}
}
bool Window::get_flag(Flags p_flag) const {
ERR_FAIL_INDEX_V(p_flag, FLAG_MAX, false);
if (window_id != DisplayServer::INVALID_WINDOW_ID) {
+#ifdef TOOLS_ENABLED
+ if ((p_flag != FLAG_POPUP) || !(Engine::get_singleton()->is_editor_hint() && get_tree()->get_edited_scene_root() && (get_tree()->get_edited_scene_root()->is_ancestor_of(this) || get_tree()->get_edited_scene_root() == this))) {
+ flags[p_flag] = DisplayServer::get_singleton()->window_get_flag(DisplayServer::WindowFlags(p_flag), window_id);
+ }
+#else
flags[p_flag] = DisplayServer::get_singleton()->window_get_flag(DisplayServer::WindowFlags(p_flag), window_id);
+#endif
}
return flags[p_flag];
}
@@ -255,7 +255,15 @@ void Window::_make_window() {
#endif
DisplayServer::get_singleton()->window_set_title(tr_title, window_id);
DisplayServer::get_singleton()->window_attach_instance_id(get_instance_id(), window_id);
+#ifdef TOOLS_ENABLED
+ if (!(Engine::get_singleton()->is_editor_hint() && get_tree()->get_edited_scene_root() && (get_tree()->get_edited_scene_root()->is_ancestor_of(this) || get_tree()->get_edited_scene_root() == this))) {
+ DisplayServer::get_singleton()->window_set_exclusive(window_id, exclusive);
+ } else {
+ DisplayServer::get_singleton()->window_set_exclusive(window_id, false);
+ }
+#else
DisplayServer::get_singleton()->window_set_exclusive(window_id, exclusive);
+#endif
_update_window_size();
@@ -437,10 +445,12 @@ void Window::set_visible(bool p_visible) {
if (transient_parent) {
if (exclusive && visible) {
#ifdef TOOLS_ENABLED
- if (!(Engine::get_singleton()->is_editor_hint() && get_tree()->get_edited_scene_root() && get_tree()->get_edited_scene_root()->is_ancestor_of(this))) {
+ if (!(Engine::get_singleton()->is_editor_hint() && get_tree()->get_edited_scene_root() && (get_tree()->get_edited_scene_root()->is_ancestor_of(this) || get_tree()->get_edited_scene_root() == this))) {
ERR_FAIL_COND_MSG(transient_parent->exclusive_child && transient_parent->exclusive_child != this, "Transient parent has another exclusive child.");
transient_parent->exclusive_child = this;
}
+#else
+ transient_parent->exclusive_child = this;
#endif
} else {
if (transient_parent->exclusive_child == this) {
@@ -488,7 +498,13 @@ void Window::_make_transient() {
window->transient_children.insert(this);
if (is_inside_tree() && is_visible() && exclusive) {
if (transient_parent->exclusive_child == nullptr) {
+#ifdef TOOLS_ENABLED
+ if (!(Engine::get_singleton()->is_editor_hint() && get_tree()->get_edited_scene_root() && (get_tree()->get_edited_scene_root()->is_ancestor_of(this) || get_tree()->get_edited_scene_root() == this))) {
+ transient_parent->exclusive_child = this;
+ }
+#else
transient_parent->exclusive_child = this;
+#endif
} else if (transient_parent->exclusive_child != this) {
ERR_PRINT("Making child transient exclusive, but parent has another exclusive child");
}
@@ -531,13 +547,27 @@ void Window::set_exclusive(bool p_exclusive) {
exclusive = p_exclusive;
if (!embedder && window_id != DisplayServer::INVALID_WINDOW_ID) {
+#ifdef TOOLS_ENABLED
+ if (!(Engine::get_singleton()->is_editor_hint() && get_tree()->get_edited_scene_root() && (get_tree()->get_edited_scene_root()->is_ancestor_of(this) || get_tree()->get_edited_scene_root() == this))) {
+ DisplayServer::get_singleton()->window_set_exclusive(window_id, exclusive);
+ } else {
+ DisplayServer::get_singleton()->window_set_exclusive(window_id, false);
+ }
+#else
DisplayServer::get_singleton()->window_set_exclusive(window_id, exclusive);
+#endif
}
if (transient_parent) {
if (p_exclusive && is_inside_tree() && is_visible()) {
ERR_FAIL_COND_MSG(transient_parent->exclusive_child && transient_parent->exclusive_child != this, "Transient parent has another exclusive child.");
+#ifdef TOOLS_ENABLED
+ if (!(Engine::get_singleton()->is_editor_hint() && get_tree()->get_edited_scene_root() && (get_tree()->get_edited_scene_root()->is_ancestor_of(this) || get_tree()->get_edited_scene_root() == this))) {
+ transient_parent->exclusive_child = this;
+ }
+#else
transient_parent->exclusive_child = this;
+#endif
} else {
if (transient_parent->exclusive_child == this) {
transient_parent->exclusive_child = nullptr;
@@ -579,6 +609,7 @@ void Window::_update_window_size() {
} else if (window_id != DisplayServer::INVALID_WINDOW_ID) {
DisplayServer::get_singleton()->window_set_size(size, window_id);
DisplayServer::get_singleton()->window_set_min_size(size_limit, window_id);
+ DisplayServer::get_singleton()->window_set_max_size(max_size, window_id);
}
//update the viewport
@@ -681,7 +712,7 @@ void Window::_update_viewport_size() {
} break;
case CONTENT_SCALE_MODE_VIEWPORT: {
- final_size = viewport_size;
+ final_size = (viewport_size / content_scale_factor).floor();
attach_to_screen_rect = Rect2(margin, screen_size);
} break;
@@ -1111,7 +1142,7 @@ void Window::popup(const Rect2i &p_screen_rect) {
// Send a focus-out notification when opening a Window Manager Popup.
SceneTree *scene_tree = get_tree();
if (scene_tree) {
- scene_tree->notify_group("_viewports", NOTIFICATION_WM_WINDOW_FOCUS_OUT);
+ scene_tree->notify_group_flags(SceneTree::GROUP_CALL_DEFERRED, "_viewports", NOTIFICATION_WM_WINDOW_FOCUS_OUT);
}
}
@@ -1591,8 +1622,8 @@ void Window::_bind_methods() {
ClassDB::bind_method(D_METHOD("popup_centered_clamped", "minsize", "fallback_ratio"), &Window::popup_centered_clamped, DEFVAL(Size2i()), DEFVAL(0.75));
ADD_PROPERTY(PropertyInfo(Variant::STRING, "title"), "set_title", "get_title");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2I, "position"), "set_position", "get_position");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2I, "size"), "set_size", "get_size");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2I, "position", PROPERTY_HINT_NONE, "suffix:px"), "set_position", "get_position");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2I, "size", PROPERTY_HINT_NONE, "suffix:px"), "set_size", "get_size");
ADD_PROPERTY(PropertyInfo(Variant::INT, "mode", PROPERTY_HINT_ENUM, "Windowed,Minimized,Maximized,Fullscreen"), "set_mode", "get_mode");
ADD_PROPERTY(PropertyInfo(Variant::INT, "current_screen"), "set_current_screen", "get_current_screen");
@@ -1609,8 +1640,8 @@ void Window::_bind_methods() {
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "popup_window"), "set_flag", "get_flag", FLAG_POPUP);
ADD_GROUP("Limits", "");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2I, "min_size"), "set_min_size", "get_min_size");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2I, "max_size"), "set_max_size", "get_max_size");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2I, "min_size", PROPERTY_HINT_NONE, "suffix:px"), "set_min_size", "get_min_size");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2I, "max_size", PROPERTY_HINT_NONE, "suffix:px"), "set_max_size", "get_max_size");
ADD_GROUP("Content Scale", "content_scale_");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2I, "content_scale_size"), "set_content_scale_size", "get_content_scale_size");
diff --git a/scene/multiplayer/multiplayer_synchronizer.cpp b/scene/multiplayer/multiplayer_synchronizer.cpp
index 34d5abf9f6..68f6e54fa8 100644
--- a/scene/multiplayer/multiplayer_synchronizer.cpp
+++ b/scene/multiplayer/multiplayer_synchronizer.cpp
@@ -88,15 +88,16 @@ Error MultiplayerSynchronizer::set_state(const List<NodePath> &p_properties, Obj
void MultiplayerSynchronizer::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_root_path", "path"), &MultiplayerSynchronizer::set_root_path);
ClassDB::bind_method(D_METHOD("get_root_path"), &MultiplayerSynchronizer::get_root_path);
- ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "root_path"), "set_root_path", "get_root_path");
ClassDB::bind_method(D_METHOD("set_replication_interval", "milliseconds"), &MultiplayerSynchronizer::set_replication_interval);
ClassDB::bind_method(D_METHOD("get_replication_interval"), &MultiplayerSynchronizer::get_replication_interval);
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "replication_interval", PROPERTY_HINT_RANGE, "0,5,0.001"), "set_replication_interval", "get_replication_interval");
ClassDB::bind_method(D_METHOD("set_replication_config", "config"), &MultiplayerSynchronizer::set_replication_config);
ClassDB::bind_method(D_METHOD("get_replication_config"), &MultiplayerSynchronizer::get_replication_config);
- ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "congiruation", PROPERTY_HINT_RESOURCE_TYPE, "SceneReplicationConfig"), "set_replication_config", "get_replication_config");
+
+ ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "root_path"), "set_root_path", "get_root_path");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "replication_interval", PROPERTY_HINT_RANGE, "0,5,0.001,suffix:s"), "set_replication_interval", "get_replication_interval");
+ ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "replication_config", PROPERTY_HINT_RESOURCE_TYPE, "SceneReplicationConfig"), "set_replication_config", "get_replication_config");
}
void MultiplayerSynchronizer::_notification(int p_what) {
diff --git a/scene/resources/animation.cpp b/scene/resources/animation.cpp
index dbbbb72a49..8ae4872d14 100644
--- a/scene/resources/animation.cpp
+++ b/scene/resources/animation.cpp
@@ -3829,7 +3829,7 @@ void Animation::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "length", PROPERTY_HINT_RANGE, "0.001,99999,0.001,suffix:s"), "set_length", "get_length");
ADD_PROPERTY(PropertyInfo(Variant::INT, "loop_mode", PROPERTY_HINT_ENUM, "None,Linear,Ping-Pong"), "set_loop_mode", "get_loop_mode");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "step", PROPERTY_HINT_RANGE, "0,4096,0.001"), "set_step", "get_step");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "step", PROPERTY_HINT_RANGE, "0,4096,0.001,suffix:s"), "set_step", "get_step");
ADD_SIGNAL(MethodInfo("tracks_changed"));
diff --git a/scene/resources/animation_library.cpp b/scene/resources/animation_library.cpp
index 361bfd0cb3..5f725b2fbe 100644
--- a/scene/resources/animation_library.cpp
+++ b/scene/resources/animation_library.cpp
@@ -143,9 +143,9 @@ void AnimationLibrary::_bind_methods() {
ClassDB::bind_method(D_METHOD("_get_data"), &AnimationLibrary::_get_data);
ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "_data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR), "_set_data", "_get_data");
- ADD_SIGNAL(MethodInfo("animation_added", PropertyInfo(Variant::OBJECT, "name", PROPERTY_HINT_RESOURCE_TYPE, "Animation")));
- ADD_SIGNAL(MethodInfo("animation_removed", PropertyInfo(Variant::OBJECT, "name", PROPERTY_HINT_RESOURCE_TYPE, "Animation")));
- ADD_SIGNAL(MethodInfo("animation_renamed", PropertyInfo(Variant::OBJECT, "name", PROPERTY_HINT_RESOURCE_TYPE, "Animation"), PropertyInfo(Variant::OBJECT, "to_name", PROPERTY_HINT_RESOURCE_TYPE, "Animation")));
+ ADD_SIGNAL(MethodInfo("animation_added", PropertyInfo(Variant::STRING_NAME, "name")));
+ ADD_SIGNAL(MethodInfo("animation_removed", PropertyInfo(Variant::STRING_NAME, "name")));
+ ADD_SIGNAL(MethodInfo("animation_renamed", PropertyInfo(Variant::STRING_NAME, "name"), PropertyInfo(Variant::STRING_NAME, "to_name")));
}
AnimationLibrary::AnimationLibrary() {
}
diff --git a/scene/resources/canvas_item_material.h b/scene/resources/canvas_item_material.h
index 7c44c125a8..160c67d6b1 100644
--- a/scene/resources/canvas_item_material.h
+++ b/scene/resources/canvas_item_material.h
@@ -64,7 +64,7 @@ private:
uint32_t key = 0;
static uint32_t hash(const MaterialKey &p_key) {
- return hash_djb2_one_32(p_key.key);
+ return hash_murmur3_one_32(p_key.key);
}
bool operator==(const MaterialKey &p_key) const {
return key == p_key.key;
diff --git a/scene/resources/concave_polygon_shape_3d.h b/scene/resources/concave_polygon_shape_3d.h
index 4711e38468..a265590edd 100644
--- a/scene/resources/concave_polygon_shape_3d.h
+++ b/scene/resources/concave_polygon_shape_3d.h
@@ -43,8 +43,8 @@ class ConcavePolygonShape3D : public Shape3D {
Vector3 a;
Vector3 b;
static uint32_t hash(const DrawEdge &p_edge) {
- uint32_t h = hash_djb2_one_32(HashMapHasherDefault::hash(p_edge.a));
- return hash_djb2_one_32(HashMapHasherDefault::hash(p_edge.b), h);
+ uint32_t h = hash_murmur3_one_32(HashMapHasherDefault::hash(p_edge.a));
+ return hash_murmur3_one_32(HashMapHasherDefault::hash(p_edge.b), h);
}
bool operator==(const DrawEdge &p_edge) const {
return (a == p_edge.a && b == p_edge.b);
diff --git a/scene/resources/default_theme/default_theme.cpp b/scene/resources/default_theme/default_theme.cpp
index 5fcaf8f2c4..401aeb4889 100644
--- a/scene/resources/default_theme/default_theme.cpp
+++ b/scene/resources/default_theme/default_theme.cpp
@@ -570,7 +570,6 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
// Window
theme->set_stylebox("embedded_border", "Window", sb_expand(make_flat_stylebox(style_popup_color, 10, 28, 10, 8), 8, 32, 8, 6));
- theme->set_constant("scaleborder_size", "Window", 4 * scale);
theme->set_font("title_font", "Window", Ref<Font>());
theme->set_font_size("title_font_size", "Window", -1);
diff --git a/scene/resources/environment.cpp b/scene/resources/environment.cpp
index 8d515eca09..854bd34d6a 100644
--- a/scene/resources/environment.cpp
+++ b/scene/resources/environment.cpp
@@ -1179,7 +1179,7 @@ void Environment::_bind_methods() {
ADD_GROUP("Sky", "sky_");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "sky", PROPERTY_HINT_RESOURCE_TYPE, "Sky"), "set_sky", "get_sky");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "sky_custom_fov", PROPERTY_HINT_RANGE, "0,180,0.1,degrees"), "set_sky_custom_fov", "get_sky_custom_fov");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "sky_rotation"), "set_sky_rotation", "get_sky_rotation");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "sky_rotation", PROPERTY_HINT_RANGE, "-360,360,0.1,or_lesser,or_greater,radians"), "set_sky_rotation", "get_sky_rotation");
// Ambient light
@@ -1298,7 +1298,7 @@ void Environment::_bind_methods() {
ADD_GROUP("SSIL", "ssil_");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "ssil_enabled"), "set_ssil_enabled", "is_ssil_enabled");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ssil_radius", PROPERTY_HINT_RANGE, "0.01,16,0.01,or_greater"), "set_ssil_radius", "get_ssil_radius");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ssil_radius", PROPERTY_HINT_RANGE, "0.01,16,0.01,or_greater,suffix:m"), "set_ssil_radius", "get_ssil_radius");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ssil_intensity", PROPERTY_HINT_RANGE, "0,16,0.01,or_greater"), "set_ssil_intensity", "get_ssil_intensity");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ssil_sharpness", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_ssil_sharpness", "get_ssil_sharpness");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ssil_normal_rejection", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_ssil_normal_rejection", "get_ssil_normal_rejection");
@@ -1425,7 +1425,7 @@ void Environment::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "fog_density", PROPERTY_HINT_RANGE, "0,16,0.0001"), "set_fog_density", "get_fog_density");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "fog_aerial_perspective", PROPERTY_HINT_RANGE, "0,1,0.001"), "set_fog_aerial_perspective", "get_fog_aerial_perspective");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "fog_height", PROPERTY_HINT_RANGE, "-1024,1024,0.01,or_lesser,or_greater"), "set_fog_height", "get_fog_height");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "fog_height", PROPERTY_HINT_RANGE, "-1024,1024,0.01,or_lesser,or_greater,suffix:m"), "set_fog_height", "get_fog_height");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "fog_height_density", PROPERTY_HINT_RANGE, "-16,16,0.0001,or_lesser,or_greater"), "set_fog_height_density", "get_fog_height_density");
ClassDB::bind_method(D_METHOD("set_volumetric_fog_enabled", "enabled"), &Environment::set_volumetric_fog_enabled);
@@ -1466,7 +1466,7 @@ void Environment::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "volumetric_fog_ambient_inject", PROPERTY_HINT_RANGE, "0.0,16,0.01,exp"), "set_volumetric_fog_ambient_inject", "get_volumetric_fog_ambient_inject");
ADD_SUBGROUP("Temporal Reprojection", "volumetric_fog_temporal_reprojection_");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "volumetric_fog_temporal_reprojection_enabled"), "set_volumetric_fog_temporal_reprojection_enabled", "is_volumetric_fog_temporal_reprojection_enabled");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "volumetric_fog_temporal_reprojection_amount", PROPERTY_HINT_RANGE, "0.0,0.999,0.001"), "set_volumetric_fog_temporal_reprojection_amount", "get_volumetric_fog_temporal_reprojection_amount");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "volumetric_fog_temporal_reprojection_amount", PROPERTY_HINT_RANGE, "0.5,0.99,0.001"), "set_volumetric_fog_temporal_reprojection_amount", "get_volumetric_fog_temporal_reprojection_amount");
// Adjustment
diff --git a/scene/resources/font.cpp b/scene/resources/font.cpp
index d586abac14..46f23424dd 100644
--- a/scene/resources/font.cpp
+++ b/scene/resources/font.cpp
@@ -54,6 +54,7 @@ _FORCE_INLINE_ void FontData::_ensure_rid(int p_cache_index) const {
if (unlikely(!cache[p_cache_index].is_valid())) {
cache.write[p_cache_index] = TS->create_font();
TS->font_set_data_ptr(cache[p_cache_index], data_ptr, data_size);
+ TS->font_set_face_index(cache[p_cache_index], face_index);
TS->font_set_antialiased(cache[p_cache_index], antialiased);
TS->font_set_generate_mipmaps(cache[p_cache_index], mipmaps);
TS->font_set_multichannel_signed_distance_field(cache[p_cache_index], msdf);
@@ -76,6 +77,11 @@ void FontData::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_data", "data"), &FontData::set_data);
ClassDB::bind_method(D_METHOD("get_data"), &FontData::get_data);
+ ClassDB::bind_method(D_METHOD("set_face_index", "face_index"), &FontData::set_face_index);
+ ClassDB::bind_method(D_METHOD("get_face_index"), &FontData::get_face_index);
+
+ ClassDB::bind_method(D_METHOD("get_face_count"), &FontData::get_face_count);
+
ClassDB::bind_method(D_METHOD("set_antialiased", "antialiased"), &FontData::set_antialiased);
ClassDB::bind_method(D_METHOD("is_antialiased"), &FontData::is_antialiased);
@@ -217,6 +223,7 @@ void FontData::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_supported_variation_list"), &FontData::get_supported_variation_list);
ADD_PROPERTY(PropertyInfo(Variant::PACKED_BYTE_ARRAY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE), "set_data", "get_data");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "face_index", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE), "set_face_index", "get_face_index");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "generate_mipmaps", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE), "set_generate_mipmaps", "get_generate_mipmaps");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "antialiased", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE), "set_antialiased", "is_antialiased");
ADD_PROPERTY(PropertyInfo(Variant::STRING, "font_name", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE), "set_font_name", "get_font_name");
@@ -445,6 +452,7 @@ void FontData::reset_state() {
data.clear();
data_ptr = nullptr;
data_size = 0;
+ face_index = 0;
cache.clear();
antialiased = true;
@@ -1244,6 +1252,31 @@ void FontData::set_data(const PackedByteArray &p_data) {
}
}
+void FontData::set_face_index(int64_t p_index) {
+ ERR_FAIL_COND(p_index < 0);
+ ERR_FAIL_COND(p_index >= 0x7FFF);
+
+ if (face_index != p_index) {
+ face_index = p_index;
+ if (data_ptr != nullptr) {
+ for (int i = 0; i < cache.size(); i++) {
+ if (cache[i].is_valid()) {
+ TS->font_set_face_index(cache[i], face_index);
+ }
+ }
+ }
+ }
+}
+
+int64_t FontData::get_face_index() const {
+ return face_index;
+}
+
+int64_t FontData::get_face_count() const {
+ _ensure_rid(0);
+ return TS->font_get_face_count(cache[0]);
+}
+
PackedByteArray FontData::get_data() const {
if (unlikely((size_t)data.size() != data_size)) {
PackedByteArray *data_w = const_cast<PackedByteArray *>(&data);
@@ -1923,8 +1956,8 @@ void Font::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_spacing", "spacing"), &Font::get_spacing);
ADD_GROUP("Extra Spacing", "spacing");
- ADD_PROPERTYI(PropertyInfo(Variant::INT, "spacing_top"), "set_spacing", "get_spacing", TextServer::SPACING_TOP);
- ADD_PROPERTYI(PropertyInfo(Variant::INT, "spacing_bottom"), "set_spacing", "get_spacing", TextServer::SPACING_BOTTOM);
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "spacing_top", PROPERTY_HINT_NONE, "suffix:px"), "set_spacing", "get_spacing", TextServer::SPACING_TOP);
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "spacing_bottom", PROPERTY_HINT_NONE, "suffix:px"), "set_spacing", "get_spacing", TextServer::SPACING_BOTTOM);
ClassDB::bind_method(D_METHOD("get_height", "size"), &Font::get_height, DEFVAL(DEFAULT_FONT_SIZE));
ClassDB::bind_method(D_METHOD("get_ascent", "size"), &Font::get_ascent, DEFVAL(DEFAULT_FONT_SIZE));
@@ -2240,7 +2273,7 @@ Size2 Font::get_string_size(const String &p_text, int p_size, HorizontalAlignmen
uint64_t hash = p_text.hash64();
if (p_alignment == HORIZONTAL_ALIGNMENT_FILL) {
- hash = hash_djb2_one_64(hash_djb2_one_float(p_width), hash);
+ hash = hash_djb2_one_64(hash_murmur3_one_float(p_width), hash);
hash = hash_djb2_one_64(p_flags, hash);
}
hash = hash_djb2_one_64(p_size, hash);
@@ -2264,7 +2297,7 @@ Size2 Font::get_multiline_string_size(const String &p_text, float p_width, int p
}
uint64_t hash = p_text.hash64();
- uint64_t wrp_hash = hash_djb2_one_64(hash_djb2_one_float(p_width), hash);
+ uint64_t wrp_hash = hash_djb2_one_64(hash_murmur3_one_float(p_width), hash);
wrp_hash = hash_djb2_one_64(p_flags, wrp_hash);
wrp_hash = hash_djb2_one_64(p_size, wrp_hash);
@@ -2302,7 +2335,7 @@ void Font::draw_string(RID p_canvas_item, const Point2 &p_pos, const String &p_t
uint64_t hash = p_text.hash64();
if (p_alignment == HORIZONTAL_ALIGNMENT_FILL) {
- hash = hash_djb2_one_64(hash_djb2_one_float(p_width), hash);
+ hash = hash_djb2_one_64(hash_murmur3_one_float(p_width), hash);
hash = hash_djb2_one_64(p_flags, hash);
}
hash = hash_djb2_one_64(p_size, hash);
@@ -2341,7 +2374,7 @@ void Font::draw_multiline_string(RID p_canvas_item, const Point2 &p_pos, const S
}
uint64_t hash = p_text.hash64();
- uint64_t wrp_hash = hash_djb2_one_64(hash_djb2_one_float(p_width), hash);
+ uint64_t wrp_hash = hash_djb2_one_64(hash_murmur3_one_float(p_width), hash);
wrp_hash = hash_djb2_one_64(p_flags, wrp_hash);
wrp_hash = hash_djb2_one_64(p_size, wrp_hash);
diff --git a/scene/resources/font.h b/scene/resources/font.h
index 96bfe3678b..950959e054 100644
--- a/scene/resources/font.h
+++ b/scene/resources/font.h
@@ -46,6 +46,7 @@ class FontData : public Resource {
// Font source data.
const uint8_t *data_ptr = nullptr;
size_t data_size = 0;
+ int face_index = 0;
PackedByteArray data;
bool antialiased = true;
@@ -91,6 +92,11 @@ public:
virtual void set_data(const PackedByteArray &p_data);
virtual PackedByteArray get_data() const;
+ virtual void set_face_index(int64_t p_index);
+ virtual int64_t get_face_index() const;
+
+ virtual int64_t get_face_count() const;
+
// Common properties.
virtual void set_font_name(const String &p_name);
virtual String get_font_name() const;
diff --git a/scene/resources/importer_mesh.cpp b/scene/resources/importer_mesh.cpp
index 0fbd29b1a6..293fdd6f05 100644
--- a/scene/resources/importer_mesh.cpp
+++ b/scene/resources/importer_mesh.cpp
@@ -331,6 +331,7 @@ void ImporterMesh::generate_lods(float p_normal_merge_angle, float p_normal_spli
bool is_uvs_close = (!uvs_ptr || uvs_ptr[j].distance_squared_to(uvs_ptr[idx.second]) < CMP_EPSILON2);
bool is_uv2s_close = (!uv2s_ptr || uv2s_ptr[j].distance_squared_to(uv2s_ptr[idx.second]) < CMP_EPSILON2);
+ ERR_FAIL_INDEX(idx.second, normals.size());
bool is_normals_close = normals[idx.second].dot(n) > normal_merge_threshold;
if (is_uvs_close && is_uv2s_close && is_normals_close) {
vertex_remap.push_back(idx.first);
@@ -1046,6 +1047,10 @@ Error ImporterMesh::lightmap_unwrap_cached(const Transform3D &p_base_transform,
PackedVector3Array rnormals = arrays[Mesh::ARRAY_NORMAL];
+ if (!rnormals.size()) {
+ continue;
+ }
+
int vertex_ofs = vertices.size() / 3;
vertices.resize((vertex_ofs + vc) * 3);
@@ -1086,6 +1091,9 @@ Error ImporterMesh::lightmap_unwrap_cached(const Transform3D &p_base_transform,
} else {
for (int j = 0; j < ic / 3; j++) {
+ ERR_FAIL_INDEX_V(rindices[j * 3 + 0], rvertices.size(), ERR_INVALID_DATA);
+ ERR_FAIL_INDEX_V(rindices[j * 3 + 1], rvertices.size(), ERR_INVALID_DATA);
+ ERR_FAIL_INDEX_V(rindices[j * 3 + 2], rvertices.size(), ERR_INVALID_DATA);
Vector3 p0 = transform.xform(rvertices[rindices[j * 3 + 0]]);
Vector3 p1 = transform.xform(rvertices[rindices[j * 3 + 1]]);
Vector3 p2 = transform.xform(rvertices[rindices[j * 3 + 2]]);
@@ -1185,7 +1193,7 @@ Error ImporterMesh::lightmap_unwrap_cached(const Transform3D &p_base_transform,
for (unsigned int i = 0; i < surfaces_tools.size(); i++) {
surfaces_tools[i]->index();
Array arrays = surfaces_tools[i]->commit_to_arrays();
- add_surface(surfaces_tools[i]->get_primitive(), arrays, Array(), Dictionary(), surfaces_tools[i]->get_material(), surfaces_tools[i]->get_meta("name"));
+ add_surface(surfaces_tools[i]->get_primitive_type(), arrays, Array(), Dictionary(), surfaces_tools[i]->get_material(), surfaces_tools[i]->get_meta("name"));
}
set_lightmap_size_hint(Size2(size_x, size_y));
@@ -1238,6 +1246,7 @@ void ImporterMesh::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_surface_name", "surface_idx", "name"), &ImporterMesh::set_surface_name);
ClassDB::bind_method(D_METHOD("set_surface_material", "surface_idx", "material"), &ImporterMesh::set_surface_material);
+ ClassDB::bind_method(D_METHOD("generate_lods", "normal_merge_angle", "normal_split_angle"), &ImporterMesh::generate_lods);
ClassDB::bind_method(D_METHOD("get_mesh", "base_mesh"), &ImporterMesh::get_mesh, DEFVAL(Ref<ArrayMesh>()));
ClassDB::bind_method(D_METHOD("clear"), &ImporterMesh::clear);
diff --git a/scene/resources/material.cpp b/scene/resources/material.cpp
index 997a45cce5..b7a3b677f5 100644
--- a/scene/resources/material.cpp
+++ b/scene/resources/material.cpp
@@ -472,24 +472,33 @@ void BaseMaterial3D::_update_shader() {
}
String texfilter_str;
+ // Force linear filtering for the heightmap texture, as the heightmap effect
+ // looks broken with nearest-neighbor filtering (with and without Deep Parallax).
+ String texfilter_height_str;
switch (texture_filter) {
case TEXTURE_FILTER_NEAREST:
texfilter_str = "filter_nearest";
+ texfilter_height_str = "filter_linear";
break;
case TEXTURE_FILTER_LINEAR:
texfilter_str = "filter_linear";
+ texfilter_height_str = "filter_linear";
break;
case TEXTURE_FILTER_NEAREST_WITH_MIPMAPS:
texfilter_str = "filter_nearest_mipmap";
+ texfilter_height_str = "filter_linear_mipmap";
break;
case TEXTURE_FILTER_LINEAR_WITH_MIPMAPS:
texfilter_str = "filter_linear_mipmap";
+ texfilter_height_str = "filter_linear_mipmap";
break;
case TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC:
texfilter_str = "filter_nearest_mipmap_anisotropic";
+ texfilter_height_str = "filter_linear_mipmap_anisotropic";
break;
case TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC:
texfilter_str = "filter_linear_mipmap_anisotropic";
+ texfilter_height_str = "filter_linear_mipmap_anisotropic";
break;
case TEXTURE_FILTER_MAX:
break; // Internal value, skip.
@@ -497,8 +506,10 @@ void BaseMaterial3D::_update_shader() {
if (flags[FLAG_USE_TEXTURE_REPEAT]) {
texfilter_str += ",repeat_enable";
+ texfilter_height_str += ",repeat_enable";
} else {
texfilter_str += ",repeat_disable";
+ texfilter_height_str += ",repeat_disable";
}
//must create a shader!
@@ -763,7 +774,7 @@ void BaseMaterial3D::_update_shader() {
}
if (features[FEATURE_HEIGHT_MAPPING]) {
- code += "uniform sampler2D texture_heightmap : hint_default_black," + texfilter_str + ";\n";
+ code += "uniform sampler2D texture_heightmap : hint_default_black," + texfilter_height_str + ";\n";
code += "uniform float heightmap_scale;\n";
code += "uniform int heightmap_min_layers;\n";
code += "uniform int heightmap_max_layers;\n";
@@ -2198,7 +2209,7 @@ Ref<Material> BaseMaterial3D::get_material_for_2d(bool p_shaded, bool p_transpar
if (p_fixed_size) {
hash |= 1 << 9;
}
- hash = hash_djb2_one_64(p_filter, hash);
+ hash = hash_murmur3_one_64(p_filter, hash);
if (materials_for_2d.has(hash)) {
if (r_shader_rid) {
@@ -2655,14 +2666,14 @@ void BaseMaterial3D::_bind_methods() {
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "detail_normal", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_texture", "get_texture", TEXTURE_DETAIL_NORMAL);
ADD_GROUP("UV1", "uv1_");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "uv1_scale"), "set_uv1_scale", "get_uv1_scale");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "uv1_scale", PROPERTY_HINT_LINK), "set_uv1_scale", "get_uv1_scale");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "uv1_offset"), "set_uv1_offset", "get_uv1_offset");
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "uv1_triplanar"), "set_flag", "get_flag", FLAG_UV1_USE_TRIPLANAR);
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "uv1_triplanar_sharpness", PROPERTY_HINT_EXP_EASING), "set_uv1_triplanar_blend_sharpness", "get_uv1_triplanar_blend_sharpness");
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "uv1_world_triplanar"), "set_flag", "get_flag", FLAG_UV1_USE_WORLD_TRIPLANAR);
ADD_GROUP("UV2", "uv2_");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "uv2_scale"), "set_uv2_scale", "get_uv2_scale");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "uv2_scale", PROPERTY_HINT_LINK), "set_uv2_scale", "get_uv2_scale");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "uv2_offset"), "set_uv2_offset", "get_uv2_offset");
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "uv2_triplanar"), "set_flag", "get_flag", FLAG_UV2_USE_TRIPLANAR);
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "uv2_triplanar_sharpness", PROPERTY_HINT_EXP_EASING), "set_uv2_triplanar_blend_sharpness", "get_uv2_triplanar_blend_sharpness");
@@ -2687,22 +2698,22 @@ void BaseMaterial3D::_bind_methods() {
ADD_GROUP("Grow", "grow_");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "grow"), "set_grow_enabled", "is_grow_enabled");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "grow_amount", PROPERTY_HINT_RANGE, "-16,16,0.001"), "set_grow", "get_grow");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "grow_amount", PROPERTY_HINT_RANGE, "-16,16,0.001,suffix:m"), "set_grow", "get_grow");
ADD_GROUP("Transform", "");
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "fixed_size"), "set_flag", "get_flag", FLAG_FIXED_SIZE);
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "use_point_size"), "set_flag", "get_flag", FLAG_USE_POINT_SIZE);
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "point_size", PROPERTY_HINT_RANGE, "0.1,128,0.1"), "set_point_size", "get_point_size");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "point_size", PROPERTY_HINT_RANGE, "0.1,128,0.1,suffix:px"), "set_point_size", "get_point_size");
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "use_particle_trails"), "set_flag", "get_flag", FLAG_PARTICLE_TRAILS_MODE);
ADD_GROUP("Proximity Fade", "proximity_fade_");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "proximity_fade_enable"), "set_proximity_fade", "is_proximity_fade_enabled");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "proximity_fade_distance", PROPERTY_HINT_RANGE, "0,4096,0.01"), "set_proximity_fade_distance", "get_proximity_fade_distance");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "proximity_fade_distance", PROPERTY_HINT_RANGE, "0,4096,0.01,suffix:m"), "set_proximity_fade_distance", "get_proximity_fade_distance");
ADD_GROUP("MSDF", "msdf_");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "msdf_pixel_range", PROPERTY_HINT_RANGE, "1,100,1"), "set_msdf_pixel_range", "get_msdf_pixel_range");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "msdf_outline_size", PROPERTY_HINT_RANGE, "1,250,1"), "set_msdf_outline_size", "get_msdf_outline_size");
ADD_GROUP("Distance Fade", "distance_fade_");
ADD_PROPERTY(PropertyInfo(Variant::INT, "distance_fade_mode", PROPERTY_HINT_ENUM, "Disabled,PixelAlpha,PixelDither,ObjectDither"), "set_distance_fade", "get_distance_fade");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "distance_fade_min_distance", PROPERTY_HINT_RANGE, "0,4096,0.01"), "set_distance_fade_min_distance", "get_distance_fade_min_distance");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "distance_fade_max_distance", PROPERTY_HINT_RANGE, "0,4096,0.01"), "set_distance_fade_max_distance", "get_distance_fade_max_distance");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "distance_fade_min_distance", PROPERTY_HINT_RANGE, "0,4096,0.01,suffix:m"), "set_distance_fade_min_distance", "get_distance_fade_min_distance");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "distance_fade_max_distance", PROPERTY_HINT_RANGE, "0,4096,0.01,suffix:m"), "set_distance_fade_max_distance", "get_distance_fade_max_distance");
BIND_ENUM_CONSTANT(TEXTURE_ALBEDO);
BIND_ENUM_CONSTANT(TEXTURE_METALLIC);
diff --git a/scene/resources/mesh.cpp b/scene/resources/mesh.cpp
index ab1873ffe9..3e7b0a2808 100644
--- a/scene/resources/mesh.cpp
+++ b/scene/resources/mesh.cpp
@@ -161,32 +161,48 @@ Ref<TriangleMesh> Mesh::generate_triangle_mesh() const {
return triangle_mesh;
}
- int facecount = 0;
+ int faces_size = 0;
for (int i = 0; i < get_surface_count(); i++) {
- if (surface_get_primitive_type(i) != PRIMITIVE_TRIANGLES) {
- continue;
- }
-
- if (surface_get_format(i) & ARRAY_FORMAT_INDEX) {
- facecount += surface_get_array_index_len(i);
- } else {
- facecount += surface_get_array_len(i);
+ switch (surface_get_primitive_type(i)) {
+ case PRIMITIVE_TRIANGLES: {
+ int len = (surface_get_format(i) & ARRAY_FORMAT_INDEX) ? surface_get_array_index_len(i) : surface_get_array_len(i);
+ // Don't error if zero, it's valid (we'll just skip it later).
+ ERR_CONTINUE_MSG((len % 3) != 0, vformat("Ignoring surface %d, incorrect %s count: %d (for PRIMITIVE_TRIANGLES).", i, (surface_get_format(i) & ARRAY_FORMAT_INDEX) ? "index" : "vertex", len));
+ faces_size += len;
+ } break;
+ case PRIMITIVE_TRIANGLE_STRIP: {
+ int len = (surface_get_format(i) & ARRAY_FORMAT_INDEX) ? surface_get_array_index_len(i) : surface_get_array_len(i);
+ // Don't error if zero, it's valid (we'll just skip it later).
+ ERR_CONTINUE_MSG(len != 0 && len < 3, vformat("Ignoring surface %d, incorrect %s count: %d (for PRIMITIVE_TRIANGLE_STRIP).", i, (surface_get_format(i) & ARRAY_FORMAT_INDEX) ? "index" : "vertex", len));
+ faces_size += (len == 0) ? 0 : (len - 2) * 3;
+ } break;
+ default: {
+ } break;
}
}
- if (facecount == 0 || (facecount % 3) != 0) {
+ if (faces_size == 0) {
return triangle_mesh;
}
Vector<Vector3> faces;
- faces.resize(facecount);
+ faces.resize(faces_size);
+ Vector<int32_t> surface_indices;
+ surface_indices.resize(faces_size / 3);
Vector3 *facesw = faces.ptrw();
+ int32_t *surface_indicesw = surface_indices.ptrw();
int widx = 0;
for (int i = 0; i < get_surface_count(); i++) {
- if (surface_get_primitive_type(i) != PRIMITIVE_TRIANGLES) {
+ Mesh::PrimitiveType primitive = surface_get_primitive_type(i);
+ if (primitive != PRIMITIVE_TRIANGLES && primitive != PRIMITIVE_TRIANGLE_STRIP) {
+ continue;
+ }
+ int len = (surface_get_format(i) & ARRAY_FORMAT_INDEX) ? surface_get_array_index_len(i) : surface_get_array_len(i);
+ if ((primitive == PRIMITIVE_TRIANGLES && (len == 0 || (len % 3) != 0)) || (primitive == PRIMITIVE_TRIANGLE_STRIP && len < 3)) {
+ // Error was already shown, just skip (including zero).
continue;
}
@@ -197,21 +213,45 @@ Ref<TriangleMesh> Mesh::generate_triangle_mesh() const {
Vector<Vector3> vertices = a[ARRAY_VERTEX];
const Vector3 *vr = vertices.ptr();
+ int32_t from_index = widx / 3;
+
if (surface_get_format(i) & ARRAY_FORMAT_INDEX) {
int ic = surface_get_array_index_len(i);
Vector<int> indices = a[ARRAY_INDEX];
const int *ir = indices.ptr();
- for (int j = 0; j < ic; j++) {
- int index = ir[j];
- facesw[widx++] = vr[index];
+ if (primitive == PRIMITIVE_TRIANGLES) {
+ for (int j = 0; j < ic; j++) {
+ int index = ir[j];
+ facesw[widx++] = vr[index];
+ }
+ } else { // PRIMITIVE_TRIANGLE_STRIP
+ for (int j = 2; j < ic; j++) {
+ facesw[widx++] = vr[ir[j - 2]];
+ facesw[widx++] = vr[ir[j - 1]];
+ facesw[widx++] = vr[ir[j]];
+ }
}
} else {
- for (int j = 0; j < vc; j++) {
- facesw[widx++] = vr[j];
+ if (primitive == PRIMITIVE_TRIANGLES) {
+ for (int j = 0; j < vc; j++) {
+ facesw[widx++] = vr[j];
+ }
+ } else { // PRIMITIVE_TRIANGLE_STRIP
+ for (int j = 2; j < vc; j++) {
+ facesw[widx++] = vr[j - 2];
+ facesw[widx++] = vr[j - 1];
+ facesw[widx++] = vr[j];
+ }
}
}
+
+ int32_t to_index = widx / 3;
+
+ for (int j = from_index; j < to_index; j++) {
+ surface_indicesw[j] = i;
+ }
}
triangle_mesh = Ref<TriangleMesh>(memnew(TriangleMesh));
@@ -2067,7 +2107,7 @@ void ArrayMesh::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::PACKED_STRING_ARRAY, "_blend_shape_names", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR | PROPERTY_USAGE_INTERNAL), "_set_blend_shape_names", "_get_blend_shape_names");
ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "_surfaces", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR | PROPERTY_USAGE_INTERNAL), "_set_surfaces", "_get_surfaces");
ADD_PROPERTY(PropertyInfo(Variant::INT, "blend_shape_mode", PROPERTY_HINT_ENUM, "Normalized,Relative"), "set_blend_shape_mode", "get_blend_shape_mode");
- ADD_PROPERTY(PropertyInfo(Variant::AABB, "custom_aabb", PROPERTY_HINT_NONE, ""), "set_custom_aabb", "get_custom_aabb");
+ ADD_PROPERTY(PropertyInfo(Variant::AABB, "custom_aabb", PROPERTY_HINT_NONE, "suffix:m"), "set_custom_aabb", "get_custom_aabb");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "shadow_mesh", PROPERTY_HINT_RESOURCE_TYPE, "ArrayMesh"), "set_shadow_mesh", "get_shadow_mesh");
}
@@ -2096,7 +2136,7 @@ ArrayMesh::~ArrayMesh() {
void PlaceholderMesh::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_aabb", "aabb"), &PlaceholderMesh::set_aabb);
- ADD_PROPERTY(PropertyInfo(Variant::AABB, "aabb", PROPERTY_HINT_NONE, ""), "set_aabb", "get_aabb");
+ ADD_PROPERTY(PropertyInfo(Variant::AABB, "aabb", PROPERTY_HINT_NONE, "suffix:m"), "set_aabb", "get_aabb");
}
PlaceholderMesh::PlaceholderMesh() {
diff --git a/scene/resources/mesh_library.cpp b/scene/resources/mesh_library.cpp
index a90999bf07..c8bfb73b2d 100644
--- a/scene/resources/mesh_library.cpp
+++ b/scene/resources/mesh_library.cpp
@@ -103,10 +103,10 @@ void MeshLibrary::_get_property_list(List<PropertyInfo> *p_list) const {
String name = vformat("%s/%d/", PNAME("item"), E.key);
p_list->push_back(PropertyInfo(Variant::STRING, name + PNAME("name")));
p_list->push_back(PropertyInfo(Variant::OBJECT, name + PNAME("mesh"), PROPERTY_HINT_RESOURCE_TYPE, "Mesh"));
- p_list->push_back(PropertyInfo(Variant::TRANSFORM3D, name + PNAME("mesh_transform")));
+ p_list->push_back(PropertyInfo(Variant::TRANSFORM3D, name + PNAME("mesh_transform"), PROPERTY_HINT_NONE, "suffix:m"));
p_list->push_back(PropertyInfo(Variant::ARRAY, name + PNAME("shapes")));
p_list->push_back(PropertyInfo(Variant::OBJECT, name + PNAME("navmesh"), PROPERTY_HINT_RESOURCE_TYPE, "NavigationMesh"));
- p_list->push_back(PropertyInfo(Variant::TRANSFORM3D, name + PNAME("navmesh_transform")));
+ p_list->push_back(PropertyInfo(Variant::TRANSFORM3D, name + PNAME("navmesh_transform"), PROPERTY_HINT_NONE, "suffix:m"));
p_list->push_back(PropertyInfo(Variant::OBJECT, name + PNAME("preview"), PROPERTY_HINT_RESOURCE_TYPE, "Texture2D", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_EDITOR_HELPER));
}
}
diff --git a/scene/resources/navigation_mesh.cpp b/scene/resources/navigation_mesh.cpp
index 8353973fb9..784ecc3a4d 100644
--- a/scene/resources/navigation_mesh.cpp
+++ b/scene/resources/navigation_mesh.cpp
@@ -486,29 +486,36 @@ void NavigationMesh::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::PACKED_VECTOR3_ARRAY, "vertices", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR | PROPERTY_USAGE_INTERNAL), "set_vertices", "get_vertices");
ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "polygons", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR | PROPERTY_USAGE_INTERNAL), "_set_polygons", "_get_polygons");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "sample_partition_type/sample_partition_type", PROPERTY_HINT_ENUM, "Watershed,Monotone,Layers"), "set_sample_partition_type", "get_sample_partition_type");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "geometry/parsed_geometry_type", PROPERTY_HINT_ENUM, "Mesh Instances,Static Colliders,Both"), "set_parsed_geometry_type", "get_parsed_geometry_type");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "geometry/collision_mask", PROPERTY_HINT_LAYERS_3D_PHYSICS), "set_collision_mask", "get_collision_mask");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "geometry/source_geometry_mode", PROPERTY_HINT_ENUM, "Navmesh Children, Group With Children, Group Explicit"), "set_source_geometry_mode", "get_source_geometry_mode");
- ADD_PROPERTY(PropertyInfo(Variant::STRING, "geometry/source_group_name"), "set_source_group_name", "get_source_group_name");
-
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "cell/size", PROPERTY_HINT_RANGE, "0.01,500.0,0.01,or_greater"), "set_cell_size", "get_cell_size");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "cell/height", PROPERTY_HINT_RANGE, "0.01,500.0,0.01,or_greater"), "set_cell_height", "get_cell_height");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "agent/height", PROPERTY_HINT_RANGE, "0.0,500.0,0.01,or_greater"), "set_agent_height", "get_agent_height");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "agent/radius", PROPERTY_HINT_RANGE, "0.0,500.0,0.01,or_greater"), "set_agent_radius", "get_agent_radius");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "agent/max_climb", PROPERTY_HINT_RANGE, "0.0,500.0,0.01,or_greater"), "set_agent_max_climb", "get_agent_max_climb");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "agent/max_slope", PROPERTY_HINT_RANGE, "0.02,90.0,0.01"), "set_agent_max_slope", "get_agent_max_slope");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "region/min_size", PROPERTY_HINT_RANGE, "0.0,150.0,0.01,or_greater"), "set_region_min_size", "get_region_min_size");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "region/merge_size", PROPERTY_HINT_RANGE, "0.0,150.0,0.01,or_greater"), "set_region_merge_size", "get_region_merge_size");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "edge/max_length", PROPERTY_HINT_RANGE, "0.0,50.0,0.01,or_greater"), "set_edge_max_length", "get_edge_max_length");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "edge/max_error", PROPERTY_HINT_RANGE, "0.1,3.0,0.01,or_greater"), "set_edge_max_error", "get_edge_max_error");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "polygon/verts_per_poly", PROPERTY_HINT_RANGE, "3.0,12.0,1.0,or_greater"), "set_verts_per_poly", "get_verts_per_poly");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "detail/sample_distance", PROPERTY_HINT_RANGE, "0.1,16.0,0.01,or_greater"), "set_detail_sample_distance", "get_detail_sample_distance");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "detail/sample_max_error", PROPERTY_HINT_RANGE, "0.0,16.0,0.01,or_greater"), "set_detail_sample_max_error", "get_detail_sample_max_error");
-
- ADD_PROPERTY(PropertyInfo(Variant::BOOL, "filter/low_hanging_obstacles"), "set_filter_low_hanging_obstacles", "get_filter_low_hanging_obstacles");
- ADD_PROPERTY(PropertyInfo(Variant::BOOL, "filter/ledge_spans"), "set_filter_ledge_spans", "get_filter_ledge_spans");
- ADD_PROPERTY(PropertyInfo(Variant::BOOL, "filter/filter_walkable_low_height_spans"), "set_filter_walkable_low_height_spans", "get_filter_walkable_low_height_spans");
+ ADD_GROUP("Sampling", "sample_");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "sample_partition_type", PROPERTY_HINT_ENUM, "Watershed,Monotone,Layers"), "set_sample_partition_type", "get_sample_partition_type");
+ ADD_GROUP("Geometry", "geometry_");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "geometry_parsed_geometry_type", PROPERTY_HINT_ENUM, "Mesh Instances,Static Colliders,Both"), "set_parsed_geometry_type", "get_parsed_geometry_type");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "geometry_collision_mask", PROPERTY_HINT_LAYERS_3D_PHYSICS), "set_collision_mask", "get_collision_mask");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "geometry_source_geometry_mode", PROPERTY_HINT_ENUM, "NavMesh Children, Group With Children, Group Explicit"), "set_source_geometry_mode", "get_source_geometry_mode");
+ ADD_PROPERTY(PropertyInfo(Variant::STRING, "geometry_source_group_name"), "set_source_group_name", "get_source_group_name");
+ ADD_GROUP("Cells", "cell_");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "cell_size", PROPERTY_HINT_RANGE, "0.01,500.0,0.01,or_greater,suffix:m"), "set_cell_size", "get_cell_size");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "cell_height", PROPERTY_HINT_RANGE, "0.01,500.0,0.01,or_greater,suffix:m"), "set_cell_height", "get_cell_height");
+ ADD_GROUP("Agents", "agent_");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "agent_height", PROPERTY_HINT_RANGE, "0.0,500.0,0.01,or_greater,suffix:m"), "set_agent_height", "get_agent_height");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "agent_radius", PROPERTY_HINT_RANGE, "0.0,500.0,0.01,or_greater,suffix:m"), "set_agent_radius", "get_agent_radius");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "agent_max_climb", PROPERTY_HINT_RANGE, "0.0,500.0,0.01,or_greater,suffix:m"), "set_agent_max_climb", "get_agent_max_climb");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "agent_max_slope", PROPERTY_HINT_RANGE, "0.02,90.0,0.01,degrees"), "set_agent_max_slope", "get_agent_max_slope");
+ ADD_GROUP("Regions", "region_");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "region_min_size", PROPERTY_HINT_RANGE, "0.0,150.0,0.01,or_greater"), "set_region_min_size", "get_region_min_size");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "region_merge_size", PROPERTY_HINT_RANGE, "0.0,150.0,0.01,or_greater"), "set_region_merge_size", "get_region_merge_size");
+ ADD_GROUP("Edges", "edge_");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "edge_max_length", PROPERTY_HINT_RANGE, "0.0,50.0,0.01,or_greater,suffix:m"), "set_edge_max_length", "get_edge_max_length");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "edge_max_error", PROPERTY_HINT_RANGE, "0.1,3.0,0.01,or_greater,suffix:m"), "set_edge_max_error", "get_edge_max_error");
+ ADD_GROUP("Polygons", "polygon_");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "polygon_verts_per_poly", PROPERTY_HINT_RANGE, "3.0,12.0,1.0,or_greater"), "set_verts_per_poly", "get_verts_per_poly");
+ ADD_GROUP("Details", "detail_");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "detail_sample_distance", PROPERTY_HINT_RANGE, "0.1,16.0,0.01,or_greater,suffix:m"), "set_detail_sample_distance", "get_detail_sample_distance");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "detail_sample_max_error", PROPERTY_HINT_RANGE, "0.0,16.0,0.01,or_greater,suffix:m"), "set_detail_sample_max_error", "get_detail_sample_max_error");
+ ADD_GROUP("Filters", "filter_");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "filter_low_hanging_obstacles"), "set_filter_low_hanging_obstacles", "get_filter_low_hanging_obstacles");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "filter_ledge_spans"), "set_filter_ledge_spans", "get_filter_ledge_spans");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "filter_walkable_low_height_spans"), "set_filter_walkable_low_height_spans", "get_filter_walkable_low_height_spans");
BIND_ENUM_CONSTANT(SAMPLE_PARTITION_WATERSHED);
BIND_ENUM_CONSTANT(SAMPLE_PARTITION_MONOTONE);
@@ -542,4 +549,41 @@ void NavigationMesh::_validate_property(PropertyInfo &property) const {
}
}
+#ifndef DISABLE_DEPRECATED
+bool NavigationMesh::_set(const StringName &p_name, const Variant &p_value) {
+ String name = p_name;
+ if (name.find("/") != -1) {
+ // Compatibility with pre-3.5 "category/path" property names.
+ name = name.replace("/", "_");
+ if (name == "sample_partition_type_sample_partition_type") {
+ set("sample_partition_type", p_value);
+ } else if (name == "filter_filter_walkable_low_height_spans") {
+ set("filter_walkable_low_height_spans", p_value);
+ } else {
+ set(name, p_value);
+ }
+
+ return true;
+ }
+ return false;
+}
+
+bool NavigationMesh::_get(const StringName &p_name, Variant &r_ret) const {
+ String name = p_name;
+ if (name.find("/") != -1) {
+ // Compatibility with pre-3.5 "category/path" property names.
+ name = name.replace("/", "_");
+ if (name == "sample_partition_type_sample_partition_type") {
+ r_ret = get("sample_partition_type");
+ } else if (name == "filter_filter_walkable_low_height_spans") {
+ r_ret = get("filter_walkable_low_height_spans");
+ } else {
+ r_ret = get(name);
+ }
+ return true;
+ }
+ return false;
+}
+#endif // DISABLE_DEPRECATED
+
NavigationMesh::NavigationMesh() {}
diff --git a/scene/resources/navigation_mesh.h b/scene/resources/navigation_mesh.h
index 449e6f2dff..93c1c11876 100644
--- a/scene/resources/navigation_mesh.h
+++ b/scene/resources/navigation_mesh.h
@@ -62,6 +62,11 @@ protected:
static void _bind_methods();
virtual void _validate_property(PropertyInfo &property) const override;
+#ifndef DISABLE_DEPRECATED
+ bool _set(const StringName &p_name, const Variant &p_value);
+ bool _get(const StringName &p_name, Variant &r_ret) const;
+#endif // DISABLE_DEPRECATED
+
void _set_polygons(const Array &p_array);
Array _get_polygons() const;
diff --git a/scene/resources/particles_material.cpp b/scene/resources/particles_material.cpp
index c4b15df6bb..7a49b9b515 100644
--- a/scene/resources/particles_material.cpp
+++ b/scene/resources/particles_material.cpp
@@ -488,6 +488,12 @@ void ParticlesMaterial::_update_shader() {
code += " float degree_to_rad = pi / 180.0;\n";
code += "\n";
+ if (emission_shape == EMISSION_SHAPE_POINTS || emission_shape == EMISSION_SHAPE_DIRECTED_POINTS) {
+ code += " int point = min(emission_texture_point_count - 1, int(rand_from_seed(alt_seed) * float(emission_texture_point_count)));\n";
+ code += " ivec2 emission_tex_size = textureSize(emission_texture_points, 0);\n";
+ code += " ivec2 emission_tex_ofs = ivec2(point % emission_tex_size.x, point / emission_tex_size.x);\n";
+ }
+
code += " CUSTOM.y += DELTA / LIFETIME;\n";
code += " float tv = CUSTOM.y / CUSTOM.w;\n";
if (tex_parameters[PARAM_INITIAL_LINEAR_VELOCITY].is_valid()) {
diff --git a/scene/resources/particles_material.h b/scene/resources/particles_material.h
index 24341d964d..af45593f38 100644
--- a/scene/resources/particles_material.h
+++ b/scene/resources/particles_material.h
@@ -110,7 +110,7 @@ private:
uint32_t key = 0;
static uint32_t hash(const MaterialKey &p_key) {
- return hash_djb2_one_32(p_key.key);
+ return hash_murmur3_one_32(p_key.key);
}
bool operator==(const MaterialKey &p_key) const {
diff --git a/scene/resources/primitive_meshes.cpp b/scene/resources/primitive_meshes.cpp
index f5ab0085f1..b2fd8eb895 100644
--- a/scene/resources/primitive_meshes.cpp
+++ b/scene/resources/primitive_meshes.cpp
@@ -219,7 +219,7 @@ void PrimitiveMesh::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_flip_faces"), &PrimitiveMesh::get_flip_faces);
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "material", PROPERTY_HINT_RESOURCE_TYPE, "BaseMaterial3D,ShaderMaterial"), "set_material", "get_material");
- ADD_PROPERTY(PropertyInfo(Variant::AABB, "custom_aabb", PROPERTY_HINT_NONE, ""), "set_custom_aabb", "get_custom_aabb");
+ ADD_PROPERTY(PropertyInfo(Variant::AABB, "custom_aabb", PROPERTY_HINT_NONE, "suffix:m"), "set_custom_aabb", "get_custom_aabb");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "flip_faces"), "set_flip_faces", "get_flip_faces");
GDVIRTUAL_BIND(_create_mesh_array);
@@ -1056,7 +1056,7 @@ void PlaneMesh::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "size", PROPERTY_HINT_NONE, "suffix:m"), "set_size", "get_size");
ADD_PROPERTY(PropertyInfo(Variant::INT, "subdivide_width", PROPERTY_HINT_RANGE, "0,100,1,or_greater"), "set_subdivide_width", "get_subdivide_width");
ADD_PROPERTY(PropertyInfo(Variant::INT, "subdivide_depth", PROPERTY_HINT_RANGE, "0,100,1,or_greater"), "set_subdivide_depth", "get_subdivide_depth");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "center_offset"), "set_center_offset", "get_center_offset");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "center_offset", PROPERTY_HINT_NONE, "suffix:m"), "set_center_offset", "get_center_offset");
}
void PlaneMesh::set_size(const Size2 &p_size) {
@@ -2435,7 +2435,7 @@ void TextMesh::_create_mesh_array(Array &p_arr) const {
}
if (glyphs[i].font_rid != RID()) {
uint32_t hash = hash_one_uint64(glyphs[i].font_rid.get_id());
- hash = hash_djb2_one_32(glyphs[i].index, hash);
+ hash = hash_murmur3_one_32(glyphs[i].index, hash);
_generate_glyph_mesh_data(hash, glyphs[i]);
GlyphMeshData &gl_data = cache[hash];
@@ -2494,7 +2494,7 @@ void TextMesh::_create_mesh_array(Array &p_arr) const {
}
if (glyphs[i].font_rid != RID()) {
uint32_t hash = hash_one_uint64(glyphs[i].font_rid.get_id());
- hash = hash_djb2_one_32(glyphs[i].index, hash);
+ hash = hash_murmur3_one_32(glyphs[i].index, hash);
const GlyphMeshData &gl_data = cache[hash];
@@ -2701,17 +2701,17 @@ void TextMesh::_bind_methods() {
ADD_GROUP("Text", "");
ADD_PROPERTY(PropertyInfo(Variant::STRING, "text"), "set_text", "get_text");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "font", PROPERTY_HINT_RESOURCE_TYPE, "Font"), "set_font", "get_font");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "font_size", PROPERTY_HINT_RANGE, "1,127,1"), "set_font_size", "get_font_size");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "font_size", PROPERTY_HINT_RANGE, "1,127,1,suffix:px"), "set_font_size", "get_font_size");
ADD_PROPERTY(PropertyInfo(Variant::INT, "horizontal_alignment", PROPERTY_HINT_ENUM, "Left,Center,Right,Fill"), "set_horizontal_alignment", "get_horizontal_alignment");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "uppercase"), "set_uppercase", "is_uppercase");
ADD_PROPERTY(PropertyInfo(Variant::INT, "structured_text_bidi_override", PROPERTY_HINT_ENUM, "Default,URI,File,Email,List,None,Custom"), "set_structured_text_bidi_override", "get_structured_text_bidi_override");
ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "structured_text_bidi_override_options"), "set_structured_text_bidi_override_options", "get_structured_text_bidi_override_options");
ADD_GROUP("Mesh", "");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "pixel_size", PROPERTY_HINT_RANGE, "0.0001,128,0.0001"), "set_pixel_size", "get_pixel_size");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "curve_step", PROPERTY_HINT_RANGE, "0.1,10,0.1"), "set_curve_step", "get_curve_step");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "depth", PROPERTY_HINT_RANGE, "0.0,100.0,0.001,or_greater"), "set_depth", "get_depth");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "width"), "set_width", "get_width");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "pixel_size", PROPERTY_HINT_RANGE, "0.0001,128,0.0001,suffix:m"), "set_pixel_size", "get_pixel_size");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "curve_step", PROPERTY_HINT_RANGE, "0.1,10,0.1,suffix:px"), "set_curve_step", "get_curve_step");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "depth", PROPERTY_HINT_RANGE, "0.0,100.0,0.001,or_greater,suffix:m"), "set_depth", "get_depth");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "width", PROPERTY_HINT_NONE, "suffix:m"), "set_width", "get_width");
ADD_GROUP("Locale", "");
ADD_PROPERTY(PropertyInfo(Variant::INT, "text_direction", PROPERTY_HINT_ENUM, "Auto,Left-to-Right,Right-to-Left"), "set_text_direction", "get_text_direction");
diff --git a/scene/resources/resource_format_text.cpp b/scene/resources/resource_format_text.cpp
index 9d586c6f03..dba53338eb 100644
--- a/scene/resources/resource_format_text.cpp
+++ b/scene/resources/resource_format_text.cpp
@@ -40,6 +40,8 @@
// Version 3: new string ID for ext/subresources, breaks forward compat.
#define FORMAT_VERSION 3
+#define BINARY_FORMAT_VERSION 4
+
#include "core/io/dir_access.h"
#include "core/version.h"
@@ -66,12 +68,8 @@ Error ResourceLoaderText::_parse_sub_resource_dummy(DummyReadData *p_data, Varia
String unique_id = token.value;
if (!p_data->resource_map.has(unique_id)) {
- Ref<DummyResource> dr;
- dr.instantiate();
- dr->set_scene_unique_id(unique_id);
- p_data->resource_map[unique_id] = dr;
- uint32_t im_size = p_data->resource_index_map.size();
- p_data->resource_index_map.insert(dr, im_size);
+ r_err_str = "Found unique_id reference before mapping, sub-resources stored out of order in resource file";
+ return ERR_PARSE_ERROR;
}
r_res = p_data->resource_map[unique_id];
@@ -1078,7 +1076,7 @@ Error ResourceLoaderText::save_as_binary(Ref<FileAccess> p_f, const String &p_pa
wf->store_32(0); //64 bits file, false for now
wf->store_32(VERSION_MAJOR);
wf->store_32(VERSION_MINOR);
- static const int save_format_version = 3; //use format version 3 for saving
+ static const int save_format_version = BINARY_FORMAT_VERSION;
wf->store_32(save_format_version);
bs_save_unicode_string(wf, is_scene ? "PackedScene" : resource_type);
@@ -1176,7 +1174,7 @@ Error ResourceLoaderText::save_as_binary(Ref<FileAccess> p_f, const String &p_pa
while (next_tag.name == "sub_resource" || next_tag.name == "resource") {
String type;
- int id = -1;
+ String id;
bool main_res;
if (next_tag.name == "sub_resource") {
@@ -1197,15 +1195,26 @@ Error ResourceLoaderText::save_as_binary(Ref<FileAccess> p_f, const String &p_pa
type = next_tag.fields["type"];
id = next_tag.fields["id"];
main_res = false;
+
+ if (!dummy_read.resource_map.has(id)) {
+ Ref<DummyResource> dr;
+ dr.instantiate();
+ dr->set_scene_unique_id(id);
+ dummy_read.resource_map[id] = dr;
+ uint32_t im_size = dummy_read.resource_index_map.size();
+ dummy_read.resource_index_map.insert(dr, im_size);
+ }
+
} else {
type = res_type;
- id = 0; //used for last anyway
+ String uid_text = ResourceUID::get_singleton()->id_to_text(res_uid);
+ id = type + "_" + uid_text.replace("uid://", "").replace("<invalid>", "0");
main_res = true;
}
local_offsets.push_back(wf2->get_position());
- bs_save_unicode_string(wf, "local://" + itos(id));
+ bs_save_unicode_string(wf, "local://" + id);
local_pointers_pos.push_back(wf->get_position());
wf->store_64(0); //temp local offset
@@ -1274,7 +1283,8 @@ Error ResourceLoaderText::save_as_binary(Ref<FileAccess> p_f, const String &p_pa
List<PropertyInfo> props;
packed_scene->get_property_list(&props);
- bs_save_unicode_string(wf, "local://0");
+ String id = "PackedScene_" + ResourceUID::get_singleton()->id_to_text(res_uid).replace("uid://", "").replace("<invalid>", "0");
+ bs_save_unicode_string(wf, "local://" + id);
local_pointers_pos.push_back(wf->get_position());
wf->store_64(0); //temp local offset
@@ -1564,17 +1574,17 @@ String ResourceFormatSaverTextInstance::_write_resources(void *ud, const Ref<Res
String ResourceFormatSaverTextInstance::_write_resource(const Ref<Resource> &res) {
if (external_resources.has(res)) {
- return "ExtResource( \"" + external_resources[res] + "\" )";
+ return "ExtResource(\"" + external_resources[res] + "\")";
} else {
if (internal_resources.has(res)) {
- return "SubResource( \"" + internal_resources[res] + "\" )";
+ return "SubResource(\"" + internal_resources[res] + "\")";
} else if (!res->is_built_in()) {
if (res->get_path() == local_path) { //circular reference attempt
return "null";
}
//external resource
String path = relative_paths ? local_path.path_to_file(res->get_path()) : res->get_path();
- return "Resource( \"" + path + "\" )";
+ return "Resource(\"" + path + "\")";
} else {
ERR_FAIL_V_MSG("null", "Resource was not pre cached for the resource section, bug?");
//internal resource
diff --git a/scene/resources/scene_replication_config.cpp b/scene/resources/scene_replication_config.cpp
index 4aea04bf87..6789f9f7d5 100644
--- a/scene/resources/scene_replication_config.cpp
+++ b/scene/resources/scene_replication_config.cpp
@@ -52,11 +52,19 @@ bool SceneReplicationConfig::_set(const StringName &p_name, const Variant &p_val
ReplicationProperty &prop = properties[idx];
if (what == "sync") {
prop.sync = p_value;
- sync_props.push_back(prop.name);
+ if (prop.sync) {
+ sync_props.push_back(prop.name);
+ } else {
+ sync_props.erase(prop.name);
+ }
return true;
} else if (what == "spawn") {
prop.spawn = p_value;
- spawn_props.push_back(prop.name);
+ if (prop.spawn) {
+ spawn_props.push_back(prop.name);
+ } else {
+ spawn_props.erase(prop.name);
+ }
return true;
}
}
diff --git a/scene/resources/separation_ray_shape_2d.cpp b/scene/resources/separation_ray_shape_2d.cpp
index df7b0d969a..0d6aee47d8 100644
--- a/scene/resources/separation_ray_shape_2d.cpp
+++ b/scene/resources/separation_ray_shape_2d.cpp
@@ -89,7 +89,7 @@ void SeparationRayShape2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_slide_on_slope", "active"), &SeparationRayShape2D::set_slide_on_slope);
ClassDB::bind_method(D_METHOD("get_slide_on_slope"), &SeparationRayShape2D::get_slide_on_slope);
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "length", PROPERTY_HINT_RANGE, "0.01,1024,0.01,or_greater"), "set_length", "get_length");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "length", PROPERTY_HINT_RANGE, "0.01,1024,0.01,or_greater,suffix:px"), "set_length", "get_length");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "slide_on_slope"), "set_slide_on_slope", "get_slide_on_slope");
}
diff --git a/scene/resources/separation_ray_shape_3d.cpp b/scene/resources/separation_ray_shape_3d.cpp
index 736cb60c1c..7306d5b985 100644
--- a/scene/resources/separation_ray_shape_3d.cpp
+++ b/scene/resources/separation_ray_shape_3d.cpp
@@ -80,7 +80,7 @@ void SeparationRayShape3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_slide_on_slope", "active"), &SeparationRayShape3D::set_slide_on_slope);
ClassDB::bind_method(D_METHOD("get_slide_on_slope"), &SeparationRayShape3D::get_slide_on_slope);
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "length", PROPERTY_HINT_RANGE, "0.001,100,0.001,or_greater"), "set_length", "get_length");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "length", PROPERTY_HINT_RANGE, "0.001,100,0.001,or_greater,suffix:m"), "set_length", "get_length");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "slide_on_slope"), "set_slide_on_slope", "get_slide_on_slope");
}
diff --git a/scene/resources/skeleton_modification_2d_twoboneik.cpp b/scene/resources/skeleton_modification_2d_twoboneik.cpp
index b08fd82381..d3c62e441f 100644
--- a/scene/resources/skeleton_modification_2d_twoboneik.cpp
+++ b/scene/resources/skeleton_modification_2d_twoboneik.cpp
@@ -464,8 +464,8 @@ void SkeletonModification2DTwoBoneIK::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_joint_two_bone_idx"), &SkeletonModification2DTwoBoneIK::get_joint_two_bone_idx);
ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "target_nodepath", PROPERTY_HINT_NODE_PATH_VALID_TYPES, "Node2D"), "set_target_node", "get_target_node");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "target_minimum_distance", PROPERTY_HINT_RANGE, "0, 100000000, 0.01"), "set_target_minimum_distance", "get_target_minimum_distance");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "target_maximum_distance", PROPERTY_HINT_NONE, "0, 100000000, 0.01"), "set_target_maximum_distance", "get_target_maximum_distance");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "target_minimum_distance", PROPERTY_HINT_RANGE, "0,100000000,0.01,suffix:m"), "set_target_minimum_distance", "get_target_minimum_distance");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "target_maximum_distance", PROPERTY_HINT_NONE, "0,100000000,0.01,suffix:m"), "set_target_maximum_distance", "get_target_maximum_distance");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "flip_bend_direction", PROPERTY_HINT_NONE, ""), "set_flip_bend_direction", "get_flip_bend_direction");
ADD_GROUP("", "");
}
diff --git a/scene/resources/style_box.cpp b/scene/resources/style_box.cpp
index b54bbc1478..a53c299d00 100644
--- a/scene/resources/style_box.cpp
+++ b/scene/resources/style_box.cpp
@@ -123,10 +123,10 @@ void StyleBox::_bind_methods() {
ClassDB::bind_method(D_METHOD("draw", "canvas_item", "rect"), &StyleBox::draw);
ADD_GROUP("Content Margins", "content_margin_");
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "content_margin_left", PROPERTY_HINT_RANGE, "-1,2048,1"), "set_default_margin", "get_default_margin", SIDE_LEFT);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "content_margin_top", PROPERTY_HINT_RANGE, "-1,2048,1"), "set_default_margin", "get_default_margin", SIDE_TOP);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "content_margin_right", PROPERTY_HINT_RANGE, "-1,2048,1"), "set_default_margin", "get_default_margin", SIDE_RIGHT);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "content_margin_bottom", PROPERTY_HINT_RANGE, "-1,2048,1"), "set_default_margin", "get_default_margin", SIDE_BOTTOM);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "content_margin_left", PROPERTY_HINT_RANGE, "-1,2048,1,suffix:px"), "set_default_margin", "get_default_margin", SIDE_LEFT);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "content_margin_top", PROPERTY_HINT_RANGE, "-1,2048,1,suffix:px"), "set_default_margin", "get_default_margin", SIDE_TOP);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "content_margin_right", PROPERTY_HINT_RANGE, "-1,2048,1,suffix:px"), "set_default_margin", "get_default_margin", SIDE_RIGHT);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "content_margin_bottom", PROPERTY_HINT_RANGE, "-1,2048,1,suffix:px"), "set_default_margin", "get_default_margin", SIDE_BOTTOM);
GDVIRTUAL_BIND(_get_style_margin, "side")
GDVIRTUAL_BIND(_test_mask, "point", "rect")
@@ -317,23 +317,23 @@ void StyleBoxTexture::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_texture", "get_texture");
ADD_GROUP("Margins", "margin_");
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "margin_left", PROPERTY_HINT_RANGE, "0,2048,1"), "set_margin_size", "get_margin_size", SIDE_LEFT);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "margin_top", PROPERTY_HINT_RANGE, "0,2048,1"), "set_margin_size", "get_margin_size", SIDE_TOP);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "margin_right", PROPERTY_HINT_RANGE, "0,2048,1"), "set_margin_size", "get_margin_size", SIDE_RIGHT);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "margin_bottom", PROPERTY_HINT_RANGE, "0,2048,1"), "set_margin_size", "get_margin_size", SIDE_BOTTOM);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "margin_left", PROPERTY_HINT_RANGE, "0,2048,1,suffix:px"), "set_margin_size", "get_margin_size", SIDE_LEFT);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "margin_top", PROPERTY_HINT_RANGE, "0,2048,1,suffix:px"), "set_margin_size", "get_margin_size", SIDE_TOP);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "margin_right", PROPERTY_HINT_RANGE, "0,2048,1,suffix:px"), "set_margin_size", "get_margin_size", SIDE_RIGHT);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "margin_bottom", PROPERTY_HINT_RANGE, "0,2048,1,suffix:px"), "set_margin_size", "get_margin_size", SIDE_BOTTOM);
ADD_GROUP("Expand Margins", "expand_margin_");
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "expand_margin_left", PROPERTY_HINT_RANGE, "0,2048,1"), "set_expand_margin_size", "get_expand_margin_size", SIDE_LEFT);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "expand_margin_top", PROPERTY_HINT_RANGE, "0,2048,1"), "set_expand_margin_size", "get_expand_margin_size", SIDE_TOP);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "expand_margin_right", PROPERTY_HINT_RANGE, "0,2048,1"), "set_expand_margin_size", "get_expand_margin_size", SIDE_RIGHT);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "expand_margin_bottom", PROPERTY_HINT_RANGE, "0,2048,1"), "set_expand_margin_size", "get_expand_margin_size", SIDE_BOTTOM);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "expand_margin_left", PROPERTY_HINT_RANGE, "0,2048,1,suffix:px"), "set_expand_margin_size", "get_expand_margin_size", SIDE_LEFT);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "expand_margin_top", PROPERTY_HINT_RANGE, "0,2048,1,suffix:px"), "set_expand_margin_size", "get_expand_margin_size", SIDE_TOP);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "expand_margin_right", PROPERTY_HINT_RANGE, "0,2048,1,suffix:px"), "set_expand_margin_size", "get_expand_margin_size", SIDE_RIGHT);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "expand_margin_bottom", PROPERTY_HINT_RANGE, "0,2048,1,suffix:px"), "set_expand_margin_size", "get_expand_margin_size", SIDE_BOTTOM);
ADD_GROUP("Axis Stretch", "axis_stretch_");
ADD_PROPERTY(PropertyInfo(Variant::INT, "axis_stretch_horizontal", PROPERTY_HINT_ENUM, "Stretch,Tile,Tile Fit"), "set_h_axis_stretch_mode", "get_h_axis_stretch_mode");
ADD_PROPERTY(PropertyInfo(Variant::INT, "axis_stretch_vertical", PROPERTY_HINT_ENUM, "Stretch,Tile,Tile Fit"), "set_v_axis_stretch_mode", "get_v_axis_stretch_mode");
ADD_GROUP("Sub-Region", "region_");
- ADD_PROPERTY(PropertyInfo(Variant::RECT2, "region_rect"), "set_region_rect", "get_region_rect");
+ ADD_PROPERTY(PropertyInfo(Variant::RECT2, "region_rect", PROPERTY_HINT_NONE, "suffix:px"), "set_region_rect", "get_region_rect");
ADD_GROUP("Modulate", "modulate_");
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "modulate_color"), "set_modulate", "get_modulate");
@@ -905,10 +905,10 @@ void StyleBoxFlat::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "skew"), "set_skew", "get_skew");
ADD_GROUP("Border Width", "border_width_");
- ADD_PROPERTYI(PropertyInfo(Variant::INT, "border_width_left", PROPERTY_HINT_RANGE, "0,1024,1"), "set_border_width", "get_border_width", SIDE_LEFT);
- ADD_PROPERTYI(PropertyInfo(Variant::INT, "border_width_top", PROPERTY_HINT_RANGE, "0,1024,1"), "set_border_width", "get_border_width", SIDE_TOP);
- ADD_PROPERTYI(PropertyInfo(Variant::INT, "border_width_right", PROPERTY_HINT_RANGE, "0,1024,1"), "set_border_width", "get_border_width", SIDE_RIGHT);
- ADD_PROPERTYI(PropertyInfo(Variant::INT, "border_width_bottom", PROPERTY_HINT_RANGE, "0,1024,1"), "set_border_width", "get_border_width", SIDE_BOTTOM);
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "border_width_left", PROPERTY_HINT_RANGE, "0,1024,1,suffix:px"), "set_border_width", "get_border_width", SIDE_LEFT);
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "border_width_top", PROPERTY_HINT_RANGE, "0,1024,1,suffix:px"), "set_border_width", "get_border_width", SIDE_TOP);
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "border_width_right", PROPERTY_HINT_RANGE, "0,1024,1,suffix:px"), "set_border_width", "get_border_width", SIDE_RIGHT);
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "border_width_bottom", PROPERTY_HINT_RANGE, "0,1024,1,suffix:px"), "set_border_width", "get_border_width", SIDE_BOTTOM);
ADD_GROUP("Border", "border_");
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "border_color"), "set_border_color", "get_border_color");
@@ -916,27 +916,27 @@ void StyleBoxFlat::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "border_blend"), "set_border_blend", "get_border_blend");
ADD_GROUP("Corner Radius", "corner_radius_");
- ADD_PROPERTYI(PropertyInfo(Variant::INT, "corner_radius_top_left", PROPERTY_HINT_RANGE, "0,1024,1"), "set_corner_radius", "get_corner_radius", CORNER_TOP_LEFT);
- ADD_PROPERTYI(PropertyInfo(Variant::INT, "corner_radius_top_right", PROPERTY_HINT_RANGE, "0,1024,1"), "set_corner_radius", "get_corner_radius", CORNER_TOP_RIGHT);
- ADD_PROPERTYI(PropertyInfo(Variant::INT, "corner_radius_bottom_right", PROPERTY_HINT_RANGE, "0,1024,1"), "set_corner_radius", "get_corner_radius", CORNER_BOTTOM_RIGHT);
- ADD_PROPERTYI(PropertyInfo(Variant::INT, "corner_radius_bottom_left", PROPERTY_HINT_RANGE, "0,1024,1"), "set_corner_radius", "get_corner_radius", CORNER_BOTTOM_LEFT);
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "corner_radius_top_left", PROPERTY_HINT_RANGE, "0,1024,1,suffix:px"), "set_corner_radius", "get_corner_radius", CORNER_TOP_LEFT);
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "corner_radius_top_right", PROPERTY_HINT_RANGE, "0,1024,1,suffix:px"), "set_corner_radius", "get_corner_radius", CORNER_TOP_RIGHT);
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "corner_radius_bottom_right", PROPERTY_HINT_RANGE, "0,1024,1,suffix:px"), "set_corner_radius", "get_corner_radius", CORNER_BOTTOM_RIGHT);
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "corner_radius_bottom_left", PROPERTY_HINT_RANGE, "0,1024,1,suffix:px"), "set_corner_radius", "get_corner_radius", CORNER_BOTTOM_LEFT);
ADD_PROPERTY(PropertyInfo(Variant::INT, "corner_detail", PROPERTY_HINT_RANGE, "1,20,1"), "set_corner_detail", "get_corner_detail");
ADD_GROUP("Expand Margins", "expand_margin_");
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "expand_margin_left", PROPERTY_HINT_RANGE, "0,2048,1"), "set_expand_margin", "get_expand_margin", SIDE_LEFT);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "expand_margin_top", PROPERTY_HINT_RANGE, "0,2048,1"), "set_expand_margin", "get_expand_margin", SIDE_TOP);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "expand_margin_right", PROPERTY_HINT_RANGE, "0,2048,1"), "set_expand_margin", "get_expand_margin", SIDE_RIGHT);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "expand_margin_bottom", PROPERTY_HINT_RANGE, "0,2048,1"), "set_expand_margin", "get_expand_margin", SIDE_BOTTOM);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "expand_margin_left", PROPERTY_HINT_RANGE, "0,2048,1,suffix:px"), "set_expand_margin", "get_expand_margin", SIDE_LEFT);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "expand_margin_top", PROPERTY_HINT_RANGE, "0,2048,1,suffix:px"), "set_expand_margin", "get_expand_margin", SIDE_TOP);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "expand_margin_right", PROPERTY_HINT_RANGE, "0,2048,1,suffix:px"), "set_expand_margin", "get_expand_margin", SIDE_RIGHT);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "expand_margin_bottom", PROPERTY_HINT_RANGE, "0,2048,1,suffix:px"), "set_expand_margin", "get_expand_margin", SIDE_BOTTOM);
ADD_GROUP("Shadow", "shadow_");
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "shadow_color"), "set_shadow_color", "get_shadow_color");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "shadow_size", PROPERTY_HINT_RANGE, "0,100,1,or_greater"), "set_shadow_size", "get_shadow_size");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "shadow_offset"), "set_shadow_offset", "get_shadow_offset");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "shadow_size", PROPERTY_HINT_RANGE, "0,100,1,or_greater,suffix:px"), "set_shadow_size", "get_shadow_size");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "shadow_offset", PROPERTY_HINT_NONE, "suffix:px"), "set_shadow_offset", "get_shadow_offset");
ADD_GROUP("Anti Aliasing", "anti_aliasing_");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "anti_aliasing"), "set_anti_aliased", "is_anti_aliased");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "anti_aliasing_size", PROPERTY_HINT_RANGE, "0.01,10,0.001"), "set_aa_size", "get_aa_size");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "anti_aliasing_size", PROPERTY_HINT_RANGE, "0.01,10,0.001,suffix:px"), "set_aa_size", "get_aa_size");
}
StyleBoxFlat::StyleBoxFlat() {}
@@ -1001,9 +1001,9 @@ void StyleBoxLine::_bind_methods() {
ClassDB::bind_method(D_METHOD("is_vertical"), &StyleBoxLine::is_vertical);
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "color"), "set_color", "get_color");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "grow_begin", PROPERTY_HINT_RANGE, "-300,300,1"), "set_grow_begin", "get_grow_begin");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "grow_end", PROPERTY_HINT_RANGE, "-300,300,1"), "set_grow_end", "get_grow_end");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "thickness", PROPERTY_HINT_RANGE, "0,10"), "set_thickness", "get_thickness");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "grow_begin", PROPERTY_HINT_RANGE, "-300,300,1,suffix:px"), "set_grow_begin", "get_grow_begin");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "grow_end", PROPERTY_HINT_RANGE, "-300,300,1,suffix:px"), "set_grow_end", "get_grow_end");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "thickness", PROPERTY_HINT_RANGE, "0,10,suffix:px"), "set_thickness", "get_thickness");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "vertical"), "set_vertical", "is_vertical");
}
diff --git a/scene/resources/surface_tool.cpp b/scene/resources/surface_tool.cpp
index 0e41eed570..9829c7e86b 100644
--- a/scene/resources/surface_tool.cpp
+++ b/scene/resources/surface_tool.cpp
@@ -141,7 +141,8 @@ uint32_t SurfaceTool::VertexHasher::hash(const Vertex &p_vtx) {
h = hash_djb2_buffer((const uint8_t *)p_vtx.bones.ptr(), p_vtx.bones.size() * sizeof(int), h);
h = hash_djb2_buffer((const uint8_t *)p_vtx.weights.ptr(), p_vtx.weights.size() * sizeof(float), h);
h = hash_djb2_buffer((const uint8_t *)&p_vtx.custom[0], sizeof(Color) * RS::ARRAY_CUSTOM_COUNT, h);
- h = hash_djb2_one_32(p_vtx.smooth_group, h);
+ h = hash_murmur3_one_32(p_vtx.smooth_group, h);
+ h = hash_fmix32(h);
return h;
}
@@ -315,19 +316,17 @@ void SurfaceTool::set_uv2(const Vector2 &p_uv2) {
last_uv2 = p_uv2;
}
-void SurfaceTool::set_custom(int p_index, const Color &p_custom) {
- ERR_FAIL_INDEX(p_index, RS::ARRAY_CUSTOM_COUNT);
+void SurfaceTool::set_custom(int p_channel_index, const Color &p_custom) {
+ ERR_FAIL_INDEX(p_channel_index, RS::ARRAY_CUSTOM_COUNT);
ERR_FAIL_COND(!begun);
- ERR_FAIL_COND(last_custom_format[p_index] == CUSTOM_MAX);
+ ERR_FAIL_COND(last_custom_format[p_channel_index] == CUSTOM_MAX);
static const uint32_t mask[RS::ARRAY_CUSTOM_COUNT] = { Mesh::ARRAY_FORMAT_CUSTOM0, Mesh::ARRAY_FORMAT_CUSTOM1, Mesh::ARRAY_FORMAT_CUSTOM2, Mesh::ARRAY_FORMAT_CUSTOM3 };
- static const uint32_t shift[RS::ARRAY_CUSTOM_COUNT] = { Mesh::ARRAY_FORMAT_CUSTOM0_SHIFT, Mesh::ARRAY_FORMAT_CUSTOM1_SHIFT, Mesh::ARRAY_FORMAT_CUSTOM2_SHIFT, Mesh::ARRAY_FORMAT_CUSTOM3_SHIFT };
- ERR_FAIL_COND(!first && !(format & mask[p_index]));
+ ERR_FAIL_COND(!first && !(format & mask[p_channel_index]));
if (first) {
- format |= mask[p_index];
- format |= last_custom_format[p_index] << shift[p_index];
+ format |= mask[p_channel_index];
}
- last_custom[p_index] = p_custom;
+ last_custom[p_channel_index] = p_custom;
}
void SurfaceTool::set_bones(const Vector<int> &p_bones) {
@@ -689,7 +688,7 @@ Array SurfaceTool::commit_to_arrays() {
return a;
}
-Ref<ArrayMesh> SurfaceTool::commit(const Ref<ArrayMesh> &p_existing, uint32_t p_flags) {
+Ref<ArrayMesh> SurfaceTool::commit(const Ref<ArrayMesh> &p_existing, uint32_t p_compress_flags) {
Ref<ArrayMesh> mesh;
if (p_existing.is_valid()) {
mesh = p_existing;
@@ -707,7 +706,15 @@ Ref<ArrayMesh> SurfaceTool::commit(const Ref<ArrayMesh> &p_existing, uint32_t p_
Array a = commit_to_arrays();
- mesh->add_surface_from_arrays(primitive, a, Array(), Dictionary(), p_flags);
+ uint32_t compress_flags = (p_compress_flags >> RS::ARRAY_COMPRESS_FLAGS_BASE) << RS::ARRAY_COMPRESS_FLAGS_BASE;
+ static const uint32_t shift[RS::ARRAY_CUSTOM_COUNT] = { Mesh::ARRAY_FORMAT_CUSTOM0_SHIFT, Mesh::ARRAY_FORMAT_CUSTOM1_SHIFT, Mesh::ARRAY_FORMAT_CUSTOM2_SHIFT, Mesh::ARRAY_FORMAT_CUSTOM3_SHIFT };
+ for (int i = 0; i < RS::ARRAY_CUSTOM_COUNT; i++) {
+ if (last_custom_format[i] != CUSTOM_MAX) {
+ compress_flags |= last_custom_format[i] << shift[i];
+ }
+ }
+
+ mesh->add_surface_from_arrays(primitive, a, Array(), Dictionary(), compress_flags);
if (material.is_valid()) {
mesh->surface_set_material(surface, material);
@@ -988,9 +995,6 @@ void SurfaceTool::append_from(const Ref<Mesh> &p_existing, int p_surface, const
for (int j = 0; j < RS::ARRAY_CUSTOM_COUNT; j++) {
if (format & custom_mask[j]) {
CustomFormat new_format = (CustomFormat)((format >> custom_shift[j]) & RS::ARRAY_FORMAT_CUSTOM_MASK);
- if (last_custom_format[j] != CUSTOM_MAX && last_custom_format[j] != new_format) {
- WARN_PRINT(vformat("Custom %d format %d mismatch when appending format %d", j, last_custom_format[j], new_format));
- }
last_custom_format[j] = new_format;
}
}
@@ -1220,22 +1224,24 @@ SurfaceTool::SkinWeightCount SurfaceTool::get_skin_weight_count() const {
return skin_weights;
}
-void SurfaceTool::set_custom_format(int p_index, CustomFormat p_format) {
- ERR_FAIL_INDEX(p_index, RS::ARRAY_CUSTOM_COUNT);
- ERR_FAIL_COND(begun);
- last_custom_format[p_index] = p_format;
+void SurfaceTool::set_custom_format(int p_channel_index, CustomFormat p_format) {
+ ERR_FAIL_INDEX(p_channel_index, RS::ARRAY_CUSTOM_COUNT);
+ ERR_FAIL_COND(!begun);
+ ERR_FAIL_INDEX(p_format, CUSTOM_MAX + 1);
+ last_custom_format[p_channel_index] = p_format;
}
-Mesh::PrimitiveType SurfaceTool::get_primitive() const {
+Mesh::PrimitiveType SurfaceTool::get_primitive_type() const {
return primitive;
}
-SurfaceTool::CustomFormat SurfaceTool::get_custom_format(int p_index) const {
- ERR_FAIL_INDEX_V(p_index, RS::ARRAY_CUSTOM_COUNT, CUSTOM_MAX);
- return last_custom_format[p_index];
+SurfaceTool::CustomFormat SurfaceTool::get_custom_format(int p_channel_index) const {
+ ERR_FAIL_INDEX_V(p_channel_index, RS::ARRAY_CUSTOM_COUNT, CUSTOM_MAX);
+ return last_custom_format[p_channel_index];
}
void SurfaceTool::optimize_indices_for_cache() {
ERR_FAIL_COND(optimize_vertex_cache_func == nullptr);
ERR_FAIL_COND(index_array.size() == 0);
+ ERR_FAIL_COND(primitive != Mesh::PRIMITIVE_TRIANGLES);
ERR_FAIL_COND(index_array.size() % 3 != 0);
LocalVector old_index_array = index_array;
@@ -1243,8 +1249,8 @@ void SurfaceTool::optimize_indices_for_cache() {
optimize_vertex_cache_func((unsigned int *)index_array.ptr(), (unsigned int *)old_index_array.ptr(), old_index_array.size(), vertex_array.size());
}
-float SurfaceTool::get_max_axis_length() const {
- ERR_FAIL_COND_V(vertex_array.size() == 0, 0);
+AABB SurfaceTool::get_aabb() const {
+ ERR_FAIL_COND_V(vertex_array.size() == 0, AABB());
AABB aabb;
for (uint32_t i = 0; i < vertex_array.size(); i++) {
@@ -1255,7 +1261,7 @@ float SurfaceTool::get_max_axis_length() const {
}
}
- return aabb.get_longest_axis_size();
+ return aabb;
}
Vector<int> SurfaceTool::generate_lod(float p_threshold, int p_target_index_count) {
Vector<int> lod;
@@ -1288,8 +1294,8 @@ void SurfaceTool::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_skin_weight_count", "count"), &SurfaceTool::set_skin_weight_count);
ClassDB::bind_method(D_METHOD("get_skin_weight_count"), &SurfaceTool::get_skin_weight_count);
- ClassDB::bind_method(D_METHOD("set_custom_format", "index", "format"), &SurfaceTool::set_custom_format);
- ClassDB::bind_method(D_METHOD("get_custom_format", "index"), &SurfaceTool::get_custom_format);
+ ClassDB::bind_method(D_METHOD("set_custom_format", "channel_index", "format"), &SurfaceTool::set_custom_format);
+ ClassDB::bind_method(D_METHOD("get_custom_format", "channel_index"), &SurfaceTool::get_custom_format);
ClassDB::bind_method(D_METHOD("begin", "primitive"), &SurfaceTool::begin);
@@ -1301,7 +1307,7 @@ void SurfaceTool::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_uv2", "uv2"), &SurfaceTool::set_uv2);
ClassDB::bind_method(D_METHOD("set_bones", "bones"), &SurfaceTool::set_bones);
ClassDB::bind_method(D_METHOD("set_weights", "weights"), &SurfaceTool::set_weights);
- ClassDB::bind_method(D_METHOD("set_custom", "index", "custom"), &SurfaceTool::set_custom);
+ ClassDB::bind_method(D_METHOD("set_custom", "channel_index", "custom_color"), &SurfaceTool::set_custom);
ClassDB::bind_method(D_METHOD("set_smooth_group", "index"), &SurfaceTool::set_smooth_group);
ClassDB::bind_method(D_METHOD("add_triangle_fan", "vertices", "uvs", "colors", "uv2s", "normals", "tangents"), &SurfaceTool::add_triangle_fan, DEFVAL(Vector<Vector2>()), DEFVAL(Vector<Color>()), DEFVAL(Vector<Vector2>()), DEFVAL(Vector<Vector3>()), DEFVAL(Vector<Plane>()));
@@ -1315,11 +1321,11 @@ void SurfaceTool::_bind_methods() {
ClassDB::bind_method(D_METHOD("optimize_indices_for_cache"), &SurfaceTool::optimize_indices_for_cache);
- ClassDB::bind_method(D_METHOD("get_max_axis_length"), &SurfaceTool::get_max_axis_length);
+ ClassDB::bind_method(D_METHOD("get_aabb"), &SurfaceTool::get_aabb);
ClassDB::bind_method(D_METHOD("generate_lod", "nd_threshold", "target_index_count"), &SurfaceTool::generate_lod, DEFVAL(3));
ClassDB::bind_method(D_METHOD("set_material", "material"), &SurfaceTool::set_material);
- ClassDB::bind_method(D_METHOD("get_primitive"), &SurfaceTool::get_primitive);
+ ClassDB::bind_method(D_METHOD("get_primitive_type"), &SurfaceTool::get_primitive_type);
ClassDB::bind_method(D_METHOD("clear"), &SurfaceTool::clear);
diff --git a/scene/resources/surface_tool.h b/scene/resources/surface_tool.h
index bf4332ad2a..2d399ca3bf 100644
--- a/scene/resources/surface_tool.h
+++ b/scene/resources/surface_tool.h
@@ -154,10 +154,10 @@ public:
void set_skin_weight_count(SkinWeightCount p_weights);
SkinWeightCount get_skin_weight_count() const;
- void set_custom_format(int p_index, CustomFormat p_format);
- CustomFormat get_custom_format(int p_index) const;
+ void set_custom_format(int p_channel_index, CustomFormat p_format);
+ CustomFormat get_custom_format(int p_channel_index) const;
- Mesh::PrimitiveType get_primitive() const;
+ Mesh::PrimitiveType get_primitive_type() const;
void begin(Mesh::PrimitiveType p_primitive);
@@ -166,7 +166,7 @@ public:
void set_tangent(const Plane &p_tangent);
void set_uv(const Vector2 &p_uv);
void set_uv2(const Vector2 &p_uv2);
- void set_custom(int p_index, const Color &p_custom);
+ void set_custom(int p_channel_index, const Color &p_custom);
void set_bones(const Vector<int> &p_bones);
void set_weights(const Vector<float> &p_weights);
void set_smooth_group(uint32_t p_group);
@@ -183,7 +183,7 @@ public:
void generate_tangents();
void optimize_indices_for_cache();
- float get_max_axis_length() const;
+ AABB get_aabb() const;
Vector<int> generate_lod(float p_threshold, int p_target_index_count = 3);
void set_material(const Ref<Material> &p_material);
@@ -199,7 +199,7 @@ public:
void create_from(const Ref<Mesh> &p_existing, int p_surface);
void create_from_blend_shape(const Ref<Mesh> &p_existing, int p_surface, const String &p_blend_shape_name);
void append_from(const Ref<Mesh> &p_existing, int p_surface, const Transform3D &p_xform);
- Ref<ArrayMesh> commit(const Ref<ArrayMesh> &p_existing = Ref<ArrayMesh>(), uint32_t p_flags = 0);
+ Ref<ArrayMesh> commit(const Ref<ArrayMesh> &p_existing = Ref<ArrayMesh>(), uint32_t p_compress_flags = 0);
SurfaceTool();
};
diff --git a/scene/resources/text_line.cpp b/scene/resources/text_line.cpp
index f9390ca528..d6e7ca3478 100644
--- a/scene/resources/text_line.cpp
+++ b/scene/resources/text_line.cpp
@@ -98,12 +98,6 @@ void TextLine::_bind_methods() {
ClassDB::bind_method(D_METHOD("draw_outline", "canvas", "pos", "outline_size", "color"), &TextLine::draw_outline, DEFVAL(1), DEFVAL(Color(1, 1, 1)));
ClassDB::bind_method(D_METHOD("hit_test", "coords"), &TextLine::hit_test);
-
- BIND_ENUM_CONSTANT(OVERRUN_NO_TRIMMING);
- BIND_ENUM_CONSTANT(OVERRUN_TRIM_CHAR);
- BIND_ENUM_CONSTANT(OVERRUN_TRIM_WORD);
- BIND_ENUM_CONSTANT(OVERRUN_TRIM_ELLIPSIS);
- BIND_ENUM_CONSTANT(OVERRUN_TRIM_WORD_ELLIPSIS);
}
void TextLine::_shape() {
@@ -112,26 +106,26 @@ void TextLine::_shape() {
TS->shaped_text_tab_align(rid, tab_stops);
}
- uint16_t overrun_flags = TextServer::OVERRUN_NO_TRIMMING;
- if (overrun_behavior != OVERRUN_NO_TRIMMING) {
+ uint16_t overrun_flags = TextServer::OVERRUN_NO_TRIM;
+ if (overrun_behavior != TextServer::OVERRUN_NO_TRIMMING) {
switch (overrun_behavior) {
- case OVERRUN_TRIM_WORD_ELLIPSIS:
+ case TextServer::OVERRUN_TRIM_WORD_ELLIPSIS:
overrun_flags |= TextServer::OVERRUN_TRIM;
overrun_flags |= TextServer::OVERRUN_TRIM_WORD_ONLY;
overrun_flags |= TextServer::OVERRUN_ADD_ELLIPSIS;
break;
- case OVERRUN_TRIM_ELLIPSIS:
+ case TextServer::OVERRUN_TRIM_ELLIPSIS:
overrun_flags |= TextServer::OVERRUN_TRIM;
overrun_flags |= TextServer::OVERRUN_ADD_ELLIPSIS;
break;
- case OVERRUN_TRIM_WORD:
+ case TextServer::OVERRUN_TRIM_WORD:
overrun_flags |= TextServer::OVERRUN_TRIM;
overrun_flags |= TextServer::OVERRUN_TRIM_WORD_ONLY;
break;
- case OVERRUN_TRIM_CHAR:
+ case TextServer::OVERRUN_TRIM_CHAR:
overrun_flags |= TextServer::OVERRUN_TRIM;
break;
- case OVERRUN_NO_TRIMMING:
+ case TextServer::OVERRUN_NO_TRIMMING:
break;
}
@@ -259,20 +253,20 @@ uint16_t TextLine::get_flags() const {
return flags;
}
-void TextLine::set_text_overrun_behavior(TextLine::OverrunBehavior p_behavior) {
+void TextLine::set_text_overrun_behavior(TextServer::OverrunBehavior p_behavior) {
if (overrun_behavior != p_behavior) {
overrun_behavior = p_behavior;
dirty = true;
}
}
-TextLine::OverrunBehavior TextLine::get_text_overrun_behavior() const {
+TextServer::OverrunBehavior TextLine::get_text_overrun_behavior() const {
return overrun_behavior;
}
void TextLine::set_width(float p_width) {
width = p_width;
- if (alignment == HORIZONTAL_ALIGNMENT_FILL || overrun_behavior != OVERRUN_NO_TRIMMING) {
+ if (alignment == HORIZONTAL_ALIGNMENT_FILL || overrun_behavior != TextServer::OVERRUN_NO_TRIMMING) {
dirty = true;
}
}
diff --git a/scene/resources/text_line.h b/scene/resources/text_line.h
index c5762db0f2..784ee8ef26 100644
--- a/scene/resources/text_line.h
+++ b/scene/resources/text_line.h
@@ -39,15 +39,6 @@
class TextLine : public RefCounted {
GDCLASS(TextLine, RefCounted);
-public:
- enum OverrunBehavior {
- OVERRUN_NO_TRIMMING,
- OVERRUN_TRIM_CHAR,
- OVERRUN_TRIM_WORD,
- OVERRUN_TRIM_ELLIPSIS,
- OVERRUN_TRIM_WORD_ELLIPSIS,
- };
-
private:
RID rid;
int spacing_top = 0;
@@ -58,7 +49,7 @@ private:
float width = -1.0;
uint16_t flags = TextServer::JUSTIFICATION_WORD_BOUND | TextServer::JUSTIFICATION_KASHIDA;
HorizontalAlignment alignment = HORIZONTAL_ALIGNMENT_LEFT;
- OverrunBehavior overrun_behavior = OVERRUN_TRIM_ELLIPSIS;
+ TextServer::OverrunBehavior overrun_behavior = TextServer::OVERRUN_TRIM_ELLIPSIS;
Vector<float> tab_stops;
@@ -98,8 +89,8 @@ public:
void set_flags(uint16_t p_flags);
uint16_t get_flags() const;
- void set_text_overrun_behavior(OverrunBehavior p_behavior);
- OverrunBehavior get_text_overrun_behavior() const;
+ void set_text_overrun_behavior(TextServer::OverrunBehavior p_behavior);
+ TextServer::OverrunBehavior get_text_overrun_behavior() const;
void set_width(float p_width);
float get_width() const;
@@ -125,6 +116,4 @@ public:
~TextLine();
};
-VARIANT_ENUM_CAST(TextLine::OverrunBehavior);
-
#endif // TEXT_LINE_H
diff --git a/scene/resources/text_paragraph.cpp b/scene/resources/text_paragraph.cpp
index 477b41efaa..874992ea3d 100644
--- a/scene/resources/text_paragraph.cpp
+++ b/scene/resources/text_paragraph.cpp
@@ -129,12 +129,6 @@ void TextParagraph::_bind_methods() {
ClassDB::bind_method(D_METHOD("draw_dropcap_outline", "canvas", "pos", "outline_size", "color"), &TextParagraph::draw_dropcap_outline, DEFVAL(1), DEFVAL(Color(1, 1, 1)));
ClassDB::bind_method(D_METHOD("hit_test", "coords"), &TextParagraph::hit_test);
-
- BIND_ENUM_CONSTANT(OVERRUN_NO_TRIMMING);
- BIND_ENUM_CONSTANT(OVERRUN_TRIM_CHAR);
- BIND_ENUM_CONSTANT(OVERRUN_TRIM_WORD);
- BIND_ENUM_CONSTANT(OVERRUN_TRIM_ELLIPSIS);
- BIND_ENUM_CONSTANT(OVERRUN_TRIM_WORD_ELLIPSIS);
}
void TextParagraph::_shape_lines() {
@@ -190,26 +184,26 @@ void TextParagraph::_shape_lines() {
lines_rid.push_back(line);
}
- uint16_t overrun_flags = TextServer::OVERRUN_NO_TRIMMING;
- if (overrun_behavior != OVERRUN_NO_TRIMMING) {
+ uint16_t overrun_flags = TextServer::OVERRUN_NO_TRIM;
+ if (overrun_behavior != TextServer::OVERRUN_NO_TRIMMING) {
switch (overrun_behavior) {
- case OVERRUN_TRIM_WORD_ELLIPSIS:
+ case TextServer::OVERRUN_TRIM_WORD_ELLIPSIS:
overrun_flags |= TextServer::OVERRUN_TRIM;
overrun_flags |= TextServer::OVERRUN_TRIM_WORD_ONLY;
overrun_flags |= TextServer::OVERRUN_ADD_ELLIPSIS;
break;
- case OVERRUN_TRIM_ELLIPSIS:
+ case TextServer::OVERRUN_TRIM_ELLIPSIS:
overrun_flags |= TextServer::OVERRUN_TRIM;
overrun_flags |= TextServer::OVERRUN_ADD_ELLIPSIS;
break;
- case OVERRUN_TRIM_WORD:
+ case TextServer::OVERRUN_TRIM_WORD:
overrun_flags |= TextServer::OVERRUN_TRIM;
overrun_flags |= TextServer::OVERRUN_TRIM_WORD_ONLY;
break;
- case OVERRUN_TRIM_CHAR:
+ case TextServer::OVERRUN_TRIM_CHAR:
overrun_flags |= TextServer::OVERRUN_TRIM;
break;
- case OVERRUN_NO_TRIMMING:
+ case TextServer::OVERRUN_NO_TRIMMING:
break;
}
}
@@ -451,7 +445,7 @@ uint16_t TextParagraph::get_flags() const {
return flags;
}
-void TextParagraph::set_text_overrun_behavior(TextParagraph::OverrunBehavior p_behavior) {
+void TextParagraph::set_text_overrun_behavior(TextServer::OverrunBehavior p_behavior) {
_THREAD_SAFE_METHOD_
if (overrun_behavior != p_behavior) {
@@ -460,7 +454,7 @@ void TextParagraph::set_text_overrun_behavior(TextParagraph::OverrunBehavior p_b
}
}
-TextParagraph::OverrunBehavior TextParagraph::get_text_overrun_behavior() const {
+TextServer::OverrunBehavior TextParagraph::get_text_overrun_behavior() const {
return overrun_behavior;
}
diff --git a/scene/resources/text_paragraph.h b/scene/resources/text_paragraph.h
index 4f1aad16b5..bdcc2b5701 100644
--- a/scene/resources/text_paragraph.h
+++ b/scene/resources/text_paragraph.h
@@ -41,15 +41,6 @@ class TextParagraph : public RefCounted {
GDCLASS(TextParagraph, RefCounted);
_THREAD_SAFE_CLASS_
-public:
- enum OverrunBehavior {
- OVERRUN_NO_TRIMMING,
- OVERRUN_TRIM_CHAR,
- OVERRUN_TRIM_WORD,
- OVERRUN_TRIM_ELLIPSIS,
- OVERRUN_TRIM_WORD_ELLIPSIS,
- };
-
private:
RID dropcap_rid;
int dropcap_lines = 0;
@@ -66,7 +57,7 @@ private:
int max_lines_visible = -1;
uint16_t flags = TextServer::BREAK_MANDATORY | TextServer::BREAK_WORD_BOUND | TextServer::JUSTIFICATION_WORD_BOUND | TextServer::JUSTIFICATION_KASHIDA;
- OverrunBehavior overrun_behavior = OVERRUN_NO_TRIMMING;
+ TextServer::OverrunBehavior overrun_behavior = TextServer::OVERRUN_NO_TRIMMING;
HorizontalAlignment alignment = HORIZONTAL_ALIGNMENT_LEFT;
@@ -116,8 +107,8 @@ public:
void set_flags(uint16_t p_flags);
uint16_t get_flags() const;
- void set_text_overrun_behavior(OverrunBehavior p_behavior);
- OverrunBehavior get_text_overrun_behavior() const;
+ void set_text_overrun_behavior(TextServer::OverrunBehavior p_behavior);
+ TextServer::OverrunBehavior get_text_overrun_behavior() const;
void set_width(float p_width);
float get_width() const;
@@ -165,6 +156,4 @@ public:
~TextParagraph();
};
-VARIANT_ENUM_CAST(TextParagraph::OverrunBehavior);
-
#endif // TEXT_PARAGRAPH_H
diff --git a/scene/resources/texture.cpp b/scene/resources/texture.cpp
index 9442a58ac1..f31a71eada 100644
--- a/scene/resources/texture.cpp
+++ b/scene/resources/texture.cpp
@@ -150,33 +150,21 @@ void ImageTexture::reload_from_file() {
bool ImageTexture::_set(const StringName &p_name, const Variant &p_value) {
if (p_name == "image") {
create_from_image(p_value);
- } else if (p_name == "size") {
- Size2 s = p_value;
- w = s.width;
- h = s.height;
- RenderingServer::get_singleton()->texture_set_size_override(texture, w, h);
- } else {
- return false;
+ return true;
}
-
- return true;
+ return false;
}
bool ImageTexture::_get(const StringName &p_name, Variant &r_ret) const {
if (p_name == "image") {
r_ret = get_image();
- } else if (p_name == "size") {
- r_ret = Size2(w, h);
- } else {
- return false;
+ return true;
}
-
- return true;
+ return false;
}
void ImageTexture::_get_property_list(List<PropertyInfo> *p_list) const {
- p_list->push_back(PropertyInfo(Variant::OBJECT, PNAME("image"), PROPERTY_HINT_RESOURCE_TYPE, "Image", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESOURCE_NOT_PERSISTENT));
- p_list->push_back(PropertyInfo(Variant::VECTOR2, PNAME("size"), PROPERTY_HINT_NONE, ""));
+ p_list->push_back(PropertyInfo(Variant::OBJECT, PNAME("image"), PROPERTY_HINT_RESOURCE_TYPE, "Image", PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_RESOURCE_NOT_PERSISTENT));
}
void ImageTexture::create_from_image(const Ref<Image> &p_image) {
@@ -625,7 +613,7 @@ void PortableCompressedTexture2D::_bind_methods() {
ClassDB::bind_static_method("PortableCompressedTexture2D", D_METHOD("is_keeping_all_compressed_buffers"), &PortableCompressedTexture2D::is_keeping_all_compressed_buffers);
ADD_PROPERTY(PropertyInfo(Variant::PACKED_BYTE_ARRAY, "_data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR), "_set_data", "_get_data");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "size_override"), "set_size_override", "get_size_override");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "size_override", PROPERTY_HINT_NONE, "suffix:px"), "set_size_override", "get_size_override");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "keep_compressed_buffer"), "set_keep_compressed_buffer", "is_keeping_compressed_buffer");
BIND_ENUM_CONSTANT(COMPRESSION_MODE_LOSSLESS);
@@ -1545,8 +1533,8 @@ void AtlasTexture::_bind_methods() {
ClassDB::bind_method(D_METHOD("has_filter_clip"), &AtlasTexture::has_filter_clip);
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "atlas", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_atlas", "get_atlas");
- ADD_PROPERTY(PropertyInfo(Variant::RECT2, "region"), "set_region", "get_region");
- ADD_PROPERTY(PropertyInfo(Variant::RECT2, "margin"), "set_margin", "get_margin");
+ ADD_PROPERTY(PropertyInfo(Variant::RECT2, "region", PROPERTY_HINT_NONE, "suffix:px"), "set_region", "get_region");
+ ADD_PROPERTY(PropertyInfo(Variant::RECT2, "margin", PROPERTY_HINT_NONE, "suffix:px"), "set_margin", "get_margin");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "filter_clip"), "set_filter_clip", "has_filter_clip");
}
@@ -1787,7 +1775,7 @@ void MeshTexture::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "mesh", PROPERTY_HINT_RESOURCE_TYPE, "Mesh"), "set_mesh", "get_mesh");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "base_texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_base_texture", "get_base_texture");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "image_size", PROPERTY_HINT_RANGE, "0,16384,1"), "set_image_size", "get_image_size");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "image_size", PROPERTY_HINT_RANGE, "0,16384,1,suffix:px"), "set_image_size", "get_image_size");
}
MeshTexture::MeshTexture() {
@@ -1806,7 +1794,7 @@ void CurveTexture::_bind_methods() {
ClassDB::bind_method(D_METHOD("_update"), &CurveTexture::_update);
- ADD_PROPERTY(PropertyInfo(Variant::INT, "width", PROPERTY_HINT_RANGE, "1,4096"), "set_width", "get_width");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "width", PROPERTY_HINT_RANGE, "1,4096,suffix:px"), "set_width", "get_width");
ADD_PROPERTY(PropertyInfo(Variant::INT, "texture_mode", PROPERTY_HINT_ENUM, "RGB,Red"), "set_texture_mode", "get_texture_mode");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "curve", PROPERTY_HINT_RESOURCE_TYPE, "Curve"), "set_curve", "get_curve");
@@ -1954,7 +1942,7 @@ void CurveXYZTexture::_bind_methods() {
ClassDB::bind_method(D_METHOD("_update"), &CurveXYZTexture::_update);
- ADD_PROPERTY(PropertyInfo(Variant::INT, "width", PROPERTY_HINT_RANGE, "1,4096"), "set_width", "get_width");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "width", PROPERTY_HINT_RANGE, "1,4096,suffix:px"), "set_width", "get_width");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "curve_x", PROPERTY_HINT_RESOURCE_TYPE, "Curve"), "set_curve_x", "get_curve_x");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "curve_y", PROPERTY_HINT_RESOURCE_TYPE, "Curve"), "set_curve_y", "get_curve_y");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "curve_z", PROPERTY_HINT_RESOURCE_TYPE, "Curve"), "set_curve_z", "get_curve_z");
@@ -2161,7 +2149,7 @@ void GradientTexture1D::_bind_methods() {
ClassDB::bind_method(D_METHOD("_update"), &GradientTexture1D::_update);
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "gradient", PROPERTY_HINT_RESOURCE_TYPE, "Gradient"), "set_gradient", "get_gradient");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "width", PROPERTY_HINT_RANGE, "1,4096"), "set_width", "get_width");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "width", PROPERTY_HINT_RANGE, "1,16384,suffix:px"), "set_width", "get_width");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "use_hdr"), "set_use_hdr", "is_using_hdr");
}
@@ -2249,7 +2237,7 @@ void GradientTexture1D::_update() {
}
void GradientTexture1D::set_width(int p_width) {
- ERR_FAIL_COND(p_width <= 0);
+ ERR_FAIL_COND_MSG(p_width <= 0 || p_width > 16384, "Texture dimensions have to be within 1 to 16384 range.");
width = p_width;
_queue_update();
}
@@ -2413,6 +2401,7 @@ float GradientTexture2D::_get_gradient_offset_at(int x, int y) const {
}
void GradientTexture2D::set_width(int p_width) {
+ ERR_FAIL_COND_MSG(p_width <= 0 || p_width > 16384, "Texture dimensions have to be within 1 to 16384 range.");
width = p_width;
_queue_update();
}
@@ -2422,6 +2411,7 @@ int GradientTexture2D::get_width() const {
}
void GradientTexture2D::set_height(int p_height) {
+ ERR_FAIL_COND_MSG(p_height <= 0 || p_height > 16384, "Texture dimensions have to be within 1 to 16384 range.");
height = p_height;
_queue_update();
}
@@ -2515,8 +2505,8 @@ void GradientTexture2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("_update"), &GradientTexture2D::_update);
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "gradient", PROPERTY_HINT_RESOURCE_TYPE, "Gradient", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_EDITOR_INSTANTIATE_OBJECT), "set_gradient", "get_gradient");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "width", PROPERTY_HINT_RANGE, "1,2048"), "set_width", "get_width");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "height", PROPERTY_HINT_RANGE, "1,2048"), "set_height", "get_height");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "width", PROPERTY_HINT_RANGE, "1,2048,or_greater,suffix:px"), "set_width", "get_width");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "height", PROPERTY_HINT_RANGE, "1,2048,or_greater,suffix:px"), "set_height", "get_height");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "use_hdr"), "set_use_hdr", "is_using_hdr");
ADD_GROUP("Fill", "fill_");
@@ -2836,7 +2826,7 @@ void AnimatedTexture::_bind_methods() {
for (int i = 0; i < MAX_FRAMES; i++) {
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "frame_" + itos(i) + "/texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_INTERNAL), "set_frame_texture", "get_frame_texture", i);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "frame_" + itos(i) + "/delay_sec", PROPERTY_HINT_RANGE, "0.0,16.0,0.01", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_INTERNAL), "set_frame_delay", "get_frame_delay", i);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "frame_" + itos(i) + "/delay_sec", PROPERTY_HINT_RANGE, "0.0,16.0,0.01,suffix:s", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_INTERNAL), "set_frame_delay", "get_frame_delay", i);
}
BIND_CONSTANT(MAX_FRAMES);
@@ -3425,7 +3415,7 @@ RID PlaceholderTexture2D::get_rid() const {
void PlaceholderTexture2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_size", "size"), &PlaceholderTexture2D::set_size);
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2I, "size"), "set_size", "get_size");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2I, "size", PROPERTY_HINT_NONE, "suffix:px"), "set_size", "get_size");
}
PlaceholderTexture2D::PlaceholderTexture2D() {
@@ -3473,7 +3463,7 @@ Vector<Ref<Image>> PlaceholderTexture3D::get_data() const {
void PlaceholderTexture3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_size", "size"), &PlaceholderTexture3D::set_size);
ClassDB::bind_method(D_METHOD("get_size"), &PlaceholderTexture3D::get_size);
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR3I, "size"), "set_size", "get_size");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR3I, "size", PROPERTY_HINT_NONE, "suffix:px"), "set_size", "get_size");
}
PlaceholderTexture3D::PlaceholderTexture3D() {
@@ -3529,7 +3519,7 @@ void PlaceholderTextureLayered::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_size", "size"), &PlaceholderTextureLayered::set_size);
ClassDB::bind_method(D_METHOD("get_size"), &PlaceholderTextureLayered::get_size);
ClassDB::bind_method(D_METHOD("set_layers", "layers"), &PlaceholderTextureLayered::set_layers);
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2I, "size"), "set_size", "get_size");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2I, "size", PROPERTY_HINT_NONE, "suffix:px"), "set_size", "get_size");
ADD_PROPERTY(PropertyInfo(Variant::INT, "layers", PROPERTY_HINT_RANGE, "1,4096"), "set_layers", "get_layers");
}
diff --git a/scene/resources/theme.cpp b/scene/resources/theme.cpp
index 6af5d127a8..39b77568cf 100644
--- a/scene/resources/theme.cpp
+++ b/scene/resources/theme.cpp
@@ -152,7 +152,7 @@ void Theme::_get_property_list(List<PropertyInfo> *p_list) const {
// Font sizes.
for (const KeyValue<StringName, ThemeFontSizeMap> &E : font_size_map) {
for (const KeyValue<StringName, int> &F : E.value) {
- list.push_back(PropertyInfo(Variant::INT, String() + E.key + "/font_sizes/" + F.key, PROPERTY_HINT_RANGE, "0,256,1,or_greater"));
+ list.push_back(PropertyInfo(Variant::INT, String() + E.key + "/font_sizes/" + F.key, PROPERTY_HINT_RANGE, "0,256,1,or_greater,suffix:px"));
}
}
@@ -1818,7 +1818,7 @@ void Theme::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "default_base_scale", PROPERTY_HINT_RANGE, "0.0,2.0,0.01,or_greater"), "set_default_base_scale", "get_default_base_scale");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "default_font", PROPERTY_HINT_RESOURCE_TYPE, "Font"), "set_default_font", "get_default_font");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "default_font_size", PROPERTY_HINT_RANGE, "0,256,1,or_greater"), "set_default_font_size", "get_default_font_size");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "default_font_size", PROPERTY_HINT_RANGE, "0,256,1,or_greater,suffix:px"), "set_default_font_size", "get_default_font_size");
BIND_ENUM_CONSTANT(DATA_TYPE_COLOR);
BIND_ENUM_CONSTANT(DATA_TYPE_CONSTANT);
diff --git a/scene/resources/tile_set.cpp b/scene/resources/tile_set.cpp
index 9d2d4cdb20..13b671e562 100644
--- a/scene/resources/tile_set.cpp
+++ b/scene/resources/tile_set.cpp
@@ -236,6 +236,9 @@ bool TileSet::TerrainsPattern::operator<(const TerrainsPattern &p_terrains_patte
return is_valid_bit[i] < p_terrains_pattern.is_valid_bit[i];
}
}
+ if (terrain != p_terrains_pattern.terrain) {
+ return terrain < p_terrains_pattern.terrain;
+ }
for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
if (is_valid_bit[i] && bits[i] != p_terrains_pattern.bits[i]) {
return bits[i] < p_terrains_pattern.bits[i];
@@ -253,10 +256,23 @@ bool TileSet::TerrainsPattern::operator==(const TerrainsPattern &p_terrains_patt
return false;
}
}
+ if (terrain != p_terrains_pattern.terrain) {
+ return false;
+ }
return true;
}
-void TileSet::TerrainsPattern::set_terrain(TileSet::CellNeighbor p_peering_bit, int p_terrain) {
+void TileSet::TerrainsPattern::set_terrain(int p_terrain) {
+ ERR_FAIL_COND(p_terrain < -1);
+
+ terrain = p_terrain;
+}
+
+int TileSet::TerrainsPattern::get_terrain() const {
+ return terrain;
+}
+
+void TileSet::TerrainsPattern::set_terrain_peering_bit(TileSet::CellNeighbor p_peering_bit, int p_terrain) {
ERR_FAIL_COND(p_peering_bit == TileSet::CELL_NEIGHBOR_MAX);
ERR_FAIL_COND(!is_valid_bit[p_peering_bit]);
ERR_FAIL_COND(p_terrain < -1);
@@ -271,25 +287,27 @@ void TileSet::TerrainsPattern::set_terrain(TileSet::CellNeighbor p_peering_bit,
bits[p_peering_bit] = p_terrain;
}
-int TileSet::TerrainsPattern::get_terrain(TileSet::CellNeighbor p_peering_bit) const {
+int TileSet::TerrainsPattern::get_terrain_peering_bit(TileSet::CellNeighbor p_peering_bit) const {
ERR_FAIL_COND_V(p_peering_bit == TileSet::CELL_NEIGHBOR_MAX, -1);
ERR_FAIL_COND_V(!is_valid_bit[p_peering_bit], -1);
return bits[p_peering_bit];
}
-void TileSet::TerrainsPattern::set_terrains_from_array(Array p_terrains) {
- int in_array_index = 0;
+void TileSet::TerrainsPattern::from_array(Array p_terrains) {
+ set_terrain(p_terrains[0]);
+ int in_array_index = 1;
for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
if (is_valid_bit[i]) {
ERR_FAIL_INDEX(in_array_index, p_terrains.size());
- set_terrain(TileSet::CellNeighbor(i), p_terrains[in_array_index]);
+ set_terrain_peering_bit(TileSet::CellNeighbor(i), p_terrains[in_array_index]);
in_array_index++;
}
}
}
-Array TileSet::TerrainsPattern::get_terrains_as_array() const {
+Array TileSet::TerrainsPattern::as_array() const {
Array output;
+ output.push_back(get_terrain());
for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
if (is_valid_bit[i]) {
output.push_back(bits[i]);
@@ -297,10 +315,11 @@ Array TileSet::TerrainsPattern::get_terrains_as_array() const {
}
return output;
}
+
TileSet::TerrainsPattern::TerrainsPattern(const TileSet *p_tile_set, int p_terrain_set) {
ERR_FAIL_COND(p_terrain_set < 0);
for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
- is_valid_bit[i] = (p_tile_set->is_valid_peering_bit_terrain(p_terrain_set, TileSet::CellNeighbor(i)));
+ is_valid_bit[i] = (p_tile_set->is_valid_terrain_peering_bit(p_terrain_set, TileSet::CellNeighbor(i)));
bits[i] = -1;
}
valid = true;
@@ -410,11 +429,16 @@ void TileSet::_update_terrains_cache() {
TileSet::TerrainsPattern terrains_pattern = tile_data->get_terrains_pattern();
+ // Main terrain.
+ if (terrains_pattern.get_terrain() >= 0) {
+ per_terrain_pattern_tiles[terrain_set][terrains_pattern].insert(cell);
+ }
+
// Terrain bits.
for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
CellNeighbor bit = CellNeighbor(i);
- if (is_valid_peering_bit_terrain(terrain_set, bit)) {
- int terrain = terrains_pattern.get_terrain(bit);
+ if (is_valid_terrain_peering_bit(terrain_set, bit)) {
+ int terrain = terrains_pattern.get_terrain_peering_bit(bit);
if (terrain >= 0) {
per_terrain_pattern_tiles[terrain_set][terrains_pattern].insert(cell);
}
@@ -822,7 +846,7 @@ Color TileSet::get_terrain_color(int p_terrain_set, int p_terrain_index) const {
return terrain_sets[p_terrain_set].terrains[p_terrain_index].color;
}
-bool TileSet::is_valid_peering_bit_for_mode(TileSet::TerrainMode p_terrain_mode, TileSet::CellNeighbor p_peering_bit) const {
+bool TileSet::is_valid_terrain_peering_bit_for_mode(TileSet::TerrainMode p_terrain_mode, TileSet::CellNeighbor p_peering_bit) const {
if (tile_shape == TileSet::TILE_SHAPE_SQUARE) {
if (p_terrain_mode == TileSet::TERRAIN_MODE_MATCH_CORNERS_AND_SIDES || p_terrain_mode == TileSet::TERRAIN_MODE_MATCH_SIDES) {
if (p_peering_bit == TileSet::CELL_NEIGHBOR_RIGHT_SIDE ||
@@ -905,13 +929,13 @@ bool TileSet::is_valid_peering_bit_for_mode(TileSet::TerrainMode p_terrain_mode,
return false;
}
-bool TileSet::is_valid_peering_bit_terrain(int p_terrain_set, TileSet::CellNeighbor p_peering_bit) const {
+bool TileSet::is_valid_terrain_peering_bit(int p_terrain_set, TileSet::CellNeighbor p_peering_bit) const {
if (p_terrain_set < 0 || p_terrain_set >= get_terrain_sets_count()) {
return false;
}
TileSet::TerrainMode terrain_mode = get_terrain_set_mode(p_terrain_set);
- return is_valid_peering_bit_for_mode(terrain_mode, p_peering_bit);
+ return is_valid_terrain_peering_bit_for_mode(terrain_mode, p_peering_bit);
}
// Navigation
@@ -1494,26 +1518,48 @@ void TileSet::draw_tile_shape(CanvasItem *p_canvas_item, Transform2D p_transform
}
}
-Vector<Point2> TileSet::get_terrain_bit_polygon(int p_terrain_set, TileSet::CellNeighbor p_bit) {
+Vector<Point2> TileSet::get_terrain_polygon(int p_terrain_set) {
+ if (tile_shape == TileSet::TILE_SHAPE_SQUARE) {
+ return _get_square_terrain_polygon(tile_size);
+ } else if (tile_shape == TileSet::TILE_SHAPE_ISOMETRIC) {
+ return _get_isometric_terrain_polygon(tile_size);
+ } else {
+ float overlap = 0.0;
+ switch (tile_shape) {
+ case TileSet::TILE_SHAPE_HEXAGON:
+ overlap = 0.25;
+ break;
+ case TileSet::TILE_SHAPE_HALF_OFFSET_SQUARE:
+ overlap = 0.0;
+ break;
+ default:
+ break;
+ }
+ return _get_half_offset_terrain_polygon(tile_size, overlap, tile_offset_axis);
+ }
+ return Vector<Point2>();
+}
+
+Vector<Point2> TileSet::get_terrain_peering_bit_polygon(int p_terrain_set, TileSet::CellNeighbor p_bit) {
ERR_FAIL_COND_V(p_terrain_set < 0 || p_terrain_set >= get_terrain_sets_count(), Vector<Point2>());
TileSet::TerrainMode terrain_mode = get_terrain_set_mode(p_terrain_set);
if (tile_shape == TileSet::TILE_SHAPE_SQUARE) {
if (terrain_mode == TileSet::TERRAIN_MODE_MATCH_CORNERS_AND_SIDES) {
- return _get_square_corner_or_side_terrain_bit_polygon(tile_size, p_bit);
+ return _get_square_corner_or_side_terrain_peering_bit_polygon(tile_size, p_bit);
} else if (terrain_mode == TileSet::TERRAIN_MODE_MATCH_CORNERS) {
- return _get_square_corner_terrain_bit_polygon(tile_size, p_bit);
+ return _get_square_corner_terrain_peering_bit_polygon(tile_size, p_bit);
} else { // TileData::TERRAIN_MODE_MATCH_SIDES
- return _get_square_side_terrain_bit_polygon(tile_size, p_bit);
+ return _get_square_side_terrain_peering_bit_polygon(tile_size, p_bit);
}
} else if (tile_shape == TileSet::TILE_SHAPE_ISOMETRIC) {
if (terrain_mode == TileSet::TERRAIN_MODE_MATCH_CORNERS_AND_SIDES) {
- return _get_isometric_corner_or_side_terrain_bit_polygon(tile_size, p_bit);
+ return _get_isometric_corner_or_side_terrain_peering_bit_polygon(tile_size, p_bit);
} else if (terrain_mode == TileSet::TERRAIN_MODE_MATCH_CORNERS) {
- return _get_isometric_corner_terrain_bit_polygon(tile_size, p_bit);
+ return _get_isometric_corner_terrain_peering_bit_polygon(tile_size, p_bit);
} else { // TileData::TERRAIN_MODE_MATCH_SIDES
- return _get_isometric_side_terrain_bit_polygon(tile_size, p_bit);
+ return _get_isometric_side_terrain_peering_bit_polygon(tile_size, p_bit);
}
} else {
float overlap = 0.0;
@@ -1528,11 +1574,11 @@ Vector<Point2> TileSet::get_terrain_bit_polygon(int p_terrain_set, TileSet::Cell
break;
}
if (terrain_mode == TileSet::TERRAIN_MODE_MATCH_CORNERS_AND_SIDES) {
- return _get_half_offset_corner_or_side_terrain_bit_polygon(tile_size, p_bit, overlap, tile_offset_axis);
+ return _get_half_offset_corner_or_side_terrain_peering_bit_polygon(tile_size, overlap, tile_offset_axis, p_bit);
} else if (terrain_mode == TileSet::TERRAIN_MODE_MATCH_CORNERS) {
- return _get_half_offset_corner_terrain_bit_polygon(tile_size, p_bit, overlap, tile_offset_axis);
+ return _get_half_offset_corner_terrain_peering_bit_polygon(tile_size, overlap, tile_offset_axis, p_bit);
} else { // TileData::TERRAIN_MODE_MATCH_SIDES
- return _get_half_offset_side_terrain_bit_polygon(tile_size, p_bit, overlap, tile_offset_axis);
+ return _get_half_offset_side_terrain_peering_bit_polygon(tile_size, overlap, tile_offset_axis, p_bit);
}
}
}
@@ -1544,30 +1590,68 @@ void TileSet::draw_terrains(CanvasItem *p_canvas_item, Transform2D p_transform,
if (terrain_bits_meshes_dirty) {
// Recompute the meshes.
- terrain_bits_meshes.clear();
+ terrain_peering_bits_meshes.clear();
for (int terrain_mode_index = 0; terrain_mode_index < 3; terrain_mode_index++) {
TerrainMode terrain_mode = TerrainMode(terrain_mode_index);
+
+ // Center terrain
+ Vector<Vector2> polygon;
+ if (tile_shape == TileSet::TILE_SHAPE_SQUARE) {
+ polygon = _get_square_terrain_polygon(tile_size);
+ } else if (tile_shape == TileSet::TILE_SHAPE_ISOMETRIC) {
+ polygon = _get_isometric_terrain_polygon(tile_size);
+ } else {
+ float overlap = 0.0;
+ switch (tile_shape) {
+ case TileSet::TILE_SHAPE_HEXAGON:
+ overlap = 0.25;
+ break;
+ case TileSet::TILE_SHAPE_HALF_OFFSET_SQUARE:
+ overlap = 0.0;
+ break;
+ default:
+ break;
+ }
+ polygon = _get_half_offset_terrain_polygon(tile_size, overlap, tile_offset_axis);
+ }
+ {
+ Ref<ArrayMesh> mesh;
+ mesh.instantiate();
+ Vector<Vector2> uvs;
+ uvs.resize(polygon.size());
+ Vector<Color> colors;
+ colors.resize(polygon.size());
+ colors.fill(Color(1.0, 1.0, 1.0, 1.0));
+ Array a;
+ a.resize(Mesh::ARRAY_MAX);
+ a[Mesh::ARRAY_VERTEX] = polygon;
+ a[Mesh::ARRAY_TEX_UV] = uvs;
+ a[Mesh::ARRAY_COLOR] = colors;
+ a[Mesh::ARRAY_INDEX] = Geometry2D::triangulate_polygon(polygon);
+ mesh->add_surface_from_arrays(Mesh::PRIMITIVE_TRIANGLES, a, Array(), Dictionary(), Mesh::ARRAY_FLAG_USE_2D_VERTICES);
+ terrain_meshes[terrain_mode] = mesh;
+ }
+ // Peering bits
for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
CellNeighbor bit = CellNeighbor(i);
- if (is_valid_peering_bit_for_mode(terrain_mode, bit)) {
- Vector<Vector2> polygon;
+ if (is_valid_terrain_peering_bit_for_mode(terrain_mode, bit)) {
if (tile_shape == TileSet::TILE_SHAPE_SQUARE) {
if (terrain_mode == TileSet::TERRAIN_MODE_MATCH_CORNERS_AND_SIDES) {
- polygon = _get_square_corner_or_side_terrain_bit_polygon(tile_size, bit);
+ polygon = _get_square_corner_or_side_terrain_peering_bit_polygon(tile_size, bit);
} else if (terrain_mode == TileSet::TERRAIN_MODE_MATCH_CORNERS) {
- polygon = _get_square_corner_terrain_bit_polygon(tile_size, bit);
+ polygon = _get_square_corner_terrain_peering_bit_polygon(tile_size, bit);
} else { // TileData::TERRAIN_MODE_MATCH_SIDES
- polygon = _get_square_side_terrain_bit_polygon(tile_size, bit);
+ polygon = _get_square_side_terrain_peering_bit_polygon(tile_size, bit);
}
} else if (tile_shape == TileSet::TILE_SHAPE_ISOMETRIC) {
if (terrain_mode == TileSet::TERRAIN_MODE_MATCH_CORNERS_AND_SIDES) {
- polygon = _get_isometric_corner_or_side_terrain_bit_polygon(tile_size, bit);
+ polygon = _get_isometric_corner_or_side_terrain_peering_bit_polygon(tile_size, bit);
} else if (terrain_mode == TileSet::TERRAIN_MODE_MATCH_CORNERS) {
- polygon = _get_isometric_corner_terrain_bit_polygon(tile_size, bit);
+ polygon = _get_isometric_corner_terrain_peering_bit_polygon(tile_size, bit);
} else { // TileData::TERRAIN_MODE_MATCH_SIDES
- polygon = _get_isometric_side_terrain_bit_polygon(tile_size, bit);
+ polygon = _get_isometric_side_terrain_peering_bit_polygon(tile_size, bit);
}
} else {
float overlap = 0.0;
@@ -1582,29 +1666,30 @@ void TileSet::draw_terrains(CanvasItem *p_canvas_item, Transform2D p_transform,
break;
}
if (terrain_mode == TileSet::TERRAIN_MODE_MATCH_CORNERS_AND_SIDES) {
- polygon = _get_half_offset_corner_or_side_terrain_bit_polygon(tile_size, bit, overlap, tile_offset_axis);
+ polygon = _get_half_offset_corner_or_side_terrain_peering_bit_polygon(tile_size, overlap, tile_offset_axis, bit);
} else if (terrain_mode == TileSet::TERRAIN_MODE_MATCH_CORNERS) {
- polygon = _get_half_offset_corner_terrain_bit_polygon(tile_size, bit, overlap, tile_offset_axis);
+ polygon = _get_half_offset_corner_terrain_peering_bit_polygon(tile_size, overlap, tile_offset_axis, bit);
} else { // TileData::TERRAIN_MODE_MATCH_SIDES
- polygon = _get_half_offset_side_terrain_bit_polygon(tile_size, bit, overlap, tile_offset_axis);
+ polygon = _get_half_offset_side_terrain_peering_bit_polygon(tile_size, overlap, tile_offset_axis, bit);
}
}
-
- Ref<ArrayMesh> mesh;
- mesh.instantiate();
- Vector<Vector2> uvs;
- uvs.resize(polygon.size());
- Vector<Color> colors;
- colors.resize(polygon.size());
- colors.fill(Color(1.0, 1.0, 1.0, 1.0));
- Array a;
- a.resize(Mesh::ARRAY_MAX);
- a[Mesh::ARRAY_VERTEX] = polygon;
- a[Mesh::ARRAY_TEX_UV] = uvs;
- a[Mesh::ARRAY_COLOR] = colors;
- a[Mesh::ARRAY_INDEX] = Geometry2D::triangulate_polygon(polygon);
- mesh->add_surface_from_arrays(Mesh::PRIMITIVE_TRIANGLES, a, Array(), Dictionary(), Mesh::ARRAY_FLAG_USE_2D_VERTICES);
- terrain_bits_meshes[terrain_mode][bit] = mesh;
+ {
+ Ref<ArrayMesh> mesh;
+ mesh.instantiate();
+ Vector<Vector2> uvs;
+ uvs.resize(polygon.size());
+ Vector<Color> colors;
+ colors.resize(polygon.size());
+ colors.fill(Color(1.0, 1.0, 1.0, 1.0));
+ Array a;
+ a.resize(Mesh::ARRAY_MAX);
+ a[Mesh::ARRAY_VERTEX] = polygon;
+ a[Mesh::ARRAY_TEX_UV] = uvs;
+ a[Mesh::ARRAY_COLOR] = colors;
+ a[Mesh::ARRAY_INDEX] = Geometry2D::triangulate_polygon(polygon);
+ mesh->add_surface_from_arrays(Mesh::PRIMITIVE_TRIANGLES, a, Array(), Dictionary(), Mesh::ARRAY_FLAG_USE_2D_VERTICES);
+ terrain_peering_bits_meshes[terrain_mode][bit] = mesh;
+ }
}
}
}
@@ -1618,14 +1703,21 @@ void TileSet::draw_terrains(CanvasItem *p_canvas_item, Transform2D p_transform,
TileSet::TerrainMode terrain_mode = get_terrain_set_mode(terrain_set);
RenderingServer::get_singleton()->canvas_item_add_set_transform(p_canvas_item->get_canvas_item(), p_transform);
+ int terrain_id = p_tile_data->get_terrain();
+ if (terrain_id >= 0) {
+ Color color = get_terrain_color(terrain_set, terrain_id);
+ color.a = TERRAIN_ALPHA;
+ p_canvas_item->draw_mesh(terrain_meshes[terrain_mode], Ref<Texture2D>(), Transform2D(), color);
+ }
+
for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
CellNeighbor bit = CellNeighbor(i);
- if (is_valid_peering_bit_terrain(terrain_set, bit)) {
- int terrain_id = p_tile_data->get_peering_bit_terrain(bit);
+ if (is_valid_terrain_peering_bit(terrain_set, bit)) {
+ terrain_id = p_tile_data->get_terrain_peering_bit(bit);
if (terrain_id >= 0) {
Color color = get_terrain_color(terrain_set, terrain_id);
color.a = TERRAIN_ALPHA;
- p_canvas_item->draw_mesh(terrain_bits_meshes[terrain_mode][bit], Ref<Texture2D>(), Transform2D(), color);
+ p_canvas_item->draw_mesh(terrain_peering_bits_meshes[terrain_mode][bit], Ref<Texture2D>(), Transform2D(), color);
}
}
}
@@ -1670,13 +1762,16 @@ Vector<Vector<Ref<Texture2D>>> TileSet::generate_terrains_icons(Size2i p_size) {
for (int terrain = 0; terrain < get_terrains_count(terrain_set); terrain++) {
bit_counts[terrain] = 0;
}
+ if (tile_data->get_terrain() >= 0) {
+ bit_counts[tile_data->get_terrain()] += 10;
+ }
for (int terrain_bit = 0; terrain_bit < TileSet::CELL_NEIGHBOR_MAX; terrain_bit++) {
TileSet::CellNeighbor cell_neighbor = TileSet::CellNeighbor(terrain_bit);
- if (is_valid_peering_bit_terrain(terrain_set, cell_neighbor)) {
- int terrain = tile_data->get_peering_bit_terrain(cell_neighbor);
+ if (is_valid_terrain_peering_bit(terrain_set, cell_neighbor)) {
+ int terrain = tile_data->get_terrain_peering_bit(cell_neighbor);
if (terrain >= 0) {
if (terrain >= (int)bit_counts.size()) {
- WARN_PRINT(vformat("Invalid peering bit terrain: %d", terrain));
+ WARN_PRINT(vformat("Invalid terrain peering bit: %d", terrain));
} else {
bit_counts[terrain] += 1;
}
@@ -1730,7 +1825,17 @@ void TileSet::_source_changed() {
emit_changed();
}
-Vector<Point2> TileSet::_get_square_corner_or_side_terrain_bit_polygon(Vector2i p_size, TileSet::CellNeighbor p_bit) {
+Vector<Point2> TileSet::_get_square_terrain_polygon(Vector2i p_size) {
+ Rect2 rect(-Vector2(p_size) / 6.0, Vector2(p_size) / 3.0);
+ return {
+ rect.position,
+ Vector2(rect.get_end().x, rect.position.y),
+ rect.get_end(),
+ Vector2(rect.position.x, rect.get_end().y)
+ };
+}
+
+Vector<Point2> TileSet::_get_square_corner_or_side_terrain_peering_bit_polygon(Vector2i p_size, TileSet::CellNeighbor p_bit) {
Rect2 bit_rect;
bit_rect.size = Vector2(p_size) / 3;
switch (p_bit) {
@@ -1773,7 +1878,7 @@ Vector<Point2> TileSet::_get_square_corner_or_side_terrain_bit_polygon(Vector2i
return polygon;
}
-Vector<Point2> TileSet::_get_square_corner_terrain_bit_polygon(Vector2i p_size, TileSet::CellNeighbor p_bit) {
+Vector<Point2> TileSet::_get_square_corner_terrain_peering_bit_polygon(Vector2i p_size, TileSet::CellNeighbor p_bit) {
Vector2 unit = Vector2(p_size) / 6.0;
Vector<Vector2> polygon;
switch (p_bit) {
@@ -1815,7 +1920,7 @@ Vector<Point2> TileSet::_get_square_corner_terrain_bit_polygon(Vector2i p_size,
return polygon;
}
-Vector<Point2> TileSet::_get_square_side_terrain_bit_polygon(Vector2i p_size, TileSet::CellNeighbor p_bit) {
+Vector<Point2> TileSet::_get_square_side_terrain_peering_bit_polygon(Vector2i p_size, TileSet::CellNeighbor p_bit) {
Vector2 unit = Vector2(p_size) / 6.0;
Vector<Vector2> polygon;
switch (p_bit) {
@@ -1849,7 +1954,17 @@ Vector<Point2> TileSet::_get_square_side_terrain_bit_polygon(Vector2i p_size, Ti
return polygon;
}
-Vector<Point2> TileSet::_get_isometric_corner_or_side_terrain_bit_polygon(Vector2i p_size, TileSet::CellNeighbor p_bit) {
+Vector<Point2> TileSet::_get_isometric_terrain_polygon(Vector2i p_size) {
+ Vector2 unit = Vector2(p_size) / 6.0;
+ return {
+ Vector2(1, 0) * unit,
+ Vector2(0, 1) * unit,
+ Vector2(-1, 0) * unit,
+ Vector2(0, -1) * unit,
+ };
+}
+
+Vector<Point2> TileSet::_get_isometric_corner_or_side_terrain_peering_bit_polygon(Vector2i p_size, TileSet::CellNeighbor p_bit) {
Vector2 unit = Vector2(p_size) / 6.0;
Vector<Vector2> polygon;
switch (p_bit) {
@@ -1907,7 +2022,7 @@ Vector<Point2> TileSet::_get_isometric_corner_or_side_terrain_bit_polygon(Vector
return polygon;
}
-Vector<Point2> TileSet::_get_isometric_corner_terrain_bit_polygon(Vector2i p_size, TileSet::CellNeighbor p_bit) {
+Vector<Point2> TileSet::_get_isometric_corner_terrain_peering_bit_polygon(Vector2i p_size, TileSet::CellNeighbor p_bit) {
Vector2 unit = Vector2(p_size) / 6.0;
Vector<Vector2> polygon;
switch (p_bit) {
@@ -1949,7 +2064,7 @@ Vector<Point2> TileSet::_get_isometric_corner_terrain_bit_polygon(Vector2i p_siz
return polygon;
}
-Vector<Point2> TileSet::_get_isometric_side_terrain_bit_polygon(Vector2i p_size, TileSet::CellNeighbor p_bit) {
+Vector<Point2> TileSet::_get_isometric_side_terrain_peering_bit_polygon(Vector2i p_size, TileSet::CellNeighbor p_bit) {
Vector2 unit = Vector2(p_size) / 6.0;
Vector<Vector2> polygon;
switch (p_bit) {
@@ -1983,7 +2098,30 @@ Vector<Point2> TileSet::_get_isometric_side_terrain_bit_polygon(Vector2i p_size,
return polygon;
}
-Vector<Point2> TileSet::_get_half_offset_corner_or_side_terrain_bit_polygon(Vector2i p_size, TileSet::CellNeighbor p_bit, float p_overlap, TileSet::TileOffsetAxis p_offset_axis) {
+Vector<Point2> TileSet::_get_half_offset_terrain_polygon(Vector2i p_size, float p_overlap, TileSet::TileOffsetAxis p_offset_axis) {
+ Vector2 unit = Vector2(p_size) / 6.0;
+ if (p_offset_axis == TileSet::TILE_OFFSET_AXIS_HORIZONTAL) {
+ return {
+ Vector2(1, 1.0 - p_overlap * 2.0) * unit,
+ Vector2(0, 1) * unit,
+ Vector2(-1, 1.0 - p_overlap * 2.0) * unit,
+ Vector2(-1, -1.0 + p_overlap * 2.0) * unit,
+ Vector2(0, -1) * unit,
+ Vector2(1, -1.0 + p_overlap * 2.0) * unit,
+ };
+ } else {
+ return {
+ Vector2(1, 0) * unit,
+ Vector2(1.0 - p_overlap * 2.0, -1) * unit,
+ Vector2(-1.0 + p_overlap * 2.0, -1) * unit,
+ Vector2(-1, 0) * unit,
+ Vector2(-1.0 + p_overlap * 2.0, 1) * unit,
+ Vector2(1.0 - p_overlap * 2.0, 1) * unit,
+ };
+ }
+}
+
+Vector<Point2> TileSet::_get_half_offset_corner_or_side_terrain_peering_bit_polygon(Vector2i p_size, float p_overlap, TileSet::TileOffsetAxis p_offset_axis, TileSet::CellNeighbor p_bit) {
Vector<Vector2> point_list = {
Vector2(3, (3.0 * (1.0 - p_overlap * 2.0)) / 2.0),
Vector2(3, 3.0 * (1.0 - p_overlap * 2.0)),
@@ -2006,12 +2144,11 @@ Vector<Point2> TileSet::_get_half_offset_corner_or_side_terrain_bit_polygon(Vect
};
Vector2 unit = Vector2(p_size) / 6.0;
- for (int i = 0; i < point_list.size(); i++) {
- point_list.write[i] = point_list[i] * unit;
- }
-
Vector<Vector2> polygon;
if (p_offset_axis == TileSet::TILE_OFFSET_AXIS_HORIZONTAL) {
+ for (int i = 0; i < point_list.size(); i++) {
+ point_list.write[i] = point_list[i] * unit;
+ }
switch (p_bit) {
case TileSet::CELL_NEIGHBOR_RIGHT_SIDE:
polygon.push_back(point_list[17]);
@@ -2071,10 +2208,8 @@ Vector<Point2> TileSet::_get_half_offset_corner_or_side_terrain_bit_polygon(Vect
break;
}
} else {
- if (p_offset_axis == TileSet::TILE_OFFSET_AXIS_VERTICAL) {
- for (int i = 0; i < point_list.size(); i++) {
- point_list.write[i] = Vector2(point_list[i].y, point_list[i].x);
- }
+ for (int i = 0; i < point_list.size(); i++) {
+ point_list.write[i] = Vector2(point_list[i].y, point_list[i].x) * unit;
}
switch (p_bit) {
case TileSet::CELL_NEIGHBOR_RIGHT_CORNER:
@@ -2144,7 +2279,7 @@ Vector<Point2> TileSet::_get_half_offset_corner_or_side_terrain_bit_polygon(Vect
return polygon;
}
-Vector<Point2> TileSet::_get_half_offset_corner_terrain_bit_polygon(Vector2i p_size, TileSet::CellNeighbor p_bit, float p_overlap, TileSet::TileOffsetAxis p_offset_axis) {
+Vector<Point2> TileSet::_get_half_offset_corner_terrain_peering_bit_polygon(Vector2i p_size, float p_overlap, TileSet::TileOffsetAxis p_offset_axis, TileSet::CellNeighbor p_bit) {
Vector<Vector2> point_list = {
Vector2(3, 0),
Vector2(3, 3.0 * (1.0 - p_overlap * 2.0)),
@@ -2161,12 +2296,11 @@ Vector<Point2> TileSet::_get_half_offset_corner_terrain_bit_polygon(Vector2i p_s
};
Vector2 unit = Vector2(p_size) / 6.0;
- for (int i = 0; i < point_list.size(); i++) {
- point_list.write[i] = point_list[i] * unit;
- }
-
Vector<Vector2> polygon;
if (p_offset_axis == TileSet::TILE_OFFSET_AXIS_HORIZONTAL) {
+ for (int i = 0; i < point_list.size(); i++) {
+ point_list.write[i] = point_list[i] * unit;
+ }
switch (p_bit) {
case TileSet::CELL_NEIGHBOR_BOTTOM_RIGHT_CORNER:
polygon.push_back(point_list[0]);
@@ -2202,10 +2336,8 @@ Vector<Point2> TileSet::_get_half_offset_corner_terrain_bit_polygon(Vector2i p_s
break;
}
} else {
- if (p_offset_axis == TileSet::TILE_OFFSET_AXIS_VERTICAL) {
- for (int i = 0; i < point_list.size(); i++) {
- point_list.write[i] = Vector2(point_list[i].y, point_list[i].x);
- }
+ for (int i = 0; i < point_list.size(); i++) {
+ point_list.write[i] = Vector2(point_list[i].y, point_list[i].x) * unit;
}
switch (p_bit) {
case TileSet::CELL_NEIGHBOR_RIGHT_CORNER:
@@ -2251,7 +2383,7 @@ Vector<Point2> TileSet::_get_half_offset_corner_terrain_bit_polygon(Vector2i p_s
return polygon;
}
-Vector<Point2> TileSet::_get_half_offset_side_terrain_bit_polygon(Vector2i p_size, TileSet::CellNeighbor p_bit, float p_overlap, TileSet::TileOffsetAxis p_offset_axis) {
+Vector<Point2> TileSet::_get_half_offset_side_terrain_peering_bit_polygon(Vector2i p_size, float p_overlap, TileSet::TileOffsetAxis p_offset_axis, TileSet::CellNeighbor p_bit) {
Vector<Vector2> point_list = {
Vector2(3, 3.0 * (1.0 - p_overlap * 2.0)),
Vector2(0, 3),
@@ -2262,12 +2394,11 @@ Vector<Point2> TileSet::_get_half_offset_side_terrain_bit_polygon(Vector2i p_siz
};
Vector2 unit = Vector2(p_size) / 6.0;
- for (int i = 0; i < point_list.size(); i++) {
- point_list.write[i] = point_list[i] * unit;
- }
-
Vector<Vector2> polygon;
if (p_offset_axis == TileSet::TILE_OFFSET_AXIS_HORIZONTAL) {
+ for (int i = 0; i < point_list.size(); i++) {
+ point_list.write[i] = point_list[i] * unit;
+ }
switch (p_bit) {
case TileSet::CELL_NEIGHBOR_RIGHT_SIDE:
polygon.push_back(point_list[5]);
@@ -2297,10 +2428,8 @@ Vector<Point2> TileSet::_get_half_offset_side_terrain_bit_polygon(Vector2i p_siz
break;
}
} else {
- if (p_offset_axis == TileSet::TILE_OFFSET_AXIS_VERTICAL) {
- for (int i = 0; i < point_list.size(); i++) {
- point_list.write[i] = Vector2(point_list[i].y, point_list[i].x);
- }
+ for (int i = 0; i < point_list.size(); i++) {
+ point_list.write[i] = Vector2(point_list[i].y, point_list[i].x) * unit;
}
switch (p_bit) {
case TileSet::CELL_NEIGHBOR_BOTTOM_RIGHT_SIDE:
@@ -4929,11 +5058,11 @@ Vector2i TileData::get_texture_offset() const {
return tex_offset;
}
-void TileData::set_material(Ref<ShaderMaterial> p_material) {
+void TileData::set_material(Ref<Material> p_material) {
material = p_material;
emit_signal(SNAME("changed"));
}
-Ref<ShaderMaterial> TileData::get_material() const {
+Ref<Material> TileData::get_material() const {
return material;
}
@@ -5114,36 +5243,51 @@ int TileData::get_terrain_set() const {
return terrain_set;
}
-void TileData::set_peering_bit_terrain(TileSet::CellNeighbor p_peering_bit, int p_terrain_index) {
+void TileData::set_terrain(int p_terrain) {
+ ERR_FAIL_COND(terrain_set < 0);
+ ERR_FAIL_COND(p_terrain < -1);
+ if (tile_set) {
+ ERR_FAIL_COND(p_terrain >= tile_set->get_terrains_count(terrain_set));
+ }
+ terrain = p_terrain;
+ emit_signal(SNAME("changed"));
+}
+
+int TileData::get_terrain() const {
+ return terrain;
+}
+
+void TileData::set_terrain_peering_bit(TileSet::CellNeighbor p_peering_bit, int p_terrain_index) {
ERR_FAIL_INDEX(p_peering_bit, TileSet::CellNeighbor::CELL_NEIGHBOR_MAX);
ERR_FAIL_COND(terrain_set < 0);
ERR_FAIL_COND(p_terrain_index < -1);
if (tile_set) {
ERR_FAIL_COND(p_terrain_index >= tile_set->get_terrains_count(terrain_set));
- ERR_FAIL_COND(!is_valid_peering_bit_terrain(p_peering_bit));
+ ERR_FAIL_COND(!is_valid_terrain_peering_bit(p_peering_bit));
}
terrain_peering_bits[p_peering_bit] = p_terrain_index;
emit_signal(SNAME("changed"));
}
-int TileData::get_peering_bit_terrain(TileSet::CellNeighbor p_peering_bit) const {
- ERR_FAIL_COND_V(!is_valid_peering_bit_terrain(p_peering_bit), -1);
+int TileData::get_terrain_peering_bit(TileSet::CellNeighbor p_peering_bit) const {
+ ERR_FAIL_COND_V(!is_valid_terrain_peering_bit(p_peering_bit), -1);
return terrain_peering_bits[p_peering_bit];
}
-bool TileData::is_valid_peering_bit_terrain(TileSet::CellNeighbor p_peering_bit) const {
+bool TileData::is_valid_terrain_peering_bit(TileSet::CellNeighbor p_peering_bit) const {
ERR_FAIL_COND_V(!tile_set, false);
- return tile_set->is_valid_peering_bit_terrain(terrain_set, p_peering_bit);
+ return tile_set->is_valid_terrain_peering_bit(terrain_set, p_peering_bit);
}
TileSet::TerrainsPattern TileData::get_terrains_pattern() const {
ERR_FAIL_COND_V(!tile_set, TileSet::TerrainsPattern());
TileSet::TerrainsPattern output(tile_set, terrain_set);
+ output.set_terrain(terrain);
for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
- if (tile_set->is_valid_peering_bit_terrain(terrain_set, TileSet::CellNeighbor(i))) {
- output.set_terrain(TileSet::CellNeighbor(i), get_peering_bit_terrain(TileSet::CellNeighbor(i)));
+ if (tile_set->is_valid_terrain_peering_bit(terrain_set, TileSet::CellNeighbor(i))) {
+ output.set_terrain_peering_bit(TileSet::CellNeighbor(i), get_terrain_peering_bit(TileSet::CellNeighbor(i)));
}
}
return output;
@@ -5293,7 +5437,7 @@ bool TileData::_set(const StringName &p_name, const Variant &p_value) {
for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
TileSet::CellNeighbor bit = TileSet::CellNeighbor(i);
if (components[1] == TileSet::CELL_NEIGHBOR_ENUM_TO_TEXT[i]) {
- set_peering_bit_terrain(bit, p_value);
+ set_terrain_peering_bit(bit, p_value);
return true;
}
}
@@ -5455,9 +5599,9 @@ void TileData::_get_property_list(List<PropertyInfo> *p_list) const {
p_list->push_back(PropertyInfo(Variant::NIL, "Terrains", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_GROUP));
for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
TileSet::CellNeighbor bit = TileSet::CellNeighbor(i);
- if (is_valid_peering_bit_terrain(bit)) {
+ if (is_valid_terrain_peering_bit(bit)) {
property_info = PropertyInfo(Variant::INT, "terrains_peering_bit/" + String(TileSet::CELL_NEIGHBOR_ENUM_TO_TEXT[i]));
- if (get_peering_bit_terrain(bit) == -1) {
+ if (get_terrain_peering_bit(bit) == -1) {
property_info.usage ^= PROPERTY_USAGE_STORAGE;
}
p_list->push_back(property_info);
@@ -5531,8 +5675,10 @@ void TileData::_bind_methods() {
// Terrain
ClassDB::bind_method(D_METHOD("set_terrain_set", "terrain_set"), &TileData::set_terrain_set);
ClassDB::bind_method(D_METHOD("get_terrain_set"), &TileData::get_terrain_set);
- ClassDB::bind_method(D_METHOD("set_peering_bit_terrain", "peering_bit", "terrain"), &TileData::set_peering_bit_terrain);
- ClassDB::bind_method(D_METHOD("get_peering_bit_terrain", "peering_bit"), &TileData::get_peering_bit_terrain);
+ ClassDB::bind_method(D_METHOD("set_terrain", "terrain"), &TileData::set_terrain);
+ ClassDB::bind_method(D_METHOD("get_terrain"), &TileData::get_terrain);
+ ClassDB::bind_method(D_METHOD("set_terrain_peering_bit", "peering_bit", "terrain"), &TileData::set_terrain_peering_bit);
+ ClassDB::bind_method(D_METHOD("get_terrain_peering_bit", "peering_bit"), &TileData::get_terrain_peering_bit);
// Navigation
ClassDB::bind_method(D_METHOD("set_navigation_polygon", "layer_id", "navigation_polygon"), &TileData::set_navigation_polygon);
@@ -5554,12 +5700,13 @@ void TileData::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "transpose"), "set_transpose", "get_transpose");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2I, "texture_offset", PROPERTY_HINT_NONE, "suffix:px"), "set_texture_offset", "get_texture_offset");
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "modulate"), "set_modulate", "get_modulate");
- ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "material", PROPERTY_HINT_RESOURCE_TYPE, "ShaderMaterial"), "set_material", "get_material");
+ ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "material", PROPERTY_HINT_RESOURCE_TYPE, "CanvasItemMaterial,ShaderMaterial"), "set_material", "get_material");
ADD_PROPERTY(PropertyInfo(Variant::INT, "z_index"), "set_z_index", "get_z_index");
ADD_PROPERTY(PropertyInfo(Variant::INT, "y_sort_origin"), "set_y_sort_origin", "get_y_sort_origin");
ADD_GROUP("Terrains", "");
ADD_PROPERTY(PropertyInfo(Variant::INT, "terrain_set"), "set_terrain_set", "get_terrain_set");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "terrain"), "set_terrain", "get_terrain");
ADD_GROUP("Miscellaneous", "");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "probability"), "set_probability", "get_probability");
diff --git a/scene/resources/tile_set.h b/scene/resources/tile_set.h
index 615ab35615..7368d2bd87 100644
--- a/scene/resources/tile_set.h
+++ b/scene/resources/tile_set.h
@@ -164,7 +164,7 @@ private:
String name;
Ref<Texture2D> texture;
Vector2 tex_offset;
- Ref<ShaderMaterial> material;
+ Ref<Material> material;
Rect2 region;
int tile_mode = 0;
Color modulate = Color(1, 1, 1);
@@ -265,6 +265,7 @@ public:
class TerrainsPattern {
bool valid = false;
+ int terrain = -1;
int bits[TileSet::CELL_NEIGHBOR_MAX];
bool is_valid_bit[TileSet::CELL_NEIGHBOR_MAX];
@@ -277,11 +278,14 @@ public:
bool operator<(const TerrainsPattern &p_terrains_pattern) const;
bool operator==(const TerrainsPattern &p_terrains_pattern) const;
- void set_terrain(TileSet::CellNeighbor p_peering_bit, int p_terrain);
- int get_terrain(TileSet::CellNeighbor p_peering_bit) const;
+ void set_terrain(int p_terrain);
+ int get_terrain() const;
- void set_terrains_from_array(Array p_terrains);
- Array get_terrains_as_array() const;
+ void set_terrain_peering_bit(TileSet::CellNeighbor p_peering_bit, int p_terrain);
+ int get_terrain_peering_bit(TileSet::CellNeighbor p_peering_bit) const;
+
+ void from_array(Array p_terrains);
+ Array as_array() const;
TerrainsPattern(const TileSet *p_tile_set, int p_terrain_set);
TerrainsPattern() {}
@@ -333,7 +337,8 @@ private:
};
Vector<TerrainSet> terrain_sets;
- HashMap<TerrainMode, HashMap<CellNeighbor, Ref<ArrayMesh>>> terrain_bits_meshes;
+ HashMap<TerrainMode, Ref<ArrayMesh>> terrain_meshes;
+ HashMap<TerrainMode, HashMap<CellNeighbor, Ref<ArrayMesh>>> terrain_peering_bits_meshes;
bool terrain_bits_meshes_dirty = true;
LocalVector<RBMap<TileSet::TerrainsPattern, RBSet<TileMapCell>>> per_terrain_pattern_tiles; // Cached data.
@@ -371,17 +376,20 @@ private:
RBMap<Array, Array> alternative_level_proxies;
// Helpers
- Vector<Point2> _get_square_corner_or_side_terrain_bit_polygon(Vector2i p_size, TileSet::CellNeighbor p_bit);
- Vector<Point2> _get_square_corner_terrain_bit_polygon(Vector2i p_size, TileSet::CellNeighbor p_bit);
- Vector<Point2> _get_square_side_terrain_bit_polygon(Vector2i p_size, TileSet::CellNeighbor p_bit);
+ Vector<Point2> _get_square_terrain_polygon(Vector2i p_size);
+ Vector<Point2> _get_square_corner_or_side_terrain_peering_bit_polygon(Vector2i p_size, TileSet::CellNeighbor p_bit);
+ Vector<Point2> _get_square_corner_terrain_peering_bit_polygon(Vector2i p_size, TileSet::CellNeighbor p_bit);
+ Vector<Point2> _get_square_side_terrain_peering_bit_polygon(Vector2i p_size, TileSet::CellNeighbor p_bit);
- Vector<Point2> _get_isometric_corner_or_side_terrain_bit_polygon(Vector2i p_size, TileSet::CellNeighbor p_bit);
- Vector<Point2> _get_isometric_corner_terrain_bit_polygon(Vector2i p_size, TileSet::CellNeighbor p_bit);
- Vector<Point2> _get_isometric_side_terrain_bit_polygon(Vector2i p_size, TileSet::CellNeighbor p_bit);
+ Vector<Point2> _get_isometric_terrain_polygon(Vector2i p_size);
+ Vector<Point2> _get_isometric_corner_or_side_terrain_peering_bit_polygon(Vector2i p_size, TileSet::CellNeighbor p_bit);
+ Vector<Point2> _get_isometric_corner_terrain_peering_bit_polygon(Vector2i p_size, TileSet::CellNeighbor p_bit);
+ Vector<Point2> _get_isometric_side_terrain_peering_bit_polygon(Vector2i p_size, TileSet::CellNeighbor p_bit);
- Vector<Point2> _get_half_offset_corner_or_side_terrain_bit_polygon(Vector2i p_size, TileSet::CellNeighbor p_bit, float p_overlap, TileSet::TileOffsetAxis p_offset_axis);
- Vector<Point2> _get_half_offset_corner_terrain_bit_polygon(Vector2i p_size, TileSet::CellNeighbor p_bit, float p_overlap, TileSet::TileOffsetAxis p_offset_axis);
- Vector<Point2> _get_half_offset_side_terrain_bit_polygon(Vector2i p_size, TileSet::CellNeighbor p_bit, float p_overlap, TileSet::TileOffsetAxis p_offset_axis);
+ Vector<Point2> _get_half_offset_terrain_polygon(Vector2i p_size, float p_overlap, TileSet::TileOffsetAxis p_offset_axis);
+ Vector<Point2> _get_half_offset_corner_or_side_terrain_peering_bit_polygon(Vector2i p_size, float p_overlap, TileSet::TileOffsetAxis p_offset_axis, TileSet::CellNeighbor p_bit);
+ Vector<Point2> _get_half_offset_corner_terrain_peering_bit_polygon(Vector2i p_size, float p_overlap, TileSet::TileOffsetAxis p_offset_axis, TileSet::CellNeighbor p_bit);
+ Vector<Point2> _get_half_offset_side_terrain_peering_bit_polygon(Vector2i p_size, float p_overlap, TileSet::TileOffsetAxis p_offset_axis, TileSet::CellNeighbor p_bit);
protected:
static void _bind_methods();
@@ -454,8 +462,8 @@ public:
String get_terrain_name(int p_terrain_set, int p_terrain_index) const;
void set_terrain_color(int p_terrain_set, int p_terrain_index, Color p_color);
Color get_terrain_color(int p_terrain_set, int p_terrain_index) const;
- bool is_valid_peering_bit_for_mode(TileSet::TerrainMode p_terrain_mode, TileSet::CellNeighbor p_peering_bit) const;
- bool is_valid_peering_bit_terrain(int p_terrain_set, TileSet::CellNeighbor p_peering_bit) const;
+ bool is_valid_terrain_peering_bit_for_mode(TileSet::TerrainMode p_terrain_mode, TileSet::CellNeighbor p_peering_bit) const;
+ bool is_valid_terrain_peering_bit(int p_terrain_set, TileSet::CellNeighbor p_peering_bit) const;
// Navigation
int get_navigation_layers_count() const;
@@ -516,7 +524,8 @@ public:
Vector<Vector2> get_tile_shape_polygon();
void draw_tile_shape(CanvasItem *p_canvas_item, Transform2D p_transform, Color p_color, bool p_filled = false, Ref<Texture2D> p_texture = Ref<Texture2D>());
- Vector<Point2> get_terrain_bit_polygon(int p_terrain_set, TileSet::CellNeighbor p_bit);
+ Vector<Point2> get_terrain_polygon(int p_terrain_set);
+ Vector<Point2> get_terrain_peering_bit_polygon(int p_terrain_set, TileSet::CellNeighbor p_bit);
void draw_terrains(CanvasItem *p_canvas_item, Transform2D p_transform, const TileData *p_tile_data);
Vector<Vector<Ref<Texture2D>>> generate_terrains_icons(Size2i p_size);
@@ -774,7 +783,7 @@ private:
bool flip_v = false;
bool transpose = false;
Vector2i tex_offset = Vector2i();
- Ref<ShaderMaterial> material = Ref<ShaderMaterial>();
+ Ref<Material> material = Ref<Material>();
Color modulate = Color(1.0, 1.0, 1.0, 1.0);
int z_index = 0;
int y_sort_origin = 0;
@@ -798,6 +807,7 @@ private:
// Terrain
int terrain_set = -1;
+ int terrain = -1;
int terrain_peering_bits[16] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 };
// Navigation
@@ -854,8 +864,8 @@ public:
void set_texture_offset(Vector2i p_texture_offset);
Vector2i get_texture_offset() const;
- void set_material(Ref<ShaderMaterial> p_material);
- Ref<ShaderMaterial> get_material() const;
+ void set_material(Ref<Material> p_material);
+ Ref<Material> get_material() const;
void set_modulate(Color p_modulate);
Color get_modulate() const;
void set_z_index(int p_z_index);
@@ -887,9 +897,11 @@ public:
// Terrain
void set_terrain_set(int p_terrain_id);
int get_terrain_set() const;
- void set_peering_bit_terrain(TileSet::CellNeighbor p_peering_bit, int p_terrain_id);
- int get_peering_bit_terrain(TileSet::CellNeighbor p_peering_bit) const;
- bool is_valid_peering_bit_terrain(TileSet::CellNeighbor p_peering_bit) const;
+ void set_terrain(int p_terrain_id);
+ int get_terrain() const;
+ void set_terrain_peering_bit(TileSet::CellNeighbor p_peering_bit, int p_terrain_id);
+ int get_terrain_peering_bit(TileSet::CellNeighbor p_peering_bit) const;
+ bool is_valid_terrain_peering_bit(TileSet::CellNeighbor p_peering_bit) const;
TileSet::TerrainsPattern get_terrains_pattern() const; // Not exposed.
diff --git a/scene/resources/visual_shader.cpp b/scene/resources/visual_shader.cpp
index a1a23124a3..b8eac6de00 100644
--- a/scene/resources/visual_shader.cpp
+++ b/scene/resources/visual_shader.cpp
@@ -712,86 +712,6 @@ VisualShader::VaryingType VisualShader::get_varying_type(const String &p_name) {
return varyings[p_name].type;
}
-void VisualShader::set_engine_version(const Dictionary &p_engine_version) {
- ERR_FAIL_COND(!p_engine_version.has("major"));
- ERR_FAIL_COND(!p_engine_version.has("minor"));
- engine_version["major"] = p_engine_version["major"];
- engine_version["minor"] = p_engine_version["minor"];
-}
-
-Dictionary VisualShader::get_engine_version() const {
- return engine_version;
-}
-
-#ifndef DISABLE_DEPRECATED
-
-void VisualShader::update_engine_version(const Dictionary &p_new_version) {
- if (engine_version.is_empty()) { // before 4.0
- for (int i = 0; i < TYPE_MAX; i++) {
- for (KeyValue<int, Node> &E : graph[i].nodes) {
- Ref<VisualShaderNodeInput> input = Object::cast_to<VisualShaderNodeInput>(E.value.node.ptr());
- if (input.is_valid()) {
- if (input->get_input_name() == "side") {
- input->set_input_name("front_facing");
- }
- }
- Ref<VisualShaderNodeExpression> expression = Object::cast_to<VisualShaderNodeExpression>(E.value.node.ptr());
- if (expression.is_valid()) {
- for (int j = 0; j < expression->get_input_port_count(); j++) {
- int type = expression->get_input_port_type(j);
- if (type > 0) { // + PORT_TYPE_SCALAR_INT + PORT_TYPE_VECTOR_2D
- type += 2;
- }
- expression->set_input_port_type(j, type);
- }
- for (int j = 0; j < expression->get_output_port_count(); j++) {
- int type = expression->get_output_port_type(j);
- if (type > 0) { // + PORT_TYPE_SCALAR_INT + PORT_TYPE_VECTOR_2D
- type += 2;
- }
- expression->set_output_port_type(j, type);
- }
- }
- Ref<VisualShaderNodeStep> step = Object::cast_to<VisualShaderNodeStep>(E.value.node.ptr());
- if (step.is_valid()) {
- int op_type = int(step->get_op_type());
- if (int(op_type) > 0) { // + OP_TYPE_VECTOR_2D + OP_TYPE_VECTOR_2D_SCALAR
- op_type += 2;
- }
- step->set_op_type(VisualShaderNodeStep::OpType(op_type));
- }
- Ref<VisualShaderNodeSmoothStep> sstep = Object::cast_to<VisualShaderNodeSmoothStep>(E.value.node.ptr());
- if (sstep.is_valid()) {
- int op_type = int(sstep->get_op_type());
- if (int(op_type) > 0) { // + OP_TYPE_VECTOR_2D + OP_TYPE_VECTOR_2D_SCALAR
- op_type += 2;
- }
- sstep->set_op_type(VisualShaderNodeSmoothStep::OpType(op_type));
- }
- Ref<VisualShaderNodeMix> mix = Object::cast_to<VisualShaderNodeMix>(E.value.node.ptr());
- if (mix.is_valid()) {
- int op_type = int(mix->get_op_type());
- if (int(op_type) > 0) { // + OP_TYPE_VECTOR_2D + OP_TYPE_VECTOR_2D_SCALAR
- op_type += 2;
- }
- mix->set_op_type(VisualShaderNodeMix::OpType(op_type));
- }
- Ref<VisualShaderNodeCompare> compare = Object::cast_to<VisualShaderNodeCompare>(E.value.node.ptr());
- if (compare.is_valid()) {
- int ctype = int(compare->get_comparison_type());
- if (int(ctype) > 0) { // + CTYPE_SCALAR_INT + CTYPE_VECTOR_2D
- ctype += 2;
- }
- compare->set_comparison_type(VisualShaderNodeCompare::ComparisonType(ctype));
- }
- }
- }
- }
- set_engine_version(p_new_version);
-}
-
-#endif /* DISABLE_DEPRECATED */
-
void VisualShader::add_node(Type p_type, const Ref<VisualShaderNode> &p_node, const Vector2 &p_position, int p_id) {
ERR_FAIL_COND(p_node.is_null());
ERR_FAIL_COND(p_id < 2);
@@ -2628,9 +2548,6 @@ void VisualShader::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_node_connections", "type"), &VisualShader::_get_node_connections);
- ClassDB::bind_method(D_METHOD("set_engine_version", "version"), &VisualShader::set_engine_version);
- ClassDB::bind_method(D_METHOD("get_engine_version"), &VisualShader::get_engine_version);
-
ClassDB::bind_method(D_METHOD("set_graph_offset", "offset"), &VisualShader::set_graph_offset);
ClassDB::bind_method(D_METHOD("get_graph_offset"), &VisualShader::get_graph_offset);
@@ -2641,7 +2558,6 @@ void VisualShader::_bind_methods() {
ClassDB::bind_method(D_METHOD("_update_shader"), &VisualShader::_update_shader);
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "graph_offset", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR), "set_graph_offset", "get_graph_offset");
- ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "engine_version", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR), "set_engine_version", "get_engine_version");
ADD_PROPERTY_DEFAULT("code", ""); // Inherited from Shader, prevents showing default code as override in docs.
@@ -3528,7 +3444,8 @@ const VisualShaderNodeOutput::Port VisualShaderNodeOutput::ports[] = {
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR_3D, "Binormal", "BINORMAL" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR_2D, "UV", "UV" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR_2D, "UV2", "UV2" },
- { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR_4D, "Color", "COLOR" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR_3D, "Color", "COLOR.rgb" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "Alpha", "COLOR.a" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "Roughness", "ROUGHNESS" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "Point Size", "POINT_SIZE" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "Model View Matrix", "MODELVIEW_MATRIX" },
@@ -3576,12 +3493,14 @@ const VisualShaderNodeOutput::Port VisualShaderNodeOutput::ports[] = {
////////////////////////////////////////////////////////////////////////
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR_2D, "Vertex", "VERTEX" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR_2D, "UV", "UV" },
- { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR_4D, "Color", "COLOR" },
+ { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR_3D, "Color", "COLOR.rgb" },
+ { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "Alpha", "COLOR.a" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "Point Size", "POINT_SIZE" },
////////////////////////////////////////////////////////////////////////
// Canvas Item, Fragment.
////////////////////////////////////////////////////////////////////////
- { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR_4D, "Color", "COLOR" },
+ { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR_3D, "Color", "COLOR.rgb" },
+ { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "Alpha", "COLOR.a" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR_3D, "Normal", "NORMAL" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR_3D, "Normal Map", "NORMAL_MAP" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "Normal Map Depth", "NORMAL_MAP_DEPTH" },
@@ -3590,14 +3509,16 @@ const VisualShaderNodeOutput::Port VisualShaderNodeOutput::ports[] = {
////////////////////////////////////////////////////////////////////////
// Canvas Item, Light.
////////////////////////////////////////////////////////////////////////
- { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR_4D, "Light", "LIGHT" },
+ { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR_3D, "Light", "LIGHT.rgb" },
+ { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_SCALAR, "Light Alpha", "LIGHT.a" },
////////////////////////////////////////////////////////////////////////
// Sky, Sky.
////////////////////////////////////////////////////////////////////////
{ Shader::MODE_SKY, VisualShader::TYPE_SKY, VisualShaderNode::PORT_TYPE_VECTOR_3D, "Color", "COLOR" },
{ Shader::MODE_SKY, VisualShader::TYPE_SKY, VisualShaderNode::PORT_TYPE_SCALAR, "Alpha", "ALPHA" },
- { Shader::MODE_SKY, VisualShader::TYPE_SKY, VisualShaderNode::PORT_TYPE_VECTOR_4D, "Fog", "FOG" },
+ { Shader::MODE_SKY, VisualShader::TYPE_SKY, VisualShaderNode::PORT_TYPE_VECTOR_3D, "Fog", "FOG.rgb" },
+ { Shader::MODE_SKY, VisualShader::TYPE_SKY, VisualShaderNode::PORT_TYPE_SCALAR, "Fog Alpha", "FOG.a" },
////////////////////////////////////////////////////////////////////////
// Fog, Fog.
diff --git a/scene/resources/visual_shader.h b/scene/resources/visual_shader.h
index 925dff31af..afd84e49cc 100644
--- a/scene/resources/visual_shader.h
+++ b/scene/resources/visual_shader.h
@@ -44,8 +44,6 @@ class VisualShader : public Shader {
friend class VisualShaderNodeVersionChecker;
- Dictionary engine_version;
-
public:
enum Type {
TYPE_VERTEX,
@@ -177,14 +175,6 @@ public: // internal methods
void set_shader_type(Type p_type);
Type get_shader_type() const;
-public:
- void set_engine_version(const Dictionary &p_version);
- Dictionary get_engine_version() const;
-
-#ifndef DISABLE_DEPRECATED
- void update_engine_version(const Dictionary &p_new_version);
-#endif /* DISABLE_DEPRECATED */
-
enum {
NODE_ID_INVALID = -1,
NODE_ID_OUTPUT = 0,
diff --git a/scene/resources/visual_shader_nodes.cpp b/scene/resources/visual_shader_nodes.cpp
index 5c0f36ca92..b8667f07fe 100644
--- a/scene/resources/visual_shader_nodes.cpp
+++ b/scene/resources/visual_shader_nodes.cpp
@@ -2462,7 +2462,7 @@ void VisualShaderNodeFloatFunc::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_function", "func"), &VisualShaderNodeFloatFunc::set_function);
ClassDB::bind_method(D_METHOD("get_function"), &VisualShaderNodeFloatFunc::get_function);
- ADD_PROPERTY(PropertyInfo(Variant::INT, "function", PROPERTY_HINT_ENUM, "Sin,Cos,Tan,ASin,ACos,ATan,SinH,CosH,TanH,Log,Exp,Sqrt,Abs,Sign,Floor,Round,Ceil,Frac,Saturate,Negate,ACosH,ASinH,ATanH,Degrees,Exp2,InverseSqrt,Log2,Radians,Reciprocal,RoundEven,Trunc,OneMinus"), "set_function", "get_function");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "function", PROPERTY_HINT_ENUM, "Sin,Cos,Tan,ASin,ACos,ATan,SinH,CosH,TanH,Log,Exp,Sqrt,Abs,Sign,Floor,Round,Ceil,Fract,Saturate,Negate,ACosH,ASinH,ATanH,Degrees,Exp2,InverseSqrt,Log2,Radians,Reciprocal,RoundEven,Trunc,OneMinus"), "set_function", "get_function");
BIND_ENUM_CONSTANT(FUNC_SIN);
BIND_ENUM_CONSTANT(FUNC_COS);
@@ -2481,7 +2481,7 @@ void VisualShaderNodeFloatFunc::_bind_methods() {
BIND_ENUM_CONSTANT(FUNC_FLOOR);
BIND_ENUM_CONSTANT(FUNC_ROUND);
BIND_ENUM_CONSTANT(FUNC_CEIL);
- BIND_ENUM_CONSTANT(FUNC_FRAC);
+ BIND_ENUM_CONSTANT(FUNC_FRACT);
BIND_ENUM_CONSTANT(FUNC_SATURATE);
BIND_ENUM_CONSTANT(FUNC_NEGATE);
BIND_ENUM_CONSTANT(FUNC_ACOSH);
@@ -2713,7 +2713,7 @@ void VisualShaderNodeVectorFunc::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_function", "func"), &VisualShaderNodeVectorFunc::set_function);
ClassDB::bind_method(D_METHOD("get_function"), &VisualShaderNodeVectorFunc::get_function);
- ADD_PROPERTY(PropertyInfo(Variant::INT, "function", PROPERTY_HINT_ENUM, "Normalize,Saturate,Negate,Reciprocal,Abs,ACos,ACosH,ASin,ASinH,ATan,ATanH,Ceil,Cos,CosH,Degrees,Exp,Exp2,Floor,Frac,InverseSqrt,Log,Log2,Radians,Round,RoundEven,Sign,Sin,SinH,Sqrt,Tan,TanH,Trunc,OneMinus"), "set_function", "get_function");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "function", PROPERTY_HINT_ENUM, "Normalize,Saturate,Negate,Reciprocal,Abs,ACos,ACosH,ASin,ASinH,ATan,ATanH,Ceil,Cos,CosH,Degrees,Exp,Exp2,Floor,Fract,InverseSqrt,Log,Log2,Radians,Round,RoundEven,Sign,Sin,SinH,Sqrt,Tan,TanH,Trunc,OneMinus"), "set_function", "get_function");
BIND_ENUM_CONSTANT(FUNC_NORMALIZE);
BIND_ENUM_CONSTANT(FUNC_SATURATE);
@@ -2733,7 +2733,7 @@ void VisualShaderNodeVectorFunc::_bind_methods() {
BIND_ENUM_CONSTANT(FUNC_EXP);
BIND_ENUM_CONSTANT(FUNC_EXP2);
BIND_ENUM_CONSTANT(FUNC_FLOOR);
- BIND_ENUM_CONSTANT(FUNC_FRAC);
+ BIND_ENUM_CONSTANT(FUNC_FRACT);
BIND_ENUM_CONSTANT(FUNC_INVERSE_SQRT);
BIND_ENUM_CONSTANT(FUNC_LOG);
BIND_ENUM_CONSTANT(FUNC_LOG2);
diff --git a/scene/resources/visual_shader_nodes.h b/scene/resources/visual_shader_nodes.h
index b159d25eba..1eb7b7240f 100644
--- a/scene/resources/visual_shader_nodes.h
+++ b/scene/resources/visual_shader_nodes.h
@@ -934,7 +934,7 @@ public:
FUNC_FLOOR,
FUNC_ROUND,
FUNC_CEIL,
- FUNC_FRAC,
+ FUNC_FRACT,
FUNC_SATURATE,
FUNC_NEGATE,
FUNC_ACOSH,
@@ -1053,7 +1053,7 @@ public:
FUNC_EXP,
FUNC_EXP2,
FUNC_FLOOR,
- FUNC_FRAC,
+ FUNC_FRACT,
FUNC_INVERSE_SQRT,
FUNC_LOG,
FUNC_LOG2,
diff --git a/scene/resources/world_2d.cpp b/scene/resources/world_2d.cpp
index 9d8e0f7547..4dfbe5f079 100644
--- a/scene/resources/world_2d.cpp
+++ b/scene/resources/world_2d.cpp
@@ -73,8 +73,8 @@ World2D::World2D() {
// Create and configure space2D to be more friendly with pixels than meters
space = PhysicsServer2D::get_singleton()->space_create();
PhysicsServer2D::get_singleton()->space_set_active(space, true);
- PhysicsServer2D::get_singleton()->area_set_param(space, PhysicsServer2D::AREA_PARAM_GRAVITY, GLOBAL_DEF("physics/2d/default_gravity", 980.0));
- PhysicsServer2D::get_singleton()->area_set_param(space, PhysicsServer2D::AREA_PARAM_GRAVITY_VECTOR, GLOBAL_DEF("physics/2d/default_gravity_vector", Vector2(0, 1)));
+ PhysicsServer2D::get_singleton()->area_set_param(space, PhysicsServer2D::AREA_PARAM_GRAVITY, GLOBAL_DEF_BASIC("physics/2d/default_gravity", 980.0));
+ PhysicsServer2D::get_singleton()->area_set_param(space, PhysicsServer2D::AREA_PARAM_GRAVITY_VECTOR, GLOBAL_DEF_BASIC("physics/2d/default_gravity_vector", Vector2(0, 1)));
PhysicsServer2D::get_singleton()->area_set_param(space, PhysicsServer2D::AREA_PARAM_LINEAR_DAMP, GLOBAL_DEF("physics/2d/default_linear_damp", 0.1));
ProjectSettings::get_singleton()->set_custom_property_info("physics/2d/default_linear_damp", PropertyInfo(Variant::FLOAT, "physics/2d/default_linear_damp", PROPERTY_HINT_RANGE, "-1,100,0.001,or_greater"));
PhysicsServer2D::get_singleton()->area_set_param(space, PhysicsServer2D::AREA_PARAM_ANGULAR_DAMP, GLOBAL_DEF("physics/2d/default_angular_damp", 1.0));
diff --git a/scene/resources/world_3d.cpp b/scene/resources/world_3d.cpp
index 0088236112..a84ee773b4 100644
--- a/scene/resources/world_3d.cpp
+++ b/scene/resources/world_3d.cpp
@@ -141,8 +141,8 @@ World3D::World3D() {
scenario = RenderingServer::get_singleton()->scenario_create();
PhysicsServer3D::get_singleton()->space_set_active(space, true);
- PhysicsServer3D::get_singleton()->area_set_param(space, PhysicsServer3D::AREA_PARAM_GRAVITY, GLOBAL_DEF("physics/3d/default_gravity", 9.8));
- PhysicsServer3D::get_singleton()->area_set_param(space, PhysicsServer3D::AREA_PARAM_GRAVITY_VECTOR, GLOBAL_DEF("physics/3d/default_gravity_vector", Vector3(0, -1, 0)));
+ PhysicsServer3D::get_singleton()->area_set_param(space, PhysicsServer3D::AREA_PARAM_GRAVITY, GLOBAL_DEF_BASIC("physics/3d/default_gravity", 9.8));
+ PhysicsServer3D::get_singleton()->area_set_param(space, PhysicsServer3D::AREA_PARAM_GRAVITY_VECTOR, GLOBAL_DEF_BASIC("physics/3d/default_gravity_vector", Vector3(0, -1, 0)));
PhysicsServer3D::get_singleton()->area_set_param(space, PhysicsServer3D::AREA_PARAM_LINEAR_DAMP, GLOBAL_DEF("physics/3d/default_linear_damp", 0.1));
ProjectSettings::get_singleton()->set_custom_property_info("physics/3d/default_linear_damp", PropertyInfo(Variant::FLOAT, "physics/3d/default_linear_damp", PROPERTY_HINT_RANGE, "0,100,0.001,or_greater"));
PhysicsServer3D::get_singleton()->area_set_param(space, PhysicsServer3D::AREA_PARAM_ANGULAR_DAMP, GLOBAL_DEF("physics/3d/default_angular_damp", 0.1));
@@ -150,8 +150,8 @@ World3D::World3D() {
navigation_map = NavigationServer3D::get_singleton()->map_create();
NavigationServer3D::get_singleton()->map_set_active(navigation_map, true);
- NavigationServer3D::get_singleton()->map_set_cell_size(navigation_map, GLOBAL_DEF("navigation/3d/default_cell_size", 0.3));
- NavigationServer3D::get_singleton()->map_set_edge_connection_margin(navigation_map, GLOBAL_DEF("navigation/3d/default_edge_connection_margin", 0.3));
+ NavigationServer3D::get_singleton()->map_set_cell_size(navigation_map, GLOBAL_DEF("navigation/3d/default_cell_size", 0.25));
+ NavigationServer3D::get_singleton()->map_set_edge_connection_margin(navigation_map, GLOBAL_DEF("navigation/3d/default_edge_connection_margin", 0.25));
}
World3D::~World3D() {
diff --git a/servers/SCsub b/servers/SCsub
index 66a1b9b26f..2ce90e970b 100644
--- a/servers/SCsub
+++ b/servers/SCsub
@@ -14,6 +14,7 @@ SConscript("audio/SCsub")
SConscript("text/SCsub")
SConscript("debugger/SCsub")
SConscript("extensions/SCsub")
+SConscript("movie_writer/SCsub")
lib = env.add_library("servers", env.servers_sources)
diff --git a/servers/audio/audio_driver_dummy.cpp b/servers/audio/audio_driver_dummy.cpp
index 635e4601c7..60eb657923 100644
--- a/servers/audio/audio_driver_dummy.cpp
+++ b/servers/audio/audio_driver_dummy.cpp
@@ -33,22 +33,24 @@
#include "core/config/project_settings.h"
#include "core/os/os.h"
+AudioDriverDummy *AudioDriverDummy::singleton = nullptr;
+
Error AudioDriverDummy::init() {
active = false;
thread_exited = false;
exit_thread = false;
samples_in = nullptr;
- mix_rate = GLOBAL_GET("audio/driver/mix_rate");
- speaker_mode = SPEAKER_MODE_STEREO;
- channels = 2;
-
- int latency = GLOBAL_GET("audio/driver/output_latency");
- buffer_frames = closest_power_of_2(latency * mix_rate / 1000);
+ if (mix_rate == -1) {
+ mix_rate = GLOBAL_GET("audio/driver/mix_rate");
+ }
+ channels = get_channels();
samples_in = memnew_arr(int32_t, (size_t)buffer_frames * channels);
- thread.start(AudioDriverDummy::thread_func, this);
+ if (use_threads) {
+ thread.start(AudioDriverDummy::thread_func, this);
+ }
return OK;
};
@@ -93,11 +95,56 @@ void AudioDriverDummy::unlock() {
mutex.unlock();
};
+void AudioDriverDummy::set_use_threads(bool p_use_threads) {
+ use_threads = p_use_threads;
+}
+
+void AudioDriverDummy::set_speaker_mode(SpeakerMode p_mode) {
+ speaker_mode = p_mode;
+}
+
+void AudioDriverDummy::set_mix_rate(int p_rate) {
+ mix_rate = p_rate;
+}
+
+uint32_t AudioDriverDummy::get_channels() const {
+ static const int channels_for_mode[4] = { 2, 4, 8, 16 };
+ return channels_for_mode[speaker_mode];
+}
+
+void AudioDriverDummy::mix_audio(int p_frames, int32_t *p_buffer) {
+ ERR_FAIL_COND(!active); // If not active, should not mix.
+ ERR_FAIL_COND(use_threads == true); // If using threads, this will not work well.
+
+ uint32_t todo = p_frames;
+ while (todo) {
+ uint32_t to_mix = MIN(buffer_frames, todo);
+ lock();
+ audio_server_process(to_mix, samples_in);
+ unlock();
+
+ uint32_t total_samples = to_mix * channels;
+
+ for (uint32_t i = 0; i < total_samples; i++) {
+ p_buffer[i] = samples_in[i];
+ }
+
+ todo -= to_mix;
+ p_buffer += total_samples;
+ }
+}
+
void AudioDriverDummy::finish() {
- exit_thread = true;
- thread.wait_to_finish();
+ if (use_threads) {
+ exit_thread = true;
+ thread.wait_to_finish();
+ }
if (samples_in) {
memdelete_arr(samples_in);
};
-};
+}
+
+AudioDriverDummy::AudioDriverDummy() {
+ singleton = this;
+}
diff --git a/servers/audio/audio_driver_dummy.h b/servers/audio/audio_driver_dummy.h
index 68b523e086..232a8d5e1f 100644
--- a/servers/audio/audio_driver_dummy.h
+++ b/servers/audio/audio_driver_dummy.h
@@ -44,9 +44,9 @@ class AudioDriverDummy : public AudioDriver {
static void thread_func(void *p_udata);
- unsigned int buffer_frames;
- unsigned int mix_rate;
- SpeakerMode speaker_mode;
+ uint32_t buffer_frames = 4096;
+ int32_t mix_rate = -1;
+ SpeakerMode speaker_mode = SPEAKER_MODE_STEREO;
int channels;
@@ -54,6 +54,10 @@ class AudioDriverDummy : public AudioDriver {
bool thread_exited;
mutable bool exit_thread;
+ bool use_threads = true;
+
+ static AudioDriverDummy *singleton;
+
public:
const char *get_name() const {
return "Dummy";
@@ -67,7 +71,17 @@ public:
virtual void unlock();
virtual void finish();
- AudioDriverDummy() {}
+ void set_use_threads(bool p_use_threads);
+ void set_speaker_mode(SpeakerMode p_mode);
+ void set_mix_rate(int p_rate);
+
+ uint32_t get_channels() const;
+
+ void mix_audio(int p_frames, int32_t *p_buffer);
+
+ static AudioDriverDummy *get_dummy_singleton() { return singleton; }
+
+ AudioDriverDummy();
~AudioDriverDummy() {}
};
diff --git a/servers/audio/audio_stream.cpp b/servers/audio/audio_stream.cpp
index 8399a92be9..5d9a9e61dc 100644
--- a/servers/audio/audio_stream.cpp
+++ b/servers/audio/audio_stream.cpp
@@ -135,9 +135,10 @@ int AudioStreamPlaybackResampled::mix(AudioFrame *p_buffer, float p_rate_scale,
uint64_t mix_increment = uint64_t(((get_stream_sampling_rate() * p_rate_scale * playback_speed_scale) / double(target_rate)) * double(FP_LEN));
- int mixed_frames_total = p_frames;
+ int mixed_frames_total = -1;
- for (int i = 0; i < p_frames; i++) {
+ int i;
+ for (i = 0; i < p_frames; i++) {
uint32_t idx = CUBIC_INTERP_HISTORY + uint32_t(mix_offset >> FP_BITS);
//standard cubic interpolation (great quality/performance ratio)
//this used to be moved to a LUT for greater performance, but nowadays CPU speed is generally faster than memory.
@@ -147,7 +148,7 @@ int AudioStreamPlaybackResampled::mix(AudioFrame *p_buffer, float p_rate_scale,
AudioFrame y2 = internal_buffer[idx - 1];
AudioFrame y3 = internal_buffer[idx - 0];
- if (idx <= internal_buffer_end && idx >= internal_buffer_end && mixed_frames_total == p_frames) {
+ if (idx >= internal_buffer_end && mixed_frames_total == -1) {
// The internal buffer ends somewhere in this range, and we haven't yet recorded the number of good frames we have.
mixed_frames_total = i;
}
@@ -167,24 +168,20 @@ int AudioStreamPlaybackResampled::mix(AudioFrame *p_buffer, float p_rate_scale,
internal_buffer[1] = internal_buffer[INTERNAL_BUFFER_LEN + 1];
internal_buffer[2] = internal_buffer[INTERNAL_BUFFER_LEN + 2];
internal_buffer[3] = internal_buffer[INTERNAL_BUFFER_LEN + 3];
- if (is_playing()) {
- int mixed_frames = _mix_internal(internal_buffer + 4, INTERNAL_BUFFER_LEN);
- if (mixed_frames != INTERNAL_BUFFER_LEN) {
- // internal_buffer[mixed_frames] is the first frame of silence.
- internal_buffer_end = mixed_frames;
- } else {
- // The internal buffer does not contain the first frame of silence.
- internal_buffer_end = -1;
- }
+ int mixed_frames = _mix_internal(internal_buffer + 4, INTERNAL_BUFFER_LEN);
+ if (mixed_frames != INTERNAL_BUFFER_LEN) {
+ // internal_buffer[mixed_frames] is the first frame of silence.
+ internal_buffer_end = mixed_frames;
} else {
- //fill with silence, not playing
- for (int j = 0; j < INTERNAL_BUFFER_LEN; ++j) {
- internal_buffer[j + 4] = AudioFrame(0, 0);
- }
+ // The internal buffer does not contain the first frame of silence.
+ internal_buffer_end = -1;
}
mix_offset -= (INTERNAL_BUFFER_LEN << FP_BITS);
}
}
+ if (mixed_frames_total == -1 && i == p_frames) {
+ mixed_frames_total = p_frames;
+ }
return mixed_frames_total;
}
@@ -699,7 +696,7 @@ void AudioStreamRandomizer::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "streams_count", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR), "set_streams_count", "get_streams_count");
ADD_PROPERTY(PropertyInfo(Variant::INT, "playback_mode", PROPERTY_HINT_ENUM, "Random (Avoid Repeats),Random,Sequential"), "set_playback_mode", "get_playback_mode");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "random_pitch", PROPERTY_HINT_RANGE, "1,16,0.01"), "set_random_pitch", "get_random_pitch");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "random_volume_offset_db", PROPERTY_HINT_RANGE, "0,40,0"), "set_random_volume_offset_db", "get_random_volume_offset_db");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "random_volume_offset_db", PROPERTY_HINT_RANGE, "0,40,0,suffix:dB"), "set_random_volume_offset_db", "get_random_volume_offset_db");
BIND_ENUM_CONSTANT(PLAYBACK_RANDOM_NO_REPEATS);
BIND_ENUM_CONSTANT(PLAYBACK_RANDOM);
diff --git a/servers/audio/effects/audio_effect_capture.cpp b/servers/audio/effects/audio_effect_capture.cpp
index f605cfc9d4..1f5f5e259a 100644
--- a/servers/audio/effects/audio_effect_capture.cpp
+++ b/servers/audio/effects/audio_effect_capture.cpp
@@ -70,7 +70,7 @@ void AudioEffectCapture::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_buffer_length_frames"), &AudioEffectCapture::get_buffer_length_frames);
ClassDB::bind_method(D_METHOD("get_pushed_frames"), &AudioEffectCapture::get_pushed_frames);
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "buffer_length", PROPERTY_HINT_RANGE, "0.01,10,0.01"), "set_buffer_length", "get_buffer_length");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "buffer_length", PROPERTY_HINT_RANGE, "0.01,10,0.01,suffix:s"), "set_buffer_length", "get_buffer_length");
}
Ref<AudioEffectInstance> AudioEffectCapture::instantiate() {
diff --git a/servers/audio/effects/audio_effect_chorus.cpp b/servers/audio/effects/audio_effect_chorus.cpp
index 8b1fe9cfd2..e5434eac02 100644
--- a/servers/audio/effects/audio_effect_chorus.cpp
+++ b/servers/audio/effects/audio_effect_chorus.cpp
@@ -313,32 +313,32 @@ void AudioEffectChorus::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "dry", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_dry", "get_dry");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "wet", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_wet", "get_wet");
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/1/delay_ms", PROPERTY_HINT_RANGE, "0,50,0.01"), "set_voice_delay_ms", "get_voice_delay_ms", 0);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/1/rate_hz", PROPERTY_HINT_RANGE, "0.1,20,0.1"), "set_voice_rate_hz", "get_voice_rate_hz", 0);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/1/depth_ms", PROPERTY_HINT_RANGE, "0,20,0.01"), "set_voice_depth_ms", "get_voice_depth_ms", 0);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/1/level_db", PROPERTY_HINT_RANGE, "-60,24,0.1"), "set_voice_level_db", "get_voice_level_db", 0);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/1/cutoff_hz", PROPERTY_HINT_RANGE, "1,20500,1"), "set_voice_cutoff_hz", "get_voice_cutoff_hz", 0);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/1/delay_ms", PROPERTY_HINT_RANGE, "0,50,0.01,suffix:ms"), "set_voice_delay_ms", "get_voice_delay_ms", 0);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/1/rate_hz", PROPERTY_HINT_RANGE, "0.1,20,0.1,suffix:Hz"), "set_voice_rate_hz", "get_voice_rate_hz", 0);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/1/depth_ms", PROPERTY_HINT_RANGE, "0,20,0.01,suffix:ms"), "set_voice_depth_ms", "get_voice_depth_ms", 0);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/1/level_db", PROPERTY_HINT_RANGE, "-60,24,0.1,suffix:dB"), "set_voice_level_db", "get_voice_level_db", 0);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/1/cutoff_hz", PROPERTY_HINT_RANGE, "1,20500,1,suffix:Hz"), "set_voice_cutoff_hz", "get_voice_cutoff_hz", 0);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/1/pan", PROPERTY_HINT_RANGE, "-1,1,0.01"), "set_voice_pan", "get_voice_pan", 0);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/2/delay_ms", PROPERTY_HINT_RANGE, "0,50,0.01"), "set_voice_delay_ms", "get_voice_delay_ms", 1);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/2/rate_hz", PROPERTY_HINT_RANGE, "0.1,20,0.1"), "set_voice_rate_hz", "get_voice_rate_hz", 1);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/2/depth_ms", PROPERTY_HINT_RANGE, "0,20,0.01"), "set_voice_depth_ms", "get_voice_depth_ms", 1);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/2/level_db", PROPERTY_HINT_RANGE, "-60,24,0.1"), "set_voice_level_db", "get_voice_level_db", 1);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/2/cutoff_hz", PROPERTY_HINT_RANGE, "1,20500,1"), "set_voice_cutoff_hz", "get_voice_cutoff_hz", 1);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/2/delay_ms", PROPERTY_HINT_RANGE, "0,50,0.01,suffix:ms"), "set_voice_delay_ms", "get_voice_delay_ms", 1);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/2/rate_hz", PROPERTY_HINT_RANGE, "0.1,20,0.1,suffix:Hz"), "set_voice_rate_hz", "get_voice_rate_hz", 1);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/2/depth_ms", PROPERTY_HINT_RANGE, "0,20,0.01,suffix:ms"), "set_voice_depth_ms", "get_voice_depth_ms", 1);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/2/level_db", PROPERTY_HINT_RANGE, "-60,24,0.1,suffix:dB"), "set_voice_level_db", "get_voice_level_db", 1);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/2/cutoff_hz", PROPERTY_HINT_RANGE, "1,20500,1,suffix:Hz"), "set_voice_cutoff_hz", "get_voice_cutoff_hz", 1);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/2/pan", PROPERTY_HINT_RANGE, "-1,1,0.01"), "set_voice_pan", "get_voice_pan", 1);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/3/delay_ms", PROPERTY_HINT_RANGE, "0,50,0.01"), "set_voice_delay_ms", "get_voice_delay_ms", 2);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/3/rate_hz", PROPERTY_HINT_RANGE, "0.1,20,0.1"), "set_voice_rate_hz", "get_voice_rate_hz", 2);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/3/depth_ms", PROPERTY_HINT_RANGE, "0,20,0.01"), "set_voice_depth_ms", "get_voice_depth_ms", 2);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/3/level_db", PROPERTY_HINT_RANGE, "-60,24,0.1"), "set_voice_level_db", "get_voice_level_db", 2);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/3/cutoff_hz", PROPERTY_HINT_RANGE, "1,20500,1"), "set_voice_cutoff_hz", "get_voice_cutoff_hz", 2);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/3/delay_ms", PROPERTY_HINT_RANGE, "0,50,0.01,suffix:ms"), "set_voice_delay_ms", "get_voice_delay_ms", 2);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/3/rate_hz", PROPERTY_HINT_RANGE, "0.1,20,0.1,suffix:Hz"), "set_voice_rate_hz", "get_voice_rate_hz", 2);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/3/depth_ms", PROPERTY_HINT_RANGE, "0,20,0.01,suffix:ms"), "set_voice_depth_ms", "get_voice_depth_ms", 2);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/3/level_db", PROPERTY_HINT_RANGE, "-60,24,0.1,suffix:dB"), "set_voice_level_db", "get_voice_level_db", 2);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/3/cutoff_hz", PROPERTY_HINT_RANGE, "1,20500,1,suffix:Hz"), "set_voice_cutoff_hz", "get_voice_cutoff_hz", 2);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/3/pan", PROPERTY_HINT_RANGE, "-1,1,0.01"), "set_voice_pan", "get_voice_pan", 2);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/4/delay_ms", PROPERTY_HINT_RANGE, "0,50,0.01"), "set_voice_delay_ms", "get_voice_delay_ms", 3);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/4/rate_hz", PROPERTY_HINT_RANGE, "0.1,20,0.1"), "set_voice_rate_hz", "get_voice_rate_hz", 3);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/4/depth_ms", PROPERTY_HINT_RANGE, "0,20,0.01"), "set_voice_depth_ms", "get_voice_depth_ms", 3);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/4/level_db", PROPERTY_HINT_RANGE, "-60,24,0.1"), "set_voice_level_db", "get_voice_level_db", 3);
- ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/4/cutoff_hz", PROPERTY_HINT_RANGE, "1,20500,1"), "set_voice_cutoff_hz", "get_voice_cutoff_hz", 3);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/4/delay_ms", PROPERTY_HINT_RANGE, "0,50,0.01,suffix:ms"), "set_voice_delay_ms", "get_voice_delay_ms", 3);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/4/rate_hz", PROPERTY_HINT_RANGE, "0.1,20,0.1,suffix:Hz"), "set_voice_rate_hz", "get_voice_rate_hz", 3);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/4/depth_ms", PROPERTY_HINT_RANGE, "0,20,0.01,suffix:ms"), "set_voice_depth_ms", "get_voice_depth_ms", 3);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/4/level_db", PROPERTY_HINT_RANGE, "-60,24,0.1,suffix:dB"), "set_voice_level_db", "get_voice_level_db", 3);
+ ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/4/cutoff_hz", PROPERTY_HINT_RANGE, "1,20500,1,suffix:Hz"), "set_voice_cutoff_hz", "get_voice_cutoff_hz", 3);
ADD_PROPERTYI(PropertyInfo(Variant::FLOAT, "voice/4/pan", PROPERTY_HINT_RANGE, "-1,1,0.01"), "set_voice_pan", "get_voice_pan", 3);
}
diff --git a/servers/audio/effects/audio_effect_compressor.cpp b/servers/audio/effects/audio_effect_compressor.cpp
index f75d092dd3..ee71a6dba7 100644
--- a/servers/audio/effects/audio_effect_compressor.cpp
+++ b/servers/audio/effects/audio_effect_compressor.cpp
@@ -221,8 +221,8 @@ void AudioEffectCompressor::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "threshold", PROPERTY_HINT_RANGE, "-60,0,0.1"), "set_threshold", "get_threshold");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ratio", PROPERTY_HINT_RANGE, "1,48,0.1"), "set_ratio", "get_ratio");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "gain", PROPERTY_HINT_RANGE, "-20,20,0.1"), "set_gain", "get_gain");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "attack_us", PROPERTY_HINT_RANGE, "20,2000,1"), "set_attack_us", "get_attack_us");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "release_ms", PROPERTY_HINT_RANGE, "20,2000,1"), "set_release_ms", "get_release_ms");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "attack_us", PROPERTY_HINT_RANGE, U"20,2000,1,suffix:\u00B5s"), "set_attack_us", "get_attack_us");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "release_ms", PROPERTY_HINT_RANGE, "20,2000,1,suffix:ms"), "set_release_ms", "get_release_ms");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "mix", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_mix", "get_mix");
ADD_PROPERTY(PropertyInfo(Variant::STRING_NAME, "sidechain", PROPERTY_HINT_ENUM), "set_sidechain", "get_sidechain");
}
diff --git a/servers/audio/effects/audio_effect_delay.cpp b/servers/audio/effects/audio_effect_delay.cpp
index 1909ab6eae..80e7a8223c 100644
--- a/servers/audio/effects/audio_effect_delay.cpp
+++ b/servers/audio/effects/audio_effect_delay.cpp
@@ -287,18 +287,18 @@ void AudioEffectDelay::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "dry", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_dry", "get_dry");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "tap1/active"), "set_tap1_active", "is_tap1_active");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "tap1/delay_ms", PROPERTY_HINT_RANGE, "0,1500,1"), "set_tap1_delay_ms", "get_tap1_delay_ms");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "tap1/level_db", PROPERTY_HINT_RANGE, "-60,0,0.01"), "set_tap1_level_db", "get_tap1_level_db");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "tap1/delay_ms", PROPERTY_HINT_RANGE, "0,1500,1,suffix:ms"), "set_tap1_delay_ms", "get_tap1_delay_ms");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "tap1/level_db", PROPERTY_HINT_RANGE, "-60,0,0.01,suffix:dB"), "set_tap1_level_db", "get_tap1_level_db");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "tap1/pan", PROPERTY_HINT_RANGE, "-1,1,0.01"), "set_tap1_pan", "get_tap1_pan");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "tap2/active"), "set_tap2_active", "is_tap2_active");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "tap2/delay_ms", PROPERTY_HINT_RANGE, "0,1500,1"), "set_tap2_delay_ms", "get_tap2_delay_ms");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "tap2/level_db", PROPERTY_HINT_RANGE, "-60,0,0.01"), "set_tap2_level_db", "get_tap2_level_db");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "tap2/delay_ms", PROPERTY_HINT_RANGE, "0,1500,1,suffix:ms"), "set_tap2_delay_ms", "get_tap2_delay_ms");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "tap2/level_db", PROPERTY_HINT_RANGE, "-60,0,0.01,suffix:dB"), "set_tap2_level_db", "get_tap2_level_db");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "tap2/pan", PROPERTY_HINT_RANGE, "-1,1,0.01"), "set_tap2_pan", "get_tap2_pan");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "feedback/active"), "set_feedback_active", "is_feedback_active");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "feedback/delay_ms", PROPERTY_HINT_RANGE, "0,1500,1"), "set_feedback_delay_ms", "get_feedback_delay_ms");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "feedback/level_db", PROPERTY_HINT_RANGE, "-60,0,0.01"), "set_feedback_level_db", "get_feedback_level_db");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "feedback/delay_ms", PROPERTY_HINT_RANGE, "0,1500,1,suffix:ms"), "set_feedback_delay_ms", "get_feedback_delay_ms");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "feedback/level_db", PROPERTY_HINT_RANGE, "-60,0,0.01,suffix:dB"), "set_feedback_level_db", "get_feedback_level_db");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "feedback/lowpass", PROPERTY_HINT_RANGE, "1,16000,1"), "set_feedback_lowpass", "get_feedback_lowpass");
}
diff --git a/servers/audio/effects/audio_effect_distortion.cpp b/servers/audio/effects/audio_effect_distortion.cpp
index afc4353bd7..6820d796a4 100644
--- a/servers/audio/effects/audio_effect_distortion.cpp
+++ b/servers/audio/effects/audio_effect_distortion.cpp
@@ -161,7 +161,7 @@ void AudioEffectDistortion::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "mode", PROPERTY_HINT_ENUM, "Clip,ATan,LoFi,Overdrive,Wave Shape"), "set_mode", "get_mode");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "pre_gain", PROPERTY_HINT_RANGE, "-60,60,0.01"), "set_pre_gain", "get_pre_gain");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "keep_hf_hz", PROPERTY_HINT_RANGE, "1,20500,1"), "set_keep_hf_hz", "get_keep_hf_hz");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "keep_hf_hz", PROPERTY_HINT_RANGE, "1,20500,1,suffix:Hz"), "set_keep_hf_hz", "get_keep_hf_hz");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "drive", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_drive", "get_drive");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "post_gain", PROPERTY_HINT_RANGE, "-80,24,0.01"), "set_post_gain", "get_post_gain");
diff --git a/servers/audio/effects/audio_effect_filter.cpp b/servers/audio/effects/audio_effect_filter.cpp
index 06e66f22b1..a9409076cd 100644
--- a/servers/audio/effects/audio_effect_filter.cpp
+++ b/servers/audio/effects/audio_effect_filter.cpp
@@ -153,7 +153,7 @@ void AudioEffectFilter::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_db", "amount"), &AudioEffectFilter::set_db);
ClassDB::bind_method(D_METHOD("get_db"), &AudioEffectFilter::get_db);
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "cutoff_hz", PROPERTY_HINT_RANGE, "1,20500,1"), "set_cutoff", "get_cutoff");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "cutoff_hz", PROPERTY_HINT_RANGE, "1,20500,1,suffix:Hz"), "set_cutoff", "get_cutoff");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "resonance", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_resonance", "get_resonance");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "gain", PROPERTY_HINT_RANGE, "0,4,0.01"), "set_gain", "get_gain");
ADD_PROPERTY(PropertyInfo(Variant::INT, "db", PROPERTY_HINT_ENUM, "6 dB,12 dB,18 dB,24 dB"), "set_db", "get_db");
diff --git a/servers/audio/effects/audio_effect_limiter.cpp b/servers/audio/effects/audio_effect_limiter.cpp
index 5923cf8cf5..7bcd68d48b 100644
--- a/servers/audio/effects/audio_effect_limiter.cpp
+++ b/servers/audio/effects/audio_effect_limiter.cpp
@@ -120,9 +120,9 @@ void AudioEffectLimiter::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_soft_clip_ratio", "soft_clip"), &AudioEffectLimiter::set_soft_clip_ratio);
ClassDB::bind_method(D_METHOD("get_soft_clip_ratio"), &AudioEffectLimiter::get_soft_clip_ratio);
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ceiling_db", PROPERTY_HINT_RANGE, "-20,-0.1,0.1"), "set_ceiling_db", "get_ceiling_db");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "threshold_db", PROPERTY_HINT_RANGE, "-30,0,0.1"), "set_threshold_db", "get_threshold_db");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "soft_clip_db", PROPERTY_HINT_RANGE, "0,6,0.1"), "set_soft_clip_db", "get_soft_clip_db");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ceiling_db", PROPERTY_HINT_RANGE, "-20,-0.1,0.1,suffix:dB"), "set_ceiling_db", "get_ceiling_db");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "threshold_db", PROPERTY_HINT_RANGE, "-30,0,0.1,suffix:dB"), "set_threshold_db", "get_threshold_db");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "soft_clip_db", PROPERTY_HINT_RANGE, "0,6,0.1,suffix:dB"), "set_soft_clip_db", "get_soft_clip_db");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "soft_clip_ratio", PROPERTY_HINT_RANGE, "3,20,0.1"), "set_soft_clip_ratio", "get_soft_clip_ratio");
}
diff --git a/servers/audio/effects/audio_effect_phaser.cpp b/servers/audio/effects/audio_effect_phaser.cpp
index af5dce707e..2f86630ce9 100644
--- a/servers/audio/effects/audio_effect_phaser.cpp
+++ b/servers/audio/effects/audio_effect_phaser.cpp
@@ -144,9 +144,9 @@ void AudioEffectPhaser::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_depth", "depth"), &AudioEffectPhaser::set_depth);
ClassDB::bind_method(D_METHOD("get_depth"), &AudioEffectPhaser::get_depth);
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "range_min_hz", PROPERTY_HINT_RANGE, "10,10000"), "set_range_min_hz", "get_range_min_hz");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "range_max_hz", PROPERTY_HINT_RANGE, "10,10000"), "set_range_max_hz", "get_range_max_hz");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "rate_hz", PROPERTY_HINT_RANGE, "0.01,20"), "set_rate_hz", "get_rate_hz");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "range_min_hz", PROPERTY_HINT_RANGE, "10,10000,suffix:Hz"), "set_range_min_hz", "get_range_min_hz");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "range_max_hz", PROPERTY_HINT_RANGE, "10,10000,suffix:Hz"), "set_range_max_hz", "get_range_max_hz");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "rate_hz", PROPERTY_HINT_RANGE, "0.01,20,suffix:Hz"), "set_rate_hz", "get_rate_hz");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "feedback", PROPERTY_HINT_RANGE, "0.1,0.9,0.1"), "set_feedback", "get_feedback");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "depth", PROPERTY_HINT_RANGE, "0.1,4,0.1"), "set_depth", "get_depth");
}
diff --git a/servers/audio/effects/audio_effect_record.cpp b/servers/audio/effects/audio_effect_record.cpp
index d68522e5b9..a6553e1431 100644
--- a/servers/audio/effects/audio_effect_record.cpp
+++ b/servers/audio/effects/audio_effect_record.cpp
@@ -71,8 +71,6 @@ bool AudioEffectRecordInstance::process_silence() const {
}
void AudioEffectRecordInstance::_io_thread_process() {
- thread_active = true;
-
while (is_recording) {
//Check: The current recording has been requested to stop
if (!base->recording_active) {
@@ -86,8 +84,6 @@ void AudioEffectRecordInstance::_io_thread_process() {
OS::get_singleton()->delay_usec(500);
}
}
-
- thread_active = false;
}
void AudioEffectRecordInstance::_io_store_buffer() {
diff --git a/servers/audio/effects/audio_effect_record.h b/servers/audio/effects/audio_effect_record.h
index 305484d1cb..8a6247e27a 100644
--- a/servers/audio/effects/audio_effect_record.h
+++ b/servers/audio/effects/audio_effect_record.h
@@ -48,7 +48,6 @@ class AudioEffectRecordInstance : public AudioEffectInstance {
bool is_recording;
Thread io_thread;
- bool thread_active = false;
Vector<AudioFrame> ring_buffer;
Vector<float> recording_data;
diff --git a/servers/audio/effects/audio_effect_reverb.cpp b/servers/audio/effects/audio_effect_reverb.cpp
index 0d4eb14e6a..bfc68152a4 100644
--- a/servers/audio/effects/audio_effect_reverb.cpp
+++ b/servers/audio/effects/audio_effect_reverb.cpp
@@ -176,7 +176,7 @@ void AudioEffectReverb::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_hpf"), &AudioEffectReverb::get_hpf);
ADD_GROUP("Predelay", "predelay_");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "predelay_msec", PROPERTY_HINT_RANGE, "20,500,1"), "set_predelay_msec", "get_predelay_msec");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "predelay_msec", PROPERTY_HINT_RANGE, "20,500,1,suffix:ms"), "set_predelay_msec", "get_predelay_msec");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "predelay_feedback", PROPERTY_HINT_RANGE, "0,0.98,0.01"), "set_predelay_feedback", "get_predelay_feedback");
ADD_GROUP("", "");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "room_size", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_room_size", "get_room_size");
diff --git a/servers/audio/effects/audio_effect_spectrum_analyzer.cpp b/servers/audio/effects/audio_effect_spectrum_analyzer.cpp
index 10627be74c..30ebf626ae 100644
--- a/servers/audio/effects/audio_effect_spectrum_analyzer.cpp
+++ b/servers/audio/effects/audio_effect_spectrum_analyzer.cpp
@@ -264,7 +264,7 @@ void AudioEffectSpectrumAnalyzer::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_fft_size", "size"), &AudioEffectSpectrumAnalyzer::set_fft_size);
ClassDB::bind_method(D_METHOD("get_fft_size"), &AudioEffectSpectrumAnalyzer::get_fft_size);
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "buffer_length", PROPERTY_HINT_RANGE, "0.1,4,0.1"), "set_buffer_length", "get_buffer_length");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "buffer_length", PROPERTY_HINT_RANGE, "0.1,4,0.1,suffix:s"), "set_buffer_length", "get_buffer_length");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "tap_back_pos", PROPERTY_HINT_RANGE, "0.1,4,0.1"), "set_tap_back_pos", "get_tap_back_pos");
ADD_PROPERTY(PropertyInfo(Variant::INT, "fft_size", PROPERTY_HINT_ENUM, "256,512,1024,2048,4096"), "set_fft_size", "get_fft_size");
diff --git a/servers/audio/effects/audio_effect_stereo_enhance.cpp b/servers/audio/effects/audio_effect_stereo_enhance.cpp
index 7bb62bcbed..e567add3e7 100644
--- a/servers/audio/effects/audio_effect_stereo_enhance.cpp
+++ b/servers/audio/effects/audio_effect_stereo_enhance.cpp
@@ -138,7 +138,7 @@ void AudioEffectStereoEnhance::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_surround"), &AudioEffectStereoEnhance::get_surround);
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "pan_pullout", PROPERTY_HINT_RANGE, "0,4,0.01"), "set_pan_pullout", "get_pan_pullout");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "time_pullout_ms", PROPERTY_HINT_RANGE, "0,50,0.01"), "set_time_pullout", "get_time_pullout");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "time_pullout_ms", PROPERTY_HINT_RANGE, "0,50,0.01,suffix:ms"), "set_time_pullout", "get_time_pullout");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "surround", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_surround", "get_surround");
}
diff --git a/servers/audio/effects/audio_stream_generator.cpp b/servers/audio/effects/audio_stream_generator.cpp
index a3d615b925..46de1692e4 100644
--- a/servers/audio/effects/audio_stream_generator.cpp
+++ b/servers/audio/effects/audio_stream_generator.cpp
@@ -75,8 +75,8 @@ void AudioStreamGenerator::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_buffer_length", "seconds"), &AudioStreamGenerator::set_buffer_length);
ClassDB::bind_method(D_METHOD("get_buffer_length"), &AudioStreamGenerator::get_buffer_length);
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "mix_rate", PROPERTY_HINT_RANGE, "20,192000,1"), "set_mix_rate", "get_mix_rate");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "buffer_length", PROPERTY_HINT_RANGE, "0.01,10,0.01"), "set_buffer_length", "get_buffer_length");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "mix_rate", PROPERTY_HINT_RANGE, "20,192000,1,suffix:Hz"), "set_mix_rate", "get_mix_rate");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "buffer_length", PROPERTY_HINT_RANGE, "0.01,10,0.01,suffix:s"), "set_buffer_length", "get_buffer_length");
}
AudioStreamGenerator::AudioStreamGenerator() {
diff --git a/servers/movie_writer/SCsub b/servers/movie_writer/SCsub
new file mode 100644
index 0000000000..86681f9c74
--- /dev/null
+++ b/servers/movie_writer/SCsub
@@ -0,0 +1,5 @@
+#!/usr/bin/env python
+
+Import("env")
+
+env.add_source_files(env.servers_sources, "*.cpp")
diff --git a/servers/movie_writer/movie_writer.cpp b/servers/movie_writer/movie_writer.cpp
new file mode 100644
index 0000000000..ac60dc3b9a
--- /dev/null
+++ b/servers/movie_writer/movie_writer.cpp
@@ -0,0 +1,306 @@
+/*************************************************************************/
+/* movie_writer.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#include "movie_writer.h"
+#include "core/config/project_settings.h"
+#include "core/io/dir_access.h"
+
+MovieWriter *MovieWriter::writers[MovieWriter::MAX_WRITERS];
+uint32_t MovieWriter::writer_count = 0;
+
+void MovieWriter::add_writer(MovieWriter *p_writer) {
+ ERR_FAIL_COND(writer_count == MAX_WRITERS);
+ writers[writer_count++] = p_writer;
+}
+
+MovieWriter *MovieWriter::find_writer_for_file(const String &p_file) {
+ for (int32_t i = writer_count - 1; i >= 0; i--) { // More recent last, to have override ability.
+ if (writers[i]->handles_file(p_file)) {
+ return writers[i];
+ }
+ }
+ return nullptr;
+}
+
+uint32_t MovieWriter::get_audio_mix_rate() const {
+ uint32_t ret = 0;
+ if (GDVIRTUAL_REQUIRED_CALL(_get_audio_mix_rate, ret)) {
+ return ret;
+ }
+ return 48000;
+}
+AudioServer::SpeakerMode MovieWriter::get_audio_speaker_mode() const {
+ AudioServer::SpeakerMode ret = AudioServer::SPEAKER_MODE_STEREO;
+ if (GDVIRTUAL_REQUIRED_CALL(_get_audio_speaker_mode, ret)) {
+ return ret;
+ }
+ return AudioServer::SPEAKER_MODE_STEREO;
+}
+
+Error MovieWriter::write_begin(const Size2i &p_movie_size, uint32_t p_fps, const String &p_base_path) {
+ Error ret = OK;
+ if (GDVIRTUAL_REQUIRED_CALL(_write_begin, p_movie_size, p_fps, p_base_path, ret)) {
+ return ret;
+ }
+ return ERR_UNCONFIGURED;
+}
+
+Error MovieWriter::write_frame(const Ref<Image> &p_image, const int32_t *p_audio_data) {
+ Error ret = OK;
+ if (GDVIRTUAL_REQUIRED_CALL(_write_frame, p_image, p_audio_data, ret)) {
+ return ret;
+ }
+ return ERR_UNCONFIGURED;
+}
+
+void MovieWriter::write_end() {
+ GDVIRTUAL_REQUIRED_CALL(_write_end);
+}
+
+bool MovieWriter::handles_file(const String &p_path) const {
+ bool ret = false;
+ if (GDVIRTUAL_REQUIRED_CALL(_handles_file, p_path, ret)) {
+ return ret;
+ }
+ return false;
+}
+
+void MovieWriter::get_supported_extensions(List<String> *r_extensions) const {
+ Vector<String> exts;
+ if (GDVIRTUAL_REQUIRED_CALL(_get_supported_extensions, exts)) {
+ for (int i = 0; i < exts.size(); i++) {
+ r_extensions->push_back(exts[i]);
+ }
+ }
+}
+
+void MovieWriter::begin(const Size2i &p_movie_size, uint32_t p_fps, const String &p_base_path) {
+ mix_rate = get_audio_mix_rate();
+ AudioDriverDummy::get_dummy_singleton()->set_mix_rate(mix_rate);
+ AudioDriverDummy::get_dummy_singleton()->set_speaker_mode(AudioDriver::SpeakerMode(get_audio_speaker_mode()));
+ fps = p_fps;
+ if ((mix_rate % fps) != 0) {
+ WARN_PRINT("Audio mix rate (" + itos(mix_rate) + ") can not be divided by fps (" + itos(fps) + "). Audio may go out of sync over time.");
+ }
+
+ audio_channels = AudioDriverDummy::get_dummy_singleton()->get_channels();
+ audio_mix_buffer.resize(mix_rate * audio_channels / fps);
+
+ write_begin(p_movie_size, p_fps, p_base_path);
+}
+
+void MovieWriter::_bind_methods() {
+ ClassDB::bind_static_method("MovieWriter", D_METHOD("add_writer", "writer"), &MovieWriter::add_writer);
+
+ GDVIRTUAL_BIND(_get_audio_mix_rate)
+ GDVIRTUAL_BIND(_get_audio_speaker_mode)
+
+ GDVIRTUAL_BIND(_handles_file, "path")
+
+ GDVIRTUAL_BIND(_write_begin, "movie_size", "fps", "base_path")
+ GDVIRTUAL_BIND(_write_frame, "frame_image", "audio_frame_block")
+ GDVIRTUAL_BIND(_write_end)
+
+ GLOBAL_DEF("editor/movie_writer/mix_rate_hz", 48000);
+ GLOBAL_DEF("editor/movie_writer/speaker_mode", 0);
+ ProjectSettings::get_singleton()->set_custom_property_info("editor/movie_writer/speaker_mode", PropertyInfo(Variant::INT, "editor/movie_writer/speaker_mode", PROPERTY_HINT_ENUM, "Stereo,3.1,5.1,7.1"));
+ GLOBAL_DEF("editor/movie_writer/mjpeg_quality", 0.75);
+ // used by the editor
+ GLOBAL_DEF_BASIC("editor/movie_writer/movie_file", "");
+ GLOBAL_DEF_BASIC("editor/movie_writer/disable_vsync", false);
+ GLOBAL_DEF_BASIC("editor/movie_writer/fps", 60);
+ ProjectSettings::get_singleton()->set_custom_property_info("editor/movie_writer/fps", PropertyInfo(Variant::INT, "editor/movie_writer/fps", PROPERTY_HINT_RANGE, "1,300,1"));
+}
+
+void MovieWriter::set_extensions_hint() {
+ RBSet<String> found;
+ for (uint32_t i = 0; i < writer_count; i++) {
+ List<String> extensions;
+ writers[i]->get_supported_extensions(&extensions);
+ for (const String &ext : extensions) {
+ found.insert(ext);
+ }
+ }
+
+ String ext_hint;
+
+ for (const String &S : found) {
+ if (ext_hint != "") {
+ ext_hint += ",";
+ }
+ ext_hint += "*." + S;
+ }
+ ProjectSettings::get_singleton()->set_custom_property_info("editor/movie_writer/movie_file", PropertyInfo(Variant::STRING, "editor/movie_writer/movie_file", PROPERTY_HINT_GLOBAL_SAVE_FILE, ext_hint));
+}
+
+void MovieWriter::add_frame(const Ref<Image> &p_image) {
+ AudioDriverDummy::get_dummy_singleton()->mix_audio(mix_rate / fps, audio_mix_buffer.ptr());
+ write_frame(p_image, audio_mix_buffer.ptr());
+}
+
+void MovieWriter::end() {
+ write_end();
+}
+/////////////////////////////////////////
+
+uint32_t MovieWriterPNGWAV::get_audio_mix_rate() const {
+ return mix_rate;
+}
+AudioServer::SpeakerMode MovieWriterPNGWAV::get_audio_speaker_mode() const {
+ return speaker_mode;
+}
+
+void MovieWriterPNGWAV::get_supported_extensions(List<String> *r_extensions) const {
+ r_extensions->push_back("png");
+}
+
+bool MovieWriterPNGWAV::handles_file(const String &p_path) const {
+ return p_path.get_extension().to_lower() == "png";
+}
+
+String MovieWriterPNGWAV::zeros_str(uint32_t p_index) {
+ char zeros[MAX_TRAILING_ZEROS + 1];
+ for (uint32_t i = 0; i < MAX_TRAILING_ZEROS; i++) {
+ uint32_t idx = MAX_TRAILING_ZEROS - i - 1;
+ uint32_t digit = (p_index / uint32_t(Math::pow(double(10), double(idx)))) % 10;
+ zeros[i] = '0' + digit;
+ }
+ zeros[MAX_TRAILING_ZEROS] = 0;
+ return zeros;
+}
+
+Error MovieWriterPNGWAV::write_begin(const Size2i &p_movie_size, uint32_t p_fps, const String &p_base_path) {
+ // Quick & Dirty PNGWAV Code based on - https://docs.microsoft.com/en-us/windows/win32/directshow/avi-riff-file-reference
+
+ base_path = p_base_path.get_basename();
+ if (base_path.is_relative_path()) {
+ base_path = "res://" + base_path;
+ }
+
+ {
+ //Remove existing files before writing anew
+ uint32_t idx = 0;
+ Ref<DirAccess> d = DirAccess::open(base_path.get_base_dir());
+ String file = base_path.get_file();
+ while (true) {
+ String path = file + zeros_str(idx) + ".png";
+ if (d->remove(path) != OK) {
+ break;
+ }
+ }
+ }
+
+ f_wav = FileAccess::open(base_path + ".wav", FileAccess::WRITE_READ);
+ ERR_FAIL_COND_V(f_wav.is_null(), ERR_CANT_OPEN);
+
+ fps = p_fps;
+
+ f_wav->store_buffer((const uint8_t *)"RIFF", 4);
+ int total_size = 4 /* WAVE */ + 8 /* fmt+size */ + 16 /* format */ + 8 /* data+size */;
+ f_wav->store_32(total_size); //will store final later
+ f_wav->store_buffer((const uint8_t *)"WAVE", 4);
+
+ /* FORMAT CHUNK */
+
+ f_wav->store_buffer((const uint8_t *)"fmt ", 4);
+
+ uint32_t channels = 2;
+ switch (speaker_mode) {
+ case AudioServer::SPEAKER_MODE_STEREO:
+ channels = 2;
+ break;
+ case AudioServer::SPEAKER_SURROUND_31:
+ channels = 4;
+ break;
+ case AudioServer::SPEAKER_SURROUND_51:
+ channels = 6;
+ break;
+ case AudioServer::SPEAKER_SURROUND_71:
+ channels = 8;
+ break;
+ }
+
+ f_wav->store_32(16); //standard format, no extra fields
+ f_wav->store_16(1); // compression code, standard PCM
+ f_wav->store_16(channels); //CHANNELS: 2
+
+ f_wav->store_32(mix_rate);
+
+ /* useless stuff the format asks for */
+
+ int bits_per_sample = 32;
+ int blockalign = bits_per_sample / 8 * channels;
+ int bytes_per_sec = mix_rate * blockalign;
+
+ audio_block_size = (mix_rate / fps) * blockalign;
+
+ f_wav->store_32(bytes_per_sec);
+ f_wav->store_16(blockalign); // block align (unused)
+ f_wav->store_16(bits_per_sample);
+
+ /* DATA CHUNK */
+
+ f_wav->store_buffer((const uint8_t *)"data", 4);
+
+ f_wav->store_32(0); //data size... wooh
+ wav_data_size_pos = f_wav->get_position();
+
+ return OK;
+}
+
+Error MovieWriterPNGWAV::write_frame(const Ref<Image> &p_image, const int32_t *p_audio_data) {
+ ERR_FAIL_COND_V(!f_wav.is_valid(), ERR_UNCONFIGURED);
+
+ Vector<uint8_t> png_buffer = p_image->save_png_to_buffer();
+
+ Ref<FileAccess> fi = FileAccess::open(base_path + zeros_str(frame_count) + ".png", FileAccess::WRITE);
+ fi->store_buffer(png_buffer.ptr(), png_buffer.size());
+ f_wav->store_buffer((const uint8_t *)p_audio_data, audio_block_size);
+
+ frame_count++;
+
+ return OK;
+}
+
+void MovieWriterPNGWAV::write_end() {
+ if (f_wav.is_valid()) {
+ uint32_t total_size = 4 /* WAVE */ + 8 /* fmt+size */ + 16 /* format */ + 8 /* data+size */;
+ uint32_t datasize = f_wav->get_position() - wav_data_size_pos;
+ f_wav->seek(4);
+ f_wav->store_32(total_size + datasize);
+ f_wav->seek(0x28);
+ f_wav->store_32(datasize);
+ }
+}
+
+MovieWriterPNGWAV::MovieWriterPNGWAV() {
+ mix_rate = GLOBAL_GET("editor/movie_writer/mix_rate_hz");
+ speaker_mode = AudioServer::SpeakerMode(int(GLOBAL_GET("editor/movie_writer/speaker_mode")));
+}
diff --git a/servers/movie_writer/movie_writer.h b/servers/movie_writer/movie_writer.h
new file mode 100644
index 0000000000..11e739df39
--- /dev/null
+++ b/servers/movie_writer/movie_writer.h
@@ -0,0 +1,123 @@
+/*************************************************************************/
+/* movie_writer.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifndef MOVIE_WRITER_H
+#define MOVIE_WRITER_H
+
+#include "core/templates/local_vector.h"
+#include "servers/audio/audio_driver_dummy.h"
+#include "servers/audio_server.h"
+
+class MovieWriter : public Object {
+ GDCLASS(MovieWriter, Object);
+
+ uint64_t fps = 0;
+ uint64_t mix_rate = 0;
+ uint32_t audio_channels = 0;
+
+ LocalVector<int32_t> audio_mix_buffer;
+
+ enum {
+ MAX_WRITERS = 8
+ };
+ static MovieWriter *writers[];
+ static uint32_t writer_count;
+
+protected:
+ virtual uint32_t get_audio_mix_rate() const;
+ virtual AudioServer::SpeakerMode get_audio_speaker_mode() const;
+
+ virtual Error write_begin(const Size2i &p_movie_size, uint32_t p_fps, const String &p_base_path);
+ virtual Error write_frame(const Ref<Image> &p_image, const int32_t *p_audio_data);
+ virtual void write_end();
+
+ GDVIRTUAL0RC(uint32_t, _get_audio_mix_rate)
+ GDVIRTUAL0RC(AudioServer::SpeakerMode, _get_audio_speaker_mode)
+
+ GDVIRTUAL1RC(bool, _handles_file, const String &)
+ GDVIRTUAL0RC(Vector<String>, _get_supported_extensions)
+
+ GDVIRTUAL3R(Error, _write_begin, const Size2i &, uint32_t, const String &)
+ GDVIRTUAL2R(Error, _write_frame, const Ref<Image> &, GDNativeConstPtr<int32_t>)
+ GDVIRTUAL0(_write_end)
+
+ static void _bind_methods();
+
+public:
+ virtual bool handles_file(const String &p_path) const;
+ virtual void get_supported_extensions(List<String> *r_extensions) const;
+
+ static void add_writer(MovieWriter *p_writer);
+ static MovieWriter *find_writer_for_file(const String &p_file);
+
+ void begin(const Size2i &p_movie_size, uint32_t p_fps, const String &p_base_path);
+ void add_frame(const Ref<Image> &p_image);
+
+ static void set_extensions_hint();
+
+ void end();
+};
+
+class MovieWriterPNGWAV : public MovieWriter {
+ GDCLASS(MovieWriterPNGWAV, MovieWriter)
+
+ enum {
+ MAX_TRAILING_ZEROS = 8 // more than 10 days at 60fps, no hard drive can put up with this anyway :)
+ };
+
+ uint32_t mix_rate = 48000;
+ AudioServer::SpeakerMode speaker_mode = AudioServer::SPEAKER_MODE_STEREO;
+ String base_path;
+ uint32_t frame_count = 0;
+ uint32_t fps = 0;
+
+ uint32_t audio_block_size = 0;
+
+ Ref<FileAccess> f_wav;
+ uint32_t wav_data_size_pos = 0;
+
+ String zeros_str(uint32_t p_index);
+
+protected:
+ virtual uint32_t get_audio_mix_rate() const override;
+ virtual AudioServer::SpeakerMode get_audio_speaker_mode() const override;
+ virtual void get_supported_extensions(List<String> *r_extensions) const override;
+
+ virtual Error write_begin(const Size2i &p_movie_size, uint32_t p_fps, const String &p_base_path) override;
+ virtual Error write_frame(const Ref<Image> &p_image, const int32_t *p_audio_data) override;
+ virtual void write_end() override;
+
+ virtual bool handles_file(const String &p_path) const override;
+
+public:
+ MovieWriterPNGWAV();
+};
+
+#endif // VIDEO_WRITER_H
diff --git a/servers/movie_writer/movie_writer_mjpeg.cpp b/servers/movie_writer/movie_writer_mjpeg.cpp
new file mode 100644
index 0000000000..b0c65e768d
--- /dev/null
+++ b/servers/movie_writer/movie_writer_mjpeg.cpp
@@ -0,0 +1,263 @@
+/*************************************************************************/
+/* movie_writer_mjpeg.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#include "movie_writer_mjpeg.h"
+#include "core/config/project_settings.h"
+
+uint32_t MovieWriterMJPEG::get_audio_mix_rate() const {
+ return mix_rate;
+}
+AudioServer::SpeakerMode MovieWriterMJPEG::get_audio_speaker_mode() const {
+ return speaker_mode;
+}
+
+bool MovieWriterMJPEG::handles_file(const String &p_path) const {
+ return p_path.get_extension().to_lower() == "avi";
+}
+
+void MovieWriterMJPEG::get_supported_extensions(List<String> *r_extensions) const {
+ r_extensions->push_back("avi");
+}
+
+Error MovieWriterMJPEG::write_begin(const Size2i &p_movie_size, uint32_t p_fps, const String &p_base_path) {
+ // Quick & Dirty MJPEG Code based on - https://docs.microsoft.com/en-us/windows/win32/directshow/avi-riff-file-reference
+
+ base_path = p_base_path.get_basename();
+ if (base_path.is_relative_path()) {
+ base_path = "res://" + base_path;
+ }
+
+ base_path += ".avi";
+
+ f = FileAccess::open(base_path, FileAccess::WRITE_READ);
+
+ fps = p_fps;
+
+ ERR_FAIL_COND_V(f.is_null(), ERR_CANT_OPEN);
+
+ f->store_buffer((const uint8_t *)"RIFF", 4);
+ f->store_32(0); // Total length (update later)
+ f->store_buffer((const uint8_t *)"AVI ", 4);
+ f->store_buffer((const uint8_t *)"LIST", 4);
+ f->store_32(300); // 4 + 4 + 4 + 56 + 4 + 4 + 132 + 4 + 4 + 84
+ f->store_buffer((const uint8_t *)"hdrl", 4);
+ f->store_buffer((const uint8_t *)"avih", 4);
+ f->store_32(56);
+
+ f->store_32(1000000 / p_fps); // Microsecs per frame.
+ f->store_32(7000); // Max bytes per second
+ f->store_32(0); // Padding Granularity
+ f->store_32(16);
+ total_frames_ofs = f->get_position();
+ f->store_32(0); // Total frames (update later)
+ f->store_32(0); // Initial frames
+ f->store_32(1); // Streams
+ f->store_32(0); // Suggested buffer size
+ f->store_32(p_movie_size.width); // Movie Width
+ f->store_32(p_movie_size.height); // Movie Height
+ for (uint32_t i = 0; i < 4; i++) {
+ f->store_32(0); // Reserved.
+ }
+ f->store_buffer((const uint8_t *)"LIST", 4);
+ f->store_32(132); // 4 + 4 + 4 + 48 + 4 + 4 + 40 + 4 + 4 + 16
+ f->store_buffer((const uint8_t *)"strl", 4);
+ f->store_buffer((const uint8_t *)"strh", 4);
+ f->store_32(48);
+ f->store_buffer((const uint8_t *)"vids", 4);
+ f->store_buffer((const uint8_t *)"MJPG", 4);
+ f->store_32(0); // Flags
+ f->store_16(0); // Priority
+ f->store_16(0); // Language
+ f->store_32(0); // Initial Frames
+ f->store_32(1); // Scale
+ f->store_32(p_fps); // FPS
+ f->store_32(0); // Start
+ total_frames_ofs2 = f->get_position();
+ f->store_32(0); // Number of frames (to be updated later)
+ f->store_32(0); // Suggested Buffer Size
+ f->store_32(0); // Quality
+ f->store_32(0); // Sample Size
+
+ f->store_buffer((const uint8_t *)"strf", 4);
+ f->store_32(40); // Size.
+ f->store_32(40); // Size.
+
+ f->store_32(p_movie_size.width); // Width
+ f->store_32(p_movie_size.height); // Width
+ f->store_16(1); // Planes
+ f->store_16(24); // Bitcount
+ f->store_buffer((const uint8_t *)"MJPG", 4); // Compression
+
+ f->store_32(((p_movie_size.width * 24 / 8 + 3) & 0xFFFFFFFC) * p_movie_size.height); // SizeImage
+ f->store_32(0); // XPelsXMeter
+ f->store_32(0); // YPelsXMeter
+ f->store_32(0); // ClrUsed
+ f->store_32(0); // ClrImportant
+
+ f->store_buffer((const uint8_t *)"LIST", 4);
+ f->store_32(16);
+
+ f->store_buffer((const uint8_t *)"odml", 4);
+ f->store_buffer((const uint8_t *)"dmlh", 4);
+ f->store_32(4); // sizes
+
+ total_frames_ofs3 = f->get_position();
+ f->store_32(0); // Number of frames (to be updated later)
+
+ // Audio //
+
+ const uint32_t bit_depth = 32;
+ uint32_t channels = 2;
+ switch (speaker_mode) {
+ case AudioServer::SPEAKER_MODE_STEREO:
+ channels = 2;
+ break;
+ case AudioServer::SPEAKER_SURROUND_31:
+ channels = 4;
+ break;
+ case AudioServer::SPEAKER_SURROUND_51:
+ channels = 6;
+ break;
+ case AudioServer::SPEAKER_SURROUND_71:
+ channels = 8;
+ break;
+ }
+ uint32_t blockalign = bit_depth / 8 * channels;
+
+ f->store_buffer((const uint8_t *)"LIST", 4);
+ f->store_32(84); // 4 + 4 + 4 + 48 + 4 + 4 + 16
+ f->store_buffer((const uint8_t *)"strl", 4);
+ f->store_buffer((const uint8_t *)"strh", 4);
+ f->store_32(48);
+ f->store_buffer((const uint8_t *)"auds", 4);
+ f->store_32(0); // Handler
+ f->store_32(0); // Flags
+ f->store_16(0); // Priority
+ f->store_16(0); // Language
+ f->store_32(0); // Initial Frames
+ f->store_32(blockalign); // Scale
+ f->store_32(mix_rate * blockalign); // mix rate
+ f->store_32(0); // Start
+ total_audio_frames_ofs4 = f->get_position();
+ f->store_32(0); // Number of frames (to be updated later)
+ f->store_32(12288); // Suggested Buffer Size
+ f->store_32(0xFFFFFFFF); // Quality
+ f->store_32(blockalign); // Block Align to 32 bits
+
+ audio_block_size = (mix_rate / fps) * blockalign;
+
+ f->store_buffer((const uint8_t *)"strf", 4);
+ f->store_32(16); // Standard format, no extra fields
+ f->store_16(1); // Compression code, standard PCM
+ f->store_16(channels);
+ f->store_32(mix_rate); // Samples (frames) / Sec
+ f->store_32(mix_rate * blockalign); // Bytes / sec
+ f->store_16(blockalign); // Bytes / sec
+ f->store_16(bit_depth); // Bytes / sec
+
+ f->store_buffer((const uint8_t *)"LIST", 4);
+ movi_data_ofs = f->get_position();
+ f->store_32(0); // Number of frames (to be updated later)
+ f->store_buffer((const uint8_t *)"movi", 4);
+
+ return OK;
+}
+
+Error MovieWriterMJPEG::write_frame(const Ref<Image> &p_image, const int32_t *p_audio_data) {
+ ERR_FAIL_COND_V(!f.is_valid(), ERR_UNCONFIGURED);
+
+ Vector<uint8_t> jpg_buffer = p_image->save_jpg_to_buffer(quality);
+ uint32_t s = jpg_buffer.size();
+
+ f->store_buffer((const uint8_t *)"00db", 4); // Stream 0, Video
+ f->store_32(jpg_buffer.size()); // sizes
+ f->store_buffer(jpg_buffer.ptr(), jpg_buffer.size());
+ if (jpg_buffer.size() & 1) {
+ f->store_8(0);
+ s++;
+ }
+ jpg_frame_sizes.push_back(s);
+
+ f->store_buffer((const uint8_t *)"01wb", 4); // Stream 1, Audio.
+ f->store_32(audio_block_size);
+ f->store_buffer((const uint8_t *)p_audio_data, audio_block_size);
+
+ frame_count++;
+
+ return OK;
+}
+
+void MovieWriterMJPEG::write_end() {
+ if (f.is_valid()) {
+ // Finalize the file (frame indices)
+ f->store_buffer((const uint8_t *)"idx1", 4);
+ f->store_32(8 * 4 * frame_count);
+ uint32_t ofs = 4;
+ uint32_t all_data_size = 0;
+ for (uint32_t i = 0; i < frame_count; i++) {
+ f->store_buffer((const uint8_t *)"00db", 4);
+ f->store_32(16); // AVI_KEYFRAME
+ f->store_32(ofs);
+ f->store_32(jpg_frame_sizes[i]);
+
+ ofs += jpg_frame_sizes[i] + 8;
+
+ f->store_buffer((const uint8_t *)"01wb", 4);
+ f->store_32(16); // AVI_KEYFRAME
+ f->store_32(ofs);
+ f->store_32(audio_block_size);
+
+ ofs += audio_block_size + 8;
+ all_data_size += jpg_frame_sizes[i] + audio_block_size;
+ }
+
+ uint32_t file_size = f->get_position();
+ f->seek(4);
+ f->store_32(file_size - 78);
+ f->seek(total_frames_ofs);
+ f->store_32(frame_count);
+ f->seek(total_frames_ofs2);
+ f->store_32(frame_count);
+ f->seek(total_frames_ofs3);
+ f->store_32(frame_count);
+ f->seek(total_audio_frames_ofs4);
+ f->store_32(frame_count * mix_rate / fps);
+ f->seek(movi_data_ofs);
+ f->store_32(all_data_size + 4 + 16 * frame_count);
+
+ f.unref();
+ }
+}
+
+MovieWriterMJPEG::MovieWriterMJPEG() {
+ mix_rate = GLOBAL_GET("editor/movie_writer/mix_rate_hz");
+ speaker_mode = AudioServer::SpeakerMode(int(GLOBAL_GET("editor/movie_writer/speaker_mode")));
+ quality = GLOBAL_GET("editor/movie_writer/mjpeg_quality");
+}
diff --git a/servers/movie_writer/movie_writer_mjpeg.h b/servers/movie_writer/movie_writer_mjpeg.h
new file mode 100644
index 0000000000..822bedfedf
--- /dev/null
+++ b/servers/movie_writer/movie_writer_mjpeg.h
@@ -0,0 +1,73 @@
+/*************************************************************************/
+/* movie_writer_mjpeg.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifndef MOVIE_WRITER_MJPEG_H
+#define MOVIE_WRITER_MJPEG_H
+
+#include "servers/movie_writer/movie_writer.h"
+
+class MovieWriterMJPEG : public MovieWriter {
+ GDCLASS(MovieWriterMJPEG, MovieWriter)
+
+ uint32_t mix_rate = 48000;
+ AudioServer::SpeakerMode speaker_mode = AudioServer::SPEAKER_MODE_STEREO;
+ String base_path;
+ uint32_t frame_count = 0;
+ uint32_t fps = 0;
+ float quality = 0.75;
+
+ uint32_t audio_block_size = 0;
+
+ Vector<uint32_t> jpg_frame_sizes;
+
+ uint64_t total_frames_ofs = 0;
+ uint64_t total_frames_ofs2 = 0;
+ uint64_t total_frames_ofs3 = 0;
+ uint64_t total_audio_frames_ofs4 = 0;
+ uint64_t movi_data_ofs = 0;
+
+ Ref<FileAccess> f;
+
+protected:
+ virtual uint32_t get_audio_mix_rate() const override;
+ virtual AudioServer::SpeakerMode get_audio_speaker_mode() const override;
+ virtual void get_supported_extensions(List<String> *r_extensions) const override;
+
+ virtual Error write_begin(const Size2i &p_movie_size, uint32_t p_fps, const String &p_base_path) override;
+ virtual Error write_frame(const Ref<Image> &p_image, const int32_t *p_audio_data) override;
+ virtual void write_end() override;
+
+ virtual bool handles_file(const String &p_path) const override;
+
+public:
+ MovieWriterMJPEG();
+};
+
+#endif // MOVIE_WRITER_AVIJPEG_H
diff --git a/servers/navigation_server_2d.cpp b/servers/navigation_server_2d.cpp
index 901d335017..0442089503 100644
--- a/servers/navigation_server_2d.cpp
+++ b/servers/navigation_server_2d.cpp
@@ -166,7 +166,7 @@ void NavigationServer2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("map_get_cell_size", "map"), &NavigationServer2D::map_get_cell_size);
ClassDB::bind_method(D_METHOD("map_set_edge_connection_margin", "map", "margin"), &NavigationServer2D::map_set_edge_connection_margin);
ClassDB::bind_method(D_METHOD("map_get_edge_connection_margin", "map"), &NavigationServer2D::map_get_edge_connection_margin);
- ClassDB::bind_method(D_METHOD("map_get_path", "map", "origin", "destination", "optimize", "layers"), &NavigationServer2D::map_get_path, DEFVAL(1));
+ ClassDB::bind_method(D_METHOD("map_get_path", "map", "origin", "destination", "optimize", "navigation_layers"), &NavigationServer2D::map_get_path, DEFVAL(1));
ClassDB::bind_method(D_METHOD("map_get_closest_point", "map", "to_point"), &NavigationServer2D::map_get_closest_point);
ClassDB::bind_method(D_METHOD("map_get_closest_point_owner", "map", "to_point"), &NavigationServer2D::map_get_closest_point_owner);
@@ -174,10 +174,14 @@ void NavigationServer2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("map_get_agents", "map"), &NavigationServer2D::map_get_agents);
ClassDB::bind_method(D_METHOD("region_create"), &NavigationServer2D::region_create);
+ ClassDB::bind_method(D_METHOD("region_set_enter_cost", "region", "enter_cost"), &NavigationServer2D::region_set_enter_cost);
+ ClassDB::bind_method(D_METHOD("region_get_enter_cost", "region"), &NavigationServer2D::region_get_enter_cost);
+ ClassDB::bind_method(D_METHOD("region_set_travel_cost", "region", "travel_cost"), &NavigationServer2D::region_set_travel_cost);
+ ClassDB::bind_method(D_METHOD("region_get_travel_cost", "region"), &NavigationServer2D::region_get_travel_cost);
ClassDB::bind_method(D_METHOD("region_set_map", "region", "map"), &NavigationServer2D::region_set_map);
ClassDB::bind_method(D_METHOD("region_get_map", "region"), &NavigationServer2D::region_get_map);
- ClassDB::bind_method(D_METHOD("region_set_layers", "region", "layers"), &NavigationServer2D::region_set_layers);
- ClassDB::bind_method(D_METHOD("region_get_layers", "region"), &NavigationServer2D::region_get_layers);
+ ClassDB::bind_method(D_METHOD("region_set_navigation_layers", "region", "navigation_layers"), &NavigationServer2D::region_set_navigation_layers);
+ ClassDB::bind_method(D_METHOD("region_get_navigation_layers", "region"), &NavigationServer2D::region_get_navigation_layers);
ClassDB::bind_method(D_METHOD("region_set_transform", "region", "transform"), &NavigationServer2D::region_set_transform);
ClassDB::bind_method(D_METHOD("region_set_navpoly", "region", "nav_poly"), &NavigationServer2D::region_set_navpoly);
ClassDB::bind_method(D_METHOD("region_get_connections_count", "region"), &NavigationServer2D::region_get_connections_count);
@@ -239,9 +243,15 @@ Vector2 FORWARD_2_R_C(v3_to_v2, map_get_closest_point, RID, p_map, const Vector2
RID FORWARD_2_C(map_get_closest_point_owner, RID, p_map, const Vector2 &, p_point, rid_to_rid, v2_to_v3);
RID FORWARD_0_C(region_create);
+
+void FORWARD_2_C(region_set_enter_cost, RID, p_region, real_t, p_enter_cost, rid_to_rid, real_to_real);
+real_t FORWARD_1_C(region_get_enter_cost, RID, p_region, rid_to_rid);
+void FORWARD_2_C(region_set_travel_cost, RID, p_region, real_t, p_travel_cost, rid_to_rid, real_to_real);
+real_t FORWARD_1_C(region_get_travel_cost, RID, p_region, rid_to_rid);
+
void FORWARD_2_C(region_set_map, RID, p_region, RID, p_map, rid_to_rid, rid_to_rid);
-void FORWARD_2_C(region_set_layers, RID, p_region, uint32_t, p_layers, rid_to_rid, uint32_to_uint32);
-uint32_t FORWARD_1_C(region_get_layers, RID, p_region, rid_to_rid);
+void FORWARD_2_C(region_set_navigation_layers, RID, p_region, uint32_t, p_navigation_layers, rid_to_rid, uint32_to_uint32);
+uint32_t FORWARD_1_C(region_get_navigation_layers, RID, p_region, rid_to_rid);
void FORWARD_2_C(region_set_transform, RID, p_region, Transform2D, p_transform, rid_to_rid, trf2_to_trf3);
void NavigationServer2D::region_set_navpoly(RID p_region, Ref<NavigationPolygon> p_nav_mesh) const {
diff --git a/servers/navigation_server_2d.h b/servers/navigation_server_2d.h
index dfdcf5fca8..30f553d10b 100644
--- a/servers/navigation_server_2d.h
+++ b/servers/navigation_server_2d.h
@@ -75,7 +75,7 @@ public:
virtual real_t map_get_edge_connection_margin(RID p_map) const;
/// Returns the navigation path to reach the destination from the origin.
- virtual Vector<Vector2> map_get_path(RID p_map, Vector2 p_origin, Vector2 p_destination, bool p_optimize, uint32_t p_layers = 1) const;
+ virtual Vector<Vector2> map_get_path(RID p_map, Vector2 p_origin, Vector2 p_destination, bool p_optimize, uint32_t p_navigation_layers = 1) const;
virtual Vector2 map_get_closest_point(RID p_map, const Vector2 &p_point) const;
virtual RID map_get_closest_point_owner(RID p_map, const Vector2 &p_point) const;
@@ -86,13 +86,21 @@ public:
/// Creates a new region.
virtual RID region_create() const;
+ /// Set the enter_cost of a region
+ virtual void region_set_enter_cost(RID p_region, real_t p_enter_cost) const;
+ virtual real_t region_get_enter_cost(RID p_region) const;
+
+ /// Set the travel_cost of a region
+ virtual void region_set_travel_cost(RID p_region, real_t p_travel_cost) const;
+ virtual real_t region_get_travel_cost(RID p_region) const;
+
/// Set the map of this region.
virtual void region_set_map(RID p_region, RID p_map) const;
virtual RID region_get_map(RID p_region) const;
/// Set the region's layers
- virtual void region_set_layers(RID p_region, uint32_t p_layers) const;
- virtual uint32_t region_get_layers(RID p_region) const;
+ virtual void region_set_navigation_layers(RID p_region, uint32_t p_navigation_layers) const;
+ virtual uint32_t region_get_navigation_layers(RID p_region) const;
/// Set the global transformation of this region.
virtual void region_set_transform(RID p_region, Transform2D p_transform) const;
diff --git a/servers/navigation_server_3d.cpp b/servers/navigation_server_3d.cpp
index 0ce869ad1a..60bbcec8d4 100644
--- a/servers/navigation_server_3d.cpp
+++ b/servers/navigation_server_3d.cpp
@@ -42,7 +42,7 @@ void NavigationServer3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("map_get_cell_size", "map"), &NavigationServer3D::map_get_cell_size);
ClassDB::bind_method(D_METHOD("map_set_edge_connection_margin", "map", "margin"), &NavigationServer3D::map_set_edge_connection_margin);
ClassDB::bind_method(D_METHOD("map_get_edge_connection_margin", "map"), &NavigationServer3D::map_get_edge_connection_margin);
- ClassDB::bind_method(D_METHOD("map_get_path", "map", "origin", "destination", "optimize", "layers"), &NavigationServer3D::map_get_path, DEFVAL(1));
+ ClassDB::bind_method(D_METHOD("map_get_path", "map", "origin", "destination", "optimize", "navigation_layers"), &NavigationServer3D::map_get_path, DEFVAL(1));
ClassDB::bind_method(D_METHOD("map_get_closest_point_to_segment", "map", "start", "end", "use_collision"), &NavigationServer3D::map_get_closest_point_to_segment, DEFVAL(false));
ClassDB::bind_method(D_METHOD("map_get_closest_point", "map", "to_point"), &NavigationServer3D::map_get_closest_point);
ClassDB::bind_method(D_METHOD("map_get_closest_point_normal", "map", "to_point"), &NavigationServer3D::map_get_closest_point_normal);
@@ -52,10 +52,14 @@ void NavigationServer3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("map_get_agents", "map"), &NavigationServer3D::map_get_agents);
ClassDB::bind_method(D_METHOD("region_create"), &NavigationServer3D::region_create);
+ ClassDB::bind_method(D_METHOD("region_set_enter_cost", "region", "enter_cost"), &NavigationServer3D::region_set_enter_cost);
+ ClassDB::bind_method(D_METHOD("region_get_enter_cost", "region"), &NavigationServer3D::region_get_enter_cost);
+ ClassDB::bind_method(D_METHOD("region_set_travel_cost", "region", "travel_cost"), &NavigationServer3D::region_set_travel_cost);
+ ClassDB::bind_method(D_METHOD("region_get_travel_cost", "region"), &NavigationServer3D::region_get_travel_cost);
ClassDB::bind_method(D_METHOD("region_set_map", "region", "map"), &NavigationServer3D::region_set_map);
ClassDB::bind_method(D_METHOD("region_get_map", "region"), &NavigationServer3D::region_get_map);
- ClassDB::bind_method(D_METHOD("region_set_layers", "region", "layers"), &NavigationServer3D::region_set_layers);
- ClassDB::bind_method(D_METHOD("region_get_layers", "region"), &NavigationServer3D::region_get_layers);
+ ClassDB::bind_method(D_METHOD("region_set_navigation_layers", "region", "navigation_layers"), &NavigationServer3D::region_set_navigation_layers);
+ ClassDB::bind_method(D_METHOD("region_get_navigation_layers", "region"), &NavigationServer3D::region_get_navigation_layers);
ClassDB::bind_method(D_METHOD("region_set_transform", "region", "transform"), &NavigationServer3D::region_set_transform);
ClassDB::bind_method(D_METHOD("region_set_navmesh", "region", "nav_mesh"), &NavigationServer3D::region_set_navmesh);
ClassDB::bind_method(D_METHOD("region_bake_navmesh", "mesh", "node"), &NavigationServer3D::region_bake_navmesh);
diff --git a/servers/navigation_server_3d.h b/servers/navigation_server_3d.h
index c3d3a589a9..9c04d68622 100644
--- a/servers/navigation_server_3d.h
+++ b/servers/navigation_server_3d.h
@@ -84,7 +84,7 @@ public:
virtual real_t map_get_edge_connection_margin(RID p_map) const = 0;
/// Returns the navigation path to reach the destination from the origin.
- virtual Vector<Vector3> map_get_path(RID p_map, Vector3 p_origin, Vector3 p_destination, bool p_optimize, uint32_t p_navigable_layers = 1) const = 0;
+ virtual Vector<Vector3> map_get_path(RID p_map, Vector3 p_origin, Vector3 p_destination, bool p_optimize, uint32_t p_navigation_layers = 1) const = 0;
virtual Vector3 map_get_closest_point_to_segment(RID p_map, const Vector3 &p_from, const Vector3 &p_to, const bool p_use_collision = false) const = 0;
virtual Vector3 map_get_closest_point(RID p_map, const Vector3 &p_point) const = 0;
@@ -97,13 +97,21 @@ public:
/// Creates a new region.
virtual RID region_create() const = 0;
+ /// Set the enter_cost of a region
+ virtual void region_set_enter_cost(RID p_region, real_t p_enter_cost) const = 0;
+ virtual real_t region_get_enter_cost(RID p_region) const = 0;
+
+ /// Set the travel_cost of a region
+ virtual void region_set_travel_cost(RID p_region, real_t p_travel_cost) const = 0;
+ virtual real_t region_get_travel_cost(RID p_region) const = 0;
+
/// Set the map of this region.
virtual void region_set_map(RID p_region, RID p_map) const = 0;
virtual RID region_get_map(RID p_region) const = 0;
/// Set the region's layers
- virtual void region_set_layers(RID p_region, uint32_t p_layers) const = 0;
- virtual uint32_t region_get_layers(RID p_region) const = 0;
+ virtual void region_set_navigation_layers(RID p_region, uint32_t p_navigation_layers) const = 0;
+ virtual uint32_t region_get_navigation_layers(RID p_region) const = 0;
/// Set the global transformation of this region.
virtual void region_set_transform(RID p_region, Transform3D p_transform) const = 0;
diff --git a/servers/physics_2d/godot_area_2d.h b/servers/physics_2d/godot_area_2d.h
index 35dad9d2c3..221982cf78 100644
--- a/servers/physics_2d/godot_area_2d.h
+++ b/servers/physics_2d/godot_area_2d.h
@@ -70,9 +70,9 @@ class GodotArea2D : public GodotCollisionObject2D {
static uint32_t hash(const BodyKey &p_key) {
uint32_t h = hash_one_uint64(p_key.rid.get_id());
- h = hash_djb2_one_64(p_key.instance_id, h);
- h = hash_djb2_one_32(p_key.area_shape, h);
- return hash_djb2_one_32(p_key.body_shape, h);
+ h = hash_murmur3_one_64(p_key.instance_id, h);
+ h = hash_murmur3_one_32(p_key.area_shape, h);
+ return hash_fmix32(hash_murmur3_one_32(p_key.body_shape, h));
}
_FORCE_INLINE_ bool operator==(const BodyKey &p_key) const {
diff --git a/servers/physics_3d/godot_area_3d.h b/servers/physics_3d/godot_area_3d.h
index a00451f602..51b435eb00 100644
--- a/servers/physics_3d/godot_area_3d.h
+++ b/servers/physics_3d/godot_area_3d.h
@@ -74,9 +74,9 @@ class GodotArea3D : public GodotCollisionObject3D {
static uint32_t hash(const BodyKey &p_key) {
uint32_t h = hash_one_uint64(p_key.rid.get_id());
- h = hash_djb2_one_64(p_key.instance_id, h);
- h = hash_djb2_one_32(p_key.area_shape, h);
- return hash_djb2_one_32(p_key.body_shape, h);
+ h = hash_murmur3_one_64(p_key.instance_id, h);
+ h = hash_murmur3_one_32(p_key.area_shape, h);
+ return hash_fmix32(hash_murmur3_one_32(p_key.body_shape, h));
}
_FORCE_INLINE_ bool operator==(const BodyKey &p_key) const {
diff --git a/servers/register_server_types.cpp b/servers/register_server_types.cpp
index 8bbe987cb7..d7d2340119 100644
--- a/servers/register_server_types.cpp
+++ b/servers/register_server_types.cpp
@@ -57,6 +57,8 @@
#include "camera_server.h"
#include "debugger/servers_debugger.h"
#include "display_server.h"
+#include "movie_writer/movie_writer.h"
+#include "movie_writer/movie_writer_mjpeg.h"
#include "navigation_server_2d.h"
#include "navigation_server_3d.h"
#include "physics_2d/godot_physics_server_2d.h"
@@ -107,6 +109,9 @@ static bool has_server_feature_callback(const String &p_feature) {
return false;
}
+static MovieWriterMJPEG *writer_mjpeg = nullptr;
+static MovieWriterPNGWAV *writer_pngwav = nullptr;
+
void register_server_types() {
shader_types = memnew(ShaderTypes);
@@ -239,6 +244,8 @@ void register_server_types() {
GDREGISTER_CLASS(PhysicsTestMotionParameters3D);
GDREGISTER_CLASS(PhysicsTestMotionResult3D);
+ GDREGISTER_VIRTUAL_CLASS(MovieWriter);
+
ServersDebugger::initialize();
// Physics 2D
@@ -254,11 +261,19 @@ void register_server_types() {
PhysicsServer3DManager::register_server("GodotPhysics3D", &_createGodotPhysics3DCallback);
PhysicsServer3DManager::set_default_server("GodotPhysics3D");
+
+ writer_mjpeg = memnew(MovieWriterMJPEG);
+ MovieWriter::add_writer(writer_mjpeg);
+
+ writer_pngwav = memnew(MovieWriterPNGWAV);
+ MovieWriter::add_writer(writer_pngwav);
}
void unregister_server_types() {
ServersDebugger::deinitialize();
memdelete(shader_types);
+ memdelete(writer_mjpeg);
+ memdelete(writer_pngwav);
}
void register_server_singletons() {
diff --git a/servers/rendering/dummy/environment/gi.h b/servers/rendering/dummy/environment/gi.h
new file mode 100644
index 0000000000..374f0c8923
--- /dev/null
+++ b/servers/rendering/dummy/environment/gi.h
@@ -0,0 +1,85 @@
+/*************************************************************************/
+/* gi.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifndef GI_DUMMY_H
+#define GI_DUMMY_H
+
+#include "servers/rendering/environment/renderer_gi.h"
+
+namespace RendererDummy {
+
+class GI : public RendererGI {
+public:
+ /* VOXEL GI API */
+
+ virtual RID voxel_gi_allocate() override { return RID(); }
+ virtual void voxel_gi_free(RID p_rid) override {}
+ virtual void voxel_gi_initialize(RID p_rid) override {}
+ virtual void voxel_gi_allocate_data(RID p_voxel_gi, const Transform3D &p_to_cell_xform, const AABB &p_aabb, const Vector3i &p_octree_size, const Vector<uint8_t> &p_octree_cells, const Vector<uint8_t> &p_data_cells, const Vector<uint8_t> &p_distance_field, const Vector<int> &p_level_counts) override {}
+
+ virtual AABB voxel_gi_get_bounds(RID p_voxel_gi) const override { return AABB(); }
+ virtual Vector3i voxel_gi_get_octree_size(RID p_voxel_gi) const override { return Vector3i(); }
+ virtual Vector<uint8_t> voxel_gi_get_octree_cells(RID p_voxel_gi) const override { return Vector<uint8_t>(); }
+ virtual Vector<uint8_t> voxel_gi_get_data_cells(RID p_voxel_gi) const override { return Vector<uint8_t>(); }
+ virtual Vector<uint8_t> voxel_gi_get_distance_field(RID p_voxel_gi) const override { return Vector<uint8_t>(); }
+
+ virtual Vector<int> voxel_gi_get_level_counts(RID p_voxel_gi) const override { return Vector<int>(); }
+ virtual Transform3D voxel_gi_get_to_cell_xform(RID p_voxel_gi) const override { return Transform3D(); }
+
+ virtual void voxel_gi_set_dynamic_range(RID p_voxel_gi, float p_range) override {}
+ virtual float voxel_gi_get_dynamic_range(RID p_voxel_gi) const override { return 0; }
+
+ virtual void voxel_gi_set_propagation(RID p_voxel_gi, float p_range) override {}
+ virtual float voxel_gi_get_propagation(RID p_voxel_gi) const override { return 0; }
+
+ virtual void voxel_gi_set_energy(RID p_voxel_gi, float p_range) override {}
+ virtual float voxel_gi_get_energy(RID p_voxel_gi) const override { return 0.0; }
+
+ virtual void voxel_gi_set_bias(RID p_voxel_gi, float p_range) override {}
+ virtual float voxel_gi_get_bias(RID p_voxel_gi) const override { return 0.0; }
+
+ virtual void voxel_gi_set_normal_bias(RID p_voxel_gi, float p_range) override {}
+ virtual float voxel_gi_get_normal_bias(RID p_voxel_gi) const override { return 0.0; }
+
+ virtual void voxel_gi_set_interior(RID p_voxel_gi, bool p_enable) override {}
+ virtual bool voxel_gi_is_interior(RID p_voxel_gi) const override { return false; }
+
+ virtual void voxel_gi_set_use_two_bounces(RID p_voxel_gi, bool p_enable) override {}
+ virtual bool voxel_gi_is_using_two_bounces(RID p_voxel_gi) const override { return false; }
+
+ virtual void voxel_gi_set_anisotropy_strength(RID p_voxel_gi, float p_strength) override {}
+ virtual float voxel_gi_get_anisotropy_strength(RID p_voxel_gi) const override { return 0; }
+
+ virtual uint32_t voxel_gi_get_version(RID p_voxel_gi) const override { return 0; }
+};
+
+} // namespace RendererDummy
+
+#endif // !GI_DUMMY_H
diff --git a/servers/rendering/dummy/rasterizer_dummy.h b/servers/rendering/dummy/rasterizer_dummy.h
index 5c6fcc8386..9c2bd45cce 100644
--- a/servers/rendering/dummy/rasterizer_dummy.h
+++ b/servers/rendering/dummy/rasterizer_dummy.h
@@ -34,6 +34,7 @@
#include "core/templates/rid_owner.h"
#include "core/templates/self_list.h"
#include "scene/resources/mesh.h"
+#include "servers/rendering/dummy/environment/gi.h"
#include "servers/rendering/dummy/rasterizer_canvas_dummy.h"
#include "servers/rendering/dummy/rasterizer_scene_dummy.h"
#include "servers/rendering/dummy/rasterizer_storage_dummy.h"
@@ -57,6 +58,7 @@ protected:
RendererDummy::MeshStorage mesh_storage;
RendererDummy::ParticlesStorage particles_storage;
RendererDummy::TextureStorage texture_storage;
+ RendererDummy::GI gi;
RasterizerStorageDummy storage;
RasterizerSceneDummy scene;
@@ -66,6 +68,7 @@ public:
RendererMeshStorage *get_mesh_storage() override { return &mesh_storage; };
RendererParticlesStorage *get_particles_storage() override { return &particles_storage; };
RendererTextureStorage *get_texture_storage() override { return &texture_storage; };
+ RendererGI *get_gi() override { return &gi; };
RendererStorage *get_storage() override { return &storage; }
RendererCanvasRender *get_canvas() override { return &canvas; }
RendererSceneRender *get_scene() override { return &scene; }
diff --git a/servers/rendering/dummy/rasterizer_scene_dummy.h b/servers/rendering/dummy/rasterizer_scene_dummy.h
index fa58322ea8..e6d2b93f99 100644
--- a/servers/rendering/dummy/rasterizer_scene_dummy.h
+++ b/servers/rendering/dummy/rasterizer_scene_dummy.h
@@ -183,7 +183,7 @@ public:
void voxel_gi_set_quality(RS::VoxelGIQuality) override {}
- void render_scene(RID p_render_buffers, const CameraData *p_camera_data, const PagedArray<GeometryInstance *> &p_instances, const PagedArray<RID> &p_lights, const PagedArray<RID> &p_reflection_probes, const PagedArray<RID> &p_voxel_gi_instances, const PagedArray<RID> &p_decals, const PagedArray<RID> &p_lightmaps, const PagedArray<RID> &p_fog_volumes, RID p_environment, RID p_camera_effects, RID p_shadow_atlas, RID p_occluder_debug_tex, RID p_reflection_atlas, RID p_reflection_probe, int p_reflection_probe_pass, float p_screen_mesh_lod_threshold, const RenderShadowData *p_render_shadows, int p_render_shadow_count, const RenderSDFGIData *p_render_sdfgi_regions, int p_render_sdfgi_region_count, const RenderSDFGIUpdateData *p_sdfgi_update_data = nullptr, RendererScene::RenderInfo *r_info = nullptr) override {}
+ void render_scene(RID p_render_buffers, const CameraData *p_camera_data, const CameraData *p_prev_camera_data, const PagedArray<GeometryInstance *> &p_instances, const PagedArray<RID> &p_lights, const PagedArray<RID> &p_reflection_probes, const PagedArray<RID> &p_voxel_gi_instances, const PagedArray<RID> &p_decals, const PagedArray<RID> &p_lightmaps, const PagedArray<RID> &p_fog_volumes, RID p_environment, RID p_camera_effects, RID p_shadow_atlas, RID p_occluder_debug_tex, RID p_reflection_atlas, RID p_reflection_probe, int p_reflection_probe_pass, float p_screen_mesh_lod_threshold, const RenderShadowData *p_render_shadows, int p_render_shadow_count, const RenderSDFGIData *p_render_sdfgi_regions, int p_render_sdfgi_region_count, const RenderSDFGIUpdateData *p_sdfgi_update_data = nullptr, RendererScene::RenderInfo *r_info = nullptr) override {}
void render_material(const Transform3D &p_cam_transform, const CameraMatrix &p_cam_projection, bool p_cam_orthogonal, const PagedArray<GeometryInstance *> &p_instances, RID p_framebuffer, const Rect2i &p_region) override {}
void render_particle_collider_heightfield(RID p_collider, const Transform3D &p_transform, const PagedArray<GeometryInstance *> &p_instances) override {}
@@ -192,7 +192,7 @@ public:
void set_debug_draw_mode(RS::ViewportDebugDraw p_debug_draw) override {}
RID render_buffers_create() override { return RID(); }
- void render_buffers_configure(RID p_render_buffers, RID p_render_target, int p_internal_width, int p_internal_height, int p_width, int p_height, float p_fsr_sharpness, float p_fsr_mipmap_bias, RS::ViewportMSAA p_msaa, RS::ViewportScreenSpaceAA p_screen_space_aa, bool p_use_debanding, uint32_t p_view_count) override {}
+ void render_buffers_configure(RID p_render_buffers, RID p_render_target, int p_internal_width, int p_internal_height, int p_width, int p_height, float p_fsr_sharpness, float p_fsr_mipmap_bias, RS::ViewportMSAA p_msaa, RS::ViewportScreenSpaceAA p_screen_space_aa, bool p_use_taa, bool p_use_debanding, uint32_t p_view_count) override {}
void gi_set_use_half_resolution(bool p_enable) override {}
void screen_space_roughness_limiter_set_active(bool p_enable, float p_amount, float p_curve) override {}
diff --git a/servers/rendering/dummy/rasterizer_storage_dummy.h b/servers/rendering/dummy/rasterizer_storage_dummy.h
index 596960786a..7f637d2c42 100644
--- a/servers/rendering/dummy/rasterizer_storage_dummy.h
+++ b/servers/rendering/dummy/rasterizer_storage_dummy.h
@@ -38,47 +38,6 @@ class RasterizerStorageDummy : public RendererStorage {
public:
void base_update_dependency(RID p_base, DependencyTracker *p_instance) override {}
- /* VOXEL GI API */
-
- RID voxel_gi_allocate() override { return RID(); }
- void voxel_gi_initialize(RID p_rid) override {}
- void voxel_gi_allocate_data(RID p_voxel_gi, const Transform3D &p_to_cell_xform, const AABB &p_aabb, const Vector3i &p_octree_size, const Vector<uint8_t> &p_octree_cells, const Vector<uint8_t> &p_data_cells, const Vector<uint8_t> &p_distance_field, const Vector<int> &p_level_counts) override {}
-
- AABB voxel_gi_get_bounds(RID p_voxel_gi) const override { return AABB(); }
- Vector3i voxel_gi_get_octree_size(RID p_voxel_gi) const override { return Vector3i(); }
- Vector<uint8_t> voxel_gi_get_octree_cells(RID p_voxel_gi) const override { return Vector<uint8_t>(); }
- Vector<uint8_t> voxel_gi_get_data_cells(RID p_voxel_gi) const override { return Vector<uint8_t>(); }
- Vector<uint8_t> voxel_gi_get_distance_field(RID p_voxel_gi) const override { return Vector<uint8_t>(); }
-
- Vector<int> voxel_gi_get_level_counts(RID p_voxel_gi) const override { return Vector<int>(); }
- Transform3D voxel_gi_get_to_cell_xform(RID p_voxel_gi) const override { return Transform3D(); }
-
- void voxel_gi_set_dynamic_range(RID p_voxel_gi, float p_range) override {}
- float voxel_gi_get_dynamic_range(RID p_voxel_gi) const override { return 0; }
-
- void voxel_gi_set_propagation(RID p_voxel_gi, float p_range) override {}
- float voxel_gi_get_propagation(RID p_voxel_gi) const override { return 0; }
-
- void voxel_gi_set_energy(RID p_voxel_gi, float p_range) override {}
- float voxel_gi_get_energy(RID p_voxel_gi) const override { return 0.0; }
-
- void voxel_gi_set_bias(RID p_voxel_gi, float p_range) override {}
- float voxel_gi_get_bias(RID p_voxel_gi) const override { return 0.0; }
-
- void voxel_gi_set_normal_bias(RID p_voxel_gi, float p_range) override {}
- float voxel_gi_get_normal_bias(RID p_voxel_gi) const override { return 0.0; }
-
- void voxel_gi_set_interior(RID p_voxel_gi, bool p_enable) override {}
- bool voxel_gi_is_interior(RID p_voxel_gi) const override { return false; }
-
- void voxel_gi_set_use_two_bounces(RID p_voxel_gi, bool p_enable) override {}
- bool voxel_gi_is_using_two_bounces(RID p_voxel_gi) const override { return false; }
-
- void voxel_gi_set_anisotropy_strength(RID p_voxel_gi, float p_strength) override {}
- float voxel_gi_get_anisotropy_strength(RID p_voxel_gi) const override { return 0; }
-
- uint32_t voxel_gi_get_version(RID p_voxel_gi) override { return 0; }
-
/* OCCLUDER */
void occluder_set_mesh(RID p_occluder, const PackedVector3Array &p_vertices, const PackedInt32Array &p_indices) {}
diff --git a/servers/rendering/environment/renderer_gi.h b/servers/rendering/environment/renderer_gi.h
new file mode 100644
index 0000000000..c4f63b7b6b
--- /dev/null
+++ b/servers/rendering/environment/renderer_gi.h
@@ -0,0 +1,85 @@
+/*************************************************************************/
+/* renderer_gi.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifndef RENDERER_GI_H
+#define RENDERER_GI_H
+
+#include "servers/rendering/renderer_storage.h"
+#include "servers/rendering_server.h"
+
+class RendererGI {
+public:
+ virtual ~RendererGI() {}
+
+ /* VOXEL GI API */
+
+ virtual RID voxel_gi_allocate() = 0;
+ virtual void voxel_gi_free(RID p_rid) = 0;
+ virtual void voxel_gi_initialize(RID p_rid) = 0;
+
+ virtual void voxel_gi_allocate_data(RID p_voxel_gi, const Transform3D &p_to_cell_xform, const AABB &p_aabb, const Vector3i &p_octree_size, const Vector<uint8_t> &p_octree_cells, const Vector<uint8_t> &p_data_cells, const Vector<uint8_t> &p_distance_field, const Vector<int> &p_level_counts) = 0;
+
+ virtual AABB voxel_gi_get_bounds(RID p_voxel_gi) const = 0;
+ virtual Vector3i voxel_gi_get_octree_size(RID p_voxel_gi) const = 0;
+ virtual Vector<uint8_t> voxel_gi_get_octree_cells(RID p_voxel_gi) const = 0;
+ virtual Vector<uint8_t> voxel_gi_get_data_cells(RID p_voxel_gi) const = 0;
+ virtual Vector<uint8_t> voxel_gi_get_distance_field(RID p_voxel_gi) const = 0;
+
+ virtual Vector<int> voxel_gi_get_level_counts(RID p_voxel_gi) const = 0;
+ virtual Transform3D voxel_gi_get_to_cell_xform(RID p_voxel_gi) const = 0;
+
+ virtual void voxel_gi_set_dynamic_range(RID p_voxel_gi, float p_range) = 0;
+ virtual float voxel_gi_get_dynamic_range(RID p_voxel_gi) const = 0;
+
+ virtual void voxel_gi_set_propagation(RID p_voxel_gi, float p_range) = 0;
+ virtual float voxel_gi_get_propagation(RID p_voxel_gi) const = 0;
+
+ virtual void voxel_gi_set_energy(RID p_voxel_gi, float p_energy) = 0;
+ virtual float voxel_gi_get_energy(RID p_voxel_gi) const = 0;
+
+ virtual void voxel_gi_set_bias(RID p_voxel_gi, float p_bias) = 0;
+ virtual float voxel_gi_get_bias(RID p_voxel_gi) const = 0;
+
+ virtual void voxel_gi_set_normal_bias(RID p_voxel_gi, float p_range) = 0;
+ virtual float voxel_gi_get_normal_bias(RID p_voxel_gi) const = 0;
+
+ virtual void voxel_gi_set_interior(RID p_voxel_gi, bool p_enable) = 0;
+ virtual bool voxel_gi_is_interior(RID p_voxel_gi) const = 0;
+
+ virtual void voxel_gi_set_use_two_bounces(RID p_voxel_gi, bool p_enable) = 0;
+ virtual bool voxel_gi_is_using_two_bounces(RID p_voxel_gi) const = 0;
+
+ virtual void voxel_gi_set_anisotropy_strength(RID p_voxel_gi, float p_strength) = 0;
+ virtual float voxel_gi_get_anisotropy_strength(RID p_voxel_gi) const = 0;
+
+ virtual uint32_t voxel_gi_get_version(RID p_probe) const = 0;
+};
+
+#endif // !RENDERER_GI_H
diff --git a/servers/rendering/renderer_compositor.h b/servers/rendering/renderer_compositor.h
index df3df1077a..f58bc851ef 100644
--- a/servers/rendering/renderer_compositor.h
+++ b/servers/rendering/renderer_compositor.h
@@ -31,6 +31,7 @@
#ifndef RENDERING_SERVER_COMPOSITOR_H
#define RENDERING_SERVER_COMPOSITOR_H
+#include "servers/rendering/environment/renderer_gi.h"
#include "servers/rendering/renderer_canvas_render.h"
#include "servers/rendering/renderer_scene.h"
#include "servers/rendering/renderer_storage.h"
@@ -81,6 +82,7 @@ public:
virtual RendererMeshStorage *get_mesh_storage() = 0;
virtual RendererParticlesStorage *get_particles_storage() = 0;
virtual RendererTextureStorage *get_texture_storage() = 0;
+ virtual RendererGI *get_gi() = 0;
virtual RendererStorage *get_storage() = 0;
virtual RendererCanvasRender *get_canvas() = 0;
virtual RendererSceneRender *get_scene() = 0;
diff --git a/servers/rendering/renderer_rd/SCsub b/servers/rendering/renderer_rd/SCsub
index 774a6b7951..10b83dca11 100644
--- a/servers/rendering/renderer_rd/SCsub
+++ b/servers/rendering/renderer_rd/SCsub
@@ -5,6 +5,7 @@ Import("env")
env.add_source_files(env.servers_sources, "*.cpp")
SConscript("effects/SCsub")
+SConscript("environment/SCsub")
SConscript("forward_clustered/SCsub")
SConscript("forward_mobile/SCsub")
SConscript("shaders/SCsub")
diff --git a/servers/rendering/renderer_rd/effects/resolve.cpp b/servers/rendering/renderer_rd/effects/resolve.cpp
new file mode 100644
index 0000000000..6c49a2ebce
--- /dev/null
+++ b/servers/rendering/renderer_rd/effects/resolve.cpp
@@ -0,0 +1,130 @@
+/*************************************************************************/
+/* resolve.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#include "resolve.h"
+#include "servers/rendering/renderer_rd/renderer_compositor_rd.h"
+#include "servers/rendering/renderer_rd/storage_rd/material_storage.h"
+#include "servers/rendering/renderer_rd/uniform_set_cache_rd.h"
+
+using namespace RendererRD;
+
+Resolve::Resolve() {
+ Vector<String> resolve_modes;
+ resolve_modes.push_back("\n#define MODE_RESOLVE_GI\n");
+ resolve_modes.push_back("\n#define MODE_RESOLVE_GI\n#define VOXEL_GI_RESOLVE\n");
+ resolve_modes.push_back("\n#define MODE_RESOLVE_DEPTH\n");
+
+ resolve.shader.initialize(resolve_modes);
+
+ resolve.shader_version = resolve.shader.version_create();
+
+ for (int i = 0; i < RESOLVE_MODE_MAX; i++) {
+ resolve.pipelines[i] = RD::get_singleton()->compute_pipeline_create(resolve.shader.version_get_shader(resolve.shader_version, i));
+ }
+}
+
+Resolve::~Resolve() {
+ resolve.shader.version_free(resolve.shader_version);
+}
+
+void Resolve::resolve_gi(RID p_source_depth, RID p_source_normal_roughness, RID p_source_voxel_gi, RID p_dest_depth, RID p_dest_normal_roughness, RID p_dest_voxel_gi, Vector2i p_screen_size, int p_samples, uint32_t p_barrier) {
+ UniformSetCacheRD *uniform_set_cache = UniformSetCacheRD::get_singleton();
+ ERR_FAIL_NULL(uniform_set_cache);
+ MaterialStorage *material_storage = MaterialStorage::get_singleton();
+ ERR_FAIL_NULL(material_storage);
+
+ ResolvePushConstant push_constant;
+ push_constant.screen_size[0] = p_screen_size.x;
+ push_constant.screen_size[1] = p_screen_size.y;
+ push_constant.samples = p_samples;
+
+ // setup our uniforms
+ RID default_sampler = material_storage->sampler_rd_get_default(RS::CANVAS_ITEM_TEXTURE_FILTER_LINEAR, RS::CANVAS_ITEM_TEXTURE_REPEAT_DISABLED);
+
+ RD::Uniform u_source_depth(RD::UNIFORM_TYPE_SAMPLER_WITH_TEXTURE, 0, Vector<RID>({ default_sampler, p_source_depth }));
+ RD::Uniform u_source_normal_roughness(RD::UNIFORM_TYPE_SAMPLER_WITH_TEXTURE, 1, Vector<RID>({ default_sampler, p_source_normal_roughness }));
+ RD::Uniform u_dest_depth(RD::UNIFORM_TYPE_IMAGE, 0, Vector<RID>({ p_dest_depth }));
+ RD::Uniform u_dest_normal_roughness(RD::UNIFORM_TYPE_IMAGE, 1, Vector<RID>({ p_dest_normal_roughness }));
+
+ ResolveMode mode = p_source_voxel_gi.is_valid() ? RESOLVE_MODE_GI_VOXEL_GI : RESOLVE_MODE_GI;
+ RID shader = resolve.shader.version_get_shader(resolve.shader_version, mode);
+ ERR_FAIL_COND(shader.is_null());
+
+ RD::ComputeListID compute_list = RD::get_singleton()->compute_list_begin();
+ RD::get_singleton()->compute_list_bind_compute_pipeline(compute_list, resolve.pipelines[mode]);
+ RD::get_singleton()->compute_list_bind_uniform_set(compute_list, uniform_set_cache->get_cache(shader, 0, u_source_depth, u_source_normal_roughness), 0);
+ RD::get_singleton()->compute_list_bind_uniform_set(compute_list, uniform_set_cache->get_cache(shader, 1, u_dest_depth, u_dest_normal_roughness), 1);
+ if (p_source_voxel_gi.is_valid()) {
+ RD::Uniform u_source_voxel_gi(RD::UNIFORM_TYPE_SAMPLER_WITH_TEXTURE, 0, Vector<RID>({ default_sampler, p_source_voxel_gi }));
+ RD::Uniform u_dest_voxel_gi(RD::UNIFORM_TYPE_IMAGE, 0, p_dest_voxel_gi);
+
+ RD::get_singleton()->compute_list_bind_uniform_set(compute_list, uniform_set_cache->get_cache(shader, 2, u_source_voxel_gi), 2);
+ RD::get_singleton()->compute_list_bind_uniform_set(compute_list, uniform_set_cache->get_cache(shader, 3, u_dest_voxel_gi), 3);
+ }
+
+ RD::get_singleton()->compute_list_set_push_constant(compute_list, &push_constant, sizeof(ResolvePushConstant));
+
+ RD::get_singleton()->compute_list_dispatch_threads(compute_list, p_screen_size.x, p_screen_size.y, 1);
+
+ RD::get_singleton()->compute_list_end(p_barrier);
+}
+
+void Resolve::resolve_depth(RID p_source_depth, RID p_dest_depth, Vector2i p_screen_size, int p_samples, uint32_t p_barrier) {
+ UniformSetCacheRD *uniform_set_cache = UniformSetCacheRD::get_singleton();
+ ERR_FAIL_NULL(uniform_set_cache);
+ MaterialStorage *material_storage = MaterialStorage::get_singleton();
+ ERR_FAIL_NULL(material_storage);
+
+ ResolvePushConstant push_constant;
+ push_constant.screen_size[0] = p_screen_size.x;
+ push_constant.screen_size[1] = p_screen_size.y;
+ push_constant.samples = p_samples;
+
+ // setup our uniforms
+ RID default_sampler = material_storage->sampler_rd_get_default(RS::CANVAS_ITEM_TEXTURE_FILTER_LINEAR, RS::CANVAS_ITEM_TEXTURE_REPEAT_DISABLED);
+
+ RD::Uniform u_source_depth(RD::UNIFORM_TYPE_SAMPLER_WITH_TEXTURE, 0, Vector<RID>({ default_sampler, p_source_depth }));
+ RD::Uniform u_dest_depth(RD::UNIFORM_TYPE_IMAGE, 0, p_dest_depth);
+
+ ResolveMode mode = RESOLVE_MODE_DEPTH;
+ RID shader = resolve.shader.version_get_shader(resolve.shader_version, mode);
+ ERR_FAIL_COND(shader.is_null());
+
+ RD::ComputeListID compute_list = RD::get_singleton()->compute_list_begin();
+ RD::get_singleton()->compute_list_bind_compute_pipeline(compute_list, resolve.pipelines[mode]);
+ RD::get_singleton()->compute_list_bind_uniform_set(compute_list, uniform_set_cache->get_cache(shader, 0, u_source_depth), 0);
+ RD::get_singleton()->compute_list_bind_uniform_set(compute_list, uniform_set_cache->get_cache(shader, 1, u_dest_depth), 1);
+
+ RD::get_singleton()->compute_list_set_push_constant(compute_list, &push_constant, sizeof(ResolvePushConstant));
+
+ RD::get_singleton()->compute_list_dispatch_threads(compute_list, p_screen_size.x, p_screen_size.y, 1);
+
+ RD::get_singleton()->compute_list_end(p_barrier);
+}
diff --git a/servers/rendering/renderer_rd/effects/resolve.h b/servers/rendering/renderer_rd/effects/resolve.h
new file mode 100644
index 0000000000..d4b24a610f
--- /dev/null
+++ b/servers/rendering/renderer_rd/effects/resolve.h
@@ -0,0 +1,74 @@
+/*************************************************************************/
+/* resolve.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifndef RESOLVE_RD_H
+#define RESOLVE_RD_H
+
+#include "servers/rendering/renderer_rd/pipeline_cache_rd.h"
+#include "servers/rendering/renderer_rd/shaders/effects/resolve.glsl.gen.h"
+#include "servers/rendering/renderer_scene_render.h"
+
+#include "servers/rendering_server.h"
+
+namespace RendererRD {
+
+class Resolve {
+private:
+ struct ResolvePushConstant {
+ int32_t screen_size[2];
+ int32_t samples;
+ uint32_t pad;
+ };
+
+ enum ResolveMode {
+ RESOLVE_MODE_GI,
+ RESOLVE_MODE_GI_VOXEL_GI,
+ RESOLVE_MODE_DEPTH,
+ RESOLVE_MODE_MAX
+ };
+
+ struct ResolveShader {
+ ResolvePushConstant push_constant;
+ ResolveShaderRD shader;
+ RID shader_version;
+ RID pipelines[RESOLVE_MODE_MAX]; //3 quality levels
+ } resolve;
+
+public:
+ Resolve();
+ ~Resolve();
+
+ void resolve_gi(RID p_source_depth, RID p_source_normal_roughness, RID p_source_voxel_gi, RID p_dest_depth, RID p_dest_normal_roughness, RID p_dest_voxel_gi, Vector2i p_screen_size, int p_samples, uint32_t p_barrier = RD::BARRIER_MASK_ALL);
+ void resolve_depth(RID p_source_depth, RID p_dest_depth, Vector2i p_screen_size, int p_samples, uint32_t p_barrier = RD::BARRIER_MASK_ALL);
+};
+
+} // namespace RendererRD
+
+#endif // !RESOLVE_RD_H
diff --git a/servers/rendering/renderer_rd/effects_rd.cpp b/servers/rendering/renderer_rd/effects_rd.cpp
index 774745abdc..4c542fa2e2 100644
--- a/servers/rendering/renderer_rd/effects_rd.cpp
+++ b/servers/rendering/renderer_rd/effects_rd.cpp
@@ -252,6 +252,35 @@ void EffectsRD::fsr_upscale(RID p_source_rd_texture, RID p_secondary_texture, RI
RD::get_singleton()->compute_list_end(compute_list);
}
+void EffectsRD::taa_resolve(RID p_frame, RID p_temp, RID p_depth, RID p_velocity, RID p_prev_velocity, RID p_history, Size2 p_resolution, float p_z_near, float p_z_far) {
+ UniformSetCacheRD *uniform_set_cache = UniformSetCacheRD::get_singleton();
+ ERR_FAIL_NULL(uniform_set_cache);
+
+ RID shader = TAA_resolve.shader.version_get_shader(TAA_resolve.shader_version, 0);
+ ERR_FAIL_COND(shader.is_null());
+
+ memset(&TAA_resolve.push_constant, 0, sizeof(TAAResolvePushConstant));
+ TAA_resolve.push_constant.resolution_width = p_resolution.width;
+ TAA_resolve.push_constant.resolution_height = p_resolution.height;
+ TAA_resolve.push_constant.disocclusion_threshold = 0.025f;
+ TAA_resolve.push_constant.disocclusion_scale = 10.0f;
+
+ RD::ComputeListID compute_list = RD::get_singleton()->compute_list_begin();
+ RD::get_singleton()->compute_list_bind_compute_pipeline(compute_list, TAA_resolve.pipeline);
+
+ RD::Uniform u_frame_source(RD::UNIFORM_TYPE_IMAGE, 0, { p_frame });
+ RD::Uniform u_depth(RD::UNIFORM_TYPE_SAMPLER_WITH_TEXTURE, 1, { default_sampler, p_depth });
+ RD::Uniform u_velocity(RD::UNIFORM_TYPE_IMAGE, 2, { p_velocity });
+ RD::Uniform u_prev_velocity(RD::UNIFORM_TYPE_IMAGE, 3, { p_prev_velocity });
+ RD::Uniform u_history(RD::UNIFORM_TYPE_SAMPLER_WITH_TEXTURE, 4, { default_sampler, p_history });
+ RD::Uniform u_frame_dest(RD::UNIFORM_TYPE_IMAGE, 5, { p_temp });
+
+ RD::get_singleton()->compute_list_bind_uniform_set(compute_list, uniform_set_cache->get_cache(shader, 0, u_frame_source, u_depth, u_velocity, u_prev_velocity, u_history, u_frame_dest), 0);
+ RD::get_singleton()->compute_list_set_push_constant(compute_list, &TAA_resolve.push_constant, sizeof(TAAResolvePushConstant));
+ RD::get_singleton()->compute_list_dispatch_threads(compute_list, p_resolution.width, p_resolution.height, 1);
+ RD::get_singleton()->compute_list_end();
+}
+
void EffectsRD::screen_space_reflection(RID p_diffuse, RID p_normal_roughness, RenderingServer::EnvironmentSSRRoughnessQuality p_roughness_quality, RID p_blur_radius, RID p_blur_radius2, RID p_metallic, const Color &p_metallic_mask, RID p_depth, RID p_scale_depth, RID p_scale_normal, RID p_output, RID p_output_blur, const Size2i &p_screen_size, int p_max_steps, float p_fade_in, float p_fade_out, float p_tolerance, const CameraMatrix &p_camera) {
RD::ComputeListID compute_list = RD::get_singleton()->compute_list_begin();
@@ -415,7 +444,7 @@ void EffectsRD::sub_surface_scattering(RID p_diffuse, RID p_diffuse2, RID p_dept
}
void EffectsRD::merge_specular(RID p_dest_framebuffer, RID p_specular, RID p_base, RID p_reflection) {
- RD::DrawListID draw_list = RD::get_singleton()->draw_list_begin(p_dest_framebuffer, RD::INITIAL_ACTION_KEEP, RD::FINAL_ACTION_READ, RD::INITIAL_ACTION_KEEP, RD::FINAL_ACTION_DISCARD, Vector<Color>());
+ RD::DrawListID draw_list = RD::get_singleton()->draw_list_begin(p_dest_framebuffer, RD::INITIAL_ACTION_KEEP, RD::FINAL_ACTION_READ, RD::INITIAL_ACTION_KEEP, RD::FINAL_ACTION_READ, Vector<Color>());
if (p_reflection.is_valid()) {
if (p_base.is_valid()) {
@@ -1367,46 +1396,6 @@ void EffectsRD::cubemap_filter_raster(RID p_source_cubemap, RID p_dest_framebuff
RD::get_singleton()->draw_list_end();
}
-void EffectsRD::resolve_gi(RID p_source_depth, RID p_source_normal_roughness, RID p_source_voxel_gi, RID p_dest_depth, RID p_dest_normal_roughness, RID p_dest_voxel_gi, Vector2i p_screen_size, int p_samples, uint32_t p_barrier) {
- ResolvePushConstant push_constant;
- push_constant.screen_size[0] = p_screen_size.x;
- push_constant.screen_size[1] = p_screen_size.y;
- push_constant.samples = p_samples;
-
- RD::ComputeListID compute_list = RD::get_singleton()->compute_list_begin();
- RD::get_singleton()->compute_list_bind_compute_pipeline(compute_list, resolve.pipelines[p_source_voxel_gi.is_valid() ? RESOLVE_MODE_GI_VOXEL_GI : RESOLVE_MODE_GI]);
- RD::get_singleton()->compute_list_bind_uniform_set(compute_list, _get_compute_uniform_set_from_texture_pair(p_source_depth, p_source_normal_roughness), 0);
- RD::get_singleton()->compute_list_bind_uniform_set(compute_list, _get_compute_uniform_set_from_image_pair(p_dest_depth, p_dest_normal_roughness), 1);
- if (p_source_voxel_gi.is_valid()) {
- RD::get_singleton()->compute_list_bind_uniform_set(compute_list, _get_compute_uniform_set_from_texture(p_source_voxel_gi), 2);
- RD::get_singleton()->compute_list_bind_uniform_set(compute_list, _get_uniform_set_from_image(p_dest_voxel_gi), 3);
- }
-
- RD::get_singleton()->compute_list_set_push_constant(compute_list, &push_constant, sizeof(ResolvePushConstant));
-
- RD::get_singleton()->compute_list_dispatch_threads(compute_list, p_screen_size.x, p_screen_size.y, 1);
-
- RD::get_singleton()->compute_list_end(p_barrier);
-}
-
-void EffectsRD::resolve_depth(RID p_source_depth, RID p_dest_depth, Vector2i p_screen_size, int p_samples, uint32_t p_barrier) {
- ResolvePushConstant push_constant;
- push_constant.screen_size[0] = p_screen_size.x;
- push_constant.screen_size[1] = p_screen_size.y;
- push_constant.samples = p_samples;
-
- RD::ComputeListID compute_list = RD::get_singleton()->compute_list_begin();
- RD::get_singleton()->compute_list_bind_compute_pipeline(compute_list, resolve.pipelines[RESOLVE_MODE_DEPTH]);
- RD::get_singleton()->compute_list_bind_uniform_set(compute_list, _get_compute_uniform_set_from_texture(p_source_depth), 0);
- RD::get_singleton()->compute_list_bind_uniform_set(compute_list, _get_uniform_set_from_image(p_dest_depth), 1);
-
- RD::get_singleton()->compute_list_set_push_constant(compute_list, &push_constant, sizeof(ResolvePushConstant));
-
- RD::get_singleton()->compute_list_dispatch_threads(compute_list, p_screen_size.x, p_screen_size.y, 1);
-
- RD::get_singleton()->compute_list_end(p_barrier);
-}
-
void EffectsRD::sort_buffer(RID p_uniform_set, int p_size) {
Sort::PushConstant push_constant;
push_constant.total_elements = p_size;
@@ -1980,21 +1969,6 @@ EffectsRD::EffectsRD(bool p_prefer_raster_effects) {
ssil.pipelines[i] = RD::get_singleton()->compute_pipeline_create(ssil.interleave_shader.version_get_shader(ssil.interleave_shader_version, i - SSIL_INTERLEAVE));
}
}
-
- {
- Vector<String> resolve_modes;
- resolve_modes.push_back("\n#define MODE_RESOLVE_GI\n");
- resolve_modes.push_back("\n#define MODE_RESOLVE_GI\n#define VOXEL_GI_RESOLVE\n");
- resolve_modes.push_back("\n#define MODE_RESOLVE_DEPTH\n");
-
- resolve.shader.initialize(resolve_modes);
-
- resolve.shader_version = resolve.shader.version_create();
-
- for (int i = 0; i < RESOLVE_MODE_MAX; i++) {
- resolve.pipelines[i] = RD::get_singleton()->compute_pipeline_create(resolve.shader.version_get_shader(resolve.shader_version, i));
- }
- }
}
{
@@ -2012,6 +1986,14 @@ EffectsRD::EffectsRD(bool p_prefer_raster_effects) {
}
}
+ {
+ Vector<String> taa_modes;
+ taa_modes.push_back("\n#define MODE_TAA_RESOLVE");
+ TAA_resolve.shader.initialize(taa_modes);
+ TAA_resolve.shader_version = TAA_resolve.shader.version_create();
+ TAA_resolve.pipeline = RD::get_singleton()->compute_pipeline_create(TAA_resolve.shader.version_get_shader(TAA_resolve.shader_version, 0));
+ }
+
RD::SamplerState sampler;
sampler.mag_filter = RD::SAMPLER_FILTER_LINEAR;
sampler.min_filter = RD::SAMPLER_FILTER_LINEAR;
@@ -2060,6 +2042,7 @@ EffectsRD::~EffectsRD() {
RD::get_singleton()->free(filter.coefficient_buffer);
FSR_upscale.shader.version_free(FSR_upscale.shader_version);
+ TAA_resolve.shader.version_free(TAA_resolve.shader_version);
if (prefer_raster_effects) {
luminance_reduce_raster.shader.version_free(luminance_reduce_raster.shader_version);
roughness.raster_shader.version_free(roughness.shader_version);
@@ -2072,7 +2055,6 @@ EffectsRD::~EffectsRD() {
filter.compute_shader.version_free(filter.shader_version);
}
if (!prefer_raster_effects) {
- resolve.shader.version_free(resolve.shader_version);
specular_merge.shader.version_free(specular_merge.shader_version);
ss_effects.downsample_shader.version_free(ss_effects.downsample_shader_version);
ssao.blur_shader.version_free(ssao.blur_shader_version);
diff --git a/servers/rendering/renderer_rd/effects_rd.h b/servers/rendering/renderer_rd/effects_rd.h
index 1963935236..af4ed5a6ae 100644
--- a/servers/rendering/renderer_rd/effects_rd.h
+++ b/servers/rendering/renderer_rd/effects_rd.h
@@ -43,7 +43,6 @@
#include "servers/rendering/renderer_rd/shaders/fsr_upscale.glsl.gen.h"
#include "servers/rendering/renderer_rd/shaders/luminance_reduce.glsl.gen.h"
#include "servers/rendering/renderer_rd/shaders/luminance_reduce_raster.glsl.gen.h"
-#include "servers/rendering/renderer_rd/shaders/resolve.glsl.gen.h"
#include "servers/rendering/renderer_rd/shaders/roughness_limiter.glsl.gen.h"
#include "servers/rendering/renderer_rd/shaders/screen_space_reflection.glsl.gen.h"
#include "servers/rendering/renderer_rd/shaders/screen_space_reflection_filter.glsl.gen.h"
@@ -60,6 +59,7 @@
#include "servers/rendering/renderer_rd/shaders/ssil_importance_map.glsl.gen.h"
#include "servers/rendering/renderer_rd/shaders/ssil_interleave.glsl.gen.h"
#include "servers/rendering/renderer_rd/shaders/subsurface_scattering.glsl.gen.h"
+#include "servers/rendering/renderer_rd/shaders/taa_resolve.glsl.gen.h"
#include "servers/rendering/renderer_scene_render.h"
#include "servers/rendering_server.h"
@@ -90,6 +90,20 @@ private:
RID pipeline;
} FSR_upscale;
+ struct TAAResolvePushConstant {
+ float resolution_width;
+ float resolution_height;
+ float disocclusion_threshold;
+ float disocclusion_scale;
+ };
+
+ struct TAAResolve {
+ TAAResolvePushConstant push_constant;
+ TaaResolveShaderRD shader;
+ RID shader_version;
+ RID pipeline;
+ } TAA_resolve;
+
struct CubemapRoughnessPushConstant {
uint32_t face_id;
uint32_t sample_count;
@@ -564,26 +578,6 @@ private:
RID pipelines[3]; //3 quality levels
} sss;
- struct ResolvePushConstant {
- int32_t screen_size[2];
- int32_t samples;
- uint32_t pad;
- };
-
- enum ResolveMode {
- RESOLVE_MODE_GI,
- RESOLVE_MODE_GI_VOXEL_GI,
- RESOLVE_MODE_DEPTH,
- RESOLVE_MODE_MAX
- };
-
- struct Resolve {
- ResolvePushConstant push_constant;
- ResolveShaderRD shader;
- RID shader_version;
- RID pipelines[RESOLVE_MODE_MAX]; //3 quality levels
- } resolve;
-
enum SortMode {
SORT_MODE_BLOCK,
SORT_MODE_STEP,
@@ -654,6 +648,7 @@ public:
bool get_prefer_raster_effects();
void fsr_upscale(RID p_source_rd_texture, RID p_secondary_texture, RID p_destination_texture, const Size2i &p_internal_size, const Size2i &p_size, float p_fsr_upscale_sharpness);
+ void taa_resolve(RID p_frame, RID p_temp, RID p_depth, RID p_velocity, RID p_prev_velocity, RID p_history, Size2 p_resolution, float p_z_near, float p_z_far);
void cubemap_roughness(RID p_source_rd_texture, RID p_dest_texture, uint32_t p_face_id, uint32_t p_sample_count, float p_roughness, float p_size);
void cubemap_roughness_raster(RID p_source_rd_texture, RID p_dest_framebuffer, uint32_t p_face_id, uint32_t p_sample_count, float p_roughness, float p_size);
@@ -717,9 +712,6 @@ public:
void merge_specular(RID p_dest_framebuffer, RID p_specular, RID p_base, RID p_reflection);
void sub_surface_scattering(RID p_diffuse, RID p_diffuse2, RID p_depth, const CameraMatrix &p_camera, const Size2i &p_screen_size, float p_scale, float p_depth_scale, RS::SubSurfaceScatteringQuality p_quality);
- void resolve_gi(RID p_source_depth, RID p_source_normal_roughness, RID p_source_voxel_gi, RID p_dest_depth, RID p_dest_normal_roughness, RID p_dest_voxel_gi, Vector2i p_screen_size, int p_samples, uint32_t p_barrier = RD::BARRIER_MASK_ALL);
- void resolve_depth(RID p_source_depth, RID p_dest_depth, Vector2i p_screen_size, int p_samples, uint32_t p_barrier = RD::BARRIER_MASK_ALL);
-
void sort_buffer(RID p_uniform_set, int p_size);
EffectsRD(bool p_prefer_raster_effects);
diff --git a/servers/rendering/renderer_rd/environment/SCsub b/servers/rendering/renderer_rd/environment/SCsub
new file mode 100644
index 0000000000..86681f9c74
--- /dev/null
+++ b/servers/rendering/renderer_rd/environment/SCsub
@@ -0,0 +1,5 @@
+#!/usr/bin/env python
+
+Import("env")
+
+env.add_source_files(env.servers_sources, "*.cpp")
diff --git a/servers/rendering/renderer_rd/renderer_scene_gi_rd.cpp b/servers/rendering/renderer_rd/environment/gi.cpp
index 7aede6bb48..f3be4a7085 100644
--- a/servers/rendering/renderer_rd/renderer_scene_gi_rd.cpp
+++ b/servers/rendering/renderer_rd/environment/gi.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* renderer_scene_gi_rd.cpp */
+/* gi.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,20 +28,365 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "renderer_scene_gi_rd.h"
+#include "gi.h"
#include "core/config/project_settings.h"
+#include "servers/rendering/renderer_rd/renderer_compositor_rd.h"
#include "servers/rendering/renderer_rd/renderer_scene_render_rd.h"
+#include "servers/rendering/renderer_rd/renderer_storage_rd.h"
#include "servers/rendering/renderer_rd/storage_rd/material_storage.h"
#include "servers/rendering/renderer_rd/storage_rd/texture_storage.h"
#include "servers/rendering/rendering_server_default.h"
-const Vector3i RendererSceneGIRD::SDFGI::Cascade::DIRTY_ALL = Vector3i(0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF);
+using namespace RendererRD;
+
+const Vector3i GI::SDFGI::Cascade::DIRTY_ALL = Vector3i(0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF);
+
+GI *GI::singleton = nullptr;
+
+////////////////////////////////////////////////////////////////////////////////
+// VOXEL GI STORAGE
+
+RID GI::voxel_gi_allocate() {
+ return voxel_gi_owner.allocate_rid();
+}
+
+void GI::voxel_gi_free(RID p_voxel_gi) {
+ voxel_gi_allocate_data(p_voxel_gi, Transform3D(), AABB(), Vector3i(), Vector<uint8_t>(), Vector<uint8_t>(), Vector<uint8_t>(), Vector<int>()); //deallocate
+ VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
+ voxel_gi->dependency.deleted_notify(p_voxel_gi);
+ voxel_gi_owner.free(p_voxel_gi);
+}
+
+void GI::voxel_gi_initialize(RID p_voxel_gi) {
+ voxel_gi_owner.initialize_rid(p_voxel_gi, VoxelGI());
+}
+
+void GI::voxel_gi_allocate_data(RID p_voxel_gi, const Transform3D &p_to_cell_xform, const AABB &p_aabb, const Vector3i &p_octree_size, const Vector<uint8_t> &p_octree_cells, const Vector<uint8_t> &p_data_cells, const Vector<uint8_t> &p_distance_field, const Vector<int> &p_level_counts) {
+ VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
+ ERR_FAIL_COND(!voxel_gi);
+
+ if (voxel_gi->octree_buffer.is_valid()) {
+ RD::get_singleton()->free(voxel_gi->octree_buffer);
+ RD::get_singleton()->free(voxel_gi->data_buffer);
+ if (voxel_gi->sdf_texture.is_valid()) {
+ RD::get_singleton()->free(voxel_gi->sdf_texture);
+ }
+
+ voxel_gi->sdf_texture = RID();
+ voxel_gi->octree_buffer = RID();
+ voxel_gi->data_buffer = RID();
+ voxel_gi->octree_buffer_size = 0;
+ voxel_gi->data_buffer_size = 0;
+ voxel_gi->cell_count = 0;
+ }
+
+ voxel_gi->to_cell_xform = p_to_cell_xform;
+ voxel_gi->bounds = p_aabb;
+ voxel_gi->octree_size = p_octree_size;
+ voxel_gi->level_counts = p_level_counts;
+
+ if (p_octree_cells.size()) {
+ ERR_FAIL_COND(p_octree_cells.size() % 32 != 0); //cells size must be a multiple of 32
+
+ uint32_t cell_count = p_octree_cells.size() / 32;
+
+ ERR_FAIL_COND(p_data_cells.size() != (int)cell_count * 16); //see that data size matches
+
+ voxel_gi->cell_count = cell_count;
+ voxel_gi->octree_buffer = RD::get_singleton()->storage_buffer_create(p_octree_cells.size(), p_octree_cells);
+ voxel_gi->octree_buffer_size = p_octree_cells.size();
+ voxel_gi->data_buffer = RD::get_singleton()->storage_buffer_create(p_data_cells.size(), p_data_cells);
+ voxel_gi->data_buffer_size = p_data_cells.size();
+
+ if (p_distance_field.size()) {
+ RD::TextureFormat tf;
+ tf.format = RD::DATA_FORMAT_R8_UNORM;
+ tf.width = voxel_gi->octree_size.x;
+ tf.height = voxel_gi->octree_size.y;
+ tf.depth = voxel_gi->octree_size.z;
+ tf.texture_type = RD::TEXTURE_TYPE_3D;
+ tf.usage_bits = RD::TEXTURE_USAGE_SAMPLING_BIT | RD::TEXTURE_USAGE_CAN_UPDATE_BIT | RD::TEXTURE_USAGE_CAN_COPY_FROM_BIT;
+ Vector<Vector<uint8_t>> s;
+ s.push_back(p_distance_field);
+ voxel_gi->sdf_texture = RD::get_singleton()->texture_create(tf, RD::TextureView(), s);
+ }
+#if 0
+ {
+ RD::TextureFormat tf;
+ tf.format = RD::DATA_FORMAT_R8_UNORM;
+ tf.width = voxel_gi->octree_size.x;
+ tf.height = voxel_gi->octree_size.y;
+ tf.depth = voxel_gi->octree_size.z;
+ tf.type = RD::TEXTURE_TYPE_3D;
+ tf.usage_bits = RD::TEXTURE_USAGE_SAMPLING_BIT | RD::TEXTURE_USAGE_STORAGE_BIT | RD::TEXTURE_USAGE_CAN_COPY_TO_BIT;
+ tf.shareable_formats.push_back(RD::DATA_FORMAT_R8_UNORM);
+ tf.shareable_formats.push_back(RD::DATA_FORMAT_R8_UINT);
+ voxel_gi->sdf_texture = RD::get_singleton()->texture_create(tf, RD::TextureView());
+ }
+ RID shared_tex;
+ {
+ RD::TextureView tv;
+ tv.format_override = RD::DATA_FORMAT_R8_UINT;
+ shared_tex = RD::get_singleton()->texture_create_shared(tv, voxel_gi->sdf_texture);
+ }
+ //update SDF texture
+ Vector<RD::Uniform> uniforms;
+ {
+ RD::Uniform u;
+ u.uniform_type = RD::UNIFORM_TYPE_STORAGE_BUFFER;
+ u.binding = 1;
+ u.append_id(voxel_gi->octree_buffer);
+ uniforms.push_back(u);
+ }
+ {
+ RD::Uniform u;
+ u.uniform_type = RD::UNIFORM_TYPE_STORAGE_BUFFER;
+ u.binding = 2;
+ u.append_id(voxel_gi->data_buffer);
+ uniforms.push_back(u);
+ }
+ {
+ RD::Uniform u;
+ u.uniform_type = RD::UNIFORM_TYPE_IMAGE;
+ u.binding = 3;
+ u.append_id(shared_tex);
+ uniforms.push_back(u);
+ }
+
+ RID uniform_set = RD::get_singleton()->uniform_set_create(uniforms, voxel_gi_sdf_shader_version_shader, 0);
+
+ {
+ uint32_t push_constant[4] = { 0, 0, 0, 0 };
+
+ for (int i = 0; i < voxel_gi->level_counts.size() - 1; i++) {
+ push_constant[0] += voxel_gi->level_counts[i];
+ }
+ push_constant[1] = push_constant[0] + voxel_gi->level_counts[voxel_gi->level_counts.size() - 1];
+
+ print_line("offset: " + itos(push_constant[0]));
+ print_line("size: " + itos(push_constant[1]));
+ //create SDF
+ RD::ComputeListID compute_list = RD::get_singleton()->compute_list_begin();
+ RD::get_singleton()->compute_list_bind_compute_pipeline(compute_list, voxel_gi_sdf_shader_pipeline);
+ RD::get_singleton()->compute_list_bind_uniform_set(compute_list, uniform_set, 0);
+ RD::get_singleton()->compute_list_set_push_constant(compute_list, push_constant, sizeof(uint32_t) * 4);
+ RD::get_singleton()->compute_list_dispatch(compute_list, voxel_gi->octree_size.x / 4, voxel_gi->octree_size.y / 4, voxel_gi->octree_size.z / 4);
+ RD::get_singleton()->compute_list_end();
+ }
+
+ RD::get_singleton()->free(uniform_set);
+ RD::get_singleton()->free(shared_tex);
+ }
+#endif
+ }
+
+ voxel_gi->version++;
+ voxel_gi->data_version++;
+
+ voxel_gi->dependency.changed_notify(RendererStorage::DEPENDENCY_CHANGED_AABB);
+}
+
+AABB GI::voxel_gi_get_bounds(RID p_voxel_gi) const {
+ VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
+ ERR_FAIL_COND_V(!voxel_gi, AABB());
+
+ return voxel_gi->bounds;
+}
+
+Vector3i GI::voxel_gi_get_octree_size(RID p_voxel_gi) const {
+ VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
+ ERR_FAIL_COND_V(!voxel_gi, Vector3i());
+ return voxel_gi->octree_size;
+}
+
+Vector<uint8_t> GI::voxel_gi_get_octree_cells(RID p_voxel_gi) const {
+ VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
+ ERR_FAIL_COND_V(!voxel_gi, Vector<uint8_t>());
+
+ if (voxel_gi->octree_buffer.is_valid()) {
+ return RD::get_singleton()->buffer_get_data(voxel_gi->octree_buffer);
+ }
+ return Vector<uint8_t>();
+}
+
+Vector<uint8_t> GI::voxel_gi_get_data_cells(RID p_voxel_gi) const {
+ VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
+ ERR_FAIL_COND_V(!voxel_gi, Vector<uint8_t>());
+
+ if (voxel_gi->data_buffer.is_valid()) {
+ return RD::get_singleton()->buffer_get_data(voxel_gi->data_buffer);
+ }
+ return Vector<uint8_t>();
+}
+
+Vector<uint8_t> GI::voxel_gi_get_distance_field(RID p_voxel_gi) const {
+ VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
+ ERR_FAIL_COND_V(!voxel_gi, Vector<uint8_t>());
+
+ if (voxel_gi->data_buffer.is_valid()) {
+ return RD::get_singleton()->texture_get_data(voxel_gi->sdf_texture, 0);
+ }
+ return Vector<uint8_t>();
+}
+
+Vector<int> GI::voxel_gi_get_level_counts(RID p_voxel_gi) const {
+ VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
+ ERR_FAIL_COND_V(!voxel_gi, Vector<int>());
+
+ return voxel_gi->level_counts;
+}
+
+Transform3D GI::voxel_gi_get_to_cell_xform(RID p_voxel_gi) const {
+ VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
+ ERR_FAIL_COND_V(!voxel_gi, Transform3D());
+
+ return voxel_gi->to_cell_xform;
+}
+
+void GI::voxel_gi_set_dynamic_range(RID p_voxel_gi, float p_range) {
+ VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
+ ERR_FAIL_COND(!voxel_gi);
+
+ voxel_gi->dynamic_range = p_range;
+ voxel_gi->version++;
+}
+
+float GI::voxel_gi_get_dynamic_range(RID p_voxel_gi) const {
+ VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
+ ERR_FAIL_COND_V(!voxel_gi, 0);
+
+ return voxel_gi->dynamic_range;
+}
+
+void GI::voxel_gi_set_propagation(RID p_voxel_gi, float p_range) {
+ VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
+ ERR_FAIL_COND(!voxel_gi);
+
+ voxel_gi->propagation = p_range;
+ voxel_gi->version++;
+}
+
+float GI::voxel_gi_get_propagation(RID p_voxel_gi) const {
+ VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
+ ERR_FAIL_COND_V(!voxel_gi, 0);
+ return voxel_gi->propagation;
+}
+
+void GI::voxel_gi_set_energy(RID p_voxel_gi, float p_energy) {
+ VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
+ ERR_FAIL_COND(!voxel_gi);
+
+ voxel_gi->energy = p_energy;
+}
+
+float GI::voxel_gi_get_energy(RID p_voxel_gi) const {
+ VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
+ ERR_FAIL_COND_V(!voxel_gi, 0);
+ return voxel_gi->energy;
+}
+
+void GI::voxel_gi_set_bias(RID p_voxel_gi, float p_bias) {
+ VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
+ ERR_FAIL_COND(!voxel_gi);
+
+ voxel_gi->bias = p_bias;
+}
+
+float GI::voxel_gi_get_bias(RID p_voxel_gi) const {
+ VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
+ ERR_FAIL_COND_V(!voxel_gi, 0);
+ return voxel_gi->bias;
+}
+
+void GI::voxel_gi_set_normal_bias(RID p_voxel_gi, float p_normal_bias) {
+ VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
+ ERR_FAIL_COND(!voxel_gi);
+
+ voxel_gi->normal_bias = p_normal_bias;
+}
+
+float GI::voxel_gi_get_normal_bias(RID p_voxel_gi) const {
+ VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
+ ERR_FAIL_COND_V(!voxel_gi, 0);
+ return voxel_gi->normal_bias;
+}
+
+void GI::voxel_gi_set_anisotropy_strength(RID p_voxel_gi, float p_strength) {
+ VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
+ ERR_FAIL_COND(!voxel_gi);
+
+ voxel_gi->anisotropy_strength = p_strength;
+}
+
+float GI::voxel_gi_get_anisotropy_strength(RID p_voxel_gi) const {
+ VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
+ ERR_FAIL_COND_V(!voxel_gi, 0);
+ return voxel_gi->anisotropy_strength;
+}
+
+void GI::voxel_gi_set_interior(RID p_voxel_gi, bool p_enable) {
+ VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
+ ERR_FAIL_COND(!voxel_gi);
+
+ voxel_gi->interior = p_enable;
+}
+
+void GI::voxel_gi_set_use_two_bounces(RID p_voxel_gi, bool p_enable) {
+ VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
+ ERR_FAIL_COND(!voxel_gi);
+
+ voxel_gi->use_two_bounces = p_enable;
+ voxel_gi->version++;
+}
+
+bool GI::voxel_gi_is_using_two_bounces(RID p_voxel_gi) const {
+ VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
+ ERR_FAIL_COND_V(!voxel_gi, false);
+ return voxel_gi->use_two_bounces;
+}
+
+bool GI::voxel_gi_is_interior(RID p_voxel_gi) const {
+ VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
+ ERR_FAIL_COND_V(!voxel_gi, 0);
+ return voxel_gi->interior;
+}
+
+uint32_t GI::voxel_gi_get_version(RID p_voxel_gi) const {
+ VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
+ ERR_FAIL_COND_V(!voxel_gi, 0);
+ return voxel_gi->version;
+}
+
+uint32_t GI::voxel_gi_get_data_version(RID p_voxel_gi) {
+ VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
+ ERR_FAIL_COND_V(!voxel_gi, 0);
+ return voxel_gi->data_version;
+}
+
+RID GI::voxel_gi_get_octree_buffer(RID p_voxel_gi) const {
+ VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
+ ERR_FAIL_COND_V(!voxel_gi, RID());
+ return voxel_gi->octree_buffer;
+}
+
+RID GI::voxel_gi_get_data_buffer(RID p_voxel_gi) const {
+ VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
+ ERR_FAIL_COND_V(!voxel_gi, RID());
+ return voxel_gi->data_buffer;
+}
+
+RID GI::voxel_gi_get_sdf_texture(RID p_voxel_gi) {
+ VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
+ ERR_FAIL_COND_V(!voxel_gi, RID());
+
+ return voxel_gi->sdf_texture;
+}
////////////////////////////////////////////////////////////////////////////////
// SDFGI
-void RendererSceneGIRD::SDFGI::create(RendererSceneEnvironmentRD *p_env, const Vector3 &p_world_position, uint32_t p_requested_history_size, RendererSceneGIRD *p_gi) {
+void GI::SDFGI::create(RendererSceneEnvironmentRD *p_env, const Vector3 &p_world_position, uint32_t p_requested_history_size, GI *p_gi) {
RendererRD::TextureStorage *texture_storage = RendererRD::TextureStorage::get_singleton();
RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
@@ -755,7 +1100,7 @@ void RendererSceneGIRD::SDFGI::create(RendererSceneEnvironmentRD *p_env, const V
reads_sky = p_env->sdfgi_read_sky_light;
}
-void RendererSceneGIRD::SDFGI::erase() {
+void GI::SDFGI::erase() {
for (uint32_t i = 0; i < cascades.size(); i++) {
const SDFGI::Cascade &c = cascades[i];
RD::get_singleton()->free(c.light_data);
@@ -791,9 +1136,26 @@ void RendererSceneGIRD::SDFGI::erase() {
RD::get_singleton()->free(ambient_texture);
RD::get_singleton()->free(cascades_ubo);
+
+ for (uint32_t v = 0; v < RendererSceneRender::MAX_RENDER_VIEWS; v++) {
+ if (RD::get_singleton()->uniform_set_is_valid(debug_uniform_set[v])) {
+ RD::get_singleton()->free(debug_uniform_set[v]);
+ }
+ debug_uniform_set[v] = RID();
+ }
+
+ if (RD::get_singleton()->uniform_set_is_valid(debug_probes_uniform_set)) {
+ RD::get_singleton()->free(debug_probes_uniform_set);
+ }
+ debug_probes_uniform_set = RID();
+
+ if (debug_probes_scene_data_ubo.is_valid()) {
+ RD::get_singleton()->free(debug_probes_scene_data_ubo);
+ debug_probes_scene_data_ubo = RID();
+ }
}
-void RendererSceneGIRD::SDFGI::update(RendererSceneEnvironmentRD *p_env, const Vector3 &p_world_position) {
+void GI::SDFGI::update(RendererSceneEnvironmentRD *p_env, const Vector3 &p_world_position) {
bounce_feedback = p_env->sdfgi_bounce_feedback;
energy = p_env->sdfgi_energy;
normal_bias = p_env->sdfgi_normal_bias;
@@ -851,7 +1213,7 @@ void RendererSceneGIRD::SDFGI::update(RendererSceneEnvironmentRD *p_env, const V
}
}
-void RendererSceneGIRD::SDFGI::update_light() {
+void GI::SDFGI::update_light() {
RD::get_singleton()->draw_command_begin_label("SDFGI Update dynamic Light");
/* Update dynamic light */
@@ -898,7 +1260,7 @@ void RendererSceneGIRD::SDFGI::update_light() {
RD::get_singleton()->draw_command_end_label();
}
-void RendererSceneGIRD::SDFGI::update_probes(RendererSceneEnvironmentRD *p_env, RendererSceneSkyRD::Sky *p_sky) {
+void GI::SDFGI::update_probes(RendererSceneEnvironmentRD *p_env, RendererSceneSkyRD::Sky *p_sky) {
RD::get_singleton()->draw_command_begin_label("SDFGI Update Probes");
SDFGIShader::IntegratePushConstant push_constant;
@@ -990,7 +1352,7 @@ void RendererSceneGIRD::SDFGI::update_probes(RendererSceneEnvironmentRD *p_env,
RD::get_singleton()->draw_command_end_label();
}
-void RendererSceneGIRD::SDFGI::store_probes() {
+void GI::SDFGI::store_probes() {
RD::get_singleton()->barrier(RD::BARRIER_MASK_COMPUTE, RD::BARRIER_MASK_COMPUTE);
RD::get_singleton()->draw_command_begin_label("SDFGI Store Probes");
@@ -1035,7 +1397,7 @@ void RendererSceneGIRD::SDFGI::store_probes() {
RD::get_singleton()->draw_command_end_label();
}
-int RendererSceneGIRD::SDFGI::get_pending_region_data(int p_region, Vector3i &r_local_offset, Vector3i &r_local_size, AABB &r_bounds) const {
+int GI::SDFGI::get_pending_region_data(int p_region, Vector3i &r_local_offset, Vector3i &r_local_size, AABB &r_bounds) const {
int dirty_count = 0;
for (uint32_t i = 0; i < cascades.size(); i++) {
const SDFGI::Cascade &c = cascades[i];
@@ -1091,7 +1453,7 @@ int RendererSceneGIRD::SDFGI::get_pending_region_data(int p_region, Vector3i &r_
return -1;
}
-void RendererSceneGIRD::SDFGI::update_cascades() {
+void GI::SDFGI::update_cascades() {
//update cascades
SDFGI::Cascade::UBO cascade_data[SDFGI::MAX_CASCADES];
int32_t probe_divisor = cascade_size / SDFGI::PROBE_DIVISOR;
@@ -1112,160 +1474,177 @@ void RendererSceneGIRD::SDFGI::update_cascades() {
RD::get_singleton()->buffer_update(cascades_ubo, 0, sizeof(SDFGI::Cascade::UBO) * SDFGI::MAX_CASCADES, cascade_data, RD::BARRIER_MASK_COMPUTE);
}
-void RendererSceneGIRD::SDFGI::debug_draw(const CameraMatrix &p_projection, const Transform3D &p_transform, int p_width, int p_height, RID p_render_target, RID p_texture) {
+void GI::SDFGI::debug_draw(uint32_t p_view_count, const CameraMatrix *p_projections, const Transform3D &p_transform, int p_width, int p_height, RID p_render_target, RID p_texture, const Vector<RID> &p_texture_views) {
RendererRD::TextureStorage *texture_storage = RendererRD::TextureStorage::get_singleton();
RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
RendererRD::CopyEffects *copy_effects = RendererRD::CopyEffects::get_singleton();
- if (!debug_uniform_set.is_valid() || !RD::get_singleton()->uniform_set_is_valid(debug_uniform_set)) {
- Vector<RD::Uniform> uniforms;
- {
- RD::Uniform u;
- u.binding = 1;
- u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
- for (uint32_t i = 0; i < SDFGI::MAX_CASCADES; i++) {
- if (i < cascades.size()) {
- u.append_id(cascades[i].sdf_tex);
- } else {
- u.append_id(texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_3D_WHITE));
+ for (uint32_t v = 0; v < p_view_count; v++) {
+ if (!debug_uniform_set[v].is_valid() || !RD::get_singleton()->uniform_set_is_valid(debug_uniform_set[v])) {
+ Vector<RD::Uniform> uniforms;
+ {
+ RD::Uniform u;
+ u.binding = 1;
+ u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
+ for (uint32_t i = 0; i < SDFGI::MAX_CASCADES; i++) {
+ if (i < cascades.size()) {
+ u.append_id(cascades[i].sdf_tex);
+ } else {
+ u.append_id(texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_3D_WHITE));
+ }
}
+ uniforms.push_back(u);
}
- uniforms.push_back(u);
- }
- {
- RD::Uniform u;
- u.binding = 2;
- u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
- for (uint32_t i = 0; i < SDFGI::MAX_CASCADES; i++) {
- if (i < cascades.size()) {
- u.append_id(cascades[i].light_tex);
- } else {
- u.append_id(texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_3D_WHITE));
+ {
+ RD::Uniform u;
+ u.binding = 2;
+ u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
+ for (uint32_t i = 0; i < SDFGI::MAX_CASCADES; i++) {
+ if (i < cascades.size()) {
+ u.append_id(cascades[i].light_tex);
+ } else {
+ u.append_id(texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_3D_WHITE));
+ }
}
+ uniforms.push_back(u);
}
- uniforms.push_back(u);
- }
- {
- RD::Uniform u;
- u.binding = 3;
- u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
- for (uint32_t i = 0; i < SDFGI::MAX_CASCADES; i++) {
- if (i < cascades.size()) {
- u.append_id(cascades[i].light_aniso_0_tex);
- } else {
- u.append_id(texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_3D_WHITE));
+ {
+ RD::Uniform u;
+ u.binding = 3;
+ u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
+ for (uint32_t i = 0; i < SDFGI::MAX_CASCADES; i++) {
+ if (i < cascades.size()) {
+ u.append_id(cascades[i].light_aniso_0_tex);
+ } else {
+ u.append_id(texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_3D_WHITE));
+ }
}
+ uniforms.push_back(u);
}
- uniforms.push_back(u);
- }
- {
- RD::Uniform u;
- u.binding = 4;
- u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
- for (uint32_t i = 0; i < SDFGI::MAX_CASCADES; i++) {
- if (i < cascades.size()) {
- u.append_id(cascades[i].light_aniso_1_tex);
- } else {
- u.append_id(texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_3D_WHITE));
+ {
+ RD::Uniform u;
+ u.binding = 4;
+ u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
+ for (uint32_t i = 0; i < SDFGI::MAX_CASCADES; i++) {
+ if (i < cascades.size()) {
+ u.append_id(cascades[i].light_aniso_1_tex);
+ } else {
+ u.append_id(texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_3D_WHITE));
+ }
}
+ uniforms.push_back(u);
}
- uniforms.push_back(u);
- }
- {
- RD::Uniform u;
- u.binding = 5;
- u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
- u.append_id(occlusion_texture);
- uniforms.push_back(u);
- }
- {
- RD::Uniform u;
- u.binding = 8;
- u.uniform_type = RD::UNIFORM_TYPE_SAMPLER;
- u.append_id(material_storage->sampler_rd_get_default(RS::CANVAS_ITEM_TEXTURE_FILTER_LINEAR, RS::CANVAS_ITEM_TEXTURE_REPEAT_DISABLED));
- uniforms.push_back(u);
- }
- {
- RD::Uniform u;
- u.binding = 9;
- u.uniform_type = RD::UNIFORM_TYPE_UNIFORM_BUFFER;
- u.append_id(cascades_ubo);
- uniforms.push_back(u);
- }
- {
- RD::Uniform u;
- u.binding = 10;
- u.uniform_type = RD::UNIFORM_TYPE_IMAGE;
- u.append_id(p_texture);
- uniforms.push_back(u);
- }
- {
- RD::Uniform u;
- u.binding = 11;
- u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
- u.append_id(lightprobe_texture);
- uniforms.push_back(u);
+ {
+ RD::Uniform u;
+ u.binding = 5;
+ u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
+ u.append_id(occlusion_texture);
+ uniforms.push_back(u);
+ }
+ {
+ RD::Uniform u;
+ u.binding = 8;
+ u.uniform_type = RD::UNIFORM_TYPE_SAMPLER;
+ u.append_id(material_storage->sampler_rd_get_default(RS::CANVAS_ITEM_TEXTURE_FILTER_LINEAR, RS::CANVAS_ITEM_TEXTURE_REPEAT_DISABLED));
+ uniforms.push_back(u);
+ }
+ {
+ RD::Uniform u;
+ u.binding = 9;
+ u.uniform_type = RD::UNIFORM_TYPE_UNIFORM_BUFFER;
+ u.append_id(cascades_ubo);
+ uniforms.push_back(u);
+ }
+ {
+ RD::Uniform u;
+ u.binding = 10;
+ u.uniform_type = RD::UNIFORM_TYPE_IMAGE;
+ u.append_id(p_texture_views[v]);
+ uniforms.push_back(u);
+ }
+ {
+ RD::Uniform u;
+ u.binding = 11;
+ u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
+ u.append_id(lightprobe_texture);
+ uniforms.push_back(u);
+ }
+ debug_uniform_set[v] = RD::get_singleton()->uniform_set_create(uniforms, gi->sdfgi_shader.debug_shader_version, 0);
}
- debug_uniform_set = RD::get_singleton()->uniform_set_create(uniforms, gi->sdfgi_shader.debug_shader_version, 0);
- }
-
- RD::ComputeListID compute_list = RD::get_singleton()->compute_list_begin();
- RD::get_singleton()->compute_list_bind_compute_pipeline(compute_list, gi->sdfgi_shader.debug_pipeline);
- RD::get_singleton()->compute_list_bind_uniform_set(compute_list, debug_uniform_set, 0);
-
- SDFGIShader::DebugPushConstant push_constant;
- push_constant.grid_size[0] = cascade_size;
- push_constant.grid_size[1] = cascade_size;
- push_constant.grid_size[2] = cascade_size;
- push_constant.max_cascades = cascades.size();
- push_constant.screen_size[0] = p_width;
- push_constant.screen_size[1] = p_height;
- push_constant.probe_axis_size = probe_axis_count;
- push_constant.use_occlusion = uses_occlusion;
- push_constant.y_mult = y_mult;
- Vector2 vp_half = p_projection.get_viewport_half_extents();
- push_constant.cam_extent[0] = vp_half.x;
- push_constant.cam_extent[1] = vp_half.y;
- push_constant.cam_extent[2] = -p_projection.get_z_near();
-
- push_constant.cam_transform[0] = p_transform.basis.rows[0][0];
- push_constant.cam_transform[1] = p_transform.basis.rows[1][0];
- push_constant.cam_transform[2] = p_transform.basis.rows[2][0];
- push_constant.cam_transform[3] = 0;
- push_constant.cam_transform[4] = p_transform.basis.rows[0][1];
- push_constant.cam_transform[5] = p_transform.basis.rows[1][1];
- push_constant.cam_transform[6] = p_transform.basis.rows[2][1];
- push_constant.cam_transform[7] = 0;
- push_constant.cam_transform[8] = p_transform.basis.rows[0][2];
- push_constant.cam_transform[9] = p_transform.basis.rows[1][2];
- push_constant.cam_transform[10] = p_transform.basis.rows[2][2];
- push_constant.cam_transform[11] = 0;
- push_constant.cam_transform[12] = p_transform.origin.x;
- push_constant.cam_transform[13] = p_transform.origin.y;
- push_constant.cam_transform[14] = p_transform.origin.z;
- push_constant.cam_transform[15] = 1;
-
- RD::get_singleton()->compute_list_set_push_constant(compute_list, &push_constant, sizeof(SDFGIShader::DebugPushConstant));
-
- RD::get_singleton()->compute_list_dispatch_threads(compute_list, p_width, p_height, 1);
- RD::get_singleton()->compute_list_end();
+ RD::ComputeListID compute_list = RD::get_singleton()->compute_list_begin();
+ RD::get_singleton()->compute_list_bind_compute_pipeline(compute_list, gi->sdfgi_shader.debug_pipeline);
+ RD::get_singleton()->compute_list_bind_uniform_set(compute_list, debug_uniform_set[v], 0);
+
+ SDFGIShader::DebugPushConstant push_constant;
+ push_constant.grid_size[0] = cascade_size;
+ push_constant.grid_size[1] = cascade_size;
+ push_constant.grid_size[2] = cascade_size;
+ push_constant.max_cascades = cascades.size();
+ push_constant.screen_size[0] = p_width;
+ push_constant.screen_size[1] = p_height;
+ push_constant.probe_axis_size = probe_axis_count;
+ push_constant.use_occlusion = uses_occlusion;
+ push_constant.y_mult = y_mult;
+
+ push_constant.z_near = -p_projections[v].get_z_near();
+
+ push_constant.cam_transform[0] = p_transform.basis.rows[0][0];
+ push_constant.cam_transform[1] = p_transform.basis.rows[1][0];
+ push_constant.cam_transform[2] = p_transform.basis.rows[2][0];
+ push_constant.cam_transform[3] = 0;
+ push_constant.cam_transform[4] = p_transform.basis.rows[0][1];
+ push_constant.cam_transform[5] = p_transform.basis.rows[1][1];
+ push_constant.cam_transform[6] = p_transform.basis.rows[2][1];
+ push_constant.cam_transform[7] = 0;
+ push_constant.cam_transform[8] = p_transform.basis.rows[0][2];
+ push_constant.cam_transform[9] = p_transform.basis.rows[1][2];
+ push_constant.cam_transform[10] = p_transform.basis.rows[2][2];
+ push_constant.cam_transform[11] = 0;
+ push_constant.cam_transform[12] = p_transform.origin.x;
+ push_constant.cam_transform[13] = p_transform.origin.y;
+ push_constant.cam_transform[14] = p_transform.origin.z;
+ push_constant.cam_transform[15] = 1;
+
+ // need to properly unproject for asymmetric projection matrices in stereo..
+ CameraMatrix inv_projection = p_projections[v].inverse();
+ for (int i = 0; i < 4; i++) {
+ for (int j = 0; j < 4; j++) {
+ push_constant.inv_projection[i * 4 + j] = inv_projection.matrix[i][j];
+ }
+ }
+
+ RD::get_singleton()->compute_list_set_push_constant(compute_list, &push_constant, sizeof(SDFGIShader::DebugPushConstant));
+
+ RD::get_singleton()->compute_list_dispatch_threads(compute_list, p_width, p_height, 1);
+ RD::get_singleton()->compute_list_end();
+ }
Size2 rtsize = texture_storage->render_target_get_size(p_render_target);
- copy_effects->copy_to_fb_rect(p_texture, texture_storage->render_target_get_rd_framebuffer(p_render_target), Rect2(Vector2(), rtsize), true);
+ copy_effects->copy_to_fb_rect(p_texture, texture_storage->render_target_get_rd_framebuffer(p_render_target), Rect2(Vector2(), rtsize), true, false, false, false, RID(), p_view_count > 1);
}
-void RendererSceneGIRD::SDFGI::debug_probes(RD::DrawListID p_draw_list, RID p_framebuffer, const CameraMatrix &p_camera_with_transform) {
+void GI::SDFGI::debug_probes(RID p_framebuffer, const uint32_t p_view_count, const CameraMatrix *p_camera_with_transforms, bool p_will_continue_color, bool p_will_continue_depth) {
RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
- SDFGIShader::DebugProbesPushConstant push_constant;
+ // setup scene data
+ {
+ SDFGIShader::DebugProbesSceneData scene_data;
- for (int i = 0; i < 4; i++) {
- for (int j = 0; j < 4; j++) {
- push_constant.projection[i * 4 + j] = p_camera_with_transform.matrix[i][j];
+ if (debug_probes_scene_data_ubo.is_null()) {
+ debug_probes_scene_data_ubo = RD::get_singleton()->uniform_buffer_create(sizeof(SDFGIShader::DebugProbesSceneData));
}
+
+ for (uint32_t v = 0; v < p_view_count; v++) {
+ RendererStorageRD::store_camera(p_camera_with_transforms[v], scene_data.projection[v]);
+ }
+
+ RD::get_singleton()->buffer_update(debug_probes_scene_data_ubo, 0, sizeof(SDFGIShader::DebugProbesSceneData), &scene_data, RD::BARRIER_MASK_RASTER);
}
+ // setup push constant
+ SDFGIShader::DebugProbesPushConstant push_constant;
+
//gen spheres from strips
uint32_t band_points = 16;
push_constant.band_power = 4;
@@ -1314,14 +1693,26 @@ void RendererSceneGIRD::SDFGI::debug_probes(RD::DrawListID p_draw_list, RID p_fr
u.append_id(occlusion_texture);
uniforms.push_back(u);
}
+ {
+ RD::Uniform u;
+ u.binding = 5;
+ u.uniform_type = RD::UNIFORM_TYPE_UNIFORM_BUFFER;
+ u.append_id(debug_probes_scene_data_ubo);
+ uniforms.push_back(u);
+ }
debug_probes_uniform_set = RD::get_singleton()->uniform_set_create(uniforms, gi->sdfgi_shader.debug_probes.version_get_shader(gi->sdfgi_shader.debug_probes_shader, 0), 0);
}
- RD::get_singleton()->draw_list_bind_render_pipeline(p_draw_list, gi->sdfgi_shader.debug_probes_pipeline[SDFGIShader::PROBE_DEBUG_PROBES].get_render_pipeline(RD::INVALID_FORMAT_ID, RD::get_singleton()->framebuffer_get_format(p_framebuffer)));
- RD::get_singleton()->draw_list_bind_uniform_set(p_draw_list, debug_probes_uniform_set, 0);
- RD::get_singleton()->draw_list_set_push_constant(p_draw_list, &push_constant, sizeof(SDFGIShader::DebugProbesPushConstant));
- RD::get_singleton()->draw_list_draw(p_draw_list, false, total_probes, total_points);
+ SDFGIShader::ProbeDebugMode mode = p_view_count > 1 ? SDFGIShader::PROBE_DEBUG_PROBES_MULTIVIEW : SDFGIShader::PROBE_DEBUG_PROBES;
+
+ RD::DrawListID draw_list = RD::get_singleton()->draw_list_begin(p_framebuffer, RD::INITIAL_ACTION_CONTINUE, p_will_continue_color ? RD::FINAL_ACTION_CONTINUE : RD::FINAL_ACTION_READ, RD::INITIAL_ACTION_CONTINUE, p_will_continue_depth ? RD::FINAL_ACTION_CONTINUE : RD::FINAL_ACTION_READ);
+ RD::get_singleton()->draw_command_begin_label("Debug SDFGI");
+
+ RD::get_singleton()->draw_list_bind_render_pipeline(draw_list, gi->sdfgi_shader.debug_probes_pipeline[mode].get_render_pipeline(RD::INVALID_FORMAT_ID, RD::get_singleton()->framebuffer_get_format(p_framebuffer)));
+ RD::get_singleton()->draw_list_bind_uniform_set(draw_list, debug_probes_uniform_set, 0);
+ RD::get_singleton()->draw_list_set_push_constant(draw_list, &push_constant, sizeof(SDFGIShader::DebugProbesPushConstant));
+ RD::get_singleton()->draw_list_draw(draw_list, false, total_probes, total_points);
if (gi->sdfgi_debug_probe_dir != Vector3()) {
uint32_t cascade = 0;
@@ -1373,14 +1764,17 @@ void RendererSceneGIRD::SDFGI::debug_probes(RD::DrawListID p_draw_list, RID p_fr
uint32_t cell_count = probe_cells * 2 * probe_cells * 2 * probe_cells * 2;
- RD::get_singleton()->draw_list_bind_render_pipeline(p_draw_list, gi->sdfgi_shader.debug_probes_pipeline[SDFGIShader::PROBE_DEBUG_VISIBILITY].get_render_pipeline(RD::INVALID_FORMAT_ID, RD::get_singleton()->framebuffer_get_format(p_framebuffer)));
- RD::get_singleton()->draw_list_bind_uniform_set(p_draw_list, debug_probes_uniform_set, 0);
- RD::get_singleton()->draw_list_set_push_constant(p_draw_list, &push_constant, sizeof(SDFGIShader::DebugProbesPushConstant));
- RD::get_singleton()->draw_list_draw(p_draw_list, false, cell_count, total_points);
+ RD::get_singleton()->draw_list_bind_render_pipeline(draw_list, gi->sdfgi_shader.debug_probes_pipeline[p_view_count > 1 ? SDFGIShader::PROBE_DEBUG_VISIBILITY_MULTIVIEW : SDFGIShader::PROBE_DEBUG_VISIBILITY].get_render_pipeline(RD::INVALID_FORMAT_ID, RD::get_singleton()->framebuffer_get_format(p_framebuffer)));
+ RD::get_singleton()->draw_list_bind_uniform_set(draw_list, debug_probes_uniform_set, 0);
+ RD::get_singleton()->draw_list_set_push_constant(draw_list, &push_constant, sizeof(SDFGIShader::DebugProbesPushConstant));
+ RD::get_singleton()->draw_list_draw(draw_list, false, cell_count, total_points);
}
+
+ RD::get_singleton()->draw_command_end_label();
+ RD::get_singleton()->draw_list_end();
}
-void RendererSceneGIRD::SDFGI::pre_process_gi(const Transform3D &p_transform, RenderDataRD *p_render_data, RendererSceneRenderRD *p_scene_render) {
+void GI::SDFGI::pre_process_gi(const Transform3D &p_transform, RenderDataRD *p_render_data, RendererSceneRenderRD *p_scene_render) {
/* Update general SDFGI Buffer */
SDFGIData sdfgi_data;
@@ -1545,7 +1939,7 @@ void RendererSceneGIRD::SDFGI::pre_process_gi(const Transform3D &p_transform, Re
}
}
-void RendererSceneGIRD::SDFGI::render_region(RID p_render_buffers, int p_region, const PagedArray<RendererSceneRender::GeometryInstance *> &p_instances, RendererSceneRenderRD *p_scene_render) {
+void GI::SDFGI::render_region(RID p_render_buffers, int p_region, const PagedArray<RendererSceneRender::GeometryInstance *> &p_instances, RendererSceneRenderRD *p_scene_render) {
//print_line("rendering region " + itos(p_region));
RendererSceneRenderRD::RenderBuffers *rb = p_scene_render->render_buffers_owner.get_or_null(p_render_buffers);
ERR_FAIL_COND(!rb); // we wouldn't be here if this failed but...
@@ -1904,7 +2298,7 @@ void RendererSceneGIRD::SDFGI::render_region(RID p_render_buffers, int p_region,
}
}
-void RendererSceneGIRD::SDFGI::render_static_lights(RID p_render_buffers, uint32_t p_cascade_count, const uint32_t *p_cascade_indices, const PagedArray<RID> *p_positional_light_cull_result, RendererSceneRenderRD *p_scene_render) {
+void GI::SDFGI::render_static_lights(RID p_render_buffers, uint32_t p_cascade_count, const uint32_t *p_cascade_indices, const PagedArray<RID> *p_positional_light_cull_result, RendererSceneRenderRD *p_scene_render) {
RendererSceneRenderRD::RenderBuffers *rb = p_scene_render->render_buffers_owner.get_or_null(p_render_buffers);
ERR_FAIL_COND(!rb); // we wouldn't be here if this failed but...
@@ -2026,10 +2420,10 @@ void RendererSceneGIRD::SDFGI::render_static_lights(RID p_render_buffers, uint32
////////////////////////////////////////////////////////////////////////////////
// VoxelGIInstance
-void RendererSceneGIRD::VoxelGIInstance::update(bool p_update_light_instances, const Vector<RID> &p_light_instances, const PagedArray<RendererSceneRender::GeometryInstance *> &p_dynamic_objects, RendererSceneRenderRD *p_scene_render) {
+void GI::VoxelGIInstance::update(bool p_update_light_instances, const Vector<RID> &p_light_instances, const PagedArray<RendererSceneRender::GeometryInstance *> &p_dynamic_objects, RendererSceneRenderRD *p_scene_render) {
RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
- uint32_t data_version = storage->voxel_gi_get_data_version(probe);
+ uint32_t data_version = gi->voxel_gi_get_data_version(probe);
// (RE)CREATE IF NEEDED
@@ -2048,11 +2442,11 @@ void RendererSceneGIRD::VoxelGIInstance::update(bool p_update_light_instances, c
dynamic_maps.clear();
- Vector3i octree_size = storage->voxel_gi_get_octree_size(probe);
+ Vector3i octree_size = gi->voxel_gi_get_octree_size(probe);
if (octree_size != Vector3i()) {
//can create a 3D texture
- Vector<int> levels = storage->voxel_gi_get_level_counts(probe);
+ Vector<int> levels = gi->voxel_gi_get_level_counts(probe);
RD::TextureFormat tf;
tf.format = RD::DATA_FORMAT_R8G8B8A8_UNORM;
@@ -2092,14 +2486,14 @@ void RendererSceneGIRD::VoxelGIInstance::update(bool p_update_light_instances, c
RD::Uniform u;
u.uniform_type = RD::UNIFORM_TYPE_STORAGE_BUFFER;
u.binding = 1;
- u.append_id(storage->voxel_gi_get_octree_buffer(probe));
+ u.append_id(gi->voxel_gi_get_octree_buffer(probe));
uniforms.push_back(u);
}
{
RD::Uniform u;
u.uniform_type = RD::UNIFORM_TYPE_STORAGE_BUFFER;
u.binding = 2;
- u.append_id(storage->voxel_gi_get_data_buffer(probe));
+ u.append_id(gi->voxel_gi_get_data_buffer(probe));
uniforms.push_back(u);
}
@@ -2114,7 +2508,7 @@ void RendererSceneGIRD::VoxelGIInstance::update(bool p_update_light_instances, c
RD::Uniform u;
u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
u.binding = 9;
- u.append_id(storage->voxel_gi_get_sdf_texture(probe));
+ u.append_id(gi->voxel_gi_get_sdf_texture(probe));
uniforms.push_back(u);
}
{
@@ -2268,7 +2662,7 @@ void RendererSceneGIRD::VoxelGIInstance::update(bool p_update_light_instances, c
RD::Uniform u;
u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
u.binding = 9;
- u.append_id(storage->voxel_gi_get_sdf_texture(probe));
+ u.append_id(gi->voxel_gi_get_sdf_texture(probe));
uniforms.push_back(u);
}
{
@@ -2337,7 +2731,7 @@ void RendererSceneGIRD::VoxelGIInstance::update(bool p_update_light_instances, c
RD::Uniform u;
u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
u.binding = 9;
- u.append_id(storage->voxel_gi_get_sdf_texture(probe));
+ u.append_id(gi->voxel_gi_get_sdf_texture(probe));
uniforms.push_back(u);
}
{
@@ -2388,7 +2782,7 @@ void RendererSceneGIRD::VoxelGIInstance::update(bool p_update_light_instances, c
light_count = MIN(gi->voxel_gi_max_lights, (uint32_t)p_light_instances.size());
{
- Transform3D to_cell = storage->voxel_gi_get_to_cell_xform(probe);
+ Transform3D to_cell = gi->voxel_gi_get_to_cell_xform(probe);
Transform3D to_probe_xform = (transform * to_cell.affine_inverse()).affine_inverse();
//update lights
@@ -2439,7 +2833,7 @@ void RendererSceneGIRD::VoxelGIInstance::update(bool p_update_light_instances, c
if (mipmaps.size()) {
//can update mipmaps
- Vector3i probe_size = storage->voxel_gi_get_octree_size(probe);
+ Vector3i probe_size = gi->voxel_gi_get_octree_size(probe);
VoxelGIPushConstant push_constant;
@@ -2448,8 +2842,8 @@ void RendererSceneGIRD::VoxelGIInstance::update(bool p_update_light_instances, c
push_constant.limits[2] = probe_size.z;
push_constant.stack_size = mipmaps.size();
push_constant.emission_scale = 1.0;
- push_constant.propagation = storage->voxel_gi_get_propagation(probe);
- push_constant.dynamic_range = storage->voxel_gi_get_dynamic_range(probe);
+ push_constant.propagation = gi->voxel_gi_get_propagation(probe);
+ push_constant.dynamic_range = gi->voxel_gi_get_dynamic_range(probe);
push_constant.light_count = light_count;
push_constant.aniso_strength = 0;
@@ -2461,7 +2855,7 @@ void RendererSceneGIRD::VoxelGIInstance::update(bool p_update_light_instances, c
int passes;
if (p_update_light_instances) {
- passes = storage->voxel_gi_is_using_two_bounces(probe) ? 2 : 1;
+ passes = gi->voxel_gi_is_using_two_bounces(probe) ? 2 : 1;
} else {
passes = 1; //only re-blitting is necessary
}
@@ -2528,13 +2922,13 @@ void RendererSceneGIRD::VoxelGIInstance::update(bool p_update_light_instances, c
has_dynamic_object_data = false; //clear until dynamic object data is used again
if (p_dynamic_objects.size() && dynamic_maps.size()) {
- Vector3i octree_size = storage->voxel_gi_get_octree_size(probe);
+ Vector3i octree_size = gi->voxel_gi_get_octree_size(probe);
int multiplier = dynamic_maps[0].size / MAX(MAX(octree_size.x, octree_size.y), octree_size.z);
Transform3D oversample_scale;
oversample_scale.basis.scale(Vector3(multiplier, multiplier, multiplier));
- Transform3D to_cell = oversample_scale * storage->voxel_gi_get_to_cell_xform(probe);
+ Transform3D to_cell = oversample_scale * gi->voxel_gi_get_to_cell_xform(probe);
Transform3D to_world_xform = transform * to_cell.affine_inverse();
Transform3D to_probe_xform = to_world_xform.affine_inverse();
@@ -2634,7 +3028,7 @@ void RendererSceneGIRD::VoxelGIInstance::update(bool p_update_light_instances, c
push_constant.z_base = xform.origin[z_axis];
push_constant.z_sign = (z_flip ? -1.0 : 1.0);
push_constant.pos_multiplier = float(1.0) / multiplier;
- push_constant.dynamic_range = storage->voxel_gi_get_dynamic_range(probe);
+ push_constant.dynamic_range = gi->voxel_gi_get_dynamic_range(probe);
push_constant.flip_x = x_flip;
push_constant.flip_y = y_flip;
push_constant.rect_pos[0] = rect.position[0];
@@ -2646,7 +3040,7 @@ void RendererSceneGIRD::VoxelGIInstance::update(bool p_update_light_instances, c
push_constant.prev_rect_size[0] = 0;
push_constant.prev_rect_size[1] = 0;
push_constant.on_mipmap = false;
- push_constant.propagation = storage->voxel_gi_get_propagation(probe);
+ push_constant.propagation = gi->voxel_gi_get_propagation(probe);
push_constant.pad[0] = 0;
push_constant.pad[1] = 0;
push_constant.pad[2] = 0;
@@ -2728,24 +3122,24 @@ void RendererSceneGIRD::VoxelGIInstance::update(bool p_update_light_instances, c
has_dynamic_object_data = true; //clear until dynamic object data is used again
}
- last_probe_version = storage->voxel_gi_get_version(probe);
+ last_probe_version = gi->voxel_gi_get_version(probe);
}
-void RendererSceneGIRD::VoxelGIInstance::debug(RD::DrawListID p_draw_list, RID p_framebuffer, const CameraMatrix &p_camera_with_transform, bool p_lighting, bool p_emission, float p_alpha) {
+void GI::VoxelGIInstance::debug(RD::DrawListID p_draw_list, RID p_framebuffer, const CameraMatrix &p_camera_with_transform, bool p_lighting, bool p_emission, float p_alpha) {
RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
if (mipmaps.size() == 0) {
return;
}
- CameraMatrix cam_transform = (p_camera_with_transform * CameraMatrix(transform)) * CameraMatrix(storage->voxel_gi_get_to_cell_xform(probe).affine_inverse());
+ CameraMatrix cam_transform = (p_camera_with_transform * CameraMatrix(transform)) * CameraMatrix(gi->voxel_gi_get_to_cell_xform(probe).affine_inverse());
int level = 0;
- Vector3i octree_size = storage->voxel_gi_get_octree_size(probe);
+ Vector3i octree_size = gi->voxel_gi_get_octree_size(probe);
VoxelGIDebugPushConstant push_constant;
push_constant.alpha = p_alpha;
- push_constant.dynamic_range = storage->voxel_gi_get_dynamic_range(probe);
+ push_constant.dynamic_range = gi->voxel_gi_get_dynamic_range(probe);
push_constant.cell_offset = mipmaps[level].cell_offset;
push_constant.level = level;
@@ -2768,7 +3162,7 @@ void RendererSceneGIRD::VoxelGIInstance::debug(RD::DrawListID p_draw_list, RID p
RD::Uniform u;
u.uniform_type = RD::UNIFORM_TYPE_STORAGE_BUFFER;
u.binding = 1;
- u.append_id(storage->voxel_gi_get_data_buffer(probe));
+ u.append_id(gi->voxel_gi_get_data_buffer(probe));
uniforms.push_back(u);
}
{
@@ -2810,18 +3204,21 @@ void RendererSceneGIRD::VoxelGIInstance::debug(RD::DrawListID p_draw_list, RID p
}
////////////////////////////////////////////////////////////////////////////////
-// GIRD
+// GI
+
+GI::GI() {
+ singleton = this;
-RendererSceneGIRD::RendererSceneGIRD() {
sdfgi_ray_count = RS::EnvironmentSDFGIRayCount(CLAMP(int32_t(GLOBAL_GET("rendering/global_illumination/sdfgi/probe_ray_count")), 0, int32_t(RS::ENV_SDFGI_RAY_COUNT_MAX - 1)));
sdfgi_frames_to_converge = RS::EnvironmentSDFGIFramesToConverge(CLAMP(int32_t(GLOBAL_GET("rendering/global_illumination/sdfgi/frames_to_converge")), 0, int32_t(RS::ENV_SDFGI_CONVERGE_MAX - 1)));
sdfgi_frames_to_update_light = RS::EnvironmentSDFGIFramesToUpdateLight(CLAMP(int32_t(GLOBAL_GET("rendering/global_illumination/sdfgi/frames_to_update_lights")), 0, int32_t(RS::ENV_SDFGI_UPDATE_LIGHT_MAX - 1)));
}
-RendererSceneGIRD::~RendererSceneGIRD() {
+GI::~GI() {
+ singleton = nullptr;
}
-void RendererSceneGIRD::init(RendererStorageRD *p_storage, RendererSceneSkyRD *p_sky) {
+void GI::init(RendererStorageRD *p_storage, RendererSceneSkyRD *p_sky) {
RendererRD::TextureStorage *texture_storage = RendererRD::TextureStorage::get_singleton();
RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
@@ -2962,17 +3359,38 @@ void RendererSceneGIRD::init(RendererStorageRD *p_storage, RendererSceneSkyRD *p
//calculate tables
String defines = "\n#define SDFGI_OCT_SIZE " + itos(SDFGI::LIGHTPROBE_OCT_SIZE) + "\n";
Vector<String> gi_modes;
- gi_modes.push_back("\n#define USE_VOXEL_GI_INSTANCES\n");
- gi_modes.push_back("\n#define USE_SDFGI\n");
- gi_modes.push_back("\n#define USE_SDFGI\n\n#define USE_VOXEL_GI_INSTANCES\n");
- gi_modes.push_back("\n#define MODE_HALF_RES\n#define USE_VOXEL_GI_INSTANCES\n");
- gi_modes.push_back("\n#define MODE_HALF_RES\n#define USE_SDFGI\n");
- gi_modes.push_back("\n#define MODE_HALF_RES\n#define USE_SDFGI\n\n#define USE_VOXEL_GI_INSTANCES\n");
+ gi_modes.push_back("\n#define USE_VOXEL_GI_INSTANCES\n"); // MODE_VOXEL_GI
+ gi_modes.push_back("\n#define USE_SDFGI\n"); // MODE_SDFGI
+ gi_modes.push_back("\n#define USE_SDFGI\n\n#define USE_VOXEL_GI_INSTANCES\n"); // MODE_COMBINED
+ gi_modes.push_back("\n#define MODE_HALF_RES\n#define USE_VOXEL_GI_INSTANCES\n"); // MODE_HALF_RES_VOXEL_GI
+ gi_modes.push_back("\n#define MODE_HALF_RES\n#define USE_SDFGI\n"); // MODE_HALF_RES_SDFGI
+ gi_modes.push_back("\n#define MODE_HALF_RES\n#define USE_SDFGI\n\n#define USE_VOXEL_GI_INSTANCES\n"); // MODE_HALF_RES_COMBINED
+
+ gi_modes.push_back("\n#define USE_VOXEL_GI_INSTANCES\n#define USE_MULTIVIEW\n"); // MODE_VOXEL_GI_MULTIVIEW
+ gi_modes.push_back("\n#define USE_SDFGI\n#define USE_MULTIVIEW\n"); // MODE_SDFGI_MULTIVIEW
+ gi_modes.push_back("\n#define USE_SDFGI\n\n#define USE_VOXEL_GI_INSTANCES\n#define USE_MULTIVIEW\n"); // MODE_COMBINED_MULTIVIEW
+ gi_modes.push_back("\n#define MODE_HALF_RES\n#define USE_VOXEL_GI_INSTANCES\n#define USE_MULTIVIEW\n"); // MODE_HALF_RES_VOXEL_GI_MULTIVIEW
+ gi_modes.push_back("\n#define MODE_HALF_RES\n#define USE_SDFGI\n#define USE_MULTIVIEW\n"); // MODE_HALF_RES_SDFGI_MULTIVIEW
+ gi_modes.push_back("\n#define MODE_HALF_RES\n#define USE_SDFGI\n\n#define USE_VOXEL_GI_INSTANCES\n#define USE_MULTIVIEW\n"); // MODE_HALF_RES_COMBINED_MULTIVIEW
shader.initialize(gi_modes, defines);
+
+ if (!RendererCompositorRD::singleton->is_xr_enabled()) {
+ shader.set_variant_enabled(MODE_VOXEL_GI_MULTIVIEW, false);
+ shader.set_variant_enabled(MODE_SDFGI_MULTIVIEW, false);
+ shader.set_variant_enabled(MODE_COMBINED_MULTIVIEW, false);
+ shader.set_variant_enabled(MODE_HALF_RES_VOXEL_GI_MULTIVIEW, false);
+ shader.set_variant_enabled(MODE_HALF_RES_SDFGI_MULTIVIEW, false);
+ shader.set_variant_enabled(MODE_HALF_RES_COMBINED_MULTIVIEW, false);
+ }
+
shader_version = shader.version_create();
for (int i = 0; i < MODE_MAX; i++) {
- pipelines[i] = RD::get_singleton()->compute_pipeline_create(shader.version_get_shader(shader_version, i));
+ if (shader.is_variant_enabled(i)) {
+ pipelines[i] = RD::get_singleton()->compute_pipeline_create(shader.version_get_shader(shader_version, i));
+ } else {
+ pipelines[i] = RID();
+ }
}
sdfgi_ubo = RD::get_singleton()->uniform_buffer_create(sizeof(SDFGIData));
@@ -2991,9 +3409,14 @@ void RendererSceneGIRD::init(RendererStorageRD *p_storage, RendererSceneSkyRD *p
Vector<String> versions;
versions.push_back("\n#define MODE_PROBES\n");
+ versions.push_back("\n#define MODE_PROBES\n#define USE_MULTIVIEW\n");
versions.push_back("\n#define MODE_VISIBILITY\n");
+ versions.push_back("\n#define MODE_VISIBILITY\n#define USE_MULTIVIEW\n");
sdfgi_shader.debug_probes.initialize(versions, defines);
+
+ // TODO disable multiview versions if turned off
+
sdfgi_shader.debug_probes_shader = sdfgi_shader.debug_probes.version_create();
{
@@ -3004,6 +3427,8 @@ void RendererSceneGIRD::init(RendererStorageRD *p_storage, RendererSceneSkyRD *p
ds.enable_depth_write = true;
ds.depth_compare_operator = RD::COMPARE_OP_LESS_OR_EQUAL;
for (int i = 0; i < SDFGIShader::PROBE_DEBUG_MAX; i++) {
+ // TODO check if version is enabled
+
RID debug_probes_shader_version = sdfgi_shader.debug_probes.version_get_shader(sdfgi_shader.debug_probes_shader, i);
sdfgi_shader.debug_probes_pipeline[i].setup(debug_probes_shader_version, RD::RENDER_PRIMITIVE_TRIANGLE_STRIPS, rs, RD::PipelineMultisampleState(), ds, RD::PipelineColorBlendState::create_disabled(), 0);
}
@@ -3013,7 +3438,7 @@ void RendererSceneGIRD::init(RendererStorageRD *p_storage, RendererSceneSkyRD *p
half_resolution = GLOBAL_GET("rendering/global_illumination/gi/use_half_resolution");
}
-void RendererSceneGIRD::free() {
+void GI::free() {
RD::get_singleton()->free(default_voxel_gi_buffer);
RD::get_singleton()->free(voxel_gi_lights_uniform);
RD::get_singleton()->free(sdfgi_ubo);
@@ -3032,7 +3457,7 @@ void RendererSceneGIRD::free() {
}
}
-RendererSceneGIRD::SDFGI *RendererSceneGIRD::create_sdfgi(RendererSceneEnvironmentRD *p_env, const Vector3 &p_world_position, uint32_t p_requested_history_size) {
+GI::SDFGI *GI::create_sdfgi(RendererSceneEnvironmentRD *p_env, const Vector3 &p_world_position, uint32_t p_requested_history_size) {
SDFGI *sdfgi = memnew(SDFGI);
sdfgi->create(p_env, p_world_position, p_requested_history_size, this);
@@ -3040,7 +3465,7 @@ RendererSceneGIRD::SDFGI *RendererSceneGIRD::create_sdfgi(RendererSceneEnvironme
return sdfgi;
}
-void RendererSceneGIRD::setup_voxel_gi_instances(RID p_render_buffers, const Transform3D &p_transform, const PagedArray<RID> &p_voxel_gi_instances, uint32_t &r_voxel_gi_instances_used, RendererSceneRenderRD *p_scene_render) {
+void GI::setup_voxel_gi_instances(RID p_render_buffers, const Transform3D &p_transform, const PagedArray<RID> &p_voxel_gi_instances, uint32_t &r_voxel_gi_instances_used, RendererSceneRenderRD *p_scene_render) {
RendererRD::TextureStorage *texture_storage = RendererRD::TextureStorage::get_singleton();
r_voxel_gi_instances_used = 0;
@@ -3069,7 +3494,7 @@ void RendererSceneGIRD::setup_voxel_gi_instances(RID p_render_buffers, const Tra
RID base_probe = gipi->probe;
- Transform3D to_cell = storage->voxel_gi_get_to_cell_xform(gipi->probe) * gipi->transform.affine_inverse() * to_camera;
+ Transform3D to_cell = voxel_gi_get_to_cell_xform(gipi->probe) * gipi->transform.affine_inverse() * to_camera;
gipd.xform[0] = to_cell.basis.rows[0][0];
gipd.xform[1] = to_cell.basis.rows[1][0];
@@ -3088,16 +3513,16 @@ void RendererSceneGIRD::setup_voxel_gi_instances(RID p_render_buffers, const Tra
gipd.xform[14] = to_cell.origin.z;
gipd.xform[15] = 1;
- Vector3 bounds = storage->voxel_gi_get_octree_size(base_probe);
+ Vector3 bounds = voxel_gi_get_octree_size(base_probe);
gipd.bounds[0] = bounds.x;
gipd.bounds[1] = bounds.y;
gipd.bounds[2] = bounds.z;
- gipd.dynamic_range = storage->voxel_gi_get_dynamic_range(base_probe) * storage->voxel_gi_get_energy(base_probe);
- gipd.bias = storage->voxel_gi_get_bias(base_probe);
- gipd.normal_bias = storage->voxel_gi_get_normal_bias(base_probe);
- gipd.blend_ambient = !storage->voxel_gi_is_interior(base_probe);
+ gipd.dynamic_range = voxel_gi_get_dynamic_range(base_probe) * voxel_gi_get_energy(base_probe);
+ gipd.bias = voxel_gi_get_bias(base_probe);
+ gipd.normal_bias = voxel_gi_get_normal_bias(base_probe);
+ gipd.blend_ambient = !voxel_gi_is_interior(base_probe);
gipd.mipmaps = gipi->mipmaps.size();
}
@@ -3108,17 +3533,19 @@ void RendererSceneGIRD::setup_voxel_gi_instances(RID p_render_buffers, const Tra
texture = texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_3D_WHITE);
}
- if (texture != rb->gi.voxel_gi_textures[i]) {
+ if (texture != rb->rbgi.voxel_gi_textures[i]) {
voxel_gi_instances_changed = true;
- rb->gi.voxel_gi_textures[i] = texture;
+ rb->rbgi.voxel_gi_textures[i] = texture;
}
}
if (voxel_gi_instances_changed) {
- if (RD::get_singleton()->uniform_set_is_valid(rb->gi.uniform_set)) {
- RD::get_singleton()->free(rb->gi.uniform_set);
+ for (uint32_t v = 0; v < RendererSceneRender::MAX_RENDER_VIEWS; v++) {
+ if (RD::get_singleton()->uniform_set_is_valid(rb->rbgi.uniform_set[v])) {
+ RD::get_singleton()->free(rb->rbgi.uniform_set[v]);
+ }
+ rb->rbgi.uniform_set[v] = RID();
}
- rb->gi.uniform_set = RID();
if (rb->volumetric_fog) {
if (RD::get_singleton()->uniform_set_is_valid(rb->volumetric_fog->fog_uniform_set)) {
RD::get_singleton()->free(rb->volumetric_fog->fog_uniform_set);
@@ -3140,21 +3567,78 @@ void RendererSceneGIRD::setup_voxel_gi_instances(RID p_render_buffers, const Tra
}
}
-void RendererSceneGIRD::process_gi(RID p_render_buffers, RID p_normal_roughness_buffer, RID p_voxel_gi_buffer, RID p_environment, const CameraMatrix &p_projection, const Transform3D &p_transform, const PagedArray<RID> &p_voxel_gi_instances, RendererSceneRenderRD *p_scene_render) {
+void GI::RenderBuffersGI::free() {
+ for (uint32_t v = 0; v < RendererSceneRender::MAX_RENDER_VIEWS; v++) {
+ if (RD::get_singleton()->uniform_set_is_valid(uniform_set[v])) {
+ RD::get_singleton()->free(uniform_set[v]);
+ }
+ uniform_set[v] = RID();
+ }
+
+ if (scene_data_ubo.is_valid()) {
+ RD::get_singleton()->free(scene_data_ubo);
+ scene_data_ubo = RID();
+ }
+
+ if (ambient_buffer.is_valid()) {
+ if (view_count == 1) {
+ // Only one view? then these are copies of our main buffers.
+ ambient_view[0] = RID();
+ reflection_view[0] = RID();
+ } else {
+ // Multiple views? free our slices.
+ for (uint32_t v = 0; v < view_count; v++) {
+ RD::get_singleton()->free(ambient_view[v]);
+ RD::get_singleton()->free(reflection_view[v]);
+ ambient_view[v] = RID();
+ reflection_view[v] = RID();
+ }
+ }
+
+ // Now we can free our buffers.
+ RD::get_singleton()->free(ambient_buffer);
+ RD::get_singleton()->free(reflection_buffer);
+ ambient_buffer = RID();
+ reflection_buffer = RID();
+ view_count = 0;
+ }
+
+ if (voxel_gi_buffer.is_valid()) {
+ RD::get_singleton()->free(voxel_gi_buffer);
+ voxel_gi_buffer = RID();
+ }
+}
+
+void GI::process_gi(RID p_render_buffers, RID *p_normal_roughness_views, RID p_voxel_gi_buffer, RID p_environment, uint32_t p_view_count, const CameraMatrix *p_projections, const Vector3 *p_eye_offsets, const Transform3D &p_cam_transform, const PagedArray<RID> &p_voxel_gi_instances, RendererSceneRenderRD *p_scene_render) {
RendererRD::TextureStorage *texture_storage = RendererRD::TextureStorage::get_singleton();
RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
+ ERR_FAIL_COND_MSG(p_view_count > 2, "Maximum of 2 views supported for Processing GI.");
+
RD::get_singleton()->draw_command_begin_label("GI Render");
RendererSceneRenderRD::RenderBuffers *rb = p_scene_render->render_buffers_owner.get_or_null(p_render_buffers);
ERR_FAIL_COND(rb == nullptr);
- if (rb->ambient_buffer.is_null() || rb->gi.using_half_size_gi != half_resolution) {
- if (rb->ambient_buffer.is_valid()) {
- RD::get_singleton()->free(rb->ambient_buffer);
- RD::get_singleton()->free(rb->reflection_buffer);
+ if (rb->rbgi.ambient_buffer.is_null() || rb->rbgi.using_half_size_gi != half_resolution || rb->rbgi.view_count != p_view_count) {
+ // Free our old buffer if applicable
+ if (rb->rbgi.ambient_buffer.is_valid()) {
+ if (rb->rbgi.view_count > 1) {
+ for (uint32_t v = 0; v < rb->rbgi.view_count; v++) {
+ RD::get_singleton()->free(rb->rbgi.ambient_view[v]);
+ RD::get_singleton()->free(rb->rbgi.reflection_view[v]);
+ }
+ }
+ RD::get_singleton()->free(rb->rbgi.ambient_buffer);
+ RD::get_singleton()->free(rb->rbgi.reflection_buffer);
}
+ print_line("Allocating GI buffers"); // TESTING REMOVE BEFORE MERGING
+
+ // Remember the view count we're using
+ rb->rbgi.view_count = p_view_count;
+
+ // Create textures for our ambient and reflection data
RD::TextureFormat tf;
tf.format = RD::DATA_FORMAT_R16G16B16A16_SFLOAT;
tf.width = rb->internal_width;
@@ -3163,222 +3647,280 @@ void RendererSceneGIRD::process_gi(RID p_render_buffers, RID p_normal_roughness_
tf.width >>= 1;
tf.height >>= 1;
}
+ if (p_view_count > 1) {
+ tf.texture_type = RD::TEXTURE_TYPE_2D_ARRAY;
+ tf.array_layers = p_view_count;
+ } else {
+ tf.texture_type = RD::TEXTURE_TYPE_2D;
+ tf.array_layers = 1;
+ }
tf.usage_bits = RD::TEXTURE_USAGE_SAMPLING_BIT | RD::TEXTURE_USAGE_STORAGE_BIT;
- rb->reflection_buffer = RD::get_singleton()->texture_create(tf, RD::TextureView());
- rb->ambient_buffer = RD::get_singleton()->texture_create(tf, RD::TextureView());
- rb->gi.using_half_size_gi = half_resolution;
- }
-
- PushConstant push_constant;
-
- push_constant.screen_size[0] = rb->internal_width;
- push_constant.screen_size[1] = rb->internal_height;
- push_constant.z_near = p_projection.get_z_near();
- push_constant.z_far = p_projection.get_z_far();
- push_constant.orthogonal = p_projection.is_orthogonal();
- push_constant.proj_info[0] = -2.0f / (rb->internal_width * p_projection.matrix[0][0]);
- push_constant.proj_info[1] = -2.0f / (rb->internal_height * p_projection.matrix[1][1]);
- push_constant.proj_info[2] = (1.0f - p_projection.matrix[0][2]) / p_projection.matrix[0][0];
- push_constant.proj_info[3] = (1.0f + p_projection.matrix[1][2]) / p_projection.matrix[1][1];
- push_constant.max_voxel_gi_instances = MIN((uint64_t)MAX_VOXEL_GI_INSTANCES, p_voxel_gi_instances.size());
- push_constant.high_quality_vct = voxel_gi_quality == RS::VOXEL_GI_QUALITY_HIGH;
-
- bool use_sdfgi = rb->sdfgi != nullptr;
- bool use_voxel_gi_instances = push_constant.max_voxel_gi_instances > 0;
-
- push_constant.cam_rotation[0] = p_transform.basis[0][0];
- push_constant.cam_rotation[1] = p_transform.basis[1][0];
- push_constant.cam_rotation[2] = p_transform.basis[2][0];
- push_constant.cam_rotation[3] = 0;
- push_constant.cam_rotation[4] = p_transform.basis[0][1];
- push_constant.cam_rotation[5] = p_transform.basis[1][1];
- push_constant.cam_rotation[6] = p_transform.basis[2][1];
- push_constant.cam_rotation[7] = 0;
- push_constant.cam_rotation[8] = p_transform.basis[0][2];
- push_constant.cam_rotation[9] = p_transform.basis[1][2];
- push_constant.cam_rotation[10] = p_transform.basis[2][2];
- push_constant.cam_rotation[11] = 0;
-
- if (rb->gi.uniform_set.is_null() || !RD::get_singleton()->uniform_set_is_valid(rb->gi.uniform_set)) {
- Vector<RD::Uniform> uniforms;
- {
- RD::Uniform u;
- u.binding = 1;
- u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
- for (uint32_t j = 0; j < SDFGI::MAX_CASCADES; j++) {
- if (rb->sdfgi && j < rb->sdfgi->cascades.size()) {
- u.append_id(rb->sdfgi->cascades[j].sdf_tex);
- } else {
- u.append_id(texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_3D_WHITE));
- }
+ rb->rbgi.ambient_buffer = RD::get_singleton()->texture_create(tf, RD::TextureView());
+ rb->rbgi.reflection_buffer = RD::get_singleton()->texture_create(tf, RD::TextureView());
+ rb->rbgi.using_half_size_gi = half_resolution;
+
+ if (p_view_count == 1) {
+ // Just one view? Copy our buffers
+ rb->rbgi.ambient_view[0] = rb->rbgi.ambient_buffer;
+ rb->rbgi.reflection_view[0] = rb->rbgi.reflection_buffer;
+ } else {
+ // More then one view? Create slices for each view
+ for (uint32_t v = 0; v < p_view_count; v++) {
+ rb->rbgi.ambient_view[v] = RD::get_singleton()->texture_create_shared_from_slice(RD::TextureView(), rb->rbgi.ambient_buffer, v, 0);
+ rb->rbgi.reflection_view[v] = RD::get_singleton()->texture_create_shared_from_slice(RD::TextureView(), rb->rbgi.reflection_buffer, v, 0);
}
- uniforms.push_back(u);
}
- {
- RD::Uniform u;
- u.binding = 2;
- u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
- for (uint32_t j = 0; j < SDFGI::MAX_CASCADES; j++) {
- if (rb->sdfgi && j < rb->sdfgi->cascades.size()) {
- u.append_id(rb->sdfgi->cascades[j].light_tex);
- } else {
- u.append_id(texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_3D_WHITE));
+ }
+
+ // Setup our scene data
+ {
+ SceneData scene_data;
+
+ if (rb->rbgi.scene_data_ubo.is_null()) {
+ rb->rbgi.scene_data_ubo = RD::get_singleton()->uniform_buffer_create(sizeof(SceneData));
+ }
+
+ for (uint32_t v = 0; v < p_view_count; v++) {
+ RendererStorageRD::store_camera(p_projections[v].inverse(), scene_data.inv_projection[v]);
+ scene_data.eye_offset[v][0] = p_eye_offsets[v].x;
+ scene_data.eye_offset[v][1] = p_eye_offsets[v].y;
+ scene_data.eye_offset[v][2] = p_eye_offsets[v].z;
+ scene_data.eye_offset[v][3] = 0.0;
+ }
+
+ // Note that we will be ignoring the origin of this transform.
+ RendererStorageRD::store_transform(p_cam_transform, scene_data.cam_transform);
+
+ scene_data.screen_size[0] = rb->internal_width;
+ scene_data.screen_size[1] = rb->internal_height;
+
+ RD::get_singleton()->buffer_update(rb->rbgi.scene_data_ubo, 0, sizeof(SceneData), &scene_data, RD::BARRIER_MASK_COMPUTE);
+ }
+
+ // Now compute the contents of our buffers.
+ RD::ComputeListID compute_list = RD::get_singleton()->compute_list_begin(true);
+
+ for (uint32_t v = 0; v < p_view_count; v++) {
+ // Render each eye seperately.
+ // We need to look into whether we can make our compute shader use Multiview but not sure that works or makes a difference..
+
+ // setup our push constant
+
+ PushConstant push_constant;
+
+ push_constant.view_index = v;
+ push_constant.orthogonal = p_projections[v].is_orthogonal();
+ push_constant.max_voxel_gi_instances = MIN((uint64_t)MAX_VOXEL_GI_INSTANCES, p_voxel_gi_instances.size());
+ push_constant.high_quality_vct = voxel_gi_quality == RS::VOXEL_GI_QUALITY_HIGH;
+
+ push_constant.z_near = p_projections[v].get_z_near();
+ push_constant.z_far = p_projections[v].get_z_far();
+
+ push_constant.proj_info[0] = -2.0f / (rb->internal_width * p_projections[v].matrix[0][0]);
+ push_constant.proj_info[1] = -2.0f / (rb->internal_height * p_projections[v].matrix[1][1]);
+ push_constant.proj_info[2] = (1.0f - p_projections[v].matrix[0][2]) / p_projections[v].matrix[0][0];
+ push_constant.proj_info[3] = (1.0f + p_projections[v].matrix[1][2]) / p_projections[v].matrix[1][1];
+
+ bool use_sdfgi = rb->sdfgi != nullptr;
+ bool use_voxel_gi_instances = push_constant.max_voxel_gi_instances > 0;
+
+ // setup our uniform set
+ if (rb->rbgi.uniform_set[v].is_null() || !RD::get_singleton()->uniform_set_is_valid(rb->rbgi.uniform_set[v])) {
+ Vector<RD::Uniform> uniforms;
+ {
+ RD::Uniform u;
+ u.binding = 1;
+ u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
+ for (uint32_t j = 0; j < SDFGI::MAX_CASCADES; j++) {
+ if (rb->sdfgi && j < rb->sdfgi->cascades.size()) {
+ u.append_id(rb->sdfgi->cascades[j].sdf_tex);
+ } else {
+ u.append_id(texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_3D_WHITE));
+ }
}
+ uniforms.push_back(u);
}
- uniforms.push_back(u);
- }
- {
- RD::Uniform u;
- u.binding = 3;
- u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
- for (uint32_t j = 0; j < SDFGI::MAX_CASCADES; j++) {
- if (rb->sdfgi && j < rb->sdfgi->cascades.size()) {
- u.append_id(rb->sdfgi->cascades[j].light_aniso_0_tex);
+ {
+ RD::Uniform u;
+ u.binding = 2;
+ u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
+ for (uint32_t j = 0; j < SDFGI::MAX_CASCADES; j++) {
+ if (rb->sdfgi && j < rb->sdfgi->cascades.size()) {
+ u.append_id(rb->sdfgi->cascades[j].light_tex);
+ } else {
+ u.append_id(texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_3D_WHITE));
+ }
+ }
+ uniforms.push_back(u);
+ }
+ {
+ RD::Uniform u;
+ u.binding = 3;
+ u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
+ for (uint32_t j = 0; j < SDFGI::MAX_CASCADES; j++) {
+ if (rb->sdfgi && j < rb->sdfgi->cascades.size()) {
+ u.append_id(rb->sdfgi->cascades[j].light_aniso_0_tex);
+ } else {
+ u.append_id(texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_3D_WHITE));
+ }
+ }
+ uniforms.push_back(u);
+ }
+ {
+ RD::Uniform u;
+ u.binding = 4;
+ u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
+ for (uint32_t j = 0; j < SDFGI::MAX_CASCADES; j++) {
+ if (rb->sdfgi && j < rb->sdfgi->cascades.size()) {
+ u.append_id(rb->sdfgi->cascades[j].light_aniso_1_tex);
+ } else {
+ u.append_id(texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_3D_WHITE));
+ }
+ }
+ uniforms.push_back(u);
+ }
+ {
+ RD::Uniform u;
+ u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
+ u.binding = 5;
+ if (rb->sdfgi) {
+ u.append_id(rb->sdfgi->occlusion_texture);
} else {
u.append_id(texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_3D_WHITE));
}
+ uniforms.push_back(u);
}
- uniforms.push_back(u);
- }
- {
- RD::Uniform u;
- u.binding = 4;
- u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
- for (uint32_t j = 0; j < SDFGI::MAX_CASCADES; j++) {
- if (rb->sdfgi && j < rb->sdfgi->cascades.size()) {
- u.append_id(rb->sdfgi->cascades[j].light_aniso_1_tex);
+ {
+ RD::Uniform u;
+ u.uniform_type = RD::UNIFORM_TYPE_SAMPLER;
+ u.binding = 6;
+ u.append_id(material_storage->sampler_rd_get_default(RS::CANVAS_ITEM_TEXTURE_FILTER_LINEAR, RS::CANVAS_ITEM_TEXTURE_REPEAT_DISABLED));
+ uniforms.push_back(u);
+ }
+ {
+ RD::Uniform u;
+ u.uniform_type = RD::UNIFORM_TYPE_SAMPLER;
+ u.binding = 7;
+ u.append_id(material_storage->sampler_rd_get_default(RS::CANVAS_ITEM_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS, RS::CANVAS_ITEM_TEXTURE_REPEAT_DISABLED));
+ uniforms.push_back(u);
+ }
+
+ {
+ RD::Uniform u;
+ u.uniform_type = RD::UNIFORM_TYPE_IMAGE;
+ u.binding = 9;
+ u.append_id(rb->rbgi.ambient_view[v]);
+ uniforms.push_back(u);
+ }
+
+ {
+ RD::Uniform u;
+ u.uniform_type = RD::UNIFORM_TYPE_IMAGE;
+ u.binding = 10;
+ u.append_id(rb->rbgi.reflection_view[v]);
+ uniforms.push_back(u);
+ }
+
+ {
+ RD::Uniform u;
+ u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
+ u.binding = 11;
+ if (rb->sdfgi) {
+ u.append_id(rb->sdfgi->lightprobe_texture);
} else {
- u.append_id(texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_3D_WHITE));
+ u.append_id(texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_2D_ARRAY_WHITE));
}
+ uniforms.push_back(u);
}
- uniforms.push_back(u);
- }
- {
- RD::Uniform u;
- u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
- u.binding = 5;
- if (rb->sdfgi) {
- u.append_id(rb->sdfgi->occlusion_texture);
- } else {
- u.append_id(texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_3D_WHITE));
+ {
+ RD::Uniform u;
+ u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
+ u.binding = 12;
+ u.append_id(rb->views[v].view_depth);
+ uniforms.push_back(u);
+ }
+ {
+ RD::Uniform u;
+ u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
+ u.binding = 13;
+ u.append_id(p_normal_roughness_views[v]);
+ uniforms.push_back(u);
+ }
+ {
+ RD::Uniform u;
+ u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
+ u.binding = 14;
+ RID buffer = p_voxel_gi_buffer.is_valid() ? p_voxel_gi_buffer : texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_BLACK);
+ u.append_id(buffer);
+ uniforms.push_back(u);
+ }
+ {
+ RD::Uniform u;
+ u.uniform_type = RD::UNIFORM_TYPE_UNIFORM_BUFFER;
+ u.binding = 15;
+ u.append_id(sdfgi_ubo);
+ uniforms.push_back(u);
+ }
+ {
+ RD::Uniform u;
+ u.uniform_type = RD::UNIFORM_TYPE_UNIFORM_BUFFER;
+ u.binding = 16;
+ u.append_id(rb->rbgi.voxel_gi_buffer);
+ uniforms.push_back(u);
+ }
+ {
+ RD::Uniform u;
+ u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
+ u.binding = 17;
+ for (int i = 0; i < MAX_VOXEL_GI_INSTANCES; i++) {
+ u.append_id(rb->rbgi.voxel_gi_textures[i]);
+ }
+ uniforms.push_back(u);
+ }
+ {
+ RD::Uniform u;
+ u.uniform_type = RD::UNIFORM_TYPE_UNIFORM_BUFFER;
+ u.binding = 18;
+ u.append_id(rb->rbgi.scene_data_ubo);
+ uniforms.push_back(u);
}
- uniforms.push_back(u);
- }
- {
- RD::Uniform u;
- u.uniform_type = RD::UNIFORM_TYPE_SAMPLER;
- u.binding = 6;
- u.append_id(material_storage->sampler_rd_get_default(RS::CANVAS_ITEM_TEXTURE_FILTER_LINEAR, RS::CANVAS_ITEM_TEXTURE_REPEAT_DISABLED));
- uniforms.push_back(u);
- }
- {
- RD::Uniform u;
- u.uniform_type = RD::UNIFORM_TYPE_SAMPLER;
- u.binding = 7;
- u.append_id(material_storage->sampler_rd_get_default(RS::CANVAS_ITEM_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS, RS::CANVAS_ITEM_TEXTURE_REPEAT_DISABLED));
- uniforms.push_back(u);
- }
- {
- RD::Uniform u;
- u.uniform_type = RD::UNIFORM_TYPE_IMAGE;
- u.binding = 9;
- u.append_id(rb->ambient_buffer);
- uniforms.push_back(u);
+ rb->rbgi.uniform_set[v] = RD::get_singleton()->uniform_set_create(uniforms, shader.version_get_shader(shader_version, 0), 0);
}
- {
- RD::Uniform u;
- u.uniform_type = RD::UNIFORM_TYPE_IMAGE;
- u.binding = 10;
- u.append_id(rb->reflection_buffer);
- uniforms.push_back(u);
- }
+ Mode mode;
- {
- RD::Uniform u;
- u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
- u.binding = 11;
- if (rb->sdfgi) {
- u.append_id(rb->sdfgi->lightprobe_texture);
+ if (p_view_count > 1) {
+ if (rb->rbgi.using_half_size_gi) {
+ mode = (use_sdfgi && use_voxel_gi_instances) ? MODE_HALF_RES_COMBINED_MULTIVIEW : (use_sdfgi ? MODE_HALF_RES_SDFGI_MULTIVIEW : MODE_HALF_RES_VOXEL_GI_MULTIVIEW);
} else {
- u.append_id(texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_2D_ARRAY_WHITE));
+ mode = (use_sdfgi && use_voxel_gi_instances) ? MODE_COMBINED_MULTIVIEW : (use_sdfgi ? MODE_SDFGI_MULTIVIEW : MODE_VOXEL_GI_MULTIVIEW);
}
- uniforms.push_back(u);
- }
- {
- RD::Uniform u;
- u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
- u.binding = 12;
- u.append_id(rb->depth_texture);
- uniforms.push_back(u);
- }
- {
- RD::Uniform u;
- u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
- u.binding = 13;
- u.append_id(p_normal_roughness_buffer);
- uniforms.push_back(u);
- }
- {
- RD::Uniform u;
- u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
- u.binding = 14;
- RID buffer = p_voxel_gi_buffer.is_valid() ? p_voxel_gi_buffer : texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_BLACK);
- u.append_id(buffer);
- uniforms.push_back(u);
- }
- {
- RD::Uniform u;
- u.uniform_type = RD::UNIFORM_TYPE_UNIFORM_BUFFER;
- u.binding = 15;
- u.append_id(sdfgi_ubo);
- uniforms.push_back(u);
- }
- {
- RD::Uniform u;
- u.uniform_type = RD::UNIFORM_TYPE_UNIFORM_BUFFER;
- u.binding = 16;
- u.append_id(rb->gi.voxel_gi_buffer);
- uniforms.push_back(u);
- }
- {
- RD::Uniform u;
- u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
- u.binding = 17;
- for (int i = 0; i < MAX_VOXEL_GI_INSTANCES; i++) {
- u.append_id(rb->gi.voxel_gi_textures[i]);
+ } else {
+ if (rb->rbgi.using_half_size_gi) {
+ mode = (use_sdfgi && use_voxel_gi_instances) ? MODE_HALF_RES_COMBINED : (use_sdfgi ? MODE_HALF_RES_SDFGI : MODE_HALF_RES_VOXEL_GI);
+ } else {
+ mode = (use_sdfgi && use_voxel_gi_instances) ? MODE_COMBINED : (use_sdfgi ? MODE_SDFGI : MODE_VOXEL_GI);
}
- uniforms.push_back(u);
}
- rb->gi.uniform_set = RD::get_singleton()->uniform_set_create(uniforms, shader.version_get_shader(shader_version, 0), 0);
- }
-
- Mode mode;
+ RD::get_singleton()->compute_list_bind_compute_pipeline(compute_list, pipelines[mode]);
+ RD::get_singleton()->compute_list_bind_uniform_set(compute_list, rb->rbgi.uniform_set[v], 0);
+ RD::get_singleton()->compute_list_set_push_constant(compute_list, &push_constant, sizeof(PushConstant));
- if (rb->gi.using_half_size_gi) {
- mode = (use_sdfgi && use_voxel_gi_instances) ? MODE_HALF_RES_COMBINED : (use_sdfgi ? MODE_HALF_RES_SDFGI : MODE_HALF_RES_VOXEL_GI);
- } else {
- mode = (use_sdfgi && use_voxel_gi_instances) ? MODE_COMBINED : (use_sdfgi ? MODE_SDFGI : MODE_VOXEL_GI);
+ if (rb->rbgi.using_half_size_gi) {
+ RD::get_singleton()->compute_list_dispatch_threads(compute_list, rb->internal_width >> 1, rb->internal_height >> 1, 1);
+ } else {
+ RD::get_singleton()->compute_list_dispatch_threads(compute_list, rb->internal_width, rb->internal_height, 1);
+ }
}
- RD::ComputeListID compute_list = RD::get_singleton()->compute_list_begin(true);
- RD::get_singleton()->compute_list_bind_compute_pipeline(compute_list, pipelines[mode]);
- RD::get_singleton()->compute_list_bind_uniform_set(compute_list, rb->gi.uniform_set, 0);
- RD::get_singleton()->compute_list_set_push_constant(compute_list, &push_constant, sizeof(PushConstant));
-
- if (rb->gi.using_half_size_gi) {
- RD::get_singleton()->compute_list_dispatch_threads(compute_list, rb->internal_width >> 1, rb->internal_height >> 1, 1);
- } else {
- RD::get_singleton()->compute_list_dispatch_threads(compute_list, rb->internal_width, rb->internal_height, 1);
- }
//do barrier later to allow oeverlap
//RD::get_singleton()->compute_list_end(RD::BARRIER_MASK_NO_BARRIER); //no barriers, let other compute, raster and transfer happen at the same time
RD::get_singleton()->draw_command_end_label();
}
-RID RendererSceneGIRD::voxel_gi_instance_create(RID p_base) {
+RID GI::voxel_gi_instance_create(RID p_base) {
VoxelGIInstance voxel_gi;
voxel_gi.gi = this;
voxel_gi.storage = storage;
@@ -3387,28 +3929,28 @@ RID RendererSceneGIRD::voxel_gi_instance_create(RID p_base) {
return rid;
}
-void RendererSceneGIRD::voxel_gi_instance_set_transform_to_data(RID p_probe, const Transform3D &p_xform) {
+void GI::voxel_gi_instance_set_transform_to_data(RID p_probe, const Transform3D &p_xform) {
VoxelGIInstance *voxel_gi = get_probe_instance(p_probe);
ERR_FAIL_COND(!voxel_gi);
voxel_gi->transform = p_xform;
}
-bool RendererSceneGIRD::voxel_gi_needs_update(RID p_probe) const {
+bool GI::voxel_gi_needs_update(RID p_probe) const {
VoxelGIInstance *voxel_gi = get_probe_instance(p_probe);
ERR_FAIL_COND_V(!voxel_gi, false);
- return voxel_gi->last_probe_version != storage->voxel_gi_get_version(voxel_gi->probe);
+ return voxel_gi->last_probe_version != voxel_gi_get_version(voxel_gi->probe);
}
-void RendererSceneGIRD::voxel_gi_update(RID p_probe, bool p_update_light_instances, const Vector<RID> &p_light_instances, const PagedArray<RendererSceneRender::GeometryInstance *> &p_dynamic_objects, RendererSceneRenderRD *p_scene_render) {
+void GI::voxel_gi_update(RID p_probe, bool p_update_light_instances, const Vector<RID> &p_light_instances, const PagedArray<RendererSceneRender::GeometryInstance *> &p_dynamic_objects, RendererSceneRenderRD *p_scene_render) {
VoxelGIInstance *voxel_gi = get_probe_instance(p_probe);
ERR_FAIL_COND(!voxel_gi);
voxel_gi->update(p_update_light_instances, p_light_instances, p_dynamic_objects, p_scene_render);
}
-void RendererSceneGIRD::debug_voxel_gi(RID p_voxel_gi, RD::DrawListID p_draw_list, RID p_framebuffer, const CameraMatrix &p_camera_with_transform, bool p_lighting, bool p_emission, float p_alpha) {
+void GI::debug_voxel_gi(RID p_voxel_gi, RD::DrawListID p_draw_list, RID p_framebuffer, const CameraMatrix &p_camera_with_transform, bool p_lighting, bool p_emission, float p_alpha) {
VoxelGIInstance *voxel_gi = voxel_gi_instance_owner.get_or_null(p_voxel_gi);
ERR_FAIL_COND(!voxel_gi);
diff --git a/servers/rendering/renderer_rd/renderer_scene_gi_rd.h b/servers/rendering/renderer_rd/environment/gi.h
index 122644498b..b6ecfe42ea 100644
--- a/servers/rendering/renderer_rd/renderer_scene_gi_rd.h
+++ b/servers/rendering/renderer_rd/environment/gi.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* renderer_scene_gi_rd.h */
+/* gi.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,33 +28,77 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef RENDERING_SERVER_SCENE_GI_RD_H
-#define RENDERING_SERVER_SCENE_GI_RD_H
+#ifndef GI_RD_H
+#define GI_RD_H
#include "core/templates/local_vector.h"
#include "core/templates/rid_owner.h"
+#include "servers/rendering/environment/renderer_gi.h"
#include "servers/rendering/renderer_compositor.h"
#include "servers/rendering/renderer_rd/renderer_scene_environment_rd.h"
#include "servers/rendering/renderer_rd/renderer_scene_sky_rd.h"
#include "servers/rendering/renderer_rd/renderer_storage_rd.h"
-#include "servers/rendering/renderer_rd/shaders/gi.glsl.gen.h"
-#include "servers/rendering/renderer_rd/shaders/sdfgi_debug.glsl.gen.h"
-#include "servers/rendering/renderer_rd/shaders/sdfgi_debug_probes.glsl.gen.h"
-#include "servers/rendering/renderer_rd/shaders/sdfgi_direct_light.glsl.gen.h"
-#include "servers/rendering/renderer_rd/shaders/sdfgi_integrate.glsl.gen.h"
-#include "servers/rendering/renderer_rd/shaders/sdfgi_preprocess.glsl.gen.h"
-#include "servers/rendering/renderer_rd/shaders/voxel_gi.glsl.gen.h"
-#include "servers/rendering/renderer_rd/shaders/voxel_gi_debug.glsl.gen.h"
+#include "servers/rendering/renderer_rd/shaders/environment/gi.glsl.gen.h"
+#include "servers/rendering/renderer_rd/shaders/environment/sdfgi_debug.glsl.gen.h"
+#include "servers/rendering/renderer_rd/shaders/environment/sdfgi_debug_probes.glsl.gen.h"
+#include "servers/rendering/renderer_rd/shaders/environment/sdfgi_direct_light.glsl.gen.h"
+#include "servers/rendering/renderer_rd/shaders/environment/sdfgi_integrate.glsl.gen.h"
+#include "servers/rendering/renderer_rd/shaders/environment/sdfgi_preprocess.glsl.gen.h"
+#include "servers/rendering/renderer_rd/shaders/environment/voxel_gi.glsl.gen.h"
+#include "servers/rendering/renderer_rd/shaders/environment/voxel_gi_debug.glsl.gen.h"
#include "servers/rendering/renderer_scene_render.h"
+#include "servers/rendering/renderer_storage.h"
#include "servers/rendering/rendering_device.h"
// Forward declare RenderDataRD and RendererSceneRenderRD so we can pass it into some of our methods, these classes are pretty tightly bound
struct RenderDataRD;
class RendererSceneRenderRD;
-class RendererSceneGIRD {
+namespace RendererRD {
+
+class GI : public RendererGI {
+public:
+ /* VOXEL GI STORAGE */
+
+ struct VoxelGI {
+ RID octree_buffer;
+ RID data_buffer;
+ RID sdf_texture;
+
+ uint32_t octree_buffer_size = 0;
+ uint32_t data_buffer_size = 0;
+
+ Vector<int> level_counts;
+
+ int cell_count = 0;
+
+ Transform3D to_cell_xform;
+ AABB bounds;
+ Vector3i octree_size;
+
+ float dynamic_range = 2.0;
+ float energy = 1.0;
+ float bias = 1.4;
+ float normal_bias = 0.0;
+ float propagation = 0.7;
+ bool interior = false;
+ bool use_two_bounces = false;
+
+ float anisotropy_strength = 0.5;
+
+ uint32_t version = 1;
+ uint32_t data_version = 1;
+
+ RendererStorage::Dependency dependency;
+ };
+
private:
RendererStorageRD *storage = nullptr;
+ static GI *singleton;
+
+ /* VOXEL GI STORAGE */
+
+ mutable RID_Owner<VoxelGI, true> voxel_gi_owner;
/* VOXEL_GI INSTANCE */
@@ -196,10 +240,13 @@ private:
uint32_t use_occlusion;
float y_mult;
- float cam_extent[3];
uint32_t probe_axis_size;
+ float z_near;
+ float reserved1;
+ float reserved2;
float cam_transform[16];
+ float inv_projection[16];
};
SdfgiDebugShaderRD debug;
@@ -209,13 +256,17 @@ private:
enum ProbeDebugMode {
PROBE_DEBUG_PROBES,
+ PROBE_DEBUG_PROBES_MULTIVIEW,
PROBE_DEBUG_VISIBILITY,
+ PROBE_DEBUG_VISIBILITY_MULTIVIEW,
PROBE_DEBUG_MAX
};
- struct DebugProbesPushConstant {
- float projection[16];
+ struct DebugProbesSceneData {
+ float projection[2][16];
+ };
+ struct DebugProbesPushConstant {
uint32_t band_power;
uint32_t sections_in_band;
uint32_t band_mask;
@@ -324,6 +375,60 @@ private:
} sdfgi_shader;
public:
+ static GI *get_singleton() { return singleton; }
+
+ /* VOXEL GI API */
+
+ VoxelGI *get_voxel_gi(RID p_rid) { return voxel_gi_owner.get_or_null(p_rid); };
+ bool owns_voxel_gi(RID p_rid) { return voxel_gi_owner.owns(p_rid); };
+
+ virtual RID voxel_gi_allocate() override;
+ virtual void voxel_gi_free(RID p_voxel_gi) override;
+ virtual void voxel_gi_initialize(RID p_voxel_gi) override;
+
+ virtual void voxel_gi_allocate_data(RID p_voxel_gi, const Transform3D &p_to_cell_xform, const AABB &p_aabb, const Vector3i &p_octree_size, const Vector<uint8_t> &p_octree_cells, const Vector<uint8_t> &p_data_cells, const Vector<uint8_t> &p_distance_field, const Vector<int> &p_level_counts) override;
+
+ virtual AABB voxel_gi_get_bounds(RID p_voxel_gi) const override;
+ virtual Vector3i voxel_gi_get_octree_size(RID p_voxel_gi) const override;
+ virtual Vector<uint8_t> voxel_gi_get_octree_cells(RID p_voxel_gi) const override;
+ virtual Vector<uint8_t> voxel_gi_get_data_cells(RID p_voxel_gi) const override;
+ virtual Vector<uint8_t> voxel_gi_get_distance_field(RID p_voxel_gi) const override;
+
+ virtual Vector<int> voxel_gi_get_level_counts(RID p_voxel_gi) const override;
+ virtual Transform3D voxel_gi_get_to_cell_xform(RID p_voxel_gi) const override;
+
+ virtual void voxel_gi_set_dynamic_range(RID p_voxel_gi, float p_range) override;
+ virtual float voxel_gi_get_dynamic_range(RID p_voxel_gi) const override;
+
+ virtual void voxel_gi_set_propagation(RID p_voxel_gi, float p_range) override;
+ virtual float voxel_gi_get_propagation(RID p_voxel_gi) const override;
+
+ virtual void voxel_gi_set_energy(RID p_voxel_gi, float p_energy) override;
+ virtual float voxel_gi_get_energy(RID p_voxel_gi) const override;
+
+ virtual void voxel_gi_set_bias(RID p_voxel_gi, float p_bias) override;
+ virtual float voxel_gi_get_bias(RID p_voxel_gi) const override;
+
+ virtual void voxel_gi_set_normal_bias(RID p_voxel_gi, float p_range) override;
+ virtual float voxel_gi_get_normal_bias(RID p_voxel_gi) const override;
+
+ virtual void voxel_gi_set_interior(RID p_voxel_gi, bool p_enable) override;
+ virtual bool voxel_gi_is_interior(RID p_voxel_gi) const override;
+
+ virtual void voxel_gi_set_use_two_bounces(RID p_voxel_gi, bool p_enable) override;
+ virtual bool voxel_gi_is_using_two_bounces(RID p_voxel_gi) const override;
+
+ virtual void voxel_gi_set_anisotropy_strength(RID p_voxel_gi, float p_strength) override;
+ virtual float voxel_gi_get_anisotropy_strength(RID p_voxel_gi) const override;
+
+ virtual uint32_t voxel_gi_get_version(RID p_probe) const override;
+ uint32_t voxel_gi_get_data_version(RID p_probe);
+
+ RID voxel_gi_get_octree_buffer(RID p_voxel_gi) const;
+ RID voxel_gi_get_data_buffer(RID p_voxel_gi) const;
+
+ RID voxel_gi_get_sdf_texture(RID p_voxel_gi);
+
/* VOXEL_GI INSTANCE */
//@TODO VoxelGIInstance is still directly used in the render code, we'll address this when we refactor the render code itself.
@@ -331,7 +436,7 @@ public:
struct VoxelGIInstance {
// access to our containers
RendererStorageRD *storage = nullptr;
- RendererSceneGIRD *gi = nullptr;
+ GI *gi = nullptr;
RID probe;
RID texture;
@@ -455,7 +560,7 @@ public:
// access to our containers
RendererStorageRD *storage = nullptr;
- RendererSceneGIRD *gi = nullptr;
+ GI *gi = nullptr;
// used for rendering (voxelization)
RID render_albedo;
@@ -497,7 +602,8 @@ public:
float min_cell_size = 0;
uint32_t probe_axis_count = 0; //amount of probes per axis, this is an odd number because it encloses endpoints
- RID debug_uniform_set;
+ RID debug_uniform_set[RendererSceneRender::MAX_RENDER_VIEWS];
+ RID debug_probes_scene_data_ubo;
RID debug_probes_uniform_set;
RID cascades_ubo;
@@ -516,7 +622,7 @@ public:
int32_t cascade_dynamic_light_count[SDFGI::MAX_CASCADES]; //used dynamically
RID integrate_sky_uniform_set;
- void create(RendererSceneEnvironmentRD *p_env, const Vector3 &p_world_position, uint32_t p_requested_history_size, RendererSceneGIRD *p_gi);
+ void create(RendererSceneEnvironmentRD *p_env, const Vector3 &p_world_position, uint32_t p_requested_history_size, GI *p_gi);
void erase();
void update(RendererSceneEnvironmentRD *p_env, const Vector3 &p_world_position);
void update_light();
@@ -525,8 +631,8 @@ public:
int get_pending_region_data(int p_region, Vector3i &r_local_offset, Vector3i &r_local_size, AABB &r_bounds) const;
void update_cascades();
- void debug_draw(const CameraMatrix &p_projection, const Transform3D &p_transform, int p_width, int p_height, RID p_render_target, RID p_texture);
- void debug_probes(RD::DrawListID p_draw_list, RID p_framebuffer, const CameraMatrix &p_camera_with_transform);
+ void debug_draw(uint32_t p_view_count, const CameraMatrix *p_projections, const Transform3D &p_transform, int p_width, int p_height, RID p_render_target, RID p_texture, const Vector<RID> &p_texture_views);
+ void debug_probes(RID p_framebuffer, const uint32_t p_view_count, const CameraMatrix *p_camera_with_transforms, bool p_will_continue_color, bool p_will_continue_depth);
void pre_process_gi(const Transform3D &p_transform, RenderDataRD *p_render_data, RendererSceneRenderRD *p_scene_render);
void render_region(RID p_render_buffers, int p_region, const PagedArray<RendererSceneRender::GeometryInstance *> &p_instances, RendererSceneRenderRD *p_scene_render);
@@ -561,8 +667,18 @@ public:
RID full_dispatch;
RID full_mask;
- RID uniform_set;
+ /* GI buffers */
+ RID ambient_buffer;
+ RID reflection_buffer;
+ RID ambient_view[RendererSceneRender::MAX_RENDER_VIEWS];
+ RID reflection_view[RendererSceneRender::MAX_RENDER_VIEWS];
+ RID uniform_set[RendererSceneRender::MAX_RENDER_VIEWS];
bool using_half_size_gi = false;
+ uint32_t view_count = 1;
+
+ RID scene_data_ubo;
+
+ void free();
};
struct SDFGIData {
@@ -611,19 +727,28 @@ public:
uint32_t mipmaps; // 4 - 96
};
- struct PushConstant {
- int32_t screen_size[2];
- float z_near;
- float z_far;
+ struct SceneData {
+ float inv_projection[2][16];
+ float cam_transform[16];
+ float eye_offset[2][4];
- float proj_info[4];
+ int32_t screen_size[2];
+ float pad1;
+ float pad2;
+ };
+ struct PushConstant {
+ uint32_t view_index;
uint32_t max_voxel_gi_instances;
uint32_t high_quality_vct;
uint32_t orthogonal;
- uint32_t pad;
- float cam_rotation[12];
+ float proj_info[4];
+
+ float z_near;
+ float z_far;
+ float pad1;
+ float pad2;
};
RID sdfgi_ubo;
@@ -634,6 +759,14 @@ public:
MODE_HALF_RES_VOXEL_GI,
MODE_HALF_RES_SDFGI,
MODE_HALF_RES_COMBINED,
+
+ MODE_VOXEL_GI_MULTIVIEW,
+ MODE_SDFGI_MULTIVIEW,
+ MODE_COMBINED_MULTIVIEW,
+ MODE_HALF_RES_VOXEL_GI_MULTIVIEW,
+ MODE_HALF_RES_SDFGI_MULTIVIEW,
+ MODE_HALF_RES_COMBINED_MULTIVIEW,
+
MODE_MAX
};
@@ -644,8 +777,8 @@ public:
RID shader_version;
RID pipelines[MODE_MAX];
- RendererSceneGIRD();
- ~RendererSceneGIRD();
+ GI();
+ ~GI();
void init(RendererStorageRD *p_storage, RendererSceneSkyRD *p_sky);
void free();
@@ -653,7 +786,7 @@ public:
SDFGI *create_sdfgi(RendererSceneEnvironmentRD *p_env, const Vector3 &p_world_position, uint32_t p_requested_history_size);
void setup_voxel_gi_instances(RID p_render_buffers, const Transform3D &p_transform, const PagedArray<RID> &p_voxel_gi_instances, uint32_t &r_voxel_gi_instances_used, RendererSceneRenderRD *p_scene_render);
- void process_gi(RID p_render_buffers, RID p_normal_roughness_buffer, RID p_voxel_gi_buffer, RID p_environment, const CameraMatrix &p_projection, const Transform3D &p_transform, const PagedArray<RID> &p_voxel_gi_instances, RendererSceneRenderRD *p_scene_render);
+ void process_gi(RID p_render_buffers, RID *p_normal_roughness_views, RID p_voxel_gi_buffer, RID p_environment, uint32_t p_view_count, const CameraMatrix *p_projections, const Vector3 *p_eye_offsets, const Transform3D &p_cam_transform, const PagedArray<RID> &p_voxel_gi_instances, RendererSceneRenderRD *p_scene_render);
RID voxel_gi_instance_create(RID p_base);
void voxel_gi_instance_set_transform_to_data(RID p_probe, const Transform3D &p_xform);
@@ -662,4 +795,6 @@ public:
void debug_voxel_gi(RID p_voxel_gi, RD::DrawListID p_draw_list, RID p_framebuffer, const CameraMatrix &p_camera_with_transform, bool p_lighting, bool p_emission, float p_alpha);
};
-#endif /* !RENDERING_SERVER_SCENE_GI_RD_H */
+} // namespace RendererRD
+
+#endif /* !GI_RD_H */
diff --git a/servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.cpp b/servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.cpp
index 181d7819da..c7048289c8 100644
--- a/servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.cpp
+++ b/servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.cpp
@@ -48,6 +48,13 @@ void RenderForwardClustered::RenderBufferDataForwardClustered::ensure_specular()
if (!specular.is_valid()) {
RD::TextureFormat tf;
tf.format = RD::DATA_FORMAT_R16G16B16A16_SFLOAT;
+ if (view_count > 1) {
+ tf.texture_type = RD::TEXTURE_TYPE_2D_ARRAY;
+ tf.array_layers = view_count;
+ } else {
+ tf.texture_type = RD::TEXTURE_TYPE_2D;
+ tf.array_layers = 1;
+ }
tf.width = width;
tf.height = height;
tf.usage_bits = RD::TEXTURE_USAGE_SAMPLING_BIT | RD::TEXTURE_USAGE_STORAGE_BIT;
@@ -64,7 +71,7 @@ void RenderForwardClustered::RenderBufferDataForwardClustered::ensure_specular()
Vector<RID> fb;
fb.push_back(specular);
- specular_only_fb = RD::get_singleton()->framebuffer_create(fb);
+ specular_only_fb = RD::get_singleton()->framebuffer_create(fb, RD::INVALID_ID, view_count);
}
} else {
@@ -76,15 +83,43 @@ void RenderForwardClustered::RenderBufferDataForwardClustered::ensure_specular()
Vector<RID> fb;
fb.push_back(specular_msaa);
- specular_only_fb = RD::get_singleton()->framebuffer_create(fb);
+ specular_only_fb = RD::get_singleton()->framebuffer_create(fb, RD::INVALID_ID, view_count);
}
}
}
}
+void RenderForwardClustered::RenderBufferDataForwardClustered::ensure_velocity() {
+ if (!velocity_buffer.is_valid()) {
+ RD::TextureFormat tf;
+ tf.format = RD::DATA_FORMAT_R16G16_SFLOAT;
+ tf.width = width;
+ tf.height = height;
+ tf.usage_bits = RD::TEXTURE_USAGE_COLOR_ATTACHMENT_BIT | RD::TEXTURE_USAGE_SAMPLING_BIT | RD::TEXTURE_USAGE_STORAGE_BIT;
+
+ if (msaa != RS::VIEWPORT_MSAA_DISABLED) {
+ RD::TextureFormat tf_aa = tf;
+ tf_aa.samples = texture_samples;
+ tf_aa.usage_bits |= RD::TEXTURE_USAGE_CAN_COPY_FROM_BIT;
+ velocity_buffer_msaa = RD::get_singleton()->texture_create(tf_aa, RD::TextureView());
+
+ tf.usage_bits |= RD::TEXTURE_USAGE_CAN_COPY_TO_BIT;
+ }
+
+ velocity_buffer = RD::get_singleton()->texture_create(tf, RD::TextureView());
+ }
+}
+
void RenderForwardClustered::RenderBufferDataForwardClustered::ensure_voxelgi() {
if (!voxelgi_buffer.is_valid()) {
RD::TextureFormat tf;
+ if (view_count > 1) {
+ tf.texture_type = RD::TEXTURE_TYPE_2D_ARRAY;
+ tf.array_layers = view_count;
+ } else {
+ tf.texture_type = RD::TEXTURE_TYPE_2D;
+ tf.array_layers = 1;
+ }
tf.format = RD::DATA_FORMAT_R8G8_UINT;
tf.width = width;
tf.height = height;
@@ -95,6 +130,14 @@ void RenderForwardClustered::RenderBufferDataForwardClustered::ensure_voxelgi()
tf_aa.usage_bits |= RD::TEXTURE_USAGE_COLOR_ATTACHMENT_BIT;
tf_aa.samples = texture_samples;
voxelgi_buffer_msaa = RD::get_singleton()->texture_create(tf_aa, RD::TextureView());
+
+ if (view_count == 1) {
+ voxelgi_msaa_views[0] = voxelgi_buffer_msaa;
+ } else {
+ for (uint32_t v = 0; v < view_count; v++) {
+ voxelgi_msaa_views[v] = RD::get_singleton()->texture_create_shared_from_slice(RD::TextureView(), voxelgi_buffer_msaa, v, 0);
+ }
+ }
} else {
tf.usage_bits |= RD::TEXTURE_USAGE_COLOR_ATTACHMENT_BIT;
}
@@ -103,6 +146,14 @@ void RenderForwardClustered::RenderBufferDataForwardClustered::ensure_voxelgi()
voxelgi_buffer = RD::get_singleton()->texture_create(tf, RD::TextureView());
+ if (view_count == 1) {
+ voxelgi_views[0] = voxelgi_buffer;
+ } else {
+ for (uint32_t v = 0; v < view_count; v++) {
+ voxelgi_views[v] = RD::get_singleton()->texture_create_shared_from_slice(RD::TextureView(), voxelgi_buffer, v, 0);
+ }
+ }
+
Vector<RID> fb;
if (msaa != RS::VIEWPORT_MSAA_DISABLED) {
fb.push_back(depth_msaa);
@@ -114,7 +165,7 @@ void RenderForwardClustered::RenderBufferDataForwardClustered::ensure_voxelgi()
fb.push_back(voxelgi_buffer);
}
- depth_normal_roughness_voxelgi_fb = RD::get_singleton()->framebuffer_create(fb);
+ depth_normal_roughness_voxelgi_fb = RD::get_singleton()->framebuffer_create(fb, RD::INVALID_ID, view_count);
}
}
@@ -123,7 +174,25 @@ void RenderForwardClustered::RenderBufferDataForwardClustered::clear() {
RD::get_singleton()->free(voxelgi_buffer);
voxelgi_buffer = RID();
+ if (view_count == 1) {
+ voxelgi_views[0] = RID();
+ } else {
+ for (uint32_t v = 0; v < view_count; v++) {
+ RD::get_singleton()->free(voxelgi_views[v]);
+ voxelgi_views[v] = RID();
+ }
+ }
+
if (voxelgi_buffer_msaa.is_valid()) {
+ if (view_count == 1) {
+ voxelgi_msaa_views[0] = RID();
+ } else {
+ for (uint32_t v = 0; v < view_count; v++) {
+ RD::get_singleton()->free(voxelgi_msaa_views[v]);
+ voxelgi_msaa_views[v] = RID();
+ }
+ }
+
RD::get_singleton()->free(voxelgi_buffer_msaa);
voxelgi_buffer_msaa = RID();
}
@@ -132,11 +201,35 @@ void RenderForwardClustered::RenderBufferDataForwardClustered::clear() {
}
if (color_msaa.is_valid()) {
+ if (view_count == 1) {
+ color_views[0] = RID();
+ color_msaa_views[0] = RID();
+ } else {
+ for (uint32_t v = 0; v < view_count; v++) {
+ RD::get_singleton()->free(color_views[v]);
+ RD::get_singleton()->free(color_msaa_views[v]);
+ color_views[v] = RID();
+ color_msaa_views[v] = RID();
+ }
+ }
+
RD::get_singleton()->free(color_msaa);
color_msaa = RID();
}
if (depth_msaa.is_valid()) {
+ if (view_count == 1) {
+ depth_views[0] = RID();
+ depth_msaa_views[0] = RID();
+ } else {
+ for (uint32_t v = 0; v < view_count; v++) {
+ RD::get_singleton()->free(depth_views[v]);
+ RD::get_singleton()->free(depth_msaa_views[v]);
+ depth_views[v] = RID();
+ depth_msaa_views[v] = RID();
+ }
+ }
+
RD::get_singleton()->free(depth_msaa);
depth_msaa = RID();
}
@@ -157,24 +250,54 @@ void RenderForwardClustered::RenderBufferDataForwardClustered::clear() {
color_framebuffers.clear(); // Color pass framebuffers are freed automatically by their dependency relations
if (normal_roughness_buffer.is_valid()) {
+ if (view_count == 1) {
+ normal_roughness_views[0] = RID();
+ } else {
+ for (uint32_t v = 0; v < view_count; v++) {
+ RD::get_singleton()->free(normal_roughness_views[v]);
+ normal_roughness_views[v] = RID();
+ }
+ }
+
RD::get_singleton()->free(normal_roughness_buffer);
+ normal_roughness_buffer = RID();
+
if (normal_roughness_buffer_msaa.is_valid()) {
+ if (view_count == 1) {
+ normal_roughness_msaa_views[0] = RID();
+ } else {
+ for (uint32_t v = 0; v < view_count; v++) {
+ RD::get_singleton()->free(normal_roughness_msaa_views[v]);
+ normal_roughness_msaa_views[v] = RID();
+ }
+ }
RD::get_singleton()->free(normal_roughness_buffer_msaa);
normal_roughness_buffer_msaa = RID();
}
- normal_roughness_buffer = RID();
+
depth_normal_roughness_fb = RID();
}
if (!render_sdfgi_uniform_set.is_null() && RD::get_singleton()->uniform_set_is_valid(render_sdfgi_uniform_set)) {
RD::get_singleton()->free(render_sdfgi_uniform_set);
}
+
+ if (velocity_buffer != RID()) {
+ RD::get_singleton()->free(velocity_buffer);
+ velocity_buffer = RID();
+ }
+
+ if (velocity_buffer_msaa != RID()) {
+ RD::get_singleton()->free(velocity_buffer_msaa);
+ velocity_buffer_msaa = RID();
+ }
}
-void RenderForwardClustered::RenderBufferDataForwardClustered::configure(RID p_color_buffer, RID p_depth_buffer, RID p_target_buffer, int p_width, int p_height, RS::ViewportMSAA p_msaa, uint32_t p_view_count) {
+void RenderForwardClustered::RenderBufferDataForwardClustered::configure(RID p_color_buffer, RID p_depth_buffer, RID p_target_buffer, int p_width, int p_height, RS::ViewportMSAA p_msaa, bool p_use_taa, uint32_t p_view_count) {
clear();
msaa = p_msaa;
+ use_taa = p_use_taa;
width = p_width;
height = p_height;
@@ -227,6 +350,22 @@ void RenderForwardClustered::RenderBufferDataForwardClustered::configure(RID p_c
depth_msaa = RD::get_singleton()->texture_create(tf, RD::TextureView());
+ if (view_count == 1) {
+ // just reuse
+ color_views[0] = color;
+ depth_views[0] = depth;
+ color_msaa_views[0] = color_msaa;
+ depth_msaa_views[0] = depth_msaa;
+ } else {
+ // create slices
+ for (uint32_t v = 0; v < view_count; v++) {
+ color_views[v] = RD::get_singleton()->texture_create_shared_from_slice(RD::TextureView(), color, v, 0);
+ depth_views[v] = RD::get_singleton()->texture_create_shared_from_slice(RD::TextureView(), depth, v, 0);
+ color_msaa_views[v] = RD::get_singleton()->texture_create_shared_from_slice(RD::TextureView(), color_msaa, v, 0);
+ depth_msaa_views[v] = RD::get_singleton()->texture_create_shared_from_slice(RD::TextureView(), depth_msaa, v, 0);
+ }
+ }
+
{
Vector<RID> fb;
fb.push_back(color_msaa);
@@ -260,6 +399,13 @@ RID RenderForwardClustered::RenderBufferDataForwardClustered::get_color_pass_fb(
fb.push_back(RID());
}
+ if (p_color_pass_flags & COLOR_PASS_FLAG_MOTION_VECTORS) {
+ ensure_velocity();
+ fb.push_back(use_msaa ? velocity_buffer_msaa : velocity_buffer);
+ } else {
+ fb.push_back(RID());
+ }
+
fb.push_back(use_msaa ? depth_msaa : depth);
int v_count = (p_color_pass_flags & COLOR_PASS_FLAG_MULTIVIEW) ? view_count : 1;
@@ -269,6 +415,8 @@ RID RenderForwardClustered::RenderBufferDataForwardClustered::get_color_pass_fb(
}
void RenderForwardClustered::_allocate_normal_roughness_texture(RenderBufferDataForwardClustered *rb) {
+ ERR_FAIL_COND_MSG(rb->view_count > 2, "Only support up to two views for roughness texture");
+
if (rb->normal_roughness_buffer.is_valid()) {
return;
}
@@ -277,6 +425,13 @@ void RenderForwardClustered::_allocate_normal_roughness_texture(RenderBufferData
tf.format = RD::DATA_FORMAT_R8G8B8A8_UNORM;
tf.width = rb->width;
tf.height = rb->height;
+ if (rb->view_count > 1) {
+ tf.texture_type = RD::TEXTURE_TYPE_2D_ARRAY;
+ tf.array_layers = rb->view_count;
+ } else {
+ tf.texture_type = RD::TEXTURE_TYPE_2D;
+ tf.array_layers = 1;
+ }
tf.usage_bits = RD::TEXTURE_USAGE_SAMPLING_BIT | RD::TEXTURE_USAGE_STORAGE_BIT;
if (rb->msaa != RS::VIEWPORT_MSAA_DISABLED) {
@@ -291,7 +446,7 @@ void RenderForwardClustered::_allocate_normal_roughness_texture(RenderBufferData
Vector<RID> fb;
fb.push_back(rb->depth);
fb.push_back(rb->normal_roughness_buffer);
- rb->depth_normal_roughness_fb = RD::get_singleton()->framebuffer_create(fb);
+ rb->depth_normal_roughness_fb = RD::get_singleton()->framebuffer_create(fb, RD::INVALID_ID, rb->view_count);
} else {
tf.usage_bits = RD::TEXTURE_USAGE_COLOR_ATTACHMENT_BIT | RD::TEXTURE_USAGE_CAN_COPY_FROM_BIT | RD::TEXTURE_USAGE_SAMPLING_BIT | RD::TEXTURE_USAGE_STORAGE_BIT;
tf.samples = rb->texture_samples;
@@ -300,7 +455,21 @@ void RenderForwardClustered::_allocate_normal_roughness_texture(RenderBufferData
Vector<RID> fb;
fb.push_back(rb->depth_msaa);
fb.push_back(rb->normal_roughness_buffer_msaa);
- rb->depth_normal_roughness_fb = RD::get_singleton()->framebuffer_create(fb);
+ rb->depth_normal_roughness_fb = RD::get_singleton()->framebuffer_create(fb, RD::INVALID_ID, rb->view_count);
+ }
+
+ if (rb->view_count == 1) {
+ rb->normal_roughness_views[0] = rb->normal_roughness_buffer;
+ if (rb->msaa != RS::VIEWPORT_MSAA_DISABLED) {
+ rb->normal_roughness_msaa_views[0] = rb->normal_roughness_buffer_msaa;
+ }
+ } else {
+ for (uint32_t v = 0; v < rb->view_count; v++) {
+ rb->normal_roughness_views[v] = RD::get_singleton()->texture_create_shared_from_slice(RD::TextureView(), rb->normal_roughness_buffer, v, 0);
+ if (rb->msaa != RS::VIEWPORT_MSAA_DISABLED) {
+ rb->normal_roughness_msaa_views[v] = RD::get_singleton()->texture_create_shared_from_slice(RD::TextureView(), rb->normal_roughness_buffer_msaa, v, 0);
+ }
+ }
}
}
@@ -445,6 +614,10 @@ void RenderForwardClustered::_render_list_template(RenderingDevice::DrawListID p
pipeline_color_pass_flags |= SceneShaderForwardClustered::PIPELINE_COLOR_PASS_FLAG_SEPARATE_SPECULAR;
}
+ if constexpr ((p_color_pass_flags & COLOR_PASS_FLAG_MOTION_VECTORS) != 0) {
+ pipeline_color_pass_flags |= SceneShaderForwardClustered::PIPELINE_COLOR_PASS_FLAG_MOTION_VECTORS;
+ }
+
if constexpr ((p_color_pass_flags & COLOR_PASS_FLAG_TRANSPARENT) != 0) {
pipeline_color_pass_flags |= SceneShaderForwardClustered::PIPELINE_COLOR_PASS_FLAG_TRANSPARENT;
}
@@ -460,22 +633,21 @@ void RenderForwardClustered::_render_list_template(RenderingDevice::DrawListID p
pipeline_version = p_params->view_count > 1 ? SceneShaderForwardClustered::PIPELINE_VERSION_DEPTH_PASS_MULTIVIEW : SceneShaderForwardClustered::PIPELINE_VERSION_DEPTH_PASS;
} break;
case PASS_MODE_SHADOW_DP: {
- ERR_FAIL_COND_MSG(p_params->view_count > 1, "Multiview not supported for shadow DP pass");
+ ERR_FAIL_COND_MSG(p_params->view_count > 1, "Multiview not supported for shadow DP pass");
pipeline_version = SceneShaderForwardClustered::PIPELINE_VERSION_DEPTH_PASS_DP;
} break;
case PASS_MODE_DEPTH_NORMAL_ROUGHNESS: {
- ERR_FAIL_COND_MSG(p_params->view_count > 1, "Multiview not supported for depth/roughness pass");
- pipeline_version = SceneShaderForwardClustered::PIPELINE_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS;
+ pipeline_version = p_params->view_count > 1 ? SceneShaderForwardClustered::PIPELINE_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_MULTIVIEW : SceneShaderForwardClustered::PIPELINE_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS;
} break;
case PASS_MODE_DEPTH_NORMAL_ROUGHNESS_VOXEL_GI: {
- ERR_FAIL_COND_MSG(p_params->view_count > 1, "Multiview not supported for voxel GI pass");
- pipeline_version = SceneShaderForwardClustered::PIPELINE_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_AND_VOXEL_GI;
+ pipeline_version = p_params->view_count > 1 ? SceneShaderForwardClustered::PIPELINE_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_AND_VOXEL_GI_MULTIVIEW : SceneShaderForwardClustered::PIPELINE_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_AND_VOXEL_GI;
} break;
case PASS_MODE_DEPTH_MATERIAL: {
ERR_FAIL_COND_MSG(p_params->view_count > 1, "Multiview not supported for material pass");
pipeline_version = SceneShaderForwardClustered::PIPELINE_VERSION_DEPTH_PASS_WITH_MATERIAL;
} break;
case PASS_MODE_SDF: {
+ // Note, SDF is prepared in world space, this shouldn't be a multiview buffer even when stereoscopic rendering is used.
ERR_FAIL_COND_MSG(p_params->view_count > 1, "Multiview not supported for SDF pass");
pipeline_version = SceneShaderForwardClustered::PIPELINE_VERSION_DEPTH_PASS_WITH_SDF;
} break;
@@ -567,9 +739,14 @@ void RenderForwardClustered::_render_list(RenderingDevice::DrawListID p_draw_lis
switch (p_params->color_pass_flags) {
VALID_FLAG_COMBINATION(0);
VALID_FLAG_COMBINATION(COLOR_PASS_FLAG_TRANSPARENT);
+ VALID_FLAG_COMBINATION(COLOR_PASS_FLAG_TRANSPARENT | COLOR_PASS_FLAG_MULTIVIEW);
+ VALID_FLAG_COMBINATION(COLOR_PASS_FLAG_TRANSPARENT | COLOR_PASS_FLAG_MOTION_VECTORS);
VALID_FLAG_COMBINATION(COLOR_PASS_FLAG_SEPARATE_SPECULAR);
+ VALID_FLAG_COMBINATION(COLOR_PASS_FLAG_SEPARATE_SPECULAR | COLOR_PASS_FLAG_MULTIVIEW);
+ VALID_FLAG_COMBINATION(COLOR_PASS_FLAG_SEPARATE_SPECULAR | COLOR_PASS_FLAG_MOTION_VECTORS);
VALID_FLAG_COMBINATION(COLOR_PASS_FLAG_MULTIVIEW);
- VALID_FLAG_COMBINATION(COLOR_PASS_FLAG_TRANSPARENT | COLOR_PASS_FLAG_MULTIVIEW);
+ VALID_FLAG_COMBINATION(COLOR_PASS_FLAG_MULTIVIEW | COLOR_PASS_FLAG_MOTION_VECTORS);
+ VALID_FLAG_COMBINATION(COLOR_PASS_FLAG_MOTION_VECTORS);
default: {
ERR_FAIL_MSG("Invalid color pass flag combination " + itos(p_params->color_pass_flags));
}
@@ -631,6 +808,7 @@ void RenderForwardClustered::_setup_environment(const RenderDataRD *p_render_dat
//projection.flip_y(); // Vulkan and modern APIs use Y-Down
CameraMatrix correction;
correction.set_depth_correction(p_flip_y);
+ correction.add_jitter_offset(p_render_data->taa_jitter);
CameraMatrix projection = correction * p_render_data->cam_projection;
//store camera into ubo
@@ -643,8 +821,16 @@ void RenderForwardClustered::_setup_environment(const RenderDataRD *p_render_dat
projection = correction * p_render_data->view_projection[v];
RendererStorageRD::store_camera(projection, scene_state.ubo.projection_matrix_view[v]);
RendererStorageRD::store_camera(projection.inverse(), scene_state.ubo.inv_projection_matrix_view[v]);
+
+ scene_state.ubo.eye_offset[v][0] = p_render_data->view_eye_offset[v].x;
+ scene_state.ubo.eye_offset[v][1] = p_render_data->view_eye_offset[v].y;
+ scene_state.ubo.eye_offset[v][2] = p_render_data->view_eye_offset[v].z;
+ scene_state.ubo.eye_offset[v][3] = 0.0;
}
+ scene_state.ubo.taa_jitter[0] = p_render_data->taa_jitter.x;
+ scene_state.ubo.taa_jitter[1] = p_render_data->taa_jitter.y;
+
scene_state.ubo.z_far = p_render_data->z_far;
scene_state.ubo.z_near = p_render_data->z_near;
@@ -708,61 +894,7 @@ void RenderForwardClustered::_setup_environment(const RenderDataRD *p_render_dat
}
}
}
-#if 0
- if (p_render_data->render_buffers.is_valid() && render_buffers_is_sdfgi_enabled(p_render_data->render_buffers)) {
- scene_state.ubo.sdfgi_cascade_count = render_buffers_get_sdfgi_cascade_count(p_render_data->render_buffers);
- scene_state.ubo.sdfgi_probe_axis_size = render_buffers_get_sdfgi_cascade_probe_count(p_render_data->render_buffers);
- scene_state.ubo.sdfgi_cascade_probe_size[0] = scene_state.ubo.sdfgi_probe_axis_size - 1; //float version for performance
- scene_state.ubo.sdfgi_cascade_probe_size[1] = scene_state.ubo.sdfgi_probe_axis_size - 1;
- scene_state.ubo.sdfgi_cascade_probe_size[2] = scene_state.ubo.sdfgi_probe_axis_size - 1;
-
- float csize = render_buffers_get_sdfgi_cascade_size(p_render_data->render_buffers);
- scene_state.ubo.sdfgi_probe_to_uvw = 1.0 / float(scene_state.ubo.sdfgi_cascade_probe_size[0]);
- float occ_bias = 0.0;
- scene_state.ubo.sdfgi_occlusion_bias = occ_bias / csize;
- scene_state.ubo.sdfgi_use_occlusion = render_buffers_is_sdfgi_using_occlusion(p_render_data->render_buffers);
- scene_state.ubo.sdfgi_energy = render_buffers_get_sdfgi_energy(p_render_data->render_buffers);
-
- float cascade_voxel_size = (csize / scene_state.ubo.sdfgi_cascade_probe_size[0]);
- float occlusion_clamp = (cascade_voxel_size - 0.5) / cascade_voxel_size;
- scene_state.ubo.sdfgi_occlusion_clamp[0] = occlusion_clamp;
- scene_state.ubo.sdfgi_occlusion_clamp[1] = occlusion_clamp;
- scene_state.ubo.sdfgi_occlusion_clamp[2] = occlusion_clamp;
- scene_state.ubo.sdfgi_normal_bias = (render_buffers_get_sdfgi_normal_bias(p_render_data->render_buffers) / csize) * scene_state.ubo.sdfgi_cascade_probe_size[0];
-
- //vec2 tex_pixel_size = 1.0 / vec2(ivec2( (OCT_SIZE+2) * params.probe_axis_size * params.probe_axis_size, (OCT_SIZE+2) * params.probe_axis_size ) );
- //vec3 probe_uv_offset = (ivec3(OCT_SIZE+2,OCT_SIZE+2,(OCT_SIZE+2) * params.probe_axis_size)) * tex_pixel_size.xyx;
-
- uint32_t oct_size = gi.sdfgi_get_lightprobe_octahedron_size();
-
- scene_state.ubo.sdfgi_lightprobe_tex_pixel_size[0] = 1.0 / ((oct_size + 2) * scene_state.ubo.sdfgi_probe_axis_size * scene_state.ubo.sdfgi_probe_axis_size);
- scene_state.ubo.sdfgi_lightprobe_tex_pixel_size[1] = 1.0 / ((oct_size + 2) * scene_state.ubo.sdfgi_probe_axis_size);
- scene_state.ubo.sdfgi_lightprobe_tex_pixel_size[2] = 1.0;
-
- scene_state.ubo.sdfgi_probe_uv_offset[0] = float(oct_size + 2) * scene_state.ubo.sdfgi_lightprobe_tex_pixel_size[0];
- scene_state.ubo.sdfgi_probe_uv_offset[1] = float(oct_size + 2) * scene_state.ubo.sdfgi_lightprobe_tex_pixel_size[1];
- scene_state.ubo.sdfgi_probe_uv_offset[2] = float((oct_size + 2) * scene_state.ubo.sdfgi_probe_axis_size) * scene_state.ubo.sdfgi_lightprobe_tex_pixel_size[0];
-
- scene_state.ubo.sdfgi_occlusion_renormalize[0] = 0.5;
- scene_state.ubo.sdfgi_occlusion_renormalize[1] = 1.0;
- scene_state.ubo.sdfgi_occlusion_renormalize[2] = 1.0 / float(scene_state.ubo.sdfgi_cascade_count);
-
- for (uint32_t i = 0; i < scene_state.ubo.sdfgi_cascade_count; i++) {
- SceneState::UBO::SDFGICascade &c = scene_state.ubo.sdfgi_cascades[i];
- Vector3 pos = render_buffers_get_sdfgi_cascade_offset(p_render_data->render_buffers, i);
- pos -= p_render_data->cam_transform.origin; //make pos local to camera, to reduce numerical error
- c.position[0] = pos.x;
- c.position[1] = pos.y;
- c.position[2] = pos.z;
- c.to_probe = 1.0 / render_buffers_get_sdfgi_cascade_probe_size(p_render_data->render_buffers, i);
-
- Vector3i probe_ofs = render_buffers_get_sdfgi_cascade_probe_offset(p_render_data->render_buffers, i);
- c.probe_world_offset[0] = probe_ofs.x;
- c.probe_world_offset[1] = probe_ofs.y;
- c.probe_world_offset[2] = probe_ofs.z;
- }
- }
-#endif
+
if (get_debug_draw_mode() == RS::VIEWPORT_DEBUG_DRAW_UNSHADED) {
scene_state.ubo.use_ambient_light = true;
scene_state.ubo.ambient_light_color_energy[0] = 1;
@@ -862,14 +994,41 @@ void RenderForwardClustered::_setup_environment(const RenderDataRD *p_render_dat
scene_state.ubo.roughness_limiter_amount = screen_space_roughness_limiter_get_amount();
scene_state.ubo.roughness_limiter_limit = screen_space_roughness_limiter_get_limit();
+ if (p_render_data->render_buffers.is_valid()) {
+ RenderBufferDataForwardClustered *render_buffers = static_cast<RenderBufferDataForwardClustered *>(render_buffers_get_data(p_render_data->render_buffers));
+ if (render_buffers->use_taa || get_debug_draw_mode() == RS::VIEWPORT_DEBUG_DRAW_MOTION_VECTORS) {
+ memcpy(&scene_state.prev_ubo, &scene_state.ubo, sizeof(SceneState::UBO));
+
+ CameraMatrix prev_correction;
+ prev_correction.set_depth_correction(true);
+ prev_correction.add_jitter_offset(p_render_data->prev_taa_jitter);
+ CameraMatrix prev_projection = prev_correction * p_render_data->prev_cam_projection;
+
+ //store camera into ubo
+ RendererStorageRD::store_camera(prev_projection, scene_state.prev_ubo.projection_matrix);
+ RendererStorageRD::store_camera(prev_projection.inverse(), scene_state.prev_ubo.inv_projection_matrix);
+ RendererStorageRD::store_transform(p_render_data->prev_cam_transform, scene_state.prev_ubo.inv_view_matrix);
+ RendererStorageRD::store_transform(p_render_data->prev_cam_transform.affine_inverse(), scene_state.prev_ubo.view_matrix);
+
+ for (uint32_t v = 0; v < p_render_data->view_count; v++) {
+ prev_projection = prev_correction * p_render_data->view_projection[v];
+ RendererStorageRD::store_camera(prev_projection, scene_state.prev_ubo.projection_matrix_view[v]);
+ RendererStorageRD::store_camera(prev_projection.inverse(), scene_state.prev_ubo.inv_projection_matrix_view[v]);
+ }
+ scene_state.prev_ubo.taa_jitter[0] = p_render_data->prev_taa_jitter.x;
+ scene_state.prev_ubo.taa_jitter[1] = p_render_data->prev_taa_jitter.y;
+ scene_state.prev_ubo.time -= time_step;
+ }
+ }
+
if (p_index >= (int)scene_state.uniform_buffers.size()) {
uint32_t from = scene_state.uniform_buffers.size();
scene_state.uniform_buffers.resize(p_index + 1);
for (uint32_t i = from; i < scene_state.uniform_buffers.size(); i++) {
- scene_state.uniform_buffers[i] = RD::get_singleton()->uniform_buffer_create(sizeof(SceneState::UBO));
+ scene_state.uniform_buffers[i] = RD::get_singleton()->uniform_buffer_create(sizeof(SceneState::UBO) * 2);
}
}
- RD::get_singleton()->buffer_update(scene_state.uniform_buffers[p_index], 0, sizeof(SceneState::UBO), &scene_state.ubo, RD::BARRIER_MASK_RASTER);
+ RD::get_singleton()->buffer_update(scene_state.uniform_buffers[p_index], 0, sizeof(SceneState::UBO) * 2, &scene_state.ubo_data, RD::BARRIER_MASK_RASTER);
}
void RenderForwardClustered::_update_instance_data_buffer(RenderListType p_render_list) {
@@ -895,6 +1054,7 @@ void RenderForwardClustered::_fill_instance_data(RenderListType p_render_list, i
if (p_render_info) {
p_render_info[RS::VIEWPORT_RENDER_INFO_OBJECTS_IN_FRAME] += element_total;
}
+ uint64_t frame = RSG::rasterizer->get_frame_number();
uint32_t repeats = 0;
GeometryInstanceSurfaceDataCache *prev_surface = nullptr;
for (uint32_t i = 0; i < element_total; i++) {
@@ -903,10 +1063,17 @@ void RenderForwardClustered::_fill_instance_data(RenderListType p_render_list, i
SceneState::InstanceData &instance_data = scene_state.instance_data[p_render_list][i + p_offset];
+ if (inst->prev_transform_dirty && frame > inst->prev_transform_change_frame + 1 && inst->prev_transform_change_frame) {
+ inst->prev_transform = inst->transform;
+ inst->prev_transform_dirty = false;
+ }
+
if (inst->store_transform_cache) {
RendererStorageRD::store_transform(inst->transform, instance_data.transform);
+ RendererStorageRD::store_transform(inst->prev_transform, instance_data.prev_transform);
} else {
RendererStorageRD::store_transform(Transform3D(), instance_data.transform);
+ RendererStorageRD::store_transform(Transform3D(), instance_data.prev_transform);
}
instance_data.flags = inst->flags_cache;
@@ -1255,10 +1422,6 @@ void RenderForwardClustered::_render_scene(RenderDataRD *p_render_data, const Co
RENDER_TIMESTAMP("Setup 3D Scene");
//scene_state.ubo.subsurface_scatter_width = subsurface_scatter_size;
-
- Vector2 vp_he = p_render_data->cam_projection.get_viewport_half_extents();
- scene_state.ubo.viewport_size[0] = vp_he.x;
- scene_state.ubo.viewport_size[1] = vp_he.y;
scene_state.ubo.directional_light_count = 0;
scene_state.ubo.opaque_prepass_threshold = 0.99f;
@@ -1281,13 +1444,15 @@ void RenderForwardClustered::_render_scene(RenderDataRD *p_render_data, const Co
screen_size.x = render_buffer->width;
screen_size.y = render_buffer->height;
+ if (render_buffer->use_taa || get_debug_draw_mode() == RS::VIEWPORT_DEBUG_DRAW_MOTION_VECTORS) {
+ color_pass_flags |= COLOR_PASS_FLAG_MOTION_VECTORS;
+ }
+
if (p_render_data->voxel_gi_instances->size() > 0) {
using_voxelgi = true;
}
- if (p_render_data->view_count > 1) {
- depth_pass_mode = PASS_MODE_DEPTH;
- } else if (!p_render_data->environment.is_valid() && using_voxelgi) {
+ if (!p_render_data->environment.is_valid() && using_voxelgi) {
depth_pass_mode = PASS_MODE_DEPTH_NORMAL_ROUGHNESS_VOXEL_GI;
} else if (p_render_data->environment.is_valid() && (environment_is_ssr_enabled(p_render_data->environment) || environment_is_sdfgi_enabled(p_render_data->environment) || using_voxelgi)) {
if (environment_is_sdfgi_enabled(p_render_data->environment)) {
@@ -1350,6 +1515,9 @@ void RenderForwardClustered::_render_scene(RenderDataRD *p_render_data, const Co
ERR_FAIL(); //bug?
}
+ scene_state.ubo.viewport_size[0] = screen_size.x;
+ scene_state.ubo.viewport_size[1] = screen_size.y;
+
RD::get_singleton()->draw_command_begin_label("Render Setup");
_setup_lightmaps(*p_render_data->lightmaps, p_render_data->cam_transform);
@@ -1490,9 +1658,13 @@ void RenderForwardClustered::_render_scene(RenderDataRD *p_render_data, const Co
if (needs_pre_resolve) {
RD::get_singleton()->barrier(RD::BARRIER_MASK_RASTER, RD::BARRIER_MASK_COMPUTE);
}
- storage->get_effects()->resolve_gi(render_buffer->depth_msaa, render_buffer->normal_roughness_buffer_msaa, using_voxelgi ? render_buffer->voxelgi_buffer_msaa : RID(), render_buffer->depth, render_buffer->normal_roughness_buffer, using_voxelgi ? render_buffer->voxelgi_buffer : RID(), Vector2i(render_buffer->width, render_buffer->height), texture_multisamples[render_buffer->msaa]);
+ for (uint32_t v = 0; v < render_buffer->view_count; v++) {
+ resolve_effects->resolve_gi(render_buffer->depth_msaa_views[v], render_buffer->normal_roughness_msaa_views[v], using_voxelgi ? render_buffer->voxelgi_msaa_views[v] : RID(), render_buffer->depth_views[v], render_buffer->normal_roughness_views[v], using_voxelgi ? render_buffer->voxelgi_views[v] : RID(), Vector2i(render_buffer->width, render_buffer->height), texture_multisamples[render_buffer->msaa]);
+ }
} else if (finish_depth) {
- storage->get_effects()->resolve_depth(render_buffer->depth_msaa, render_buffer->depth, Vector2i(render_buffer->width, render_buffer->height), texture_multisamples[render_buffer->msaa]);
+ for (uint32_t v = 0; v < render_buffer->view_count; v++) {
+ resolve_effects->resolve_depth(render_buffer->depth_msaa_views[v], render_buffer->depth_views[v], Vector2i(render_buffer->width, render_buffer->height), texture_multisamples[render_buffer->msaa]);
+ }
}
RD::get_singleton()->draw_command_end_label();
}
@@ -1500,7 +1672,8 @@ void RenderForwardClustered::_render_scene(RenderDataRD *p_render_data, const Co
continue_depth = !finish_depth;
}
- _pre_opaque_render(p_render_data, using_ssao, using_ssil, using_sdfgi || using_voxelgi, render_buffer ? render_buffer->normal_roughness_buffer : RID(), render_buffer ? render_buffer->voxelgi_buffer : RID());
+ RID null_rids[2];
+ _pre_opaque_render(p_render_data, using_ssao, using_ssil, using_sdfgi || using_voxelgi, render_buffer ? render_buffer->normal_roughness_views : null_rids, render_buffer ? render_buffer->voxelgi_buffer : RID());
RD::get_singleton()->draw_command_begin_label("Render Opaque Pass");
@@ -1529,7 +1702,8 @@ void RenderForwardClustered::_render_scene(RenderDataRD *p_render_data, const Co
c.push_back(cc);
if (render_buffer) {
- c.push_back(Color(0, 0, 0, 0));
+ c.push_back(Color(0, 0, 0, 0)); // Separate specular
+ c.push_back(Color(0, 0, 0, 0)); // Motion vectors
}
}
@@ -1562,18 +1736,17 @@ void RenderForwardClustered::_render_scene(RenderDataRD *p_render_data, const Co
}
if (debug_sdfgi_probes) {
- //debug voxelgis
+ //debug sdfgi
bool will_continue_color = (can_continue_color || draw_sky || draw_sky_fog_only);
bool will_continue_depth = (can_continue_depth || draw_sky || draw_sky_fog_only);
CameraMatrix dc;
dc.set_depth_correction(true);
- CameraMatrix cm = (dc * p_render_data->cam_projection) * CameraMatrix(p_render_data->cam_transform.affine_inverse());
- RD::DrawListID draw_list = RD::get_singleton()->draw_list_begin(color_only_framebuffer, RD::INITIAL_ACTION_CONTINUE, will_continue_color ? RD::FINAL_ACTION_CONTINUE : RD::FINAL_ACTION_READ, RD::INITIAL_ACTION_CONTINUE, will_continue_depth ? RD::FINAL_ACTION_CONTINUE : RD::FINAL_ACTION_READ);
- RD::get_singleton()->draw_command_begin_label("Debug SDFGI");
- _debug_sdfgi_probes(p_render_data->render_buffers, draw_list, color_only_framebuffer, cm);
- RD::get_singleton()->draw_command_end_label();
- RD::get_singleton()->draw_list_end();
+ CameraMatrix cms[RendererSceneRender::MAX_RENDER_VIEWS];
+ for (uint32_t v = 0; v < p_render_data->view_count; v++) {
+ cms[v] = (dc * p_render_data->view_projection[v]) * CameraMatrix(p_render_data->cam_transform.affine_inverse());
+ }
+ _debug_sdfgi_probes(p_render_data->render_buffers, color_only_framebuffer, p_render_data->view_count, cms, will_continue_color, will_continue_depth);
}
if (draw_sky || draw_sky_fog_only) {
@@ -1593,14 +1766,20 @@ void RenderForwardClustered::_render_scene(RenderDataRD *p_render_data, const Co
}
if (render_buffer && !can_continue_color && render_buffer->msaa != RS::VIEWPORT_MSAA_DISABLED) {
- RD::get_singleton()->texture_resolve_multisample(render_buffer->color_msaa, render_buffer->color);
+ // Handle views individual, might want to look at rewriting our resolve to do both layers in one pass.
+ for (uint32_t v = 0; v < render_buffer->view_count; v++) {
+ RD::get_singleton()->texture_resolve_multisample(render_buffer->color_msaa_views[v], render_buffer->color_views[v]);
+ }
+ // TODO mame this do multiview
if (using_separate_specular) {
RD::get_singleton()->texture_resolve_multisample(render_buffer->specular_msaa, render_buffer->specular);
}
}
if (render_buffer && !can_continue_depth && render_buffer->msaa != RS::VIEWPORT_MSAA_DISABLED) {
- storage->get_effects()->resolve_depth(render_buffer->depth_msaa, render_buffer->depth, Vector2i(render_buffer->width, render_buffer->height), texture_multisamples[render_buffer->msaa]);
+ for (uint32_t v = 0; v < render_buffer->view_count; v++) {
+ resolve_effects->resolve_depth(render_buffer->depth_msaa_views[v], render_buffer->depth_views[v], Vector2i(render_buffer->width, render_buffer->height), texture_multisamples[render_buffer->msaa]);
+ }
}
if (using_separate_specular) {
@@ -1642,7 +1821,7 @@ void RenderForwardClustered::_render_scene(RenderDataRD *p_render_data, const Co
_setup_environment(p_render_data, p_render_data->reflection_probe.is_valid(), screen_size, !p_render_data->reflection_probe.is_valid(), p_default_bg_color, false);
{
- uint32_t transparent_color_pass_flags = (color_pass_flags | COLOR_PASS_FLAG_TRANSPARENT) & ~COLOR_PASS_FLAG_SEPARATE_SPECULAR;
+ uint32_t transparent_color_pass_flags = (color_pass_flags | COLOR_PASS_FLAG_TRANSPARENT) & ~(COLOR_PASS_FLAG_SEPARATE_SPECULAR);
RID alpha_framebuffer = render_buffer ? render_buffer->get_color_pass_fb(transparent_color_pass_flags) : color_only_framebuffer;
RenderListParameters render_list_params(render_list[RENDER_LIST_ALPHA].elements.ptr(), render_list[RENDER_LIST_ALPHA].element_info.ptr(), render_list[RENDER_LIST_ALPHA].elements.size(), false, PASS_MODE_COLOR, transparent_color_pass_flags, render_buffer == nullptr, p_render_data->directional_light_soft_shadows, rp_uniform_set, get_debug_draw_mode() == RS::VIEWPORT_DEBUG_DRAW_WIREFRAME, Vector2(), p_render_data->lod_camera_plane, p_render_data->lod_distance_multiplier, p_render_data->screen_mesh_lod_threshold, p_render_data->view_count);
_render_list_with_threads(&render_list_params, alpha_framebuffer, can_continue_color ? RD::INITIAL_ACTION_CONTINUE : RD::INITIAL_ACTION_KEEP, RD::FINAL_ACTION_READ, can_continue_depth ? RD::INITIAL_ACTION_CONTINUE : RD::INITIAL_ACTION_KEEP, RD::FINAL_ACTION_READ);
@@ -1655,8 +1834,13 @@ void RenderForwardClustered::_render_scene(RenderDataRD *p_render_data, const Co
RD::get_singleton()->draw_command_begin_label("Resolve");
if (render_buffer && render_buffer->msaa != RS::VIEWPORT_MSAA_DISABLED) {
- RD::get_singleton()->texture_resolve_multisample(render_buffer->color_msaa, render_buffer->color);
- storage->get_effects()->resolve_depth(render_buffer->depth_msaa, render_buffer->depth, Vector2i(render_buffer->width, render_buffer->height), texture_multisamples[render_buffer->msaa]);
+ for (uint32_t v = 0; v < render_buffer->view_count; v++) {
+ RD::get_singleton()->texture_resolve_multisample(render_buffer->color_msaa_views[v], render_buffer->color_views[v]);
+ resolve_effects->resolve_depth(render_buffer->depth_msaa_views[v], render_buffer->depth_views[v], Vector2i(render_buffer->width, render_buffer->height), texture_multisamples[render_buffer->msaa]);
+ }
+ if (render_buffer->use_taa) { // TODO make TAA stereo capable, this will need to be handled in a separate PR
+ RD::get_singleton()->texture_resolve_multisample(render_buffer->velocity_buffer_msaa, render_buffer->velocity_buffer);
+ }
}
RD::get_singleton()->draw_command_end_label();
@@ -1668,6 +1852,11 @@ void RenderForwardClustered::_render_scene(RenderDataRD *p_render_data, const Co
}
RD::get_singleton()->draw_command_end_label();
+ if (render_buffer && render_buffer->use_taa) {
+ RENDER_TIMESTAMP("TAA")
+ _process_taa(p_render_data->render_buffers, render_buffer->velocity_buffer, p_render_data->z_near, p_render_data->z_far);
+ }
+
if (p_render_data->render_buffers.is_valid()) {
_debug_draw_cluster(p_render_data->render_buffers);
@@ -2594,7 +2783,13 @@ RID RenderForwardClustered::_setup_sdfgi_render_pass_uniform_set(RID p_albedo_te
RID RenderForwardClustered::_render_buffers_get_normal_texture(RID p_render_buffers) {
RenderBufferDataForwardClustered *rb = static_cast<RenderBufferDataForwardClustered *>(render_buffers_get_data(p_render_buffers));
- return rb->normal_roughness_buffer;
+ return rb->msaa == RS::VIEWPORT_MSAA_DISABLED ? rb->normal_roughness_buffer : rb->normal_roughness_buffer_msaa;
+}
+
+RID RenderForwardClustered::_render_buffers_get_velocity_texture(RID p_render_buffers) {
+ RenderBufferDataForwardClustered *rb = static_cast<RenderBufferDataForwardClustered *>(render_buffers_get_data(p_render_buffers));
+
+ return rb->msaa == RS::VIEWPORT_MSAA_DISABLED ? rb->velocity_buffer : rb->velocity_buffer_msaa;
}
RenderForwardClustered *RenderForwardClustered::singleton = nullptr;
@@ -3014,6 +3209,13 @@ void RenderForwardClustered::geometry_instance_set_mesh_instance(GeometryInstanc
void RenderForwardClustered::geometry_instance_set_transform(GeometryInstance *p_geometry_instance, const Transform3D &p_transform, const AABB &p_aabb, const AABB &p_transformed_aabb) {
GeometryInstanceForwardClustered *ginstance = static_cast<GeometryInstanceForwardClustered *>(p_geometry_instance);
ERR_FAIL_COND(!ginstance);
+
+ uint64_t frame = RSG::rasterizer->get_frame_number();
+ if (frame != ginstance->prev_transform_change_frame) {
+ ginstance->prev_transform = ginstance->transform;
+ ginstance->prev_transform_change_frame = frame;
+ ginstance->prev_transform_dirty = true;
+ }
ginstance->transform = p_transform;
ginstance->mirror = p_transform.basis.determinant() < 0;
ginstance->data->aabb = p_aabb;
@@ -3257,9 +3459,16 @@ RenderForwardClustered::RenderForwardClustered(RendererStorageRD *p_storage) :
render_list_thread_threshold = GLOBAL_GET("rendering/limits/forward_renderer/threaded_render_minimum_instances");
_update_shader_quality_settings();
+
+ resolve_effects = memnew(RendererRD::Resolve());
}
RenderForwardClustered::~RenderForwardClustered() {
+ if (resolve_effects != nullptr) {
+ memdelete(resolve_effects);
+ resolve_effects = nullptr;
+ }
+
directional_shadow_atlas_set_size(0);
{
diff --git a/servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.h b/servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.h
index bec10f7f0e..dd3d14f0a8 100644
--- a/servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.h
+++ b/servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.h
@@ -32,6 +32,7 @@
#define RENDERING_SERVER_SCENE_RENDER_FORWARD_CLUSTERED_H
#include "core/templates/paged_allocator.h"
+#include "servers/rendering/renderer_rd/effects/resolve.h"
#include "servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.h"
#include "servers/rendering/renderer_rd/pipeline_cache_rd.h"
#include "servers/rendering/renderer_rd/renderer_scene_render_rd.h"
@@ -72,7 +73,6 @@ class RenderForwardClustered : public RendererSceneRenderRD {
RENDER_LIST_ALPHA, //used for transparent objects
RENDER_LIST_SECONDARY, //used for shadows and other objects
RENDER_LIST_MAX
-
};
/* Scene Shader */
@@ -89,16 +89,18 @@ class RenderForwardClustered : public RendererSceneRenderRD {
RID specular;
RID normal_roughness_buffer;
RID voxelgi_buffer;
+ RID velocity_buffer;
RS::ViewportMSAA msaa;
RD::TextureSamples texture_samples;
+ bool use_taa;
RID color_msaa;
RID depth_msaa;
RID specular_msaa;
RID normal_roughness_buffer_msaa;
- RID roughness_buffer_msaa;
RID voxelgi_buffer_msaa;
+ RID velocity_buffer_msaa;
RID depth_fb;
RID depth_normal_roughness_fb;
@@ -107,13 +109,24 @@ class RenderForwardClustered : public RendererSceneRenderRD {
RID specular_only_fb;
int width, height;
HashMap<uint32_t, RID> color_framebuffers;
+
+ // for multiview
uint32_t view_count;
+ RID color_views[RendererSceneRender::MAX_RENDER_VIEWS]; // we should rewrite this so we get access to the existing views in our renderer, something we can address when we reorg this
+ RID depth_views[RendererSceneRender::MAX_RENDER_VIEWS]; // we should rewrite this so we get access to the existing views in our renderer, something we can address when we reorg this
+ RID color_msaa_views[RendererSceneRender::MAX_RENDER_VIEWS];
+ RID depth_msaa_views[RendererSceneRender::MAX_RENDER_VIEWS];
+ RID normal_roughness_views[RendererSceneRender::MAX_RENDER_VIEWS];
+ RID normal_roughness_msaa_views[RendererSceneRender::MAX_RENDER_VIEWS];
+ RID voxelgi_views[RendererSceneRender::MAX_RENDER_VIEWS];
+ RID voxelgi_msaa_views[RendererSceneRender::MAX_RENDER_VIEWS];
RID render_sdfgi_uniform_set;
void ensure_specular();
void ensure_voxelgi();
+ void ensure_velocity();
void clear();
- virtual void configure(RID p_color_buffer, RID p_depth_buffer, RID p_target_buffer, int p_width, int p_height, RS::ViewportMSAA p_msaa, uint32_t p_view_count);
+ virtual void configure(RID p_color_buffer, RID p_depth_buffer, RID p_target_buffer, int p_width, int p_height, RS::ViewportMSAA p_msaa, bool p_use_taa, uint32_t p_view_count);
RID get_color_pass_fb(uint32_t p_color_pass_flags);
~RenderBufferDataForwardClustered();
@@ -128,6 +141,7 @@ class RenderForwardClustered : public RendererSceneRenderRD {
virtual void _base_uniforms_changed() override;
virtual RID _render_buffers_get_normal_texture(RID p_render_buffers) override;
+ virtual RID _render_buffers_get_velocity_texture(RID p_render_buffers) override;
bool base_uniform_set_updated = false;
void _update_render_base_uniform_set();
@@ -148,7 +162,8 @@ class RenderForwardClustered : public RendererSceneRenderRD {
enum ColorPassFlags {
COLOR_PASS_FLAG_TRANSPARENT = 1 << 0,
COLOR_PASS_FLAG_SEPARATE_SPECULAR = 1 << 1,
- COLOR_PASS_FLAG_MULTIVIEW = 1 << 2
+ COLOR_PASS_FLAG_MULTIVIEW = 1 << 2,
+ COLOR_PASS_FLAG_MOTION_VECTORS = 1 << 3,
};
struct GeometryInstanceSurfaceDataCache;
@@ -231,6 +246,7 @@ class RenderForwardClustered : public RendererSceneRenderRD {
float projection_matrix_view[RendererSceneRender::MAX_RENDER_VIEWS][16];
float inv_projection_matrix_view[RendererSceneRender::MAX_RENDER_VIEWS][16];
+ float eye_offset[RendererSceneRender::MAX_RENDER_VIEWS][4];
float viewport_size[2];
float screen_pixel_size[2];
@@ -300,6 +316,9 @@ class RenderForwardClustered : public RendererSceneRenderRD {
float reflection_multiplier;
uint32_t pancake_shadows;
+
+ float taa_jitter[2];
+ uint32_t pad[2];
};
struct PushConstant {
@@ -310,6 +329,7 @@ class RenderForwardClustered : public RendererSceneRenderRD {
struct InstanceData {
float transform[16];
+ float prev_transform[16];
uint32_t flags;
uint32_t instance_uniforms_ofs; //base offset in global buffer for instance variables
uint32_t gi_offset; //GI information when using lightmapping (VCT or lightmap index)
@@ -317,7 +337,9 @@ class RenderForwardClustered : public RendererSceneRenderRD {
float lightmap_uv_scale[4];
};
- UBO ubo;
+ UBO ubo_data[2];
+ UBO &ubo = ubo_data[0];
+ UBO &prev_ubo = ubo_data[1];
LocalVector<RID> uniform_buffers;
@@ -492,7 +514,10 @@ class RenderForwardClustered : public RendererSceneRenderRD {
//used during setup
uint32_t base_flags = 0;
+ uint64_t prev_transform_change_frame = 0xFFFFFFFF;
+ bool prev_transform_dirty = true;
Transform3D transform;
+ Transform3D prev_transform;
RID voxel_gi_instances[MAX_VOXEL_GI_INSTANCESS_PER_INSTANCE];
RID lightmap_instance;
GeometryInstanceLightmapSH *lightmap_sh = nullptr;
@@ -603,6 +628,8 @@ class RenderForwardClustered : public RendererSceneRenderRD {
virtual void _update_shader_quality_settings() override;
+ RendererRD::Resolve *resolve_effects = nullptr;
+
protected:
virtual void _render_scene(RenderDataRD *p_render_data, const Color &p_default_bg_color) override;
diff --git a/servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.cpp b/servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.cpp
index bd39dd9c70..aada989bcb 100644
--- a/servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.cpp
+++ b/servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.cpp
@@ -235,10 +235,10 @@ void SceneShaderForwardClustered::ShaderData::set_code(const String &p_code) {
}
}
- // Color pass -> attachment 0: Color/Diffuse, attachment 1: Separate Specular
+ // Color pass -> attachment 0: Color/Diffuse, attachment 1: Separate Specular, attachment 2: Motion Vectors
RD::PipelineColorBlendState blend_state_color_blend;
- blend_state_color_blend.attachments = { blend_attachment, RD::PipelineColorBlendState::Attachment() };
- RD::PipelineColorBlendState blend_state_color_opaque = RD::PipelineColorBlendState::create_disabled(2);
+ blend_state_color_blend.attachments = { blend_attachment, RD::PipelineColorBlendState::Attachment(), RD::PipelineColorBlendState::Attachment() };
+ RD::PipelineColorBlendState blend_state_color_opaque = RD::PipelineColorBlendState::create_disabled(3);
RD::PipelineColorBlendState blend_state_depth_normal_roughness = RD::PipelineColorBlendState::create_disabled(1);
RD::PipelineColorBlendState blend_state_depth_normal_roughness_giprobe = RD::PipelineColorBlendState::create_disabled(2);
@@ -282,6 +282,8 @@ void SceneShaderForwardClustered::ShaderData::set_code(const String &p_code) {
SHADER_VERSION_DEPTH_PASS_WITH_MATERIAL,
SHADER_VERSION_DEPTH_PASS_WITH_SDF,
SHADER_VERSION_DEPTH_PASS_MULTIVIEW,
+ SHADER_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_MULTIVIEW,
+ SHADER_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_AND_VOXEL_GI_MULTIVIEW,
SHADER_VERSION_COLOR_PASS,
};
@@ -326,6 +328,10 @@ void SceneShaderForwardClustered::ShaderData::set_code(const String &p_code) {
}
}
+ if (l & PIPELINE_COLOR_PASS_FLAG_MOTION_VECTORS) {
+ shader_flags |= SHADER_COLOR_PASS_FLAG_MOTION_VECTORS;
+ }
+
if (l & PIPELINE_COLOR_PASS_FLAG_LIGHTMAP) {
shader_flags |= SHADER_COLOR_PASS_FLAG_LIGHTMAP;
}
@@ -345,9 +351,9 @@ void SceneShaderForwardClustered::ShaderData::set_code(const String &p_code) {
if (k == PIPELINE_VERSION_DEPTH_PASS || k == PIPELINE_VERSION_DEPTH_PASS_DP || k == PIPELINE_VERSION_DEPTH_PASS_MULTIVIEW) {
//none, leave empty
- } else if (k == PIPELINE_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS) {
+ } else if (k == PIPELINE_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS || k == PIPELINE_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_MULTIVIEW) {
blend_state = blend_state_depth_normal_roughness;
- } else if (k == PIPELINE_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_AND_VOXEL_GI) {
+ } else if (k == PIPELINE_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_AND_VOXEL_GI || k == PIPELINE_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_AND_VOXEL_GI_MULTIVIEW) {
blend_state = blend_state_depth_normal_roughness_giprobe;
} else if (k == PIPELINE_VERSION_DEPTH_PASS_WITH_MATERIAL) {
blend_state = RD::PipelineColorBlendState::create_disabled(5); //writes to normal and roughness in opaque way
@@ -523,15 +529,18 @@ void SceneShaderForwardClustered::init(RendererStorageRD *p_storage, const Strin
shader_versions.push_back("\n#define MODE_RENDER_DEPTH\n"); // SHADER_VERSION_DEPTH_PASS
shader_versions.push_back("\n#define MODE_RENDER_DEPTH\n#define MODE_DUAL_PARABOLOID\n"); // SHADER_VERSION_DEPTH_PASS_DP
shader_versions.push_back("\n#define MODE_RENDER_DEPTH\n#define MODE_RENDER_NORMAL_ROUGHNESS\n"); // SHADER_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS
- shader_versions.push_back("\n#define MODE_RENDER_DEPTH\n#define MODE_RENDER_NORMAL_ROUGHNESS\n#define MODE_RENDER_VOXEL_GI\n"); // SHADER_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_AND_GIPROBE
+ shader_versions.push_back("\n#define MODE_RENDER_DEPTH\n#define MODE_RENDER_NORMAL_ROUGHNESS\n#define MODE_RENDER_VOXEL_GI\n"); // SHADER_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_AND_VOXEL_GI
shader_versions.push_back("\n#define MODE_RENDER_DEPTH\n#define MODE_RENDER_MATERIAL\n"); // SHADER_VERSION_DEPTH_PASS_WITH_MATERIAL
shader_versions.push_back("\n#define MODE_RENDER_DEPTH\n#define MODE_RENDER_SDF\n"); // SHADER_VERSION_DEPTH_PASS_WITH_SDF
shader_versions.push_back("\n#define USE_MULTIVIEW\n#define MODE_RENDER_DEPTH\n"); // SHADER_VERSION_DEPTH_PASS_MULTIVIEW
+ shader_versions.push_back("\n#define USE_MULTIVIEW\n#define MODE_RENDER_DEPTH\n#define MODE_RENDER_NORMAL_ROUGHNESS\n"); // SHADER_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_MULTIVIEW
+ shader_versions.push_back("\n#define USE_MULTIVIEW\n#define MODE_RENDER_DEPTH\n#define MODE_RENDER_NORMAL_ROUGHNESS\n#define MODE_RENDER_VOXEL_GI\n"); // SHADER_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_AND_VOXEL_GI_MULTIVIEW
Vector<String> color_pass_flags = {
"\n#define MODE_SEPARATE_SPECULAR\n", // SHADER_COLOR_PASS_FLAG_SEPARATE_SPECULAR
"\n#define USE_LIGHTMAP\n", // SHADER_COLOR_PASS_FLAG_LIGHTMAP
"\n#define USE_MULTIVIEW\n", // SHADER_COLOR_PASS_FLAG_MULTIVIEW
+ "\n#define MOTION_VECTORS\n", // SHADER_COLOR_PASS_FLAG_MOTION_VECTORS
};
for (int i = 0; i < SHADER_COLOR_PASS_FLAG_COUNT; i++) {
@@ -548,6 +557,8 @@ void SceneShaderForwardClustered::init(RendererStorageRD *p_storage, const Strin
if (!RendererCompositorRD::singleton->is_xr_enabled()) {
shader.set_variant_enabled(SHADER_VERSION_DEPTH_PASS_MULTIVIEW, false);
+ shader.set_variant_enabled(SHADER_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_MULTIVIEW, false);
+ shader.set_variant_enabled(SHADER_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_AND_VOXEL_GI_MULTIVIEW, false);
// TODO Add a way to enable/disable color pass flags
}
}
@@ -557,17 +568,29 @@ void SceneShaderForwardClustered::init(RendererStorageRD *p_storage, const Strin
valid_color_pass_pipelines.insert(PIPELINE_COLOR_PASS_FLAG_TRANSPARENT);
valid_color_pass_pipelines.insert(PIPELINE_COLOR_PASS_FLAG_TRANSPARENT | PIPELINE_COLOR_PASS_FLAG_LIGHTMAP);
valid_color_pass_pipelines.insert(PIPELINE_COLOR_PASS_FLAG_TRANSPARENT | PIPELINE_COLOR_PASS_FLAG_MULTIVIEW);
- valid_color_pass_pipelines.insert(PIPELINE_COLOR_PASS_FLAG_TRANSPARENT | PIPELINE_COLOR_PASS_FLAG_MULTIVIEW | PIPELINE_COLOR_PASS_FLAG_LIGHTMAP);
+ valid_color_pass_pipelines.insert(PIPELINE_COLOR_PASS_FLAG_TRANSPARENT | PIPELINE_COLOR_PASS_FLAG_MOTION_VECTORS);
+ valid_color_pass_pipelines.insert(PIPELINE_COLOR_PASS_FLAG_TRANSPARENT | PIPELINE_COLOR_PASS_FLAG_LIGHTMAP | PIPELINE_COLOR_PASS_FLAG_MULTIVIEW);
+ valid_color_pass_pipelines.insert(PIPELINE_COLOR_PASS_FLAG_TRANSPARENT | PIPELINE_COLOR_PASS_FLAG_LIGHTMAP | PIPELINE_COLOR_PASS_FLAG_MOTION_VECTORS);
+ valid_color_pass_pipelines.insert(PIPELINE_COLOR_PASS_FLAG_TRANSPARENT | PIPELINE_COLOR_PASS_FLAG_MULTIVIEW | PIPELINE_COLOR_PASS_FLAG_MOTION_VECTORS);
+ valid_color_pass_pipelines.insert(PIPELINE_COLOR_PASS_FLAG_TRANSPARENT | PIPELINE_COLOR_PASS_FLAG_LIGHTMAP | PIPELINE_COLOR_PASS_FLAG_MULTIVIEW | PIPELINE_COLOR_PASS_FLAG_MOTION_VECTORS);
valid_color_pass_pipelines.insert(PIPELINE_COLOR_PASS_FLAG_SEPARATE_SPECULAR);
valid_color_pass_pipelines.insert(PIPELINE_COLOR_PASS_FLAG_SEPARATE_SPECULAR | PIPELINE_COLOR_PASS_FLAG_LIGHTMAP);
valid_color_pass_pipelines.insert(PIPELINE_COLOR_PASS_FLAG_SEPARATE_SPECULAR | PIPELINE_COLOR_PASS_FLAG_MULTIVIEW);
- valid_color_pass_pipelines.insert(PIPELINE_COLOR_PASS_FLAG_SEPARATE_SPECULAR | PIPELINE_COLOR_PASS_FLAG_MULTIVIEW | PIPELINE_COLOR_PASS_FLAG_LIGHTMAP);
+ valid_color_pass_pipelines.insert(PIPELINE_COLOR_PASS_FLAG_SEPARATE_SPECULAR | PIPELINE_COLOR_PASS_FLAG_MOTION_VECTORS);
+ valid_color_pass_pipelines.insert(PIPELINE_COLOR_PASS_FLAG_SEPARATE_SPECULAR | PIPELINE_COLOR_PASS_FLAG_LIGHTMAP | PIPELINE_COLOR_PASS_FLAG_MULTIVIEW);
+ valid_color_pass_pipelines.insert(PIPELINE_COLOR_PASS_FLAG_SEPARATE_SPECULAR | PIPELINE_COLOR_PASS_FLAG_LIGHTMAP | PIPELINE_COLOR_PASS_FLAG_MOTION_VECTORS);
+ valid_color_pass_pipelines.insert(PIPELINE_COLOR_PASS_FLAG_SEPARATE_SPECULAR | PIPELINE_COLOR_PASS_FLAG_LIGHTMAP | PIPELINE_COLOR_PASS_FLAG_MULTIVIEW | PIPELINE_COLOR_PASS_FLAG_MOTION_VECTORS);
valid_color_pass_pipelines.insert(PIPELINE_COLOR_PASS_FLAG_LIGHTMAP);
valid_color_pass_pipelines.insert(PIPELINE_COLOR_PASS_FLAG_LIGHTMAP | PIPELINE_COLOR_PASS_FLAG_MULTIVIEW);
+ valid_color_pass_pipelines.insert(PIPELINE_COLOR_PASS_FLAG_LIGHTMAP | PIPELINE_COLOR_PASS_FLAG_MOTION_VECTORS);
+ valid_color_pass_pipelines.insert(PIPELINE_COLOR_PASS_FLAG_LIGHTMAP | PIPELINE_COLOR_PASS_FLAG_MULTIVIEW | PIPELINE_COLOR_PASS_FLAG_MOTION_VECTORS);
valid_color_pass_pipelines.insert(PIPELINE_COLOR_PASS_FLAG_MULTIVIEW);
+ valid_color_pass_pipelines.insert(PIPELINE_COLOR_PASS_FLAG_MULTIVIEW | PIPELINE_COLOR_PASS_FLAG_MOTION_VECTORS);
+
+ valid_color_pass_pipelines.insert(PIPELINE_COLOR_PASS_FLAG_MOTION_VECTORS);
material_storage->shader_set_data_request_function(RendererRD::SHADER_TYPE_3D, _create_shader_funcs);
material_storage->material_set_data_request_function(RendererRD::SHADER_TYPE_3D, _create_material_funcs);
@@ -604,7 +627,7 @@ void SceneShaderForwardClustered::init(RendererStorageRD *p_storage, const Strin
//builtins
- actions.renames["TIME"] = "scene_data.time";
+ actions.renames["TIME"] = "global_time";
actions.renames["PI"] = _MKSTR(Math_PI);
actions.renames["TAU"] = _MKSTR(Math_TAU);
actions.renames["E"] = _MKSTR(Math_E);
@@ -743,7 +766,7 @@ void SceneShaderForwardClustered::init(RendererStorageRD *p_storage, const Strin
actions.base_texture_binding_index = 1;
actions.texture_layout_set = RenderForwardClustered::MATERIAL_UNIFORM_SET;
actions.base_uniform_string = "material.";
- actions.base_varying_index = 10;
+ actions.base_varying_index = 11;
actions.default_filter = ShaderLanguage::FILTER_LINEAR_MIPMAP;
actions.default_repeat = ShaderLanguage::REPEAT_ENABLE;
diff --git a/servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.h b/servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.h
index a4eb0656b7..ffa3893b6a 100644
--- a/servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.h
+++ b/servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.h
@@ -52,6 +52,8 @@ public:
SHADER_VERSION_DEPTH_PASS_WITH_MATERIAL,
SHADER_VERSION_DEPTH_PASS_WITH_SDF,
SHADER_VERSION_DEPTH_PASS_MULTIVIEW,
+ SHADER_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_MULTIVIEW,
+ SHADER_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_AND_VOXEL_GI_MULTIVIEW,
SHADER_VERSION_COLOR_PASS,
SHADER_VERSION_MAX
};
@@ -60,7 +62,8 @@ public:
SHADER_COLOR_PASS_FLAG_SEPARATE_SPECULAR = 1 << 0,
SHADER_COLOR_PASS_FLAG_LIGHTMAP = 1 << 1,
SHADER_COLOR_PASS_FLAG_MULTIVIEW = 1 << 2,
- SHADER_COLOR_PASS_FLAG_COUNT = 1 << 3
+ SHADER_COLOR_PASS_FLAG_MOTION_VECTORS = 1 << 3,
+ SHADER_COLOR_PASS_FLAG_COUNT = 1 << 4
};
enum PipelineVersion {
@@ -71,6 +74,8 @@ public:
PIPELINE_VERSION_DEPTH_PASS_WITH_MATERIAL,
PIPELINE_VERSION_DEPTH_PASS_WITH_SDF,
PIPELINE_VERSION_DEPTH_PASS_MULTIVIEW,
+ PIPELINE_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_MULTIVIEW,
+ PIPELINE_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_AND_VOXEL_GI_MULTIVIEW,
PIPELINE_VERSION_COLOR_PASS,
PIPELINE_VERSION_MAX
};
@@ -80,7 +85,8 @@ public:
PIPELINE_COLOR_PASS_FLAG_SEPARATE_SPECULAR = 1 << 1,
PIPELINE_COLOR_PASS_FLAG_LIGHTMAP = 1 << 2,
PIPELINE_COLOR_PASS_FLAG_MULTIVIEW = 1 << 3,
- PIPELINE_COLOR_PASS_FLAG_COUNT = 1 << 4,
+ PIPELINE_COLOR_PASS_FLAG_MOTION_VECTORS = 1 << 4,
+ PIPELINE_COLOR_PASS_FLAG_COUNT = 1 << 5,
};
enum ShaderSpecializations {
diff --git a/servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.cpp b/servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.cpp
index 1cbf804ece..25acd2e25f 100644
--- a/servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.cpp
+++ b/servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.cpp
@@ -87,7 +87,7 @@ void RenderForwardMobile::RenderBufferDataForwardMobile::clear() {
}
}
-void RenderForwardMobile::RenderBufferDataForwardMobile::configure(RID p_color_buffer, RID p_depth_buffer, RID p_target_buffer, int p_width, int p_height, RS::ViewportMSAA p_msaa, uint32_t p_view_count) {
+void RenderForwardMobile::RenderBufferDataForwardMobile::configure(RID p_color_buffer, RID p_depth_buffer, RID p_target_buffer, int p_width, int p_height, RS::ViewportMSAA p_msaa, bool p_use_taa, uint32_t p_view_count) {
clear();
msaa = p_msaa;
@@ -485,9 +485,6 @@ void RenderForwardMobile::_render_scene(RenderDataRD *p_render_data, const Color
RENDER_TIMESTAMP("Setup 3D Scene");
- Vector2 vp_he = p_render_data->cam_projection.get_viewport_half_extents();
- scene_state.ubo.viewport_size[0] = vp_he.x;
- scene_state.ubo.viewport_size[1] = vp_he.y;
scene_state.ubo.directional_light_count = 0;
scene_state.ubo.opaque_prepass_threshold = 0.0;
@@ -567,6 +564,9 @@ void RenderForwardMobile::_render_scene(RenderDataRD *p_render_data, const Color
ERR_FAIL(); //bug?
}
+ scene_state.ubo.viewport_size[0] = screen_size.x;
+ scene_state.ubo.viewport_size[1] = screen_size.y;
+
RD::get_singleton()->draw_command_begin_label("Render Setup");
_setup_lightmaps(*p_render_data->lightmaps, p_render_data->cam_transform);
@@ -675,7 +675,8 @@ void RenderForwardMobile::_render_scene(RenderDataRD *p_render_data, const Color
RD::get_singleton()->draw_command_end_label(); // Setup Sky resolution buffers
}
- _pre_opaque_render(p_render_data, false, false, false, RID(), RID());
+ RID null_rids[2];
+ _pre_opaque_render(p_render_data, false, false, false, null_rids, RID());
uint32_t spec_constant_base_flags = 0;
@@ -1324,6 +1325,10 @@ RID RenderForwardMobile::_render_buffers_get_normal_texture(RID p_render_buffers
return RID();
}
+RID RenderForwardMobile::_render_buffers_get_velocity_texture(RID p_render_buffers) {
+ return RID();
+}
+
_FORCE_INLINE_ static uint32_t _indices_to_primitives(RS::PrimitiveType p_primitive, uint32_t p_indices) {
static const uint32_t divisor[RS::PRIMITIVE_MAX] = { 1, 2, 1, 3, 1 };
static const uint32_t subtractor[RS::PRIMITIVE_MAX] = { 0, 0, 1, 0, 1 };
@@ -1538,6 +1543,11 @@ void RenderForwardMobile::_setup_environment(const RenderDataRD *p_render_data,
projection = correction * p_render_data->view_projection[v];
RendererStorageRD::store_camera(projection, scene_state.ubo.projection_matrix_view[v]);
RendererStorageRD::store_camera(projection.inverse(), scene_state.ubo.inv_projection_matrix_view[v]);
+
+ scene_state.ubo.eye_offset[v][0] = p_render_data->view_eye_offset[v].x;
+ scene_state.ubo.eye_offset[v][1] = p_render_data->view_eye_offset[v].y;
+ scene_state.ubo.eye_offset[v][2] = p_render_data->view_eye_offset[v].z;
+ scene_state.ubo.eye_offset[v][3] = 0.0;
}
scene_state.ubo.z_far = p_render_data->z_far;
diff --git a/servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.h b/servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.h
index 0a7e973120..1b2df0ab9f 100644
--- a/servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.h
+++ b/servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.h
@@ -136,7 +136,7 @@ protected:
uint32_t view_count;
void clear();
- virtual void configure(RID p_color_buffer, RID p_depth_buffer, RID p_target_buffer, int p_width, int p_height, RS::ViewportMSAA p_msaa, uint32_t p_view_count);
+ virtual void configure(RID p_color_buffer, RID p_depth_buffer, RID p_target_buffer, int p_width, int p_height, RS::ViewportMSAA p_msaa, bool p_use_taa, uint32_t p_view_count);
~RenderBufferDataForwardMobile();
};
@@ -224,6 +224,7 @@ protected:
virtual void _base_uniforms_changed() override;
void _update_render_base_uniform_set();
virtual RID _render_buffers_get_normal_texture(RID p_render_buffers) override;
+ virtual RID _render_buffers_get_velocity_texture(RID p_render_buffers) override;
void _fill_render_list(RenderListType p_render_list, const RenderDataRD *p_render_data, PassMode p_pass_mode, bool p_append = false);
void _fill_element_info(RenderListType p_render_list, uint32_t p_offset = 0, int32_t p_max_elements = -1);
@@ -259,6 +260,7 @@ protected:
float projection_matrix_view[RendererSceneRender::MAX_RENDER_VIEWS][16];
float inv_projection_matrix_view[RendererSceneRender::MAX_RENDER_VIEWS][16];
+ float eye_offset[RendererSceneRender::MAX_RENDER_VIEWS][4];
float viewport_size[2];
float screen_pixel_size[2];
diff --git a/servers/rendering/renderer_rd/forward_mobile/scene_shader_forward_mobile.cpp b/servers/rendering/renderer_rd/forward_mobile/scene_shader_forward_mobile.cpp
index a3cabb0693..f66ad529de 100644
--- a/servers/rendering/renderer_rd/forward_mobile/scene_shader_forward_mobile.cpp
+++ b/servers/rendering/renderer_rd/forward_mobile/scene_shader_forward_mobile.cpp
@@ -529,7 +529,7 @@ void SceneShaderForwardMobile::init(RendererStorageRD *p_storage, const String p
//builtins
- actions.renames["TIME"] = "scene_data.time";
+ actions.renames["TIME"] = "scene_data_block.data.time";
actions.renames["PI"] = _MKSTR(Math_PI);
actions.renames["TAU"] = _MKSTR(Math_TAU);
actions.renames["E"] = _MKSTR(Math_E);
diff --git a/servers/rendering/renderer_rd/renderer_compositor_rd.h b/servers/rendering/renderer_rd/renderer_compositor_rd.h
index aefc189f68..12bcfc4684 100644
--- a/servers/rendering/renderer_rd/renderer_compositor_rd.h
+++ b/servers/rendering/renderer_rd/renderer_compositor_rd.h
@@ -98,11 +98,15 @@ protected:
static uint64_t frame;
public:
- RendererLightStorage *get_light_storage() { return light_storage; };
- RendererMaterialStorage *get_material_storage() { return material_storage; };
- RendererMeshStorage *get_mesh_storage() { return mesh_storage; };
- RendererParticlesStorage *get_particles_storage() { return particles_storage; };
- RendererTextureStorage *get_texture_storage() { return texture_storage; };
+ RendererLightStorage *get_light_storage() { return light_storage; }
+ RendererMaterialStorage *get_material_storage() { return material_storage; }
+ RendererMeshStorage *get_mesh_storage() { return mesh_storage; }
+ RendererParticlesStorage *get_particles_storage() { return particles_storage; }
+ RendererTextureStorage *get_texture_storage() { return texture_storage; }
+ RendererGI *get_gi() {
+ ERR_FAIL_NULL_V(scene, nullptr);
+ return scene->get_gi();
+ }
RendererStorage *get_storage() { return storage; }
RendererCanvasRender *get_canvas() { return canvas; }
RendererSceneRender *get_scene() { return scene; }
diff --git a/servers/rendering/renderer_rd/renderer_scene_render_rd.cpp b/servers/rendering/renderer_rd/renderer_scene_render_rd.cpp
index 85a132e6df..6f16c0972e 100644
--- a/servers/rendering/renderer_rd/renderer_scene_render_rd.cpp
+++ b/servers/rendering/renderer_rd/renderer_scene_render_rd.cpp
@@ -74,7 +74,7 @@ void RendererSceneRenderRD::sdfgi_update(RID p_render_buffers, RID p_environment
rb->sdfgi = nullptr;
}
- RendererSceneGIRD::SDFGI *sdfgi = rb->sdfgi;
+ RendererRD::GI::SDFGI *sdfgi = rb->sdfgi;
if (sdfgi == nullptr) {
// re-create
rb->sdfgi = gi.create_sdfgi(env, p_world_position, requested_history_size);
@@ -95,9 +95,9 @@ int RendererSceneRenderRD::sdfgi_get_pending_region_count(RID p_render_buffers)
int dirty_count = 0;
for (uint32_t i = 0; i < rb->sdfgi->cascades.size(); i++) {
- const RendererSceneGIRD::SDFGI::Cascade &c = rb->sdfgi->cascades[i];
+ const RendererRD::GI::SDFGI::Cascade &c = rb->sdfgi->cascades[i];
- if (c.dirty_regions == RendererSceneGIRD::SDFGI::Cascade::DIRTY_ALL) {
+ if (c.dirty_regions == RendererRD::GI::SDFGI::Cascade::DIRTY_ALL) {
dirty_count++;
} else {
for (int j = 0; j < 3; j++) {
@@ -1533,7 +1533,7 @@ void RendererSceneRenderRD::voxel_gi_update(RID p_probe, bool p_update_light_ins
gi.voxel_gi_update(p_probe, p_update_light_instances, p_light_instances, p_dynamic_objects, this);
}
-void RendererSceneRenderRD::_debug_sdfgi_probes(RID p_render_buffers, RD::DrawListID p_draw_list, RID p_framebuffer, const CameraMatrix &p_camera_with_transform) {
+void RendererSceneRenderRD::_debug_sdfgi_probes(RID p_render_buffers, RID p_framebuffer, const uint32_t p_view_count, const CameraMatrix *p_camera_with_transforms, bool p_will_continue_color, bool p_will_continue_depth) {
RenderBuffers *rb = render_buffers_owner.get_or_null(p_render_buffers);
ERR_FAIL_COND(!rb);
@@ -1541,7 +1541,7 @@ void RendererSceneRenderRD::_debug_sdfgi_probes(RID p_render_buffers, RD::DrawLi
return; //nothing to debug
}
- rb->sdfgi->debug_probes(p_draw_list, p_framebuffer, p_camera_with_transform);
+ rb->sdfgi->debug_probes(p_framebuffer, p_view_count, p_camera_with_transforms, p_will_continue_color, p_will_continue_depth);
}
////////////////////////////////
@@ -1935,17 +1935,22 @@ void RendererSceneRenderRD::_free_render_buffer_data(RenderBuffers *rb) {
rb->ssr.normal_scaled = RID();
}
- if (rb->ambient_buffer.is_valid()) {
- RD::get_singleton()->free(rb->ambient_buffer);
- RD::get_singleton()->free(rb->reflection_buffer);
- rb->ambient_buffer = RID();
- rb->reflection_buffer = RID();
+ if (rb->taa.history.is_valid()) {
+ RD::get_singleton()->free(rb->taa.history);
+ rb->taa.history = RID();
}
- if (rb->gi.voxel_gi_buffer.is_valid()) {
- RD::get_singleton()->free(rb->gi.voxel_gi_buffer);
- rb->gi.voxel_gi_buffer = RID();
+ if (rb->taa.temp.is_valid()) {
+ RD::get_singleton()->free(rb->taa.temp);
+ rb->taa.temp = RID();
}
+
+ if (rb->taa.prev_velocity.is_valid()) {
+ RD::get_singleton()->free(rb->taa.prev_velocity);
+ rb->taa.prev_velocity = RID();
+ }
+
+ rb->rbgi.free();
}
void RendererSceneRenderRD::_process_sss(RID p_render_buffers, const CameraMatrix &p_camera) {
@@ -2323,6 +2328,41 @@ void RendererSceneRenderRD::_copy_framebuffer_to_ssil(RID p_render_buffers) {
}
}
+void RendererSceneRenderRD::_process_taa(RID p_render_buffers, RID p_velocity_buffer, float p_z_near, float p_z_far) {
+ RenderBuffers *rb = render_buffers_owner.get_or_null(p_render_buffers);
+ ERR_FAIL_COND(!rb);
+
+ bool just_allocated = false;
+ if (rb->taa.history.is_null()) {
+ RD::TextureFormat tf;
+ if (rb->view_count > 1) {
+ tf.texture_type = RD::TEXTURE_TYPE_2D_ARRAY;
+ }
+ tf.format = _render_buffers_get_color_format();
+ tf.width = rb->internal_width;
+ tf.height = rb->internal_height;
+ tf.array_layers = rb->view_count; // create a layer for every view
+ tf.usage_bits = RD::TEXTURE_USAGE_SAMPLING_BIT | (_render_buffers_can_be_storage() ? RD::TEXTURE_USAGE_STORAGE_BIT : 0);
+
+ rb->taa.history = RD::get_singleton()->texture_create(tf, RD::TextureView());
+ rb->taa.temp = RD::get_singleton()->texture_create(tf, RD::TextureView());
+
+ tf.format = RD::DATA_FORMAT_R16G16_SFLOAT;
+ rb->taa.prev_velocity = RD::get_singleton()->texture_create(tf, RD::TextureView());
+ just_allocated = true;
+ }
+
+ RD::get_singleton()->draw_command_begin_label("TAA");
+ if (!just_allocated) {
+ storage->get_effects()->taa_resolve(rb->internal_texture, rb->taa.temp, rb->depth_texture, p_velocity_buffer, rb->taa.prev_velocity, rb->taa.history, Size2(rb->internal_width, rb->internal_height), p_z_near, p_z_far);
+ copy_effects->copy_to_rect(rb->taa.temp, rb->internal_texture, Rect2(0, 0, rb->internal_width, rb->internal_height));
+ }
+
+ copy_effects->copy_to_rect(rb->internal_texture, rb->taa.history, Rect2(0, 0, rb->internal_width, rb->internal_height));
+ copy_effects->copy_to_rect(p_velocity_buffer, rb->taa.prev_velocity, Rect2(0, 0, rb->width, rb->height));
+ RD::get_singleton()->draw_command_end_label();
+}
+
void RendererSceneRenderRD::_render_buffers_copy_screen_texture(const RenderDataRD *p_render_data) {
RenderBuffers *rb = render_buffers_owner.get_or_null(p_render_data->render_buffers);
ERR_FAIL_COND(!rb);
@@ -2746,11 +2786,11 @@ void RendererSceneRenderRD::_render_buffers_debug_draw(RID p_render_buffers, RID
copy_effects->copy_to_fb_rect(_render_buffers_get_normal_texture(p_render_buffers), texture_storage->render_target_get_rd_framebuffer(rb->render_target), Rect2(Vector2(), rtsize), false, false);
}
- if (debug_draw == RS::VIEWPORT_DEBUG_DRAW_GI_BUFFER && rb->ambient_buffer.is_valid()) {
+ if (debug_draw == RS::VIEWPORT_DEBUG_DRAW_GI_BUFFER && rb->rbgi.ambient_buffer.is_valid()) {
Size2 rtsize = texture_storage->render_target_get_size(rb->render_target);
- RID ambient_texture = rb->ambient_buffer;
- RID reflection_texture = rb->reflection_buffer;
- copy_effects->copy_to_fb_rect(ambient_texture, texture_storage->render_target_get_rd_framebuffer(rb->render_target), Rect2(Vector2(), rtsize), false, false, false, true, reflection_texture);
+ RID ambient_texture = rb->rbgi.ambient_buffer;
+ RID reflection_texture = rb->rbgi.reflection_buffer;
+ copy_effects->copy_to_fb_rect(ambient_texture, texture_storage->render_target_get_rd_framebuffer(rb->render_target), Rect2(Vector2(), rtsize), false, false, false, true, reflection_texture, rb->view_count > 1);
}
if (debug_draw == RS::VIEWPORT_DEBUG_DRAW_OCCLUDERS) {
@@ -2759,6 +2799,11 @@ void RendererSceneRenderRD::_render_buffers_debug_draw(RID p_render_buffers, RID
copy_effects->copy_to_fb_rect(texture_storage->texture_get_rd_texture(p_occlusion_buffer), texture_storage->render_target_get_rd_framebuffer(rb->render_target), Rect2i(Vector2(), rtsize), true, false);
}
}
+
+ if (debug_draw == RS::VIEWPORT_DEBUG_DRAW_MOTION_VECTORS && _render_buffers_get_velocity_texture(p_render_buffers).is_valid()) {
+ Size2 rtsize = texture_storage->render_target_get_size(rb->render_target);
+ copy_effects->copy_to_fb_rect(_render_buffers_get_velocity_texture(p_render_buffers), texture_storage->render_target_get_rd_framebuffer(rb->render_target), Rect2(Vector2(), rtsize), false, false);
+ }
}
void RendererSceneRenderRD::environment_set_adjustment(RID p_env, bool p_enable, float p_brightness, float p_contrast, float p_saturation, bool p_use_1d_color_correction, RID p_color_correction) {
@@ -2814,10 +2859,10 @@ RID RendererSceneRenderRD::render_buffers_get_ssil_texture(RID p_render_buffers)
RID RendererSceneRenderRD::render_buffers_get_voxel_gi_buffer(RID p_render_buffers) {
RenderBuffers *rb = render_buffers_owner.get_or_null(p_render_buffers);
ERR_FAIL_COND_V(!rb, RID());
- if (rb->gi.voxel_gi_buffer.is_null()) {
- rb->gi.voxel_gi_buffer = RD::get_singleton()->uniform_buffer_create(sizeof(RendererSceneGIRD::VoxelGIData) * RendererSceneGIRD::MAX_VOXEL_GI_INSTANCES);
+ if (rb->rbgi.voxel_gi_buffer.is_null()) {
+ rb->rbgi.voxel_gi_buffer = RD::get_singleton()->uniform_buffer_create(sizeof(RendererRD::GI::VoxelGIData) * RendererRD::GI::MAX_VOXEL_GI_INSTANCES);
}
- return rb->gi.voxel_gi_buffer;
+ return rb->rbgi.voxel_gi_buffer;
}
RID RendererSceneRenderRD::render_buffers_get_default_voxel_gi_buffer() {
@@ -2827,12 +2872,13 @@ RID RendererSceneRenderRD::render_buffers_get_default_voxel_gi_buffer() {
RID RendererSceneRenderRD::render_buffers_get_gi_ambient_texture(RID p_render_buffers) {
RenderBuffers *rb = render_buffers_owner.get_or_null(p_render_buffers);
ERR_FAIL_COND_V(!rb, RID());
- return rb->ambient_buffer;
+
+ return rb->rbgi.ambient_buffer;
}
RID RendererSceneRenderRD::render_buffers_get_gi_reflection_texture(RID p_render_buffers) {
RenderBuffers *rb = render_buffers_owner.get_or_null(p_render_buffers);
ERR_FAIL_COND_V(!rb, RID());
- return rb->reflection_buffer;
+ return rb->rbgi.reflection_buffer;
}
uint32_t RendererSceneRenderRD::render_buffers_get_sdfgi_cascade_count(RID p_render_buffers) const {
@@ -2870,7 +2916,7 @@ Vector3i RendererSceneRenderRD::render_buffers_get_sdfgi_cascade_probe_offset(RI
ERR_FAIL_COND_V(!rb, Vector3i());
ERR_FAIL_COND_V(!rb->sdfgi, Vector3i());
ERR_FAIL_UNSIGNED_INDEX_V(p_cascade, rb->sdfgi->cascades.size(), Vector3i());
- int32_t probe_divisor = rb->sdfgi->cascade_size / RendererSceneGIRD::SDFGI::PROBE_DIVISOR;
+ int32_t probe_divisor = rb->sdfgi->cascade_size / RendererRD::GI::SDFGI::PROBE_DIVISOR;
return rb->sdfgi->cascades[p_cascade].position / probe_divisor;
}
@@ -2976,7 +3022,7 @@ bool RendererSceneRenderRD::_render_buffers_can_be_storage() {
return true;
}
-void RendererSceneRenderRD::render_buffers_configure(RID p_render_buffers, RID p_render_target, int p_internal_width, int p_internal_height, int p_width, int p_height, float p_fsr_sharpness, float p_fsr_mipmap_bias, RS::ViewportMSAA p_msaa, RenderingServer::ViewportScreenSpaceAA p_screen_space_aa, bool p_use_debanding, uint32_t p_view_count) {
+void RendererSceneRenderRD::render_buffers_configure(RID p_render_buffers, RID p_render_target, int p_internal_width, int p_internal_height, int p_width, int p_height, float p_fsr_sharpness, float p_fsr_mipmap_bias, RS::ViewportMSAA p_msaa, RenderingServer::ViewportScreenSpaceAA p_screen_space_aa, bool p_use_taa, bool p_use_debanding, uint32_t p_view_count) {
RendererRD::TextureStorage *texture_storage = RendererRD::TextureStorage::get_singleton();
RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
@@ -3004,6 +3050,7 @@ void RendererSceneRenderRD::render_buffers_configure(RID p_render_buffers, RID p
rb->render_target = p_render_target;
rb->msaa = p_msaa;
rb->screen_space_aa = p_screen_space_aa;
+ rb->use_taa = p_use_taa;
rb->use_debanding = p_use_debanding;
rb->view_count = p_view_count;
@@ -3104,7 +3151,7 @@ void RendererSceneRenderRD::render_buffers_configure(RID p_render_buffers, RID p
}
RID target_texture = texture_storage->render_target_get_rd_texture(rb->render_target);
- rb->data->configure(rb->internal_texture, rb->depth_texture, target_texture, p_internal_width, p_internal_height, p_msaa, p_view_count);
+ rb->data->configure(rb->internal_texture, rb->depth_texture, target_texture, p_internal_width, p_internal_height, p_msaa, p_use_taa, p_view_count);
if (is_clustered_enabled()) {
rb->cluster_builder->setup(Size2i(p_internal_width, p_internal_height), max_cluster_elements, rb->depth_texture, RendererRD::MaterialStorage::get_singleton()->sampler_rd_get_default(RS::CANVAS_ITEM_TEXTURE_FILTER_NEAREST, RS::CANVAS_ITEM_TEXTURE_REPEAT_DISABLED), rb->internal_texture);
@@ -3401,7 +3448,9 @@ void RendererSceneRenderRD::_setup_lights(const PagedArray<RID> &p_lights, const
// technically this will keep expanding until reaching the sun, but all we care
// is expand until we reach the radius of the near plane (there can't be more occluders than that)
angular_diameter = Math::tan(Math::deg2rad(angular_diameter));
- if (light_storage->light_has_shadow(base)) {
+ if (light_storage->light_has_shadow(base) && light_storage->light_get_param(base, RS::LIGHT_PARAM_SHADOW_BLUR) > 0.0) {
+ // Only enable PCSS-like soft shadows if blurring is enabled.
+ // Otherwise, performance would decrease with no visual difference.
r_directional_light_soft_shadows = true;
}
} else {
@@ -3680,7 +3729,9 @@ void RendererSceneRenderRD::_setup_lights(const PagedArray<RID> &p_lights, const
RendererStorageRD::store_transform(proj, light_data.shadow_matrix);
- if (size > 0.0) {
+ if (size > 0.0 && light_data.soft_shadow_scale > 0.0) {
+ // Only enable PCSS-like soft shadows if blurring is enabled.
+ // Otherwise, performance would decrease with no visual difference.
light_data.soft_shadow_size = size;
} else {
light_data.soft_shadow_size = 0.0;
@@ -3697,7 +3748,9 @@ void RendererSceneRenderRD::_setup_lights(const PagedArray<RID> &p_lights, const
CameraMatrix shadow_mtx = bias * li->shadow_transform[0].camera * modelview;
RendererStorageRD::store_camera(shadow_mtx, light_data.shadow_matrix);
- if (size > 0.0) {
+ if (size > 0.0 && light_data.soft_shadow_scale > 0.0) {
+ // Only enable PCSS-like soft shadows if blurring is enabled.
+ // Otherwise, performance would decrease with no visual difference.
CameraMatrix cm = li->shadow_transform[0].camera;
float half_np = cm.get_z_near() * Math::tan(Math::deg2rad(spot_angle));
light_data.soft_shadow_size = (size * 0.5 / radius) / (half_np / cm.get_z_near()) * rect.size.width;
@@ -4134,7 +4187,7 @@ Vector3i RendererSceneRenderRD::_point_get_position_in_froxel_volume(const Vecto
return Vector3i(fog_position);
}
-void RendererSceneRenderRD::_update_volumetric_fog(RID p_render_buffers, RID p_environment, const CameraMatrix &p_cam_projection, const Transform3D &p_cam_transform, RID p_shadow_atlas, int p_directional_light_count, bool p_use_directional_shadows, int p_positional_light_count, int p_voxel_gi_count, const PagedArray<RID> &p_fog_volumes) {
+void RendererSceneRenderRD::_update_volumetric_fog(RID p_render_buffers, RID p_environment, const CameraMatrix &p_cam_projection, const Transform3D &p_cam_transform, const Transform3D &p_prev_cam_inv_transform, RID p_shadow_atlas, int p_directional_light_count, bool p_use_directional_shadows, int p_positional_light_count, int p_voxel_gi_count, const PagedArray<RID> &p_fog_volumes) {
RendererRD::TextureStorage *texture_storage = RendererRD::TextureStorage::get_singleton();
RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
@@ -4269,7 +4322,7 @@ void RendererSceneRenderRD::_update_volumetric_fog(RID p_render_buffers, RID p_e
params.detail_spread = env->volumetric_fog_detail_spread;
params.temporal_blend = env->volumetric_fog_temporal_reprojection_amount;
- Transform3D to_prev_cam_view = rb->volumetric_fog->prev_cam_transform.affine_inverse() * p_cam_transform;
+ Transform3D to_prev_cam_view = p_prev_cam_inv_transform * p_cam_transform;
storage->store_transform(to_prev_cam_view, params.to_prev_view);
storage->store_transform(p_cam_transform, params.transform);
@@ -4553,8 +4606,8 @@ void RendererSceneRenderRD::_update_volumetric_fog(RID p_render_buffers, RID p_e
RD::Uniform u;
u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
u.binding = 12;
- for (int i = 0; i < RendererSceneGIRD::MAX_VOXEL_GI_INSTANCES; i++) {
- u.append_id(rb->gi.voxel_gi_textures[i]);
+ for (int i = 0; i < RendererRD::GI::MAX_VOXEL_GI_INSTANCES; i++) {
+ u.append_id(rb->rbgi.voxel_gi_textures[i]);
}
uniforms.push_back(u);
copy_uniforms.push_back(u);
@@ -4747,7 +4800,7 @@ void RendererSceneRenderRD::_update_volumetric_fog(RID p_render_buffers, RID p_e
params.max_voxel_gi_instances = env->volumetric_fog_gi_inject > 0.001 ? p_voxel_gi_count : 0;
params.temporal_frame = RSG::rasterizer->get_frame_number() % VolumetricFog::MAX_TEMPORAL_FRAMES;
- Transform3D to_prev_cam_view = rb->volumetric_fog->prev_cam_transform.affine_inverse() * p_cam_transform;
+ Transform3D to_prev_cam_view = p_prev_cam_inv_transform * p_cam_transform;
storage->store_transform(to_prev_cam_view, params.to_prev_view);
params.use_temporal_reprojection = env->volumetric_fog_temporal_reprojection;
@@ -4833,8 +4886,6 @@ void RendererSceneRenderRD::_update_volumetric_fog(RID p_render_buffers, RID p_e
RENDER_TIMESTAMP("< Volumetric Fog");
RD::get_singleton()->draw_command_end_label();
RD::get_singleton()->draw_command_end_label();
-
- rb->volumetric_fog->prev_cam_transform = p_cam_transform;
}
bool RendererSceneRenderRD::_needs_post_prepass_render(RenderDataRD *p_render_data, bool p_use_gi) {
@@ -4870,7 +4921,7 @@ void RendererSceneRenderRD::_pre_resolve_render(RenderDataRD *p_render_data, boo
}
}
-void RendererSceneRenderRD::_pre_opaque_render(RenderDataRD *p_render_data, bool p_use_ssao, bool p_use_ssil, bool p_use_gi, RID p_normal_roughness_buffer, RID p_voxel_gi_buffer) {
+void RendererSceneRenderRD::_pre_opaque_render(RenderDataRD *p_render_data, bool p_use_ssao, bool p_use_ssil, bool p_use_gi, RID *p_normal_roughness_views, RID p_voxel_gi_buffer) {
// Render shadows while GI is rendering, due to how barriers are handled, this should happen at the same time
RendererRD::LightStorage *light_storage = RendererRD::LightStorage::get_singleton();
@@ -4945,7 +4996,7 @@ void RendererSceneRenderRD::_pre_opaque_render(RenderDataRD *p_render_data, bool
//start GI
if (render_gi) {
- gi.process_gi(p_render_data->render_buffers, p_normal_roughness_buffer, p_voxel_gi_buffer, p_render_data->environment, p_render_data->cam_projection, p_render_data->cam_transform, *p_render_data->voxel_gi_instances, this);
+ gi.process_gi(p_render_data->render_buffers, p_normal_roughness_views, p_voxel_gi_buffer, p_render_data->environment, p_render_data->view_count, p_render_data->view_projection, p_render_data->view_eye_offset, p_render_data->cam_transform, *p_render_data->voxel_gi_instances, this);
}
//Do shadow rendering (in parallel with GI)
@@ -4986,11 +5037,13 @@ void RendererSceneRenderRD::_pre_opaque_render(RenderDataRD *p_render_data, bool
}
if (p_use_ssao) {
- _process_ssao(p_render_data->render_buffers, p_render_data->environment, p_normal_roughness_buffer, p_render_data->cam_projection);
+ // TODO make these proper stereo and thus use p_normal_roughness_views correctly
+ _process_ssao(p_render_data->render_buffers, p_render_data->environment, p_normal_roughness_views[0], p_render_data->cam_projection);
}
if (p_use_ssil) {
- _process_ssil(p_render_data->render_buffers, p_render_data->environment, p_normal_roughness_buffer, p_render_data->cam_projection, p_render_data->cam_transform);
+ // TODO make these proper stereo and thus use p_normal_roughness_views correctly
+ _process_ssil(p_render_data->render_buffers, p_render_data->environment, p_normal_roughness_views[0], p_render_data->cam_projection, p_render_data->cam_transform);
}
}
@@ -5032,12 +5085,12 @@ void RendererSceneRenderRD::_pre_opaque_render(RenderDataRD *p_render_data, bool
}
}
if (is_volumetric_supported()) {
- _update_volumetric_fog(p_render_data->render_buffers, p_render_data->environment, p_render_data->cam_projection, p_render_data->cam_transform, p_render_data->shadow_atlas, directional_light_count, directional_shadows, positional_light_count, render_state.voxel_gi_count, *p_render_data->fog_volumes);
+ _update_volumetric_fog(p_render_data->render_buffers, p_render_data->environment, p_render_data->cam_projection, p_render_data->cam_transform, p_render_data->prev_cam_transform.affine_inverse(), p_render_data->shadow_atlas, directional_light_count, directional_shadows, positional_light_count, render_state.voxel_gi_count, *p_render_data->fog_volumes);
}
}
}
-void RendererSceneRenderRD::render_scene(RID p_render_buffers, const CameraData *p_camera_data, const PagedArray<GeometryInstance *> &p_instances, const PagedArray<RID> &p_lights, const PagedArray<RID> &p_reflection_probes, const PagedArray<RID> &p_voxel_gi_instances, const PagedArray<RID> &p_decals, const PagedArray<RID> &p_lightmaps, const PagedArray<RID> &p_fog_volumes, RID p_environment, RID p_camera_effects, RID p_shadow_atlas, RID p_occluder_debug_tex, RID p_reflection_atlas, RID p_reflection_probe, int p_reflection_probe_pass, float p_screen_mesh_lod_threshold, const RenderShadowData *p_render_shadows, int p_render_shadow_count, const RenderSDFGIData *p_render_sdfgi_regions, int p_render_sdfgi_region_count, const RenderSDFGIUpdateData *p_sdfgi_update_data, RendererScene::RenderInfo *r_render_info) {
+void RendererSceneRenderRD::render_scene(RID p_render_buffers, const CameraData *p_camera_data, const CameraData *p_prev_camera_data, const PagedArray<GeometryInstance *> &p_instances, const PagedArray<RID> &p_lights, const PagedArray<RID> &p_reflection_probes, const PagedArray<RID> &p_voxel_gi_instances, const PagedArray<RID> &p_decals, const PagedArray<RID> &p_lightmaps, const PagedArray<RID> &p_fog_volumes, RID p_environment, RID p_camera_effects, RID p_shadow_atlas, RID p_occluder_debug_tex, RID p_reflection_atlas, RID p_reflection_probe, int p_reflection_probe_pass, float p_screen_mesh_lod_threshold, const RenderShadowData *p_render_shadows, int p_render_shadow_count, const RenderSDFGIData *p_render_sdfgi_regions, int p_render_sdfgi_region_count, const RenderSDFGIUpdateData *p_sdfgi_update_data, RendererScene::RenderInfo *r_render_info) {
RendererRD::TextureStorage *texture_storage = RendererRD::TextureStorage::get_singleton();
// getting this here now so we can direct call a bunch of things more easily
@@ -5055,14 +5108,23 @@ void RendererSceneRenderRD::render_scene(RID p_render_buffers, const CameraData
// Our first camera is used by default
render_data.cam_transform = p_camera_data->main_transform;
render_data.cam_projection = p_camera_data->main_projection;
- render_data.view_projection[0] = p_camera_data->main_projection;
render_data.cam_orthogonal = p_camera_data->is_orthogonal;
+ render_data.taa_jitter = p_camera_data->taa_jitter;
render_data.view_count = p_camera_data->view_count;
for (uint32_t v = 0; v < p_camera_data->view_count; v++) {
+ render_data.view_eye_offset[v] = p_camera_data->view_offset[v].origin;
render_data.view_projection[v] = p_camera_data->view_projection[v];
}
+ render_data.prev_cam_transform = p_prev_camera_data->main_transform;
+ render_data.prev_cam_projection = p_prev_camera_data->main_projection;
+ render_data.prev_taa_jitter = p_prev_camera_data->taa_jitter;
+
+ for (uint32_t v = 0; v < p_camera_data->view_count; v++) {
+ render_data.prev_view_projection[v] = p_prev_camera_data->view_projection[v];
+ }
+
render_data.z_near = p_camera_data->main_projection.get_z_near();
render_data.z_far = p_camera_data->main_projection.get_z_far();
@@ -5126,7 +5188,7 @@ void RendererSceneRenderRD::render_scene(RID p_render_buffers, const CameraData
//assign render indices to voxel_gi_instances
if (is_dynamic_gi_supported()) {
for (uint32_t i = 0; i < (uint32_t)p_voxel_gi_instances.size(); i++) {
- RendererSceneGIRD::VoxelGIInstance *voxel_gi_inst = gi.voxel_gi_instance_owner.get_or_null(p_voxel_gi_instances[i]);
+ RendererRD::GI::VoxelGIInstance *voxel_gi_inst = gi.voxel_gi_instance_owner.get_or_null(p_voxel_gi_instances[i]);
if (voxel_gi_inst) {
voxel_gi_inst->render_index = i;
}
@@ -5180,7 +5242,13 @@ void RendererSceneRenderRD::render_scene(RID p_render_buffers, const CameraData
_render_buffers_debug_draw(p_render_buffers, p_shadow_atlas, p_occluder_debug_tex);
if (debug_draw == RS::VIEWPORT_DEBUG_DRAW_SDFGI && rb != nullptr && rb->sdfgi != nullptr) {
- rb->sdfgi->debug_draw(render_data.cam_projection, render_data.cam_transform, rb->width, rb->height, rb->render_target, rb->texture);
+ Vector<RID> view_rids;
+
+ for (int v = 0; v < rb->views.size(); v++) {
+ view_rids.push_back(rb->views[v].view_texture);
+ }
+
+ rb->sdfgi->debug_draw(render_data.view_count, render_data.view_projection, render_data.cam_transform, rb->width, rb->height, rb->render_target, rb->texture, view_rids);
}
}
}
@@ -5449,7 +5517,7 @@ bool RendererSceneRenderRD::free(RID p_rid) {
} else if (lightmap_instance_owner.owns(p_rid)) {
lightmap_instance_owner.free(p_rid);
} else if (gi.voxel_gi_instance_owner.owns(p_rid)) {
- RendererSceneGIRD::VoxelGIInstance *voxel_gi = gi.voxel_gi_instance_owner.get_or_null(p_rid);
+ RendererRD::GI::VoxelGIInstance *voxel_gi = gi.voxel_gi_instance_owner.get_or_null(p_rid);
if (voxel_gi->texture.is_valid()) {
RD::get_singleton()->free(voxel_gi->texture);
RD::get_singleton()->free(voxel_gi->write_buffer);
diff --git a/servers/rendering/renderer_rd/renderer_scene_render_rd.h b/servers/rendering/renderer_rd/renderer_scene_render_rd.h
index a384f216cd..c87fd6703f 100644
--- a/servers/rendering/renderer_rd/renderer_scene_render_rd.h
+++ b/servers/rendering/renderer_rd/renderer_scene_render_rd.h
@@ -38,8 +38,8 @@
#include "servers/rendering/renderer_rd/effects/bokeh_dof.h"
#include "servers/rendering/renderer_rd/effects/copy_effects.h"
#include "servers/rendering/renderer_rd/effects/tone_mapper.h"
+#include "servers/rendering/renderer_rd/environment/gi.h"
#include "servers/rendering/renderer_rd/renderer_scene_environment_rd.h"
-#include "servers/rendering/renderer_rd/renderer_scene_gi_rd.h"
#include "servers/rendering/renderer_rd/renderer_scene_sky_rd.h"
#include "servers/rendering/renderer_rd/renderer_storage_rd.h"
#include "servers/rendering/renderer_rd/shaders/volumetric_fog.glsl.gen.h"
@@ -53,12 +53,19 @@ struct RenderDataRD {
Transform3D cam_transform;
CameraMatrix cam_projection;
+ Vector2 taa_jitter;
bool cam_orthogonal = false;
// For stereo rendering
uint32_t view_count = 1;
+ Vector3 view_eye_offset[RendererSceneRender::MAX_RENDER_VIEWS];
CameraMatrix view_projection[RendererSceneRender::MAX_RENDER_VIEWS];
+ Transform3D prev_cam_transform;
+ CameraMatrix prev_cam_projection;
+ Vector2 prev_taa_jitter;
+ CameraMatrix prev_view_projection[RendererSceneRender::MAX_RENDER_VIEWS];
+
float z_near = 0.0;
float z_far = 0.0;
@@ -92,7 +99,7 @@ struct RenderDataRD {
class RendererSceneRenderRD : public RendererSceneRender {
friend RendererSceneSkyRD;
- friend RendererSceneGIRD;
+ friend RendererRD::GI;
protected:
RendererStorageRD *storage = nullptr;
@@ -103,7 +110,7 @@ protected:
double time_step = 0.0;
struct RenderBufferData {
- virtual void configure(RID p_color_buffer, RID p_depth_buffer, RID p_target_buffer, int p_width, int p_height, RS::ViewportMSAA p_msaa, uint32_t p_view_count) = 0;
+ virtual void configure(RID p_color_buffer, RID p_depth_buffer, RID p_target_buffer, int p_width, int p_height, RS::ViewportMSAA p_msaa, bool p_use_taa, uint32_t p_view_count) = 0;
virtual ~RenderBufferData() {}
};
virtual RenderBufferData *_create_render_buffer_data() = 0;
@@ -124,26 +131,27 @@ protected:
virtual void _render_sdfgi(RID p_render_buffers, const Vector3i &p_from, const Vector3i &p_size, const AABB &p_bounds, const PagedArray<GeometryInstance *> &p_instances, const RID &p_albedo_texture, const RID &p_emission_texture, const RID &p_emission_aniso_texture, const RID &p_geom_facing_texture) = 0;
virtual void _render_particle_collider_heightfield(RID p_fb, const Transform3D &p_cam_transform, const CameraMatrix &p_cam_projection, const PagedArray<GeometryInstance *> &p_instances) = 0;
- void _debug_sdfgi_probes(RID p_render_buffers, RD::DrawListID p_draw_list, RID p_framebuffer, const CameraMatrix &p_camera_with_transform);
+ void _debug_sdfgi_probes(RID p_render_buffers, RID p_framebuffer, uint32_t p_view_count, const CameraMatrix *p_camera_with_transforms, bool p_will_continue_color, bool p_will_continue_depth);
void _debug_draw_cluster(RID p_render_buffers);
RenderBufferData *render_buffers_get_data(RID p_render_buffers);
virtual void _base_uniforms_changed() = 0;
virtual RID _render_buffers_get_normal_texture(RID p_render_buffers) = 0;
+ virtual RID _render_buffers_get_velocity_texture(RID p_render_buffers) = 0;
void _process_ssao(RID p_render_buffers, RID p_environment, RID p_normal_buffer, const CameraMatrix &p_projection);
void _process_ssr(RID p_render_buffers, RID p_dest_framebuffer, RID p_normal_buffer, RID p_specular_buffer, RID p_metallic, const Color &p_metallic_mask, RID p_environment, const CameraMatrix &p_projection, bool p_use_additive);
void _process_sss(RID p_render_buffers, const CameraMatrix &p_camera);
void _process_ssil(RID p_render_buffers, RID p_environment, RID p_normal_buffer, const CameraMatrix &p_projection, const Transform3D &p_transform);
void _copy_framebuffer_to_ssil(RID p_render_buffers);
- void _ensure_ss_effects(RID p_render_buffers, bool p_using_ssil);
+ void _process_taa(RID p_render_buffers, RID p_velocity_buffer, float p_z_near, float p_z_far);
bool _needs_post_prepass_render(RenderDataRD *p_render_data, bool p_use_gi);
void _post_prepass_render(RenderDataRD *p_render_data, bool p_use_gi);
void _pre_resolve_render(RenderDataRD *p_render_data, bool p_use_gi);
- void _pre_opaque_render(RenderDataRD *p_render_data, bool p_use_ssao, bool p_use_ssil, bool p_use_gi, RID p_normal_roughness_buffer, RID p_voxel_gi_buffer);
+ void _pre_opaque_render(RenderDataRD *p_render_data, bool p_use_ssao, bool p_use_ssil, bool p_use_gi, RID *p_normal_roughness_views, RID p_voxel_gi_buffer);
void _render_buffers_copy_screen_texture(const RenderDataRD *p_render_data);
void _render_buffers_copy_depth_texture(const RenderDataRD *p_render_data);
@@ -155,7 +163,7 @@ protected:
PagedArrayPool<GeometryInstance *> cull_argument_pool;
PagedArray<GeometryInstance *> cull_argument; //need this to exist
- RendererSceneGIRD gi;
+ RendererRD::GI gi;
RendererSceneSkyRD sky;
RendererSceneEnvironmentRD *get_environment(RID p_environment) {
@@ -472,6 +480,7 @@ private:
float fsr_sharpness = 0.2f;
RS::ViewportMSAA msaa = RS::VIEWPORT_MSAA_DISABLED;
RS::ViewportScreenSpaceAA screen_space_aa = RS::VIEWPORT_SCREEN_SPACE_AA_DISABLED;
+ bool use_taa = false;
bool use_debanding = false;
uint32_t view_count = 1;
@@ -494,9 +503,9 @@ private:
};
Vector<View> views;
- RendererSceneGIRD::SDFGI *sdfgi = nullptr;
+ RendererRD::GI::SDFGI *sdfgi = nullptr;
VolumetricFog *volumetric_fog = nullptr;
- RendererSceneGIRD::RenderBuffersGI gi;
+ RendererRD::GI::RenderBuffersGI rbgi;
ClusterBuilderRD *cluster_builder = nullptr;
@@ -592,8 +601,11 @@ private:
RID blur_radius[2];
} ssr;
- RID ambient_buffer;
- RID reflection_buffer;
+ struct TAA {
+ RID history;
+ RID temp;
+ RID prev_velocity; // Last frame velocity buffer
+ } taa;
};
/* GI */
@@ -793,8 +805,6 @@ private:
RID sky_uniform_set;
int last_shadow_filter = -1;
-
- Transform3D prev_cam_transform;
};
struct VolumetricFogShader {
@@ -914,7 +924,7 @@ private:
Vector3i _point_get_position_in_froxel_volume(const Vector3 &p_point, float fog_end, const Vector2 &fog_near_size, const Vector2 &fog_far_size, float volumetric_fog_detail_spread, const Vector3 &fog_size, const Transform3D &p_cam_transform);
void _volumetric_fog_erase(RenderBuffers *rb);
- void _update_volumetric_fog(RID p_render_buffers, RID p_environment, const CameraMatrix &p_cam_projection, const Transform3D &p_cam_transform, RID p_shadow_atlas, int p_directional_light_count, bool p_use_directional_shadows, int p_positional_light_count, int p_voxel_gi_count, const PagedArray<RID> &p_fog_volumes);
+ void _update_volumetric_fog(RID p_render_buffers, RID p_environment, const CameraMatrix &p_cam_projection, const Transform3D &p_cam_transform, const Transform3D &p_prev_cam_inv_transform, RID p_shadow_atlas, int p_directional_light_count, bool p_use_directional_shadows, int p_positional_light_count, int p_voxel_gi_count, const PagedArray<RID> &p_fog_volumes);
struct FogShaderData : public RendererRD::ShaderData {
bool valid = false;
@@ -984,6 +994,10 @@ public:
virtual Transform3D geometry_instance_get_transform(GeometryInstance *p_instance) = 0;
virtual AABB geometry_instance_get_aabb(GeometryInstance *p_instance) = 0;
+ /* GI */
+
+ RendererRD::GI *get_gi() { return &gi; }
+
/* SHADOW ATLAS API */
virtual RID shadow_atlas_create() override;
@@ -1385,7 +1399,7 @@ public:
virtual RD::DataFormat _render_buffers_get_color_format();
virtual bool _render_buffers_can_be_storage();
virtual RID render_buffers_create() override;
- virtual void render_buffers_configure(RID p_render_buffers, RID p_render_target, int p_internal_width, int p_internal_height, int p_width, int p_height, float p_fsr_sharpness, float p_fsr_mipmap_bias, RS::ViewportMSAA p_msaa, RS::ViewportScreenSpaceAA p_screen_space_aa, bool p_use_debanding, uint32_t p_view_count) override;
+ virtual void render_buffers_configure(RID p_render_buffers, RID p_render_target, int p_internal_width, int p_internal_height, int p_width, int p_height, float p_fsr_sharpness, float p_fsr_mipmap_bias, RS::ViewportMSAA p_msaa, RS::ViewportScreenSpaceAA p_screen_space_aa, bool p_use_taa, bool p_use_debanding, uint32_t p_view_count) override;
virtual void gi_set_use_half_resolution(bool p_enable) override;
RID render_buffers_get_depth_texture(RID p_render_buffers);
@@ -1419,7 +1433,7 @@ public:
virtual void update_uniform_sets(){};
- virtual void render_scene(RID p_render_buffers, const CameraData *p_camera_data, const PagedArray<GeometryInstance *> &p_instances, const PagedArray<RID> &p_lights, const PagedArray<RID> &p_reflection_probes, const PagedArray<RID> &p_voxel_gi_instances, const PagedArray<RID> &p_decals, const PagedArray<RID> &p_lightmaps, const PagedArray<RID> &p_fog_volumes, RID p_environment, RID p_camera_effects, RID p_shadow_atlas, RID p_occluder_debug_tex, RID p_reflection_atlas, RID p_reflection_probe, int p_reflection_probe_pass, float p_screen_mesh_lod_threshold, const RenderShadowData *p_render_shadows, int p_render_shadow_count, const RenderSDFGIData *p_render_sdfgi_regions, int p_render_sdfgi_region_count, const RenderSDFGIUpdateData *p_sdfgi_update_data = nullptr, RendererScene::RenderInfo *r_render_info = nullptr) override;
+ virtual void render_scene(RID p_render_buffers, const CameraData *p_camera_data, const CameraData *p_prev_camera_data, const PagedArray<GeometryInstance *> &p_instances, const PagedArray<RID> &p_lights, const PagedArray<RID> &p_reflection_probes, const PagedArray<RID> &p_voxel_gi_instances, const PagedArray<RID> &p_decals, const PagedArray<RID> &p_lightmaps, const PagedArray<RID> &p_fog_volumes, RID p_environment, RID p_camera_effects, RID p_shadow_atlas, RID p_occluder_debug_tex, RID p_reflection_atlas, RID p_reflection_probe, int p_reflection_probe_pass, float p_screen_mesh_lod_threshold, const RenderShadowData *p_render_shadows, int p_render_shadow_count, const RenderSDFGIData *p_render_sdfgi_regions, int p_render_sdfgi_region_count, const RenderSDFGIUpdateData *p_sdfgi_update_data = nullptr, RendererScene::RenderInfo *r_render_info = nullptr) override;
virtual void render_material(const Transform3D &p_cam_transform, const CameraMatrix &p_cam_projection, bool p_cam_orthogonal, const PagedArray<GeometryInstance *> &p_instances, RID p_framebuffer, const Rect2i &p_region) override;
diff --git a/servers/rendering/renderer_rd/renderer_scene_sky_rd.cpp b/servers/rendering/renderer_rd/renderer_scene_sky_rd.cpp
index 7adc5a23f2..3a237dbd8c 100644
--- a/servers/rendering/renderer_rd/renderer_scene_sky_rd.cpp
+++ b/servers/rendering/renderer_rd/renderer_scene_sky_rd.cpp
@@ -1531,7 +1531,7 @@ void RendererSceneSkyRD::draw(RendererSceneEnvironmentRD *p_env, bool p_can_cont
projections = &camera;
}
- sky_transform = p_transform.basis * sky_transform;
+ sky_transform = sky_transform * p_transform.basis;
if (shader_data->uses_quarter_res) {
PipelineCacheRD *pipeline = &shader_data->pipelines[view_count > 1 ? SKY_VERSION_QUARTER_RES_MULTIVIEW : SKY_VERSION_QUARTER_RES];
diff --git a/servers/rendering/renderer_rd/renderer_storage_rd.cpp b/servers/rendering/renderer_rd/renderer_storage_rd.cpp
index d5166c6905..8c55ff1d0a 100644
--- a/servers/rendering/renderer_rd/renderer_storage_rd.cpp
+++ b/servers/rendering/renderer_rd/renderer_storage_rd.cpp
@@ -35,6 +35,7 @@
#include "core/io/resource_loader.h"
#include "core/math/math_defs.h"
#include "renderer_compositor_rd.h"
+#include "servers/rendering/renderer_rd/environment/gi.h"
#include "servers/rendering/renderer_rd/storage_rd/light_storage.h"
#include "servers/rendering/renderer_rd/storage_rd/mesh_storage.h"
#include "servers/rendering/renderer_rd/storage_rd/particles_storage.h"
@@ -173,336 +174,6 @@ void RendererStorageRD::visibility_notifier_call(RID p_notifier, bool p_enter, b
}
}
-/* VOXEL GI */
-
-RID RendererStorageRD::voxel_gi_allocate() {
- return voxel_gi_owner.allocate_rid();
-}
-void RendererStorageRD::voxel_gi_initialize(RID p_voxel_gi) {
- voxel_gi_owner.initialize_rid(p_voxel_gi, VoxelGI());
-}
-
-void RendererStorageRD::voxel_gi_allocate_data(RID p_voxel_gi, const Transform3D &p_to_cell_xform, const AABB &p_aabb, const Vector3i &p_octree_size, const Vector<uint8_t> &p_octree_cells, const Vector<uint8_t> &p_data_cells, const Vector<uint8_t> &p_distance_field, const Vector<int> &p_level_counts) {
- VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
- ERR_FAIL_COND(!voxel_gi);
-
- if (voxel_gi->octree_buffer.is_valid()) {
- RD::get_singleton()->free(voxel_gi->octree_buffer);
- RD::get_singleton()->free(voxel_gi->data_buffer);
- if (voxel_gi->sdf_texture.is_valid()) {
- RD::get_singleton()->free(voxel_gi->sdf_texture);
- }
-
- voxel_gi->sdf_texture = RID();
- voxel_gi->octree_buffer = RID();
- voxel_gi->data_buffer = RID();
- voxel_gi->octree_buffer_size = 0;
- voxel_gi->data_buffer_size = 0;
- voxel_gi->cell_count = 0;
- }
-
- voxel_gi->to_cell_xform = p_to_cell_xform;
- voxel_gi->bounds = p_aabb;
- voxel_gi->octree_size = p_octree_size;
- voxel_gi->level_counts = p_level_counts;
-
- if (p_octree_cells.size()) {
- ERR_FAIL_COND(p_octree_cells.size() % 32 != 0); //cells size must be a multiple of 32
-
- uint32_t cell_count = p_octree_cells.size() / 32;
-
- ERR_FAIL_COND(p_data_cells.size() != (int)cell_count * 16); //see that data size matches
-
- voxel_gi->cell_count = cell_count;
- voxel_gi->octree_buffer = RD::get_singleton()->storage_buffer_create(p_octree_cells.size(), p_octree_cells);
- voxel_gi->octree_buffer_size = p_octree_cells.size();
- voxel_gi->data_buffer = RD::get_singleton()->storage_buffer_create(p_data_cells.size(), p_data_cells);
- voxel_gi->data_buffer_size = p_data_cells.size();
-
- if (p_distance_field.size()) {
- RD::TextureFormat tf;
- tf.format = RD::DATA_FORMAT_R8_UNORM;
- tf.width = voxel_gi->octree_size.x;
- tf.height = voxel_gi->octree_size.y;
- tf.depth = voxel_gi->octree_size.z;
- tf.texture_type = RD::TEXTURE_TYPE_3D;
- tf.usage_bits = RD::TEXTURE_USAGE_SAMPLING_BIT | RD::TEXTURE_USAGE_CAN_UPDATE_BIT | RD::TEXTURE_USAGE_CAN_COPY_FROM_BIT;
- Vector<Vector<uint8_t>> s;
- s.push_back(p_distance_field);
- voxel_gi->sdf_texture = RD::get_singleton()->texture_create(tf, RD::TextureView(), s);
- }
-#if 0
- {
- RD::TextureFormat tf;
- tf.format = RD::DATA_FORMAT_R8_UNORM;
- tf.width = voxel_gi->octree_size.x;
- tf.height = voxel_gi->octree_size.y;
- tf.depth = voxel_gi->octree_size.z;
- tf.type = RD::TEXTURE_TYPE_3D;
- tf.usage_bits = RD::TEXTURE_USAGE_SAMPLING_BIT | RD::TEXTURE_USAGE_STORAGE_BIT | RD::TEXTURE_USAGE_CAN_COPY_TO_BIT;
- tf.shareable_formats.push_back(RD::DATA_FORMAT_R8_UNORM);
- tf.shareable_formats.push_back(RD::DATA_FORMAT_R8_UINT);
- voxel_gi->sdf_texture = RD::get_singleton()->texture_create(tf, RD::TextureView());
- }
- RID shared_tex;
- {
- RD::TextureView tv;
- tv.format_override = RD::DATA_FORMAT_R8_UINT;
- shared_tex = RD::get_singleton()->texture_create_shared(tv, voxel_gi->sdf_texture);
- }
- //update SDF texture
- Vector<RD::Uniform> uniforms;
- {
- RD::Uniform u;
- u.uniform_type = RD::UNIFORM_TYPE_STORAGE_BUFFER;
- u.binding = 1;
- u.append_id(voxel_gi->octree_buffer);
- uniforms.push_back(u);
- }
- {
- RD::Uniform u;
- u.uniform_type = RD::UNIFORM_TYPE_STORAGE_BUFFER;
- u.binding = 2;
- u.append_id(voxel_gi->data_buffer);
- uniforms.push_back(u);
- }
- {
- RD::Uniform u;
- u.uniform_type = RD::UNIFORM_TYPE_IMAGE;
- u.binding = 3;
- u.append_id(shared_tex);
- uniforms.push_back(u);
- }
-
- RID uniform_set = RD::get_singleton()->uniform_set_create(uniforms, voxel_gi_sdf_shader_version_shader, 0);
-
- {
- uint32_t push_constant[4] = { 0, 0, 0, 0 };
-
- for (int i = 0; i < voxel_gi->level_counts.size() - 1; i++) {
- push_constant[0] += voxel_gi->level_counts[i];
- }
- push_constant[1] = push_constant[0] + voxel_gi->level_counts[voxel_gi->level_counts.size() - 1];
-
- print_line("offset: " + itos(push_constant[0]));
- print_line("size: " + itos(push_constant[1]));
- //create SDF
- RD::ComputeListID compute_list = RD::get_singleton()->compute_list_begin();
- RD::get_singleton()->compute_list_bind_compute_pipeline(compute_list, voxel_gi_sdf_shader_pipeline);
- RD::get_singleton()->compute_list_bind_uniform_set(compute_list, uniform_set, 0);
- RD::get_singleton()->compute_list_set_push_constant(compute_list, push_constant, sizeof(uint32_t) * 4);
- RD::get_singleton()->compute_list_dispatch(compute_list, voxel_gi->octree_size.x / 4, voxel_gi->octree_size.y / 4, voxel_gi->octree_size.z / 4);
- RD::get_singleton()->compute_list_end();
- }
-
- RD::get_singleton()->free(uniform_set);
- RD::get_singleton()->free(shared_tex);
- }
-#endif
- }
-
- voxel_gi->version++;
- voxel_gi->data_version++;
-
- voxel_gi->dependency.changed_notify(DEPENDENCY_CHANGED_AABB);
-}
-
-AABB RendererStorageRD::voxel_gi_get_bounds(RID p_voxel_gi) const {
- VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
- ERR_FAIL_COND_V(!voxel_gi, AABB());
-
- return voxel_gi->bounds;
-}
-
-Vector3i RendererStorageRD::voxel_gi_get_octree_size(RID p_voxel_gi) const {
- VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
- ERR_FAIL_COND_V(!voxel_gi, Vector3i());
- return voxel_gi->octree_size;
-}
-
-Vector<uint8_t> RendererStorageRD::voxel_gi_get_octree_cells(RID p_voxel_gi) const {
- VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
- ERR_FAIL_COND_V(!voxel_gi, Vector<uint8_t>());
-
- if (voxel_gi->octree_buffer.is_valid()) {
- return RD::get_singleton()->buffer_get_data(voxel_gi->octree_buffer);
- }
- return Vector<uint8_t>();
-}
-
-Vector<uint8_t> RendererStorageRD::voxel_gi_get_data_cells(RID p_voxel_gi) const {
- VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
- ERR_FAIL_COND_V(!voxel_gi, Vector<uint8_t>());
-
- if (voxel_gi->data_buffer.is_valid()) {
- return RD::get_singleton()->buffer_get_data(voxel_gi->data_buffer);
- }
- return Vector<uint8_t>();
-}
-
-Vector<uint8_t> RendererStorageRD::voxel_gi_get_distance_field(RID p_voxel_gi) const {
- VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
- ERR_FAIL_COND_V(!voxel_gi, Vector<uint8_t>());
-
- if (voxel_gi->data_buffer.is_valid()) {
- return RD::get_singleton()->texture_get_data(voxel_gi->sdf_texture, 0);
- }
- return Vector<uint8_t>();
-}
-
-Vector<int> RendererStorageRD::voxel_gi_get_level_counts(RID p_voxel_gi) const {
- VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
- ERR_FAIL_COND_V(!voxel_gi, Vector<int>());
-
- return voxel_gi->level_counts;
-}
-
-Transform3D RendererStorageRD::voxel_gi_get_to_cell_xform(RID p_voxel_gi) const {
- VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
- ERR_FAIL_COND_V(!voxel_gi, Transform3D());
-
- return voxel_gi->to_cell_xform;
-}
-
-void RendererStorageRD::voxel_gi_set_dynamic_range(RID p_voxel_gi, float p_range) {
- VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
- ERR_FAIL_COND(!voxel_gi);
-
- voxel_gi->dynamic_range = p_range;
- voxel_gi->version++;
-}
-
-float RendererStorageRD::voxel_gi_get_dynamic_range(RID p_voxel_gi) const {
- VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
- ERR_FAIL_COND_V(!voxel_gi, 0);
-
- return voxel_gi->dynamic_range;
-}
-
-void RendererStorageRD::voxel_gi_set_propagation(RID p_voxel_gi, float p_range) {
- VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
- ERR_FAIL_COND(!voxel_gi);
-
- voxel_gi->propagation = p_range;
- voxel_gi->version++;
-}
-
-float RendererStorageRD::voxel_gi_get_propagation(RID p_voxel_gi) const {
- VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
- ERR_FAIL_COND_V(!voxel_gi, 0);
- return voxel_gi->propagation;
-}
-
-void RendererStorageRD::voxel_gi_set_energy(RID p_voxel_gi, float p_energy) {
- VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
- ERR_FAIL_COND(!voxel_gi);
-
- voxel_gi->energy = p_energy;
-}
-
-float RendererStorageRD::voxel_gi_get_energy(RID p_voxel_gi) const {
- VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
- ERR_FAIL_COND_V(!voxel_gi, 0);
- return voxel_gi->energy;
-}
-
-void RendererStorageRD::voxel_gi_set_bias(RID p_voxel_gi, float p_bias) {
- VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
- ERR_FAIL_COND(!voxel_gi);
-
- voxel_gi->bias = p_bias;
-}
-
-float RendererStorageRD::voxel_gi_get_bias(RID p_voxel_gi) const {
- VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
- ERR_FAIL_COND_V(!voxel_gi, 0);
- return voxel_gi->bias;
-}
-
-void RendererStorageRD::voxel_gi_set_normal_bias(RID p_voxel_gi, float p_normal_bias) {
- VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
- ERR_FAIL_COND(!voxel_gi);
-
- voxel_gi->normal_bias = p_normal_bias;
-}
-
-float RendererStorageRD::voxel_gi_get_normal_bias(RID p_voxel_gi) const {
- VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
- ERR_FAIL_COND_V(!voxel_gi, 0);
- return voxel_gi->normal_bias;
-}
-
-void RendererStorageRD::voxel_gi_set_anisotropy_strength(RID p_voxel_gi, float p_strength) {
- VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
- ERR_FAIL_COND(!voxel_gi);
-
- voxel_gi->anisotropy_strength = p_strength;
-}
-
-float RendererStorageRD::voxel_gi_get_anisotropy_strength(RID p_voxel_gi) const {
- VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
- ERR_FAIL_COND_V(!voxel_gi, 0);
- return voxel_gi->anisotropy_strength;
-}
-
-void RendererStorageRD::voxel_gi_set_interior(RID p_voxel_gi, bool p_enable) {
- VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
- ERR_FAIL_COND(!voxel_gi);
-
- voxel_gi->interior = p_enable;
-}
-
-void RendererStorageRD::voxel_gi_set_use_two_bounces(RID p_voxel_gi, bool p_enable) {
- VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
- ERR_FAIL_COND(!voxel_gi);
-
- voxel_gi->use_two_bounces = p_enable;
- voxel_gi->version++;
-}
-
-bool RendererStorageRD::voxel_gi_is_using_two_bounces(RID p_voxel_gi) const {
- VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
- ERR_FAIL_COND_V(!voxel_gi, false);
- return voxel_gi->use_two_bounces;
-}
-
-bool RendererStorageRD::voxel_gi_is_interior(RID p_voxel_gi) const {
- VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
- ERR_FAIL_COND_V(!voxel_gi, 0);
- return voxel_gi->interior;
-}
-
-uint32_t RendererStorageRD::voxel_gi_get_version(RID p_voxel_gi) {
- VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
- ERR_FAIL_COND_V(!voxel_gi, 0);
- return voxel_gi->version;
-}
-
-uint32_t RendererStorageRD::voxel_gi_get_data_version(RID p_voxel_gi) {
- VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
- ERR_FAIL_COND_V(!voxel_gi, 0);
- return voxel_gi->data_version;
-}
-
-RID RendererStorageRD::voxel_gi_get_octree_buffer(RID p_voxel_gi) const {
- VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
- ERR_FAIL_COND_V(!voxel_gi, RID());
- return voxel_gi->octree_buffer;
-}
-
-RID RendererStorageRD::voxel_gi_get_data_buffer(RID p_voxel_gi) const {
- VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
- ERR_FAIL_COND_V(!voxel_gi, RID());
- return voxel_gi->data_buffer;
-}
-
-RID RendererStorageRD::voxel_gi_get_sdf_texture(RID p_voxel_gi) {
- VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_voxel_gi);
- ERR_FAIL_COND_V(!voxel_gi, RID());
-
- return voxel_gi->sdf_texture;
-}
-
/* misc */
void RendererStorageRD::base_update_dependency(RID p_base, DependencyTracker *p_instance) {
@@ -521,8 +192,8 @@ void RendererStorageRD::base_update_dependency(RID p_base, DependencyTracker *p_
} else if (RendererRD::TextureStorage::get_singleton()->owns_decal(p_base)) {
RendererRD::Decal *decal = RendererRD::TextureStorage::get_singleton()->get_decal(p_base);
p_instance->update_dependency(&decal->dependency);
- } else if (voxel_gi_owner.owns(p_base)) {
- VoxelGI *gip = voxel_gi_owner.get_or_null(p_base);
+ } else if (RendererRD::GI::get_singleton()->owns_voxel_gi(p_base)) {
+ RendererRD::GI::VoxelGI *gip = RendererRD::GI::get_singleton()->get_voxel_gi(p_base);
p_instance->update_dependency(&gip->dependency);
} else if (RendererRD::LightStorage::get_singleton()->owns_lightmap(p_base)) {
RendererRD::Lightmap *lm = RendererRD::LightStorage::get_singleton()->get_lightmap(p_base);
@@ -558,7 +229,7 @@ RS::InstanceType RendererStorageRD::get_base_type(RID p_rid) const {
if (RendererRD::TextureStorage::get_singleton()->owns_decal(p_rid)) {
return RS::INSTANCE_DECAL;
}
- if (voxel_gi_owner.owns(p_rid)) {
+ if (RendererRD::GI::get_singleton()->owns_voxel_gi(p_rid)) {
return RS::INSTANCE_VOXEL_GI;
}
if (RendererRD::LightStorage::get_singleton()->owns_light(p_rid)) {
@@ -636,11 +307,8 @@ bool RendererStorageRD::free(RID p_rid) {
RendererRD::LightStorage::get_singleton()->reflection_probe_free(p_rid);
} else if (RendererRD::TextureStorage::get_singleton()->owns_decal(p_rid)) {
RendererRD::TextureStorage::get_singleton()->decal_free(p_rid);
- } else if (voxel_gi_owner.owns(p_rid)) {
- voxel_gi_allocate_data(p_rid, Transform3D(), AABB(), Vector3i(), Vector<uint8_t>(), Vector<uint8_t>(), Vector<uint8_t>(), Vector<int>()); //deallocate
- VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_rid);
- voxel_gi->dependency.deleted_notify(p_rid);
- voxel_gi_owner.free(p_rid);
+ } else if (RendererRD::GI::get_singleton()->owns_voxel_gi(p_rid)) {
+ RendererRD::GI::get_singleton()->voxel_gi_free(p_rid);
} else if (RendererRD::LightStorage::get_singleton()->owns_lightmap(p_rid)) {
RendererRD::LightStorage::get_singleton()->lightmap_free(p_rid);
} else if (RendererRD::LightStorage::get_singleton()->owns_light(p_rid)) {
diff --git a/servers/rendering/renderer_rd/renderer_storage_rd.h b/servers/rendering/renderer_rd/renderer_storage_rd.h
index 07fae45a26..d41129d678 100644
--- a/servers/rendering/renderer_rd/renderer_storage_rd.h
+++ b/servers/rendering/renderer_rd/renderer_storage_rd.h
@@ -36,7 +36,7 @@
#include "core/templates/rid_owner.h"
#include "servers/rendering/renderer_compositor.h"
#include "servers/rendering/renderer_rd/effects_rd.h"
-#include "servers/rendering/renderer_rd/shaders/voxel_gi_sdf.glsl.gen.h"
+#include "servers/rendering/renderer_rd/shaders/environment/voxel_gi_sdf.glsl.gen.h"
#include "servers/rendering/renderer_rd/storage_rd/material_storage.h"
#include "servers/rendering/renderer_scene_render.h"
#include "servers/rendering/rendering_device.h"
@@ -147,42 +147,6 @@ private:
mutable RID_Owner<VisibilityNotifier> visibility_notifier_owner;
- /* VOXEL GI */
-
- struct VoxelGI {
- RID octree_buffer;
- RID data_buffer;
- RID sdf_texture;
-
- uint32_t octree_buffer_size = 0;
- uint32_t data_buffer_size = 0;
-
- Vector<int> level_counts;
-
- int cell_count = 0;
-
- Transform3D to_cell_xform;
- AABB bounds;
- Vector3i octree_size;
-
- float dynamic_range = 2.0;
- float energy = 1.0;
- float bias = 1.4;
- float normal_bias = 0.0;
- float propagation = 0.7;
- bool interior = false;
- bool use_two_bounces = false;
-
- float anisotropy_strength = 0.5;
-
- uint32_t version = 1;
- uint32_t data_version = 1;
-
- Dependency dependency;
- };
-
- mutable RID_Owner<VoxelGI, true> voxel_gi_owner;
-
/* EFFECTS */
EffectsRD *effects = nullptr;
@@ -192,54 +156,6 @@ public:
void base_update_dependency(RID p_base, DependencyTracker *p_instance);
- /* VOXEL GI API */
-
- RID voxel_gi_allocate();
- void voxel_gi_initialize(RID p_voxel_gi);
-
- void voxel_gi_allocate_data(RID p_voxel_gi, const Transform3D &p_to_cell_xform, const AABB &p_aabb, const Vector3i &p_octree_size, const Vector<uint8_t> &p_octree_cells, const Vector<uint8_t> &p_data_cells, const Vector<uint8_t> &p_distance_field, const Vector<int> &p_level_counts);
-
- AABB voxel_gi_get_bounds(RID p_voxel_gi) const;
- Vector3i voxel_gi_get_octree_size(RID p_voxel_gi) const;
- Vector<uint8_t> voxel_gi_get_octree_cells(RID p_voxel_gi) const;
- Vector<uint8_t> voxel_gi_get_data_cells(RID p_voxel_gi) const;
- Vector<uint8_t> voxel_gi_get_distance_field(RID p_voxel_gi) const;
-
- Vector<int> voxel_gi_get_level_counts(RID p_voxel_gi) const;
- Transform3D voxel_gi_get_to_cell_xform(RID p_voxel_gi) const;
-
- void voxel_gi_set_dynamic_range(RID p_voxel_gi, float p_range);
- float voxel_gi_get_dynamic_range(RID p_voxel_gi) const;
-
- void voxel_gi_set_propagation(RID p_voxel_gi, float p_range);
- float voxel_gi_get_propagation(RID p_voxel_gi) const;
-
- void voxel_gi_set_energy(RID p_voxel_gi, float p_energy);
- float voxel_gi_get_energy(RID p_voxel_gi) const;
-
- void voxel_gi_set_bias(RID p_voxel_gi, float p_bias);
- float voxel_gi_get_bias(RID p_voxel_gi) const;
-
- void voxel_gi_set_normal_bias(RID p_voxel_gi, float p_range);
- float voxel_gi_get_normal_bias(RID p_voxel_gi) const;
-
- void voxel_gi_set_interior(RID p_voxel_gi, bool p_enable);
- bool voxel_gi_is_interior(RID p_voxel_gi) const;
-
- void voxel_gi_set_use_two_bounces(RID p_voxel_gi, bool p_enable);
- bool voxel_gi_is_using_two_bounces(RID p_voxel_gi) const;
-
- void voxel_gi_set_anisotropy_strength(RID p_voxel_gi, float p_strength);
- float voxel_gi_get_anisotropy_strength(RID p_voxel_gi) const;
-
- uint32_t voxel_gi_get_version(RID p_probe);
- uint32_t voxel_gi_get_data_version(RID p_probe);
-
- RID voxel_gi_get_octree_buffer(RID p_voxel_gi) const;
- RID voxel_gi_get_data_buffer(RID p_voxel_gi) const;
-
- RID voxel_gi_get_sdf_texture(RID p_voxel_gi);
-
/* FOG VOLUMES */
virtual RID fog_volume_allocate();
diff --git a/servers/rendering/renderer_rd/shaders/SCsub b/servers/rendering/renderer_rd/shaders/SCsub
index acb843bfb6..05663226c0 100644
--- a/servers/rendering/renderer_rd/shaders/SCsub
+++ b/servers/rendering/renderer_rd/shaders/SCsub
@@ -17,3 +17,4 @@ if "RD_GLSL" in env["BUILDERS"]:
env.RD_GLSL(glsl_file)
SConscript("effects/SCsub")
+SConscript("environment/SCsub")
diff --git a/servers/rendering/renderer_rd/shaders/resolve.glsl b/servers/rendering/renderer_rd/shaders/effects/resolve.glsl
index 0e086331c0..0e086331c0 100644
--- a/servers/rendering/renderer_rd/shaders/resolve.glsl
+++ b/servers/rendering/renderer_rd/shaders/effects/resolve.glsl
diff --git a/servers/rendering/renderer_rd/shaders/effects/tonemap.glsl b/servers/rendering/renderer_rd/shaders/effects/tonemap.glsl
index a8ccdea60b..62a7b0e7d7 100644
--- a/servers/rendering/renderer_rd/shaders/effects/tonemap.glsl
+++ b/servers/rendering/renderer_rd/shaders/effects/tonemap.glsl
@@ -448,6 +448,11 @@ void main() {
// Early Tonemap & SRGB Conversion
#ifndef SUBPASS
+ if (params.use_fxaa) {
+ // FXAA must be performed before glow to preserve the "bleed" effect of glow.
+ color.rgb = do_fxaa(color.rgb, exposure, uv_interp);
+ }
+
if (params.use_glow && params.glow_mode == GLOW_MODE_MIX) {
vec3 glow = gather_glow(source_glow, uv_interp) * params.luminance_multiplier;
if (params.glow_map_strength > 0.001) {
@@ -455,10 +460,6 @@ void main() {
}
color.rgb = mix(color.rgb, glow, params.glow_intensity);
}
-
- if (params.use_fxaa) {
- color.rgb = do_fxaa(color.rgb, exposure, uv_interp);
- }
#endif
if (params.use_debanding) {
diff --git a/servers/rendering/renderer_rd/shaders/environment/SCsub b/servers/rendering/renderer_rd/shaders/environment/SCsub
new file mode 100644
index 0000000000..fc513d3fb9
--- /dev/null
+++ b/servers/rendering/renderer_rd/shaders/environment/SCsub
@@ -0,0 +1,17 @@
+#!/usr/bin/env python
+
+Import("env")
+
+if "RD_GLSL" in env["BUILDERS"]:
+ # find all include files
+ gl_include_files = [str(f) for f in Glob("*_inc.glsl")]
+
+ # find all shader code(all glsl files excluding our include files)
+ glsl_files = [str(f) for f in Glob("*.glsl") if str(f) not in gl_include_files]
+
+ # make sure we recompile shaders if include files change
+ env.Depends([f + ".gen.h" for f in glsl_files], gl_include_files)
+
+ # compile shaders
+ for glsl_file in glsl_files:
+ env.RD_GLSL(glsl_file)
diff --git a/servers/rendering/renderer_rd/shaders/gi.glsl b/servers/rendering/renderer_rd/shaders/environment/gi.glsl
index 0c7f08813b..f687d50a2d 100644
--- a/servers/rendering/renderer_rd/shaders/gi.glsl
+++ b/servers/rendering/renderer_rd/shaders/environment/gi.glsl
@@ -86,19 +86,29 @@ voxel_gi_instances;
layout(set = 0, binding = 17) uniform texture3D voxel_gi_textures[MAX_VOXEL_GI_INSTANCES];
-layout(push_constant, std430) uniform Params {
- ivec2 screen_size;
- float z_near;
- float z_far;
+layout(set = 0, binding = 18, std140) uniform SceneData {
+ mat4x4 inv_projection[2];
+ mat4x4 cam_transform;
+ vec4 eye_offset[2];
- vec4 proj_info;
+ ivec2 screen_size;
+ float pad1;
+ float pad2;
+}
+scene_data;
+layout(push_constant, std430) uniform Params {
+ uint view_index;
uint max_voxel_gi_instances;
bool high_quality_vct;
bool orthogonal;
- uint pad;
- mat3x4 cam_rotation;
+ vec4 proj_info;
+
+ float z_near;
+ float z_far;
+ float pad1;
+ float pad2;
}
params;
@@ -130,6 +140,16 @@ vec4 blend_color(vec4 src, vec4 dst) {
}
vec3 reconstruct_position(ivec2 screen_pos) {
+#ifdef USE_MULTIVIEW
+ vec4 pos;
+ pos.xy = (2.0 * vec2(screen_pos) / vec2(scene_data.screen_size)) - 1.0;
+ pos.z = texelFetch(sampler2D(depth_buffer, linear_sampler), screen_pos, 0).r * 2.0 - 1.0;
+ pos.w = 1.0;
+
+ pos = scene_data.inv_projection[params.view_index] * pos;
+
+ return pos.xyz / pos.w;
+#else
vec3 pos;
pos.z = texelFetch(sampler2D(depth_buffer, linear_sampler), screen_pos, 0).r;
@@ -147,6 +167,7 @@ vec3 reconstruct_position(ivec2 screen_pos) {
}
return pos;
+#endif
}
void sdfvoxel_gi_process(uint cascade, vec3 cascade_pos, vec3 cam_pos, vec3 cam_normal, vec3 cam_specular_normal, float roughness, out vec3 diffuse_light, out vec3 specular_light) {
@@ -579,9 +600,10 @@ void process_gi(ivec2 pos, vec3 vertex, inout vec4 ambient_light, inout vec4 ref
if (normal.length() > 0.5) {
//valid normal, can do GI
float roughness = normal_roughness.w;
- vertex = mat3(params.cam_rotation) * vertex;
- normal = normalize(mat3(params.cam_rotation) * normal);
- vec3 reflection = normalize(reflect(normalize(vertex), normal));
+ vec3 view = -normalize(mat3(scene_data.cam_transform) * (vertex - scene_data.eye_offset[params.view_index].xyz));
+ vertex = mat3(scene_data.cam_transform) * vertex;
+ normal = normalize(mat3(scene_data.cam_transform) * normal);
+ vec3 reflection = normalize(reflect(-view, normal));
#ifdef USE_SDFGI
sdfgi_process(vertex, normal, reflection, roughness, ambient_light, reflection_light);
@@ -629,7 +651,7 @@ void main() {
#ifdef MODE_HALF_RES
pos <<= 1;
#endif
- if (any(greaterThanEqual(pos, params.screen_size))) { //too large, do nothing
+ if (any(greaterThanEqual(pos, scene_data.screen_size))) { //too large, do nothing
return;
}
diff --git a/servers/rendering/renderer_rd/shaders/sdfgi_debug.glsl b/servers/rendering/renderer_rd/shaders/environment/sdfgi_debug.glsl
index 802a410825..af5f7d0a58 100644
--- a/servers/rendering/renderer_rd/shaders/sdfgi_debug.glsl
+++ b/servers/rendering/renderer_rd/shaders/environment/sdfgi_debug.glsl
@@ -40,10 +40,13 @@ layout(push_constant, std430) uniform Params {
bool use_occlusion;
float y_mult;
- vec3 cam_extent;
int probe_axis_size;
+ float z_near;
+ float reserved1;
+ float reserved2;
mat4 cam_transform;
+ mat4 inv_projection;
}
params;
@@ -81,8 +84,9 @@ void main() {
{
ray_pos = params.cam_transform[3].xyz;
- ray_dir.xy = params.cam_extent.xy * ((vec2(screen_pos) / vec2(params.screen_size)) * 2.0 - 1.0);
- ray_dir.z = params.cam_extent.z;
+ ray_dir.xy = ((vec2(screen_pos) / vec2(params.screen_size)) * 2.0 - 1.0);
+ ray_dir.z = params.z_near;
+ ray_dir = (params.inv_projection * vec4(ray_dir, 1.0)).xyz;
ray_dir = normalize(mat3(params.cam_transform) * ray_dir);
}
diff --git a/servers/rendering/renderer_rd/shaders/sdfgi_debug_probes.glsl b/servers/rendering/renderer_rd/shaders/environment/sdfgi_debug_probes.glsl
index e0be0bca12..75b1ad2130 100644
--- a/servers/rendering/renderer_rd/shaders/sdfgi_debug_probes.glsl
+++ b/servers/rendering/renderer_rd/shaders/environment/sdfgi_debug_probes.glsl
@@ -2,13 +2,28 @@
#version 450
+#if defined(USE_MULTIVIEW) && defined(has_VK_KHR_multiview)
+#extension GL_EXT_multiview : enable
+#endif
+
+#ifdef USE_MULTIVIEW
+#ifdef has_VK_KHR_multiview
+#define ViewIndex gl_ViewIndex
+#else // has_VK_KHR_multiview
+// !BAS! This needs to become an input once we implement our fallback!
+#define ViewIndex 0
+#endif // has_VK_KHR_multiview
+#else // USE_MULTIVIEW
+// Set to zero, not supported in non stereo
+#define ViewIndex 0
+#endif //USE_MULTIVIEW
+
#VERSION_DEFINES
#define MAX_CASCADES 8
+#define MAX_VIEWS 2
layout(push_constant, std430) uniform Params {
- mat4 projection;
-
uint band_power;
uint sections_in_band;
uint band_mask;
@@ -68,6 +83,11 @@ cascades;
layout(set = 0, binding = 4) uniform texture3D occlusion_texture;
layout(set = 0, binding = 3) uniform sampler linear_sampler;
+layout(set = 0, binding = 5, std140) uniform SceneData {
+ mat4 projection[MAX_VIEWS];
+}
+scene_data;
+
void main() {
#ifdef MODE_PROBES
probe_index = gl_InstanceIndex;
@@ -85,7 +105,7 @@ void main() {
vertex += (cascades.data[params.cascade].offset + vec3(probe_cell) * probe_cell_size) / vec3(1.0, params.y_mult, 1.0);
- gl_Position = params.projection * vec4(vertex, 1.0);
+ gl_Position = scene_data.projection[ViewIndex] * vec4(vertex, 1.0);
#endif
#ifdef MODE_VISIBILITY
@@ -144,7 +164,7 @@ void main() {
visibility = dot(texelFetch(sampler3D(occlusion_texture, linear_sampler), tex_pos, 0), layer_axis[occlusion_layer]);
- gl_Position = params.projection * vec4(vertex, 1.0);
+ gl_Position = scene_data.projection[ViewIndex] * vec4(vertex, 1.0);
#endif
}
@@ -153,16 +173,32 @@ void main() {
#version 450
+#if defined(USE_MULTIVIEW) && defined(has_VK_KHR_multiview)
+#extension GL_EXT_multiview : enable
+#endif
+
+#ifdef USE_MULTIVIEW
+#ifdef has_VK_KHR_multiview
+#define ViewIndex gl_ViewIndex
+#else // has_VK_KHR_multiview
+// !BAS! This needs to become an input once we implement our fallback!
+#define ViewIndex 0
+#endif // has_VK_KHR_multiview
+#else // USE_MULTIVIEW
+// Set to zero, not supported in non stereo
+#define ViewIndex 0
+#endif //USE_MULTIVIEW
+
#VERSION_DEFINES
+#define MAX_VIEWS 2
+
layout(location = 0) out vec4 frag_color;
layout(set = 0, binding = 2) uniform texture2DArray lightprobe_texture;
layout(set = 0, binding = 3) uniform sampler linear_sampler;
layout(push_constant, std430) uniform Params {
- mat4 projection;
-
uint band_power;
uint sections_in_band;
uint band_mask;
diff --git a/servers/rendering/renderer_rd/shaders/sdfgi_direct_light.glsl b/servers/rendering/renderer_rd/shaders/environment/sdfgi_direct_light.glsl
index b95fad650e..b95fad650e 100644
--- a/servers/rendering/renderer_rd/shaders/sdfgi_direct_light.glsl
+++ b/servers/rendering/renderer_rd/shaders/environment/sdfgi_direct_light.glsl
diff --git a/servers/rendering/renderer_rd/shaders/sdfgi_integrate.glsl b/servers/rendering/renderer_rd/shaders/environment/sdfgi_integrate.glsl
index 9c03297f5c..9c03297f5c 100644
--- a/servers/rendering/renderer_rd/shaders/sdfgi_integrate.glsl
+++ b/servers/rendering/renderer_rd/shaders/environment/sdfgi_integrate.glsl
diff --git a/servers/rendering/renderer_rd/shaders/sdfgi_preprocess.glsl b/servers/rendering/renderer_rd/shaders/environment/sdfgi_preprocess.glsl
index bce98f4054..bce98f4054 100644
--- a/servers/rendering/renderer_rd/shaders/sdfgi_preprocess.glsl
+++ b/servers/rendering/renderer_rd/shaders/environment/sdfgi_preprocess.glsl
diff --git a/servers/rendering/renderer_rd/shaders/voxel_gi.glsl b/servers/rendering/renderer_rd/shaders/environment/voxel_gi.glsl
index 577c6d0cd0..577c6d0cd0 100644
--- a/servers/rendering/renderer_rd/shaders/voxel_gi.glsl
+++ b/servers/rendering/renderer_rd/shaders/environment/voxel_gi.glsl
diff --git a/servers/rendering/renderer_rd/shaders/voxel_gi_debug.glsl b/servers/rendering/renderer_rd/shaders/environment/voxel_gi_debug.glsl
index fd7a2bf8ad..fd7a2bf8ad 100644
--- a/servers/rendering/renderer_rd/shaders/voxel_gi_debug.glsl
+++ b/servers/rendering/renderer_rd/shaders/environment/voxel_gi_debug.glsl
diff --git a/servers/rendering/renderer_rd/shaders/voxel_gi_sdf.glsl b/servers/rendering/renderer_rd/shaders/environment/voxel_gi_sdf.glsl
index 47a611a543..47a611a543 100644
--- a/servers/rendering/renderer_rd/shaders/voxel_gi_sdf.glsl
+++ b/servers/rendering/renderer_rd/shaders/environment/voxel_gi_sdf.glsl
diff --git a/servers/rendering/renderer_rd/shaders/scene_forward_clustered.glsl b/servers/rendering/renderer_rd/shaders/scene_forward_clustered.glsl
index 4f49c186a6..5947fc5351 100644
--- a/servers/rendering/renderer_rd/shaders/scene_forward_clustered.glsl
+++ b/servers/rendering/renderer_rd/shaders/scene_forward_clustered.glsl
@@ -83,6 +83,11 @@ layout(location = 5) out vec3 tangent_interp;
layout(location = 6) out vec3 binormal_interp;
#endif
+#ifdef MOTION_VECTORS
+layout(location = 7) out vec4 screen_position;
+layout(location = 8) out vec4 prev_screen_position;
+#endif
+
#ifdef MATERIAL_UNIFORMS_USED
layout(set = MATERIAL_UNIFORM_SET, binding = 0, std140) uniform MaterialUniforms{
@@ -91,13 +96,15 @@ layout(set = MATERIAL_UNIFORM_SET, binding = 0, std140) uniform MaterialUniforms
} material;
#endif
+float global_time;
+
#ifdef MODE_DUAL_PARABOLOID
-layout(location = 8) out float dp_clip;
+layout(location = 9) out float dp_clip;
#endif
-layout(location = 9) out flat uint instance_index_interp;
+layout(location = 10) out flat uint instance_index_interp;
#ifdef USE_MULTIVIEW
#ifdef has_VK_KHR_multiview
@@ -115,23 +122,12 @@ invariant gl_Position;
#GLOBALS
-void main() {
+void vertex_shader(in uint instance_index, in bool is_multimesh, in SceneData scene_data, in mat4 model_matrix, out vec4 screen_pos) {
vec4 instance_custom = vec4(0.0);
#if defined(COLOR_USED)
color_interp = color_attrib;
#endif
- uint instance_index = draw_call.instance_index;
-
- bool is_multimesh = bool(instances.data[instance_index].flags & INSTANCE_FLAGS_MULTIMESH);
- if (!is_multimesh) {
- instance_index += gl_InstanceIndex;
- }
-
- instance_index_interp = instance_index;
-
- mat4 model_matrix = instances.data[instance_index].transform;
-
mat3 model_normal_matrix;
if (bool(instances.data[instance_index].flags & INSTANCE_FLAGS_NON_UNIFORM_SCALE)) {
model_normal_matrix = transpose(inverse(mat3(model_matrix)));
@@ -321,6 +317,11 @@ void main() {
#endif
vertex_interp = vertex;
+
+#ifdef MOTION_VECTORS
+ screen_pos = projection_matrix * vec4(vertex_interp, 1.0);
+#endif
+
#ifdef NORMAL_USED
normal_interp = normal;
#endif
@@ -375,6 +376,29 @@ void main() {
#endif
}
+void main() {
+ uint instance_index = draw_call.instance_index;
+
+ bool is_multimesh = bool(instances.data[instance_index].flags & INSTANCE_FLAGS_MULTIMESH);
+ if (!is_multimesh) {
+ instance_index += gl_InstanceIndex;
+ }
+
+ instance_index_interp = instance_index;
+
+ mat4 model_matrix = instances.data[instance_index].transform;
+#if defined(MOTION_VECTORS)
+ global_time = scene_data_block.prev_data.time;
+ vertex_shader(instance_index, is_multimesh, scene_data_block.prev_data, instances.data[instance_index].prev_transform, prev_screen_position);
+ global_time = scene_data_block.data.time;
+ vertex_shader(instance_index, is_multimesh, scene_data_block.data, model_matrix, screen_position);
+#else
+ global_time = scene_data_block.data.time;
+ vec4 screen_position;
+ vertex_shader(instance_index, is_multimesh, scene_data_block.data, model_matrix, screen_position);
+#endif
+}
+
#[fragment]
#version 450
@@ -431,13 +455,18 @@ layout(location = 5) in vec3 tangent_interp;
layout(location = 6) in vec3 binormal_interp;
#endif
+#ifdef MOTION_VECTORS
+layout(location = 7) in vec4 screen_position;
+layout(location = 8) in vec4 prev_screen_position;
+#endif
+
#ifdef MODE_DUAL_PARABOLOID
-layout(location = 8) in float dp_clip;
+layout(location = 9) in float dp_clip;
#endif
-layout(location = 9) in flat uint instance_index_interp;
+layout(location = 10) in flat uint instance_index_interp;
#ifdef USE_MULTIVIEW
#ifdef has_VK_KHR_multiview
@@ -462,6 +491,8 @@ layout(location = 9) in flat uint instance_index_interp;
#define inv_projection_matrix scene_data.inv_projection_matrix
#endif
+#define global_time scene_data_block.data.time
+
#if defined(ENABLE_SSS) && defined(ENABLE_TRANSMITTANCE)
//both required for transmittance to be enabled
#define LIGHT_TRANSMITTANCE_USED
@@ -510,6 +541,10 @@ layout(location = 0) out vec4 frag_color;
#endif // RENDER DEPTH
+#ifdef MOTION_VECTORS
+layout(location = 2) out vec2 motion_vector;
+#endif
+
#include "scene_forward_aa_inc.glsl"
#if !defined(MODE_RENDER_DEPTH) && !defined(MODE_UNSHADED)
@@ -528,24 +563,24 @@ layout(location = 0) out vec4 frag_color;
#ifndef MODE_RENDER_DEPTH
vec4 volumetric_fog_process(vec2 screen_uv, float z) {
- vec3 fog_pos = vec3(screen_uv, z * scene_data.volumetric_fog_inv_length);
+ vec3 fog_pos = vec3(screen_uv, z * scene_data_block.data.volumetric_fog_inv_length);
if (fog_pos.z < 0.0) {
return vec4(0.0);
} else if (fog_pos.z < 1.0) {
- fog_pos.z = pow(fog_pos.z, scene_data.volumetric_fog_detail_spread);
+ fog_pos.z = pow(fog_pos.z, scene_data_block.data.volumetric_fog_detail_spread);
}
return texture(sampler3D(volumetric_fog_texture, material_samplers[SAMPLER_LINEAR_CLAMP]), fog_pos);
}
vec4 fog_process(vec3 vertex) {
- vec3 fog_color = scene_data.fog_light_color;
+ vec3 fog_color = scene_data_block.data.fog_light_color;
- if (scene_data.fog_aerial_perspective > 0.0) {
+ if (scene_data_block.data.fog_aerial_perspective > 0.0) {
vec3 sky_fog_color = vec3(0.0);
- vec3 cube_view = scene_data.radiance_inverse_xform * vertex;
+ vec3 cube_view = scene_data_block.data.radiance_inverse_xform * vertex;
// mip_level always reads from the second mipmap and higher so the fog is always slightly blurred
- float mip_level = mix(1.0 / MAX_ROUGHNESS_LOD, 1.0, 1.0 - (abs(vertex.z) - scene_data.z_near) / (scene_data.z_far - scene_data.z_near));
+ float mip_level = mix(1.0 / MAX_ROUGHNESS_LOD, 1.0, 1.0 - (abs(vertex.z) - scene_data_block.data.z_near) / (scene_data_block.data.z_far - scene_data_block.data.z_near));
#ifdef USE_RADIANCE_CUBEMAP_ARRAY
float lod, blend;
blend = modf(mip_level * MAX_ROUGHNESS_LOD, lod);
@@ -554,29 +589,29 @@ vec4 fog_process(vec3 vertex) {
#else
sky_fog_color = textureLod(samplerCube(radiance_cubemap, material_samplers[SAMPLER_LINEAR_WITH_MIPMAPS_CLAMP]), cube_view, mip_level * MAX_ROUGHNESS_LOD).rgb;
#endif //USE_RADIANCE_CUBEMAP_ARRAY
- fog_color = mix(fog_color, sky_fog_color, scene_data.fog_aerial_perspective);
+ fog_color = mix(fog_color, sky_fog_color, scene_data_block.data.fog_aerial_perspective);
}
- if (scene_data.fog_sun_scatter > 0.001) {
+ if (scene_data_block.data.fog_sun_scatter > 0.001) {
vec4 sun_scatter = vec4(0.0);
float sun_total = 0.0;
vec3 view = normalize(vertex);
- for (uint i = 0; i < scene_data.directional_light_count; i++) {
+ for (uint i = 0; i < scene_data_block.data.directional_light_count; i++) {
vec3 light_color = directional_lights.data[i].color * directional_lights.data[i].energy;
float light_amount = pow(max(dot(view, directional_lights.data[i].direction), 0.0), 8.0);
- fog_color += light_color * light_amount * scene_data.fog_sun_scatter;
+ fog_color += light_color * light_amount * scene_data_block.data.fog_sun_scatter;
}
}
- float fog_amount = 1.0 - exp(min(0.0, -length(vertex) * scene_data.fog_density));
+ float fog_amount = 1.0 - exp(min(0.0, -length(vertex) * scene_data_block.data.fog_density));
- if (abs(scene_data.fog_height_density) >= 0.0001) {
- float y = (scene_data.inv_view_matrix * vec4(vertex, 1.0)).y;
+ if (abs(scene_data_block.data.fog_height_density) >= 0.0001) {
+ float y = (scene_data_block.data.inv_view_matrix * vec4(vertex, 1.0)).y;
- float y_dist = y - scene_data.fog_height;
+ float y_dist = y - scene_data_block.data.fog_height;
- float vfog_amount = 1.0 - exp(min(0.0, y_dist * scene_data.fog_height_density));
+ float vfog_amount = 1.0 - exp(min(0.0, y_dist * scene_data_block.data.fog_height_density));
fog_amount = max(vfog_amount, fog_amount);
}
@@ -601,18 +636,16 @@ uint cluster_get_range_clip_mask(uint i, uint z_min, uint z_max) {
#endif //!MODE_RENDER DEPTH
-void main() {
-#ifdef MODE_DUAL_PARABOLOID
-
- if (dp_clip > 0.0)
- discard;
-#endif
-
+void fragment_shader(in SceneData scene_data) {
uint instance_index = instance_index_interp;
//lay out everything, whatever is unused is optimized away anyway
vec3 vertex = vertex_interp;
+#ifdef USE_MULTIVIEW
+ vec3 view = -normalize(vertex_interp - scene_data.eye_offset[ViewIndex].xyz);
+#else
vec3 view = -normalize(vertex_interp);
+#endif
vec3 albedo = vec3(1.0);
vec3 backlight = vec3(0.0);
vec4 transmittance_color = vec4(0.0, 0.0, 0.0, 1.0);
@@ -1169,7 +1202,7 @@ void main() {
if (sc_use_forward_gi && bool(instances.data[instance_index].flags & INSTANCE_FLAGS_USE_VOXEL_GI)) { // process voxel_gi_instances
uint index1 = instances.data[instance_index].gi_offset & 0xFFFF;
- vec3 ref_vec = normalize(reflect(normalize(vertex), normal));
+ vec3 ref_vec = normalize(reflect(-view, normal));
//find arbitrary tangent and bitangent, then build a matrix
vec3 v0 = abs(normal.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(0.0, 1.0, 0.0);
vec3 tangent = normalize(cross(v0, normal));
@@ -1205,12 +1238,20 @@ void main() {
if (scene_data.gi_upscale_for_msaa) {
vec2 base_coord = screen_uv;
vec2 closest_coord = base_coord;
+#ifdef USE_MULTIVIEW
+ float closest_ang = dot(normal, textureLod(sampler2DArray(normal_roughness_buffer, material_samplers[SAMPLER_LINEAR_CLAMP]), vec3(base_coord, ViewIndex), 0.0).xyz * 2.0 - 1.0);
+#else // USE_MULTIVIEW
float closest_ang = dot(normal, textureLod(sampler2D(normal_roughness_buffer, material_samplers[SAMPLER_LINEAR_CLAMP]), base_coord, 0.0).xyz * 2.0 - 1.0);
+#endif // USE_MULTIVIEW
for (int i = 0; i < 4; i++) {
const vec2 neighbours[4] = vec2[](vec2(-1, 0), vec2(1, 0), vec2(0, -1), vec2(0, 1));
vec2 neighbour_coord = base_coord + neighbours[i] * scene_data.screen_pixel_size;
+#ifdef USE_MULTIVIEW
+ float neighbour_ang = dot(normal, textureLod(sampler2DArray(normal_roughness_buffer, material_samplers[SAMPLER_LINEAR_CLAMP]), vec3(neighbour_coord, ViewIndex), 0.0).xyz * 2.0 - 1.0);
+#else // USE_MULTIVIEW
float neighbour_ang = dot(normal, textureLod(sampler2D(normal_roughness_buffer, material_samplers[SAMPLER_LINEAR_CLAMP]), neighbour_coord, 0.0).xyz * 2.0 - 1.0);
+#endif // USE_MULTIVIEW
if (neighbour_ang > closest_ang) {
closest_ang = neighbour_ang;
closest_coord = neighbour_coord;
@@ -1223,8 +1264,13 @@ void main() {
coord = screen_uv;
}
+#ifdef USE_MULTIVIEW
+ vec4 buffer_ambient = textureLod(sampler2DArray(ambient_buffer, material_samplers[SAMPLER_LINEAR_CLAMP]), vec3(coord, ViewIndex), 0.0);
+ vec4 buffer_reflection = textureLod(sampler2DArray(reflection_buffer, material_samplers[SAMPLER_LINEAR_CLAMP]), vec3(coord, ViewIndex), 0.0);
+#else // USE_MULTIVIEW
vec4 buffer_ambient = textureLod(sampler2D(ambient_buffer, material_samplers[SAMPLER_LINEAR_CLAMP]), coord, 0.0);
vec4 buffer_reflection = textureLod(sampler2D(reflection_buffer, material_samplers[SAMPLER_LINEAR_CLAMP]), coord, 0.0);
+#endif // USE_MULTIVIEW
ambient_light = mix(ambient_light, buffer_ambient.rgb, buffer_ambient.a);
specular_light = mix(specular_light, buffer_reflection.rgb, buffer_reflection.a);
@@ -1287,7 +1333,7 @@ void main() {
#else
vec3 bent_normal = normal;
#endif
- reflection_process(reflection_index, vertex, bent_normal, roughness, ambient_light, specular_light, ambient_accum, reflection_accum);
+ reflection_process(reflection_index, view, vertex, bent_normal, roughness, ambient_light, specular_light, ambient_accum, reflection_accum);
}
}
@@ -2015,4 +2061,23 @@ void main() {
#endif //MODE_SEPARATE_SPECULAR
#endif //MODE_RENDER_DEPTH
+#ifdef MOTION_VECTORS
+ vec2 position_clip = (screen_position.xy / screen_position.w) - scene_data.taa_jitter;
+ vec2 prev_position_clip = (prev_screen_position.xy / prev_screen_position.w) - scene_data_block.prev_data.taa_jitter;
+
+ vec2 position_uv = position_clip * vec2(0.5, 0.5);
+ vec2 prev_position_uv = prev_position_clip * vec2(0.5, 0.5);
+
+ motion_vector = position_uv - prev_position_uv;
+#endif
+}
+
+void main() {
+#ifdef MODE_DUAL_PARABOLOID
+
+ if (dp_clip > 0.0)
+ discard;
+#endif
+
+ fragment_shader(scene_data_block.data);
}
diff --git a/servers/rendering/renderer_rd/shaders/scene_forward_clustered_inc.glsl b/servers/rendering/renderer_rd/shaders/scene_forward_clustered_inc.glsl
index f2672f10e7..0c23de96c3 100644
--- a/servers/rendering/renderer_rd/shaders/scene_forward_clustered_inc.glsl
+++ b/servers/rendering/renderer_rd/shaders/scene_forward_clustered_inc.glsl
@@ -171,7 +171,7 @@ sdfgi;
/* Set 1: Render Pass (changes per render pass) */
-layout(set = 1, binding = 0, std140) uniform SceneData {
+struct SceneData {
mat4 projection_matrix;
mat4 inv_projection_matrix;
mat4 inv_view_matrix;
@@ -180,6 +180,7 @@ layout(set = 1, binding = 0, std140) uniform SceneData {
// only used for multiview
mat4 projection_matrix_view[MAX_VIEWS];
mat4 inv_projection_matrix_view[MAX_VIEWS];
+ vec4 eye_offset[MAX_VIEWS];
vec2 viewport_size;
vec2 screen_pixel_size;
@@ -249,11 +250,19 @@ layout(set = 1, binding = 0, std140) uniform SceneData {
float reflection_multiplier; // one normally, zero when rendering reflections
bool pancake_shadows;
+ vec2 taa_jitter;
+ uvec2 pad2;
+};
+
+layout(set = 1, binding = 0, std140) uniform SceneDataBlock {
+ SceneData data;
+ SceneData prev_data;
}
-scene_data;
+scene_data_block;
struct InstanceData {
mat4 transform;
+ mat4 prev_transform;
uint flags;
uint instance_uniforms_ofs; //base offset in global buffer for instance variables
uint gi_offset; //GI information when using lightmapping (VCT or lightmap index)
@@ -308,10 +317,16 @@ layout(r32ui, set = 1, binding = 12) uniform restrict uimage3D geom_facing_grid;
layout(set = 1, binding = 9) uniform texture2D depth_buffer;
layout(set = 1, binding = 10) uniform texture2D color_buffer;
+#ifdef USE_MULTIVIEW
+layout(set = 1, binding = 11) uniform texture2DArray normal_roughness_buffer;
+layout(set = 1, binding = 13) uniform texture2DArray ambient_buffer;
+layout(set = 1, binding = 14) uniform texture2DArray reflection_buffer;
+#else // USE_MULTIVIEW
layout(set = 1, binding = 11) uniform texture2D normal_roughness_buffer;
-layout(set = 1, binding = 12) uniform texture2D ao_buffer;
layout(set = 1, binding = 13) uniform texture2D ambient_buffer;
layout(set = 1, binding = 14) uniform texture2D reflection_buffer;
+#endif
+layout(set = 1, binding = 12) uniform texture2D ao_buffer;
layout(set = 1, binding = 15) uniform texture2DArray sdfgi_lightprobe_texture;
layout(set = 1, binding = 16) uniform texture3D sdfgi_occlusion_cascades;
diff --git a/servers/rendering/renderer_rd/shaders/scene_forward_lights_inc.glsl b/servers/rendering/renderer_rd/shaders/scene_forward_lights_inc.glsl
index bd1c2b5758..c92b29b14a 100644
--- a/servers/rendering/renderer_rd/shaders/scene_forward_lights_inc.glsl
+++ b/servers/rendering/renderer_rd/shaders/scene_forward_lights_inc.glsl
@@ -262,7 +262,7 @@ float sample_directional_pcf_shadow(texture2D shadow, vec2 shadow_pixel_size, ve
float avg = 0.0;
for (uint i = 0; i < sc_directional_soft_shadow_samples; i++) {
- avg += textureProj(sampler2DShadow(shadow, shadow_sampler), vec4(pos + shadow_pixel_size * (disk_rotation * scene_data.directional_soft_shadow_kernel[i].xy), depth, 1.0));
+ avg += textureProj(sampler2DShadow(shadow, shadow_sampler), vec4(pos + shadow_pixel_size * (disk_rotation * scene_data_block.data.directional_soft_shadow_kernel[i].xy), depth, 1.0));
}
return avg * (1.0 / float(sc_directional_soft_shadow_samples));
@@ -288,7 +288,7 @@ float sample_pcf_shadow(texture2D shadow, vec2 shadow_pixel_size, vec3 coord) {
float avg = 0.0;
for (uint i = 0; i < sc_soft_shadow_samples; i++) {
- avg += textureProj(sampler2DShadow(shadow, shadow_sampler), vec4(pos + shadow_pixel_size * (disk_rotation * scene_data.soft_shadow_kernel[i].xy), depth, 1.0));
+ avg += textureProj(sampler2DShadow(shadow, shadow_sampler), vec4(pos + shadow_pixel_size * (disk_rotation * scene_data_block.data.soft_shadow_kernel[i].xy), depth, 1.0));
}
return avg * (1.0 / float(sc_soft_shadow_samples));
@@ -311,10 +311,10 @@ float sample_omni_pcf_shadow(texture2D shadow, float blur_scale, vec2 coord, vec
}
float avg = 0.0;
- vec2 offset_scale = blur_scale * 2.0 * scene_data.shadow_atlas_pixel_size / uv_rect.zw;
+ vec2 offset_scale = blur_scale * 2.0 * scene_data_block.data.shadow_atlas_pixel_size / uv_rect.zw;
for (uint i = 0; i < sc_soft_shadow_samples; i++) {
- vec2 offset = offset_scale * (disk_rotation * scene_data.soft_shadow_kernel[i].xy);
+ vec2 offset = offset_scale * (disk_rotation * scene_data_block.data.soft_shadow_kernel[i].xy);
vec2 sample_coord = coord + offset;
float sample_coord_length_sqaured = dot(sample_coord, sample_coord);
@@ -351,7 +351,7 @@ float sample_directional_soft_shadow(texture2D shadow, vec3 pssm_coord, vec2 tex
}
for (uint i = 0; i < sc_directional_penumbra_shadow_samples; i++) {
- vec2 suv = pssm_coord.xy + (disk_rotation * scene_data.directional_penumbra_shadow_kernel[i].xy) * tex_scale;
+ vec2 suv = pssm_coord.xy + (disk_rotation * scene_data_block.data.directional_penumbra_shadow_kernel[i].xy) * tex_scale;
float d = textureLod(sampler2D(shadow, material_samplers[SAMPLER_LINEAR_CLAMP]), suv, 0.0).r;
if (d < pssm_coord.z) {
blocker_average += d;
@@ -367,7 +367,7 @@ float sample_directional_soft_shadow(texture2D shadow, vec3 pssm_coord, vec2 tex
float s = 0.0;
for (uint i = 0; i < sc_directional_penumbra_shadow_samples; i++) {
- vec2 suv = pssm_coord.xy + (disk_rotation * scene_data.directional_penumbra_shadow_kernel[i].xy) * tex_scale;
+ vec2 suv = pssm_coord.xy + (disk_rotation * scene_data_block.data.directional_penumbra_shadow_kernel[i].xy) * tex_scale;
s += textureProj(sampler2DShadow(shadow, shadow_sampler), vec4(suv, pssm_coord.z, 1.0));
}
@@ -394,7 +394,7 @@ float light_process_omni_shadow(uint idx, vec3 vertex, vec3 normal) {
#ifndef SHADOWS_DISABLED
if (omni_lights.data[idx].shadow_enabled) {
// there is a shadowmap
- vec2 texel_size = scene_data.shadow_atlas_pixel_size;
+ vec2 texel_size = scene_data_block.data.shadow_atlas_pixel_size;
vec4 base_uv_rect = omni_lights.data[idx].atlas_rect;
base_uv_rect.xy += texel_size;
base_uv_rect.zw -= texel_size * 2.0;
@@ -438,7 +438,7 @@ float light_process_omni_shadow(uint idx, vec3 vertex, vec3 normal) {
bitangent *= omni_lights.data[idx].soft_shadow_size * omni_lights.data[idx].soft_shadow_scale;
for (uint i = 0; i < sc_penumbra_shadow_samples; i++) {
- vec2 disk = disk_rotation * scene_data.penumbra_shadow_kernel[i].xy;
+ vec2 disk = disk_rotation * scene_data_block.data.penumbra_shadow_kernel[i].xy;
vec3 pos = local_vert + tangent * disk.x + bitangent * disk.y;
@@ -474,7 +474,7 @@ float light_process_omni_shadow(uint idx, vec3 vertex, vec3 normal) {
shadow = 0.0;
for (uint i = 0; i < sc_penumbra_shadow_samples; i++) {
- vec2 disk = disk_rotation * scene_data.penumbra_shadow_kernel[i].xy;
+ vec2 disk = disk_rotation * scene_data_block.data.penumbra_shadow_kernel[i].xy;
vec3 pos = local_vert + tangent * disk.x + bitangent * disk.y;
pos = normalize(pos);
@@ -579,7 +579,7 @@ void light_process_omni(uint idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 v
splane.xy = splane.xy * 0.5 + 0.5;
splane.z = shadow_len * omni_lights.data[idx].inv_radius;
splane.xy = clamp_rect.xy + splane.xy * clamp_rect.zw;
- // splane.xy = clamp(splane.xy,clamp_rect.xy + scene_data.shadow_atlas_pixel_size,clamp_rect.xy + clamp_rect.zw - scene_data.shadow_atlas_pixel_size );
+ // splane.xy = clamp(splane.xy,clamp_rect.xy + scene_data_block.data.shadow_atlas_pixel_size,clamp_rect.xy + clamp_rect.zw - scene_data_block.data.shadow_atlas_pixel_size );
splane.w = 1.0; //needed? i think it should be 1 already
float shadow_z = textureLod(sampler2D(shadow_atlas, material_samplers[SAMPLER_LINEAR_CLAMP]), splane.xy, 0.0).r;
@@ -709,7 +709,7 @@ float light_process_spot_shadow(uint idx, vec3 vertex, vec3 normal) {
float uv_size = spot_lights.data[idx].soft_shadow_size * z_norm * spot_lights.data[idx].soft_shadow_scale;
vec2 clamp_max = spot_lights.data[idx].atlas_rect.xy + spot_lights.data[idx].atlas_rect.zw;
for (uint i = 0; i < sc_penumbra_shadow_samples; i++) {
- vec2 suv = shadow_uv + (disk_rotation * scene_data.penumbra_shadow_kernel[i].xy) * uv_size;
+ vec2 suv = shadow_uv + (disk_rotation * scene_data_block.data.penumbra_shadow_kernel[i].xy) * uv_size;
suv = clamp(suv, spot_lights.data[idx].atlas_rect.xy, clamp_max);
float d = textureLod(sampler2D(shadow_atlas, material_samplers[SAMPLER_LINEAR_CLAMP]), suv, 0.0).r;
if (d < splane.z) {
@@ -726,7 +726,7 @@ float light_process_spot_shadow(uint idx, vec3 vertex, vec3 normal) {
shadow = 0.0;
for (uint i = 0; i < sc_penumbra_shadow_samples; i++) {
- vec2 suv = shadow_uv + (disk_rotation * scene_data.penumbra_shadow_kernel[i].xy) * uv_size;
+ vec2 suv = shadow_uv + (disk_rotation * scene_data_block.data.penumbra_shadow_kernel[i].xy) * uv_size;
suv = clamp(suv, spot_lights.data[idx].atlas_rect.xy, clamp_max);
shadow += textureProj(sampler2DShadow(shadow_atlas, shadow_sampler), vec4(suv, splane.z, 1.0));
}
@@ -740,7 +740,7 @@ float light_process_spot_shadow(uint idx, vec3 vertex, vec3 normal) {
} else {
//hard shadow
vec3 shadow_uv = vec3(splane.xy * spot_lights.data[idx].atlas_rect.zw + spot_lights.data[idx].atlas_rect.xy, splane.z);
- shadow = sample_pcf_shadow(shadow_atlas, spot_lights.data[idx].soft_shadow_scale * scene_data.shadow_atlas_pixel_size, shadow_uv);
+ shadow = sample_pcf_shadow(shadow_atlas, spot_lights.data[idx].soft_shadow_scale * scene_data_block.data.shadow_atlas_pixel_size, shadow_uv);
}
return shadow;
@@ -869,7 +869,7 @@ void light_process_spot(uint idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 v
diffuse_light, specular_light);
}
-void reflection_process(uint ref_index, vec3 vertex, vec3 normal, float roughness, vec3 ambient_light, vec3 specular_light, inout vec4 ambient_accum, inout vec4 reflection_accum) {
+void reflection_process(uint ref_index, vec3 view, vec3 vertex, vec3 normal, float roughness, vec3 ambient_light, vec3 specular_light, inout vec4 ambient_accum, inout vec4 reflection_accum) {
vec3 box_extents = reflections.data[ref_index].box_extents;
vec3 local_pos = (reflections.data[ref_index].local_matrix * vec4(vertex, 1.0)).xyz;
@@ -877,7 +877,7 @@ void reflection_process(uint ref_index, vec3 vertex, vec3 normal, float roughnes
return;
}
- vec3 ref_vec = normalize(reflect(vertex, normal));
+ vec3 ref_vec = normalize(reflect(-view, normal));
vec3 inner_pos = abs(local_pos / box_extents);
float blend = max(inner_pos.x, max(inner_pos.y, inner_pos.z));
diff --git a/servers/rendering/renderer_rd/shaders/scene_forward_mobile.glsl b/servers/rendering/renderer_rd/shaders/scene_forward_mobile.glsl
index fd0fefc5fd..26d0de46c2 100644
--- a/servers/rendering/renderer_rd/shaders/scene_forward_mobile.glsl
+++ b/servers/rendering/renderer_rd/shaders/scene_forward_mobile.glsl
@@ -114,6 +114,8 @@ invariant gl_Position;
#GLOBALS
+#define scene_data scene_data_block.data
+
void main() {
vec4 instance_custom = vec4(0.0);
#if defined(COLOR_USED)
@@ -527,13 +529,13 @@ layout(location = 0) out mediump vec4 frag_color;
*/
vec4 fog_process(vec3 vertex) {
- vec3 fog_color = scene_data.fog_light_color;
+ vec3 fog_color = scene_data_block.data.fog_light_color;
- if (scene_data.fog_aerial_perspective > 0.0) {
+ if (scene_data_block.data.fog_aerial_perspective > 0.0) {
vec3 sky_fog_color = vec3(0.0);
- vec3 cube_view = scene_data.radiance_inverse_xform * vertex;
+ vec3 cube_view = scene_data_block.data.radiance_inverse_xform * vertex;
// mip_level always reads from the second mipmap and higher so the fog is always slightly blurred
- float mip_level = mix(1.0 / MAX_ROUGHNESS_LOD, 1.0, 1.0 - (abs(vertex.z) - scene_data.z_near) / (scene_data.z_far - scene_data.z_near));
+ float mip_level = mix(1.0 / MAX_ROUGHNESS_LOD, 1.0, 1.0 - (abs(vertex.z) - scene_data_block.data.z_near) / (scene_data_block.data.z_far - scene_data_block.data.z_near));
#ifdef USE_RADIANCE_CUBEMAP_ARRAY
float lod, blend;
blend = modf(mip_level * MAX_ROUGHNESS_LOD, lod);
@@ -542,29 +544,29 @@ vec4 fog_process(vec3 vertex) {
#else
sky_fog_color = textureLod(samplerCube(radiance_cubemap, material_samplers[SAMPLER_LINEAR_WITH_MIPMAPS_CLAMP]), cube_view, mip_level * MAX_ROUGHNESS_LOD).rgb;
#endif //USE_RADIANCE_CUBEMAP_ARRAY
- fog_color = mix(fog_color, sky_fog_color, scene_data.fog_aerial_perspective);
+ fog_color = mix(fog_color, sky_fog_color, scene_data_block.data.fog_aerial_perspective);
}
- if (scene_data.fog_sun_scatter > 0.001) {
+ if (scene_data_block.data.fog_sun_scatter > 0.001) {
vec4 sun_scatter = vec4(0.0);
float sun_total = 0.0;
vec3 view = normalize(vertex);
- for (uint i = 0; i < scene_data.directional_light_count; i++) {
+ for (uint i = 0; i < scene_data_block.data.directional_light_count; i++) {
vec3 light_color = directional_lights.data[i].color * directional_lights.data[i].energy;
float light_amount = pow(max(dot(view, directional_lights.data[i].direction), 0.0), 8.0);
- fog_color += light_color * light_amount * scene_data.fog_sun_scatter;
+ fog_color += light_color * light_amount * scene_data_block.data.fog_sun_scatter;
}
}
- float fog_amount = 1.0 - exp(min(0.0, -length(vertex) * scene_data.fog_density));
+ float fog_amount = 1.0 - exp(min(0.0, -length(vertex) * scene_data_block.data.fog_density));
- if (abs(scene_data.fog_height_density) >= 0.0001) {
- float y = (scene_data.inv_view_matrix * vec4(vertex, 1.0)).y;
+ if (abs(scene_data_block.data.fog_height_density) >= 0.0001) {
+ float y = (scene_data_block.data.inv_view_matrix * vec4(vertex, 1.0)).y;
- float y_dist = y - scene_data.fog_height;
+ float y_dist = y - scene_data_block.data.fog_height;
- float vfog_amount = 1.0 - exp(min(0.0, y_dist * scene_data.fog_height_density));
+ float vfog_amount = 1.0 - exp(min(0.0, y_dist * scene_data_block.data.fog_height_density));
fog_amount = max(vfog_amount, fog_amount);
}
@@ -574,6 +576,8 @@ vec4 fog_process(vec3 vertex) {
#endif //!MODE_RENDER DEPTH
+#define scene_data scene_data_block.data
+
void main() {
#ifdef MODE_DUAL_PARABOLOID
@@ -583,7 +587,11 @@ void main() {
//lay out everything, whatever is unused is optimized away anyway
vec3 vertex = vertex_interp;
+#ifdef USE_MULTIVIEW
+ vec3 view = -normalize(vertex_interp - scene_data.eye_offset[ViewIndex].xyz);
+#else
vec3 view = -normalize(vertex_interp);
+#endif
vec3 albedo = vec3(1.0);
vec3 backlight = vec3(0.0);
vec4 transmittance_color = vec4(0.0);
@@ -1048,7 +1056,7 @@ void main() {
#else
vec3 bent_normal = normal;
#endif
- reflection_process(reflection_index, vertex, bent_normal, roughness, ambient_light, specular_light, ambient_accum, reflection_accum);
+ reflection_process(reflection_index, view, vertex, bent_normal, roughness, ambient_light, specular_light, ambient_accum, reflection_accum);
}
if (reflection_accum.a > 0.0) {
diff --git a/servers/rendering/renderer_rd/shaders/scene_forward_mobile_inc.glsl b/servers/rendering/renderer_rd/shaders/scene_forward_mobile_inc.glsl
index 91ef19ab67..7413d8730a 100644
--- a/servers/rendering/renderer_rd/shaders/scene_forward_mobile_inc.glsl
+++ b/servers/rendering/renderer_rd/shaders/scene_forward_mobile_inc.glsl
@@ -125,7 +125,7 @@ global_variables;
/* Set 1: Render Pass (changes per render pass) */
-layout(set = 1, binding = 0, std140) uniform SceneData {
+struct SceneData {
highp mat4 projection_matrix;
highp mat4 inv_projection_matrix;
highp mat4 inv_view_matrix;
@@ -134,6 +134,7 @@ layout(set = 1, binding = 0, std140) uniform SceneData {
// only used for multiview
highp mat4 projection_matrix_view[MAX_VIEWS];
highp mat4 inv_projection_matrix_view[MAX_VIEWS];
+ highp vec4 eye_offset[MAX_VIEWS];
highp vec2 viewport_size;
highp vec2 screen_pixel_size;
@@ -189,8 +190,12 @@ layout(set = 1, binding = 0, std140) uniform SceneData {
uint pad1;
uint pad2;
uint pad3;
+};
+
+layout(set = 1, binding = 0, std140) uniform SceneDataBlock {
+ SceneData data;
}
-scene_data;
+scene_data_block;
#ifdef USE_RADIANCE_CUBEMAP_ARRAY
diff --git a/servers/rendering/renderer_rd/shaders/taa_resolve.glsl b/servers/rendering/renderer_rd/shaders/taa_resolve.glsl
new file mode 100644
index 0000000000..a1a77b95aa
--- /dev/null
+++ b/servers/rendering/renderer_rd/shaders/taa_resolve.glsl
@@ -0,0 +1,393 @@
+///////////////////////////////////////////////////////////////////////////////////
+// Copyright(c) 2016-2022 Panos Karabelas
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
+// copies of the Software, and to permit persons to whom the Software is furnished
+// to do so, subject to the following conditions :
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR
+// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+///////////////////////////////////////////////////////////////////////////////////
+// File changes (yyyy-mm-dd)
+// 2022-05-06: Panos Karabelas: first commit
+// 2020-12-05: Joan Fons: convert to Vulkan and Godot
+///////////////////////////////////////////////////////////////////////////////////
+
+#[compute]
+
+#version 450
+
+#VERSION_DEFINES
+
+// Based on Spartan Engine's TAA implementation https://github.com/PanosK92/SpartanEngine/blob/master/Data/shaders/temporal_antialiasing.hlsl
+
+#define USE_SUBGROUPS
+
+#define GROUP_SIZE 8
+#define FLT_MIN 0.00000001
+#define FLT_MAX 32767.0
+#define RPC_9 0.11111111111
+#define RPC_16 0.0625
+
+#ifdef USE_SUBGROUPS
+layout(local_size_x = GROUP_SIZE, local_size_y = GROUP_SIZE, local_size_z = 1) in;
+#endif
+
+layout(rgba16f, set = 0, binding = 0) uniform restrict readonly image2D color_buffer;
+layout(set = 0, binding = 1) uniform sampler2D depth_buffer;
+layout(rg16f, set = 0, binding = 2) uniform restrict readonly image2D velocity_buffer;
+layout(rg16f, set = 0, binding = 3) uniform restrict readonly image2D last_velocity_buffer;
+layout(set = 0, binding = 4) uniform sampler2D history_buffer;
+layout(rgba16f, set = 0, binding = 5) uniform restrict writeonly image2D output_buffer;
+
+layout(push_constant, std430) uniform Params {
+ vec2 resolution;
+ float disocclusion_threshold; // 0.1 / max(params.resolution.x, params.resolution.y
+ float disocclusion_scale;
+}
+params;
+
+const ivec2 kOffsets3x3[9] = {
+ ivec2(-1, -1),
+ ivec2(0, -1),
+ ivec2(1, -1),
+ ivec2(-1, 0),
+ ivec2(0, 0),
+ ivec2(1, 0),
+ ivec2(-1, 1),
+ ivec2(0, 1),
+ ivec2(1, 1),
+};
+
+/*------------------------------------------------------------------------------
+ THREAD GROUP SHARED MEMORY (LDS)
+------------------------------------------------------------------------------*/
+
+const int kBorderSize = 1;
+const int kGroupSize = GROUP_SIZE;
+const int kTileDimension = kGroupSize + kBorderSize * 2;
+const int kTileDimension2 = kTileDimension * kTileDimension;
+
+vec3 reinhard(vec3 hdr) {
+ return hdr / (hdr + 1.0);
+}
+vec3 reinhard_inverse(vec3 sdr) {
+ return sdr / (1.0 - sdr);
+}
+
+float get_depth(ivec2 thread_id) {
+ return texelFetch(depth_buffer, thread_id, 0).r;
+}
+
+#ifdef USE_SUBGROUPS
+shared vec3 tile_color[kTileDimension][kTileDimension];
+shared float tile_depth[kTileDimension][kTileDimension];
+
+vec3 load_color(uvec2 group_thread_id) {
+ group_thread_id += kBorderSize;
+ return tile_color[group_thread_id.x][group_thread_id.y];
+}
+
+void store_color(uvec2 group_thread_id, vec3 color) {
+ tile_color[group_thread_id.x][group_thread_id.y] = color;
+}
+
+float load_depth(uvec2 group_thread_id) {
+ group_thread_id += kBorderSize;
+ return tile_depth[group_thread_id.x][group_thread_id.y];
+}
+
+void store_depth(uvec2 group_thread_id, float depth) {
+ tile_depth[group_thread_id.x][group_thread_id.y] = depth;
+}
+
+void store_color_depth(uvec2 group_thread_id, ivec2 thread_id) {
+ // out of bounds clamp
+ thread_id = clamp(thread_id, ivec2(0, 0), ivec2(params.resolution) - ivec2(1, 1));
+
+ store_color(group_thread_id, imageLoad(color_buffer, thread_id).rgb);
+ store_depth(group_thread_id, get_depth(thread_id));
+}
+
+void populate_group_shared_memory(uvec2 group_id, uint group_index) {
+ // Populate group shared memory
+ ivec2 group_top_left = ivec2(group_id) * kGroupSize - kBorderSize;
+ if (group_index < (kTileDimension2 >> 2)) {
+ ivec2 group_thread_id_1 = ivec2(group_index % kTileDimension, group_index / kTileDimension);
+ ivec2 group_thread_id_2 = ivec2((group_index + (kTileDimension2 >> 2)) % kTileDimension, (group_index + (kTileDimension2 >> 2)) / kTileDimension);
+ ivec2 group_thread_id_3 = ivec2((group_index + (kTileDimension2 >> 1)) % kTileDimension, (group_index + (kTileDimension2 >> 1)) / kTileDimension);
+ ivec2 group_thread_id_4 = ivec2((group_index + kTileDimension2 * 3 / 4) % kTileDimension, (group_index + kTileDimension2 * 3 / 4) / kTileDimension);
+
+ store_color_depth(group_thread_id_1, group_top_left + group_thread_id_1);
+ store_color_depth(group_thread_id_2, group_top_left + group_thread_id_2);
+ store_color_depth(group_thread_id_3, group_top_left + group_thread_id_3);
+ store_color_depth(group_thread_id_4, group_top_left + group_thread_id_4);
+ }
+
+ // Wait for group threads to load store data.
+ groupMemoryBarrier();
+ barrier();
+}
+#else
+vec3 load_color(uvec2 screen_pos) {
+ return imageLoad(color_buffer, ivec2(screen_pos)).rgb;
+}
+
+float load_depth(uvec2 screen_pos) {
+ return get_depth(ivec2(screen_pos));
+}
+#endif
+
+/*------------------------------------------------------------------------------
+ VELOCITY
+------------------------------------------------------------------------------*/
+
+void depth_test_min(uvec2 pos, inout float min_depth, inout uvec2 min_pos) {
+ float depth = load_depth(pos);
+
+ if (depth < min_depth) {
+ min_depth = depth;
+ min_pos = pos;
+ }
+}
+
+// Returns velocity with closest depth (3x3 neighborhood)
+void get_closest_pixel_velocity_3x3(in uvec2 group_pos, uvec2 group_top_left, out vec2 velocity) {
+ float min_depth = 1.0;
+ uvec2 min_pos = group_pos;
+
+ depth_test_min(group_pos + kOffsets3x3[0], min_depth, min_pos);
+ depth_test_min(group_pos + kOffsets3x3[1], min_depth, min_pos);
+ depth_test_min(group_pos + kOffsets3x3[2], min_depth, min_pos);
+ depth_test_min(group_pos + kOffsets3x3[3], min_depth, min_pos);
+ depth_test_min(group_pos + kOffsets3x3[4], min_depth, min_pos);
+ depth_test_min(group_pos + kOffsets3x3[5], min_depth, min_pos);
+ depth_test_min(group_pos + kOffsets3x3[6], min_depth, min_pos);
+ depth_test_min(group_pos + kOffsets3x3[7], min_depth, min_pos);
+ depth_test_min(group_pos + kOffsets3x3[8], min_depth, min_pos);
+
+ // Velocity out
+ velocity = imageLoad(velocity_buffer, ivec2(group_top_left + min_pos)).xy;
+}
+
+/*------------------------------------------------------------------------------
+ HISTORY SAMPLING
+------------------------------------------------------------------------------*/
+
+vec3 sample_catmull_rom_9(sampler2D stex, vec2 uv, vec2 resolution) {
+ // Source: https://gist.github.com/TheRealMJP/c83b8c0f46b63f3a88a5986f4fa982b1
+ // License: https://gist.github.com/TheRealMJP/bc503b0b87b643d3505d41eab8b332ae
+
+ // We're going to sample a a 4x4 grid of texels surrounding the target UV coordinate. We'll do this by rounding
+ // down the sample location to get the exact center of our "starting" texel. The starting texel will be at
+ // location [1, 1] in the grid, where [0, 0] is the top left corner.
+ vec2 sample_pos = uv * resolution;
+ vec2 texPos1 = floor(sample_pos - 0.5f) + 0.5f;
+
+ // Compute the fractional offset from our starting texel to our original sample location, which we'll
+ // feed into the Catmull-Rom spline function to get our filter weights.
+ vec2 f = sample_pos - texPos1;
+
+ // Compute the Catmull-Rom weights using the fractional offset that we calculated earlier.
+ // These equations are pre-expanded based on our knowledge of where the texels will be located,
+ // which lets us avoid having to evaluate a piece-wise function.
+ vec2 w0 = f * (-0.5f + f * (1.0f - 0.5f * f));
+ vec2 w1 = 1.0f + f * f * (-2.5f + 1.5f * f);
+ vec2 w2 = f * (0.5f + f * (2.0f - 1.5f * f));
+ vec2 w3 = f * f * (-0.5f + 0.5f * f);
+
+ // Work out weighting factors and sampling offsets that will let us use bilinear filtering to
+ // simultaneously evaluate the middle 2 samples from the 4x4 grid.
+ vec2 w12 = w1 + w2;
+ vec2 offset12 = w2 / (w1 + w2);
+
+ // Compute the final UV coordinates we'll use for sampling the texture
+ vec2 texPos0 = texPos1 - 1.0f;
+ vec2 texPos3 = texPos1 + 2.0f;
+ vec2 texPos12 = texPos1 + offset12;
+
+ texPos0 /= resolution;
+ texPos3 /= resolution;
+ texPos12 /= resolution;
+
+ vec3 result = vec3(0.0f, 0.0f, 0.0f);
+
+ result += textureLod(stex, vec2(texPos0.x, texPos0.y), 0.0).xyz * w0.x * w0.y;
+ result += textureLod(stex, vec2(texPos12.x, texPos0.y), 0.0).xyz * w12.x * w0.y;
+ result += textureLod(stex, vec2(texPos3.x, texPos0.y), 0.0).xyz * w3.x * w0.y;
+
+ result += textureLod(stex, vec2(texPos0.x, texPos12.y), 0.0).xyz * w0.x * w12.y;
+ result += textureLod(stex, vec2(texPos12.x, texPos12.y), 0.0).xyz * w12.x * w12.y;
+ result += textureLod(stex, vec2(texPos3.x, texPos12.y), 0.0).xyz * w3.x * w12.y;
+
+ result += textureLod(stex, vec2(texPos0.x, texPos3.y), 0.0).xyz * w0.x * w3.y;
+ result += textureLod(stex, vec2(texPos12.x, texPos3.y), 0.0).xyz * w12.x * w3.y;
+ result += textureLod(stex, vec2(texPos3.x, texPos3.y), 0.0).xyz * w3.x * w3.y;
+
+ return max(result, 0.0f);
+}
+
+/*------------------------------------------------------------------------------
+ HISTORY CLIPPING
+------------------------------------------------------------------------------*/
+
+// Based on "Temporal Reprojection Anti-Aliasing" - https://github.com/playdeadgames/temporal
+vec3 clip_aabb(vec3 aabb_min, vec3 aabb_max, vec3 p, vec3 q) {
+ vec3 r = q - p;
+ vec3 rmax = (aabb_max - p.xyz);
+ vec3 rmin = (aabb_min - p.xyz);
+
+ if (r.x > rmax.x + FLT_MIN)
+ r *= (rmax.x / r.x);
+ if (r.y > rmax.y + FLT_MIN)
+ r *= (rmax.y / r.y);
+ if (r.z > rmax.z + FLT_MIN)
+ r *= (rmax.z / r.z);
+
+ if (r.x < rmin.x - FLT_MIN)
+ r *= (rmin.x / r.x);
+ if (r.y < rmin.y - FLT_MIN)
+ r *= (rmin.y / r.y);
+ if (r.z < rmin.z - FLT_MIN)
+ r *= (rmin.z / r.z);
+
+ return p + r;
+}
+
+// Clip history to the neighbourhood of the current sample
+vec3 clip_history_3x3(uvec2 group_pos, vec3 color_history, vec2 velocity_closest) {
+ // Sample a 3x3 neighbourhood
+ vec3 s1 = load_color(group_pos + kOffsets3x3[0]);
+ vec3 s2 = load_color(group_pos + kOffsets3x3[1]);
+ vec3 s3 = load_color(group_pos + kOffsets3x3[2]);
+ vec3 s4 = load_color(group_pos + kOffsets3x3[3]);
+ vec3 s5 = load_color(group_pos + kOffsets3x3[4]);
+ vec3 s6 = load_color(group_pos + kOffsets3x3[5]);
+ vec3 s7 = load_color(group_pos + kOffsets3x3[6]);
+ vec3 s8 = load_color(group_pos + kOffsets3x3[7]);
+ vec3 s9 = load_color(group_pos + kOffsets3x3[8]);
+
+ // Compute min and max (with an adaptive box size, which greatly reduces ghosting)
+ vec3 color_avg = (s1 + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9) * RPC_9;
+ vec3 color_avg2 = ((s1 * s1) + (s2 * s2) + (s3 * s3) + (s4 * s4) + (s5 * s5) + (s6 * s6) + (s7 * s7) + (s8 * s8) + (s9 * s9)) * RPC_9;
+ float box_size = mix(0.0f, 2.5f, smoothstep(0.02f, 0.0f, length(velocity_closest)));
+ vec3 dev = sqrt(abs(color_avg2 - (color_avg * color_avg))) * box_size;
+ vec3 color_min = color_avg - dev;
+ vec3 color_max = color_avg + dev;
+
+ // Variance clipping
+ vec3 color = clip_aabb(color_min, color_max, clamp(color_avg, color_min, color_max), color_history);
+
+ // Clamp to prevent NaNs
+ color = clamp(color, FLT_MIN, FLT_MAX);
+
+ return color;
+}
+
+/*------------------------------------------------------------------------------
+ TAA
+------------------------------------------------------------------------------*/
+
+const vec3 lumCoeff = vec3(0.299f, 0.587f, 0.114f);
+
+float luminance(vec3 color) {
+ return max(dot(color, lumCoeff), 0.0001f);
+}
+
+float get_factor_disocclusion(vec2 uv_reprojected, vec2 velocity) {
+ vec2 velocity_previous = imageLoad(last_velocity_buffer, ivec2(uv_reprojected * params.resolution)).xy;
+ vec2 velocity_texels = velocity * params.resolution;
+ vec2 prev_velocity_texels = velocity_previous * params.resolution;
+ float disocclusion = length(prev_velocity_texels - velocity_texels) - params.disocclusion_threshold;
+ return clamp(disocclusion * params.disocclusion_scale, 0.0, 1.0);
+}
+
+vec3 temporal_antialiasing(uvec2 pos_group_top_left, uvec2 pos_group, uvec2 pos_screen, vec2 uv, sampler2D tex_history) {
+ // Get the velocity of the current pixel
+ vec2 velocity = imageLoad(velocity_buffer, ivec2(pos_screen)).xy;
+
+ // Get reprojected uv
+ vec2 uv_reprojected = uv - velocity;
+
+ // Get input color
+ vec3 color_input = load_color(pos_group);
+
+ // Get history color (catmull-rom reduces a lot of the blurring that you get under motion)
+ vec3 color_history = sample_catmull_rom_9(tex_history, uv_reprojected, params.resolution).rgb;
+
+ // Clip history to the neighbourhood of the current sample (fixes a lot of the ghosting).
+ vec2 velocity_closest = vec2(0.0); // This is best done by using the velocity with the closest depth.
+ get_closest_pixel_velocity_3x3(pos_group, pos_group_top_left, velocity_closest);
+ color_history = clip_history_3x3(pos_group, color_history, velocity_closest);
+
+ // Compute blend factor
+ float blend_factor = RPC_16; // We want to be able to accumulate as many jitter samples as we generated, that is, 16.
+ {
+ // If re-projected UV is out of screen, converge to current color immediatel
+ float factor_screen = any(lessThan(uv_reprojected, vec2(0.0))) || any(greaterThan(uv_reprojected, vec2(1.0))) ? 1.0 : 0.0;
+
+ // Increase blend factor when there is disocclusion (fixes a lot of the remaining ghosting).
+ float factor_disocclusion = get_factor_disocclusion(uv_reprojected, velocity);
+
+ // Add to the blend factor
+ blend_factor = clamp(blend_factor + factor_screen + factor_disocclusion, 0.0, 1.0);
+ }
+
+ // Resolve
+ vec3 color_resolved = vec3(0.0);
+ {
+ // Tonemap
+ color_history = reinhard(color_history);
+ color_input = reinhard(color_input);
+
+ // Reduce flickering
+ float lum_color = luminance(color_input);
+ float lum_history = luminance(color_history);
+ float diff = abs(lum_color - lum_history) / max(lum_color, max(lum_history, 1.001));
+ diff = 1.0 - diff;
+ diff = diff * diff;
+ blend_factor = mix(0.0, blend_factor, diff);
+
+ // Lerp/blend
+ color_resolved = mix(color_history, color_input, blend_factor);
+
+ // Inverse tonemap
+ color_resolved = reinhard_inverse(color_resolved);
+ }
+
+ return color_resolved;
+}
+
+void main() {
+#ifdef USE_SUBGROUPS
+ populate_group_shared_memory(gl_WorkGroupID.xy, gl_LocalInvocationIndex);
+#endif
+
+ // Out of bounds check
+ if (any(greaterThanEqual(vec2(gl_GlobalInvocationID.xy), params.resolution))) {
+ return;
+ }
+
+#ifdef USE_SUBGROUPS
+ const uvec2 pos_group = gl_LocalInvocationID.xy;
+ const uvec2 pos_group_top_left = gl_WorkGroupID.xy * kGroupSize - kBorderSize;
+#else
+ const uvec2 pos_group = gl_GlobalInvocationID.xy;
+ const uvec2 pos_group_top_left = uvec2(0, 0);
+#endif
+ const uvec2 pos_screen = gl_GlobalInvocationID.xy;
+ const vec2 uv = (gl_GlobalInvocationID.xy + 0.5f) / params.resolution;
+
+ vec3 result = temporal_antialiasing(pos_group_top_left, pos_group, pos_screen, uv, history_buffer);
+ imageStore(output_buffer, ivec2(gl_GlobalInvocationID.xy), vec4(result, 1.0));
+}
diff --git a/servers/rendering/renderer_rd/storage_rd/material_storage.cpp b/servers/rendering/renderer_rd/storage_rd/material_storage.cpp
index 8e2e9b14cb..096d371b8d 100644
--- a/servers/rendering/renderer_rd/storage_rd/material_storage.cpp
+++ b/servers/rendering/renderer_rd/storage_rd/material_storage.cpp
@@ -1150,7 +1150,7 @@ void MaterialData::update_textures(const HashMap<StringName, Variant> &p_paramet
p_textures[k++] = rd_texture;
}
} else {
- bool srgb = p_use_linear_color && p_texture_uniforms[i].hint == ShaderLanguage::ShaderNode::Uniform::HINT_SOURCE_COLOR;
+ bool srgb = p_use_linear_color && p_texture_uniforms[i].use_color;
for (int j = 0; j < textures.size(); j++) {
Texture *tex = TextureStorage::get_singleton()->get_texture(textures[j]);
diff --git a/servers/rendering/renderer_rd/uniform_set_cache_rd.h b/servers/rendering/renderer_rd/uniform_set_cache_rd.h
index e49cf4dafa..af22a48716 100644
--- a/servers/rendering/renderer_rd/uniform_set_cache_rd.h
+++ b/servers/rendering/renderer_rd/uniform_set_cache_rd.h
@@ -57,13 +57,13 @@ class UniformSetCacheRD : public Object {
Cache *hash_table[HASH_TABLE_SIZE] = {};
static _FORCE_INLINE_ uint32_t _hash_uniform(const RD::Uniform &u, uint32_t h) {
- h = hash_djb2_one_32(u.uniform_type, h);
- h = hash_djb2_one_32(u.binding, h);
+ h = hash_murmur3_one_32(u.uniform_type, h);
+ h = hash_murmur3_one_32(u.binding, h);
uint32_t rsize = u.get_id_count();
for (uint32_t j = 0; j < rsize; j++) {
- h = hash_djb2_one_64(u.get_id(j).get_id(), h);
+ h = hash_murmur3_one_64(u.get_id(j).get_id(), h);
}
- return h;
+ return hash_fmix32(h);
}
static _FORCE_INLINE_ bool _compare_uniform(const RD::Uniform &a, const RD::Uniform &b) {
@@ -154,8 +154,8 @@ class UniformSetCacheRD : public Object {
public:
template <typename... Args>
RID get_cache(RID p_shader, uint32_t p_set, Args... args) {
- uint32_t h = hash_djb2_one_64(p_shader.get_id());
- h = hash_djb2_one_32(p_set, h);
+ uint32_t h = hash_murmur3_one_64(p_shader.get_id());
+ h = hash_murmur3_one_32(p_set, h);
h = _hash_args(h, args...);
uint32_t table_idx = h % HASH_TABLE_SIZE;
@@ -180,12 +180,14 @@ public:
template <typename... Args>
RID get_cache_vec(RID p_shader, uint32_t p_set, const Vector<RD::Uniform> &p_uniforms) {
- uint32_t h = hash_djb2_one_64(p_shader.get_id());
- h = hash_djb2_one_32(p_set, h);
+ uint32_t h = hash_murmur3_one_64(p_shader.get_id());
+ h = hash_murmur3_one_32(p_set, h);
for (int i = 0; i < p_uniforms.size(); i++) {
h = _hash_uniform(p_uniforms[i], h);
}
+ h = hash_fmix32(h);
+
uint32_t table_idx = h % HASH_TABLE_SIZE;
{
const Cache *c = hash_table[table_idx];
diff --git a/servers/rendering/renderer_scene.h b/servers/rendering/renderer_scene.h
index 43d5b07869..b773ed61f4 100644
--- a/servers/rendering/renderer_scene.h
+++ b/servers/rendering/renderer_scene.h
@@ -194,7 +194,7 @@ public:
virtual RID render_buffers_create() = 0;
- virtual void render_buffers_configure(RID p_render_buffers, RID p_render_target, int p_internal_width, int p_internal_height, int p_width, int p_height, float p_fsr_sharpness, float p_fsr_mipmap_bias, RS::ViewportMSAA p_msaa, RS::ViewportScreenSpaceAA p_screen_space_aa, bool p_use_debanding, uint32_t p_view_count) = 0;
+ virtual void render_buffers_configure(RID p_render_buffers, RID p_render_target, int p_internal_width, int p_internal_height, int p_width, int p_height, float p_fsr_sharpness, float p_fsr_mipmap_bias, RS::ViewportMSAA p_msaa, RS::ViewportScreenSpaceAA p_screen_space_aa, bool p_use_taa, bool p_use_debanding, uint32_t p_view_count) = 0;
virtual void gi_set_use_half_resolution(bool p_enable) = 0;
@@ -211,7 +211,7 @@ public:
int info[RS::VIEWPORT_RENDER_INFO_TYPE_MAX][RS::VIEWPORT_RENDER_INFO_MAX] = {};
};
- virtual void render_camera(RID p_render_buffers, RID p_camera, RID p_scenario, RID p_viewport, Size2 p_viewport_size, float p_mesh_lod_threshold, RID p_shadow_atlas, Ref<XRInterface> &p_xr_interface, RenderInfo *r_render_info = nullptr) = 0;
+ virtual void render_camera(RID p_render_buffers, RID p_camera, RID p_scenario, RID p_viewport, Size2 p_viewport_size, bool p_use_taa, float p_mesh_lod_threshold, RID p_shadow_atlas, Ref<XRInterface> &p_xr_interface, RenderInfo *r_render_info = nullptr) = 0;
virtual void update() = 0;
virtual void render_probes() = 0;
diff --git a/servers/rendering/renderer_scene_cull.cpp b/servers/rendering/renderer_scene_cull.cpp
index 2cb4e16583..c97ca3de5e 100644
--- a/servers/rendering/renderer_scene_cull.cpp
+++ b/servers/rendering/renderer_scene_cull.cpp
@@ -1894,7 +1894,7 @@ void RendererSceneCull::_update_instance_aabb(Instance *p_instance) {
} break;
case RenderingServer::INSTANCE_VOXEL_GI: {
- new_aabb = RSG::storage->voxel_gi_get_bounds(p_instance->base);
+ new_aabb = RSG::gi->voxel_gi_get_bounds(p_instance->base);
} break;
case RenderingServer::INSTANCE_LIGHTMAP: {
@@ -2433,12 +2433,17 @@ bool RendererSceneCull::_light_instance_update_shadow(Instance *p_instance, cons
return animated_material_found;
}
-void RendererSceneCull::render_camera(RID p_render_buffers, RID p_camera, RID p_scenario, RID p_viewport, Size2 p_viewport_size, float p_screen_mesh_lod_threshold, RID p_shadow_atlas, Ref<XRInterface> &p_xr_interface, RenderInfo *r_render_info) {
+void RendererSceneCull::render_camera(RID p_render_buffers, RID p_camera, RID p_scenario, RID p_viewport, Size2 p_viewport_size, bool p_use_taa, float p_screen_mesh_lod_threshold, RID p_shadow_atlas, Ref<XRInterface> &p_xr_interface, RenderInfo *r_render_info) {
#ifndef _3D_DISABLED
Camera *camera = camera_owner.get_or_null(p_camera);
ERR_FAIL_COND(!camera);
+ Vector2 jitter;
+ if (p_use_taa) {
+ jitter = taa_jitter_array[RSG::rasterizer->get_frame_number() % TAA_JITTER_COUNT] / p_viewport_size;
+ }
+
RendererSceneRender::CameraData camera_data;
// Setup Camera(s)
@@ -2479,7 +2484,7 @@ void RendererSceneCull::render_camera(RID p_render_buffers, RID p_camera, RID p_
} break;
}
- camera_data.set_camera(transform, projection, is_orthogonal, vaspect);
+ camera_data.set_camera(transform, projection, is_orthogonal, vaspect, jitter);
} else {
// Setup our camera for our XR interface.
// We can support multiple views here each with their own camera
@@ -2501,7 +2506,7 @@ void RendererSceneCull::render_camera(RID p_render_buffers, RID p_camera, RID p_
}
if (view_count == 1) {
- camera_data.set_camera(transforms[0], projections[0], false, camera->vaspect);
+ camera_data.set_camera(transforms[0], projections[0], false, camera->vaspect, jitter);
} else if (view_count == 2) {
camera_data.set_multiview_camera(view_count, transforms, projections, false, camera->vaspect);
} else {
@@ -3216,12 +3221,18 @@ void RendererSceneCull::_render_scene(const RendererSceneRender::CameraData *p_c
/* PROCESS GEOMETRY AND DRAW SCENE */
RID occluders_tex;
+ const RendererSceneRender::CameraData *prev_camera_data = p_camera_data;
if (p_viewport.is_valid()) {
occluders_tex = RSG::viewport->viewport_get_occluder_debug_texture(p_viewport);
+ prev_camera_data = RSG::viewport->viewport_get_prev_camera_data(p_viewport);
}
RENDER_TIMESTAMP("Render 3D Scene");
- scene_render->render_scene(p_render_buffers, p_camera_data, scene_cull_result.geometry_instances, scene_cull_result.light_instances, scene_cull_result.reflections, scene_cull_result.voxel_gi_instances, scene_cull_result.decals, scene_cull_result.lightmaps, scene_cull_result.fog_volumes, p_environment, camera_effects, p_shadow_atlas, occluders_tex, p_reflection_probe.is_valid() ? RID() : scenario->reflection_atlas, p_reflection_probe, p_reflection_probe_pass, p_screen_mesh_lod_threshold, render_shadow_data, max_shadows_used, render_sdfgi_data, cull.sdfgi.region_count, &sdfgi_update_data, r_render_info);
+ scene_render->render_scene(p_render_buffers, p_camera_data, prev_camera_data, scene_cull_result.geometry_instances, scene_cull_result.light_instances, scene_cull_result.reflections, scene_cull_result.voxel_gi_instances, scene_cull_result.decals, scene_cull_result.lightmaps, scene_cull_result.fog_volumes, p_environment, camera_effects, p_shadow_atlas, occluders_tex, p_reflection_probe.is_valid() ? RID() : scenario->reflection_atlas, p_reflection_probe, p_reflection_probe_pass, p_screen_mesh_lod_threshold, render_shadow_data, max_shadows_used, render_sdfgi_data, cull.sdfgi.region_count, &sdfgi_update_data, r_render_info);
+
+ if (p_viewport.is_valid()) {
+ RSG::viewport->viewport_set_prev_camera_data(p_viewport, p_camera_data);
+ }
for (uint32_t i = 0; i < max_shadows_used; i++) {
render_shadow_data[i].instances.clear();
@@ -3271,7 +3282,7 @@ void RendererSceneCull::render_empty_scene(RID p_render_buffers, RID p_scenario,
RendererSceneRender::CameraData camera_data;
camera_data.set_camera(Transform3D(), CameraMatrix(), true, false);
- scene_render->render_scene(p_render_buffers, &camera_data, PagedArray<RendererSceneRender::GeometryInstance *>(), PagedArray<RID>(), PagedArray<RID>(), PagedArray<RID>(), PagedArray<RID>(), PagedArray<RID>(), PagedArray<RID>(), RID(), RID(), p_shadow_atlas, RID(), scenario->reflection_atlas, RID(), 0, 0, nullptr, 0, nullptr, 0, nullptr);
+ scene_render->render_scene(p_render_buffers, &camera_data, nullptr, PagedArray<RendererSceneRender::GeometryInstance *>(), PagedArray<RID>(), PagedArray<RID>(), PagedArray<RID>(), PagedArray<RID>(), PagedArray<RID>(), PagedArray<RID>(), RID(), RID(), p_shadow_atlas, RID(), scenario->reflection_atlas, RID(), 0, 0, nullptr, 0, nullptr, 0, nullptr);
#endif
}
@@ -3993,6 +4004,17 @@ void RendererSceneCull::set_scene_render(RendererSceneRender *p_scene_render) {
geometry_instance_pair_mask = scene_render->geometry_instance_get_pair_mask();
}
+float get_halton_value(int index, int base) {
+ float f = 1;
+ float r = 0;
+ while (index > 0) {
+ f = f / static_cast<float>(base);
+ r = r + f * (index % base);
+ index = index / base;
+ }
+ return r * 2.0f - 1.0f;
+};
+
RendererSceneCull::RendererSceneCull() {
render_pass = 1;
singleton = this;
@@ -4017,6 +4039,12 @@ RendererSceneCull::RendererSceneCull() {
thread_cull_threshold = GLOBAL_GET("rendering/limits/spatial_indexer/threaded_cull_minimum_instances");
thread_cull_threshold = MAX(thread_cull_threshold, (uint32_t)RendererThreadPool::singleton->thread_work_pool.get_thread_count()); //make sure there is at least one thread per CPU
+ taa_jitter_array.resize(TAA_JITTER_COUNT);
+ for (int i = 0; i < TAA_JITTER_COUNT; i++) {
+ taa_jitter_array[i].x = get_halton_value(i, 2);
+ taa_jitter_array[i].y = get_halton_value(i, 3);
+ }
+
dummy_occlusion_culling = memnew(RendererSceneOcclusionCull);
}
diff --git a/servers/rendering/renderer_scene_cull.h b/servers/rendering/renderer_scene_cull.h
index 60983f9944..d1d3484871 100644
--- a/servers/rendering/renderer_scene_cull.h
+++ b/servers/rendering/renderer_scene_cull.h
@@ -923,6 +923,9 @@ public:
uint32_t geometry_instance_pair_mask = 0; // used in traditional forward, unnecessary on clustered
+ const int TAA_JITTER_COUNT = 16;
+ LocalVector<Vector2> taa_jitter_array;
+
virtual RID instance_allocate();
virtual void instance_initialize(RID p_rid);
@@ -1054,7 +1057,7 @@ public:
void _render_scene(const RendererSceneRender::CameraData *p_camera_data, RID p_render_buffers, RID p_environment, RID p_force_camera_effects, uint32_t p_visible_layers, RID p_scenario, RID p_viewport, RID p_shadow_atlas, RID p_reflection_probe, int p_reflection_probe_pass, float p_screen_mesh_lod_threshold, bool p_using_shadows = true, RenderInfo *r_render_info = nullptr);
void render_empty_scene(RID p_render_buffers, RID p_scenario, RID p_shadow_atlas);
- void render_camera(RID p_render_buffers, RID p_camera, RID p_scenario, RID p_viewport, Size2 p_viewport_size, float p_screen_mesh_lod_threshold, RID p_shadow_atlas, Ref<XRInterface> &p_xr_interface, RendererScene::RenderInfo *r_render_info = nullptr);
+ void render_camera(RID p_render_buffers, RID p_camera, RID p_scenario, RID p_viewport, Size2 p_viewport_size, bool p_use_taa, float p_screen_mesh_lod_threshold, RID p_shadow_atlas, Ref<XRInterface> &p_xr_interface, RendererScene::RenderInfo *r_render_info = nullptr);
void update_dirty_instances();
void render_particle_colliders();
@@ -1155,7 +1158,7 @@ public:
/* Render Buffers */
PASS0R(RID, render_buffers_create)
- PASS12(render_buffers_configure, RID, RID, int, int, int, int, float, float, RS::ViewportMSAA, RS::ViewportScreenSpaceAA, bool, uint32_t)
+ PASS13(render_buffers_configure, RID, RID, int, int, int, int, float, float, RS::ViewportMSAA, RS::ViewportScreenSpaceAA, bool, bool, uint32_t)
PASS1(gi_set_use_half_resolution, bool)
/* Shadow Atlas */
diff --git a/servers/rendering/renderer_scene_render.cpp b/servers/rendering/renderer_scene_render.cpp
index a4d281fac4..600908cf16 100644
--- a/servers/rendering/renderer_scene_render.cpp
+++ b/servers/rendering/renderer_scene_render.cpp
@@ -30,7 +30,7 @@
#include "renderer_scene_render.h"
-void RendererSceneRender::CameraData::set_camera(const Transform3D p_transform, const CameraMatrix p_projection, bool p_is_orthogonal, bool p_vaspect) {
+void RendererSceneRender::CameraData::set_camera(const Transform3D p_transform, const CameraMatrix p_projection, bool p_is_orthogonal, bool p_vaspect, const Vector2 &p_taa_jitter) {
view_count = 1;
is_orthogonal = p_is_orthogonal;
vaspect = p_vaspect;
@@ -40,6 +40,7 @@ void RendererSceneRender::CameraData::set_camera(const Transform3D p_transform,
view_offset[0] = Transform3D();
view_projection[0] = p_projection;
+ taa_jitter = p_taa_jitter;
}
void RendererSceneRender::CameraData::set_multiview_camera(uint32_t p_view_count, const Transform3D *p_transforms, const CameraMatrix *p_projections, bool p_is_orthogonal, bool p_vaspect) {
diff --git a/servers/rendering/renderer_scene_render.h b/servers/rendering/renderer_scene_render.h
index d43bfb170e..280277c6d8 100644
--- a/servers/rendering/renderer_scene_render.h
+++ b/servers/rendering/renderer_scene_render.h
@@ -243,12 +243,13 @@ public:
Transform3D view_offset[RendererSceneRender::MAX_RENDER_VIEWS];
CameraMatrix view_projection[RendererSceneRender::MAX_RENDER_VIEWS];
+ Vector2 taa_jitter;
- void set_camera(const Transform3D p_transform, const CameraMatrix p_projection, bool p_is_orthogonal, bool p_vaspect);
+ void set_camera(const Transform3D p_transform, const CameraMatrix p_projection, bool p_is_orthogonal, bool p_vaspect, const Vector2 &p_taa_jitter = Vector2());
void set_multiview_camera(uint32_t p_view_count, const Transform3D *p_transforms, const CameraMatrix *p_projections, bool p_is_orthogonal, bool p_vaspect);
};
- virtual void render_scene(RID p_render_buffers, const CameraData *p_camera_data, const PagedArray<GeometryInstance *> &p_instances, const PagedArray<RID> &p_lights, const PagedArray<RID> &p_reflection_probes, const PagedArray<RID> &p_voxel_gi_instances, const PagedArray<RID> &p_decals, const PagedArray<RID> &p_lightmaps, const PagedArray<RID> &p_fog_volumes, RID p_environment, RID p_camera_effects, RID p_shadow_atlas, RID p_occluder_debug_tex, RID p_reflection_atlas, RID p_reflection_probe, int p_reflection_probe_pass, float p_screen_mesh_lod_threshold, const RenderShadowData *p_render_shadows, int p_render_shadow_count, const RenderSDFGIData *p_render_sdfgi_regions, int p_render_sdfgi_region_count, const RenderSDFGIUpdateData *p_sdfgi_update_data = nullptr, RendererScene::RenderInfo *r_render_info = nullptr) = 0;
+ virtual void render_scene(RID p_render_buffers, const CameraData *p_camera_data, const CameraData *p_prev_camera_data, const PagedArray<GeometryInstance *> &p_instances, const PagedArray<RID> &p_lights, const PagedArray<RID> &p_reflection_probes, const PagedArray<RID> &p_voxel_gi_instances, const PagedArray<RID> &p_decals, const PagedArray<RID> &p_lightmaps, const PagedArray<RID> &p_fog_volumes, RID p_environment, RID p_camera_effects, RID p_shadow_atlas, RID p_occluder_debug_tex, RID p_reflection_atlas, RID p_reflection_probe, int p_reflection_probe_pass, float p_screen_mesh_lod_threshold, const RenderShadowData *p_render_shadows, int p_render_shadow_count, const RenderSDFGIData *p_render_sdfgi_regions, int p_render_sdfgi_region_count, const RenderSDFGIUpdateData *p_sdfgi_update_data = nullptr, RendererScene::RenderInfo *r_render_info = nullptr) = 0;
virtual void render_material(const Transform3D &p_cam_transform, const CameraMatrix &p_cam_projection, bool p_cam_orthogonal, const PagedArray<GeometryInstance *> &p_instances, RID p_framebuffer, const Rect2i &p_region) = 0;
virtual void render_particle_collider_heightfield(RID p_collider, const Transform3D &p_transform, const PagedArray<GeometryInstance *> &p_instances) = 0;
@@ -258,7 +259,7 @@ public:
virtual void set_debug_draw_mode(RS::ViewportDebugDraw p_debug_draw) = 0;
virtual RID render_buffers_create() = 0;
- virtual void render_buffers_configure(RID p_render_buffers, RID p_render_target, int p_internal_width, int p_internal_height, int p_width, int p_height, float p_fsr_sharpness, float p_fsr_mipmap_bias, RS::ViewportMSAA p_msaa, RS::ViewportScreenSpaceAA p_screen_space_aa, bool p_use_debanding, uint32_t p_view_count) = 0;
+ virtual void render_buffers_configure(RID p_render_buffers, RID p_render_target, int p_internal_width, int p_internal_height, int p_width, int p_height, float p_fsr_sharpness, float p_fsr_mipmap_bias, RS::ViewportMSAA p_msaa, RS::ViewportScreenSpaceAA p_screen_space_aa, bool p_use_taa, bool p_use_debanding, uint32_t p_view_count) = 0;
virtual void gi_set_use_half_resolution(bool p_enable) = 0;
virtual void screen_space_roughness_limiter_set_active(bool p_enable, float p_amount, float p_limit) = 0;
diff --git a/servers/rendering/renderer_storage.h b/servers/rendering/renderer_storage.h
index bb4acab582..859950673e 100644
--- a/servers/rendering/renderer_storage.h
+++ b/servers/rendering/renderer_storage.h
@@ -122,48 +122,6 @@ public:
virtual void base_update_dependency(RID p_base, DependencyTracker *p_instance) = 0;
- /* VOXEL GI API */
-
- virtual RID voxel_gi_allocate() = 0;
- virtual void voxel_gi_initialize(RID p_rid) = 0;
-
- virtual void voxel_gi_allocate_data(RID p_voxel_gi, const Transform3D &p_to_cell_xform, const AABB &p_aabb, const Vector3i &p_octree_size, const Vector<uint8_t> &p_octree_cells, const Vector<uint8_t> &p_data_cells, const Vector<uint8_t> &p_distance_field, const Vector<int> &p_level_counts) = 0;
-
- virtual AABB voxel_gi_get_bounds(RID p_voxel_gi) const = 0;
- virtual Vector3i voxel_gi_get_octree_size(RID p_voxel_gi) const = 0;
- virtual Vector<uint8_t> voxel_gi_get_octree_cells(RID p_voxel_gi) const = 0;
- virtual Vector<uint8_t> voxel_gi_get_data_cells(RID p_voxel_gi) const = 0;
- virtual Vector<uint8_t> voxel_gi_get_distance_field(RID p_voxel_gi) const = 0;
-
- virtual Vector<int> voxel_gi_get_level_counts(RID p_voxel_gi) const = 0;
- virtual Transform3D voxel_gi_get_to_cell_xform(RID p_voxel_gi) const = 0;
-
- virtual void voxel_gi_set_dynamic_range(RID p_voxel_gi, float p_range) = 0;
- virtual float voxel_gi_get_dynamic_range(RID p_voxel_gi) const = 0;
-
- virtual void voxel_gi_set_propagation(RID p_voxel_gi, float p_range) = 0;
- virtual float voxel_gi_get_propagation(RID p_voxel_gi) const = 0;
-
- virtual void voxel_gi_set_energy(RID p_voxel_gi, float p_energy) = 0;
- virtual float voxel_gi_get_energy(RID p_voxel_gi) const = 0;
-
- virtual void voxel_gi_set_bias(RID p_voxel_gi, float p_bias) = 0;
- virtual float voxel_gi_get_bias(RID p_voxel_gi) const = 0;
-
- virtual void voxel_gi_set_normal_bias(RID p_voxel_gi, float p_range) = 0;
- virtual float voxel_gi_get_normal_bias(RID p_voxel_gi) const = 0;
-
- virtual void voxel_gi_set_interior(RID p_voxel_gi, bool p_enable) = 0;
- virtual bool voxel_gi_is_interior(RID p_voxel_gi) const = 0;
-
- virtual void voxel_gi_set_use_two_bounces(RID p_voxel_gi, bool p_enable) = 0;
- virtual bool voxel_gi_is_using_two_bounces(RID p_voxel_gi) const = 0;
-
- virtual void voxel_gi_set_anisotropy_strength(RID p_voxel_gi, float p_strength) = 0;
- virtual float voxel_gi_get_anisotropy_strength(RID p_voxel_gi) const = 0;
-
- virtual uint32_t voxel_gi_get_version(RID p_probe) = 0;
-
/* FOG VOLUMES */
virtual RID fog_volume_allocate() = 0;
diff --git a/servers/rendering/renderer_viewport.cpp b/servers/rendering/renderer_viewport.cpp
index 74fafe8381..ab9ee2067f 100644
--- a/servers/rendering/renderer_viewport.cpp
+++ b/servers/rendering/renderer_viewport.cpp
@@ -138,7 +138,7 @@ void RendererViewport::_configure_3d_render_buffers(Viewport *p_viewport) {
p_viewport->internal_size = Size2(render_width, render_height);
- RSG::scene->render_buffers_configure(p_viewport->render_buffers, p_viewport->render_target, render_width, render_height, width, height, p_viewport->fsr_sharpness, p_viewport->fsr_mipmap_bias, p_viewport->msaa, p_viewport->screen_space_aa, p_viewport->use_debanding, p_viewport->get_view_count());
+ RSG::scene->render_buffers_configure(p_viewport->render_buffers, p_viewport->render_target, render_width, render_height, width, height, p_viewport->fsr_sharpness, p_viewport->fsr_mipmap_bias, p_viewport->msaa, p_viewport->screen_space_aa, p_viewport->use_taa, p_viewport->use_debanding, p_viewport->get_view_count());
}
}
}
@@ -167,7 +167,7 @@ void RendererViewport::_draw_3d(Viewport *p_viewport) {
}
float screen_mesh_lod_threshold = p_viewport->mesh_lod_threshold / float(p_viewport->size.width);
- RSG::scene->render_camera(p_viewport->render_buffers, p_viewport->camera, p_viewport->scenario, p_viewport->self, p_viewport->internal_size, screen_mesh_lod_threshold, p_viewport->shadow_atlas, xr_interface, &p_viewport->render_info);
+ RSG::scene->render_camera(p_viewport->render_buffers, p_viewport->camera, p_viewport->scenario, p_viewport->self, p_viewport->internal_size, p_viewport->use_taa, screen_mesh_lod_threshold, p_viewport->shadow_atlas, xr_interface, &p_viewport->render_info);
RENDER_TIMESTAMP("< Render 3D Scene");
}
@@ -900,6 +900,22 @@ RID RendererViewport::viewport_get_occluder_debug_texture(RID p_viewport) const
return RID();
}
+void RendererViewport::viewport_set_prev_camera_data(RID p_viewport, const RendererSceneRender::CameraData *p_camera_data) {
+ Viewport *viewport = viewport_owner.get_or_null(p_viewport);
+ ERR_FAIL_COND(!viewport);
+ uint64_t frame = RSG::rasterizer->get_frame_number();
+ if (viewport->prev_camera_data_frame != frame) {
+ viewport->prev_camera_data = *p_camera_data;
+ viewport->prev_camera_data_frame = frame;
+ }
+}
+
+const RendererSceneRender::CameraData *RendererViewport::viewport_get_prev_camera_data(RID p_viewport) {
+ const Viewport *viewport = viewport_owner.get_or_null(p_viewport);
+ ERR_FAIL_COND_V(!viewport, nullptr);
+ return &viewport->prev_camera_data;
+}
+
void RendererViewport::viewport_set_disable_2d(RID p_viewport, bool p_disable) {
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
ERR_FAIL_COND(!viewport);
@@ -1039,6 +1055,17 @@ void RendererViewport::viewport_set_screen_space_aa(RID p_viewport, RS::Viewport
_configure_3d_render_buffers(viewport);
}
+void RendererViewport::viewport_set_use_taa(RID p_viewport, bool p_use_taa) {
+ Viewport *viewport = viewport_owner.get_or_null(p_viewport);
+ ERR_FAIL_COND(!viewport);
+
+ if (viewport->use_taa == p_use_taa) {
+ return;
+ }
+ viewport->use_taa = p_use_taa;
+ _configure_3d_render_buffers(viewport);
+}
+
void RendererViewport::viewport_set_use_debanding(RID p_viewport, bool p_use_debanding) {
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
ERR_FAIL_COND(!viewport);
@@ -1166,6 +1193,20 @@ void RendererViewport::viewport_set_sdf_oversize_and_scale(RID p_viewport, RS::V
RSG::texture_storage->render_target_set_sdf_size_and_scale(viewport->render_target, p_size, p_scale);
}
+RID RendererViewport::viewport_find_from_screen_attachment(DisplayServer::WindowID p_id) const {
+ RID *rids = nullptr;
+ uint32_t rid_count = viewport_owner.get_rid_count();
+ rids = (RID *)alloca(sizeof(RID *) * rid_count);
+ viewport_owner.fill_owned_buffer(rids);
+ for (uint32_t i = 0; i < rid_count; i++) {
+ Viewport *viewport = viewport_owner.get_or_null(rids[i]);
+ if (viewport->viewport_to_screen == p_id) {
+ return rids[i];
+ }
+ }
+ return RID();
+}
+
bool RendererViewport::free(RID p_rid) {
if (viewport_owner.owns(p_rid)) {
Viewport *viewport = viewport_owner.get_or_null(p_rid);
diff --git a/servers/rendering/renderer_viewport.h b/servers/rendering/renderer_viewport.h
index da8cf5396c..acab8063d1 100644
--- a/servers/rendering/renderer_viewport.h
+++ b/servers/rendering/renderer_viewport.h
@@ -35,6 +35,7 @@
#include "core/templates/rid_owner.h"
#include "core/templates/self_list.h"
#include "servers/rendering/renderer_scene.h"
+#include "servers/rendering/renderer_scene_render.h"
#include "servers/rendering_server.h"
#include "servers/xr/xr_interface.h"
@@ -66,8 +67,12 @@ public:
RS::ViewportMSAA msaa;
RS::ViewportScreenSpaceAA screen_space_aa;
+ bool use_taa;
bool use_debanding;
+ RendererSceneRender::CameraData prev_camera_data;
+ uint64_t prev_camera_data_frame = 0;
+
bool use_occlusion_culling;
bool occlusion_buffer_dirty;
@@ -233,6 +238,9 @@ public:
RID viewport_get_texture(RID p_viewport) const;
RID viewport_get_occluder_debug_texture(RID p_viewport) const;
+ void viewport_set_prev_camera_data(RID p_viewport, const RendererSceneRender::CameraData *p_camera_data);
+ const RendererSceneRender::CameraData *viewport_get_prev_camera_data(RID p_viewport);
+
void viewport_set_disable_2d(RID p_viewport, bool p_disable);
void viewport_set_disable_environment(RID p_viewport, bool p_disable);
void viewport_set_disable_3d(RID p_viewport, bool p_disable);
@@ -252,6 +260,7 @@ public:
void viewport_set_msaa(RID p_viewport, RS::ViewportMSAA p_msaa);
void viewport_set_screen_space_aa(RID p_viewport, RS::ViewportScreenSpaceAA p_mode);
+ void viewport_set_use_taa(RID p_viewport, bool p_use_taa);
void viewport_set_use_debanding(RID p_viewport, bool p_use_debanding);
void viewport_set_use_occlusion_culling(RID p_viewport, bool p_use_occlusion_culling);
void viewport_set_occlusion_rays_per_thread(int p_rays_per_thread);
@@ -273,6 +282,8 @@ public:
void viewport_set_sdf_oversize_and_scale(RID p_viewport, RS::ViewportSDFOversize p_over_size, RS::ViewportSDFScale p_scale);
+ virtual RID viewport_find_from_screen_attachment(DisplayServer::WindowID p_id = DisplayServer::MAIN_WINDOW_ID) const;
+
void handle_timestamp(String p_timestamp, uint64_t p_cpu_time, uint64_t p_gpu_time);
void set_default_clear_color(const Color &p_color);
diff --git a/servers/rendering/rendering_server_default.cpp b/servers/rendering/rendering_server_default.cpp
index 718f20f80a..7e035bae80 100644
--- a/servers/rendering/rendering_server_default.cpp
+++ b/servers/rendering/rendering_server_default.cpp
@@ -333,13 +333,10 @@ void RenderingServerDefault::_thread_exit() {
}
void RenderingServerDefault::_thread_draw(bool p_swap_buffers, double frame_step) {
- if (!draw_pending.decrement()) {
- _draw(p_swap_buffers, frame_step);
- }
+ _draw(p_swap_buffers, frame_step);
}
void RenderingServerDefault::_thread_flush() {
- draw_pending.decrement();
}
void RenderingServerDefault::_thread_callback(void *_instance) {
@@ -370,7 +367,6 @@ void RenderingServerDefault::_thread_loop() {
void RenderingServerDefault::sync() {
if (create_thread) {
- draw_pending.increment();
command_queue.push_and_sync(this, &RenderingServerDefault::_thread_flush);
} else {
command_queue.flush_all(); //flush all pending from other threads
@@ -379,7 +375,6 @@ void RenderingServerDefault::sync() {
void RenderingServerDefault::draw(bool p_swap_buffers, double frame_step) {
if (create_thread) {
- draw_pending.increment();
command_queue.push(this, &RenderingServerDefault::_thread_draw, p_swap_buffers, frame_step);
} else {
_draw(p_swap_buffers, frame_step);
@@ -409,6 +404,7 @@ RenderingServerDefault::RenderingServerDefault(bool p_create_thread) :
RSG::mesh_storage = RSG::rasterizer->get_mesh_storage();
RSG::particles_storage = RSG::rasterizer->get_particles_storage();
RSG::texture_storage = RSG::rasterizer->get_texture_storage();
+ RSG::gi = RSG::rasterizer->get_gi();
RSG::storage = RSG::rasterizer->get_storage();
RSG::canvas_render = RSG::rasterizer->get_canvas();
sr->set_scene_render(RSG::rasterizer->get_scene());
diff --git a/servers/rendering/rendering_server_default.h b/servers/rendering/rendering_server_default.h
index 9d4059b9df..aef89619db 100644
--- a/servers/rendering/rendering_server_default.h
+++ b/servers/rendering/rendering_server_default.h
@@ -84,7 +84,6 @@ class RenderingServerDefault : public RenderingServer {
SafeFlag draw_thread_up;
bool create_thread;
- SafeNumeric<uint64_t> draw_pending;
void _thread_draw(bool p_swap_buffers, double frame_step);
void _thread_flush();
@@ -436,8 +435,8 @@ public:
#undef ServerName
#undef server_name
-#define ServerName RendererStorage
-#define server_name RSG::storage
+#define ServerName RendererGI
+#define server_name RSG::gi
FUNCRIDSPLIT(voxel_gi)
@@ -616,6 +615,7 @@ public:
FUNC3(viewport_set_shadow_atlas_quadrant_subdivision, RID, int, int)
FUNC2(viewport_set_msaa, RID, ViewportMSAA)
FUNC2(viewport_set_screen_space_aa, RID, ViewportScreenSpaceAA)
+ FUNC2(viewport_set_use_taa, RID, bool)
FUNC2(viewport_set_use_debanding, RID, bool)
FUNC2(viewport_set_use_occlusion_culling, RID, bool)
FUNC1(viewport_set_occlusion_rays_per_thread, int)
@@ -628,6 +628,7 @@ public:
FUNC2(viewport_set_measure_render_time, RID, bool)
FUNC1RC(double, viewport_get_measured_render_time_cpu, RID)
FUNC1RC(double, viewport_get_measured_render_time_gpu, RID)
+ FUNC1RC(RID, viewport_find_from_screen_attachment, DisplayServer::WindowID)
FUNC2(call_set_vsync_mode, DisplayServer::VSyncMode, DisplayServer::WindowID)
diff --git a/servers/rendering/rendering_server_globals.cpp b/servers/rendering/rendering_server_globals.cpp
index 4d24dbf3b4..1c2a275265 100644
--- a/servers/rendering/rendering_server_globals.cpp
+++ b/servers/rendering/rendering_server_globals.cpp
@@ -37,6 +37,7 @@ RendererMaterialStorage *RenderingServerGlobals::material_storage = nullptr;
RendererMeshStorage *RenderingServerGlobals::mesh_storage = nullptr;
RendererParticlesStorage *RenderingServerGlobals::particles_storage = nullptr;
RendererTextureStorage *RenderingServerGlobals::texture_storage = nullptr;
+RendererGI *RenderingServerGlobals::gi = nullptr;
RendererStorage *RenderingServerGlobals::storage = nullptr;
RendererCanvasRender *RenderingServerGlobals::canvas_render = nullptr;
RendererCompositor *RenderingServerGlobals::rasterizer = nullptr;
diff --git a/servers/rendering/rendering_server_globals.h b/servers/rendering/rendering_server_globals.h
index ce11fae9e8..91712f2a51 100644
--- a/servers/rendering/rendering_server_globals.h
+++ b/servers/rendering/rendering_server_globals.h
@@ -31,6 +31,7 @@
#ifndef RENDERING_SERVER_GLOBALS_H
#define RENDERING_SERVER_GLOBALS_H
+#include "servers/rendering/environment/renderer_gi.h"
#include "servers/rendering/renderer_canvas_cull.h"
#include "servers/rendering/renderer_canvas_render.h"
#include "servers/rendering/renderer_scene.h"
@@ -53,6 +54,7 @@ public:
static RendererMeshStorage *mesh_storage;
static RendererParticlesStorage *particles_storage;
static RendererTextureStorage *texture_storage;
+ static RendererGI *gi;
static RendererStorage *storage;
static RendererCanvasRender *canvas_render;
static RendererCompositor *rasterizer;
diff --git a/servers/rendering/shader_compiler.cpp b/servers/rendering/shader_compiler.cpp
index 81cd83aebb..463b67033d 100644
--- a/servers/rendering/shader_compiler.cpp
+++ b/servers/rendering/shader_compiler.cpp
@@ -571,6 +571,7 @@ String ShaderCompiler::_dump_node_code(const SL::Node *p_node, int p_level, Gene
texture.name = uniform_name;
texture.hint = uniform.hint;
texture.type = uniform.type;
+ texture.use_color = uniform.use_color;
texture.filter = uniform.filter;
texture.repeat = uniform.repeat;
texture.global = uniform.scope == ShaderLanguage::ShaderNode::Uniform::SCOPE_GLOBAL;
diff --git a/servers/rendering/shader_compiler.h b/servers/rendering/shader_compiler.h
index 2656ee68a6..06f42e9f0f 100644
--- a/servers/rendering/shader_compiler.h
+++ b/servers/rendering/shader_compiler.h
@@ -61,6 +61,7 @@ public:
StringName name;
ShaderLanguage::DataType type;
ShaderLanguage::ShaderNode::Uniform::Hint hint;
+ bool use_color = false;
ShaderLanguage::TextureFilter filter;
ShaderLanguage::TextureRepeat repeat;
bool global;
diff --git a/servers/rendering/shader_language.cpp b/servers/rendering/shader_language.cpp
index b25296e3b0..ad9b51ac0c 100644
--- a/servers/rendering/shader_language.cpp
+++ b/servers/rendering/shader_language.cpp
@@ -613,12 +613,16 @@ ShaderLanguage::Token ShaderLanguage::_get_token() {
String str;
int i = 0;
+ bool digit_after_exp = false;
while (true) {
const char32_t symbol = String::char_lowercase(GETCHAR(i));
bool error = false;
if (is_digit(symbol)) {
+ if (exponent_found) {
+ digit_after_exp = true;
+ }
if (end_suffix_found) {
error = true;
}
@@ -683,7 +687,7 @@ ShaderLanguage::Token ShaderLanguage::_get_token() {
return _make_token(TK_ERROR, "Invalid (hexadecimal) numeric constant");
}
} else if (period_found || exponent_found || float_suffix_found) { // Float
- if (exponent_found && (!is_digit(last_char) && last_char != 'f')) { // checks for eg: "2E", "2E-", "2E+"
+ if (exponent_found && (!digit_after_exp || (!is_digit(last_char) && last_char != 'f'))) { // Checks for eg: "2E", "2E-", "2E+" and 0ef, 0e+f, 0.0ef, 0.0e-f (exponent without digit after it).
return _make_token(TK_ERROR, "Invalid (float) numeric constant");
}
if (period_found) {
@@ -1014,6 +1018,93 @@ String ShaderLanguage::get_datatype_name(DataType p_type) {
return "";
}
+String ShaderLanguage::get_uniform_hint_name(ShaderNode::Uniform::Hint p_hint) {
+ String result;
+ switch (p_hint) {
+ case ShaderNode::Uniform::HINT_RANGE: {
+ result = "hint_range";
+ } break;
+ case ShaderNode::Uniform::HINT_SOURCE_COLOR: {
+ result = "hint_color";
+ } break;
+ case ShaderNode::Uniform::HINT_NORMAL: {
+ result = "hint_normal";
+ } break;
+ case ShaderNode::Uniform::HINT_ROUGHNESS_NORMAL: {
+ result = "hint_roughness_normal";
+ } break;
+ case ShaderNode::Uniform::HINT_ROUGHNESS_R: {
+ result = "hint_roughness_r";
+ } break;
+ case ShaderNode::Uniform::HINT_ROUGHNESS_G: {
+ result = "hint_roughness_g";
+ } break;
+ case ShaderNode::Uniform::HINT_ROUGHNESS_B: {
+ result = "hint_roughness_b";
+ } break;
+ case ShaderNode::Uniform::HINT_ROUGHNESS_A: {
+ result = "hint_roughness_a";
+ } break;
+ case ShaderNode::Uniform::HINT_ROUGHNESS_GRAY: {
+ result = "hint_roughness_gray";
+ } break;
+ case ShaderNode::Uniform::HINT_DEFAULT_BLACK: {
+ result = "hint_default_black";
+ } break;
+ case ShaderNode::Uniform::HINT_DEFAULT_WHITE: {
+ result = "hint_default_white";
+ } break;
+ case ShaderNode::Uniform::HINT_ANISOTROPY: {
+ result = "hint_anisotropy";
+ } break;
+ default:
+ break;
+ }
+ return result;
+}
+
+String ShaderLanguage::get_texture_filter_name(TextureFilter p_filter) {
+ String result;
+ switch (p_filter) {
+ case FILTER_NEAREST: {
+ result = "filter_nearest";
+ } break;
+ case FILTER_LINEAR: {
+ result = "filter_linear";
+ } break;
+ case FILTER_NEAREST_MIPMAP: {
+ result = "filter_nearest_mipmap";
+ } break;
+ case FILTER_LINEAR_MIPMAP: {
+ result = "filter_linear_mipmap";
+ } break;
+ case FILTER_NEAREST_MIPMAP_ANISOTROPIC: {
+ result = "filter_nearest_mipmap_anisotropic";
+ } break;
+ case FILTER_LINEAR_MIPMAP_ANISOTROPIC: {
+ result = "filter_linear_mipmap_anisotropic";
+ } break;
+ default: {
+ } break;
+ }
+ return result;
+}
+
+String ShaderLanguage::get_texture_repeat_name(TextureRepeat p_repeat) {
+ String result;
+ switch (p_repeat) {
+ case REPEAT_DISABLE: {
+ result = "repeat_disable";
+ } break;
+ case REPEAT_ENABLE: {
+ result = "repeat_enable";
+ } break;
+ default: {
+ } break;
+ }
+ return result;
+}
+
bool ShaderLanguage::is_token_nonvoid_datatype(TokenType p_type) {
return is_token_datatype(p_type) && p_type != TK_TYPE_VOID;
}
@@ -1767,21 +1858,21 @@ const ShaderLanguage::BuiltinFuncDef ShaderLanguage::builtin_func_defs[] = {
{ "ivec4", TYPE_IVEC4, { TYPE_IVEC3, TYPE_INT, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "ivec4", TYPE_IVEC4, { TYPE_IVEC2, TYPE_IVEC2, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
- { "uint", TYPE_UINT, { TYPE_UINT, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
- { "uvec2", TYPE_UVEC2, { TYPE_UINT, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
- { "uvec2", TYPE_UVEC2, { TYPE_UINT, TYPE_UINT, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
- { "uvec3", TYPE_UVEC3, { TYPE_UINT, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
- { "uvec3", TYPE_UVEC3, { TYPE_UINT, TYPE_UINT, TYPE_UINT, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
- { "uvec3", TYPE_UVEC3, { TYPE_UVEC2, TYPE_UINT, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
- { "uvec3", TYPE_UVEC3, { TYPE_UINT, TYPE_UVEC2, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
- { "uvec4", TYPE_UVEC4, { TYPE_UINT, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
- { "uvec4", TYPE_UVEC4, { TYPE_UINT, TYPE_UINT, TYPE_UINT, TYPE_UINT, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
- { "uvec4", TYPE_UVEC4, { TYPE_UINT, TYPE_UVEC2, TYPE_UINT, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
- { "uvec4", TYPE_UVEC4, { TYPE_UVEC2, TYPE_UINT, TYPE_UINT, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
- { "uvec4", TYPE_UVEC4, { TYPE_UINT, TYPE_UINT, TYPE_UVEC2, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
- { "uvec4", TYPE_UVEC4, { TYPE_UINT, TYPE_UVEC3, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
- { "uvec4", TYPE_UVEC4, { TYPE_UVEC3, TYPE_UINT, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
- { "uvec4", TYPE_UVEC4, { TYPE_UVEC2, TYPE_UVEC2, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
+ { "uint", TYPE_UINT, { TYPE_UINT, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
+ { "uvec2", TYPE_UVEC2, { TYPE_UINT, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
+ { "uvec2", TYPE_UVEC2, { TYPE_UINT, TYPE_UINT, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
+ { "uvec3", TYPE_UVEC3, { TYPE_UINT, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
+ { "uvec3", TYPE_UVEC3, { TYPE_UINT, TYPE_UINT, TYPE_UINT, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
+ { "uvec3", TYPE_UVEC3, { TYPE_UVEC2, TYPE_UINT, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
+ { "uvec3", TYPE_UVEC3, { TYPE_UINT, TYPE_UVEC2, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
+ { "uvec4", TYPE_UVEC4, { TYPE_UINT, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
+ { "uvec4", TYPE_UVEC4, { TYPE_UINT, TYPE_UINT, TYPE_UINT, TYPE_UINT, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
+ { "uvec4", TYPE_UVEC4, { TYPE_UINT, TYPE_UVEC2, TYPE_UINT, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
+ { "uvec4", TYPE_UVEC4, { TYPE_UVEC2, TYPE_UINT, TYPE_UINT, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
+ { "uvec4", TYPE_UVEC4, { TYPE_UINT, TYPE_UINT, TYPE_UVEC2, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
+ { "uvec4", TYPE_UVEC4, { TYPE_UINT, TYPE_UVEC3, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
+ { "uvec4", TYPE_UVEC4, { TYPE_UVEC3, TYPE_UINT, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
+ { "uvec4", TYPE_UVEC4, { TYPE_UVEC2, TYPE_UVEC2, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "mat2", TYPE_MAT2, { TYPE_VEC2, TYPE_VEC2, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "mat3", TYPE_MAT3, { TYPE_VEC3, TYPE_VEC3, TYPE_VEC3, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
@@ -1795,22 +1886,22 @@ const ShaderLanguage::BuiltinFuncDef ShaderLanguage::builtin_func_defs[] = {
{ "int", TYPE_INT, { TYPE_BOOL, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "int", TYPE_INT, { TYPE_INT, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
- { "int", TYPE_INT, { TYPE_UINT, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
+ { "int", TYPE_INT, { TYPE_UINT, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "int", TYPE_INT, { TYPE_FLOAT, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "float", TYPE_FLOAT, { TYPE_BOOL, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "float", TYPE_FLOAT, { TYPE_INT, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
- { "float", TYPE_FLOAT, { TYPE_UINT, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
+ { "float", TYPE_FLOAT, { TYPE_UINT, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "float", TYPE_FLOAT, { TYPE_FLOAT, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
- { "uint", TYPE_UINT, { TYPE_BOOL, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
- { "uint", TYPE_UINT, { TYPE_INT, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
- { "uint", TYPE_UINT, { TYPE_UINT, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
- { "uint", TYPE_UINT, { TYPE_FLOAT, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
+ { "uint", TYPE_UINT, { TYPE_BOOL, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
+ { "uint", TYPE_UINT, { TYPE_INT, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
+ { "uint", TYPE_UINT, { TYPE_UINT, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
+ { "uint", TYPE_UINT, { TYPE_FLOAT, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "bool", TYPE_BOOL, { TYPE_BOOL, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "bool", TYPE_BOOL, { TYPE_INT, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
- { "bool", TYPE_BOOL, { TYPE_UINT, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
+ { "bool", TYPE_BOOL, { TYPE_UINT, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "bool", TYPE_BOOL, { TYPE_FLOAT, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
// Conversion vectors.
@@ -1822,57 +1913,57 @@ const ShaderLanguage::BuiltinFuncDef ShaderLanguage::builtin_func_defs[] = {
{ "vec2", TYPE_VEC2, { TYPE_BVEC2, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "vec2", TYPE_VEC2, { TYPE_IVEC2, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
- { "vec2", TYPE_VEC2, { TYPE_UVEC2, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
+ { "vec2", TYPE_VEC2, { TYPE_UVEC2, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "vec2", TYPE_VEC2, { TYPE_VEC2, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
- { "uvec2", TYPE_UVEC2, { TYPE_BVEC2, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
- { "uvec2", TYPE_UVEC2, { TYPE_IVEC2, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
- { "uvec2", TYPE_UVEC2, { TYPE_UVEC2, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
- { "uvec2", TYPE_UVEC2, { TYPE_VEC2, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
+ { "uvec2", TYPE_UVEC2, { TYPE_BVEC2, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
+ { "uvec2", TYPE_UVEC2, { TYPE_IVEC2, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
+ { "uvec2", TYPE_UVEC2, { TYPE_UVEC2, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
+ { "uvec2", TYPE_UVEC2, { TYPE_VEC2, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "bvec2", TYPE_BVEC2, { TYPE_BVEC2, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "bvec2", TYPE_BVEC2, { TYPE_IVEC2, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
- { "bvec2", TYPE_BVEC2, { TYPE_UVEC2, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
+ { "bvec2", TYPE_BVEC2, { TYPE_UVEC2, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "bvec2", TYPE_BVEC2, { TYPE_VEC2, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "ivec3", TYPE_IVEC3, { TYPE_BVEC3, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "ivec3", TYPE_IVEC3, { TYPE_IVEC3, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
- { "ivec3", TYPE_IVEC3, { TYPE_UVEC3, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
+ { "ivec3", TYPE_IVEC3, { TYPE_UVEC3, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "ivec3", TYPE_IVEC3, { TYPE_VEC3, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "vec3", TYPE_VEC3, { TYPE_BVEC3, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "vec3", TYPE_VEC3, { TYPE_IVEC3, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
- { "vec3", TYPE_VEC3, { TYPE_UVEC3, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
+ { "vec3", TYPE_VEC3, { TYPE_UVEC3, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "vec3", TYPE_VEC3, { TYPE_VEC3, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
- { "uvec3", TYPE_UVEC3, { TYPE_BVEC3, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
- { "uvec3", TYPE_UVEC3, { TYPE_IVEC3, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
- { "uvec3", TYPE_UVEC3, { TYPE_UVEC3, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
- { "uvec3", TYPE_UVEC3, { TYPE_VEC3, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
+ { "uvec3", TYPE_UVEC3, { TYPE_BVEC3, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
+ { "uvec3", TYPE_UVEC3, { TYPE_IVEC3, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
+ { "uvec3", TYPE_UVEC3, { TYPE_UVEC3, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
+ { "uvec3", TYPE_UVEC3, { TYPE_VEC3, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "bvec3", TYPE_BVEC3, { TYPE_BVEC3, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "bvec3", TYPE_BVEC3, { TYPE_IVEC3, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
- { "bvec3", TYPE_BVEC3, { TYPE_UVEC3, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
+ { "bvec3", TYPE_BVEC3, { TYPE_UVEC3, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "bvec3", TYPE_BVEC3, { TYPE_VEC3, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "ivec4", TYPE_IVEC4, { TYPE_BVEC4, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "ivec4", TYPE_IVEC4, { TYPE_IVEC4, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
- { "ivec4", TYPE_IVEC4, { TYPE_UVEC4, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
+ { "ivec4", TYPE_IVEC4, { TYPE_UVEC4, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "ivec4", TYPE_IVEC4, { TYPE_VEC4, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "vec4", TYPE_VEC4, { TYPE_BVEC4, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "vec4", TYPE_VEC4, { TYPE_IVEC4, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
- { "vec4", TYPE_VEC4, { TYPE_UVEC4, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
+ { "vec4", TYPE_VEC4, { TYPE_UVEC4, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "vec4", TYPE_VEC4, { TYPE_VEC4, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
- { "uvec4", TYPE_UVEC4, { TYPE_BVEC4, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
- { "uvec4", TYPE_UVEC4, { TYPE_IVEC4, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
- { "uvec4", TYPE_UVEC4, { TYPE_UVEC4, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
- { "uvec4", TYPE_UVEC4, { TYPE_VEC4, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
+ { "uvec4", TYPE_UVEC4, { TYPE_BVEC4, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
+ { "uvec4", TYPE_UVEC4, { TYPE_IVEC4, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
+ { "uvec4", TYPE_UVEC4, { TYPE_UVEC4, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
+ { "uvec4", TYPE_UVEC4, { TYPE_VEC4, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "bvec4", TYPE_BVEC4, { TYPE_BVEC4, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "bvec4", TYPE_BVEC4, { TYPE_IVEC4, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
- { "bvec4", TYPE_BVEC4, { TYPE_UVEC4, TYPE_VOID }, { "" }, TAG_GLOBAL, true },
+ { "bvec4", TYPE_BVEC4, { TYPE_UVEC4, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
{ "bvec4", TYPE_BVEC4, { TYPE_VEC4, TYPE_VOID }, { "" }, TAG_GLOBAL, false },
// Conversion between matrixes.
@@ -2116,10 +2207,10 @@ const ShaderLanguage::BuiltinFuncDef ShaderLanguage::builtin_func_defs[] = {
// modf
- { "modf", TYPE_FLOAT, { TYPE_FLOAT, TYPE_FLOAT, TYPE_VOID }, { "x", "i" }, TAG_GLOBAL, true },
- { "modf", TYPE_VEC2, { TYPE_VEC2, TYPE_VEC2, TYPE_VOID }, { "x", "i" }, TAG_GLOBAL, true },
- { "modf", TYPE_VEC3, { TYPE_VEC3, TYPE_VEC3, TYPE_VOID }, { "x", "i" }, TAG_GLOBAL, true },
- { "modf", TYPE_VEC4, { TYPE_VEC4, TYPE_VEC4, TYPE_VOID }, { "x", "i" }, TAG_GLOBAL, true },
+ { "modf", TYPE_FLOAT, { TYPE_FLOAT, TYPE_FLOAT, TYPE_VOID }, { "x", "i" }, TAG_GLOBAL, false },
+ { "modf", TYPE_VEC2, { TYPE_VEC2, TYPE_VEC2, TYPE_VOID }, { "x", "i" }, TAG_GLOBAL, false },
+ { "modf", TYPE_VEC3, { TYPE_VEC3, TYPE_VEC3, TYPE_VOID }, { "x", "i" }, TAG_GLOBAL, false },
+ { "modf", TYPE_VEC4, { TYPE_VEC4, TYPE_VEC4, TYPE_VOID }, { "x", "i" }, TAG_GLOBAL, false },
// min
@@ -2139,13 +2230,13 @@ const ShaderLanguage::BuiltinFuncDef ShaderLanguage::builtin_func_defs[] = {
{ "min", TYPE_IVEC4, { TYPE_IVEC4, TYPE_IVEC4, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
{ "min", TYPE_IVEC4, { TYPE_IVEC4, TYPE_INT, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
- { "min", TYPE_UINT, { TYPE_UINT, TYPE_UINT, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, true },
- { "min", TYPE_UVEC2, { TYPE_UVEC2, TYPE_UVEC2, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, true },
- { "min", TYPE_UVEC2, { TYPE_UVEC2, TYPE_UINT, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, true },
- { "min", TYPE_UVEC3, { TYPE_UVEC3, TYPE_UVEC3, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, true },
- { "min", TYPE_UVEC3, { TYPE_UVEC3, TYPE_UINT, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, true },
- { "min", TYPE_UVEC4, { TYPE_UVEC4, TYPE_UVEC4, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, true },
- { "min", TYPE_UVEC4, { TYPE_UVEC4, TYPE_UINT, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, true },
+ { "min", TYPE_UINT, { TYPE_UINT, TYPE_UINT, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
+ { "min", TYPE_UVEC2, { TYPE_UVEC2, TYPE_UVEC2, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
+ { "min", TYPE_UVEC2, { TYPE_UVEC2, TYPE_UINT, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
+ { "min", TYPE_UVEC3, { TYPE_UVEC3, TYPE_UVEC3, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
+ { "min", TYPE_UVEC3, { TYPE_UVEC3, TYPE_UINT, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
+ { "min", TYPE_UVEC4, { TYPE_UVEC4, TYPE_UVEC4, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
+ { "min", TYPE_UVEC4, { TYPE_UVEC4, TYPE_UINT, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
// max
@@ -2165,13 +2256,13 @@ const ShaderLanguage::BuiltinFuncDef ShaderLanguage::builtin_func_defs[] = {
{ "max", TYPE_IVEC4, { TYPE_IVEC4, TYPE_IVEC4, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
{ "max", TYPE_IVEC4, { TYPE_IVEC4, TYPE_INT, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
- { "max", TYPE_UINT, { TYPE_UINT, TYPE_UINT, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, true },
- { "max", TYPE_UVEC2, { TYPE_UVEC2, TYPE_UVEC2, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, true },
- { "max", TYPE_UVEC2, { TYPE_UVEC2, TYPE_UINT, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, true },
- { "max", TYPE_UVEC3, { TYPE_UVEC3, TYPE_UVEC3, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, true },
- { "max", TYPE_UVEC3, { TYPE_UVEC3, TYPE_UINT, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, true },
- { "max", TYPE_UVEC4, { TYPE_UVEC4, TYPE_UVEC4, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, true },
- { "max", TYPE_UVEC4, { TYPE_UVEC4, TYPE_UINT, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, true },
+ { "max", TYPE_UINT, { TYPE_UINT, TYPE_UINT, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
+ { "max", TYPE_UVEC2, { TYPE_UVEC2, TYPE_UVEC2, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
+ { "max", TYPE_UVEC2, { TYPE_UVEC2, TYPE_UINT, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
+ { "max", TYPE_UVEC3, { TYPE_UVEC3, TYPE_UVEC3, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
+ { "max", TYPE_UVEC3, { TYPE_UVEC3, TYPE_UINT, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
+ { "max", TYPE_UVEC4, { TYPE_UVEC4, TYPE_UVEC4, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
+ { "max", TYPE_UVEC4, { TYPE_UVEC4, TYPE_UINT, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
// clamp
@@ -2191,13 +2282,13 @@ const ShaderLanguage::BuiltinFuncDef ShaderLanguage::builtin_func_defs[] = {
{ "clamp", TYPE_IVEC3, { TYPE_IVEC3, TYPE_INT, TYPE_INT, TYPE_VOID }, { "x", "minVal", "maxVal" }, TAG_GLOBAL, false },
{ "clamp", TYPE_IVEC4, { TYPE_IVEC4, TYPE_INT, TYPE_INT, TYPE_VOID }, { "x", "minVal", "maxVal" }, TAG_GLOBAL, false },
- { "clamp", TYPE_UINT, { TYPE_UINT, TYPE_UINT, TYPE_UINT, TYPE_VOID }, { "x", "minVal", "maxVal" }, TAG_GLOBAL, true },
- { "clamp", TYPE_UVEC2, { TYPE_UVEC2, TYPE_UVEC2, TYPE_UVEC2, TYPE_VOID }, { "x", "minVal", "maxVal" }, TAG_GLOBAL, true },
- { "clamp", TYPE_UVEC3, { TYPE_UVEC3, TYPE_UVEC3, TYPE_UVEC3, TYPE_VOID }, { "x", "minVal", "maxVal" }, TAG_GLOBAL, true },
- { "clamp", TYPE_UVEC4, { TYPE_UVEC4, TYPE_UVEC4, TYPE_UVEC4, TYPE_VOID }, { "x", "minVal", "maxVal" }, TAG_GLOBAL, true },
- { "clamp", TYPE_UVEC2, { TYPE_UVEC2, TYPE_UINT, TYPE_UINT, TYPE_VOID }, { "x", "minVal", "maxVal" }, TAG_GLOBAL, true },
- { "clamp", TYPE_UVEC3, { TYPE_UVEC3, TYPE_UINT, TYPE_UINT, TYPE_VOID }, { "x", "minVal", "maxVal" }, TAG_GLOBAL, true },
- { "clamp", TYPE_UVEC4, { TYPE_UVEC4, TYPE_UINT, TYPE_UINT, TYPE_VOID }, { "x", "minVal", "maxVal" }, TAG_GLOBAL, true },
+ { "clamp", TYPE_UINT, { TYPE_UINT, TYPE_UINT, TYPE_UINT, TYPE_VOID }, { "x", "minVal", "maxVal" }, TAG_GLOBAL, false },
+ { "clamp", TYPE_UVEC2, { TYPE_UVEC2, TYPE_UVEC2, TYPE_UVEC2, TYPE_VOID }, { "x", "minVal", "maxVal" }, TAG_GLOBAL, false },
+ { "clamp", TYPE_UVEC3, { TYPE_UVEC3, TYPE_UVEC3, TYPE_UVEC3, TYPE_VOID }, { "x", "minVal", "maxVal" }, TAG_GLOBAL, false },
+ { "clamp", TYPE_UVEC4, { TYPE_UVEC4, TYPE_UVEC4, TYPE_UVEC4, TYPE_VOID }, { "x", "minVal", "maxVal" }, TAG_GLOBAL, false },
+ { "clamp", TYPE_UVEC2, { TYPE_UVEC2, TYPE_UINT, TYPE_UINT, TYPE_VOID }, { "x", "minVal", "maxVal" }, TAG_GLOBAL, false },
+ { "clamp", TYPE_UVEC3, { TYPE_UVEC3, TYPE_UINT, TYPE_UINT, TYPE_VOID }, { "x", "minVal", "maxVal" }, TAG_GLOBAL, false },
+ { "clamp", TYPE_UVEC4, { TYPE_UVEC4, TYPE_UINT, TYPE_UINT, TYPE_VOID }, { "x", "minVal", "maxVal" }, TAG_GLOBAL, false },
// mix
@@ -2248,31 +2339,31 @@ const ShaderLanguage::BuiltinFuncDef ShaderLanguage::builtin_func_defs[] = {
// floatBitsToInt
- { "floatBitsToInt", TYPE_INT, { TYPE_FLOAT, TYPE_VOID }, { "x" }, TAG_GLOBAL, true },
- { "floatBitsToInt", TYPE_IVEC2, { TYPE_VEC2, TYPE_VOID }, { "x" }, TAG_GLOBAL, true },
- { "floatBitsToInt", TYPE_IVEC3, { TYPE_VEC3, TYPE_VOID }, { "x" }, TAG_GLOBAL, true },
- { "floatBitsToInt", TYPE_IVEC4, { TYPE_VEC4, TYPE_VOID }, { "x" }, TAG_GLOBAL, true },
+ { "floatBitsToInt", TYPE_INT, { TYPE_FLOAT, TYPE_VOID }, { "x" }, TAG_GLOBAL, false },
+ { "floatBitsToInt", TYPE_IVEC2, { TYPE_VEC2, TYPE_VOID }, { "x" }, TAG_GLOBAL, false },
+ { "floatBitsToInt", TYPE_IVEC3, { TYPE_VEC3, TYPE_VOID }, { "x" }, TAG_GLOBAL, false },
+ { "floatBitsToInt", TYPE_IVEC4, { TYPE_VEC4, TYPE_VOID }, { "x" }, TAG_GLOBAL, false },
// floatBitsToUint
- { "floatBitsToUint", TYPE_UINT, { TYPE_FLOAT, TYPE_VOID }, { "x" }, TAG_GLOBAL, true },
- { "floatBitsToUint", TYPE_UVEC2, { TYPE_VEC2, TYPE_VOID }, { "x" }, TAG_GLOBAL, true },
- { "floatBitsToUint", TYPE_UVEC3, { TYPE_VEC3, TYPE_VOID }, { "x" }, TAG_GLOBAL, true },
- { "floatBitsToUint", TYPE_UVEC4, { TYPE_VEC4, TYPE_VOID }, { "x" }, TAG_GLOBAL, true },
+ { "floatBitsToUint", TYPE_UINT, { TYPE_FLOAT, TYPE_VOID }, { "x" }, TAG_GLOBAL, false },
+ { "floatBitsToUint", TYPE_UVEC2, { TYPE_VEC2, TYPE_VOID }, { "x" }, TAG_GLOBAL, false },
+ { "floatBitsToUint", TYPE_UVEC3, { TYPE_VEC3, TYPE_VOID }, { "x" }, TAG_GLOBAL, false },
+ { "floatBitsToUint", TYPE_UVEC4, { TYPE_VEC4, TYPE_VOID }, { "x" }, TAG_GLOBAL, false },
// intBitsToFloat
- { "intBitsToFloat", TYPE_FLOAT, { TYPE_INT, TYPE_VOID }, { "x" }, TAG_GLOBAL, true },
- { "intBitsToFloat", TYPE_VEC2, { TYPE_IVEC2, TYPE_VOID }, { "x" }, TAG_GLOBAL, true },
- { "intBitsToFloat", TYPE_VEC3, { TYPE_IVEC3, TYPE_VOID }, { "x" }, TAG_GLOBAL, true },
- { "intBitsToFloat", TYPE_VEC4, { TYPE_IVEC4, TYPE_VOID }, { "x" }, TAG_GLOBAL, true },
+ { "intBitsToFloat", TYPE_FLOAT, { TYPE_INT, TYPE_VOID }, { "x" }, TAG_GLOBAL, false },
+ { "intBitsToFloat", TYPE_VEC2, { TYPE_IVEC2, TYPE_VOID }, { "x" }, TAG_GLOBAL, false },
+ { "intBitsToFloat", TYPE_VEC3, { TYPE_IVEC3, TYPE_VOID }, { "x" }, TAG_GLOBAL, false },
+ { "intBitsToFloat", TYPE_VEC4, { TYPE_IVEC4, TYPE_VOID }, { "x" }, TAG_GLOBAL, false },
// uintBitsToFloat
- { "uintBitsToFloat", TYPE_FLOAT, { TYPE_UINT, TYPE_VOID }, { "x" }, TAG_GLOBAL, true },
- { "uintBitsToFloat", TYPE_VEC2, { TYPE_UVEC2, TYPE_VOID }, { "x" }, TAG_GLOBAL, true },
- { "uintBitsToFloat", TYPE_VEC3, { TYPE_UVEC3, TYPE_VOID }, { "x" }, TAG_GLOBAL, true },
- { "uintBitsToFloat", TYPE_VEC4, { TYPE_UVEC4, TYPE_VOID }, { "x" }, TAG_GLOBAL, true },
+ { "uintBitsToFloat", TYPE_FLOAT, { TYPE_UINT, TYPE_VOID }, { "x" }, TAG_GLOBAL, false },
+ { "uintBitsToFloat", TYPE_VEC2, { TYPE_UVEC2, TYPE_VOID }, { "x" }, TAG_GLOBAL, false },
+ { "uintBitsToFloat", TYPE_VEC3, { TYPE_UVEC3, TYPE_VOID }, { "x" }, TAG_GLOBAL, false },
+ { "uintBitsToFloat", TYPE_VEC4, { TYPE_UVEC4, TYPE_VOID }, { "x" }, TAG_GLOBAL, false },
// Built-ins - geometric functions.
// length
@@ -2361,9 +2452,9 @@ const ShaderLanguage::BuiltinFuncDef ShaderLanguage::builtin_func_defs[] = {
{ "lessThan", TYPE_BVEC3, { TYPE_IVEC3, TYPE_IVEC3, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
{ "lessThan", TYPE_BVEC4, { TYPE_IVEC4, TYPE_IVEC4, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
- { "lessThan", TYPE_BVEC2, { TYPE_UVEC2, TYPE_UVEC2, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, true },
- { "lessThan", TYPE_BVEC3, { TYPE_UVEC3, TYPE_UVEC3, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, true },
- { "lessThan", TYPE_BVEC4, { TYPE_UVEC4, TYPE_UVEC4, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, true },
+ { "lessThan", TYPE_BVEC3, { TYPE_UVEC3, TYPE_UVEC3, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
+ { "lessThan", TYPE_BVEC4, { TYPE_UVEC4, TYPE_UVEC4, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
+ { "lessThan", TYPE_BVEC2, { TYPE_UVEC2, TYPE_UVEC2, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
// greaterThan
@@ -2375,9 +2466,9 @@ const ShaderLanguage::BuiltinFuncDef ShaderLanguage::builtin_func_defs[] = {
{ "greaterThan", TYPE_BVEC3, { TYPE_IVEC3, TYPE_IVEC3, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
{ "greaterThan", TYPE_BVEC4, { TYPE_IVEC4, TYPE_IVEC4, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
- { "greaterThan", TYPE_BVEC2, { TYPE_UVEC2, TYPE_UVEC2, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, true },
- { "greaterThan", TYPE_BVEC3, { TYPE_UVEC3, TYPE_UVEC3, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, true },
- { "greaterThan", TYPE_BVEC4, { TYPE_UVEC4, TYPE_UVEC4, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, true },
+ { "greaterThan", TYPE_BVEC2, { TYPE_UVEC2, TYPE_UVEC2, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
+ { "greaterThan", TYPE_BVEC3, { TYPE_UVEC3, TYPE_UVEC3, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
+ { "greaterThan", TYPE_BVEC4, { TYPE_UVEC4, TYPE_UVEC4, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
// lessThanEqual
@@ -2389,9 +2480,9 @@ const ShaderLanguage::BuiltinFuncDef ShaderLanguage::builtin_func_defs[] = {
{ "lessThanEqual", TYPE_BVEC3, { TYPE_IVEC3, TYPE_IVEC3, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
{ "lessThanEqual", TYPE_BVEC4, { TYPE_IVEC4, TYPE_IVEC4, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
- { "lessThanEqual", TYPE_BVEC2, { TYPE_UVEC2, TYPE_UVEC2, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, true },
- { "lessThanEqual", TYPE_BVEC3, { TYPE_UVEC3, TYPE_UVEC3, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, true },
- { "lessThanEqual", TYPE_BVEC4, { TYPE_UVEC4, TYPE_UVEC4, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, true },
+ { "lessThanEqual", TYPE_BVEC2, { TYPE_UVEC2, TYPE_UVEC2, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
+ { "lessThanEqual", TYPE_BVEC3, { TYPE_UVEC3, TYPE_UVEC3, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
+ { "lessThanEqual", TYPE_BVEC4, { TYPE_UVEC4, TYPE_UVEC4, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
// greaterThanEqual
@@ -2403,9 +2494,9 @@ const ShaderLanguage::BuiltinFuncDef ShaderLanguage::builtin_func_defs[] = {
{ "greaterThanEqual", TYPE_BVEC3, { TYPE_IVEC3, TYPE_IVEC3, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
{ "greaterThanEqual", TYPE_BVEC4, { TYPE_IVEC4, TYPE_IVEC4, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
- { "greaterThanEqual", TYPE_BVEC2, { TYPE_UVEC2, TYPE_UVEC2, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, true },
- { "greaterThanEqual", TYPE_BVEC3, { TYPE_UVEC3, TYPE_UVEC3, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, true },
- { "greaterThanEqual", TYPE_BVEC4, { TYPE_UVEC4, TYPE_UVEC4, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, true },
+ { "greaterThanEqual", TYPE_BVEC2, { TYPE_UVEC2, TYPE_UVEC2, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
+ { "greaterThanEqual", TYPE_BVEC3, { TYPE_UVEC3, TYPE_UVEC3, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
+ { "greaterThanEqual", TYPE_BVEC4, { TYPE_UVEC4, TYPE_UVEC4, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
// equal
@@ -2417,9 +2508,9 @@ const ShaderLanguage::BuiltinFuncDef ShaderLanguage::builtin_func_defs[] = {
{ "equal", TYPE_BVEC3, { TYPE_IVEC3, TYPE_IVEC3, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
{ "equal", TYPE_BVEC4, { TYPE_IVEC4, TYPE_IVEC4, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
- { "equal", TYPE_BVEC2, { TYPE_UVEC2, TYPE_UVEC2, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, true },
- { "equal", TYPE_BVEC3, { TYPE_UVEC3, TYPE_UVEC3, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, true },
- { "equal", TYPE_BVEC4, { TYPE_UVEC4, TYPE_UVEC4, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, true },
+ { "equal", TYPE_BVEC2, { TYPE_UVEC2, TYPE_UVEC2, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
+ { "equal", TYPE_BVEC3, { TYPE_UVEC3, TYPE_UVEC3, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
+ { "equal", TYPE_BVEC4, { TYPE_UVEC4, TYPE_UVEC4, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
{ "equal", TYPE_BVEC2, { TYPE_BVEC2, TYPE_BVEC2, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
{ "equal", TYPE_BVEC3, { TYPE_BVEC3, TYPE_BVEC3, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
@@ -2435,9 +2526,9 @@ const ShaderLanguage::BuiltinFuncDef ShaderLanguage::builtin_func_defs[] = {
{ "notEqual", TYPE_BVEC3, { TYPE_IVEC3, TYPE_IVEC3, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
{ "notEqual", TYPE_BVEC4, { TYPE_IVEC4, TYPE_IVEC4, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
- { "notEqual", TYPE_BVEC2, { TYPE_UVEC2, TYPE_UVEC2, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, true },
- { "notEqual", TYPE_BVEC3, { TYPE_UVEC3, TYPE_UVEC3, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, true },
- { "notEqual", TYPE_BVEC4, { TYPE_UVEC4, TYPE_UVEC4, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, true },
+ { "notEqual", TYPE_BVEC2, { TYPE_UVEC2, TYPE_UVEC2, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
+ { "notEqual", TYPE_BVEC3, { TYPE_UVEC3, TYPE_UVEC3, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
+ { "notEqual", TYPE_BVEC4, { TYPE_UVEC4, TYPE_UVEC4, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
{ "notEqual", TYPE_BVEC2, { TYPE_BVEC2, TYPE_BVEC2, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
{ "notEqual", TYPE_BVEC3, { TYPE_BVEC3, TYPE_BVEC3, TYPE_VOID }, { "a", "b" }, TAG_GLOBAL, false },
@@ -2464,38 +2555,38 @@ const ShaderLanguage::BuiltinFuncDef ShaderLanguage::builtin_func_defs[] = {
// Built-ins: texture functions.
// textureSize
- { "textureSize", TYPE_IVEC2, { TYPE_SAMPLER2D, TYPE_INT, TYPE_VOID }, { "sampler", "lod" }, TAG_GLOBAL, true },
- { "textureSize", TYPE_IVEC2, { TYPE_ISAMPLER2D, TYPE_INT, TYPE_VOID }, { "sampler", "lod" }, TAG_GLOBAL, true },
- { "textureSize", TYPE_IVEC2, { TYPE_USAMPLER2D, TYPE_INT, TYPE_VOID }, { "sampler", "lod" }, TAG_GLOBAL, true },
- { "textureSize", TYPE_IVEC3, { TYPE_SAMPLER2DARRAY, TYPE_INT, TYPE_VOID }, { "sampler", "lod" }, TAG_GLOBAL, true },
- { "textureSize", TYPE_IVEC3, { TYPE_ISAMPLER2DARRAY, TYPE_INT, TYPE_VOID }, { "sampler", "lod" }, TAG_GLOBAL, true },
- { "textureSize", TYPE_IVEC3, { TYPE_USAMPLER2DARRAY, TYPE_INT, TYPE_VOID }, { "sampler", "lod" }, TAG_GLOBAL, true },
- { "textureSize", TYPE_IVEC3, { TYPE_SAMPLER3D, TYPE_INT, TYPE_VOID }, { "sampler", "lod" }, TAG_GLOBAL, true },
- { "textureSize", TYPE_IVEC3, { TYPE_ISAMPLER3D, TYPE_INT, TYPE_VOID }, { "sampler", "lod" }, TAG_GLOBAL, true },
- { "textureSize", TYPE_IVEC3, { TYPE_USAMPLER3D, TYPE_INT, TYPE_VOID }, { "sampler", "lod" }, TAG_GLOBAL, true },
- { "textureSize", TYPE_IVEC2, { TYPE_SAMPLERCUBE, TYPE_INT, TYPE_VOID }, { "sampler", "lod" }, TAG_GLOBAL, true },
- { "textureSize", TYPE_IVEC2, { TYPE_SAMPLERCUBEARRAY, TYPE_INT, TYPE_VOID }, { "sampler", "lod" }, TAG_GLOBAL, true },
+ { "textureSize", TYPE_IVEC2, { TYPE_SAMPLER2D, TYPE_INT, TYPE_VOID }, { "sampler", "lod" }, TAG_GLOBAL, false },
+ { "textureSize", TYPE_IVEC2, { TYPE_ISAMPLER2D, TYPE_INT, TYPE_VOID }, { "sampler", "lod" }, TAG_GLOBAL, false },
+ { "textureSize", TYPE_IVEC2, { TYPE_USAMPLER2D, TYPE_INT, TYPE_VOID }, { "sampler", "lod" }, TAG_GLOBAL, false },
+ { "textureSize", TYPE_IVEC3, { TYPE_SAMPLER2DARRAY, TYPE_INT, TYPE_VOID }, { "sampler", "lod" }, TAG_GLOBAL, false },
+ { "textureSize", TYPE_IVEC3, { TYPE_ISAMPLER2DARRAY, TYPE_INT, TYPE_VOID }, { "sampler", "lod" }, TAG_GLOBAL, false },
+ { "textureSize", TYPE_IVEC3, { TYPE_USAMPLER2DARRAY, TYPE_INT, TYPE_VOID }, { "sampler", "lod" }, TAG_GLOBAL, false },
+ { "textureSize", TYPE_IVEC3, { TYPE_SAMPLER3D, TYPE_INT, TYPE_VOID }, { "sampler", "lod" }, TAG_GLOBAL, false },
+ { "textureSize", TYPE_IVEC3, { TYPE_ISAMPLER3D, TYPE_INT, TYPE_VOID }, { "sampler", "lod" }, TAG_GLOBAL, false },
+ { "textureSize", TYPE_IVEC3, { TYPE_USAMPLER3D, TYPE_INT, TYPE_VOID }, { "sampler", "lod" }, TAG_GLOBAL, false },
+ { "textureSize", TYPE_IVEC2, { TYPE_SAMPLERCUBE, TYPE_INT, TYPE_VOID }, { "sampler", "lod" }, TAG_GLOBAL, false },
+ { "textureSize", TYPE_IVEC2, { TYPE_SAMPLERCUBEARRAY, TYPE_INT, TYPE_VOID }, { "sampler", "lod" }, TAG_GLOBAL, false },
// texture
{ "texture", TYPE_VEC4, { TYPE_SAMPLER2D, TYPE_VEC2, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, false },
{ "texture", TYPE_VEC4, { TYPE_SAMPLER2D, TYPE_VEC2, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, false },
- { "texture", TYPE_UVEC4, { TYPE_USAMPLER2D, TYPE_VEC2, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, true },
- { "texture", TYPE_UVEC4, { TYPE_USAMPLER2D, TYPE_VEC2, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, true },
- { "texture", TYPE_IVEC4, { TYPE_ISAMPLER2D, TYPE_VEC2, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, true },
- { "texture", TYPE_IVEC4, { TYPE_ISAMPLER2D, TYPE_VEC2, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, true },
+ { "texture", TYPE_UVEC4, { TYPE_USAMPLER2D, TYPE_VEC2, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, false },
+ { "texture", TYPE_UVEC4, { TYPE_USAMPLER2D, TYPE_VEC2, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, false },
+ { "texture", TYPE_IVEC4, { TYPE_ISAMPLER2D, TYPE_VEC2, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, false },
+ { "texture", TYPE_IVEC4, { TYPE_ISAMPLER2D, TYPE_VEC2, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, false },
{ "texture", TYPE_VEC4, { TYPE_SAMPLER2DARRAY, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, false },
{ "texture", TYPE_VEC4, { TYPE_SAMPLER2DARRAY, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, false },
- { "texture", TYPE_UVEC4, { TYPE_USAMPLER2DARRAY, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, true },
- { "texture", TYPE_UVEC4, { TYPE_USAMPLER2DARRAY, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, true },
- { "texture", TYPE_IVEC4, { TYPE_ISAMPLER2DARRAY, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, true },
- { "texture", TYPE_IVEC4, { TYPE_ISAMPLER2DARRAY, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, true },
+ { "texture", TYPE_UVEC4, { TYPE_USAMPLER2DARRAY, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, false },
+ { "texture", TYPE_UVEC4, { TYPE_USAMPLER2DARRAY, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, false },
+ { "texture", TYPE_IVEC4, { TYPE_ISAMPLER2DARRAY, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, false },
+ { "texture", TYPE_IVEC4, { TYPE_ISAMPLER2DARRAY, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, false },
{ "texture", TYPE_VEC4, { TYPE_SAMPLER3D, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, false },
{ "texture", TYPE_VEC4, { TYPE_SAMPLER3D, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, false },
- { "texture", TYPE_UVEC4, { TYPE_USAMPLER3D, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, true },
- { "texture", TYPE_UVEC4, { TYPE_USAMPLER3D, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, true },
- { "texture", TYPE_IVEC4, { TYPE_ISAMPLER3D, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, true },
- { "texture", TYPE_IVEC4, { TYPE_ISAMPLER3D, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, true },
+ { "texture", TYPE_UVEC4, { TYPE_USAMPLER3D, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, false },
+ { "texture", TYPE_UVEC4, { TYPE_USAMPLER3D, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, false },
+ { "texture", TYPE_IVEC4, { TYPE_ISAMPLER3D, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, false },
+ { "texture", TYPE_IVEC4, { TYPE_ISAMPLER3D, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, false },
{ "texture", TYPE_VEC4, { TYPE_SAMPLERCUBE, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, false },
{ "texture", TYPE_VEC4, { TYPE_SAMPLERCUBE, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, false },
{ "texture", TYPE_VEC4, { TYPE_SAMPLERCUBEARRAY, TYPE_VEC4, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, false },
@@ -2503,119 +2594,119 @@ const ShaderLanguage::BuiltinFuncDef ShaderLanguage::builtin_func_defs[] = {
// textureProj
- { "textureProj", TYPE_VEC4, { TYPE_SAMPLER2D, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, true },
- { "textureProj", TYPE_VEC4, { TYPE_SAMPLER2D, TYPE_VEC4, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, true },
- { "textureProj", TYPE_VEC4, { TYPE_SAMPLER2D, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, true },
- { "textureProj", TYPE_VEC4, { TYPE_SAMPLER2D, TYPE_VEC4, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, true },
- { "textureProj", TYPE_IVEC4, { TYPE_ISAMPLER2D, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, true },
- { "textureProj", TYPE_IVEC4, { TYPE_ISAMPLER2D, TYPE_VEC4, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, true },
- { "textureProj", TYPE_IVEC4, { TYPE_ISAMPLER2D, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, true },
- { "textureProj", TYPE_IVEC4, { TYPE_ISAMPLER2D, TYPE_VEC4, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, true },
- { "textureProj", TYPE_UVEC4, { TYPE_USAMPLER2D, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, true },
- { "textureProj", TYPE_UVEC4, { TYPE_USAMPLER2D, TYPE_VEC4, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, true },
- { "textureProj", TYPE_UVEC4, { TYPE_USAMPLER2D, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, true },
- { "textureProj", TYPE_UVEC4, { TYPE_USAMPLER2D, TYPE_VEC4, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, true },
- { "textureProj", TYPE_VEC4, { TYPE_SAMPLER3D, TYPE_VEC4, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, true },
- { "textureProj", TYPE_VEC4, { TYPE_SAMPLER3D, TYPE_VEC4, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, true },
- { "textureProj", TYPE_IVEC4, { TYPE_ISAMPLER3D, TYPE_VEC4, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, true },
- { "textureProj", TYPE_IVEC4, { TYPE_ISAMPLER3D, TYPE_VEC4, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, true },
- { "textureProj", TYPE_UVEC4, { TYPE_USAMPLER3D, TYPE_VEC4, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, true },
- { "textureProj", TYPE_UVEC4, { TYPE_USAMPLER3D, TYPE_VEC4, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, true },
+ { "textureProj", TYPE_VEC4, { TYPE_SAMPLER2D, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, false },
+ { "textureProj", TYPE_VEC4, { TYPE_SAMPLER2D, TYPE_VEC4, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, false },
+ { "textureProj", TYPE_VEC4, { TYPE_SAMPLER2D, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, false },
+ { "textureProj", TYPE_VEC4, { TYPE_SAMPLER2D, TYPE_VEC4, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, false },
+ { "textureProj", TYPE_IVEC4, { TYPE_ISAMPLER2D, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, false },
+ { "textureProj", TYPE_IVEC4, { TYPE_ISAMPLER2D, TYPE_VEC4, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, false },
+ { "textureProj", TYPE_IVEC4, { TYPE_ISAMPLER2D, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, false },
+ { "textureProj", TYPE_IVEC4, { TYPE_ISAMPLER2D, TYPE_VEC4, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, false },
+ { "textureProj", TYPE_UVEC4, { TYPE_USAMPLER2D, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, false },
+ { "textureProj", TYPE_UVEC4, { TYPE_USAMPLER2D, TYPE_VEC4, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, false },
+ { "textureProj", TYPE_UVEC4, { TYPE_USAMPLER2D, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, false },
+ { "textureProj", TYPE_UVEC4, { TYPE_USAMPLER2D, TYPE_VEC4, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, false },
+ { "textureProj", TYPE_VEC4, { TYPE_SAMPLER3D, TYPE_VEC4, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, false },
+ { "textureProj", TYPE_VEC4, { TYPE_SAMPLER3D, TYPE_VEC4, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, false },
+ { "textureProj", TYPE_IVEC4, { TYPE_ISAMPLER3D, TYPE_VEC4, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, false },
+ { "textureProj", TYPE_IVEC4, { TYPE_ISAMPLER3D, TYPE_VEC4, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, false },
+ { "textureProj", TYPE_UVEC4, { TYPE_USAMPLER3D, TYPE_VEC4, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, false },
+ { "textureProj", TYPE_UVEC4, { TYPE_USAMPLER3D, TYPE_VEC4, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "bias" }, TAG_GLOBAL, false },
// textureLod
{ "textureLod", TYPE_VEC4, { TYPE_SAMPLER2D, TYPE_VEC2, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, false },
- { "textureLod", TYPE_IVEC4, { TYPE_ISAMPLER2D, TYPE_VEC2, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, true },
- { "textureLod", TYPE_UVEC4, { TYPE_USAMPLER2D, TYPE_VEC2, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, true },
+ { "textureLod", TYPE_IVEC4, { TYPE_ISAMPLER2D, TYPE_VEC2, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, false },
+ { "textureLod", TYPE_UVEC4, { TYPE_USAMPLER2D, TYPE_VEC2, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, false },
{ "textureLod", TYPE_VEC4, { TYPE_SAMPLER2DARRAY, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, false },
- { "textureLod", TYPE_IVEC4, { TYPE_ISAMPLER2DARRAY, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, true },
- { "textureLod", TYPE_UVEC4, { TYPE_USAMPLER2DARRAY, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, true },
+ { "textureLod", TYPE_IVEC4, { TYPE_ISAMPLER2DARRAY, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, false },
+ { "textureLod", TYPE_UVEC4, { TYPE_USAMPLER2DARRAY, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, false },
{ "textureLod", TYPE_VEC4, { TYPE_SAMPLER3D, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, false },
- { "textureLod", TYPE_IVEC4, { TYPE_ISAMPLER3D, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, true },
- { "textureLod", TYPE_UVEC4, { TYPE_USAMPLER3D, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, true },
+ { "textureLod", TYPE_IVEC4, { TYPE_ISAMPLER3D, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, false },
+ { "textureLod", TYPE_UVEC4, { TYPE_USAMPLER3D, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, false },
{ "textureLod", TYPE_VEC4, { TYPE_SAMPLERCUBE, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, false },
{ "textureLod", TYPE_VEC4, { TYPE_SAMPLERCUBEARRAY, TYPE_VEC4, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, false },
// texelFetch
- { "texelFetch", TYPE_VEC4, { TYPE_SAMPLER2D, TYPE_IVEC2, TYPE_INT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, true },
- { "texelFetch", TYPE_IVEC4, { TYPE_ISAMPLER2D, TYPE_IVEC2, TYPE_INT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, true },
- { "texelFetch", TYPE_UVEC4, { TYPE_USAMPLER2D, TYPE_IVEC2, TYPE_INT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, true },
- { "texelFetch", TYPE_VEC4, { TYPE_SAMPLER2DARRAY, TYPE_IVEC3, TYPE_INT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, true },
- { "texelFetch", TYPE_IVEC4, { TYPE_ISAMPLER2DARRAY, TYPE_IVEC3, TYPE_INT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, true },
- { "texelFetch", TYPE_UVEC4, { TYPE_USAMPLER2DARRAY, TYPE_IVEC3, TYPE_INT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, true },
- { "texelFetch", TYPE_VEC4, { TYPE_SAMPLER3D, TYPE_IVEC3, TYPE_INT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, true },
- { "texelFetch", TYPE_IVEC4, { TYPE_ISAMPLER3D, TYPE_IVEC3, TYPE_INT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, true },
- { "texelFetch", TYPE_UVEC4, { TYPE_USAMPLER3D, TYPE_IVEC3, TYPE_INT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, true },
+ { "texelFetch", TYPE_VEC4, { TYPE_SAMPLER2D, TYPE_IVEC2, TYPE_INT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, false },
+ { "texelFetch", TYPE_IVEC4, { TYPE_ISAMPLER2D, TYPE_IVEC2, TYPE_INT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, false },
+ { "texelFetch", TYPE_UVEC4, { TYPE_USAMPLER2D, TYPE_IVEC2, TYPE_INT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, false },
+ { "texelFetch", TYPE_VEC4, { TYPE_SAMPLER2DARRAY, TYPE_IVEC3, TYPE_INT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, false },
+ { "texelFetch", TYPE_IVEC4, { TYPE_ISAMPLER2DARRAY, TYPE_IVEC3, TYPE_INT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, false },
+ { "texelFetch", TYPE_UVEC4, { TYPE_USAMPLER2DARRAY, TYPE_IVEC3, TYPE_INT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, false },
+ { "texelFetch", TYPE_VEC4, { TYPE_SAMPLER3D, TYPE_IVEC3, TYPE_INT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, false },
+ { "texelFetch", TYPE_IVEC4, { TYPE_ISAMPLER3D, TYPE_IVEC3, TYPE_INT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, false },
+ { "texelFetch", TYPE_UVEC4, { TYPE_USAMPLER3D, TYPE_IVEC3, TYPE_INT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, false },
// textureProjLod
- { "textureProjLod", TYPE_VEC4, { TYPE_SAMPLER2D, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, true },
- { "textureProjLod", TYPE_VEC4, { TYPE_SAMPLER2D, TYPE_VEC4, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, true },
- { "textureProjLod", TYPE_IVEC4, { TYPE_ISAMPLER2D, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, true },
- { "textureProjLod", TYPE_IVEC4, { TYPE_ISAMPLER2D, TYPE_VEC4, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, true },
- { "textureProjLod", TYPE_UVEC4, { TYPE_USAMPLER2D, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, true },
- { "textureProjLod", TYPE_UVEC4, { TYPE_USAMPLER2D, TYPE_VEC4, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, true },
- { "textureProjLod", TYPE_VEC4, { TYPE_SAMPLER3D, TYPE_VEC4, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, true },
- { "textureProjLod", TYPE_IVEC4, { TYPE_ISAMPLER3D, TYPE_VEC4, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, true },
- { "textureProjLod", TYPE_UVEC4, { TYPE_USAMPLER3D, TYPE_VEC4, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, true },
+ { "textureProjLod", TYPE_VEC4, { TYPE_SAMPLER2D, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, false },
+ { "textureProjLod", TYPE_VEC4, { TYPE_SAMPLER2D, TYPE_VEC4, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, false },
+ { "textureProjLod", TYPE_IVEC4, { TYPE_ISAMPLER2D, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, false },
+ { "textureProjLod", TYPE_IVEC4, { TYPE_ISAMPLER2D, TYPE_VEC4, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, false },
+ { "textureProjLod", TYPE_UVEC4, { TYPE_USAMPLER2D, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, false },
+ { "textureProjLod", TYPE_UVEC4, { TYPE_USAMPLER2D, TYPE_VEC4, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, false },
+ { "textureProjLod", TYPE_VEC4, { TYPE_SAMPLER3D, TYPE_VEC4, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, false },
+ { "textureProjLod", TYPE_IVEC4, { TYPE_ISAMPLER3D, TYPE_VEC4, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, false },
+ { "textureProjLod", TYPE_UVEC4, { TYPE_USAMPLER3D, TYPE_VEC4, TYPE_FLOAT, TYPE_VOID }, { "sampler", "coords", "lod" }, TAG_GLOBAL, false },
// textureGrad
- { "textureGrad", TYPE_VEC4, { TYPE_SAMPLER2D, TYPE_VEC2, TYPE_VEC2, TYPE_VEC2, TYPE_VOID }, { "sampler", "coords", "dPdx", "dPdy" }, TAG_GLOBAL, true },
- { "textureGrad", TYPE_IVEC4, { TYPE_ISAMPLER2D, TYPE_VEC2, TYPE_VEC2, TYPE_VEC2, TYPE_VOID }, { "sampler", "coords", "dPdx", "dPdy" }, TAG_GLOBAL, true },
- { "textureGrad", TYPE_UVEC4, { TYPE_USAMPLER2D, TYPE_VEC2, TYPE_VEC2, TYPE_VEC2, TYPE_VOID }, { "sampler", "coords", "dPdx", "dPdy" }, TAG_GLOBAL, true },
- { "textureGrad", TYPE_VEC4, { TYPE_SAMPLER2DARRAY, TYPE_VEC3, TYPE_VEC2, TYPE_VEC2, TYPE_VOID }, { "sampler", "coords", "dPdx", "dPdy" }, TAG_GLOBAL, true },
- { "textureGrad", TYPE_IVEC4, { TYPE_ISAMPLER2DARRAY, TYPE_VEC3, TYPE_VEC2, TYPE_VEC2, TYPE_VOID }, { "sampler", "coords", "dPdx", "dPdy" }, TAG_GLOBAL, true },
- { "textureGrad", TYPE_UVEC4, { TYPE_USAMPLER2DARRAY, TYPE_VEC3, TYPE_VEC2, TYPE_VEC2, TYPE_VOID }, { "sampler", "coords", "dPdx", "dPdy" }, TAG_GLOBAL, true },
- { "textureGrad", TYPE_VEC4, { TYPE_SAMPLER3D, TYPE_VEC3, TYPE_VEC3, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords", "dPdx", "dPdy" }, TAG_GLOBAL, true },
- { "textureGrad", TYPE_IVEC4, { TYPE_ISAMPLER3D, TYPE_VEC3, TYPE_VEC3, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords", "dPdx", "dPdy" }, TAG_GLOBAL, true },
- { "textureGrad", TYPE_UVEC4, { TYPE_USAMPLER3D, TYPE_VEC3, TYPE_VEC3, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords", "dPdx", "dPdy" }, TAG_GLOBAL, true },
- { "textureGrad", TYPE_VEC4, { TYPE_SAMPLERCUBE, TYPE_VEC3, TYPE_VEC3, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords", "dPdx", "dPdy" }, TAG_GLOBAL, true },
- { "textureGrad", TYPE_VEC4, { TYPE_SAMPLERCUBEARRAY, TYPE_VEC4, TYPE_VEC3, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords", "dPdx", "dPdy" }, TAG_GLOBAL, true },
+ { "textureGrad", TYPE_VEC4, { TYPE_SAMPLER2D, TYPE_VEC2, TYPE_VEC2, TYPE_VEC2, TYPE_VOID }, { "sampler", "coords", "dPdx", "dPdy" }, TAG_GLOBAL, false },
+ { "textureGrad", TYPE_IVEC4, { TYPE_ISAMPLER2D, TYPE_VEC2, TYPE_VEC2, TYPE_VEC2, TYPE_VOID }, { "sampler", "coords", "dPdx", "dPdy" }, TAG_GLOBAL, false },
+ { "textureGrad", TYPE_UVEC4, { TYPE_USAMPLER2D, TYPE_VEC2, TYPE_VEC2, TYPE_VEC2, TYPE_VOID }, { "sampler", "coords", "dPdx", "dPdy" }, TAG_GLOBAL, false },
+ { "textureGrad", TYPE_VEC4, { TYPE_SAMPLER2DARRAY, TYPE_VEC3, TYPE_VEC2, TYPE_VEC2, TYPE_VOID }, { "sampler", "coords", "dPdx", "dPdy" }, TAG_GLOBAL, false },
+ { "textureGrad", TYPE_IVEC4, { TYPE_ISAMPLER2DARRAY, TYPE_VEC3, TYPE_VEC2, TYPE_VEC2, TYPE_VOID }, { "sampler", "coords", "dPdx", "dPdy" }, TAG_GLOBAL, false },
+ { "textureGrad", TYPE_UVEC4, { TYPE_USAMPLER2DARRAY, TYPE_VEC3, TYPE_VEC2, TYPE_VEC2, TYPE_VOID }, { "sampler", "coords", "dPdx", "dPdy" }, TAG_GLOBAL, false },
+ { "textureGrad", TYPE_VEC4, { TYPE_SAMPLER3D, TYPE_VEC3, TYPE_VEC3, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords", "dPdx", "dPdy" }, TAG_GLOBAL, false },
+ { "textureGrad", TYPE_IVEC4, { TYPE_ISAMPLER3D, TYPE_VEC3, TYPE_VEC3, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords", "dPdx", "dPdy" }, TAG_GLOBAL, false },
+ { "textureGrad", TYPE_UVEC4, { TYPE_USAMPLER3D, TYPE_VEC3, TYPE_VEC3, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords", "dPdx", "dPdy" }, TAG_GLOBAL, false },
+ { "textureGrad", TYPE_VEC4, { TYPE_SAMPLERCUBE, TYPE_VEC3, TYPE_VEC3, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords", "dPdx", "dPdy" }, TAG_GLOBAL, false },
+ { "textureGrad", TYPE_VEC4, { TYPE_SAMPLERCUBEARRAY, TYPE_VEC4, TYPE_VEC3, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords", "dPdx", "dPdy" }, TAG_GLOBAL, false },
// textureGather
- { "textureGather", TYPE_VEC4, { TYPE_SAMPLER2D, TYPE_VEC2, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, true },
- { "textureGather", TYPE_IVEC4, { TYPE_ISAMPLER2D, TYPE_VEC2, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, true },
- { "textureGather", TYPE_UVEC4, { TYPE_USAMPLER2D, TYPE_VEC2, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, true },
- { "textureGather", TYPE_VEC4, { TYPE_SAMPLER2D, TYPE_VEC2, TYPE_INT, TYPE_VOID }, { "sampler", "coords", "comp" }, TAG_GLOBAL, true },
- { "textureGather", TYPE_IVEC4, { TYPE_ISAMPLER2D, TYPE_VEC2, TYPE_INT, TYPE_VOID }, { "sampler", "coords", "comp" }, TAG_GLOBAL, true },
- { "textureGather", TYPE_UVEC4, { TYPE_USAMPLER2D, TYPE_VEC2, TYPE_INT, TYPE_VOID }, { "sampler", "coords", "comp" }, TAG_GLOBAL, true },
- { "textureGather", TYPE_VEC4, { TYPE_SAMPLER2DARRAY, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, true },
- { "textureGather", TYPE_IVEC4, { TYPE_ISAMPLER2DARRAY, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, true },
- { "textureGather", TYPE_UVEC4, { TYPE_USAMPLER2DARRAY, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, true },
- { "textureGather", TYPE_VEC4, { TYPE_SAMPLER2DARRAY, TYPE_VEC3, TYPE_INT, TYPE_VOID }, { "sampler", "coords", "comp" }, TAG_GLOBAL, true },
- { "textureGather", TYPE_IVEC4, { TYPE_ISAMPLER2DARRAY, TYPE_VEC3, TYPE_INT, TYPE_VOID }, { "sampler", "coords", "comp" }, TAG_GLOBAL, true },
- { "textureGather", TYPE_UVEC4, { TYPE_USAMPLER2DARRAY, TYPE_VEC3, TYPE_INT, TYPE_VOID }, { "sampler", "coords", "comp" }, TAG_GLOBAL, true },
- { "textureGather", TYPE_VEC4, { TYPE_SAMPLERCUBE, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, true },
- { "textureGather", TYPE_VEC4, { TYPE_SAMPLERCUBE, TYPE_VEC3, TYPE_INT, TYPE_VOID }, { "sampler", "coords", "comp" }, TAG_GLOBAL, true },
+ { "textureGather", TYPE_VEC4, { TYPE_SAMPLER2D, TYPE_VEC2, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, false },
+ { "textureGather", TYPE_IVEC4, { TYPE_ISAMPLER2D, TYPE_VEC2, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, false },
+ { "textureGather", TYPE_UVEC4, { TYPE_USAMPLER2D, TYPE_VEC2, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, false },
+ { "textureGather", TYPE_VEC4, { TYPE_SAMPLER2D, TYPE_VEC2, TYPE_INT, TYPE_VOID }, { "sampler", "coords", "comp" }, TAG_GLOBAL, false },
+ { "textureGather", TYPE_IVEC4, { TYPE_ISAMPLER2D, TYPE_VEC2, TYPE_INT, TYPE_VOID }, { "sampler", "coords", "comp" }, TAG_GLOBAL, false },
+ { "textureGather", TYPE_UVEC4, { TYPE_USAMPLER2D, TYPE_VEC2, TYPE_INT, TYPE_VOID }, { "sampler", "coords", "comp" }, TAG_GLOBAL, false },
+ { "textureGather", TYPE_VEC4, { TYPE_SAMPLER2DARRAY, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, false },
+ { "textureGather", TYPE_IVEC4, { TYPE_ISAMPLER2DARRAY, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, false },
+ { "textureGather", TYPE_UVEC4, { TYPE_USAMPLER2DARRAY, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, false },
+ { "textureGather", TYPE_VEC4, { TYPE_SAMPLER2DARRAY, TYPE_VEC3, TYPE_INT, TYPE_VOID }, { "sampler", "coords", "comp" }, TAG_GLOBAL, false },
+ { "textureGather", TYPE_IVEC4, { TYPE_ISAMPLER2DARRAY, TYPE_VEC3, TYPE_INT, TYPE_VOID }, { "sampler", "coords", "comp" }, TAG_GLOBAL, false },
+ { "textureGather", TYPE_UVEC4, { TYPE_USAMPLER2DARRAY, TYPE_VEC3, TYPE_INT, TYPE_VOID }, { "sampler", "coords", "comp" }, TAG_GLOBAL, false },
+ { "textureGather", TYPE_VEC4, { TYPE_SAMPLERCUBE, TYPE_VEC3, TYPE_VOID }, { "sampler", "coords" }, TAG_GLOBAL, false },
+ { "textureGather", TYPE_VEC4, { TYPE_SAMPLERCUBE, TYPE_VEC3, TYPE_INT, TYPE_VOID }, { "sampler", "coords", "comp" }, TAG_GLOBAL, false },
// dFdx
- { "dFdx", TYPE_FLOAT, { TYPE_FLOAT, TYPE_VOID }, { "p" }, TAG_GLOBAL, true },
- { "dFdx", TYPE_VEC2, { TYPE_VEC2, TYPE_VOID }, { "p" }, TAG_GLOBAL, true },
- { "dFdx", TYPE_VEC3, { TYPE_VEC3, TYPE_VOID }, { "p" }, TAG_GLOBAL, true },
- { "dFdx", TYPE_VEC4, { TYPE_VEC4, TYPE_VOID }, { "p" }, TAG_GLOBAL, true },
+ { "dFdx", TYPE_FLOAT, { TYPE_FLOAT, TYPE_VOID }, { "p" }, TAG_GLOBAL, false },
+ { "dFdx", TYPE_VEC2, { TYPE_VEC2, TYPE_VOID }, { "p" }, TAG_GLOBAL, false },
+ { "dFdx", TYPE_VEC3, { TYPE_VEC3, TYPE_VOID }, { "p" }, TAG_GLOBAL, false },
+ { "dFdx", TYPE_VEC4, { TYPE_VEC4, TYPE_VOID }, { "p" }, TAG_GLOBAL, false },
// dFdy
- { "dFdy", TYPE_FLOAT, { TYPE_FLOAT, TYPE_VOID }, { "p" }, TAG_GLOBAL, true },
- { "dFdy", TYPE_VEC2, { TYPE_VEC2, TYPE_VOID }, { "p" }, TAG_GLOBAL, true },
- { "dFdy", TYPE_VEC3, { TYPE_VEC3, TYPE_VOID }, { "p" }, TAG_GLOBAL, true },
- { "dFdy", TYPE_VEC4, { TYPE_VEC4, TYPE_VOID }, { "p" }, TAG_GLOBAL, true },
+ { "dFdy", TYPE_FLOAT, { TYPE_FLOAT, TYPE_VOID }, { "p" }, TAG_GLOBAL, false },
+ { "dFdy", TYPE_VEC2, { TYPE_VEC2, TYPE_VOID }, { "p" }, TAG_GLOBAL, false },
+ { "dFdy", TYPE_VEC3, { TYPE_VEC3, TYPE_VOID }, { "p" }, TAG_GLOBAL, false },
+ { "dFdy", TYPE_VEC4, { TYPE_VEC4, TYPE_VOID }, { "p" }, TAG_GLOBAL, false },
// fwidth
- { "fwidth", TYPE_FLOAT, { TYPE_FLOAT, TYPE_VOID }, { "p" }, TAG_GLOBAL, true },
- { "fwidth", TYPE_VEC2, { TYPE_VEC2, TYPE_VOID }, { "p" }, TAG_GLOBAL, true },
- { "fwidth", TYPE_VEC3, { TYPE_VEC3, TYPE_VOID }, { "p" }, TAG_GLOBAL, true },
- { "fwidth", TYPE_VEC4, { TYPE_VEC4, TYPE_VOID }, { "p" }, TAG_GLOBAL, true },
+ { "fwidth", TYPE_FLOAT, { TYPE_FLOAT, TYPE_VOID }, { "p" }, TAG_GLOBAL, false },
+ { "fwidth", TYPE_VEC2, { TYPE_VEC2, TYPE_VOID }, { "p" }, TAG_GLOBAL, false },
+ { "fwidth", TYPE_VEC3, { TYPE_VEC3, TYPE_VOID }, { "p" }, TAG_GLOBAL, false },
+ { "fwidth", TYPE_VEC4, { TYPE_VEC4, TYPE_VOID }, { "p" }, TAG_GLOBAL, false },
// Sub-functions.
// array
- { "length", TYPE_INT, { TYPE_VOID }, { "" }, TAG_ARRAY, true },
+ { "length", TYPE_INT, { TYPE_VOID }, { "" }, TAG_ARRAY, false },
// Modern functions.
// fma
@@ -2627,17 +2718,17 @@ const ShaderLanguage::BuiltinFuncDef ShaderLanguage::builtin_func_defs[] = {
// Packing/Unpacking functions.
- { "packHalf2x16", TYPE_UINT, { TYPE_VEC2, TYPE_VOID }, { "v" }, TAG_GLOBAL, true },
- { "packUnorm2x16", TYPE_UINT, { TYPE_VEC2, TYPE_VOID }, { "v" }, TAG_GLOBAL, true },
- { "packSnorm2x16", TYPE_UINT, { TYPE_VEC2, TYPE_VOID }, { "v" }, TAG_GLOBAL, true },
- { "packUnorm4x8", TYPE_UINT, { TYPE_VEC4, TYPE_VOID }, { "v" }, TAG_GLOBAL, true },
- { "packSnorm4x8", TYPE_UINT, { TYPE_VEC4, TYPE_VOID }, { "v" }, TAG_GLOBAL, true },
+ { "packHalf2x16", TYPE_UINT, { TYPE_VEC2, TYPE_VOID }, { "v" }, TAG_GLOBAL, false },
+ { "packUnorm2x16", TYPE_UINT, { TYPE_VEC2, TYPE_VOID }, { "v" }, TAG_GLOBAL, false },
+ { "packSnorm2x16", TYPE_UINT, { TYPE_VEC2, TYPE_VOID }, { "v" }, TAG_GLOBAL, false },
+ { "packUnorm4x8", TYPE_UINT, { TYPE_VEC4, TYPE_VOID }, { "v" }, TAG_GLOBAL, false },
+ { "packSnorm4x8", TYPE_UINT, { TYPE_VEC4, TYPE_VOID }, { "v" }, TAG_GLOBAL, false },
- { "unpackHalf2x16", TYPE_VEC2, { TYPE_UINT, TYPE_VOID }, { "v" }, TAG_GLOBAL, true },
- { "unpackUnorm2x16", TYPE_VEC2, { TYPE_UINT, TYPE_VOID }, { "v" }, TAG_GLOBAL, true },
- { "unpackSnorm2x16", TYPE_VEC2, { TYPE_UINT, TYPE_VOID }, { "v" }, TAG_GLOBAL, true },
- { "unpackUnorm4x8", TYPE_VEC4, { TYPE_UINT, TYPE_VOID }, { "v" }, TAG_GLOBAL, true },
- { "unpackSnorm4x8", TYPE_VEC4, { TYPE_UINT, TYPE_VOID }, { "v" }, TAG_GLOBAL, true },
+ { "unpackHalf2x16", TYPE_VEC2, { TYPE_UINT, TYPE_VOID }, { "v" }, TAG_GLOBAL, false },
+ { "unpackUnorm2x16", TYPE_VEC2, { TYPE_UINT, TYPE_VOID }, { "v" }, TAG_GLOBAL, false },
+ { "unpackSnorm2x16", TYPE_VEC2, { TYPE_UINT, TYPE_VOID }, { "v" }, TAG_GLOBAL, false },
+ { "unpackUnorm4x8", TYPE_VEC4, { TYPE_UINT, TYPE_VOID }, { "v" }, TAG_GLOBAL, false },
+ { "unpackSnorm4x8", TYPE_VEC4, { TYPE_UINT, TYPE_VOID }, { "v" }, TAG_GLOBAL, false },
// bitfieldExtract
@@ -6562,10 +6653,6 @@ Error ShaderLanguage::_parse_block(BlockNode *p_block, const FunctionInfo &p_fun
DataType type = is_struct ? TYPE_STRUCT : get_token_datatype(tk.type);
- if (_validate_datatype(type) != OK) {
- return ERR_PARSE_ERROR;
- }
-
if (precision != PRECISION_DEFAULT && _validate_precision(type, precision) != OK) {
return ERR_PARSE_ERROR;
}
@@ -6662,11 +6749,6 @@ Error ShaderLanguage::_parse_block(BlockNode *p_block, const FunctionInfo &p_fun
tk = _get_token();
if (tk.type == TK_BRACKET_OPEN) {
- if (RenderingServer::get_singleton()->is_low_end() && is_const) {
- _set_error(RTR("Local const arrays are only supported on high-end platforms."));
- return ERR_PARSE_ERROR;
- }
-
Error error = _parse_array_size(p_block, p_function_info, false, &decl.size_expression, &var.array_size, &unknown_size);
if (error != OK) {
return error;
@@ -6686,11 +6768,6 @@ Error ShaderLanguage::_parse_block(BlockNode *p_block, const FunctionInfo &p_fun
bool full_def = false;
if (tk.type == TK_OP_ASSIGN) {
- if (RenderingServer::get_singleton()->is_low_end()) {
- _set_error(RTR("Array initialization is only supported on high-end platforms."));
- return ERR_PARSE_ERROR;
- }
-
TkPos prev_pos = _get_tkpos();
tk = _get_token();
@@ -6997,11 +7074,6 @@ Error ShaderLanguage::_parse_block(BlockNode *p_block, const FunctionInfo &p_fun
_set_tkpos(pos); //rollback
}
} else if (tk.type == TK_CF_SWITCH) {
- if (RenderingServer::get_singleton()->is_low_end()) {
- _set_error(vformat(RTR("The '%s' operator is only supported on high-end platforms."), "switch"));
- return ERR_PARSE_ERROR;
- }
-
// switch() {}
tk = _get_token();
if (tk.type != TK_PARENTHESIS_OPEN) {
@@ -7605,35 +7677,6 @@ Error ShaderLanguage::_validate_precision(DataType p_type, DataPrecision p_preci
return OK;
}
-Error ShaderLanguage::_validate_datatype(DataType p_type) {
- if (RenderingServer::get_singleton()->is_low_end()) {
- bool invalid_type = false;
-
- switch (p_type) {
- case TYPE_UINT:
- case TYPE_UVEC2:
- case TYPE_UVEC3:
- case TYPE_UVEC4:
- case TYPE_ISAMPLER2D:
- case TYPE_USAMPLER2D:
- case TYPE_ISAMPLER3D:
- case TYPE_USAMPLER3D:
- case TYPE_USAMPLER2DARRAY:
- case TYPE_ISAMPLER2DARRAY:
- invalid_type = true;
- break;
- default:
- break;
- }
-
- if (invalid_type) {
- _set_error(vformat(RTR("The \"%s\" type is only supported on high-end platforms."), get_datatype_name(p_type)));
- return ERR_UNAVAILABLE;
- }
- }
- return OK;
-}
-
Error ShaderLanguage::_parse_shader(const HashMap<StringName, FunctionInfo> &p_functions, const Vector<ModeInfo> &p_render_modes, const HashSet<String> &p_shader_types) {
Token tk = _get_token();
TkPos prev_pos;
@@ -7970,11 +8013,11 @@ Error ShaderLanguage::_parse_shader(const HashMap<StringName, FunctionInfo> &p_f
[[fallthrough]];
case TK_UNIFORM:
case TK_VARYING: {
- bool uniform = tk.type == TK_UNIFORM;
+ bool is_uniform = tk.type == TK_UNIFORM;
#ifdef DEBUG_ENABLED
keyword_completion_context = CF_UNSPECIFIED;
#endif // DEBUG_ENABLED
- if (!uniform) {
+ if (!is_uniform) {
if (shader_type_identifier == "particles" || shader_type_identifier == "sky" || shader_type_identifier == "fog") {
_set_error(vformat(RTR("Varyings cannot be used in '%s' shaders."), shader_type_identifier));
return ERR_PARSE_ERROR;
@@ -7991,7 +8034,7 @@ Error ShaderLanguage::_parse_shader(const HashMap<StringName, FunctionInfo> &p_f
bool temp_error = false;
uint32_t datatype_flag;
- if (!uniform) {
+ if (!is_uniform) {
datatype_flag = CF_VARYING_TYPE;
keyword_completion_context = CF_INTERPOLATION_QUALIFIER | CF_PRECISION_MODIFIER | datatype_flag;
@@ -8019,7 +8062,7 @@ Error ShaderLanguage::_parse_shader(const HashMap<StringName, FunctionInfo> &p_f
#endif // DEBUG_ENABLED
if (is_token_interpolation(tk.type)) {
- if (uniform) {
+ if (is_uniform) {
_set_error(RTR("Interpolation qualifiers are not supported for uniforms."));
#ifdef DEBUG_ENABLED
temp_error = true;
@@ -8065,7 +8108,7 @@ Error ShaderLanguage::_parse_shader(const HashMap<StringName, FunctionInfo> &p_f
}
if (shader->structs.has(tk.text)) {
- if (uniform) {
+ if (is_uniform) {
_set_error(vformat(RTR("The '%s' data type is not supported for uniforms."), "struct"));
return ERR_PARSE_ERROR;
} else {
@@ -8090,7 +8133,7 @@ Error ShaderLanguage::_parse_shader(const HashMap<StringName, FunctionInfo> &p_f
return ERR_PARSE_ERROR;
}
- if (!uniform && (type < TYPE_FLOAT || type > TYPE_MAT4)) {
+ if (!is_uniform && (type < TYPE_FLOAT || type > TYPE_MAT4)) {
_set_error(RTR("Invalid type for varying, only 'float', 'vec2', 'vec3', 'vec4', 'mat2', 'mat3', 'mat4', or arrays of these types are allowed."));
return ERR_PARSE_ERROR;
}
@@ -8131,7 +8174,7 @@ Error ShaderLanguage::_parse_shader(const HashMap<StringName, FunctionInfo> &p_f
return ERR_PARSE_ERROR;
}
- if (uniform) {
+ if (is_uniform) {
if (uniform_scope == ShaderNode::Uniform::SCOPE_GLOBAL && Engine::get_singleton()->is_editor_hint()) { // Type checking for global uniforms is not allowed outside the editor.
//validate global uniform
DataType gvtype = global_var_get_type_func(name);
@@ -8145,16 +8188,16 @@ Error ShaderLanguage::_parse_shader(const HashMap<StringName, FunctionInfo> &p_f
return ERR_PARSE_ERROR;
}
}
- ShaderNode::Uniform uniform2;
+ ShaderNode::Uniform uniform;
- uniform2.type = type;
- uniform2.scope = uniform_scope;
- uniform2.precision = precision;
- uniform2.array_size = array_size;
+ uniform.type = type;
+ uniform.scope = uniform_scope;
+ uniform.precision = precision;
+ uniform.array_size = array_size;
tk = _get_token();
if (tk.type == TK_BRACKET_OPEN) {
- Error error = _parse_array_size(nullptr, constants, true, nullptr, &uniform2.array_size, nullptr);
+ Error error = _parse_array_size(nullptr, constants, true, nullptr, &uniform.array_size, nullptr);
if (error != OK) {
return error;
}
@@ -8166,36 +8209,33 @@ Error ShaderLanguage::_parse_shader(const HashMap<StringName, FunctionInfo> &p_f
_set_error(vformat(RTR("The '%s' qualifier is not supported for sampler types."), "SCOPE_INSTANCE"));
return ERR_PARSE_ERROR;
}
- uniform2.texture_order = texture_uniforms++;
- uniform2.texture_binding = texture_binding;
- if (uniform2.array_size > 0) {
- texture_binding += uniform2.array_size;
+ uniform.texture_order = texture_uniforms++;
+ uniform.texture_binding = texture_binding;
+ if (uniform.array_size > 0) {
+ texture_binding += uniform.array_size;
} else {
++texture_binding;
}
- uniform2.order = -1;
- if (_validate_datatype(type) != OK) {
- return ERR_PARSE_ERROR;
- }
+ uniform.order = -1;
} else {
if (uniform_scope == ShaderNode::Uniform::SCOPE_INSTANCE && (type == TYPE_MAT2 || type == TYPE_MAT3 || type == TYPE_MAT4)) {
_set_error(vformat(RTR("The '%s' qualifier is not supported for matrix types."), "SCOPE_INSTANCE"));
return ERR_PARSE_ERROR;
}
- uniform2.texture_order = -1;
+ uniform.texture_order = -1;
if (uniform_scope != ShaderNode::Uniform::SCOPE_INSTANCE) {
- uniform2.order = uniforms++;
+ uniform.order = uniforms++;
#ifdef DEBUG_ENABLED
if (check_device_limit_warnings) {
- if (uniform2.array_size > 0) {
- int size = get_datatype_size(uniform2.type) * uniform2.array_size;
- int m = (16 * uniform2.array_size);
+ if (uniform.array_size > 0) {
+ int size = get_datatype_size(uniform.type) * uniform.array_size;
+ int m = (16 * uniform.array_size);
if ((size % m) != 0U) {
size += m - (size % m);
}
uniform_buffer_size += size;
} else {
- uniform_buffer_size += get_datatype_size(uniform2.type);
+ uniform_buffer_size += get_datatype_size(uniform.type);
}
if (uniform_buffer_exceeded_line == -1 && uniform_buffer_size > max_uniform_buffer_size) {
@@ -8206,7 +8246,7 @@ Error ShaderLanguage::_parse_shader(const HashMap<StringName, FunctionInfo> &p_f
}
}
- if (uniform2.array_size > 0) {
+ if (uniform.array_size > 0) {
if (uniform_scope == ShaderNode::Uniform::SCOPE_GLOBAL) {
_set_error(vformat(RTR("The '%s' qualifier is not supported for uniform arrays."), "SCOPE_GLOBAL"));
return ERR_PARSE_ERROR;
@@ -8222,7 +8262,7 @@ Error ShaderLanguage::_parse_shader(const HashMap<StringName, FunctionInfo> &p_f
if (tk.type == TK_COLON) {
completion_type = COMPLETION_HINT;
completion_base = type;
- completion_base_array = uniform2.array_size > 0;
+ completion_base_array = uniform.array_size > 0;
//hint
do {
@@ -8234,180 +8274,251 @@ Error ShaderLanguage::_parse_shader(const HashMap<StringName, FunctionInfo> &p_f
return ERR_PARSE_ERROR;
}
- if (uniform2.array_size > 0) {
+ if (uniform.array_size > 0) {
if (tk.type != TK_HINT_SOURCE_COLOR) {
_set_error(RTR("This hint is not supported for uniform arrays."));
return ERR_PARSE_ERROR;
}
}
- if (tk.type == TK_HINT_DEFAULT_WHITE_TEXTURE) {
- uniform2.hint = ShaderNode::Uniform::HINT_DEFAULT_WHITE;
- } else if (tk.type == TK_HINT_DEFAULT_BLACK_TEXTURE) {
- uniform2.hint = ShaderNode::Uniform::HINT_DEFAULT_BLACK;
- } else if (tk.type == TK_HINT_NORMAL_TEXTURE) {
- uniform2.hint = ShaderNode::Uniform::HINT_NORMAL;
- } else if (tk.type == TK_HINT_ROUGHNESS_NORMAL_TEXTURE) {
- uniform2.hint = ShaderNode::Uniform::HINT_ROUGHNESS_NORMAL;
- } else if (tk.type == TK_HINT_ROUGHNESS_R) {
- uniform2.hint = ShaderNode::Uniform::HINT_ROUGHNESS_R;
- } else if (tk.type == TK_HINT_ROUGHNESS_G) {
- uniform2.hint = ShaderNode::Uniform::HINT_ROUGHNESS_G;
- } else if (tk.type == TK_HINT_ROUGHNESS_B) {
- uniform2.hint = ShaderNode::Uniform::HINT_ROUGHNESS_B;
- } else if (tk.type == TK_HINT_ROUGHNESS_A) {
- uniform2.hint = ShaderNode::Uniform::HINT_ROUGHNESS_A;
- } else if (tk.type == TK_HINT_ROUGHNESS_GRAY) {
- uniform2.hint = ShaderNode::Uniform::HINT_ROUGHNESS_GRAY;
- } else if (tk.type == TK_HINT_ANISOTROPY_TEXTURE) {
- uniform2.hint = ShaderNode::Uniform::HINT_ANISOTROPY;
- } else if (tk.type == TK_HINT_SOURCE_COLOR) {
- if (type != TYPE_VEC3 && type != TYPE_VEC4 && type <= TYPE_MAT4) {
- _set_error(vformat(RTR("Source color hint is for '%s', '%s' or sampler types only."), "vec3", "vec4"));
- return ERR_PARSE_ERROR;
- }
- uniform2.hint = ShaderNode::Uniform::HINT_SOURCE_COLOR;
- } else if (tk.type == TK_HINT_RANGE) {
- uniform2.hint = ShaderNode::Uniform::HINT_RANGE;
- if (type != TYPE_FLOAT && type != TYPE_INT) {
- _set_error(vformat(RTR("Range hint is for '%s' and '%s' only."), "float", "int"));
- return ERR_PARSE_ERROR;
- }
+ ShaderNode::Uniform::Hint new_hint = ShaderNode::Uniform::HINT_NONE;
+ TextureFilter new_filter = FILTER_DEFAULT;
+ TextureRepeat new_repeat = REPEAT_DEFAULT;
- tk = _get_token();
- if (tk.type != TK_PARENTHESIS_OPEN) {
- _set_expected_after_error("(", "hint_range");
- return ERR_PARSE_ERROR;
- }
-
- tk = _get_token();
+ switch (tk.type) {
+ case TK_HINT_SOURCE_COLOR: {
+ if (type != TYPE_VEC3 && type != TYPE_VEC4 && !is_sampler_type(type)) {
+ _set_error(vformat(RTR("Source color hint is for '%s', '%s' or sampler types only."), "vec3", "vec4"));
+ return ERR_PARSE_ERROR;
+ }
- float sign = 1.0;
+ if (is_sampler_type(type)) {
+ if (uniform.use_color) {
+ _set_error(vformat(RTR("Duplicated hint: '%s'."), "source_color"));
+ return ERR_PARSE_ERROR;
+ }
+ uniform.use_color = true;
+ } else {
+ new_hint = ShaderNode::Uniform::HINT_SOURCE_COLOR;
+ }
+ } break;
+ case TK_HINT_DEFAULT_BLACK_TEXTURE: {
+ new_hint = ShaderNode::Uniform::HINT_DEFAULT_BLACK;
+ } break;
+ case TK_HINT_DEFAULT_WHITE_TEXTURE: {
+ new_hint = ShaderNode::Uniform::HINT_DEFAULT_WHITE;
+ } break;
+ case TK_HINT_NORMAL_TEXTURE: {
+ new_hint = ShaderNode::Uniform::HINT_NORMAL;
+ } break;
+ case TK_HINT_ROUGHNESS_NORMAL_TEXTURE: {
+ new_hint = ShaderNode::Uniform::HINT_ROUGHNESS_NORMAL;
+ } break;
+ case TK_HINT_ROUGHNESS_R: {
+ new_hint = ShaderNode::Uniform::HINT_ROUGHNESS_R;
+ } break;
+ case TK_HINT_ROUGHNESS_G: {
+ new_hint = ShaderNode::Uniform::HINT_ROUGHNESS_G;
+ } break;
+ case TK_HINT_ROUGHNESS_B: {
+ new_hint = ShaderNode::Uniform::HINT_ROUGHNESS_B;
+ } break;
+ case TK_HINT_ROUGHNESS_A: {
+ new_hint = ShaderNode::Uniform::HINT_ROUGHNESS_A;
+ } break;
+ case TK_HINT_ROUGHNESS_GRAY: {
+ new_hint = ShaderNode::Uniform::HINT_ROUGHNESS_GRAY;
+ } break;
+ case TK_HINT_ANISOTROPY_TEXTURE: {
+ new_hint = ShaderNode::Uniform::HINT_ANISOTROPY;
+ } break;
+ case TK_HINT_RANGE: {
+ if (type != TYPE_FLOAT && type != TYPE_INT) {
+ _set_error(vformat(RTR("Range hint is for '%s' and '%s' only."), "float", "int"));
+ return ERR_PARSE_ERROR;
+ }
- if (tk.type == TK_OP_SUB) {
- sign = -1.0;
tk = _get_token();
- }
-
- if (tk.type != TK_FLOAT_CONSTANT && !tk.is_integer_constant()) {
- _set_error(RTR("Expected an integer constant."));
- return ERR_PARSE_ERROR;
- }
+ if (tk.type != TK_PARENTHESIS_OPEN) {
+ _set_expected_after_error("(", "hint_range");
+ return ERR_PARSE_ERROR;
+ }
- uniform2.hint_range[0] = tk.constant;
- uniform2.hint_range[0] *= sign;
+ tk = _get_token();
- tk = _get_token();
+ float sign = 1.0;
- if (tk.type != TK_COMMA) {
- _set_error(RTR("Expected ',' after integer constant."));
- return ERR_PARSE_ERROR;
- }
+ if (tk.type == TK_OP_SUB) {
+ sign = -1.0;
+ tk = _get_token();
+ }
- tk = _get_token();
+ if (tk.type != TK_FLOAT_CONSTANT && !tk.is_integer_constant()) {
+ _set_error(RTR("Expected an integer constant."));
+ return ERR_PARSE_ERROR;
+ }
- sign = 1.0;
+ uniform.hint_range[0] = tk.constant;
+ uniform.hint_range[0] *= sign;
- if (tk.type == TK_OP_SUB) {
- sign = -1.0;
tk = _get_token();
- }
- if (tk.type != TK_FLOAT_CONSTANT && !tk.is_integer_constant()) {
- _set_error(RTR("Expected an integer constant after ','."));
- return ERR_PARSE_ERROR;
- }
+ if (tk.type != TK_COMMA) {
+ _set_error(RTR("Expected ',' after integer constant."));
+ return ERR_PARSE_ERROR;
+ }
- uniform2.hint_range[1] = tk.constant;
- uniform2.hint_range[1] *= sign;
+ tk = _get_token();
- tk = _get_token();
+ sign = 1.0;
- if (tk.type == TK_COMMA) {
- tk = _get_token();
+ if (tk.type == TK_OP_SUB) {
+ sign = -1.0;
+ tk = _get_token();
+ }
if (tk.type != TK_FLOAT_CONSTANT && !tk.is_integer_constant()) {
_set_error(RTR("Expected an integer constant after ','."));
return ERR_PARSE_ERROR;
}
- uniform2.hint_range[2] = tk.constant;
+ uniform.hint_range[1] = tk.constant;
+ uniform.hint_range[1] *= sign;
+
tk = _get_token();
- } else {
- if (type == TYPE_INT) {
- uniform2.hint_range[2] = 1;
+
+ if (tk.type == TK_COMMA) {
+ tk = _get_token();
+
+ if (tk.type != TK_FLOAT_CONSTANT && !tk.is_integer_constant()) {
+ _set_error(RTR("Expected an integer constant after ','."));
+ return ERR_PARSE_ERROR;
+ }
+
+ uniform.hint_range[2] = tk.constant;
+ tk = _get_token();
} else {
- uniform2.hint_range[2] = 0.001;
+ if (type == TYPE_INT) {
+ uniform.hint_range[2] = 1;
+ } else {
+ uniform.hint_range[2] = 0.001;
+ }
}
- }
- if (tk.type != TK_PARENTHESIS_CLOSE) {
- _set_expected_error(")");
- return ERR_PARSE_ERROR;
- }
- } else if (tk.type == TK_HINT_INSTANCE_INDEX) {
- if (custom_instance_index != -1) {
- _set_error(vformat(RTR("Can only specify '%s' once."), "instance_index"));
- return ERR_PARSE_ERROR;
- }
+ if (tk.type != TK_PARENTHESIS_CLOSE) {
+ _set_expected_error(")");
+ return ERR_PARSE_ERROR;
+ }
- tk = _get_token();
- if (tk.type != TK_PARENTHESIS_OPEN) {
- _set_expected_after_error("(", "instance_index");
- return ERR_PARSE_ERROR;
- }
+ new_hint = ShaderNode::Uniform::HINT_RANGE;
+ } break;
+ case TK_HINT_INSTANCE_INDEX: {
+ if (custom_instance_index != -1) {
+ _set_error(vformat(RTR("Can only specify '%s' once."), "instance_index"));
+ return ERR_PARSE_ERROR;
+ }
- tk = _get_token();
+ tk = _get_token();
+ if (tk.type != TK_PARENTHESIS_OPEN) {
+ _set_expected_after_error("(", "instance_index");
+ return ERR_PARSE_ERROR;
+ }
- if (tk.type == TK_OP_SUB) {
- _set_error(RTR("The instance index can't be negative."));
- return ERR_PARSE_ERROR;
- }
+ tk = _get_token();
- if (!tk.is_integer_constant()) {
- _set_error(RTR("Expected an integer constant."));
- return ERR_PARSE_ERROR;
- }
+ if (tk.type == TK_OP_SUB) {
+ _set_error(RTR("The instance index can't be negative."));
+ return ERR_PARSE_ERROR;
+ }
+
+ if (!tk.is_integer_constant()) {
+ _set_error(RTR("Expected an integer constant."));
+ return ERR_PARSE_ERROR;
+ }
+
+ custom_instance_index = tk.constant;
- custom_instance_index = tk.constant;
+ if (custom_instance_index >= MAX_INSTANCE_UNIFORM_INDICES) {
+ _set_error(vformat(RTR("Allowed instance uniform indices must be within [0..%d] range."), MAX_INSTANCE_UNIFORM_INDICES - 1));
+ return ERR_PARSE_ERROR;
+ }
+
+ tk = _get_token();
+
+ if (tk.type != TK_PARENTHESIS_CLOSE) {
+ _set_expected_error(")");
+ return ERR_PARSE_ERROR;
+ }
+ } break;
+ case TK_FILTER_NEAREST: {
+ new_filter = FILTER_NEAREST;
+ } break;
+ case TK_FILTER_LINEAR: {
+ new_filter = FILTER_LINEAR;
+ } break;
+ case TK_FILTER_NEAREST_MIPMAP: {
+ new_filter = FILTER_NEAREST_MIPMAP;
+ } break;
+ case TK_FILTER_LINEAR_MIPMAP: {
+ new_filter = FILTER_LINEAR_MIPMAP;
+ } break;
+ case TK_FILTER_NEAREST_MIPMAP_ANISOTROPIC: {
+ new_filter = FILTER_NEAREST_MIPMAP_ANISOTROPIC;
+ } break;
+ case TK_FILTER_LINEAR_MIPMAP_ANISOTROPIC: {
+ new_filter = FILTER_LINEAR_MIPMAP_ANISOTROPIC;
+ } break;
+ case TK_REPEAT_DISABLE: {
+ new_repeat = REPEAT_DISABLE;
+ } break;
+ case TK_REPEAT_ENABLE: {
+ new_repeat = REPEAT_ENABLE;
+ } break;
+ default:
+ break;
+ }
+ if (((new_filter != FILTER_DEFAULT || new_repeat != REPEAT_DEFAULT) || (new_hint != ShaderNode::Uniform::HINT_NONE && new_hint != ShaderNode::Uniform::HINT_SOURCE_COLOR && new_hint != ShaderNode::Uniform::HINT_RANGE)) && !is_sampler_type(type)) {
+ _set_error(RTR("This hint is only for sampler types."));
+ return ERR_PARSE_ERROR;
+ }
- if (custom_instance_index >= MAX_INSTANCE_UNIFORM_INDICES) {
- _set_error(vformat(RTR("Allowed instance uniform indices must be within [0..%d] range."), MAX_INSTANCE_UNIFORM_INDICES - 1));
+ if (new_hint != ShaderNode::Uniform::HINT_NONE) {
+ if (uniform.hint != ShaderNode::Uniform::HINT_NONE) {
+ if (uniform.hint == new_hint) {
+ _set_error(vformat(RTR("Duplicated hint: '%s'."), get_uniform_hint_name(new_hint)));
+ } else {
+ _set_error(vformat(RTR("Redefinition of hint: '%s'. The hint has already been set to '%s'."), get_uniform_hint_name(new_hint), get_uniform_hint_name(uniform.hint)));
+ }
return ERR_PARSE_ERROR;
+ } else {
+ uniform.hint = new_hint;
}
+ }
- tk = _get_token();
-
- if (tk.type != TK_PARENTHESIS_CLOSE) {
- _set_expected_error(")");
+ if (new_filter != FILTER_DEFAULT) {
+ if (uniform.filter != FILTER_DEFAULT) {
+ if (uniform.filter == new_filter) {
+ _set_error(vformat(RTR("Duplicated hint: '%s'."), get_texture_filter_name(new_filter)));
+ } else {
+ _set_error(vformat(RTR("Redefinition of hint: '%s'. The filter mode has already been set to '%s'."), get_texture_filter_name(new_filter), get_texture_filter_name(uniform.filter)));
+ }
return ERR_PARSE_ERROR;
+ } else {
+ uniform.filter = new_filter;
}
- } else if (tk.type == TK_FILTER_LINEAR) {
- uniform2.filter = FILTER_LINEAR;
- } else if (tk.type == TK_FILTER_NEAREST) {
- uniform2.filter = FILTER_NEAREST;
- } else if (tk.type == TK_FILTER_NEAREST_MIPMAP) {
- uniform2.filter = FILTER_NEAREST_MIPMAP;
- } else if (tk.type == TK_FILTER_LINEAR_MIPMAP) {
- uniform2.filter = FILTER_LINEAR_MIPMAP;
- } else if (tk.type == TK_FILTER_NEAREST_MIPMAP_ANISOTROPIC) {
- uniform2.filter = FILTER_NEAREST_MIPMAP_ANISOTROPIC;
- } else if (tk.type == TK_FILTER_LINEAR_MIPMAP_ANISOTROPIC) {
- uniform2.filter = FILTER_LINEAR_MIPMAP_ANISOTROPIC;
- } else if (tk.type == TK_REPEAT_DISABLE) {
- uniform2.repeat = REPEAT_DISABLE;
- } else if (tk.type == TK_REPEAT_ENABLE) {
- uniform2.repeat = REPEAT_ENABLE;
}
- if (uniform2.hint == ShaderNode::Uniform::HINT_SOURCE_COLOR) {
- if (type != TYPE_VEC3 && type != TYPE_VEC4 && !is_sampler_type(type)) {
- _set_error(vformat(RTR("This hint is only for '%s', '%s' or sampler types."), "vec3", "vec4"));
+ if (new_repeat != REPEAT_DEFAULT) {
+ if (uniform.repeat != REPEAT_DEFAULT) {
+ if (uniform.repeat == new_repeat) {
+ _set_error(vformat(RTR("Duplicated hint: '%s'."), get_texture_repeat_name(new_repeat)));
+ } else {
+ _set_error(vformat(RTR("Redefinition of hint: '%s'. The repeat mode has already been set to '%s'."), get_texture_repeat_name(new_repeat), get_texture_repeat_name(uniform.repeat)));
+ }
return ERR_PARSE_ERROR;
+ } else {
+ uniform.repeat = new_repeat;
}
- } else if (uniform2.hint != ShaderNode::Uniform::HINT_RANGE && uniform2.hint != ShaderNode::Uniform::HINT_NONE && !is_sampler_type(type)) {
- _set_error(RTR("This hint is only for sampler types."));
- return ERR_PARSE_ERROR;
}
tk = _get_token();
@@ -8417,9 +8528,9 @@ Error ShaderLanguage::_parse_shader(const HashMap<StringName, FunctionInfo> &p_f
if (uniform_scope == ShaderNode::Uniform::SCOPE_INSTANCE) {
if (custom_instance_index >= 0) {
- uniform2.instance_index = custom_instance_index;
+ uniform.instance_index = custom_instance_index;
} else {
- uniform2.instance_index = instance_index++;
+ uniform.instance_index = instance_index++;
if (instance_index > MAX_INSTANCE_UNIFORM_INDICES) {
_set_error(vformat(RTR("Too many '%s' uniforms in shader, maximum supported is %d."), "instance", MAX_INSTANCE_UNIFORM_INDICES));
return ERR_PARSE_ERROR;
@@ -8430,7 +8541,7 @@ Error ShaderLanguage::_parse_shader(const HashMap<StringName, FunctionInfo> &p_f
//reset scope for next uniform
if (tk.type == TK_OP_ASSIGN) {
- if (uniform2.array_size > 0) {
+ if (uniform.array_size > 0) {
_set_error(RTR("Setting default values to uniform arrays is not supported."));
return ERR_PARSE_ERROR;
}
@@ -8446,16 +8557,16 @@ Error ShaderLanguage::_parse_shader(const HashMap<StringName, FunctionInfo> &p_f
ConstantNode *cn = static_cast<ConstantNode *>(expr);
- uniform2.default_value.resize(cn->values.size());
+ uniform.default_value.resize(cn->values.size());
- if (!convert_constant(cn, uniform2.type, uniform2.default_value.ptrw())) {
- _set_error(vformat(RTR("Can't convert constant to '%s'."), get_datatype_name(uniform2.type)));
+ if (!convert_constant(cn, uniform.type, uniform.default_value.ptrw())) {
+ _set_error(vformat(RTR("Can't convert constant to '%s'."), get_datatype_name(uniform.type)));
return ERR_PARSE_ERROR;
}
tk = _get_token();
}
- shader->uniforms[name] = uniform2;
+ shader->uniforms[name] = uniform;
#ifdef DEBUG_ENABLED
if (check_warnings && HAS_WARNING(ShaderWarning::UNUSED_UNIFORM_FLAG)) {
used_uniforms.insert(name, Usage(tk_line));
@@ -8581,10 +8692,6 @@ Error ShaderLanguage::_parse_shader(const HashMap<StringName, FunctionInfo> &p_f
bool fixed_array_size = false;
if (tk.type == TK_BRACKET_OPEN) {
- if (is_constant && RenderingServer::get_singleton()->is_low_end()) {
- _set_error(RTR("Global constant arrays are only supported on high-end platforms."));
- return ERR_PARSE_ERROR;
- }
Error error = _parse_array_size(nullptr, constants, !is_constant, nullptr, &array_size, &unknown_size);
if (error != OK) {
return error;
@@ -8629,10 +8736,6 @@ Error ShaderLanguage::_parse_shader(const HashMap<StringName, FunctionInfo> &p_f
constant.array_size = array_size;
if (tk.type == TK_BRACKET_OPEN) {
- if (RenderingServer::get_singleton()->is_low_end()) {
- _set_error(RTR("Global const arrays are only supported on high-end platforms."));
- return ERR_PARSE_ERROR;
- }
Error error = _parse_array_size(nullptr, constants, false, nullptr, &constant.array_size, &unknown_size);
if (error != OK) {
return error;
@@ -9100,9 +9203,6 @@ Error ShaderLanguage::_parse_shader(const HashMap<StringName, FunctionInfo> &p_f
param_type = TYPE_STRUCT;
} else {
param_type = get_token_datatype(tk.type);
- if (_validate_datatype(param_type) != OK) {
- return ERR_PARSE_ERROR;
- }
if (param_type == TYPE_VOID) {
_set_error(RTR("Void type not allowed as argument."));
return ERR_PARSE_ERROR;
diff --git a/servers/rendering/shader_language.h b/servers/rendering/shader_language.h
index 5d216bd66e..2b147fbeb1 100644
--- a/servers/rendering/shader_language.h
+++ b/servers/rendering/shader_language.h
@@ -681,6 +681,7 @@ public:
Vector<ConstantNode::Value> default_value;
Scope scope = SCOPE_LOCAL;
Hint hint = HINT_NONE;
+ bool use_color = false;
TextureFilter filter = FILTER_DEFAULT;
TextureRepeat repeat = REPEAT_DEFAULT;
float hint_range[3];
@@ -756,6 +757,9 @@ public:
static DataPrecision get_token_precision(TokenType p_type);
static String get_precision_name(DataPrecision p_type);
static String get_datatype_name(DataType p_type);
+ static String get_uniform_hint_name(ShaderNode::Uniform::Hint p_hint);
+ static String get_texture_filter_name(TextureFilter p_filter);
+ static String get_texture_repeat_name(TextureRepeat p_repeat);
static bool is_token_nonvoid_datatype(TokenType p_type);
static bool is_token_operator(TokenType p_type);
static bool is_token_operator_assign(TokenType p_type);
@@ -1045,7 +1049,6 @@ private:
static bool is_const_suffix_lut_initialized;
Error _validate_precision(DataType p_type, DataPrecision p_precision);
- Error _validate_datatype(DataType p_type);
bool _compare_datatypes(DataType p_datatype_a, String p_datatype_name_a, int p_array_size_a, DataType p_datatype_b, String p_datatype_name_b, int p_array_size_b);
bool _compare_datatypes_in_nodes(Node *a, Node *b);
diff --git a/servers/rendering_server.cpp b/servers/rendering_server.cpp
index 366c011f86..9b407043fc 100644
--- a/servers/rendering_server.cpp
+++ b/servers/rendering_server.cpp
@@ -2211,6 +2211,7 @@ void RenderingServer::_bind_methods() {
ClassDB::bind_method(D_METHOD("viewport_set_shadow_atlas_quadrant_subdivision", "viewport", "quadrant", "subdivision"), &RenderingServer::viewport_set_shadow_atlas_quadrant_subdivision);
ClassDB::bind_method(D_METHOD("viewport_set_msaa", "viewport", "msaa"), &RenderingServer::viewport_set_msaa);
ClassDB::bind_method(D_METHOD("viewport_set_screen_space_aa", "viewport", "mode"), &RenderingServer::viewport_set_screen_space_aa);
+ ClassDB::bind_method(D_METHOD("viewport_set_use_taa", "viewport", "enable"), &RenderingServer::viewport_set_use_taa);
ClassDB::bind_method(D_METHOD("viewport_set_use_debanding", "viewport", "enable"), &RenderingServer::viewport_set_use_debanding);
ClassDB::bind_method(D_METHOD("viewport_set_use_occlusion_culling", "viewport", "enable"), &RenderingServer::viewport_set_use_occlusion_culling);
ClassDB::bind_method(D_METHOD("viewport_set_occlusion_rays_per_thread", "rays_per_thread"), &RenderingServer::viewport_set_occlusion_rays_per_thread);
@@ -2297,6 +2298,7 @@ void RenderingServer::_bind_methods() {
BIND_ENUM_CONSTANT(VIEWPORT_DEBUG_DRAW_CLUSTER_DECALS);
BIND_ENUM_CONSTANT(VIEWPORT_DEBUG_DRAW_CLUSTER_REFLECTION_PROBES);
BIND_ENUM_CONSTANT(VIEWPORT_DEBUG_DRAW_OCCLUDERS);
+ BIND_ENUM_CONSTANT(VIEWPORT_DEBUG_DRAW_MOTION_VECTORS);
/* SKY API */
@@ -2932,10 +2934,10 @@ void RenderingServer::init() {
ProjectSettings::get_singleton()->set_custom_property_info("rendering/anti_aliasing/screen_space_roughness_limiter/amount", PropertyInfo(Variant::FLOAT, "rendering/anti_aliasing/screen_space_roughness_limiter/amount", PROPERTY_HINT_RANGE, "0.01,4.0,0.01"));
ProjectSettings::get_singleton()->set_custom_property_info("rendering/anti_aliasing/screen_space_roughness_limiter/limit", PropertyInfo(Variant::FLOAT, "rendering/anti_aliasing/screen_space_roughness_limiter/limit", PROPERTY_HINT_RANGE, "0.01,1.0,0.01"));
- GLOBAL_DEF_RST("rendering/scaling_3d/mode", 0);
- GLOBAL_DEF_RST("rendering/scaling_3d/scale", 1.0);
- GLOBAL_DEF_RST("rendering/scaling_3d/fsr_sharpness", 0.2f);
- GLOBAL_DEF_RST("rendering/scaling_3d/fsr_mipmap_bias", 0.0f);
+ GLOBAL_DEF("rendering/scaling_3d/mode", 0);
+ GLOBAL_DEF("rendering/scaling_3d/scale", 1.0);
+ GLOBAL_DEF("rendering/scaling_3d/fsr_sharpness", 0.2f);
+ GLOBAL_DEF("rendering/scaling_3d/fsr_mipmap_bias", 0.0f);
ProjectSettings::get_singleton()->set_custom_property_info("rendering/scaling_3d/mode",
PropertyInfo(Variant::INT,
"rendering/scaling_3d/mode",
diff --git a/servers/rendering_server.h b/servers/rendering_server.h
index c6c4b9d275..ccef95f5f2 100644
--- a/servers/rendering_server.h
+++ b/servers/rendering_server.h
@@ -877,11 +877,13 @@ public:
virtual void viewport_set_screen_space_aa(RID p_viewport, ViewportScreenSpaceAA p_mode) = 0;
+ virtual void viewport_set_use_taa(RID p_viewport, bool p_use_taa) = 0;
+
virtual void viewport_set_use_debanding(RID p_viewport, bool p_use_debanding) = 0;
virtual void viewport_set_mesh_lod_threshold(RID p_viewport, float p_pixels) = 0;
- virtual void viewport_set_use_occlusion_culling(RID p_viewport, bool p_use_debanding) = 0;
+ virtual void viewport_set_use_occlusion_culling(RID p_viewport, bool p_use_occlusion_culling) = 0;
virtual void viewport_set_occlusion_rays_per_thread(int p_rays_per_thread) = 0;
enum ViewportOcclusionCullingBuildQuality {
@@ -933,6 +935,7 @@ public:
VIEWPORT_DEBUG_DRAW_CLUSTER_DECALS,
VIEWPORT_DEBUG_DRAW_CLUSTER_REFLECTION_PROBES,
VIEWPORT_DEBUG_DRAW_OCCLUDERS,
+ VIEWPORT_DEBUG_DRAW_MOTION_VECTORS,
};
virtual void viewport_set_debug_draw(RID p_viewport, ViewportDebugDraw p_draw) = 0;
@@ -941,6 +944,8 @@ public:
virtual double viewport_get_measured_render_time_cpu(RID p_viewport) const = 0;
virtual double viewport_get_measured_render_time_gpu(RID p_viewport) const = 0;
+ virtual RID viewport_find_from_screen_attachment(DisplayServer::WindowID p_id = DisplayServer::MAIN_WINDOW_ID) const = 0;
+
/* SKY API */
enum SkyMode {
diff --git a/servers/text/text_server_extension.cpp b/servers/text/text_server_extension.cpp
index 005cb68302..e9a558ac5f 100644
--- a/servers/text/text_server_extension.cpp
+++ b/servers/text/text_server_extension.cpp
@@ -55,6 +55,11 @@ void TextServerExtension::_bind_methods() {
GDVIRTUAL_BIND(font_set_data, "font_rid", "data");
GDVIRTUAL_BIND(font_set_data_ptr, "font_rid", "data_ptr", "data_size");
+ GDVIRTUAL_BIND(font_set_face_index, "font_rid", "face_index");
+ GDVIRTUAL_BIND(font_get_face_index, "font_rid");
+
+ GDVIRTUAL_BIND(font_get_face_count, "font_rid");
+
GDVIRTUAL_BIND(font_set_style, "font_rid", "style");
GDVIRTUAL_BIND(font_get_style, "font_rid");
@@ -413,6 +418,26 @@ void TextServerExtension::font_set_data_ptr(const RID &p_font_rid, const uint8_t
GDVIRTUAL_CALL(font_set_data_ptr, p_font_rid, p_data_ptr, p_data_size);
}
+void TextServerExtension::font_set_face_index(const RID &p_font_rid, int64_t p_index) {
+ GDVIRTUAL_CALL(font_set_face_index, p_font_rid, p_index);
+}
+
+int64_t TextServerExtension::font_get_face_index(const RID &p_font_rid) const {
+ int64_t ret;
+ if (GDVIRTUAL_CALL(font_get_face_index, p_font_rid, ret)) {
+ return ret;
+ }
+ return 0;
+}
+
+int64_t TextServerExtension::font_get_face_count(const RID &p_font_rid) const {
+ int64_t ret;
+ if (GDVIRTUAL_CALL(font_get_face_count, p_font_rid, ret)) {
+ return ret;
+ }
+ return 0;
+}
+
void TextServerExtension::font_set_style(const RID &p_font_rid, int64_t /*FontStyle*/ p_style) {
GDVIRTUAL_CALL(font_set_style, p_font_rid, p_style);
}
diff --git a/servers/text/text_server_extension.h b/servers/text/text_server_extension.h
index 7b7fc61ed7..9ca0939247 100644
--- a/servers/text/text_server_extension.h
+++ b/servers/text/text_server_extension.h
@@ -84,6 +84,14 @@ public:
GDVIRTUAL2(font_set_data, RID, const PackedByteArray &);
GDVIRTUAL3(font_set_data_ptr, RID, GDNativeConstPtr<const uint8_t>, int64_t);
+ virtual void font_set_face_index(const RID &p_font_rid, int64_t p_index) override;
+ virtual int64_t font_get_face_index(const RID &p_font_rid) const override;
+ GDVIRTUAL2(font_set_face_index, RID, int64_t);
+ GDVIRTUAL1RC(int64_t, font_get_face_index, RID);
+
+ virtual int64_t font_get_face_count(const RID &p_font_rid) const override;
+ GDVIRTUAL1RC(int64_t, font_get_face_count, RID);
+
virtual void font_set_style(const RID &p_font_rid, int64_t /*FontStyle*/ p_style) override;
virtual int64_t /*FontStyle*/ font_get_style(const RID &p_font_rid) const override;
GDVIRTUAL2(font_set_style, RID, int64_t);
diff --git a/servers/text_server.cpp b/servers/text_server.cpp
index 20e62037e6..fe5ade88a1 100644
--- a/servers/text_server.cpp
+++ b/servers/text_server.cpp
@@ -208,6 +208,11 @@ void TextServer::_bind_methods() {
ClassDB::bind_method(D_METHOD("font_set_data", "font_rid", "data"), &TextServer::font_set_data);
+ ClassDB::bind_method(D_METHOD("font_set_face_index", "font_rid", "face_index"), &TextServer::font_set_face_index);
+ ClassDB::bind_method(D_METHOD("font_get_face_index", "font_rid"), &TextServer::font_get_face_index);
+
+ ClassDB::bind_method(D_METHOD("font_get_face_count", "font_rid"), &TextServer::font_get_face_count);
+
ClassDB::bind_method(D_METHOD("font_set_style", "font_rid", "style"), &TextServer::font_set_style);
ClassDB::bind_method(D_METHOD("font_get_style", "font_rid"), &TextServer::font_get_style);
@@ -408,7 +413,7 @@ void TextServer::_bind_methods() {
ClassDB::bind_method(D_METHOD("shaped_text_get_ellipsis_glyphs", "shaped"), &TextServer::_shaped_text_get_ellipsis_glyphs_wrapper);
ClassDB::bind_method(D_METHOD("shaped_text_get_ellipsis_glyph_count", "shaped"), &TextServer::shaped_text_get_ellipsis_glyph_count);
- ClassDB::bind_method(D_METHOD("shaped_text_overrun_trim_to_width", "shaped", "width", "overrun_trim_flags"), &TextServer::shaped_text_overrun_trim_to_width, DEFVAL(0), DEFVAL(OVERRUN_NO_TRIMMING));
+ ClassDB::bind_method(D_METHOD("shaped_text_overrun_trim_to_width", "shaped", "width", "overrun_trim_flags"), &TextServer::shaped_text_overrun_trim_to_width, DEFVAL(0), DEFVAL(OVERRUN_NO_TRIM));
ClassDB::bind_method(D_METHOD("shaped_text_get_objects", "shaped"), &TextServer::shaped_text_get_objects);
ClassDB::bind_method(D_METHOD("shaped_text_get_object_rect", "shaped", "key"), &TextServer::shaped_text_get_object_rect);
@@ -465,6 +470,12 @@ void TextServer::_bind_methods() {
BIND_ENUM_CONSTANT(JUSTIFICATION_AFTER_LAST_TAB);
BIND_ENUM_CONSTANT(JUSTIFICATION_CONSTRAIN_ELLIPSIS);
+ /* AutowrapMode */
+ BIND_ENUM_CONSTANT(AUTOWRAP_OFF);
+ BIND_ENUM_CONSTANT(AUTOWRAP_ARBITRARY);
+ BIND_ENUM_CONSTANT(AUTOWRAP_WORD);
+ BIND_ENUM_CONSTANT(AUTOWRAP_WORD_SMART);
+
/* LineBreakFlag */
BIND_ENUM_CONSTANT(BREAK_NONE);
BIND_ENUM_CONSTANT(BREAK_MANDATORY);
@@ -472,8 +483,22 @@ void TextServer::_bind_methods() {
BIND_ENUM_CONSTANT(BREAK_GRAPHEME_BOUND);
BIND_ENUM_CONSTANT(BREAK_WORD_BOUND_ADAPTIVE);
- /* TextOverrunFlag */
+ /* VisibleCharactersBehavior */
+ BIND_ENUM_CONSTANT(VC_CHARS_BEFORE_SHAPING);
+ BIND_ENUM_CONSTANT(VC_CHARS_AFTER_SHAPING);
+ BIND_ENUM_CONSTANT(VC_GLYPHS_AUTO);
+ BIND_ENUM_CONSTANT(VC_GLYPHS_LTR);
+ BIND_ENUM_CONSTANT(VC_GLYPHS_RTL);
+
+ /* OverrunBehavior */
BIND_ENUM_CONSTANT(OVERRUN_NO_TRIMMING);
+ BIND_ENUM_CONSTANT(OVERRUN_TRIM_CHAR);
+ BIND_ENUM_CONSTANT(OVERRUN_TRIM_WORD);
+ BIND_ENUM_CONSTANT(OVERRUN_TRIM_ELLIPSIS);
+ BIND_ENUM_CONSTANT(OVERRUN_TRIM_WORD_ELLIPSIS);
+
+ /* TextOverrunFlag */
+ BIND_ENUM_CONSTANT(OVERRUN_NO_TRIM);
BIND_ENUM_CONSTANT(OVERRUN_TRIM);
BIND_ENUM_CONSTANT(OVERRUN_TRIM_WORD_ONLY);
BIND_ENUM_CONSTANT(OVERRUN_ADD_ELLIPSIS);
diff --git a/servers/text_server.h b/servers/text_server.h
index f96146a549..6339dde0ea 100644
--- a/servers/text_server.h
+++ b/servers/text_server.h
@@ -64,6 +64,21 @@ public:
JUSTIFICATION_CONSTRAIN_ELLIPSIS = 1 << 4,
};
+ enum VisibleCharactersBehavior {
+ VC_CHARS_BEFORE_SHAPING,
+ VC_CHARS_AFTER_SHAPING,
+ VC_GLYPHS_AUTO,
+ VC_GLYPHS_LTR,
+ VC_GLYPHS_RTL,
+ };
+
+ enum AutowrapMode {
+ AUTOWRAP_OFF,
+ AUTOWRAP_ARBITRARY,
+ AUTOWRAP_WORD,
+ AUTOWRAP_WORD_SMART
+ };
+
enum LineBreakFlag { // LineBreakFlag can be passed in the same value as the JustificationFlag, do not use the same values.
BREAK_NONE = 0,
BREAK_MANDATORY = 1 << 5,
@@ -72,8 +87,16 @@ public:
BREAK_WORD_BOUND_ADAPTIVE = 1 << 6 | 1 << 8,
};
+ enum OverrunBehavior {
+ OVERRUN_NO_TRIMMING,
+ OVERRUN_TRIM_CHAR,
+ OVERRUN_TRIM_WORD,
+ OVERRUN_TRIM_ELLIPSIS,
+ OVERRUN_TRIM_WORD_ELLIPSIS,
+ };
+
enum TextOverrunFlag {
- OVERRUN_NO_TRIMMING = 0,
+ OVERRUN_NO_TRIM = 0,
OVERRUN_TRIM = 1 << 0,
OVERRUN_TRIM_WORD_ONLY = 1 << 1,
OVERRUN_ADD_ELLIPSIS = 1 << 2,
@@ -189,6 +212,11 @@ public:
virtual void font_set_data(const RID &p_font_rid, const PackedByteArray &p_data) = 0;
virtual void font_set_data_ptr(const RID &p_font_rid, const uint8_t *p_data_ptr, int64_t p_data_size) = 0;
+ virtual void font_set_face_index(const RID &p_font_rid, int64_t p_index) = 0;
+ virtual int64_t font_get_face_index(const RID &p_font_rid) const = 0;
+
+ virtual int64_t font_get_face_count(const RID &p_font_rid) const = 0;
+
virtual void font_set_style(const RID &p_font_rid, int64_t /*FontStyle*/ p_style) = 0;
virtual int64_t /*FontStyle*/ font_get_style(const RID &p_font_rid) const = 0;
@@ -517,6 +545,9 @@ public:
#define TS TextServerManager::get_singleton()->get_primary_interface()
+VARIANT_ENUM_CAST(TextServer::VisibleCharactersBehavior);
+VARIANT_ENUM_CAST(TextServer::AutowrapMode);
+VARIANT_ENUM_CAST(TextServer::OverrunBehavior);
VARIANT_ENUM_CAST(TextServer::Direction);
VARIANT_ENUM_CAST(TextServer::Orientation);
VARIANT_ENUM_CAST(TextServer::JustificationFlag);
diff --git a/tests/core/math/test_astar.h b/tests/core/math/test_astar.h
index 1306d3c20e..9f5e98ef94 100644
--- a/tests/core/math/test_astar.h
+++ b/tests/core/math/test_astar.h
@@ -58,7 +58,7 @@ public:
}
// Disable heuristic completely.
- real_t _compute_cost(int p_from, int p_to) {
+ real_t _compute_cost(int64_t p_from, int64_t p_to) {
if (p_from == A && p_to == C) {
return 1000;
}
@@ -68,7 +68,7 @@ public:
TEST_CASE("[AStar3D] ABC path") {
ABCX abcx;
- Vector<int> path = abcx.get_id_path(ABCX::A, ABCX::C);
+ Vector<int64_t> path = abcx.get_id_path(ABCX::A, ABCX::C);
REQUIRE(path.size() == 3);
CHECK(path[0] == ABCX::A);
CHECK(path[1] == ABCX::B);
@@ -77,7 +77,7 @@ TEST_CASE("[AStar3D] ABC path") {
TEST_CASE("[AStar3D] ABCX path") {
ABCX abcx;
- Vector<int> path = abcx.get_id_path(ABCX::X, ABCX::C);
+ Vector<int64_t> path = abcx.get_id_path(ABCX::X, ABCX::C);
REQUIRE(path.size() == 4);
CHECK(path[0] == ABCX::X);
CHECK(path[1] == ABCX::A);
@@ -318,7 +318,7 @@ TEST_CASE("[Stress][AStar3D] Find paths") {
for (int u = 0; u < N; u++) {
for (int v = 0; v < N; v++) {
if (u != v) {
- Vector<int> route = a.get_id_path(u, v);
+ Vector<int64_t> route = a.get_id_path(u, v);
if (!Math::is_inf(d[u][v])) {
// Reachable.
if (route.size() == 0) {
diff --git a/tests/core/object/test_class_db.h b/tests/core/object/test_class_db.h
index 8aaca69d13..7ea9e16ff1 100644
--- a/tests/core/object/test_class_db.h
+++ b/tests/core/object/test_class_db.h
@@ -46,7 +46,7 @@ struct TypeReference {
struct ConstantData {
String name;
- int value = 0;
+ int64_t value = 0;
};
struct EnumData {
@@ -743,7 +743,7 @@ void add_exposed_classes(Context &r_context) {
TEST_FAIL_COND(String(constant_name).find("::") != -1,
"Enum constant contains '::', check bindings to remove the scope: '",
String(class_name), ".", String(enum_.name), ".", String(constant_name), "'.");
- int *value = class_info->constant_map.getptr(constant_name);
+ int64_t *value = class_info->constant_map.getptr(constant_name);
TEST_FAIL_COND(!value, "Missing enum constant value: '",
String(class_name), ".", String(enum_.name), ".", String(constant_name), "'.");
constants.erase(constant_name);
@@ -765,7 +765,7 @@ void add_exposed_classes(Context &r_context) {
TEST_FAIL_COND(constant_name.find("::") != -1,
"Constant contains '::', check bindings to remove the scope: '",
String(class_name), ".", constant_name, "'.");
- int *value = class_info->constant_map.getptr(StringName(E));
+ int64_t *value = class_info->constant_map.getptr(StringName(E));
TEST_FAIL_COND(!value, "Missing constant value: '", String(class_name), ".", String(constant_name), "'.");
ConstantData constant;
diff --git a/thirdparty/README.md b/thirdparty/README.md
index 31b19451b3..1cc272b1bf 100644
--- a/thirdparty/README.md
+++ b/thirdparty/README.md
@@ -62,7 +62,7 @@ Files extracted from upstream source:
## doctest
- Upstream: https://github.com/onqtam/doctest
-- Version: 2.4.8 (7b9885133108ae301ddd16e2651320f54cafeba7, 2022)
+- Version: 2.4.9 (b7c21ec5ceeadb4951b00396fc1e4642dd347e5f, 2022)
- License: MIT
Files extracted from upstream source:
@@ -118,7 +118,7 @@ will limit its functionality to IPv4 only.
## etcpak
- Upstream: https://github.com/wolfpld/etcpak
-- Version: git (f128369e64a5f4715de8125b325e4fe7debb5194, 2022)
+- Version: 1.0 (a77d5a37ddf48034cee8aeb9e8792a623c265b4c, 2022)
- License: BSD-3-Clause
Files extracted from upstream source:
@@ -167,6 +167,11 @@ Files extracted from upstream source:
- `include/` folder, minus the `dlg` subfolder
- `LICENSE.TXT` and `docs/FTL.TXT`
+Some changes have been made in order to prevent LTO from removing code.
+They are marked with `// -- GODOT start --` and `// -- GODOT end --`
+comments. Apply the patches in the `patches/` folder when syncing on newer upstream
+commits.
+
## glslang
@@ -249,6 +254,7 @@ Files generated from upstream source:
Files extracted from upstream source:
- `jpgd*.{c,h}`
+- `jpge*.{c,h}`
## libogg
@@ -340,7 +346,7 @@ File extracted from upstream release tarball:
## meshoptimizer
- Upstream: https://github.com/zeux/meshoptimizer
-- Version: git (8a7d69caa68f778cb559f1879b6beb7987c8c6b7, 2022)
+- Version: git (ea4558d1c0f217f1d67ed7fe0b07896ece88ae18, 2022)
- License: MIT
Files extracted from upstream repository:
@@ -432,6 +438,15 @@ Collection of single-file libraries used in Godot components.
* Upstream: https://github.com/Auburn/FastNoiseLite
* Version: git (6be3d6bf7fb408de341285f9ee8a29b67fd953f1, 2022) + custom changes
* License: MIT
+- `ok_color.h`
+ * Upstream: https://github.com/bottosson/bottosson.github.io/blob/master/misc/ok_color.h
+ * Version: git (d69831edb90ffdcd08b7e64da3c5405acd48ad2c, 2022)
+ * License: MIT
+ * Modifications: License included in header.
+- `ok_color_shader.h`
+ * https://www.shadertoy.com/view/7sK3D1
+ * Version: 2021-09-13
+ * License: MIT
- `pcg.{cpp,h}`
* Upstream: http://www.pcg-random.org
* Version: minimal C implementation, http://www.pcg-random.org/download.html
@@ -511,7 +526,7 @@ Patch files are provided in `oidn/patches/`.
## openxr
- Upstream: https://github.com/KhronosGroup/OpenXR-SDK
-- Version: 1.0.22 (458984d7f59d1ae6dc1b597d94b02e4f7132eaba, 2022)
+- Version: 1.0.23 (885a90f8934d84121344ba8e4aa5159d5b496e08, 2022)
- License: Apache 2.0
Files extracted from upstream source:
@@ -695,7 +710,7 @@ Files extracted from upstream source:
SDK release: https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/master/layers/generated/vk_enum_string_helper.h
`vk_mem_alloc.h` is taken from https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator
-Version: 3.0.1-development (2022-03-28), commit `5b598e0a359381d7e2a94149210a1b7642024ae5`
+Version: 3.0.1 (2022-06-10), commit `cfdc0f8775ab3258a3b9c4e47d8ce4b6f52a5441`
`vk_mem_alloc.cpp` is a Godot file and should be preserved on updates.
Patches in the `patches` directory should be re-applied after updates.
diff --git a/thirdparty/doctest/doctest.h b/thirdparty/doctest/doctest.h
index d25f526827..aa2724c738 100644
--- a/thirdparty/doctest/doctest.h
+++ b/thirdparty/doctest/doctest.h
@@ -48,7 +48,7 @@
#define DOCTEST_VERSION_MAJOR 2
#define DOCTEST_VERSION_MINOR 4
-#define DOCTEST_VERSION_PATCH 8
+#define DOCTEST_VERSION_PATCH 9
// util we need here
#define DOCTEST_TOSTR_IMPL(x) #x
@@ -68,6 +68,12 @@
// ideas for the version stuff are taken from here: https://github.com/cxxstuff/cxx_detect
+#ifdef _MSC_VER
+#define DOCTEST_CPLUSPLUS _MSVC_LANG
+#else
+#define DOCTEST_CPLUSPLUS __cplusplus
+#endif
+
#define DOCTEST_COMPILER(MAJOR, MINOR, PATCH) ((MAJOR)*10000000 + (MINOR)*100000 + (PATCH))
// GCC/Clang and GCC/MSVC are mutually exclusive, but Clang/MSVC are not because of clang-cl...
@@ -153,7 +159,6 @@
DOCTEST_CLANG_SUPPRESS_WARNING("-Wweak-vtables") \
DOCTEST_CLANG_SUPPRESS_WARNING("-Wpadded") \
DOCTEST_CLANG_SUPPRESS_WARNING("-Wmissing-prototypes") \
- DOCTEST_CLANG_SUPPRESS_WARNING("-Wunused-local-typedef") \
DOCTEST_CLANG_SUPPRESS_WARNING("-Wc++98-compat") \
DOCTEST_CLANG_SUPPRESS_WARNING("-Wc++98-compat-pedantic") \
\
@@ -164,7 +169,6 @@
DOCTEST_GCC_SUPPRESS_WARNING("-Wstrict-overflow") \
DOCTEST_GCC_SUPPRESS_WARNING("-Wstrict-aliasing") \
DOCTEST_GCC_SUPPRESS_WARNING("-Wmissing-declarations") \
- DOCTEST_GCC_SUPPRESS_WARNING("-Wunused-local-typedefs") \
DOCTEST_GCC_SUPPRESS_WARNING("-Wuseless-cast") \
DOCTEST_GCC_SUPPRESS_WARNING("-Wnoexcept") \
\
@@ -231,7 +235,8 @@ DOCTEST_MSVC_SUPPRESS_WARNING(4623) // default constructor was implicitly define
DOCTEST_MSVC_SUPPRESS_WARNING(4623) /* default constructor was implicitly deleted */ \
DOCTEST_MSVC_SUPPRESS_WARNING(5039) /* pointer to pot. throwing function passed to extern C */ \
DOCTEST_MSVC_SUPPRESS_WARNING(5045) /* Spectre mitigation for memory load */ \
- DOCTEST_MSVC_SUPPRESS_WARNING(5105) /* macro producing 'defined' has undefined behavior */
+ DOCTEST_MSVC_SUPPRESS_WARNING(5105) /* macro producing 'defined' has undefined behavior */ \
+ DOCTEST_MSVC_SUPPRESS_WARNING(4738) /* storing float result in memory, loss of performance */
#define DOCTEST_MAKE_STD_HEADERS_CLEAN_FROM_WARNINGS_ON_WALL_END DOCTEST_MSVC_SUPPRESS_WARNING_POP
@@ -266,7 +271,7 @@ DOCTEST_MSVC_SUPPRESS_WARNING(4623) // default constructor was implicitly define
#endif // DOCTEST_CONFIG_NO_WINDOWS_SEH
#if !defined(_WIN32) && !defined(__QNX__) && !defined(DOCTEST_CONFIG_POSIX_SIGNALS) && \
- !defined(__EMSCRIPTEN__)
+ !defined(__EMSCRIPTEN__) && !defined(__wasi__)
#define DOCTEST_CONFIG_POSIX_SIGNALS
#endif // _WIN32
#if defined(DOCTEST_CONFIG_NO_POSIX_SIGNALS) && defined(DOCTEST_CONFIG_POSIX_SIGNALS)
@@ -274,7 +279,8 @@ DOCTEST_MSVC_SUPPRESS_WARNING(4623) // default constructor was implicitly define
#endif // DOCTEST_CONFIG_NO_POSIX_SIGNALS
#ifndef DOCTEST_CONFIG_NO_EXCEPTIONS
-#if !defined(__cpp_exceptions) && !defined(__EXCEPTIONS) && !defined(_CPPUNWIND)
+#if !defined(__cpp_exceptions) && !defined(__EXCEPTIONS) && !defined(_CPPUNWIND) \
+ || defined(__wasi__)
#define DOCTEST_CONFIG_NO_EXCEPTIONS
#endif // no exceptions
#endif // DOCTEST_CONFIG_NO_EXCEPTIONS
@@ -289,6 +295,10 @@ DOCTEST_MSVC_SUPPRESS_WARNING(4623) // default constructor was implicitly define
#define DOCTEST_CONFIG_NO_TRY_CATCH_IN_ASSERTS
#endif // DOCTEST_CONFIG_NO_EXCEPTIONS && !DOCTEST_CONFIG_NO_TRY_CATCH_IN_ASSERTS
+#ifdef __wasi__
+#define DOCTEST_CONFIG_NO_MULTITHREADING
+#endif
+
#if defined(DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN) && !defined(DOCTEST_CONFIG_IMPLEMENT)
#define DOCTEST_CONFIG_IMPLEMENT
#endif // DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
@@ -316,6 +326,16 @@ DOCTEST_MSVC_SUPPRESS_WARNING(4623) // default constructor was implicitly define
#define DOCTEST_INTERFACE
#endif // DOCTEST_CONFIG_IMPLEMENTATION_IN_DLL
+// needed for extern template instantiations
+// see https://github.com/fmtlib/fmt/issues/2228
+#if DOCTEST_MSVC
+#define DOCTEST_INTERFACE_DECL
+#define DOCTEST_INTERFACE_DEF DOCTEST_INTERFACE
+#else // DOCTEST_MSVC
+#define DOCTEST_INTERFACE_DECL DOCTEST_INTERFACE
+#define DOCTEST_INTERFACE_DEF
+#endif // DOCTEST_MSVC
+
#define DOCTEST_EMPTY
#if DOCTEST_MSVC
@@ -351,8 +371,10 @@ DOCTEST_MSVC_SUPPRESS_WARNING(4623) // default constructor was implicitly define
#ifndef DOCTEST_CONSTEXPR
#if DOCTEST_MSVC && (DOCTEST_MSVC < DOCTEST_COMPILER(19, 0, 0))
#define DOCTEST_CONSTEXPR const
+#define DOCTEST_CONSTEXPR_FUNC inline
#else // DOCTEST_MSVC
#define DOCTEST_CONSTEXPR constexpr
+#define DOCTEST_CONSTEXPR_FUNC constexpr
#endif // DOCTEST_MSVC
#endif // DOCTEST_CONSTEXPR
@@ -360,6 +382,17 @@ DOCTEST_MSVC_SUPPRESS_WARNING(4623) // default constructor was implicitly define
// == FEATURE DETECTION END ========================================================================
// =================================================================================================
+#define DOCTEST_DECLARE_INTERFACE(name) \
+ virtual ~name(); \
+ name() = default; \
+ name(const name&) = delete; \
+ name(name&&) = delete; \
+ name& operator=(const name&) = delete; \
+ name& operator=(name&&) = delete;
+
+#define DOCTEST_DEFINE_INTERFACE(name) \
+ name::~name() = default;
+
// internal macros for string concatenation and anonymous variable name generation
#define DOCTEST_CAT_IMPL(s1, s2) s1##s2
#define DOCTEST_CAT(s1, s2) DOCTEST_CAT_IMPL(s1, s2)
@@ -382,17 +415,19 @@ DOCTEST_MSVC_SUPPRESS_WARNING(4623) // default constructor was implicitly define
#define DOCTEST_PLATFORM_IPHONE
#elif defined(_WIN32)
#define DOCTEST_PLATFORM_WINDOWS
+#elif defined(__wasi__)
+#define DOCTEST_PLATFORM_WASI
#else // DOCTEST_PLATFORM
#define DOCTEST_PLATFORM_LINUX
#endif // DOCTEST_PLATFORM
namespace doctest { namespace detail {
- static DOCTEST_CONSTEXPR int consume(const int*, int) { return 0; }
+ static DOCTEST_CONSTEXPR int consume(const int*, int) noexcept { return 0; }
}}
-#define DOCTEST_GLOBAL_NO_WARNINGS(var, ...) \
- DOCTEST_CLANG_SUPPRESS_WARNING_WITH_PUSH("-Wglobal-constructors") \
- static const int var = doctest::detail::consume(&var, __VA_ARGS__); \
+#define DOCTEST_GLOBAL_NO_WARNINGS(var, ...) \
+ DOCTEST_CLANG_SUPPRESS_WARNING_WITH_PUSH("-Wglobal-constructors") \
+ static const int var = doctest::detail::consume(&var, __VA_ARGS__); \
DOCTEST_CLANG_SUPPRESS_WARNING_POP
#ifndef DOCTEST_BREAK_INTO_DEBUGGER
@@ -400,16 +435,19 @@ namespace doctest { namespace detail {
#ifdef DOCTEST_PLATFORM_LINUX
#if defined(__GNUC__) && (defined(__i386) || defined(__x86_64))
// Break at the location of the failing check if possible
-#define DOCTEST_BREAK_INTO_DEBUGGER() __asm__("int $3\n" : :) // NOLINT (hicpp-no-assembler)
+#define DOCTEST_BREAK_INTO_DEBUGGER() __asm__("int $3\n" : :) // NOLINT(hicpp-no-assembler)
#else
#include <signal.h>
#define DOCTEST_BREAK_INTO_DEBUGGER() raise(SIGTRAP)
#endif
#elif defined(DOCTEST_PLATFORM_MAC)
#if defined(__x86_64) || defined(__x86_64__) || defined(__amd64__) || defined(__i386)
-#define DOCTEST_BREAK_INTO_DEBUGGER() __asm__("int $3\n" : :) // NOLINT (hicpp-no-assembler)
+#define DOCTEST_BREAK_INTO_DEBUGGER() __asm__("int $3\n" : :) // NOLINT(hicpp-no-assembler)
+#elif defined(__ppc__) || defined(__ppc64__)
+// https://www.cocoawithlove.com/2008/03/break-into-debugger.html
+#define DOCTEST_BREAK_INTO_DEBUGGER() __asm__("li r0, 20\nsc\nnop\nli r0, 37\nli r4, 2\nsc\nnop\n": : : "memory","r0","r3","r4") // NOLINT(hicpp-no-assembler)
#else
-#define DOCTEST_BREAK_INTO_DEBUGGER() __asm__("brk #0"); // NOLINT (hicpp-no-assembler)
+#define DOCTEST_BREAK_INTO_DEBUGGER() __asm__("brk #0"); // NOLINT(hicpp-no-assembler)
#endif
#elif DOCTEST_MSVC
#define DOCTEST_BREAK_INTO_DEBUGGER() __debugbreak()
@@ -425,7 +463,9 @@ DOCTEST_GCC_SUPPRESS_WARNING_POP
// this is kept here for backwards compatibility since the config option was changed
#ifdef DOCTEST_CONFIG_USE_IOSFWD
+#ifndef DOCTEST_CONFIG_USE_STD_HEADERS
#define DOCTEST_CONFIG_USE_STD_HEADERS
+#endif
#endif // DOCTEST_CONFIG_USE_IOSFWD
// for clang - always include ciso646 (which drags some std stuff) because
@@ -436,7 +476,9 @@ DOCTEST_GCC_SUPPRESS_WARNING_POP
#if DOCTEST_CLANG
#include <ciso646>
#ifdef _LIBCPP_VERSION
+#ifndef DOCTEST_CONFIG_USE_STD_HEADERS
#define DOCTEST_CONFIG_USE_STD_HEADERS
+#endif
#endif // _LIBCPP_VERSION
#endif // clang
@@ -444,26 +486,32 @@ DOCTEST_GCC_SUPPRESS_WARNING_POP
#ifndef DOCTEST_CONFIG_INCLUDE_TYPE_TRAITS
#define DOCTEST_CONFIG_INCLUDE_TYPE_TRAITS
#endif // DOCTEST_CONFIG_INCLUDE_TYPE_TRAITS
+DOCTEST_MAKE_STD_HEADERS_CLEAN_FROM_WARNINGS_ON_WALL_BEGIN
#include <cstddef>
#include <ostream>
#include <istream>
+DOCTEST_MAKE_STD_HEADERS_CLEAN_FROM_WARNINGS_ON_WALL_END
#else // DOCTEST_CONFIG_USE_STD_HEADERS
// Forward declaring 'X' in namespace std is not permitted by the C++ Standard.
DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(4643)
-namespace std { // NOLINT (cert-dcl58-cpp)
-typedef decltype(nullptr) nullptr_t;
+namespace std { // NOLINT(cert-dcl58-cpp)
+typedef decltype(nullptr) nullptr_t; // NOLINT(modernize-use-using)
+typedef decltype(sizeof(void*)) size_t; // NOLINT(modernize-use-using)
template <class charT>
struct char_traits;
template <>
struct char_traits<char>;
template <class charT, class traits>
-class basic_ostream;
-typedef basic_ostream<char, char_traits<char>> ostream;
+class basic_ostream; // NOLINT(fuchsia-virtual-inheritance)
+typedef basic_ostream<char, char_traits<char>> ostream; // NOLINT(modernize-use-using)
+template<class traits>
+// NOLINTNEXTLINE
+basic_ostream<char, traits>& operator<<(basic_ostream<char, traits>&, const char*);
template <class charT, class traits>
class basic_istream;
-typedef basic_istream<char, char_traits<char>> istream;
+typedef basic_istream<char, char_traits<char>> istream; // NOLINT(modernize-use-using)
template <class... Types>
class tuple;
#if DOCTEST_MSVC >= DOCTEST_COMPILER(19, 20, 0)
@@ -486,8 +534,14 @@ DOCTEST_MSVC_SUPPRESS_WARNING_POP
namespace doctest {
+using std::size_t;
+
DOCTEST_INTERFACE extern bool is_running_in_test;
+#ifndef DOCTEST_CONFIG_STRING_SIZE_TYPE
+#define DOCTEST_CONFIG_STRING_SIZE_TYPE unsigned
+#endif
+
// A 24 byte string class (can be as small as 17 for x64 and 13 for x86) that can hold strings with length
// of up to 23 chars on the stack before going on the heap - the last byte of the buffer is used for:
// - "is small" bit - the highest bit - if "0" then it is small - otherwise its "1" (128)
@@ -500,7 +554,6 @@ DOCTEST_INTERFACE extern bool is_running_in_test;
// TODO:
// - optimizations - like not deleting memory unnecessarily in operator= and etc.
// - resize/reserve/clear
-// - substr
// - replace
// - back/front
// - iterator stuff
@@ -510,64 +563,80 @@ DOCTEST_INTERFACE extern bool is_running_in_test;
// - relational operators as free functions - taking const char* as one of the params
class DOCTEST_INTERFACE String
{
- static const unsigned len = 24; //!OCLINT avoid private static members
- static const unsigned last = len - 1; //!OCLINT avoid private static members
+public:
+ using size_type = DOCTEST_CONFIG_STRING_SIZE_TYPE;
+
+private:
+ static DOCTEST_CONSTEXPR size_type len = 24; //!OCLINT avoid private static members
+ static DOCTEST_CONSTEXPR size_type last = len - 1; //!OCLINT avoid private static members
struct view // len should be more than sizeof(view) - because of the final byte for flags
{
char* ptr;
- unsigned size;
- unsigned capacity;
+ size_type size;
+ size_type capacity;
};
union
{
- char buf[len];
+ char buf[len]; // NOLINT(*-avoid-c-arrays)
view data;
};
- char* allocate(unsigned sz);
+ char* allocate(size_type sz);
- bool isOnStack() const { return (buf[last] & 128) == 0; }
- void setOnHeap();
- void setLast(unsigned in = last);
+ bool isOnStack() const noexcept { return (buf[last] & 128) == 0; }
+ void setOnHeap() noexcept;
+ void setLast(size_type in = last) noexcept;
+ void setSize(size_type sz) noexcept;
void copy(const String& other);
public:
- String();
+ static DOCTEST_CONSTEXPR size_type npos = static_cast<size_type>(-1);
+
+ String() noexcept;
~String();
// cppcheck-suppress noExplicitConstructor
String(const char* in);
- String(const char* in, unsigned in_size);
+ String(const char* in, size_type in_size);
- String(std::istream& in, unsigned in_size);
+ String(std::istream& in, size_type in_size);
String(const String& other);
String& operator=(const String& other);
String& operator+=(const String& other);
- String(String&& other);
- String& operator=(String&& other);
+ String(String&& other) noexcept;
+ String& operator=(String&& other) noexcept;
- char operator[](unsigned i) const;
- char& operator[](unsigned i);
+ char operator[](size_type i) const;
+ char& operator[](size_type i);
// the only functions I'm willing to leave in the interface - available for inlining
const char* c_str() const { return const_cast<String*>(this)->c_str(); } // NOLINT
char* c_str() {
- if(isOnStack())
+ if (isOnStack()) {
return reinterpret_cast<char*>(buf);
+ }
return data.ptr;
}
- unsigned size() const;
- unsigned capacity() const;
+ size_type size() const;
+ size_type capacity() const;
+
+ String substr(size_type pos, size_type cnt = npos) &&;
+ String substr(size_type pos, size_type cnt = npos) const &;
+
+ size_type find(char ch, size_type pos = 0) const;
+ size_type rfind(char ch, size_type pos = npos) const;
int compare(const char* other, bool no_case = false) const;
int compare(const String& other, bool no_case = false) const;
+
+friend DOCTEST_INTERFACE std::ostream& operator<<(std::ostream& s, const String& in);
};
DOCTEST_INTERFACE String operator+(const String& lhs, const String& rhs);
@@ -579,7 +648,21 @@ DOCTEST_INTERFACE bool operator>(const String& lhs, const String& rhs);
DOCTEST_INTERFACE bool operator<=(const String& lhs, const String& rhs);
DOCTEST_INTERFACE bool operator>=(const String& lhs, const String& rhs);
-DOCTEST_INTERFACE std::ostream& operator<<(std::ostream& s, const String& in);
+class DOCTEST_INTERFACE Contains {
+public:
+ explicit Contains(const String& string);
+
+ bool checkWith(const String& other) const;
+
+ String string;
+};
+
+DOCTEST_INTERFACE String toString(const Contains& in);
+
+DOCTEST_INTERFACE bool operator==(const String& lhs, const Contains& rhs);
+DOCTEST_INTERFACE bool operator==(const Contains& lhs, const String& rhs);
+DOCTEST_INTERFACE bool operator!=(const String& lhs, const Contains& rhs);
+DOCTEST_INTERFACE bool operator!=(const Contains& lhs, const String& rhs);
namespace Color {
enum Enum
@@ -652,7 +735,7 @@ namespace assertType {
DT_WARN_THROWS_WITH = is_throws_with | is_warn,
DT_CHECK_THROWS_WITH = is_throws_with | is_check,
DT_REQUIRE_THROWS_WITH = is_throws_with | is_require,
-
+
DT_WARN_THROWS_WITH_AS = is_throws_with | is_throws_as | is_warn,
DT_CHECK_THROWS_WITH_AS = is_throws_with | is_throws_as | is_check,
DT_REQUIRE_THROWS_WITH_AS = is_throws_with | is_throws_as | is_require,
@@ -733,9 +816,27 @@ struct DOCTEST_INTERFACE AssertData
String m_decomp;
// for specific exception-related asserts
- bool m_threw_as;
- const char* m_exception_type;
- const char* m_exception_string;
+ bool m_threw_as;
+ const char* m_exception_type;
+
+ class DOCTEST_INTERFACE StringContains {
+ private:
+ Contains content;
+ bool isContains;
+
+ public:
+ StringContains(const String& str) : content(str), isContains(false) { }
+ StringContains(Contains cntn) : content(static_cast<Contains&&>(cntn)), isContains(true) { }
+
+ bool check(const String& str) { return isContains ? (content == str) : (content.string == str); }
+
+ operator const String&() const { return content.string; }
+
+ const char* c_str() const { return content.string.c_str(); }
+ } m_exception_string;
+
+ AssertData(assertType::Enum at, const char* file, int line, const char* expr,
+ const char* exception_type, const StringContains& exception_string);
};
struct DOCTEST_INTERFACE MessageData
@@ -752,13 +853,13 @@ struct DOCTEST_INTERFACE SubcaseSignature
const char* m_file;
int m_line;
+ bool operator==(const SubcaseSignature& other) const;
bool operator<(const SubcaseSignature& other) const;
};
struct DOCTEST_INTERFACE IContextScope
{
- IContextScope();
- virtual ~IContextScope();
+ DOCTEST_DECLARE_INTERFACE(IContextScope)
virtual void stringify(std::ostream*) const = 0;
};
@@ -815,200 +916,184 @@ struct ContextOptions //!OCLINT too many fields
};
namespace detail {
- template <bool CONDITION, typename TYPE = void>
- struct enable_if
- {};
+ namespace types {
+#ifdef DOCTEST_CONFIG_INCLUDE_TYPE_TRAITS
+ using namespace std;
+#else
+ template <bool COND, typename T = void>
+ struct enable_if { };
+
+ template <typename T>
+ struct enable_if<true, T> { using type = T; };
- template <typename TYPE>
- struct enable_if<true, TYPE>
- { typedef TYPE type; };
+ struct true_type { static DOCTEST_CONSTEXPR bool value = true; };
+ struct false_type { static DOCTEST_CONSTEXPR bool value = false; };
- // clang-format off
- template<class T> struct remove_reference { typedef T type; };
- template<class T> struct remove_reference<T&> { typedef T type; };
- template<class T> struct remove_reference<T&&> { typedef T type; };
+ template <typename T> struct remove_reference { using type = T; };
+ template <typename T> struct remove_reference<T&> { using type = T; };
+ template <typename T> struct remove_reference<T&&> { using type = T; };
- template<typename T, typename U = T&&> U declval(int);
+ template <typename T> struct is_rvalue_reference : false_type { };
+ template <typename T> struct is_rvalue_reference<T&&> : true_type { };
- template<typename T> T declval(long);
+ template<typename T> struct remove_const { using type = T; };
+ template <typename T> struct remove_const<const T> { using type = T; };
- template<typename T> auto declval() DOCTEST_NOEXCEPT -> decltype(declval<T>(0)) ;
+ // Compiler intrinsics
+ template <typename T> struct is_enum { static DOCTEST_CONSTEXPR bool value = __is_enum(T); };
+ template <typename T> struct underlying_type { using type = __underlying_type(T); };
- template<class T> struct is_lvalue_reference { const static bool value=false; };
- template<class T> struct is_lvalue_reference<T&> { const static bool value=true; };
+ template <typename T> struct is_pointer : false_type { };
+ template <typename T> struct is_pointer<T*> : true_type { };
+
+ template <typename T> struct is_array : false_type { };
+ // NOLINTNEXTLINE(*-avoid-c-arrays)
+ template <typename T, size_t SIZE> struct is_array<T[SIZE]> : true_type { };
+#endif
+ }
- template<class T> struct is_rvalue_reference { const static bool value=false; };
- template<class T> struct is_rvalue_reference<T&&> { const static bool value=true; };
+ // <utility>
+ template <typename T>
+ T&& declval();
template <class T>
- inline T&& forward(typename remove_reference<T>::type& t) DOCTEST_NOEXCEPT
- {
+ DOCTEST_CONSTEXPR_FUNC T&& forward(typename types::remove_reference<T>::type& t) DOCTEST_NOEXCEPT {
return static_cast<T&&>(t);
}
template <class T>
- inline T&& forward(typename remove_reference<T>::type&& t) DOCTEST_NOEXCEPT
- {
- static_assert(!is_lvalue_reference<T>::value,
- "Can not forward an rvalue as an lvalue.");
+ DOCTEST_CONSTEXPR_FUNC T&& forward(typename types::remove_reference<T>::type&& t) DOCTEST_NOEXCEPT {
return static_cast<T&&>(t);
}
- template<class T> struct remove_const { typedef T type; };
- template<class T> struct remove_const<const T> { typedef T type; };
-#ifdef DOCTEST_CONFIG_INCLUDE_TYPE_TRAITS
- template<class T> struct is_enum : public std::is_enum<T> {};
- template<class T> struct underlying_type : public std::underlying_type<T> {};
-#else
- // Use compiler intrinsics
- template<class T> struct is_enum { DOCTEST_CONSTEXPR static bool value = __is_enum(T); };
- template<class T> struct underlying_type { typedef __underlying_type(T) type; };
-#endif
- // clang-format on
+ template <typename T>
+ struct deferred_false : types::false_type { };
+
+// MSVS 2015 :(
+#if defined(_MSC_VER) && _MSC_VER <= 1900
+ template <typename T, typename = void>
+ struct has_global_insertion_operator : types::false_type { };
template <typename T>
- struct deferred_false
- // cppcheck-suppress unusedStructMember
- { static const bool value = false; };
-
- namespace has_insertion_operator_impl {
- std::ostream &os();
- template<class T>
- DOCTEST_REF_WRAP(T) val();
-
- template<class, class = void>
- struct check {
- static DOCTEST_CONSTEXPR bool value = false;
- };
+ struct has_global_insertion_operator<T, decltype(::operator<<(declval<std::ostream&>(), declval<const T&>()), void())> : types::true_type { };
- template<class T>
- struct check<T, decltype(os() << val<T>(), void())> {
- static DOCTEST_CONSTEXPR bool value = true;
- };
- } // namespace has_insertion_operator_impl
+ template <typename T, typename = void>
+ struct has_insertion_operator { static DOCTEST_CONSTEXPR bool value = has_global_insertion_operator<T>::value; };
+
+ template <typename T, bool global>
+ struct insert_hack;
+
+ template <typename T>
+ struct insert_hack<T, true> {
+ static void insert(std::ostream& os, const T& t) { ::operator<<(os, t); }
+ };
- template<class T>
- using has_insertion_operator = has_insertion_operator_impl::check<const T>;
+ template <typename T>
+ struct insert_hack<T, false> {
+ static void insert(std::ostream& os, const T& t) { operator<<(os, t); }
+ };
+
+ template <typename T>
+ using insert_hack_t = insert_hack<T, has_global_insertion_operator<T>::value>;
+#else
+ template <typename T, typename = void>
+ struct has_insertion_operator : types::false_type { };
+#endif
+
+template <typename T>
+struct has_insertion_operator<T, decltype(operator<<(declval<std::ostream&>(), declval<const T&>()), void())> : types::true_type { };
DOCTEST_INTERFACE std::ostream* tlssPush();
DOCTEST_INTERFACE String tlssPop();
-
template <bool C>
- struct StringMakerBase
- {
+ struct StringMakerBase {
template <typename T>
static String convert(const DOCTEST_REF_WRAP(T)) {
+#ifdef DOCTEST_CONFIG_REQUIRE_STRINGIFICATION_FOR_ALL_USED_TYPES
+ static_assert(deferred_false<T>::value, "No stringification detected for type T. See string conversion manual");
+#endif
return "{?}";
}
};
- // Vector<int> and various type other than pointer or array.
- template<typename T>
- struct filldata
- {
- static void fill(std::ostream* stream, const T &in) {
- *stream << in;
- }
- };
-
- template<typename T,unsigned long N>
- struct filldata<T[N]>
- {
- static void fill(std::ostream* stream, const T (&in)[N]) {
- for (unsigned long i = 0; i < N; i++) {
- *stream << in[i];
- }
- }
- };
-
- // Specialized since we don't want the terminating null byte!
- template<unsigned long N>
- struct filldata<const char[N]>
- {
- static void fill(std::ostream* stream, const char(&in)[N]) {
- *stream << in;
- }
- };
+ template <typename T>
+ struct filldata;
- template<typename T>
+ template <typename T>
void filloss(std::ostream* stream, const T& in) {
filldata<T>::fill(stream, in);
}
- template<typename T,unsigned long N>
- void filloss(std::ostream* stream, const T (&in)[N]) {
+ template <typename T, size_t N>
+ void filloss(std::ostream* stream, const T (&in)[N]) { // NOLINT(*-avoid-c-arrays)
// T[N], T(&)[N], T(&&)[N] have same behaviour.
// Hence remove reference.
- filldata<typename remove_reference<decltype(in)>::type>::fill(stream, in);
+ filloss<typename types::remove_reference<decltype(in)>::type>(stream, in);
+ }
+
+ template <typename T>
+ String toStream(const T& in) {
+ std::ostream* stream = tlssPush();
+ filloss(stream, in);
+ return tlssPop();
}
template <>
- struct StringMakerBase<true>
- {
+ struct StringMakerBase<true> {
template <typename T>
static String convert(const DOCTEST_REF_WRAP(T) in) {
- /* When parameter "in" is a null terminated const char* it works.
- * When parameter "in" is a T arr[N] without '\0' we can fill the
- * stringstream with N objects (T=char).If in is char pointer *
- * without '\0' , it would cause segfault
- * stepping over unaccessible memory.
- */
-
- std::ostream* stream = tlssPush();
- filloss(stream, in);
- return tlssPop();
+ return toStream(in);
}
};
-
- DOCTEST_INTERFACE String rawMemoryToString(const void* object, unsigned size);
-
- template <typename T>
- String rawMemoryToString(const DOCTEST_REF_WRAP(T) object) {
- return rawMemoryToString(&object, sizeof(object));
- }
-
- template <typename T>
- const char* type_to_string() {
- return "<>";
- }
} // namespace detail
template <typename T>
-struct StringMaker : public detail::StringMakerBase<detail::has_insertion_operator<T>::value>
+struct StringMaker : public detail::StringMakerBase<
+ detail::has_insertion_operator<T>::value || detail::types::is_pointer<T>::value || detail::types::is_array<T>::value>
{};
-template <typename T>
-struct StringMaker<T*>
-{
- template <typename U>
- static String convert(U* p) {
- if(p)
- return detail::rawMemoryToString(p);
- return "NULL";
- }
-};
+#ifndef DOCTEST_STRINGIFY
+#ifdef DOCTEST_CONFIG_DOUBLE_STRINGIFY
+#define DOCTEST_STRINGIFY(...) toString(toString(__VA_ARGS__))
+#else
+#define DOCTEST_STRINGIFY(...) toString(__VA_ARGS__)
+#endif
+#endif
-template <typename R, typename C>
-struct StringMaker<R C::*>
-{
- static String convert(R C::*p) {
- if(p)
- return detail::rawMemoryToString(p);
- return "NULL";
- }
-};
+template <typename T>
+String toString() {
+#if DOCTEST_MSVC >= 0 && DOCTEST_CLANG == 0 && DOCTEST_GCC == 0
+ String ret = __FUNCSIG__; // class doctest::String __cdecl doctest::toString<TYPE>(void)
+ String::size_type beginPos = ret.find('<');
+ return ret.substr(beginPos + 1, ret.size() - beginPos - static_cast<String::size_type>(sizeof(">(void)")));
+#else
+ String ret = __PRETTY_FUNCTION__; // doctest::String toString() [with T = TYPE]
+ String::size_type begin = ret.find('=') + 2;
+ return ret.substr(begin, ret.size() - begin - 1);
+#endif
+}
-template <typename T, typename detail::enable_if<!detail::is_enum<T>::value, bool>::type = true>
+template <typename T, typename detail::types::enable_if<!detail::types::is_enum<T>::value, bool>::type = true>
String toString(const DOCTEST_REF_WRAP(T) value) {
return StringMaker<T>::convert(value);
}
#ifdef DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING
-DOCTEST_INTERFACE String toString(char* in);
DOCTEST_INTERFACE String toString(const char* in);
#endif // DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING
+
+#if DOCTEST_MSVC >= DOCTEST_COMPILER(19, 20, 0)
+// see this issue on why this is needed: https://github.com/doctest/doctest/issues/183
+DOCTEST_INTERFACE String toString(const std::string& in);
+#endif // VS 2019
+
+DOCTEST_INTERFACE String toString(String in);
+
+DOCTEST_INTERFACE String toString(std::nullptr_t);
+
DOCTEST_INTERFACE String toString(bool in);
+
DOCTEST_INTERFACE String toString(float in);
DOCTEST_INTERFACE String toString(double in);
DOCTEST_INTERFACE String toString(double long in);
@@ -1016,40 +1101,85 @@ DOCTEST_INTERFACE String toString(double long in);
DOCTEST_INTERFACE String toString(char in);
DOCTEST_INTERFACE String toString(char signed in);
DOCTEST_INTERFACE String toString(char unsigned in);
-DOCTEST_INTERFACE String toString(int short in);
-DOCTEST_INTERFACE String toString(int short unsigned in);
-DOCTEST_INTERFACE String toString(int in);
-DOCTEST_INTERFACE String toString(int unsigned in);
-DOCTEST_INTERFACE String toString(int long in);
-DOCTEST_INTERFACE String toString(int long unsigned in);
-DOCTEST_INTERFACE String toString(int long long in);
-DOCTEST_INTERFACE String toString(int long long unsigned in);
-DOCTEST_INTERFACE String toString(std::nullptr_t in);
-
-template <typename T, typename detail::enable_if<detail::is_enum<T>::value, bool>::type = true>
+DOCTEST_INTERFACE String toString(short in);
+DOCTEST_INTERFACE String toString(short unsigned in);
+DOCTEST_INTERFACE String toString(signed in);
+DOCTEST_INTERFACE String toString(unsigned in);
+DOCTEST_INTERFACE String toString(long in);
+DOCTEST_INTERFACE String toString(long unsigned in);
+DOCTEST_INTERFACE String toString(long long in);
+DOCTEST_INTERFACE String toString(long long unsigned in);
+
+template <typename T, typename detail::types::enable_if<detail::types::is_enum<T>::value, bool>::type = true>
String toString(const DOCTEST_REF_WRAP(T) value) {
- typedef typename detail::underlying_type<T>::type UT;
- return toString(static_cast<UT>(value));
+ using UT = typename detail::types::underlying_type<T>::type;
+ return (DOCTEST_STRINGIFY(static_cast<UT>(value)));
}
-#if DOCTEST_MSVC >= DOCTEST_COMPILER(19, 20, 0)
-// see this issue on why this is needed: https://github.com/doctest/doctest/issues/183
-DOCTEST_INTERFACE String toString(const std::string& in);
-#endif // VS 2019
+namespace detail {
+ template <typename T>
+ struct filldata
+ {
+ static void fill(std::ostream* stream, const T& in) {
+#if defined(_MSC_VER) && _MSC_VER <= 1900
+ insert_hack_t<T>::insert(*stream, in);
+#else
+ operator<<(*stream, in);
+#endif
+ }
+ };
+
+DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(4866)
+// NOLINTBEGIN(*-avoid-c-arrays)
+ template <typename T, size_t N>
+ struct filldata<T[N]> {
+ static void fill(std::ostream* stream, const T(&in)[N]) {
+ *stream << "[";
+ for (size_t i = 0; i < N; i++) {
+ if (i != 0) { *stream << ", "; }
+ *stream << (DOCTEST_STRINGIFY(in[i]));
+ }
+ *stream << "]";
+ }
+ };
+// NOLINTEND(*-avoid-c-arrays)
+DOCTEST_MSVC_SUPPRESS_WARNING_POP
-class DOCTEST_INTERFACE Approx
+ // Specialized since we don't want the terminating null byte!
+// NOLINTBEGIN(*-avoid-c-arrays)
+ template <size_t N>
+ struct filldata<const char[N]> {
+ static void fill(std::ostream* stream, const char (&in)[N]) {
+ *stream << String(in, in[N - 1] ? N : N - 1);
+ } // NOLINT(clang-analyzer-cplusplus.NewDeleteLeaks)
+ };
+// NOLINTEND(*-avoid-c-arrays)
+
+ template <>
+ struct filldata<const void*> {
+ static void fill(std::ostream* stream, const void* in);
+ };
+
+ template <typename T>
+ struct filldata<T*> {
+ static void fill(std::ostream* stream, const T* in) {
+ filldata<const void*>::fill(stream, in);
+ }
+ };
+}
+
+struct DOCTEST_INTERFACE Approx
{
-public:
- explicit Approx(double value);
+ Approx(double value);
Approx operator()(double value) const;
#ifdef DOCTEST_CONFIG_INCLUDE_TYPE_TRAITS
template <typename T>
explicit Approx(const T& value,
- typename detail::enable_if<std::is_constructible<double, T>::value>::type* =
+ typename detail::types::enable_if<std::is_constructible<double, T>::value>::type* =
static_cast<T*>(nullptr)) {
- *this = Approx(static_cast<double>(value));
+ *this = static_cast<double>(value);
}
#endif // DOCTEST_CONFIG_INCLUDE_TYPE_TRAITS
@@ -1057,7 +1187,7 @@ public:
#ifdef DOCTEST_CONFIG_INCLUDE_TYPE_TRAITS
template <typename T>
- typename detail::enable_if<std::is_constructible<double, T>::value, Approx&>::type epsilon(
+ typename std::enable_if<std::is_constructible<double, T>::value, Approx&>::type epsilon(
const T& newEpsilon) {
m_epsilon = static_cast<double>(newEpsilon);
return *this;
@@ -1068,7 +1198,7 @@ public:
#ifdef DOCTEST_CONFIG_INCLUDE_TYPE_TRAITS
template <typename T>
- typename detail::enable_if<std::is_constructible<double, T>::value, Approx&>::type scale(
+ typename std::enable_if<std::is_constructible<double, T>::value, Approx&>::type scale(
const T& newScale) {
m_scale = static_cast<double>(newScale);
return *this;
@@ -1089,30 +1219,27 @@ public:
DOCTEST_INTERFACE friend bool operator> (double lhs, const Approx & rhs);
DOCTEST_INTERFACE friend bool operator> (const Approx & lhs, double rhs);
- DOCTEST_INTERFACE friend String toString(const Approx& in);
-
#ifdef DOCTEST_CONFIG_INCLUDE_TYPE_TRAITS
#define DOCTEST_APPROX_PREFIX \
- template <typename T> friend typename detail::enable_if<std::is_constructible<double, T>::value, bool>::type
+ template <typename T> friend typename std::enable_if<std::is_constructible<double, T>::value, bool>::type
- DOCTEST_APPROX_PREFIX operator==(const T& lhs, const Approx& rhs) { return operator==(double(lhs), rhs); }
+ DOCTEST_APPROX_PREFIX operator==(const T& lhs, const Approx& rhs) { return operator==(static_cast<double>(lhs), rhs); }
DOCTEST_APPROX_PREFIX operator==(const Approx& lhs, const T& rhs) { return operator==(rhs, lhs); }
DOCTEST_APPROX_PREFIX operator!=(const T& lhs, const Approx& rhs) { return !operator==(lhs, rhs); }
DOCTEST_APPROX_PREFIX operator!=(const Approx& lhs, const T& rhs) { return !operator==(rhs, lhs); }
- DOCTEST_APPROX_PREFIX operator<=(const T& lhs, const Approx& rhs) { return double(lhs) < rhs.m_value || lhs == rhs; }
- DOCTEST_APPROX_PREFIX operator<=(const Approx& lhs, const T& rhs) { return lhs.m_value < double(rhs) || lhs == rhs; }
- DOCTEST_APPROX_PREFIX operator>=(const T& lhs, const Approx& rhs) { return double(lhs) > rhs.m_value || lhs == rhs; }
- DOCTEST_APPROX_PREFIX operator>=(const Approx& lhs, const T& rhs) { return lhs.m_value > double(rhs) || lhs == rhs; }
- DOCTEST_APPROX_PREFIX operator< (const T& lhs, const Approx& rhs) { return double(lhs) < rhs.m_value && lhs != rhs; }
- DOCTEST_APPROX_PREFIX operator< (const Approx& lhs, const T& rhs) { return lhs.m_value < double(rhs) && lhs != rhs; }
- DOCTEST_APPROX_PREFIX operator> (const T& lhs, const Approx& rhs) { return double(lhs) > rhs.m_value && lhs != rhs; }
- DOCTEST_APPROX_PREFIX operator> (const Approx& lhs, const T& rhs) { return lhs.m_value > double(rhs) && lhs != rhs; }
+ DOCTEST_APPROX_PREFIX operator<=(const T& lhs, const Approx& rhs) { return static_cast<double>(lhs) < rhs.m_value || lhs == rhs; }
+ DOCTEST_APPROX_PREFIX operator<=(const Approx& lhs, const T& rhs) { return lhs.m_value < static_cast<double>(rhs) || lhs == rhs; }
+ DOCTEST_APPROX_PREFIX operator>=(const T& lhs, const Approx& rhs) { return static_cast<double>(lhs) > rhs.m_value || lhs == rhs; }
+ DOCTEST_APPROX_PREFIX operator>=(const Approx& lhs, const T& rhs) { return lhs.m_value > static_cast<double>(rhs) || lhs == rhs; }
+ DOCTEST_APPROX_PREFIX operator< (const T& lhs, const Approx& rhs) { return static_cast<double>(lhs) < rhs.m_value && lhs != rhs; }
+ DOCTEST_APPROX_PREFIX operator< (const Approx& lhs, const T& rhs) { return lhs.m_value < static_cast<double>(rhs) && lhs != rhs; }
+ DOCTEST_APPROX_PREFIX operator> (const T& lhs, const Approx& rhs) { return static_cast<double>(lhs) > rhs.m_value && lhs != rhs; }
+ DOCTEST_APPROX_PREFIX operator> (const Approx& lhs, const T& rhs) { return lhs.m_value > static_cast<double>(rhs) && lhs != rhs; }
#undef DOCTEST_APPROX_PREFIX
#endif // DOCTEST_CONFIG_INCLUDE_TYPE_TRAITS
// clang-format on
-private:
double m_epsilon;
double m_scale;
double m_value;
@@ -1122,18 +1249,35 @@ DOCTEST_INTERFACE String toString(const Approx& in);
DOCTEST_INTERFACE const ContextOptions* getContextOptions();
-#if !defined(DOCTEST_CONFIG_DISABLE)
+template <typename F>
+struct DOCTEST_INTERFACE_DECL IsNaN
+{
+ F value; bool flipped;
+ IsNaN(F f, bool flip = false) : value(f), flipped(flip) { }
+ IsNaN<F> operator!() const { return { value, !flipped }; }
+ operator bool() const;
+};
+#ifndef __MINGW32__
+extern template struct DOCTEST_INTERFACE_DECL IsNaN<float>;
+extern template struct DOCTEST_INTERFACE_DECL IsNaN<double>;
+extern template struct DOCTEST_INTERFACE_DECL IsNaN<long double>;
+#endif
+DOCTEST_INTERFACE String toString(IsNaN<float> in);
+DOCTEST_INTERFACE String toString(IsNaN<double> in);
+DOCTEST_INTERFACE String toString(IsNaN<double long> in);
+
+#ifndef DOCTEST_CONFIG_DISABLE
namespace detail {
// clang-format off
#ifdef DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING
- template<class T> struct decay_array { typedef T type; };
- template<class T, unsigned N> struct decay_array<T[N]> { typedef T* type; };
- template<class T> struct decay_array<T[]> { typedef T* type; };
+ template<class T> struct decay_array { using type = T; };
+ template<class T, unsigned N> struct decay_array<T[N]> { using type = T*; };
+ template<class T> struct decay_array<T[]> { using type = T*; };
- template<class T> struct not_char_pointer { enum { value = 1 }; };
- template<> struct not_char_pointer<char*> { enum { value = 0 }; };
- template<> struct not_char_pointer<const char*> { enum { value = 0 }; };
+ template<class T> struct not_char_pointer { static DOCTEST_CONSTEXPR value = 1; };
+ template<> struct not_char_pointer<char*> { static DOCTEST_CONSTEXPR value = 0; };
+ template<> struct not_char_pointer<const char*> { static DOCTEST_CONSTEXPR value = 0; };
template<class T> struct can_use_op : public not_char_pointer<typename decay_array<T>::type> {};
#endif // DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING
@@ -1156,16 +1300,22 @@ namespace detail {
bool m_entered = false;
Subcase(const String& name, const char* file, int line);
+ Subcase(const Subcase&) = delete;
+ Subcase(Subcase&&) = delete;
+ Subcase& operator=(const Subcase&) = delete;
+ Subcase& operator=(Subcase&&) = delete;
~Subcase();
operator bool() const;
+
+ private:
+ bool checkFilters();
};
template <typename L, typename R>
String stringifyBinaryExpr(const DOCTEST_REF_WRAP(L) lhs, const char* op,
const DOCTEST_REF_WRAP(R) rhs) {
- // NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDeleteLeaks)
- return toString(lhs) + op + toString(rhs);
+ return (DOCTEST_STRINGIFY(lhs)) + op + (DOCTEST_STRINGIFY(rhs));
}
#if DOCTEST_CLANG && DOCTEST_CLANG < DOCTEST_COMPILER(3, 6, 0)
@@ -1180,17 +1330,8 @@ DOCTEST_CLANG_SUPPRESS_WARNING_WITH_PUSH("-Wunused-comparison")
#define DOCTEST_DO_BINARY_EXPRESSION_COMPARISON(op, op_str, op_macro) \
template <typename R> \
- DOCTEST_NOINLINE SFINAE_OP(Result,op) operator op(const R&& rhs) { \
- bool res = op_macro(doctest::detail::forward<const L>(lhs), doctest::detail::forward<const R>(rhs)); \
- if(m_at & assertType::is_false) \
- res = !res; \
- if(!res || doctest::getContextOptions()->success) \
- return Result(res, stringifyBinaryExpr(lhs, op_str, rhs)); \
- return Result(res); \
- } \
- template <typename R ,typename enable_if<!doctest::detail::is_rvalue_reference<R>::value, void >::type* = nullptr> \
- DOCTEST_NOINLINE SFINAE_OP(Result,op) operator op(const R& rhs) { \
- bool res = op_macro(doctest::detail::forward<const L>(lhs), rhs); \
+ DOCTEST_NOINLINE SFINAE_OP(Result,op) operator op(R&& rhs) { \
+ bool res = op_macro(doctest::detail::forward<const L>(lhs), doctest::detail::forward<R>(rhs)); \
if(m_at & assertType::is_false) \
res = !res; \
if(!res || doctest::getContextOptions()->success) \
@@ -1209,12 +1350,12 @@ DOCTEST_CLANG_SUPPRESS_WARNING_WITH_PUSH("-Wunused-comparison")
return *this; \
}
- struct DOCTEST_INTERFACE Result
+ struct DOCTEST_INTERFACE Result // NOLINT(*-member-init)
{
bool m_passed;
String m_decomp;
- Result() = default;
+ Result() = default; // TODO: Why do we need this? (To remove NOLINT)
Result(bool passed, const String& decomposition = String());
// forbidding some expressions based on this table: https://en.cppreference.com/w/cpp/language/operator_precedence
@@ -1271,8 +1412,7 @@ DOCTEST_CLANG_SUPPRESS_WARNING_WITH_PUSH("-Wunused-comparison")
#ifndef DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING
#define DOCTEST_COMPARISON_RETURN_TYPE bool
#else // DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING
-#define DOCTEST_COMPARISON_RETURN_TYPE typename enable_if<can_use_op<L>::value || can_use_op<R>::value, bool>::type
- // NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDeleteLeaks)
+#define DOCTEST_COMPARISON_RETURN_TYPE typename types::enable_if<can_use_op<L>::value || can_use_op<R>::value, bool>::type
inline bool eq(const char* lhs, const char* rhs) { return String(lhs) == String(rhs); }
inline bool ne(const char* lhs, const char* rhs) { return String(lhs) != String(rhs); }
inline bool lt(const char* lhs, const char* rhs) { return String(lhs) < String(rhs); }
@@ -1320,7 +1460,7 @@ DOCTEST_CLANG_SUPPRESS_WARNING_WITH_PUSH("-Wunused-comparison")
assertType::Enum m_at;
explicit Expression_lhs(L&& in, assertType::Enum at)
- : lhs(doctest::detail::forward<L>(in))
+ : lhs(static_cast<L&&>(in))
, m_at(at) {}
DOCTEST_NOINLINE operator Result() {
@@ -1328,12 +1468,14 @@ DOCTEST_CLANG_SUPPRESS_WARNING_WITH_PUSH("-Wunused-comparison")
DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(4800) // 'int': forcing value to bool
bool res = static_cast<bool>(lhs);
DOCTEST_MSVC_SUPPRESS_WARNING_POP
- if(m_at & assertType::is_false) //!OCLINT bitwise operator in conditional
+ if(m_at & assertType::is_false) { //!OCLINT bitwise operator in conditional
res = !res;
+ }
- if(!res || getContextOptions()->success)
- return Result(res, toString(lhs));
- return Result(res);
+ if(!res || getContextOptions()->success) {
+ return { res, (DOCTEST_STRINGIFY(lhs)) };
+ }
+ return { res };
}
/* This is required for user-defined conversions from Expression_lhs to L */
@@ -1394,11 +1536,11 @@ DOCTEST_CLANG_SUPPRESS_WARNING_POP
// https://github.com/catchorg/Catch2/issues/870
// https://github.com/catchorg/Catch2/issues/565
template <typename L>
- Expression_lhs<const L> operator<<(const L &&operand) {
- return Expression_lhs<const L>(doctest::detail::forward<const L>(operand), m_at);
+ Expression_lhs<L> operator<<(L&& operand) {
+ return Expression_lhs<L>(static_cast<L&&>(operand), m_at);
}
- template <typename L,typename enable_if<!doctest::detail::is_rvalue_reference<L>::value,void >::type* = nullptr>
+ template <typename L,typename types::enable_if<!doctest::detail::types::is_rvalue_reference<L>::value,void >::type* = nullptr>
Expression_lhs<const L&> operator<<(const L &operand) {
return Expression_lhs<const L&>(operand, m_at);
}
@@ -1425,25 +1567,28 @@ DOCTEST_CLANG_SUPPRESS_WARNING_POP
}
};
- typedef void (*funcType)();
+ using funcType = void (*)();
struct DOCTEST_INTERFACE TestCase : public TestCaseData
{
funcType m_test; // a function pointer to the test case
- const char* m_type; // for templated test cases - gets appended to the real name
+ String m_type; // for templated test cases - gets appended to the real name
int m_template_id; // an ID used to distinguish between the different versions of a templated test case
String m_full_name; // contains the name (only for templated test cases!) + the template type
TestCase(funcType test, const char* file, unsigned line, const TestSuite& test_suite,
- const char* type = "", int template_id = -1);
+ const String& type = String(), int template_id = -1);
TestCase(const TestCase& other);
+ TestCase(TestCase&&) = delete;
DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(26434) // hides a non-virtual function
TestCase& operator=(const TestCase& other);
DOCTEST_MSVC_SUPPRESS_WARNING_POP
+ TestCase& operator=(TestCase&&) = delete;
+
TestCase& operator*(const char* in);
template <typename T>
@@ -1453,6 +1598,8 @@ DOCTEST_CLANG_SUPPRESS_WARNING_POP
}
bool operator<(const TestCase& other) const;
+
+ ~TestCase() = default;
};
// forward declarations of functions used by the macros
@@ -1492,7 +1639,10 @@ DOCTEST_CLANG_SUPPRESS_WARNING_POP
struct DOCTEST_INTERFACE ResultBuilder : public AssertData
{
ResultBuilder(assertType::Enum at, const char* file, int line, const char* expr,
- const char* exception_type = "", const char* exception_string = "");
+ const char* exception_type = "", const String& exception_string = "");
+
+ ResultBuilder(assertType::Enum at, const char* file, int line, const char* expr,
+ const char* exception_type, const Contains& exception_string);
void setResult(const Result& res);
@@ -1500,8 +1650,9 @@ DOCTEST_CLANG_SUPPRESS_WARNING_POP
DOCTEST_NOINLINE bool binary_assert(const DOCTEST_REF_WRAP(L) lhs,
const DOCTEST_REF_WRAP(R) rhs) {
m_failed = !RelationalComparator<comparison, L, R>()(lhs, rhs);
- if(m_failed || getContextOptions()->success)
+ if (m_failed || getContextOptions()->success) {
m_decomp = stringifyBinaryExpr(lhs, ", ", rhs);
+ }
return !m_failed;
}
@@ -1509,11 +1660,13 @@ DOCTEST_CLANG_SUPPRESS_WARNING_POP
DOCTEST_NOINLINE bool unary_assert(const DOCTEST_REF_WRAP(L) val) {
m_failed = !val;
- if(m_at & assertType::is_false) //!OCLINT bitwise operator in conditional
+ if (m_at & assertType::is_false) { //!OCLINT bitwise operator in conditional
m_failed = !m_failed;
+ }
- if(m_failed || getContextOptions()->success)
- m_decomp = toString(val);
+ if (m_failed || getContextOptions()->success) {
+ m_decomp = (DOCTEST_STRINGIFY(val));
+ }
return !m_failed;
}
@@ -1536,7 +1689,7 @@ DOCTEST_CLANG_SUPPRESS_WARNING_POP
DOCTEST_INTERFACE void failed_out_of_a_testing_context(const AssertData& ad);
DOCTEST_INTERFACE bool decomp_assert(assertType::Enum at, const char* file, int line,
- const char* expr, Result result);
+ const char* expr, const Result& result);
#define DOCTEST_ASSERT_OUT_OF_TESTS(decomp) \
do { \
@@ -1592,15 +1745,14 @@ DOCTEST_CLANG_SUPPRESS_WARNING_POP
// IF THE DEBUGGER BREAKS HERE - GO 1 LEVEL UP IN THE CALLSTACK FOR THE FAILING ASSERT
// THIS IS THE EFFECT OF HAVING 'DOCTEST_CONFIG_SUPER_FAST_ASSERTS' DEFINED
// ###################################################################################
- DOCTEST_ASSERT_OUT_OF_TESTS(toString(val));
- DOCTEST_ASSERT_IN_TESTS(toString(val));
+ DOCTEST_ASSERT_OUT_OF_TESTS((DOCTEST_STRINGIFY(val)));
+ DOCTEST_ASSERT_IN_TESTS((DOCTEST_STRINGIFY(val)));
return !failed;
}
struct DOCTEST_INTERFACE IExceptionTranslator
{
- IExceptionTranslator();
- virtual ~IExceptionTranslator();
+ DOCTEST_DECLARE_INTERFACE(IExceptionTranslator)
virtual bool translate(String&) const = 0;
};
@@ -1616,7 +1768,7 @@ DOCTEST_CLANG_SUPPRESS_WARNING_POP
try {
throw; // lgtm [cpp/rethrow-no-exception]
// cppcheck-suppress catchExceptionByValue
- } catch(T ex) { // NOLINT
+ } catch(const T& ex) {
res = m_translateFunction(ex); //!OCLINT parameter reassignment
return true;
} catch(...) {} //!OCLINT - empty catch statement
@@ -1631,64 +1783,19 @@ DOCTEST_CLANG_SUPPRESS_WARNING_POP
DOCTEST_INTERFACE void registerExceptionTranslatorImpl(const IExceptionTranslator* et);
- template <bool C>
- struct StringStreamBase
- {
- template <typename T>
- static void convert(std::ostream* s, const T& in) {
- *s << toString(in);
- }
-
- // always treat char* as a string in this context - no matter
- // if DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING is defined
- static void convert(std::ostream* s, const char* in) { *s << String(in); }
- };
-
- template <>
- struct StringStreamBase<true>
- {
- template <typename T>
- static void convert(std::ostream* s, const T& in) {
- *s << in;
- }
- };
+ // ContextScope base class used to allow implementing methods of ContextScope
+ // that don't depend on the template parameter in doctest.cpp.
+ struct DOCTEST_INTERFACE ContextScopeBase : public IContextScope {
+ ContextScopeBase(const ContextScopeBase&) = delete;
- template <typename T>
- struct StringStream : public StringStreamBase<has_insertion_operator<T>::value>
- {};
+ ContextScopeBase& operator=(const ContextScopeBase&) = delete;
+ ContextScopeBase& operator=(ContextScopeBase&&) = delete;
- template <typename T>
- void toStream(std::ostream* s, const T& value) {
- StringStream<T>::convert(s, value);
- }
+ ~ContextScopeBase() override = default;
-#ifdef DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING
- DOCTEST_INTERFACE void toStream(std::ostream* s, char* in);
- DOCTEST_INTERFACE void toStream(std::ostream* s, const char* in);
-#endif // DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING
- DOCTEST_INTERFACE void toStream(std::ostream* s, bool in);
- DOCTEST_INTERFACE void toStream(std::ostream* s, float in);
- DOCTEST_INTERFACE void toStream(std::ostream* s, double in);
- DOCTEST_INTERFACE void toStream(std::ostream* s, double long in);
-
- DOCTEST_INTERFACE void toStream(std::ostream* s, char in);
- DOCTEST_INTERFACE void toStream(std::ostream* s, char signed in);
- DOCTEST_INTERFACE void toStream(std::ostream* s, char unsigned in);
- DOCTEST_INTERFACE void toStream(std::ostream* s, int short in);
- DOCTEST_INTERFACE void toStream(std::ostream* s, int short unsigned in);
- DOCTEST_INTERFACE void toStream(std::ostream* s, int in);
- DOCTEST_INTERFACE void toStream(std::ostream* s, int unsigned in);
- DOCTEST_INTERFACE void toStream(std::ostream* s, int long in);
- DOCTEST_INTERFACE void toStream(std::ostream* s, int long unsigned in);
- DOCTEST_INTERFACE void toStream(std::ostream* s, int long long in);
- DOCTEST_INTERFACE void toStream(std::ostream* s, int long long unsigned in);
-
- // ContextScope base class used to allow implementing methods of ContextScope
- // that don't depend on the template parameter in doctest.cpp.
- class DOCTEST_INTERFACE ContextScopeBase : public IContextScope {
protected:
ContextScopeBase();
- ContextScopeBase(ContextScopeBase&& other);
+ ContextScopeBase(ContextScopeBase&& other) noexcept;
void destroy();
bool need_to_destroy{true};
@@ -1696,12 +1803,17 @@ DOCTEST_CLANG_SUPPRESS_WARNING_POP
template <typename L> class ContextScope : public ContextScopeBase
{
- const L lambda_;
+ L lambda_;
public:
explicit ContextScope(const L &lambda) : lambda_(lambda) {}
+ explicit ContextScope(L&& lambda) : lambda_(static_cast<L&&>(lambda)) { }
- ContextScope(ContextScope &&other) : ContextScopeBase(static_cast<ContextScopeBase&&>(other)), lambda_(other.lambda_) {}
+ ContextScope(const ContextScope&) = delete;
+ ContextScope(ContextScope&&) noexcept = default;
+
+ ContextScope& operator=(const ContextScope&) = delete;
+ ContextScope& operator=(ContextScope&&) = delete;
void stringify(std::ostream* s) const override { lambda_(s); }
@@ -1718,15 +1830,23 @@ DOCTEST_CLANG_SUPPRESS_WARNING_POP
bool logged = false;
MessageBuilder(const char* file, int line, assertType::Enum severity);
- MessageBuilder() = delete;
+
+ MessageBuilder(const MessageBuilder&) = delete;
+ MessageBuilder(MessageBuilder&&) = delete;
+
+ MessageBuilder& operator=(const MessageBuilder&) = delete;
+ MessageBuilder& operator=(MessageBuilder&&) = delete;
+
~MessageBuilder();
// the preferred way of chaining parameters for stringification
+DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(4866)
template <typename T>
MessageBuilder& operator,(const T& in) {
- toStream(m_stream, in);
+ *m_stream << (DOCTEST_STRINGIFY(in));
return *this;
}
+DOCTEST_MSVC_SUPPRESS_WARNING_POP
// kept here just for backwards-compatibility - the comma operator should be preferred now
template <typename T>
@@ -1742,7 +1862,7 @@ DOCTEST_CLANG_SUPPRESS_WARNING_POP
bool log();
void react();
};
-
+
template <typename L>
ContextScope<L> MakeContextScope(const L &lambda) {
return ContextScope<L>(lambda);
@@ -1795,7 +1915,7 @@ int registerExceptionTranslator(String (*)(T)) {
#endif // DOCTEST_CONFIG_DISABLE
namespace detail {
- typedef void (*assert_handler)(const AssertData&);
+ using assert_handler = void (*)(const AssertData&);
struct ContextState;
} // namespace detail
@@ -1808,7 +1928,13 @@ class DOCTEST_INTERFACE Context
public:
explicit Context(int argc = 0, const char* const* argv = nullptr);
- ~Context();
+ Context(const Context&) = delete;
+ Context(Context&&) = delete;
+
+ Context& operator=(const Context&) = delete;
+ Context& operator=(Context&&) = delete;
+
+ ~Context(); // NOLINT(performance-trivially-destructible)
void applyCommandLine(int argc, const char* const* argv);
@@ -1916,8 +2042,7 @@ struct DOCTEST_INTERFACE IReporter
// or isn't in the execution range (between first and last) (safe to cache a pointer to the input)
virtual void test_case_skipped(const TestCaseData&) = 0;
- // doctest will not be managing the lifetimes of reporters given to it but this would still be nice to have
- virtual ~IReporter();
+ DOCTEST_DECLARE_INTERFACE(IReporter)
// can obtain all currently active contexts and stringify them if one wishes to do so
static int get_num_active_contexts();
@@ -1929,7 +2054,7 @@ struct DOCTEST_INTERFACE IReporter
};
namespace detail {
- typedef IReporter* (*reporterCreatorFunc)(const ContextOptions&);
+ using reporterCreatorFunc = IReporter* (*)(const ContextOptions&);
DOCTEST_INTERFACE void registerReporterImpl(const char* name, int prio, reporterCreatorFunc c, bool isReporter);
@@ -1946,15 +2071,30 @@ int registerReporter(const char* name, int priority, bool isReporter) {
}
} // namespace doctest
+#ifdef DOCTEST_CONFIG_ASSERTS_RETURN_VALUES
+#define DOCTEST_FUNC_EMPTY [] { return false; }()
+#else
+#define DOCTEST_FUNC_EMPTY (void)0
+#endif
+
// if registering is not disabled
-#if !defined(DOCTEST_CONFIG_DISABLE)
+#ifndef DOCTEST_CONFIG_DISABLE
+
+#ifdef DOCTEST_CONFIG_ASSERTS_RETURN_VALUES
+#define DOCTEST_FUNC_SCOPE_BEGIN [&]
+#define DOCTEST_FUNC_SCOPE_END ()
+#define DOCTEST_FUNC_SCOPE_RET(v) return v
+#else
+#define DOCTEST_FUNC_SCOPE_BEGIN do
+#define DOCTEST_FUNC_SCOPE_END while(false)
+#define DOCTEST_FUNC_SCOPE_RET(v) (void)0
+#endif
// common code in asserts - for convenience
#define DOCTEST_ASSERT_LOG_REACT_RETURN(b) \
- if(b.log()) \
- DOCTEST_BREAK_INTO_DEBUGGER(); \
- b.react(); \
- return !b.m_failed
+ if(b.log()) DOCTEST_BREAK_INTO_DEBUGGER(); \
+ b.react(); \
+ DOCTEST_FUNC_SCOPE_RET(!b.m_failed)
#ifdef DOCTEST_CONFIG_NO_TRY_CATCH_IN_ASSERTS
#define DOCTEST_WRAP_IN_TRY(x) x;
@@ -1976,7 +2116,7 @@ int registerReporter(const char* name, int priority, bool isReporter) {
// registers the test by initializing a dummy var with a function
#define DOCTEST_REGISTER_FUNCTION(global_prefix, f, decorators) \
- global_prefix DOCTEST_GLOBAL_NO_WARNINGS(DOCTEST_ANONYMOUS(DOCTEST_ANON_VAR_), \
+ global_prefix DOCTEST_GLOBAL_NO_WARNINGS(DOCTEST_ANONYMOUS(DOCTEST_ANON_VAR_), /* NOLINT */ \
doctest::detail::regTest( \
doctest::detail::TestCase( \
f, __FILE__, __LINE__, \
@@ -1984,18 +2124,18 @@ int registerReporter(const char* name, int priority, bool isReporter) {
decorators))
#define DOCTEST_IMPLEMENT_FIXTURE(der, base, func, decorators) \
- namespace { \
+ namespace { /* NOLINT */ \
struct der : public base \
{ \
void f(); \
}; \
- static void func() { \
+ static inline DOCTEST_NOINLINE void func() { \
der v; \
v.f(); \
} \
DOCTEST_REGISTER_FUNCTION(DOCTEST_EMPTY, func, decorators) \
} \
- inline DOCTEST_NOINLINE void der::f()
+ inline DOCTEST_NOINLINE void der::f() // NOLINT(misc-definitions-in-headers)
#define DOCTEST_CREATE_AND_REGISTER_FUNCTION(f, decorators) \
static void f(); \
@@ -2004,7 +2144,7 @@ int registerReporter(const char* name, int priority, bool isReporter) {
#define DOCTEST_CREATE_AND_REGISTER_FUNCTION_IN_CLASS(f, proxy, decorators) \
static doctest::detail::funcType proxy() { return f; } \
- DOCTEST_REGISTER_FUNCTION(inline, proxy(), decorators) \
+ DOCTEST_REGISTER_FUNCTION(inline, proxy(), decorators) \
static void f()
// for registering tests
@@ -2012,7 +2152,7 @@ int registerReporter(const char* name, int priority, bool isReporter) {
DOCTEST_CREATE_AND_REGISTER_FUNCTION(DOCTEST_ANONYMOUS(DOCTEST_ANON_FUNC_), decorators)
// for registering tests in classes - requires C++17 for inline variables!
-#if __cplusplus >= 201703L || (DOCTEST_MSVC >= DOCTEST_COMPILER(19, 12, 0) && _MSVC_LANG >= 201703L)
+#if DOCTEST_CPLUSPLUS >= 201703L
#define DOCTEST_TEST_CASE_CLASS(decorators) \
DOCTEST_CREATE_AND_REGISTER_FUNCTION_IN_CLASS(DOCTEST_ANONYMOUS(DOCTEST_ANON_FUNC_), \
DOCTEST_ANONYMOUS(DOCTEST_ANON_PROXY_), \
@@ -2028,22 +2168,21 @@ int registerReporter(const char* name, int priority, bool isReporter) {
DOCTEST_ANONYMOUS(DOCTEST_ANON_FUNC_), decorators)
// for converting types to strings without the <typeinfo> header and demangling
-#define DOCTEST_TYPE_TO_STRING_IMPL(...) \
- template <> \
- inline const char* type_to_string<__VA_ARGS__>() { \
- return "<" #__VA_ARGS__ ">"; \
- }
-#define DOCTEST_TYPE_TO_STRING(...) \
- namespace doctest { namespace detail { \
- DOCTEST_TYPE_TO_STRING_IMPL(__VA_ARGS__) \
+#define DOCTEST_TYPE_TO_STRING_AS(str, ...) \
+ namespace doctest { \
+ template <> \
+ inline String toString<__VA_ARGS__>() { \
+ return str; \
} \
} \
static_assert(true, "")
+#define DOCTEST_TYPE_TO_STRING(...) DOCTEST_TYPE_TO_STRING_AS(#__VA_ARGS__, __VA_ARGS__)
+
#define DOCTEST_TEST_CASE_TEMPLATE_DEFINE_IMPL(dec, T, iter, func) \
template <typename T> \
static void func(); \
- namespace { \
+ namespace { /* NOLINT */ \
template <typename Tuple> \
struct iter; \
template <typename Type, typename... Rest> \
@@ -2052,7 +2191,7 @@ int registerReporter(const char* name, int priority, bool isReporter) {
iter(const char* file, unsigned line, int index) { \
doctest::detail::regTest(doctest::detail::TestCase(func<Type>, file, line, \
doctest_detail_test_suite_ns::getCurrentTestSuite(), \
- doctest::detail::type_to_string<Type>(), \
+ doctest::toString<Type>(), \
int(line) * 1000 + index) \
* dec); \
iter<std::tuple<Rest...>>(file, line, index + 1); \
@@ -2072,7 +2211,7 @@ int registerReporter(const char* name, int priority, bool isReporter) {
DOCTEST_ANONYMOUS(DOCTEST_ANON_TMP_))
#define DOCTEST_TEST_CASE_TEMPLATE_INSTANTIATE_IMPL(id, anon, ...) \
- DOCTEST_GLOBAL_NO_WARNINGS(DOCTEST_CAT(anon, DUMMY), \
+ DOCTEST_GLOBAL_NO_WARNINGS(DOCTEST_CAT(anon, DUMMY), /* NOLINT(cert-err58-cpp, fuchsia-statically-constructed-objects) */ \
doctest::detail::instantiationHelper( \
DOCTEST_CAT(id, ITERATOR)<__VA_ARGS__>(__FILE__, __LINE__, 0)))
@@ -2101,7 +2240,7 @@ int registerReporter(const char* name, int priority, bool isReporter) {
// for grouping tests in test suites by using code blocks
#define DOCTEST_TEST_SUITE_IMPL(decorators, ns_name) \
namespace ns_name { namespace doctest_detail_test_suite_ns { \
- static DOCTEST_NOINLINE doctest::detail::TestSuite& getCurrentTestSuite() { \
+ static DOCTEST_NOINLINE doctest::detail::TestSuite& getCurrentTestSuite() noexcept { \
DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(4640) \
DOCTEST_CLANG_SUPPRESS_WARNING_WITH_PUSH("-Wexit-time-destructors") \
DOCTEST_GCC_SUPPRESS_WARNING_WITH_PUSH("-Wmissing-field-initializers") \
@@ -2125,20 +2264,20 @@ int registerReporter(const char* name, int priority, bool isReporter) {
// for starting a testsuite block
#define DOCTEST_TEST_SUITE_BEGIN(decorators) \
- DOCTEST_GLOBAL_NO_WARNINGS(DOCTEST_ANONYMOUS(DOCTEST_ANON_VAR_), \
+ DOCTEST_GLOBAL_NO_WARNINGS(DOCTEST_ANONYMOUS(DOCTEST_ANON_VAR_), /* NOLINT(cert-err58-cpp) */ \
doctest::detail::setTestSuite(doctest::detail::TestSuite() * decorators)) \
static_assert(true, "")
// for ending a testsuite block
#define DOCTEST_TEST_SUITE_END \
- DOCTEST_GLOBAL_NO_WARNINGS(DOCTEST_ANONYMOUS(DOCTEST_ANON_VAR_), \
+ DOCTEST_GLOBAL_NO_WARNINGS(DOCTEST_ANONYMOUS(DOCTEST_ANON_VAR_), /* NOLINT(cert-err58-cpp) */ \
doctest::detail::setTestSuite(doctest::detail::TestSuite() * "")) \
- typedef int DOCTEST_ANONYMOUS(DOCTEST_ANON_FOR_SEMICOLON_)
+ using DOCTEST_ANONYMOUS(DOCTEST_ANON_FOR_SEMICOLON_) = int
// for registering exception translators
#define DOCTEST_REGISTER_EXCEPTION_TRANSLATOR_IMPL(translatorName, signature) \
inline doctest::String translatorName(signature); \
- DOCTEST_GLOBAL_NO_WARNINGS(DOCTEST_ANONYMOUS(DOCTEST_ANON_TRANSLATOR_), \
+ DOCTEST_GLOBAL_NO_WARNINGS(DOCTEST_ANONYMOUS(DOCTEST_ANON_TRANSLATOR_), /* NOLINT(cert-err58-cpp) */ \
doctest::registerExceptionTranslator(translatorName)) \
doctest::String translatorName(signature)
@@ -2148,13 +2287,13 @@ int registerReporter(const char* name, int priority, bool isReporter) {
// for registering reporters
#define DOCTEST_REGISTER_REPORTER(name, priority, reporter) \
- DOCTEST_GLOBAL_NO_WARNINGS(DOCTEST_ANONYMOUS(DOCTEST_ANON_REPORTER_), \
+ DOCTEST_GLOBAL_NO_WARNINGS(DOCTEST_ANONYMOUS(DOCTEST_ANON_REPORTER_), /* NOLINT(cert-err58-cpp) */ \
doctest::registerReporter<reporter>(name, priority, true)) \
static_assert(true, "")
// for registering listeners
#define DOCTEST_REGISTER_LISTENER(name, priority, reporter) \
- DOCTEST_GLOBAL_NO_WARNINGS(DOCTEST_ANONYMOUS(DOCTEST_ANON_REPORTER_), \
+ DOCTEST_GLOBAL_NO_WARNINGS(DOCTEST_ANONYMOUS(DOCTEST_ANON_REPORTER_), /* NOLINT(cert-err58-cpp) */ \
doctest::registerReporter<reporter>(name, priority, false)) \
static_assert(true, "")
@@ -2177,13 +2316,13 @@ int registerReporter(const char* name, int priority, bool isReporter) {
#define DOCTEST_CAPTURE(x) DOCTEST_INFO(#x " := ", x)
#define DOCTEST_ADD_AT_IMPL(type, file, line, mb, ...) \
- [&] { \
+ DOCTEST_FUNC_SCOPE_BEGIN { \
doctest::detail::MessageBuilder mb(file, line, doctest::assertType::type); \
mb * __VA_ARGS__; \
if(mb.log()) \
DOCTEST_BREAK_INTO_DEBUGGER(); \
mb.react(); \
- }()
+ } DOCTEST_FUNC_SCOPE_END
// clang-format off
#define DOCTEST_ADD_MESSAGE_AT(file, line, ...) DOCTEST_ADD_AT_IMPL(is_warn, file, line, DOCTEST_ANONYMOUS(DOCTEST_MESSAGE_), __VA_ARGS__)
@@ -2201,18 +2340,37 @@ int registerReporter(const char* name, int priority, bool isReporter) {
#define DOCTEST_ASSERT_IMPLEMENT_2(assert_type, ...) \
DOCTEST_CLANG_SUPPRESS_WARNING_WITH_PUSH("-Woverloaded-shift-op-parentheses") \
+ /* NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDeleteLeaks) */ \
doctest::detail::ResultBuilder DOCTEST_RB(doctest::assertType::assert_type, __FILE__, \
__LINE__, #__VA_ARGS__); \
DOCTEST_WRAP_IN_TRY(DOCTEST_RB.setResult( \
doctest::detail::ExpressionDecomposer(doctest::assertType::assert_type) \
- << __VA_ARGS__)) \
+ << __VA_ARGS__)) /* NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDeleteLeaks) */ \
DOCTEST_ASSERT_LOG_REACT_RETURN(DOCTEST_RB) \
DOCTEST_CLANG_SUPPRESS_WARNING_POP
#define DOCTEST_ASSERT_IMPLEMENT_1(assert_type, ...) \
- [&] { \
+ DOCTEST_FUNC_SCOPE_BEGIN { \
DOCTEST_ASSERT_IMPLEMENT_2(assert_type, __VA_ARGS__); \
- }()
+ } DOCTEST_FUNC_SCOPE_END // NOLINT(clang-analyzer-cplusplus.NewDeleteLeaks)
+
+#define DOCTEST_BINARY_ASSERT(assert_type, comp, ...) \
+ DOCTEST_FUNC_SCOPE_BEGIN { \
+ doctest::detail::ResultBuilder DOCTEST_RB(doctest::assertType::assert_type, __FILE__, \
+ __LINE__, #__VA_ARGS__); \
+ DOCTEST_WRAP_IN_TRY( \
+ DOCTEST_RB.binary_assert<doctest::detail::binaryAssertComparison::comp>( \
+ __VA_ARGS__)) \
+ DOCTEST_ASSERT_LOG_REACT_RETURN(DOCTEST_RB); \
+ } DOCTEST_FUNC_SCOPE_END
+
+#define DOCTEST_UNARY_ASSERT(assert_type, ...) \
+ DOCTEST_FUNC_SCOPE_BEGIN { \
+ doctest::detail::ResultBuilder DOCTEST_RB(doctest::assertType::assert_type, __FILE__, \
+ __LINE__, #__VA_ARGS__); \
+ DOCTEST_WRAP_IN_TRY(DOCTEST_RB.unary_assert(__VA_ARGS__)) \
+ DOCTEST_ASSERT_LOG_REACT_RETURN(DOCTEST_RB); \
+ } DOCTEST_FUNC_SCOPE_END
#else // DOCTEST_CONFIG_SUPER_FAST_ASSERTS
@@ -2226,6 +2384,14 @@ int registerReporter(const char* name, int priority, bool isReporter) {
doctest::detail::ExpressionDecomposer(doctest::assertType::assert_type) \
<< __VA_ARGS__) DOCTEST_CLANG_SUPPRESS_WARNING_POP
+#define DOCTEST_BINARY_ASSERT(assert_type, comparison, ...) \
+ doctest::detail::binary_assert<doctest::detail::binaryAssertComparison::comparison>( \
+ doctest::assertType::assert_type, __FILE__, __LINE__, #__VA_ARGS__, __VA_ARGS__)
+
+#define DOCTEST_UNARY_ASSERT(assert_type, ...) \
+ doctest::detail::unary_assert(doctest::assertType::assert_type, __FILE__, __LINE__, \
+ #__VA_ARGS__, __VA_ARGS__)
+
#endif // DOCTEST_CONFIG_SUPER_FAST_ASSERTS
#define DOCTEST_WARN(...) DOCTEST_ASSERT_IMPLEMENT_1(DT_WARN, __VA_ARGS__)
@@ -2236,34 +2402,62 @@ int registerReporter(const char* name, int priority, bool isReporter) {
#define DOCTEST_REQUIRE_FALSE(...) DOCTEST_ASSERT_IMPLEMENT_1(DT_REQUIRE_FALSE, __VA_ARGS__)
// clang-format off
-#define DOCTEST_WARN_MESSAGE(cond, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_ASSERT_IMPLEMENT_2(DT_WARN, cond); }()
-#define DOCTEST_CHECK_MESSAGE(cond, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_ASSERT_IMPLEMENT_2(DT_CHECK, cond); }()
-#define DOCTEST_REQUIRE_MESSAGE(cond, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_ASSERT_IMPLEMENT_2(DT_REQUIRE, cond); }()
-#define DOCTEST_WARN_FALSE_MESSAGE(cond, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_ASSERT_IMPLEMENT_2(DT_WARN_FALSE, cond); }()
-#define DOCTEST_CHECK_FALSE_MESSAGE(cond, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_ASSERT_IMPLEMENT_2(DT_CHECK_FALSE, cond); }()
-#define DOCTEST_REQUIRE_FALSE_MESSAGE(cond, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_ASSERT_IMPLEMENT_2(DT_REQUIRE_FALSE, cond); }()
+#define DOCTEST_WARN_MESSAGE(cond, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_ASSERT_IMPLEMENT_2(DT_WARN, cond); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_CHECK_MESSAGE(cond, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_ASSERT_IMPLEMENT_2(DT_CHECK, cond); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_REQUIRE_MESSAGE(cond, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_ASSERT_IMPLEMENT_2(DT_REQUIRE, cond); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_WARN_FALSE_MESSAGE(cond, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_ASSERT_IMPLEMENT_2(DT_WARN_FALSE, cond); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_CHECK_FALSE_MESSAGE(cond, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_ASSERT_IMPLEMENT_2(DT_CHECK_FALSE, cond); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_REQUIRE_FALSE_MESSAGE(cond, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_ASSERT_IMPLEMENT_2(DT_REQUIRE_FALSE, cond); } DOCTEST_FUNC_SCOPE_END
// clang-format on
+#define DOCTEST_WARN_EQ(...) DOCTEST_BINARY_ASSERT(DT_WARN_EQ, eq, __VA_ARGS__)
+#define DOCTEST_CHECK_EQ(...) DOCTEST_BINARY_ASSERT(DT_CHECK_EQ, eq, __VA_ARGS__)
+#define DOCTEST_REQUIRE_EQ(...) DOCTEST_BINARY_ASSERT(DT_REQUIRE_EQ, eq, __VA_ARGS__)
+#define DOCTEST_WARN_NE(...) DOCTEST_BINARY_ASSERT(DT_WARN_NE, ne, __VA_ARGS__)
+#define DOCTEST_CHECK_NE(...) DOCTEST_BINARY_ASSERT(DT_CHECK_NE, ne, __VA_ARGS__)
+#define DOCTEST_REQUIRE_NE(...) DOCTEST_BINARY_ASSERT(DT_REQUIRE_NE, ne, __VA_ARGS__)
+#define DOCTEST_WARN_GT(...) DOCTEST_BINARY_ASSERT(DT_WARN_GT, gt, __VA_ARGS__)
+#define DOCTEST_CHECK_GT(...) DOCTEST_BINARY_ASSERT(DT_CHECK_GT, gt, __VA_ARGS__)
+#define DOCTEST_REQUIRE_GT(...) DOCTEST_BINARY_ASSERT(DT_REQUIRE_GT, gt, __VA_ARGS__)
+#define DOCTEST_WARN_LT(...) DOCTEST_BINARY_ASSERT(DT_WARN_LT, lt, __VA_ARGS__)
+#define DOCTEST_CHECK_LT(...) DOCTEST_BINARY_ASSERT(DT_CHECK_LT, lt, __VA_ARGS__)
+#define DOCTEST_REQUIRE_LT(...) DOCTEST_BINARY_ASSERT(DT_REQUIRE_LT, lt, __VA_ARGS__)
+#define DOCTEST_WARN_GE(...) DOCTEST_BINARY_ASSERT(DT_WARN_GE, ge, __VA_ARGS__)
+#define DOCTEST_CHECK_GE(...) DOCTEST_BINARY_ASSERT(DT_CHECK_GE, ge, __VA_ARGS__)
+#define DOCTEST_REQUIRE_GE(...) DOCTEST_BINARY_ASSERT(DT_REQUIRE_GE, ge, __VA_ARGS__)
+#define DOCTEST_WARN_LE(...) DOCTEST_BINARY_ASSERT(DT_WARN_LE, le, __VA_ARGS__)
+#define DOCTEST_CHECK_LE(...) DOCTEST_BINARY_ASSERT(DT_CHECK_LE, le, __VA_ARGS__)
+#define DOCTEST_REQUIRE_LE(...) DOCTEST_BINARY_ASSERT(DT_REQUIRE_LE, le, __VA_ARGS__)
+
+#define DOCTEST_WARN_UNARY(...) DOCTEST_UNARY_ASSERT(DT_WARN_UNARY, __VA_ARGS__)
+#define DOCTEST_CHECK_UNARY(...) DOCTEST_UNARY_ASSERT(DT_CHECK_UNARY, __VA_ARGS__)
+#define DOCTEST_REQUIRE_UNARY(...) DOCTEST_UNARY_ASSERT(DT_REQUIRE_UNARY, __VA_ARGS__)
+#define DOCTEST_WARN_UNARY_FALSE(...) DOCTEST_UNARY_ASSERT(DT_WARN_UNARY_FALSE, __VA_ARGS__)
+#define DOCTEST_CHECK_UNARY_FALSE(...) DOCTEST_UNARY_ASSERT(DT_CHECK_UNARY_FALSE, __VA_ARGS__)
+#define DOCTEST_REQUIRE_UNARY_FALSE(...) DOCTEST_UNARY_ASSERT(DT_REQUIRE_UNARY_FALSE, __VA_ARGS__)
+
+#ifndef DOCTEST_CONFIG_NO_EXCEPTIONS
+
#define DOCTEST_ASSERT_THROWS_AS(expr, assert_type, message, ...) \
- [&] { \
+ DOCTEST_FUNC_SCOPE_BEGIN { \
if(!doctest::getContextOptions()->no_throw) { \
doctest::detail::ResultBuilder DOCTEST_RB(doctest::assertType::assert_type, __FILE__, \
__LINE__, #expr, #__VA_ARGS__, message); \
try { \
DOCTEST_CAST_TO_VOID(expr) \
- } catch(const typename doctest::detail::remove_const< \
- typename doctest::detail::remove_reference<__VA_ARGS__>::type>::type&) { \
+ } catch(const typename doctest::detail::types::remove_const< \
+ typename doctest::detail::types::remove_reference<__VA_ARGS__>::type>::type&) {\
DOCTEST_RB.translateException(); \
DOCTEST_RB.m_threw_as = true; \
} catch(...) { DOCTEST_RB.translateException(); } \
DOCTEST_ASSERT_LOG_REACT_RETURN(DOCTEST_RB); \
- } else { \
- return false; \
+ } else { /* NOLINT(*-else-after-return) */ \
+ DOCTEST_FUNC_SCOPE_RET(false); \
} \
- }()
+ } DOCTEST_FUNC_SCOPE_END
#define DOCTEST_ASSERT_THROWS_WITH(expr, expr_str, assert_type, ...) \
- [&] { \
+ DOCTEST_FUNC_SCOPE_BEGIN { \
if(!doctest::getContextOptions()->no_throw) { \
doctest::detail::ResultBuilder DOCTEST_RB(doctest::assertType::assert_type, __FILE__, \
__LINE__, expr_str, "", __VA_ARGS__); \
@@ -2271,20 +2465,20 @@ int registerReporter(const char* name, int priority, bool isReporter) {
DOCTEST_CAST_TO_VOID(expr) \
} catch(...) { DOCTEST_RB.translateException(); } \
DOCTEST_ASSERT_LOG_REACT_RETURN(DOCTEST_RB); \
- } else { \
- return false; \
+ } else { /* NOLINT(*-else-after-return) */ \
+ DOCTEST_FUNC_SCOPE_RET(false); \
} \
- }()
+ } DOCTEST_FUNC_SCOPE_END
#define DOCTEST_ASSERT_NOTHROW(assert_type, ...) \
- [&] { \
+ DOCTEST_FUNC_SCOPE_BEGIN { \
doctest::detail::ResultBuilder DOCTEST_RB(doctest::assertType::assert_type, __FILE__, \
__LINE__, #__VA_ARGS__); \
try { \
DOCTEST_CAST_TO_VOID(__VA_ARGS__) \
} catch(...) { DOCTEST_RB.translateException(); } \
DOCTEST_ASSERT_LOG_REACT_RETURN(DOCTEST_RB); \
- }()
+ } DOCTEST_FUNC_SCOPE_END
// clang-format off
#define DOCTEST_WARN_THROWS(...) DOCTEST_ASSERT_THROWS_WITH((__VA_ARGS__), #__VA_ARGS__, DT_WARN_THROWS, "")
@@ -2307,166 +2501,23 @@ int registerReporter(const char* name, int priority, bool isReporter) {
#define DOCTEST_CHECK_NOTHROW(...) DOCTEST_ASSERT_NOTHROW(DT_CHECK_NOTHROW, __VA_ARGS__)
#define DOCTEST_REQUIRE_NOTHROW(...) DOCTEST_ASSERT_NOTHROW(DT_REQUIRE_NOTHROW, __VA_ARGS__)
-#define DOCTEST_WARN_THROWS_MESSAGE(expr, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_WARN_THROWS(expr); }()
-#define DOCTEST_CHECK_THROWS_MESSAGE(expr, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_CHECK_THROWS(expr); }()
-#define DOCTEST_REQUIRE_THROWS_MESSAGE(expr, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_REQUIRE_THROWS(expr); }()
-#define DOCTEST_WARN_THROWS_AS_MESSAGE(expr, ex, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_WARN_THROWS_AS(expr, ex); }()
-#define DOCTEST_CHECK_THROWS_AS_MESSAGE(expr, ex, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_CHECK_THROWS_AS(expr, ex); }()
-#define DOCTEST_REQUIRE_THROWS_AS_MESSAGE(expr, ex, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_REQUIRE_THROWS_AS(expr, ex); }()
-#define DOCTEST_WARN_THROWS_WITH_MESSAGE(expr, with, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_WARN_THROWS_WITH(expr, with); }()
-#define DOCTEST_CHECK_THROWS_WITH_MESSAGE(expr, with, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_CHECK_THROWS_WITH(expr, with); }()
-#define DOCTEST_REQUIRE_THROWS_WITH_MESSAGE(expr, with, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_REQUIRE_THROWS_WITH(expr, with); }()
-#define DOCTEST_WARN_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_WARN_THROWS_WITH_AS(expr, with, ex); }()
-#define DOCTEST_CHECK_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_CHECK_THROWS_WITH_AS(expr, with, ex); }()
-#define DOCTEST_REQUIRE_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_REQUIRE_THROWS_WITH_AS(expr, with, ex); }()
-#define DOCTEST_WARN_NOTHROW_MESSAGE(expr, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_WARN_NOTHROW(expr); }()
-#define DOCTEST_CHECK_NOTHROW_MESSAGE(expr, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_CHECK_NOTHROW(expr); }()
-#define DOCTEST_REQUIRE_NOTHROW_MESSAGE(expr, ...) [&] {DOCTEST_INFO(__VA_ARGS__); DOCTEST_REQUIRE_NOTHROW(expr); }()
+#define DOCTEST_WARN_THROWS_MESSAGE(expr, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_WARN_THROWS(expr); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_CHECK_THROWS_MESSAGE(expr, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_CHECK_THROWS(expr); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_REQUIRE_THROWS_MESSAGE(expr, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_REQUIRE_THROWS(expr); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_WARN_THROWS_AS_MESSAGE(expr, ex, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_WARN_THROWS_AS(expr, ex); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_CHECK_THROWS_AS_MESSAGE(expr, ex, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_CHECK_THROWS_AS(expr, ex); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_REQUIRE_THROWS_AS_MESSAGE(expr, ex, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_REQUIRE_THROWS_AS(expr, ex); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_WARN_THROWS_WITH_MESSAGE(expr, with, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_WARN_THROWS_WITH(expr, with); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_CHECK_THROWS_WITH_MESSAGE(expr, with, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_CHECK_THROWS_WITH(expr, with); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_REQUIRE_THROWS_WITH_MESSAGE(expr, with, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_REQUIRE_THROWS_WITH(expr, with); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_WARN_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_WARN_THROWS_WITH_AS(expr, with, ex); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_CHECK_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_CHECK_THROWS_WITH_AS(expr, with, ex); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_REQUIRE_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_REQUIRE_THROWS_WITH_AS(expr, with, ex); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_WARN_NOTHROW_MESSAGE(expr, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_WARN_NOTHROW(expr); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_CHECK_NOTHROW_MESSAGE(expr, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_CHECK_NOTHROW(expr); } DOCTEST_FUNC_SCOPE_END
+#define DOCTEST_REQUIRE_NOTHROW_MESSAGE(expr, ...) DOCTEST_FUNC_SCOPE_BEGIN { DOCTEST_INFO(__VA_ARGS__); DOCTEST_REQUIRE_NOTHROW(expr); } DOCTEST_FUNC_SCOPE_END
// clang-format on
-#ifndef DOCTEST_CONFIG_SUPER_FAST_ASSERTS
-
-#define DOCTEST_BINARY_ASSERT(assert_type, comp, ...) \
- [&] { \
- doctest::detail::ResultBuilder DOCTEST_RB(doctest::assertType::assert_type, __FILE__, \
- __LINE__, #__VA_ARGS__); \
- DOCTEST_WRAP_IN_TRY( \
- DOCTEST_RB.binary_assert<doctest::detail::binaryAssertComparison::comp>( \
- __VA_ARGS__)) \
- DOCTEST_ASSERT_LOG_REACT_RETURN(DOCTEST_RB); \
- }()
-
-#define DOCTEST_UNARY_ASSERT(assert_type, ...) \
- [&] { \
- doctest::detail::ResultBuilder DOCTEST_RB(doctest::assertType::assert_type, __FILE__, \
- __LINE__, #__VA_ARGS__); \
- DOCTEST_WRAP_IN_TRY(DOCTEST_RB.unary_assert(__VA_ARGS__)) \
- DOCTEST_ASSERT_LOG_REACT_RETURN(DOCTEST_RB); \
- }()
-
-#else // DOCTEST_CONFIG_SUPER_FAST_ASSERTS
-
-#define DOCTEST_BINARY_ASSERT(assert_type, comparison, ...) \
- doctest::detail::binary_assert<doctest::detail::binaryAssertComparison::comparison>( \
- doctest::assertType::assert_type, __FILE__, __LINE__, #__VA_ARGS__, __VA_ARGS__)
-
-#define DOCTEST_UNARY_ASSERT(assert_type, ...) \
- doctest::detail::unary_assert(doctest::assertType::assert_type, __FILE__, __LINE__, \
- #__VA_ARGS__, __VA_ARGS__)
-
-#endif // DOCTEST_CONFIG_SUPER_FAST_ASSERTS
-
-#define DOCTEST_WARN_EQ(...) DOCTEST_BINARY_ASSERT(DT_WARN_EQ, eq, __VA_ARGS__)
-#define DOCTEST_CHECK_EQ(...) DOCTEST_BINARY_ASSERT(DT_CHECK_EQ, eq, __VA_ARGS__)
-#define DOCTEST_REQUIRE_EQ(...) DOCTEST_BINARY_ASSERT(DT_REQUIRE_EQ, eq, __VA_ARGS__)
-#define DOCTEST_WARN_NE(...) DOCTEST_BINARY_ASSERT(DT_WARN_NE, ne, __VA_ARGS__)
-#define DOCTEST_CHECK_NE(...) DOCTEST_BINARY_ASSERT(DT_CHECK_NE, ne, __VA_ARGS__)
-#define DOCTEST_REQUIRE_NE(...) DOCTEST_BINARY_ASSERT(DT_REQUIRE_NE, ne, __VA_ARGS__)
-#define DOCTEST_WARN_GT(...) DOCTEST_BINARY_ASSERT(DT_WARN_GT, gt, __VA_ARGS__)
-#define DOCTEST_CHECK_GT(...) DOCTEST_BINARY_ASSERT(DT_CHECK_GT, gt, __VA_ARGS__)
-#define DOCTEST_REQUIRE_GT(...) DOCTEST_BINARY_ASSERT(DT_REQUIRE_GT, gt, __VA_ARGS__)
-#define DOCTEST_WARN_LT(...) DOCTEST_BINARY_ASSERT(DT_WARN_LT, lt, __VA_ARGS__)
-#define DOCTEST_CHECK_LT(...) DOCTEST_BINARY_ASSERT(DT_CHECK_LT, lt, __VA_ARGS__)
-#define DOCTEST_REQUIRE_LT(...) DOCTEST_BINARY_ASSERT(DT_REQUIRE_LT, lt, __VA_ARGS__)
-#define DOCTEST_WARN_GE(...) DOCTEST_BINARY_ASSERT(DT_WARN_GE, ge, __VA_ARGS__)
-#define DOCTEST_CHECK_GE(...) DOCTEST_BINARY_ASSERT(DT_CHECK_GE, ge, __VA_ARGS__)
-#define DOCTEST_REQUIRE_GE(...) DOCTEST_BINARY_ASSERT(DT_REQUIRE_GE, ge, __VA_ARGS__)
-#define DOCTEST_WARN_LE(...) DOCTEST_BINARY_ASSERT(DT_WARN_LE, le, __VA_ARGS__)
-#define DOCTEST_CHECK_LE(...) DOCTEST_BINARY_ASSERT(DT_CHECK_LE, le, __VA_ARGS__)
-#define DOCTEST_REQUIRE_LE(...) DOCTEST_BINARY_ASSERT(DT_REQUIRE_LE, le, __VA_ARGS__)
-
-#define DOCTEST_WARN_UNARY(...) DOCTEST_UNARY_ASSERT(DT_WARN_UNARY, __VA_ARGS__)
-#define DOCTEST_CHECK_UNARY(...) DOCTEST_UNARY_ASSERT(DT_CHECK_UNARY, __VA_ARGS__)
-#define DOCTEST_REQUIRE_UNARY(...) DOCTEST_UNARY_ASSERT(DT_REQUIRE_UNARY, __VA_ARGS__)
-#define DOCTEST_WARN_UNARY_FALSE(...) DOCTEST_UNARY_ASSERT(DT_WARN_UNARY_FALSE, __VA_ARGS__)
-#define DOCTEST_CHECK_UNARY_FALSE(...) DOCTEST_UNARY_ASSERT(DT_CHECK_UNARY_FALSE, __VA_ARGS__)
-#define DOCTEST_REQUIRE_UNARY_FALSE(...) DOCTEST_UNARY_ASSERT(DT_REQUIRE_UNARY_FALSE, __VA_ARGS__)
-
-#ifdef DOCTEST_CONFIG_NO_EXCEPTIONS
-
-#undef DOCTEST_WARN_THROWS
-#undef DOCTEST_CHECK_THROWS
-#undef DOCTEST_REQUIRE_THROWS
-#undef DOCTEST_WARN_THROWS_AS
-#undef DOCTEST_CHECK_THROWS_AS
-#undef DOCTEST_REQUIRE_THROWS_AS
-#undef DOCTEST_WARN_THROWS_WITH
-#undef DOCTEST_CHECK_THROWS_WITH
-#undef DOCTEST_REQUIRE_THROWS_WITH
-#undef DOCTEST_WARN_THROWS_WITH_AS
-#undef DOCTEST_CHECK_THROWS_WITH_AS
-#undef DOCTEST_REQUIRE_THROWS_WITH_AS
-#undef DOCTEST_WARN_NOTHROW
-#undef DOCTEST_CHECK_NOTHROW
-#undef DOCTEST_REQUIRE_NOTHROW
-
-#undef DOCTEST_WARN_THROWS_MESSAGE
-#undef DOCTEST_CHECK_THROWS_MESSAGE
-#undef DOCTEST_REQUIRE_THROWS_MESSAGE
-#undef DOCTEST_WARN_THROWS_AS_MESSAGE
-#undef DOCTEST_CHECK_THROWS_AS_MESSAGE
-#undef DOCTEST_REQUIRE_THROWS_AS_MESSAGE
-#undef DOCTEST_WARN_THROWS_WITH_MESSAGE
-#undef DOCTEST_CHECK_THROWS_WITH_MESSAGE
-#undef DOCTEST_REQUIRE_THROWS_WITH_MESSAGE
-#undef DOCTEST_WARN_THROWS_WITH_AS_MESSAGE
-#undef DOCTEST_CHECK_THROWS_WITH_AS_MESSAGE
-#undef DOCTEST_REQUIRE_THROWS_WITH_AS_MESSAGE
-#undef DOCTEST_WARN_NOTHROW_MESSAGE
-#undef DOCTEST_CHECK_NOTHROW_MESSAGE
-#undef DOCTEST_REQUIRE_NOTHROW_MESSAGE
-
-#ifdef DOCTEST_CONFIG_NO_EXCEPTIONS_BUT_WITH_ALL_ASSERTS
-
-#define DOCTEST_WARN_THROWS(...) ([] { return false; })
-#define DOCTEST_CHECK_THROWS(...) ([] { return false; })
-#define DOCTEST_REQUIRE_THROWS(...) ([] { return false; })
-#define DOCTEST_WARN_THROWS_AS(expr, ...) ([] { return false; })
-#define DOCTEST_CHECK_THROWS_AS(expr, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_THROWS_AS(expr, ...) ([] { return false; })
-#define DOCTEST_WARN_THROWS_WITH(expr, ...) ([] { return false; })
-#define DOCTEST_CHECK_THROWS_WITH(expr, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_THROWS_WITH(expr, ...) ([] { return false; })
-#define DOCTEST_WARN_THROWS_WITH_AS(expr, with, ...) ([] { return false; })
-#define DOCTEST_CHECK_THROWS_WITH_AS(expr, with, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_THROWS_WITH_AS(expr, with, ...) ([] { return false; })
-#define DOCTEST_WARN_NOTHROW(...) ([] { return false; })
-#define DOCTEST_CHECK_NOTHROW(...) ([] { return false; })
-#define DOCTEST_REQUIRE_NOTHROW(...) ([] { return false; })
-
-#define DOCTEST_WARN_THROWS_MESSAGE(expr, ...) ([] { return false; })
-#define DOCTEST_CHECK_THROWS_MESSAGE(expr, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_THROWS_MESSAGE(expr, ...) ([] { return false; })
-#define DOCTEST_WARN_THROWS_AS_MESSAGE(expr, ex, ...) ([] { return false; })
-#define DOCTEST_CHECK_THROWS_AS_MESSAGE(expr, ex, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_THROWS_AS_MESSAGE(expr, ex, ...) ([] { return false; })
-#define DOCTEST_WARN_THROWS_WITH_MESSAGE(expr, with, ...) ([] { return false; })
-#define DOCTEST_CHECK_THROWS_WITH_MESSAGE(expr, with, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_THROWS_WITH_MESSAGE(expr, with, ...) ([] { return false; })
-#define DOCTEST_WARN_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) ([] { return false; })
-#define DOCTEST_CHECK_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) ([] { return false; })
-#define DOCTEST_WARN_NOTHROW_MESSAGE(expr, ...) ([] { return false; })
-#define DOCTEST_CHECK_NOTHROW_MESSAGE(expr, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_NOTHROW_MESSAGE(expr, ...) ([] { return false; })
-
-#else // DOCTEST_CONFIG_NO_EXCEPTIONS_BUT_WITH_ALL_ASSERTS
-
-#undef DOCTEST_REQUIRE
-#undef DOCTEST_REQUIRE_FALSE
-#undef DOCTEST_REQUIRE_MESSAGE
-#undef DOCTEST_REQUIRE_FALSE_MESSAGE
-#undef DOCTEST_REQUIRE_EQ
-#undef DOCTEST_REQUIRE_NE
-#undef DOCTEST_REQUIRE_GT
-#undef DOCTEST_REQUIRE_LT
-#undef DOCTEST_REQUIRE_GE
-#undef DOCTEST_REQUIRE_LE
-#undef DOCTEST_REQUIRE_UNARY
-#undef DOCTEST_REQUIRE_UNARY_FALSE
-
-#endif // DOCTEST_CONFIG_NO_EXCEPTIONS_BUT_WITH_ALL_ASSERTS
-
#endif // DOCTEST_CONFIG_NO_EXCEPTIONS
// =================================================================================================
@@ -2476,7 +2527,7 @@ int registerReporter(const char* name, int priority, bool isReporter) {
#else // DOCTEST_CONFIG_DISABLE
#define DOCTEST_IMPLEMENT_FIXTURE(der, base, func, name) \
- namespace { \
+ namespace /* NOLINT */ { \
template <typename DOCTEST_UNUSED_TEMPLATE_TYPE> \
struct der : public base \
{ void f(); }; \
@@ -2502,8 +2553,8 @@ int registerReporter(const char* name, int priority, bool isReporter) {
DOCTEST_ANONYMOUS(DOCTEST_ANON_FUNC_), name)
// for converting types to strings without the <typeinfo> header and demangling
+#define DOCTEST_TYPE_TO_STRING_AS(str, ...) static_assert(true, "")
#define DOCTEST_TYPE_TO_STRING(...) static_assert(true, "")
-#define DOCTEST_TYPE_TO_STRING_IMPL(...)
// for typed tests
#define DOCTEST_TEST_CASE_TEMPLATE(name, type, ...) \
@@ -2521,13 +2572,13 @@ int registerReporter(const char* name, int priority, bool isReporter) {
#define DOCTEST_SUBCASE(name)
// for a testsuite block
-#define DOCTEST_TEST_SUITE(name) namespace
+#define DOCTEST_TEST_SUITE(name) namespace // NOLINT
// for starting a testsuite block
#define DOCTEST_TEST_SUITE_BEGIN(name) static_assert(true, "")
// for ending a testsuite block
-#define DOCTEST_TEST_SUITE_END typedef int DOCTEST_ANONYMOUS(DOCTEST_ANON_FOR_SEMICOLON_)
+#define DOCTEST_TEST_SUITE_END using DOCTEST_ANONYMOUS(DOCTEST_ANON_FOR_SEMICOLON_) = int
#define DOCTEST_REGISTER_EXCEPTION_TRANSLATOR(signature) \
template <typename DOCTEST_UNUSED_TEMPLATE_TYPE> \
@@ -2545,7 +2596,8 @@ int registerReporter(const char* name, int priority, bool isReporter) {
#define DOCTEST_FAIL_CHECK(...) (static_cast<void>(0))
#define DOCTEST_FAIL(...) (static_cast<void>(0))
-#ifdef DOCTEST_CONFIG_EVALUATE_ASSERTS_EVEN_WHEN_DISABLED
+#if defined(DOCTEST_CONFIG_EVALUATE_ASSERTS_EVEN_WHEN_DISABLED) \
+ && defined(DOCTEST_CONFIG_ASSERTS_RETURN_VALUES)
#define DOCTEST_WARN(...) [&] { return __VA_ARGS__; }()
#define DOCTEST_CHECK(...) [&] { return __VA_ARGS__; }()
@@ -2601,85 +2653,196 @@ namespace detail {
#define DOCTEST_CHECK_UNARY_FALSE(...) [&] { return !(__VA_ARGS__); }()
#define DOCTEST_REQUIRE_UNARY_FALSE(...) [&] { return !(__VA_ARGS__); }()
+#ifndef DOCTEST_CONFIG_NO_EXCEPTIONS
+
+#define DOCTEST_WARN_THROWS_WITH(expr, with, ...) [] { static_assert(false, "Exception translation is not available when doctest is disabled."); return false; }()
+#define DOCTEST_CHECK_THROWS_WITH(expr, with, ...) DOCTEST_WARN_THROWS_WITH(,,)
+#define DOCTEST_REQUIRE_THROWS_WITH(expr, with, ...) DOCTEST_WARN_THROWS_WITH(,,)
+#define DOCTEST_WARN_THROWS_WITH_AS(expr, with, ex, ...) DOCTEST_WARN_THROWS_WITH(,,)
+#define DOCTEST_CHECK_THROWS_WITH_AS(expr, with, ex, ...) DOCTEST_WARN_THROWS_WITH(,,)
+#define DOCTEST_REQUIRE_THROWS_WITH_AS(expr, with, ex, ...) DOCTEST_WARN_THROWS_WITH(,,)
+
+#define DOCTEST_WARN_THROWS_WITH_MESSAGE(expr, with, ...) DOCTEST_WARN_THROWS_WITH(,,)
+#define DOCTEST_CHECK_THROWS_WITH_MESSAGE(expr, with, ...) DOCTEST_WARN_THROWS_WITH(,,)
+#define DOCTEST_REQUIRE_THROWS_WITH_MESSAGE(expr, with, ...) DOCTEST_WARN_THROWS_WITH(,,)
+#define DOCTEST_WARN_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) DOCTEST_WARN_THROWS_WITH(,,)
+#define DOCTEST_CHECK_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) DOCTEST_WARN_THROWS_WITH(,,)
+#define DOCTEST_REQUIRE_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) DOCTEST_WARN_THROWS_WITH(,,)
+
+#define DOCTEST_WARN_THROWS(...) [&] { try { __VA_ARGS__; return false; } catch (...) { return true; } }()
+#define DOCTEST_CHECK_THROWS(...) [&] { try { __VA_ARGS__; return false; } catch (...) { return true; } }()
+#define DOCTEST_REQUIRE_THROWS(...) [&] { try { __VA_ARGS__; return false; } catch (...) { return true; } }()
+#define DOCTEST_WARN_THROWS_AS(expr, ...) [&] { try { expr; } catch (__VA_ARGS__) { return true; } catch (...) { } return false; }()
+#define DOCTEST_CHECK_THROWS_AS(expr, ...) [&] { try { expr; } catch (__VA_ARGS__) { return true; } catch (...) { } return false; }()
+#define DOCTEST_REQUIRE_THROWS_AS(expr, ...) [&] { try { expr; } catch (__VA_ARGS__) { return true; } catch (...) { } return false; }()
+#define DOCTEST_WARN_NOTHROW(...) [&] { try { __VA_ARGS__; return true; } catch (...) { return false; } }()
+#define DOCTEST_CHECK_NOTHROW(...) [&] { try { __VA_ARGS__; return true; } catch (...) { return false; } }()
+#define DOCTEST_REQUIRE_NOTHROW(...) [&] { try { __VA_ARGS__; return true; } catch (...) { return false; } }()
+
+#define DOCTEST_WARN_THROWS_MESSAGE(expr, ...) [&] { try { __VA_ARGS__; return false; } catch (...) { return true; } }()
+#define DOCTEST_CHECK_THROWS_MESSAGE(expr, ...) [&] { try { __VA_ARGS__; return false; } catch (...) { return true; } }()
+#define DOCTEST_REQUIRE_THROWS_MESSAGE(expr, ...) [&] { try { __VA_ARGS__; return false; } catch (...) { return true; } }()
+#define DOCTEST_WARN_THROWS_AS_MESSAGE(expr, ex, ...) [&] { try { expr; } catch (__VA_ARGS__) { return true; } catch (...) { } return false; }()
+#define DOCTEST_CHECK_THROWS_AS_MESSAGE(expr, ex, ...) [&] { try { expr; } catch (__VA_ARGS__) { return true; } catch (...) { } return false; }()
+#define DOCTEST_REQUIRE_THROWS_AS_MESSAGE(expr, ex, ...) [&] { try { expr; } catch (__VA_ARGS__) { return true; } catch (...) { } return false; }()
+#define DOCTEST_WARN_NOTHROW_MESSAGE(expr, ...) [&] { try { __VA_ARGS__; return true; } catch (...) { return false; } }()
+#define DOCTEST_CHECK_NOTHROW_MESSAGE(expr, ...) [&] { try { __VA_ARGS__; return true; } catch (...) { return false; } }()
+#define DOCTEST_REQUIRE_NOTHROW_MESSAGE(expr, ...) [&] { try { __VA_ARGS__; return true; } catch (...) { return false; } }()
+
+#endif // DOCTEST_CONFIG_NO_EXCEPTIONS
+
#else // DOCTEST_CONFIG_EVALUATE_ASSERTS_EVEN_WHEN_DISABLED
-#define DOCTEST_WARN(...) ([] { return false; })
-#define DOCTEST_CHECK(...) ([] { return false; })
-#define DOCTEST_REQUIRE(...) ([] { return false; })
-#define DOCTEST_WARN_FALSE(...) ([] { return false; })
-#define DOCTEST_CHECK_FALSE(...) ([] { return false; })
-#define DOCTEST_REQUIRE_FALSE(...) ([] { return false; })
-
-#define DOCTEST_WARN_MESSAGE(cond, ...) ([] { return false; })
-#define DOCTEST_CHECK_MESSAGE(cond, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_MESSAGE(cond, ...) ([] { return false; })
-#define DOCTEST_WARN_FALSE_MESSAGE(cond, ...) ([] { return false; })
-#define DOCTEST_CHECK_FALSE_MESSAGE(cond, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_FALSE_MESSAGE(cond, ...) ([] { return false; })
-
-#define DOCTEST_WARN_EQ(...) ([] { return false; })
-#define DOCTEST_CHECK_EQ(...) ([] { return false; })
-#define DOCTEST_REQUIRE_EQ(...) ([] { return false; })
-#define DOCTEST_WARN_NE(...) ([] { return false; })
-#define DOCTEST_CHECK_NE(...) ([] { return false; })
-#define DOCTEST_REQUIRE_NE(...) ([] { return false; })
-#define DOCTEST_WARN_GT(...) ([] { return false; })
-#define DOCTEST_CHECK_GT(...) ([] { return false; })
-#define DOCTEST_REQUIRE_GT(...) ([] { return false; })
-#define DOCTEST_WARN_LT(...) ([] { return false; })
-#define DOCTEST_CHECK_LT(...) ([] { return false; })
-#define DOCTEST_REQUIRE_LT(...) ([] { return false; })
-#define DOCTEST_WARN_GE(...) ([] { return false; })
-#define DOCTEST_CHECK_GE(...) ([] { return false; })
-#define DOCTEST_REQUIRE_GE(...) ([] { return false; })
-#define DOCTEST_WARN_LE(...) ([] { return false; })
-#define DOCTEST_CHECK_LE(...) ([] { return false; })
-#define DOCTEST_REQUIRE_LE(...) ([] { return false; })
-
-#define DOCTEST_WARN_UNARY(...) ([] { return false; })
-#define DOCTEST_CHECK_UNARY(...) ([] { return false; })
-#define DOCTEST_REQUIRE_UNARY(...) ([] { return false; })
-#define DOCTEST_WARN_UNARY_FALSE(...) ([] { return false; })
-#define DOCTEST_CHECK_UNARY_FALSE(...) ([] { return false; })
-#define DOCTEST_REQUIRE_UNARY_FALSE(...) ([] { return false; })
+#define DOCTEST_WARN(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_WARN_FALSE(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_FALSE(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_FALSE(...) DOCTEST_FUNC_EMPTY
+
+#define DOCTEST_WARN_MESSAGE(cond, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_MESSAGE(cond, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_MESSAGE(cond, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_WARN_FALSE_MESSAGE(cond, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_FALSE_MESSAGE(cond, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_FALSE_MESSAGE(cond, ...) DOCTEST_FUNC_EMPTY
+
+#define DOCTEST_WARN_EQ(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_EQ(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_EQ(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_WARN_NE(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_NE(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_NE(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_WARN_GT(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_GT(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_GT(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_WARN_LT(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_LT(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_LT(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_WARN_GE(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_GE(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_GE(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_WARN_LE(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_LE(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_LE(...) DOCTEST_FUNC_EMPTY
+
+#define DOCTEST_WARN_UNARY(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_UNARY(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_UNARY(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_WARN_UNARY_FALSE(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_UNARY_FALSE(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_UNARY_FALSE(...) DOCTEST_FUNC_EMPTY
-#endif // DOCTEST_CONFIG_EVALUATE_ASSERTS_EVEN_WHEN_DISABLED
+#ifndef DOCTEST_CONFIG_NO_EXCEPTIONS
-// TODO: think about if these also need to work properly even when doctest is disabled
-#define DOCTEST_WARN_THROWS(...) ([] { return false; })
-#define DOCTEST_CHECK_THROWS(...) ([] { return false; })
-#define DOCTEST_REQUIRE_THROWS(...) ([] { return false; })
-#define DOCTEST_WARN_THROWS_AS(expr, ...) ([] { return false; })
-#define DOCTEST_CHECK_THROWS_AS(expr, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_THROWS_AS(expr, ...) ([] { return false; })
-#define DOCTEST_WARN_THROWS_WITH(expr, ...) ([] { return false; })
-#define DOCTEST_CHECK_THROWS_WITH(expr, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_THROWS_WITH(expr, ...) ([] { return false; })
-#define DOCTEST_WARN_THROWS_WITH_AS(expr, with, ...) ([] { return false; })
-#define DOCTEST_CHECK_THROWS_WITH_AS(expr, with, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_THROWS_WITH_AS(expr, with, ...) ([] { return false; })
-#define DOCTEST_WARN_NOTHROW(...) ([] { return false; })
-#define DOCTEST_CHECK_NOTHROW(...) ([] { return false; })
-#define DOCTEST_REQUIRE_NOTHROW(...) ([] { return false; })
-
-#define DOCTEST_WARN_THROWS_MESSAGE(expr, ...) ([] { return false; })
-#define DOCTEST_CHECK_THROWS_MESSAGE(expr, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_THROWS_MESSAGE(expr, ...) ([] { return false; })
-#define DOCTEST_WARN_THROWS_AS_MESSAGE(expr, ex, ...) ([] { return false; })
-#define DOCTEST_CHECK_THROWS_AS_MESSAGE(expr, ex, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_THROWS_AS_MESSAGE(expr, ex, ...) ([] { return false; })
-#define DOCTEST_WARN_THROWS_WITH_MESSAGE(expr, with, ...) ([] { return false; })
-#define DOCTEST_CHECK_THROWS_WITH_MESSAGE(expr, with, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_THROWS_WITH_MESSAGE(expr, with, ...) ([] { return false; })
-#define DOCTEST_WARN_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) ([] { return false; })
-#define DOCTEST_CHECK_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) ([] { return false; })
-#define DOCTEST_WARN_NOTHROW_MESSAGE(expr, ...) ([] { return false; })
-#define DOCTEST_CHECK_NOTHROW_MESSAGE(expr, ...) ([] { return false; })
-#define DOCTEST_REQUIRE_NOTHROW_MESSAGE(expr, ...) ([] { return false; })
+#define DOCTEST_WARN_THROWS(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_THROWS(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_THROWS(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_WARN_THROWS_AS(expr, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_THROWS_AS(expr, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_THROWS_AS(expr, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_WARN_THROWS_WITH(expr, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_THROWS_WITH(expr, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_THROWS_WITH(expr, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_WARN_THROWS_WITH_AS(expr, with, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_THROWS_WITH_AS(expr, with, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_THROWS_WITH_AS(expr, with, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_WARN_NOTHROW(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_NOTHROW(...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_NOTHROW(...) DOCTEST_FUNC_EMPTY
+
+#define DOCTEST_WARN_THROWS_MESSAGE(expr, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_THROWS_MESSAGE(expr, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_THROWS_MESSAGE(expr, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_WARN_THROWS_AS_MESSAGE(expr, ex, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_THROWS_AS_MESSAGE(expr, ex, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_THROWS_AS_MESSAGE(expr, ex, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_WARN_THROWS_WITH_MESSAGE(expr, with, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_THROWS_WITH_MESSAGE(expr, with, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_THROWS_WITH_MESSAGE(expr, with, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_WARN_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_WARN_NOTHROW_MESSAGE(expr, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_CHECK_NOTHROW_MESSAGE(expr, ...) DOCTEST_FUNC_EMPTY
+#define DOCTEST_REQUIRE_NOTHROW_MESSAGE(expr, ...) DOCTEST_FUNC_EMPTY
+
+#endif // DOCTEST_CONFIG_NO_EXCEPTIONS
+
+#endif // DOCTEST_CONFIG_EVALUATE_ASSERTS_EVEN_WHEN_DISABLED
#endif // DOCTEST_CONFIG_DISABLE
+#ifdef DOCTEST_CONFIG_NO_EXCEPTIONS
+
+#ifdef DOCTEST_CONFIG_NO_EXCEPTIONS_BUT_WITH_ALL_ASSERTS
+#define DOCTEST_EXCEPTION_EMPTY_FUNC DOCTEST_FUNC_EMPTY
+#else // DOCTEST_CONFIG_NO_EXCEPTIONS_BUT_WITH_ALL_ASSERTS
+#define DOCTEST_EXCEPTION_EMPTY_FUNC [] { static_assert(false, "Exceptions are disabled! " \
+ "Use DOCTEST_CONFIG_NO_EXCEPTIONS_BUT_WITH_ALL_ASSERTS if you want to compile with exceptions disabled."); return false; }()
+
+#undef DOCTEST_REQUIRE
+#undef DOCTEST_REQUIRE_FALSE
+#undef DOCTEST_REQUIRE_MESSAGE
+#undef DOCTEST_REQUIRE_FALSE_MESSAGE
+#undef DOCTEST_REQUIRE_EQ
+#undef DOCTEST_REQUIRE_NE
+#undef DOCTEST_REQUIRE_GT
+#undef DOCTEST_REQUIRE_LT
+#undef DOCTEST_REQUIRE_GE
+#undef DOCTEST_REQUIRE_LE
+#undef DOCTEST_REQUIRE_UNARY
+#undef DOCTEST_REQUIRE_UNARY_FALSE
+
+#define DOCTEST_REQUIRE DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_FALSE DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_MESSAGE DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_FALSE_MESSAGE DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_EQ DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_NE DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_GT DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_LT DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_GE DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_LE DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_UNARY DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_UNARY_FALSE DOCTEST_EXCEPTION_EMPTY_FUNC
+
+#endif // DOCTEST_CONFIG_NO_EXCEPTIONS_BUT_WITH_ALL_ASSERTS
+
+#define DOCTEST_WARN_THROWS(...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_CHECK_THROWS(...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_THROWS(...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_WARN_THROWS_AS(expr, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_CHECK_THROWS_AS(expr, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_THROWS_AS(expr, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_WARN_THROWS_WITH(expr, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_CHECK_THROWS_WITH(expr, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_THROWS_WITH(expr, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_WARN_THROWS_WITH_AS(expr, with, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_CHECK_THROWS_WITH_AS(expr, with, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_THROWS_WITH_AS(expr, with, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_WARN_NOTHROW(...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_CHECK_NOTHROW(...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_NOTHROW(...) DOCTEST_EXCEPTION_EMPTY_FUNC
+
+#define DOCTEST_WARN_THROWS_MESSAGE(expr, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_CHECK_THROWS_MESSAGE(expr, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_THROWS_MESSAGE(expr, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_WARN_THROWS_AS_MESSAGE(expr, ex, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_CHECK_THROWS_AS_MESSAGE(expr, ex, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_THROWS_AS_MESSAGE(expr, ex, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_WARN_THROWS_WITH_MESSAGE(expr, with, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_CHECK_THROWS_WITH_MESSAGE(expr, with, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_THROWS_WITH_MESSAGE(expr, with, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_WARN_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_CHECK_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_THROWS_WITH_AS_MESSAGE(expr, with, ex, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_WARN_NOTHROW_MESSAGE(expr, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_CHECK_NOTHROW_MESSAGE(expr, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+#define DOCTEST_REQUIRE_NOTHROW_MESSAGE(expr, ...) DOCTEST_EXCEPTION_EMPTY_FUNC
+
+#endif // DOCTEST_CONFIG_NO_EXCEPTIONS
+
// clang-format off
// KEPT FOR BACKWARDS COMPATIBILITY - FORWARDING TO THE RIGHT MACROS
#define DOCTEST_FAST_WARN_EQ DOCTEST_WARN_EQ
@@ -2726,11 +2889,12 @@ namespace detail {
// clang-format on
// == SHORT VERSIONS OF THE MACROS
-#if !defined(DOCTEST_CONFIG_NO_SHORT_MACRO_NAMES)
+#ifndef DOCTEST_CONFIG_NO_SHORT_MACRO_NAMES
#define TEST_CASE(name) DOCTEST_TEST_CASE(name)
#define TEST_CASE_CLASS(name) DOCTEST_TEST_CASE_CLASS(name)
#define TEST_CASE_FIXTURE(x, name) DOCTEST_TEST_CASE_FIXTURE(x, name)
+#define TYPE_TO_STRING_AS(str, ...) DOCTEST_TYPE_TO_STRING_AS(str, __VA_ARGS__)
#define TYPE_TO_STRING(...) DOCTEST_TYPE_TO_STRING(__VA_ARGS__)
#define TEST_CASE_TEMPLATE(name, T, ...) DOCTEST_TEST_CASE_TEMPLATE(name, T, __VA_ARGS__)
#define TEST_CASE_TEMPLATE_DEFINE(name, T, id) DOCTEST_TEST_CASE_TEMPLATE_DEFINE(name, T, id)
@@ -2863,33 +3027,11 @@ namespace detail {
#endif // DOCTEST_CONFIG_NO_SHORT_MACRO_NAMES
-#if !defined(DOCTEST_CONFIG_DISABLE)
+#ifndef DOCTEST_CONFIG_DISABLE
// this is here to clear the 'current test suite' for the current translation unit - at the top
DOCTEST_TEST_SUITE_END();
-// add stringification for primitive/fundamental types
-namespace doctest { namespace detail {
- DOCTEST_TYPE_TO_STRING_IMPL(bool)
- DOCTEST_TYPE_TO_STRING_IMPL(float)
- DOCTEST_TYPE_TO_STRING_IMPL(double)
- DOCTEST_TYPE_TO_STRING_IMPL(long double)
- DOCTEST_TYPE_TO_STRING_IMPL(char)
- DOCTEST_TYPE_TO_STRING_IMPL(signed char)
- DOCTEST_TYPE_TO_STRING_IMPL(unsigned char)
-#if !DOCTEST_MSVC || defined(_NATIVE_WCHAR_T_DEFINED)
- DOCTEST_TYPE_TO_STRING_IMPL(wchar_t)
-#endif // not MSVC or wchar_t support enabled
- DOCTEST_TYPE_TO_STRING_IMPL(short int)
- DOCTEST_TYPE_TO_STRING_IMPL(unsigned short int)
- DOCTEST_TYPE_TO_STRING_IMPL(int)
- DOCTEST_TYPE_TO_STRING_IMPL(unsigned int)
- DOCTEST_TYPE_TO_STRING_IMPL(long int)
- DOCTEST_TYPE_TO_STRING_IMPL(unsigned long int)
- DOCTEST_TYPE_TO_STRING_IMPL(long long int)
- DOCTEST_TYPE_TO_STRING_IMPL(unsigned long long int)
-}} // namespace doctest::detail
-
#endif // DOCTEST_CONFIG_DISABLE
DOCTEST_CLANG_SUPPRESS_WARNING_POP
@@ -2981,16 +3123,27 @@ DOCTEST_MAKE_STD_HEADERS_CLEAN_FROM_WARNINGS_ON_WALL_BEGIN
#include <algorithm>
#include <iomanip>
#include <vector>
+#ifndef DOCTEST_CONFIG_NO_MULTITHREADING
#include <atomic>
#include <mutex>
+#define DOCTEST_DECLARE_MUTEX(name) std::mutex name;
+#define DOCTEST_DECLARE_STATIC_MUTEX(name) static DOCTEST_DECLARE_MUTEX(name)
+#define DOCTEST_LOCK_MUTEX(name) std::lock_guard<std::mutex> DOCTEST_ANONYMOUS(DOCTEST_ANON_LOCK_)(name);
+#else // DOCTEST_CONFIG_NO_MULTITHREADING
+#define DOCTEST_DECLARE_MUTEX(name)
+#define DOCTEST_DECLARE_STATIC_MUTEX(name)
+#define DOCTEST_LOCK_MUTEX(name)
+#endif // DOCTEST_CONFIG_NO_MULTITHREADING
#include <set>
#include <map>
+#include <unordered_set>
#include <exception>
#include <stdexcept>
#include <csignal>
#include <cfloat>
#include <cctype>
#include <cstdint>
+#include <string>
#ifdef DOCTEST_PLATFORM_MAC
#include <sys/types.h>
@@ -3045,7 +3198,7 @@ DOCTEST_MAKE_STD_HEADERS_CLEAN_FROM_WARNINGS_ON_WALL_END
#endif
#ifndef DOCTEST_THREAD_LOCAL
-#if DOCTEST_MSVC && (DOCTEST_MSVC < DOCTEST_COMPILER(19, 0, 0))
+#if defined(DOCTEST_CONFIG_NO_MULTITHREADING) || DOCTEST_MSVC && (DOCTEST_MSVC < DOCTEST_COMPILER(19, 0, 0))
#define DOCTEST_THREAD_LOCAL
#else // DOCTEST_MSVC
#define DOCTEST_THREAD_LOCAL thread_local
@@ -3107,20 +3260,6 @@ namespace {
}
}
- template <typename T>
- String fpToString(T value, int precision) {
- std::ostringstream oss;
- oss << std::setprecision(precision) << std::fixed << value;
- std::string d = oss.str();
- size_t i = d.find_last_not_of('0');
- if(i != std::string::npos && i != d.size() - 1) {
- if(d[i] == '.')
- i++;
- d = d.substr(0, i + 1);
- }
- return d.c_str();
- }
-
struct Endianness
{
enum Arch
@@ -3141,22 +3280,6 @@ namespace {
} // namespace
namespace detail {
- String rawMemoryToString(const void* object, unsigned size) {
- // Reverse order for little endian architectures
- int i = 0, end = static_cast<int>(size), inc = 1;
- if(Endianness::which() == Endianness::Little) {
- i = end - 1;
- end = inc = -1;
- }
-
- unsigned const char* bytes = static_cast<unsigned const char*>(object);
- std::ostream* oss = tlssPush();
- *oss << "0x" << std::setfill('0') << std::hex;
- for(; i != end; i += inc)
- *oss << std::setw(2) << static_cast<unsigned>(bytes[i]);
- return tlssPop();
- }
-
DOCTEST_THREAD_LOCAL class
{
std::vector<std::streampos> stack;
@@ -3194,19 +3317,19 @@ namespace timer_large_integer
{
#if defined(DOCTEST_PLATFORM_WINDOWS)
- typedef ULONGLONG type;
+ using type = ULONGLONG;
#else // DOCTEST_PLATFORM_WINDOWS
- typedef std::uint64_t type;
+ using type = std::uint64_t;
#endif // DOCTEST_PLATFORM_WINDOWS
}
-typedef timer_large_integer::type ticks_t;
+using ticks_t = timer_large_integer::type;
#ifdef DOCTEST_CONFIG_GETCURRENTTICKS
ticks_t getCurrentTicks() { return DOCTEST_CONFIG_GETCURRENTTICKS(); }
#elif defined(DOCTEST_PLATFORM_WINDOWS)
ticks_t getCurrentTicks() {
- static LARGE_INTEGER hz = {0}, hzo = {0};
+ static LARGE_INTEGER hz = { {0} }, hzo = { {0} };
if(!hz.QuadPart) {
QueryPerformanceFrequency(&hz);
QueryPerformanceCounter(&hzo);
@@ -3238,9 +3361,17 @@ typedef timer_large_integer::type ticks_t;
ticks_t m_ticks = 0;
};
-#ifdef DOCTEST_CONFIG_NO_MULTI_LANE_ATOMICS
+#ifdef DOCTEST_CONFIG_NO_MULTITHREADING
+ template <typename T>
+ using Atomic = T;
+#else // DOCTEST_CONFIG_NO_MULTITHREADING
template <typename T>
- using AtomicOrMultiLaneAtomic = std::atomic<T>;
+ using Atomic = std::atomic<T>;
+#endif // DOCTEST_CONFIG_NO_MULTITHREADING
+
+#if defined(DOCTEST_CONFIG_NO_MULTI_LANE_ATOMICS) || defined(DOCTEST_CONFIG_NO_MULTITHREADING)
+ template <typename T>
+ using MultiLaneAtomic = Atomic<T>;
#else // DOCTEST_CONFIG_NO_MULTI_LANE_ATOMICS
// Provides a multilane implementation of an atomic variable that supports add, sub, load,
// store. Instead of using a single atomic variable, this splits up into multiple ones,
@@ -3257,8 +3388,8 @@ typedef timer_large_integer::type ticks_t;
{
struct CacheLineAlignedAtomic
{
- std::atomic<T> atomic{};
- char padding[DOCTEST_MULTI_LANE_ATOMICS_CACHE_LINE_SIZE - sizeof(std::atomic<T>)];
+ Atomic<T> atomic{};
+ char padding[DOCTEST_MULTI_LANE_ATOMICS_CACHE_LINE_SIZE - sizeof(Atomic<T>)];
};
CacheLineAlignedAtomic m_atomics[DOCTEST_MULTI_LANE_ATOMICS_THREAD_LANES];
@@ -3314,24 +3445,21 @@ typedef timer_large_integer::type ticks_t;
// assigned in a round-robin fashion.
// 3. This tlsLaneIdx is stored in the thread local data, so it is directly available with
// little overhead.
- std::atomic<T>& myAtomic() DOCTEST_NOEXCEPT {
- static std::atomic<size_t> laneCounter;
+ Atomic<T>& myAtomic() DOCTEST_NOEXCEPT {
+ static Atomic<size_t> laneCounter;
DOCTEST_THREAD_LOCAL size_t tlsLaneIdx =
laneCounter++ % DOCTEST_MULTI_LANE_ATOMICS_THREAD_LANES;
return m_atomics[tlsLaneIdx].atomic;
}
};
-
- template <typename T>
- using AtomicOrMultiLaneAtomic = MultiLaneAtomic<T>;
#endif // DOCTEST_CONFIG_NO_MULTI_LANE_ATOMICS
// this holds both parameters from the command line and runtime data for tests
struct ContextState : ContextOptions, TestRunStats, CurrentTestCaseStats
{
- AtomicOrMultiLaneAtomic<int> numAssertsCurrentTest_atomic;
- AtomicOrMultiLaneAtomic<int> numAssertsFailedCurrentTest_atomic;
+ MultiLaneAtomic<int> numAssertsCurrentTest_atomic;
+ MultiLaneAtomic<int> numAssertsFailedCurrentTest_atomic;
std::vector<std::vector<String>> filters = decltype(filters)(9); // 9 different filters
@@ -3344,11 +3472,12 @@ typedef timer_large_integer::type ticks_t;
std::vector<String> stringifiedContexts; // logging from INFO() due to an exception
// stuff for subcases
- std::vector<SubcaseSignature> subcasesStack;
- std::set<decltype(subcasesStack)> subcasesPassed;
- int subcasesCurrentMaxLevel;
- bool should_reenter;
- std::atomic<bool> shouldLogCurrentException;
+ bool reachedLeaf;
+ std::vector<SubcaseSignature> subcaseStack;
+ std::vector<SubcaseSignature> nextSubcaseStack;
+ std::unordered_set<unsigned long long> fullyTraversedSubcases;
+ size_t currentSubcaseDepth;
+ Atomic<bool> shouldLogCurrentException;
void resetRunData() {
numTestCases = 0;
@@ -3414,7 +3543,7 @@ typedef timer_large_integer::type ticks_t;
#endif // DOCTEST_CONFIG_DISABLE
} // namespace detail
-char* String::allocate(unsigned sz) {
+char* String::allocate(size_type sz) {
if (sz <= last) {
buf[sz] = '\0';
setLast(last - sz);
@@ -3429,8 +3558,12 @@ char* String::allocate(unsigned sz) {
}
}
-void String::setOnHeap() { *reinterpret_cast<unsigned char*>(&buf[last]) = 128; }
-void String::setLast(unsigned in) { buf[last] = char(in); }
+void String::setOnHeap() noexcept { *reinterpret_cast<unsigned char*>(&buf[last]) = 128; }
+void String::setLast(size_type in) noexcept { buf[last] = char(in); }
+void String::setSize(size_type sz) noexcept {
+ if (isOnStack()) { buf[sz] = '\0'; setLast(last - sz); }
+ else { data.ptr[sz] = '\0'; data.size = sz; }
+}
void String::copy(const String& other) {
if(other.isOnStack()) {
@@ -3440,7 +3573,7 @@ void String::copy(const String& other) {
}
}
-String::String() {
+String::String() noexcept {
buf[0] = '\0';
setLast();
}
@@ -3448,17 +3581,16 @@ String::String() {
String::~String() {
if(!isOnStack())
delete[] data.ptr;
- // NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDeleteLeaks)
-}
+} // NOLINT(clang-analyzer-cplusplus.NewDeleteLeaks)
String::String(const char* in)
: String(in, strlen(in)) {}
-String::String(const char* in, unsigned in_size) {
+String::String(const char* in, size_type in_size) {
memcpy(allocate(in_size), in, in_size);
}
-String::String(std::istream& in, unsigned in_size) {
+String::String(std::istream& in, size_type in_size) {
in.read(allocate(in_size), in_size);
}
@@ -3476,9 +3608,9 @@ String& String::operator=(const String& other) {
}
String& String::operator+=(const String& other) {
- const unsigned my_old_size = size();
- const unsigned other_size = other.size();
- const unsigned total_size = my_old_size + other_size;
+ const size_type my_old_size = size();
+ const size_type other_size = other.size();
+ const size_type total_size = my_old_size + other_size;
if(isOnStack()) {
if(total_size < len) {
// append to the current stack space
@@ -3525,13 +3657,13 @@ String& String::operator+=(const String& other) {
return *this;
}
-String::String(String&& other) {
+String::String(String&& other) noexcept {
memcpy(buf, other.buf, len);
other.buf[0] = '\0';
other.setLast();
}
-String& String::operator=(String&& other) {
+String& String::operator=(String&& other) noexcept {
if(this != &other) {
if(!isOnStack())
delete[] data.ptr;
@@ -3542,30 +3674,60 @@ String& String::operator=(String&& other) {
return *this;
}
-char String::operator[](unsigned i) const {
- return const_cast<String*>(this)->operator[](i); // NOLINT
+char String::operator[](size_type i) const {
+ return const_cast<String*>(this)->operator[](i);
}
-char& String::operator[](unsigned i) {
+char& String::operator[](size_type i) {
if(isOnStack())
return reinterpret_cast<char*>(buf)[i];
return data.ptr[i];
}
DOCTEST_GCC_SUPPRESS_WARNING_WITH_PUSH("-Wmaybe-uninitialized")
-unsigned String::size() const {
+String::size_type String::size() const {
if(isOnStack())
- return last - (unsigned(buf[last]) & 31); // using "last" would work only if "len" is 32
+ return last - (size_type(buf[last]) & 31); // using "last" would work only if "len" is 32
return data.size;
}
DOCTEST_GCC_SUPPRESS_WARNING_POP
-unsigned String::capacity() const {
+String::size_type String::capacity() const {
if(isOnStack())
return len;
return data.capacity;
}
+String String::substr(size_type pos, size_type cnt) && {
+ cnt = std::min(cnt, size() - 1 - pos);
+ char* cptr = c_str();
+ memmove(cptr, cptr + pos, cnt);
+ setSize(cnt);
+ return std::move(*this);
+}
+
+String String::substr(size_type pos, size_type cnt) const & {
+ cnt = std::min(cnt, size() - 1 - pos);
+ return String{ c_str() + pos, cnt };
+}
+
+String::size_type String::find(char ch, size_type pos) const {
+ const char* begin = c_str();
+ const char* end = begin + size();
+ const char* it = begin + pos;
+ for (; it < end && *it != ch; it++);
+ if (it < end) { return static_cast<size_type>(it - begin); }
+ else { return npos; }
+}
+
+String::size_type String::rfind(char ch, size_type pos) const {
+ const char* begin = c_str();
+ const char* it = begin + std::min(pos, size() - 1);
+ for (; it >= begin && *it != ch; it--);
+ if (it >= begin) { return static_cast<size_type>(it - begin); }
+ else { return npos; }
+}
+
int String::compare(const char* other, bool no_case) const {
if(no_case)
return doctest::stricmp(c_str(), other);
@@ -3576,20 +3738,32 @@ int String::compare(const String& other, bool no_case) const {
return compare(other.c_str(), no_case);
}
-// NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDeleteLeaks)
String operator+(const String& lhs, const String& rhs) { return String(lhs) += rhs; }
-// clang-format off
bool operator==(const String& lhs, const String& rhs) { return lhs.compare(rhs) == 0; }
bool operator!=(const String& lhs, const String& rhs) { return lhs.compare(rhs) != 0; }
bool operator< (const String& lhs, const String& rhs) { return lhs.compare(rhs) < 0; }
bool operator> (const String& lhs, const String& rhs) { return lhs.compare(rhs) > 0; }
bool operator<=(const String& lhs, const String& rhs) { return (lhs != rhs) ? lhs.compare(rhs) < 0 : true; }
bool operator>=(const String& lhs, const String& rhs) { return (lhs != rhs) ? lhs.compare(rhs) > 0 : true; }
-// clang-format on
std::ostream& operator<<(std::ostream& s, const String& in) { return s << in.c_str(); }
+Contains::Contains(const String& str) : string(str) { }
+
+bool Contains::checkWith(const String& other) const {
+ return strstr(other.c_str(), string.c_str()) != nullptr;
+}
+
+String toString(const Contains& in) {
+ return "Contains( " + in.string + " )";
+}
+
+bool operator==(const String& lhs, const Contains& rhs) { return rhs.checkWith(lhs); }
+bool operator==(const Contains& lhs, const String& rhs) { return lhs.checkWith(rhs); }
+bool operator!=(const String& lhs, const Contains& rhs) { return !rhs.checkWith(lhs); }
+bool operator!=(const Contains& lhs, const String& rhs) { return !lhs.checkWith(rhs); }
+
namespace {
void color_to_stream(std::ostream&, Color::Enum) DOCTEST_BRANCH_ON_DISABLED({}, ;)
} // namespace
@@ -3603,64 +3777,42 @@ namespace Color {
// clang-format off
const char* assertString(assertType::Enum at) {
- DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(4062) // enum 'x' in switch of enum 'y' is not handled
- switch(at) { //!OCLINT missing default in switch statements
- case assertType::DT_WARN : return "WARN";
- case assertType::DT_CHECK : return "CHECK";
- case assertType::DT_REQUIRE : return "REQUIRE";
-
- case assertType::DT_WARN_FALSE : return "WARN_FALSE";
- case assertType::DT_CHECK_FALSE : return "CHECK_FALSE";
- case assertType::DT_REQUIRE_FALSE : return "REQUIRE_FALSE";
-
- case assertType::DT_WARN_THROWS : return "WARN_THROWS";
- case assertType::DT_CHECK_THROWS : return "CHECK_THROWS";
- case assertType::DT_REQUIRE_THROWS : return "REQUIRE_THROWS";
-
- case assertType::DT_WARN_THROWS_AS : return "WARN_THROWS_AS";
- case assertType::DT_CHECK_THROWS_AS : return "CHECK_THROWS_AS";
- case assertType::DT_REQUIRE_THROWS_AS : return "REQUIRE_THROWS_AS";
-
- case assertType::DT_WARN_THROWS_WITH : return "WARN_THROWS_WITH";
- case assertType::DT_CHECK_THROWS_WITH : return "CHECK_THROWS_WITH";
- case assertType::DT_REQUIRE_THROWS_WITH : return "REQUIRE_THROWS_WITH";
-
- case assertType::DT_WARN_THROWS_WITH_AS : return "WARN_THROWS_WITH_AS";
- case assertType::DT_CHECK_THROWS_WITH_AS : return "CHECK_THROWS_WITH_AS";
- case assertType::DT_REQUIRE_THROWS_WITH_AS : return "REQUIRE_THROWS_WITH_AS";
-
- case assertType::DT_WARN_NOTHROW : return "WARN_NOTHROW";
- case assertType::DT_CHECK_NOTHROW : return "CHECK_NOTHROW";
- case assertType::DT_REQUIRE_NOTHROW : return "REQUIRE_NOTHROW";
-
- case assertType::DT_WARN_EQ : return "WARN_EQ";
- case assertType::DT_CHECK_EQ : return "CHECK_EQ";
- case assertType::DT_REQUIRE_EQ : return "REQUIRE_EQ";
- case assertType::DT_WARN_NE : return "WARN_NE";
- case assertType::DT_CHECK_NE : return "CHECK_NE";
- case assertType::DT_REQUIRE_NE : return "REQUIRE_NE";
- case assertType::DT_WARN_GT : return "WARN_GT";
- case assertType::DT_CHECK_GT : return "CHECK_GT";
- case assertType::DT_REQUIRE_GT : return "REQUIRE_GT";
- case assertType::DT_WARN_LT : return "WARN_LT";
- case assertType::DT_CHECK_LT : return "CHECK_LT";
- case assertType::DT_REQUIRE_LT : return "REQUIRE_LT";
- case assertType::DT_WARN_GE : return "WARN_GE";
- case assertType::DT_CHECK_GE : return "CHECK_GE";
- case assertType::DT_REQUIRE_GE : return "REQUIRE_GE";
- case assertType::DT_WARN_LE : return "WARN_LE";
- case assertType::DT_CHECK_LE : return "CHECK_LE";
- case assertType::DT_REQUIRE_LE : return "REQUIRE_LE";
-
- case assertType::DT_WARN_UNARY : return "WARN_UNARY";
- case assertType::DT_CHECK_UNARY : return "CHECK_UNARY";
- case assertType::DT_REQUIRE_UNARY : return "REQUIRE_UNARY";
- case assertType::DT_WARN_UNARY_FALSE : return "WARN_UNARY_FALSE";
- case assertType::DT_CHECK_UNARY_FALSE : return "CHECK_UNARY_FALSE";
- case assertType::DT_REQUIRE_UNARY_FALSE : return "REQUIRE_UNARY_FALSE";
+ DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(4061) // enum 'x' in switch of enum 'y' is not explicitely handled
+ #define DOCTEST_GENERATE_ASSERT_TYPE_CASE(assert_type) case assertType::DT_ ## assert_type: return #assert_type
+ #define DOCTEST_GENERATE_ASSERT_TYPE_CASES(assert_type) \
+ DOCTEST_GENERATE_ASSERT_TYPE_CASE(WARN_ ## assert_type); \
+ DOCTEST_GENERATE_ASSERT_TYPE_CASE(CHECK_ ## assert_type); \
+ DOCTEST_GENERATE_ASSERT_TYPE_CASE(REQUIRE_ ## assert_type)
+ switch(at) {
+ DOCTEST_GENERATE_ASSERT_TYPE_CASE(WARN);
+ DOCTEST_GENERATE_ASSERT_TYPE_CASE(CHECK);
+ DOCTEST_GENERATE_ASSERT_TYPE_CASE(REQUIRE);
+
+ DOCTEST_GENERATE_ASSERT_TYPE_CASES(FALSE);
+
+ DOCTEST_GENERATE_ASSERT_TYPE_CASES(THROWS);
+
+ DOCTEST_GENERATE_ASSERT_TYPE_CASES(THROWS_AS);
+
+ DOCTEST_GENERATE_ASSERT_TYPE_CASES(THROWS_WITH);
+
+ DOCTEST_GENERATE_ASSERT_TYPE_CASES(THROWS_WITH_AS);
+
+ DOCTEST_GENERATE_ASSERT_TYPE_CASES(NOTHROW);
+
+ DOCTEST_GENERATE_ASSERT_TYPE_CASES(EQ);
+ DOCTEST_GENERATE_ASSERT_TYPE_CASES(NE);
+ DOCTEST_GENERATE_ASSERT_TYPE_CASES(GT);
+ DOCTEST_GENERATE_ASSERT_TYPE_CASES(LT);
+ DOCTEST_GENERATE_ASSERT_TYPE_CASES(GE);
+ DOCTEST_GENERATE_ASSERT_TYPE_CASES(LE);
+
+ DOCTEST_GENERATE_ASSERT_TYPE_CASES(UNARY);
+ DOCTEST_GENERATE_ASSERT_TYPE_CASES(UNARY_FALSE);
+
+ default: DOCTEST_INTERNAL_ERROR("Tried stringifying invalid assert type!");
}
DOCTEST_MSVC_SUPPRESS_WARNING_POP
- return "";
}
// clang-format on
@@ -3694,6 +3846,12 @@ const char* skipPathFromFilename(const char* file) {
DOCTEST_CLANG_SUPPRESS_WARNING_POP
DOCTEST_GCC_SUPPRESS_WARNING_POP
+bool SubcaseSignature::operator==(const SubcaseSignature& other) const {
+ return m_line == other.m_line
+ && std::strcmp(m_file, other.m_file) == 0
+ && m_name == other.m_name;
+}
+
bool SubcaseSignature::operator<(const SubcaseSignature& other) const {
if(m_line != other.m_line)
return m_line < other.m_line;
@@ -3702,45 +3860,53 @@ bool SubcaseSignature::operator<(const SubcaseSignature& other) const {
return m_name.compare(other.m_name) < 0;
}
-IContextScope::IContextScope() = default;
-IContextScope::~IContextScope() = default;
+DOCTEST_DEFINE_INTERFACE(IContextScope)
-#ifdef DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING
-String toString(char* in) { return toString(static_cast<const char*>(in)); }
-// NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDeleteLeaks)
-String toString(const char* in) { return String("\"") + (in ? in : "{null string}") + "\""; }
-#endif // DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING
-String toString(bool in) { return in ? "true" : "false"; }
-String toString(float in) { return fpToString(in, 5) + "f"; }
-String toString(double in) { return fpToString(in, 10); }
-String toString(double long in) { return fpToString(in, 15); }
-
-#define DOCTEST_TO_STRING_OVERLOAD(type, fmt) \
- String toString(type in) { \
- char buf[64]; \
- std::sprintf(buf, fmt, in); \
- return buf; \
+namespace detail {
+ void filldata<const void*>::fill(std::ostream* stream, const void* in) {
+ if (in) { *stream << in; }
+ else { *stream << "nullptr"; }
}
-DOCTEST_TO_STRING_OVERLOAD(char, "%d")
-DOCTEST_TO_STRING_OVERLOAD(char signed, "%d")
-DOCTEST_TO_STRING_OVERLOAD(char unsigned, "%u")
-DOCTEST_TO_STRING_OVERLOAD(int short, "%d")
-DOCTEST_TO_STRING_OVERLOAD(int short unsigned, "%u")
-DOCTEST_TO_STRING_OVERLOAD(int, "%d")
-DOCTEST_TO_STRING_OVERLOAD(unsigned, "%u")
-DOCTEST_TO_STRING_OVERLOAD(int long, "%ld")
-DOCTEST_TO_STRING_OVERLOAD(int long unsigned, "%lu")
-DOCTEST_TO_STRING_OVERLOAD(int long long, "%lld")
-DOCTEST_TO_STRING_OVERLOAD(int long long unsigned, "%llu")
+ template <typename T>
+ String toStreamLit(T t) {
+ std::ostream* os = tlssPush();
+ os->operator<<(t);
+ return tlssPop();
+ }
+}
-String toString(std::nullptr_t) { return "NULL"; }
+#ifdef DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING
+String toString(const char* in) { return String("\"") + (in ? in : "{null string}") + "\""; }
+#endif // DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING
#if DOCTEST_MSVC >= DOCTEST_COMPILER(19, 20, 0)
// see this issue on why this is needed: https://github.com/doctest/doctest/issues/183
String toString(const std::string& in) { return in.c_str(); }
#endif // VS 2019
+String toString(String in) { return in; }
+
+String toString(std::nullptr_t) { return "nullptr"; }
+
+String toString(bool in) { return in ? "true" : "false"; }
+
+String toString(float in) { return toStreamLit(in); }
+String toString(double in) { return toStreamLit(in); }
+String toString(double long in) { return toStreamLit(in); }
+
+String toString(char in) { return toStreamLit(static_cast<signed>(in)); }
+String toString(char signed in) { return toStreamLit(static_cast<signed>(in)); }
+String toString(char unsigned in) { return toStreamLit(static_cast<unsigned>(in)); }
+String toString(short in) { return toStreamLit(in); }
+String toString(short unsigned in) { return toStreamLit(in); }
+String toString(signed in) { return toStreamLit(in); }
+String toString(unsigned in) { return toStreamLit(in); }
+String toString(long in) { return toStreamLit(in); }
+String toString(long unsigned in) { return toStreamLit(in); }
+String toString(long long in) { return toStreamLit(in); }
+String toString(long long unsigned in) { return toStreamLit(in); }
+
Approx::Approx(double value)
: m_epsilon(static_cast<double>(std::numeric_limits<float>::epsilon()) * 100)
, m_scale(1.0)
@@ -3780,11 +3946,25 @@ bool operator>(double lhs, const Approx& rhs) { return lhs > rhs.m_value && lhs
bool operator>(const Approx& lhs, double rhs) { return lhs.m_value > rhs && lhs != rhs; }
String toString(const Approx& in) {
- // NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDeleteLeaks)
return "Approx( " + doctest::toString(in.m_value) + " )";
}
const ContextOptions* getContextOptions() { return DOCTEST_BRANCH_ON_DISABLED(nullptr, g_cs); }
+DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(4738)
+template <typename F>
+IsNaN<F>::operator bool() const {
+ return std::isnan(value) ^ flipped;
+}
+DOCTEST_MSVC_SUPPRESS_WARNING_POP
+template struct DOCTEST_INTERFACE_DEF IsNaN<float>;
+template struct DOCTEST_INTERFACE_DEF IsNaN<double>;
+template struct DOCTEST_INTERFACE_DEF IsNaN<long double>;
+template <typename F>
+String toString(IsNaN<F> in) { return String(in.flipped ? "! " : "") + "IsNaN( " + doctest::toString(in.value) + " )"; }
+String toString(IsNaN<float> in) { return toString<float>(in); }
+String toString(IsNaN<double> in) { return toString<double>(in); }
+String toString(IsNaN<double long> in) { return toString<double long>(in); }
+
} // namespace doctest
#ifdef DOCTEST_CONFIG_DISABLE
@@ -3800,11 +3980,9 @@ void Context::setOption(const char*, const char*) {}
bool Context::shouldExit() { return false; }
void Context::setAsDefaultForAssertsOutOfTestCases() {}
void Context::setAssertHandler(detail::assert_handler) {}
-void Context::setCout(std::ostream* out) {}
+void Context::setCout(std::ostream*) {}
int Context::run() { return 0; }
-IReporter::~IReporter() = default;
-
int IReporter::get_num_active_contexts() { return 0; }
const IContextScope* const* IReporter::get_active_contexts() { return nullptr; }
int IReporter::get_num_stringified_contexts() { return 0; }
@@ -3837,7 +4015,7 @@ namespace doctest {
namespace {
// the int (priority) is part of the key for automatic sorting - sadly one can register a
// reporter with a duplicate name and a different priority but hopefully that won't happen often :|
- typedef std::map<std::pair<int, String>, reporterCreatorFunc> reporterMap;
+ using reporterMap = std::map<std::pair<int, String>, reporterCreatorFunc>;
reporterMap& getReporters() {
static reporterMap data;
@@ -3869,8 +4047,8 @@ namespace detail {
#ifndef DOCTEST_CONFIG_NO_EXCEPTIONS
DOCTEST_NORETURN void throwException() {
g_cs->shouldLogCurrentException = false;
- throw TestFailureException();
- } // NOLINT(cert-err60-cpp)
+ throw TestFailureException(); // NOLINT(hicpp-exception-baseclass)
+ }
#else // DOCTEST_CONFIG_NO_EXCEPTIONS
void throwException() {}
#endif // DOCTEST_CONFIG_NO_EXCEPTIONS
@@ -3916,59 +4094,92 @@ namespace {
return !*wild;
}
- //// C string hash function (djb2) - taken from http://www.cse.yorku.ca/~oz/hash.html
- //unsigned hashStr(unsigned const char* str) {
- // unsigned long hash = 5381;
- // char c;
- // while((c = *str++))
- // hash = ((hash << 5) + hash) + c; // hash * 33 + c
- // return hash;
- //}
-
// checks if the name matches any of the filters (and can be configured what to do when empty)
bool matchesAny(const char* name, const std::vector<String>& filters, bool matchEmpty,
- bool caseSensitive) {
- if(filters.empty() && matchEmpty)
+ bool caseSensitive) {
+ if (filters.empty() && matchEmpty)
return true;
- for(auto& curr : filters)
- if(wildcmp(name, curr.c_str(), caseSensitive))
+ for (auto& curr : filters)
+ if (wildcmp(name, curr.c_str(), caseSensitive))
return true;
return false;
}
-} // namespace
-namespace detail {
- Subcase::Subcase(const String& name, const char* file, int line)
- : m_signature({name, file, line}) {
- auto* s = g_cs;
+ unsigned long long hash(unsigned long long a, unsigned long long b) {
+ return (a << 5) + b;
+ }
- // check subcase filters
- if(s->subcasesStack.size() < size_t(s->subcase_filter_levels)) {
- if(!matchesAny(m_signature.m_name.c_str(), s->filters[6], true, s->case_sensitive))
- return;
- if(matchesAny(m_signature.m_name.c_str(), s->filters[7], false, s->case_sensitive))
- return;
- }
-
- // if a Subcase on the same level has already been entered
- if(s->subcasesStack.size() < size_t(s->subcasesCurrentMaxLevel)) {
- s->should_reenter = true;
- return;
- }
+ // C string hash function (djb2) - taken from http://www.cse.yorku.ca/~oz/hash.html
+ unsigned long long hash(const char* str) {
+ unsigned long long hash = 5381;
+ char c;
+ while ((c = *str++))
+ hash = ((hash << 5) + hash) + c; // hash * 33 + c
+ return hash;
+ }
- // push the current signature to the stack so we can check if the
- // current stack + the current new subcase have been traversed
- s->subcasesStack.push_back(m_signature);
- if(s->subcasesPassed.count(s->subcasesStack) != 0) {
- // pop - revert to previous stack since we've already passed this
- s->subcasesStack.pop_back();
- return;
+ unsigned long long hash(const SubcaseSignature& sig) {
+ return hash(hash(hash(sig.m_file), hash(sig.m_name.c_str())), sig.m_line);
+ }
+
+ unsigned long long hash(const std::vector<SubcaseSignature>& sigs, size_t count) {
+ unsigned long long running = 0;
+ auto end = sigs.begin() + count;
+ for (auto it = sigs.begin(); it != end; it++) {
+ running = hash(running, hash(*it));
}
+ return running;
+ }
- s->subcasesCurrentMaxLevel = s->subcasesStack.size();
- m_entered = true;
+ unsigned long long hash(const std::vector<SubcaseSignature>& sigs) {
+ unsigned long long running = 0;
+ for (const SubcaseSignature& sig : sigs) {
+ running = hash(running, hash(sig));
+ }
+ return running;
+ }
+} // namespace
+namespace detail {
+ bool Subcase::checkFilters() {
+ if (g_cs->subcaseStack.size() < size_t(g_cs->subcase_filter_levels)) {
+ if (!matchesAny(m_signature.m_name.c_str(), g_cs->filters[6], true, g_cs->case_sensitive))
+ return true;
+ if (matchesAny(m_signature.m_name.c_str(), g_cs->filters[7], false, g_cs->case_sensitive))
+ return true;
+ }
+ return false;
+ }
- DOCTEST_ITERATE_THROUGH_REPORTERS(subcase_start, m_signature);
+ Subcase::Subcase(const String& name, const char* file, int line)
+ : m_signature({name, file, line}) {
+ if (!g_cs->reachedLeaf) {
+ if (g_cs->nextSubcaseStack.size() <= g_cs->subcaseStack.size()
+ || g_cs->nextSubcaseStack[g_cs->subcaseStack.size()] == m_signature) {
+ // Going down.
+ if (checkFilters()) { return; }
+
+ g_cs->subcaseStack.push_back(m_signature);
+ g_cs->currentSubcaseDepth++;
+ m_entered = true;
+ DOCTEST_ITERATE_THROUGH_REPORTERS(subcase_start, m_signature);
+ }
+ } else {
+ if (g_cs->subcaseStack[g_cs->currentSubcaseDepth] == m_signature) {
+ // This subcase is reentered via control flow.
+ g_cs->currentSubcaseDepth++;
+ m_entered = true;
+ DOCTEST_ITERATE_THROUGH_REPORTERS(subcase_start, m_signature);
+ } else if (g_cs->nextSubcaseStack.size() <= g_cs->currentSubcaseDepth
+ && g_cs->fullyTraversedSubcases.find(hash(hash(g_cs->subcaseStack, g_cs->currentSubcaseDepth), hash(m_signature)))
+ == g_cs->fullyTraversedSubcases.end()) {
+ if (checkFilters()) { return; }
+ // This subcase is part of the one to be executed next.
+ g_cs->nextSubcaseStack.clear();
+ g_cs->nextSubcaseStack.insert(g_cs->nextSubcaseStack.end(),
+ g_cs->subcaseStack.begin(), g_cs->subcaseStack.begin() + g_cs->currentSubcaseDepth);
+ g_cs->nextSubcaseStack.push_back(m_signature);
+ }
+ }
}
DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(4996) // std::uncaught_exception is deprecated in C++17
@@ -3976,25 +4187,33 @@ namespace detail {
DOCTEST_CLANG_SUPPRESS_WARNING_WITH_PUSH("-Wdeprecated-declarations")
Subcase::~Subcase() {
- if(m_entered) {
- // only mark the subcase stack as passed if no subcases have been skipped
- if(g_cs->should_reenter == false)
- g_cs->subcasesPassed.insert(g_cs->subcasesStack);
- g_cs->subcasesStack.pop_back();
+ if (m_entered) {
+ g_cs->currentSubcaseDepth--;
+
+ if (!g_cs->reachedLeaf) {
+ // Leaf.
+ g_cs->fullyTraversedSubcases.insert(hash(g_cs->subcaseStack));
+ g_cs->nextSubcaseStack.clear();
+ g_cs->reachedLeaf = true;
+ } else if (g_cs->nextSubcaseStack.empty()) {
+ // All children are finished.
+ g_cs->fullyTraversedSubcases.insert(hash(g_cs->subcaseStack));
+ }
#if defined(__cpp_lib_uncaught_exceptions) && __cpp_lib_uncaught_exceptions >= 201411L && (!defined(__MAC_OS_X_VERSION_MIN_REQUIRED) || __MAC_OS_X_VERSION_MIN_REQUIRED >= 101200)
if(std::uncaught_exceptions() > 0
#else
if(std::uncaught_exception()
#endif
- && g_cs->shouldLogCurrentException) {
+ && g_cs->shouldLogCurrentException) {
DOCTEST_ITERATE_THROUGH_REPORTERS(
test_case_exception, {"exception thrown in subcase - will translate later "
- "when the whole test case has been exited (cannot "
- "translate while there is an active exception)",
- false});
+ "when the whole test case has been exited (cannot "
+ "translate while there is an active exception)",
+ false});
g_cs->shouldLogCurrentException = false;
}
+
DOCTEST_ITERATE_THROUGH_REPORTERS(subcase_end, DOCTEST_EMPTY);
}
}
@@ -4018,7 +4237,7 @@ namespace detail {
}
TestCase::TestCase(funcType test, const char* file, unsigned line, const TestSuite& test_suite,
- const char* type, int template_id) {
+ const String& type, int template_id) {
m_file = file;
m_line = line;
m_name = nullptr; // will be later overridden in operator*
@@ -4043,10 +4262,8 @@ namespace detail {
}
DOCTEST_MSVC_SUPPRESS_WARNING_WITH_PUSH(26434) // hides a non-virtual function
- DOCTEST_MSVC_SUPPRESS_WARNING(26437) // Do not slice
TestCase& TestCase::operator=(const TestCase& other) {
- static_cast<TestCaseData&>(*this) = static_cast<const TestCaseData&>(other);
-
+ TestCaseData::operator=(other);
m_test = other.m_test;
m_type = other.m_type;
m_template_id = other.m_template_id;
@@ -4062,7 +4279,7 @@ namespace detail {
m_name = in;
// make a new name with an appended type for templated test case
if(m_template_id != -1) {
- m_full_name = String(m_name) + m_type;
+ m_full_name = String(m_name) + "<" + m_type + ">";
// redirect the name to point to the newly constructed full name
m_name = m_full_name.c_str();
}
@@ -4304,34 +4521,13 @@ namespace detail {
getExceptionTranslators().push_back(et);
}
-#ifdef DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING
- void toStream(std::ostream* s, char* in) { *s << in; }
- void toStream(std::ostream* s, const char* in) { *s << in; }
-#endif // DOCTEST_CONFIG_TREAT_CHAR_STAR_AS_STRING
- void toStream(std::ostream* s, bool in) { *s << std::boolalpha << in << std::noboolalpha; }
- void toStream(std::ostream* s, float in) { *s << in; }
- void toStream(std::ostream* s, double in) { *s << in; }
- void toStream(std::ostream* s, double long in) { *s << in; }
-
- void toStream(std::ostream* s, char in) { *s << in; }
- void toStream(std::ostream* s, char signed in) { *s << in; }
- void toStream(std::ostream* s, char unsigned in) { *s << in; }
- void toStream(std::ostream* s, int short in) { *s << in; }
- void toStream(std::ostream* s, int short unsigned in) { *s << in; }
- void toStream(std::ostream* s, int in) { *s << in; }
- void toStream(std::ostream* s, int unsigned in) { *s << in; }
- void toStream(std::ostream* s, int long in) { *s << in; }
- void toStream(std::ostream* s, int long unsigned in) { *s << in; }
- void toStream(std::ostream* s, int long long in) { *s << in; }
- void toStream(std::ostream* s, int long long unsigned in) { *s << in; }
-
DOCTEST_THREAD_LOCAL std::vector<IContextScope*> g_infoContexts; // for logging with INFO()
ContextScopeBase::ContextScopeBase() {
g_infoContexts.push_back(this);
}
- ContextScopeBase::ContextScopeBase(ContextScopeBase&& other) {
+ ContextScopeBase::ContextScopeBase(ContextScopeBase&& other) noexcept {
if (other.need_to_destroy) {
other.destroy();
}
@@ -4401,10 +4597,10 @@ namespace {
static LONG CALLBACK handleException(PEXCEPTION_POINTERS ExceptionInfo) {
// Multiple threads may enter this filter/handler at once. We want the error message to be printed on the
// console just once no matter how many threads have crashed.
- static std::mutex mutex;
+ DOCTEST_DECLARE_STATIC_MUTEX(mutex)
static bool execute = true;
{
- std::lock_guard<std::mutex> lock(mutex);
+ DOCTEST_LOCK_MUTEX(mutex)
if(execute) {
bool reported = false;
for(size_t i = 0; i < DOCTEST_COUNTOF(signalDefs); ++i) {
@@ -4577,7 +4773,7 @@ namespace {
sigStack.ss_flags = 0;
sigaltstack(&sigStack, &oldSigStack);
struct sigaction sa = {};
- sa.sa_handler = handleSignal; // NOLINT
+ sa.sa_handler = handleSignal;
sa.sa_flags = SA_ONSTACK;
for(std::size_t i = 0; i < DOCTEST_COUNTOF(signalDefs); ++i) {
sigaction(signalDefs[i].id, &sa, &oldSigActions[i]);
@@ -4616,7 +4812,7 @@ namespace {
#define DOCTEST_OUTPUT_DEBUG_STRING(text) ::OutputDebugStringA(text)
#else
// TODO: integration with XCode and other IDEs
-#define DOCTEST_OUTPUT_DEBUG_STRING(text) // NOLINT(clang-diagnostic-unused-macros)
+#define DOCTEST_OUTPUT_DEBUG_STRING(text)
#endif // Platform
void addAssert(assertType::Enum at) {
@@ -4635,8 +4831,8 @@ namespace {
DOCTEST_ITERATE_THROUGH_REPORTERS(test_case_exception, {message.c_str(), true});
- while(g_cs->subcasesStack.size()) {
- g_cs->subcasesStack.pop_back();
+ while (g_cs->subcaseStack.size()) {
+ g_cs->subcaseStack.pop_back();
DOCTEST_ITERATE_THROUGH_REPORTERS(subcase_end, DOCTEST_EMPTY);
}
@@ -4648,25 +4844,26 @@ namespace {
}
#endif // DOCTEST_CONFIG_POSIX_SIGNALS || DOCTEST_CONFIG_WINDOWS_SEH
} // namespace
-namespace detail {
- ResultBuilder::ResultBuilder(assertType::Enum at, const char* file, int line, const char* expr,
- const char* exception_type, const char* exception_string) {
- m_test_case = g_cs->currentTest;
- m_at = at;
- m_file = file;
- m_line = line;
- m_expr = expr;
- m_failed = true;
- m_threw = false;
- m_threw_as = false;
- m_exception_type = exception_type;
- m_exception_string = exception_string;
+AssertData::AssertData(assertType::Enum at, const char* file, int line, const char* expr,
+ const char* exception_type, const StringContains& exception_string)
+ : m_test_case(g_cs->currentTest), m_at(at), m_file(file), m_line(line), m_expr(expr),
+ m_failed(true), m_threw(false), m_threw_as(false), m_exception_type(exception_type),
+ m_exception_string(exception_string) {
#if DOCTEST_MSVC
- if(m_expr[0] == ' ') // this happens when variadic macros are disabled under MSVC
- ++m_expr;
+ if (m_expr[0] == ' ') // this happens when variadic macros are disabled under MSVC
+ ++m_expr;
#endif // MSVC
- }
+}
+
+namespace detail {
+ ResultBuilder::ResultBuilder(assertType::Enum at, const char* file, int line, const char* expr,
+ const char* exception_type, const String& exception_string)
+ : AssertData(at, file, line, expr, exception_type, exception_string) { }
+
+ ResultBuilder::ResultBuilder(assertType::Enum at, const char* file, int line, const char* expr,
+ const char* exception_type, const Contains& exception_string)
+ : AssertData(at, file, line, expr, exception_type, exception_string) { }
void ResultBuilder::setResult(const Result& res) {
m_decomp = res.m_decomp;
@@ -4682,11 +4879,11 @@ namespace detail {
if(m_at & assertType::is_throws) { //!OCLINT bitwise operator in conditional
m_failed = !m_threw;
} else if((m_at & assertType::is_throws_as) && (m_at & assertType::is_throws_with)) { //!OCLINT
- m_failed = !m_threw_as || (m_exception != m_exception_string);
+ m_failed = !m_threw_as || !m_exception_string.check(m_exception);
} else if(m_at & assertType::is_throws_as) { //!OCLINT bitwise operator in conditional
m_failed = !m_threw_as;
} else if(m_at & assertType::is_throws_with) { //!OCLINT bitwise operator in conditional
- m_failed = m_exception != m_exception_string;
+ m_failed = !m_exception_string.check(m_exception);
} else if(m_at & assertType::is_nothrow) { //!OCLINT bitwise operator in conditional
m_failed = m_threw;
}
@@ -4721,7 +4918,7 @@ namespace detail {
}
bool decomp_assert(assertType::Enum at, const char* file, int line, const char* expr,
- Result result) {
+ const Result& result) {
bool failed = !result.m_passed;
// ###################################################################################
@@ -4730,7 +4927,6 @@ namespace detail {
// ###################################################################################
DOCTEST_ASSERT_OUT_OF_TESTS(result.m_decomp);
DOCTEST_ASSERT_IN_TESTS(result.m_decomp);
- // NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDeleteLeaks)
return !failed;
}
@@ -4746,8 +4942,7 @@ namespace detail {
tlssPop();
}
- IExceptionTranslator::IExceptionTranslator() = default;
- IExceptionTranslator::~IExceptionTranslator() = default;
+ DOCTEST_DEFINE_INTERFACE(IExceptionTranslator)
bool MessageBuilder::log() {
if (!logged) {
@@ -4858,10 +5053,10 @@ namespace {
void ensureTagClosed();
- private:
-
void writeDeclaration();
+ private:
+
void newlineIfNecessary();
bool m_tagIsOpen = false;
@@ -5050,7 +5245,7 @@ namespace {
XmlWriter::XmlWriter( std::ostream& os ) : m_os( os )
{
- writeDeclaration();
+ // writeDeclaration(); // called explicitly by the reporters that use the writer class - see issue #627
}
XmlWriter::~XmlWriter() {
@@ -5161,8 +5356,8 @@ namespace {
struct XmlReporter : public IReporter
{
- XmlWriter xml;
- std::mutex mutex;
+ XmlWriter xml;
+ DOCTEST_DECLARE_MUTEX(mutex)
// caching pointers/references to objects of these types - safe to do
const ContextOptions& opt;
@@ -5256,6 +5451,8 @@ namespace {
}
void test_run_start() override {
+ xml.writeDeclaration();
+
// remove .exe extension - mainly to have the same output on UNIX and Windows
std::string binary_name = skipPathFromFilename(opt.binary_name.c_str());
#ifdef DOCTEST_PLATFORM_WINDOWS
@@ -5322,7 +5519,7 @@ namespace {
}
void test_case_exception(const TestCaseException& e) override {
- std::lock_guard<std::mutex> lock(mutex);
+ DOCTEST_LOCK_MUTEX(mutex)
xml.scopedElement("Exception")
.writeAttribute("crash", e.is_crash)
@@ -5343,7 +5540,7 @@ namespace {
if(!rb.m_failed && !opt.success)
return;
- std::lock_guard<std::mutex> lock(mutex);
+ DOCTEST_LOCK_MUTEX(mutex)
xml.startElement("Expression")
.writeAttribute("success", !rb.m_failed)
@@ -5359,7 +5556,7 @@ namespace {
if(rb.m_at & assertType::is_throws_as)
xml.scopedElement("ExpectedException").writeText(rb.m_exception_type);
if(rb.m_at & assertType::is_throws_with)
- xml.scopedElement("ExpectedExceptionString").writeText(rb.m_exception_string);
+ xml.scopedElement("ExpectedExceptionString").writeText(rb.m_exception_string.c_str());
if((rb.m_at & assertType::is_normal) && !rb.m_threw)
xml.scopedElement("Expanded").writeText(rb.m_decomp.c_str());
@@ -5369,7 +5566,7 @@ namespace {
}
void log_message(const MessageData& mb) override {
- std::lock_guard<std::mutex> lock(mutex);
+ DOCTEST_LOCK_MUTEX(mutex)
xml.startElement("Message")
.writeAttribute("type", failureString(mb.m_severity))
@@ -5405,7 +5602,8 @@ namespace {
} else if((rb.m_at & assertType::is_throws_as) &&
(rb.m_at & assertType::is_throws_with)) { //!OCLINT
s << Color::Cyan << assertString(rb.m_at) << "( " << rb.m_expr << ", \""
- << rb.m_exception_string << "\", " << rb.m_exception_type << " ) " << Color::None;
+ << rb.m_exception_string.c_str()
+ << "\", " << rb.m_exception_type << " ) " << Color::None;
if(rb.m_threw) {
if(!rb.m_failed) {
s << "threw as expected!\n";
@@ -5426,7 +5624,8 @@ namespace {
} else if(rb.m_at &
assertType::is_throws_with) { //!OCLINT bitwise operator in conditional
s << Color::Cyan << assertString(rb.m_at) << "( " << rb.m_expr << ", \""
- << rb.m_exception_string << "\" ) " << Color::None
+ << rb.m_exception_string.c_str()
+ << "\" ) " << Color::None
<< (rb.m_threw ? (!rb.m_failed ? "threw as expected!" :
"threw a DIFFERENT exception: ") :
"did NOT throw at all!")
@@ -5451,8 +5650,8 @@ namespace {
// - more attributes in tags
struct JUnitReporter : public IReporter
{
- XmlWriter xml;
- std::mutex mutex;
+ XmlWriter xml;
+ DOCTEST_DECLARE_MUTEX(mutex)
Timer timer;
std::vector<String> deepestSubcaseStackNames;
@@ -5548,9 +5747,13 @@ namespace {
// WHAT FOLLOWS ARE OVERRIDES OF THE VIRTUAL METHODS OF THE REPORTER INTERFACE
// =========================================================================================
- void report_query(const QueryData&) override {}
+ void report_query(const QueryData&) override {
+ xml.writeDeclaration();
+ }
- void test_run_start() override {}
+ void test_run_start() override {
+ xml.writeDeclaration();
+ }
void test_run_end(const TestRunStats& p) override {
// remove .exe extension - mainly to have the same output on UNIX and Windows
@@ -5620,7 +5823,7 @@ namespace {
}
void test_case_exception(const TestCaseException& e) override {
- std::lock_guard<std::mutex> lock(mutex);
+ DOCTEST_LOCK_MUTEX(mutex)
testCaseData.addError("exception", e.error_string.c_str());
}
@@ -5634,7 +5837,7 @@ namespace {
if(!rb.m_failed) // report only failures & ignore the `success` option
return;
- std::lock_guard<std::mutex> lock(mutex);
+ DOCTEST_LOCK_MUTEX(mutex)
std::ostringstream os;
os << skipPathFromFilename(rb.m_file) << (opt.gnu_file_line ? ":" : "(")
@@ -5685,7 +5888,7 @@ namespace {
bool hasLoggedCurrentTestStart;
std::vector<SubcaseSignature> subcasesStack;
size_t currentSubcaseLevel;
- std::mutex mutex;
+ DOCTEST_DECLARE_MUTEX(mutex)
// caching pointers/references to objects of these types - safe to do
const ContextOptions& opt;
@@ -6031,7 +6234,7 @@ namespace {
// log the preamble of the test case only if there is something
// else to print - something other than that an assert has failed
if(opt.duration ||
- (st.failure_flags && st.failure_flags != TestCaseFailureReason::AssertFailure))
+ (st.failure_flags && st.failure_flags != static_cast<int>(TestCaseFailureReason::AssertFailure)))
logTestStart();
if(opt.duration)
@@ -6062,7 +6265,7 @@ namespace {
}
void test_case_exception(const TestCaseException& e) override {
- std::lock_guard<std::mutex> lock(mutex);
+ DOCTEST_LOCK_MUTEX(mutex)
if(tc->m_no_output)
return;
@@ -6101,7 +6304,7 @@ namespace {
if((!rb.m_failed && !opt.success) || tc->m_no_output)
return;
- std::lock_guard<std::mutex> lock(mutex);
+ DOCTEST_LOCK_MUTEX(mutex)
logTestStart();
@@ -6117,7 +6320,7 @@ namespace {
if(tc->m_no_output)
return;
- std::lock_guard<std::mutex> lock(mutex);
+ DOCTEST_LOCK_MUTEX(mutex)
logTestStart();
@@ -6245,8 +6448,8 @@ namespace {
char character = *current++;
if(seenBackslash) {
seenBackslash = false;
- if(character == ',') {
- s.put(',');
+ if(character == ',' || character == '\\') {
+ s.put(character);
continue;
}
s.put('\\');
@@ -6282,30 +6485,30 @@ namespace {
if(!parseOption(argc, argv, pattern, &parsedValue))
return false;
- if(type == 0) {
+ if(type) {
+ // integer
+ // TODO: change this to use std::stoi or something else! currently it uses undefined behavior - assumes '0' on failed parse...
+ int theInt = std::atoi(parsedValue.c_str());
+ if (theInt != 0) {
+ res = theInt; //!OCLINT parameter reassignment
+ return true;
+ }
+ } else {
// boolean
- const char positive[][5] = {"1", "true", "on", "yes"}; // 5 - strlen("true") + 1
- const char negative[][6] = {"0", "false", "off", "no"}; // 6 - strlen("false") + 1
+ const char positive[][5] = { "1", "true", "on", "yes" }; // 5 - strlen("true") + 1
+ const char negative[][6] = { "0", "false", "off", "no" }; // 6 - strlen("false") + 1
// if the value matches any of the positive/negative possibilities
- for(unsigned i = 0; i < 4; i++) {
- if(parsedValue.compare(positive[i], true) == 0) {
+ for (unsigned i = 0; i < 4; i++) {
+ if (parsedValue.compare(positive[i], true) == 0) {
res = 1; //!OCLINT parameter reassignment
return true;
}
- if(parsedValue.compare(negative[i], true) == 0) {
+ if (parsedValue.compare(negative[i], true) == 0) {
res = 0; //!OCLINT parameter reassignment
return true;
}
}
- } else {
- // integer
- // TODO: change this to use std::stoi or something else! currently it uses undefined behavior - assumes '0' on failed parse...
- int theInt = std::atoi(parsedValue.c_str()); // NOLINT
- if(theInt != 0) {
- res = theInt; //!OCLINT parameter reassignment
- return true;
- }
}
return false;
}
@@ -6473,7 +6676,6 @@ void Context::setOption(const char* option, bool value) {
// allows the user to override procedurally the int options from the command line
void Context::setOption(const char* option, int value) {
setOption(option, toString(value).c_str());
- // NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDeleteLeaks)
}
// allows the user to override procedurally the string options from the command line
@@ -6611,7 +6813,7 @@ int Context::run() {
// random_shuffle implementation
const auto first = &testArray[0];
for(size_t i = testArray.size() - 1; i > 0; --i) {
- int idxToSwap = std::rand() % (i + 1); // NOLINT
+ int idxToSwap = std::rand() % (i + 1);
const auto temp = first[i];
@@ -6698,7 +6900,7 @@ int Context::run() {
p->numAssertsFailedCurrentTest_atomic = 0;
p->numAssertsCurrentTest_atomic = 0;
- p->subcasesPassed.clear();
+ p->fullyTraversedSubcases.clear();
DOCTEST_ITERATE_THROUGH_REPORTERS(test_case_start, tc);
@@ -6708,9 +6910,10 @@ int Context::run() {
do {
// reset some of the fields for subcases (except for the set of fully passed ones)
- p->should_reenter = false;
- p->subcasesCurrentMaxLevel = 0;
- p->subcasesStack.clear();
+ p->reachedLeaf = false;
+ // May not be empty if previous subcase exited via exception.
+ p->subcaseStack.clear();
+ p->currentSubcaseDepth = 0;
p->shouldLogCurrentException = true;
@@ -6744,9 +6947,9 @@ DOCTEST_MSVC_SUPPRESS_WARNING_POP
p->failure_flags |= TestCaseFailureReason::TooManyFailedAsserts;
}
- if(p->should_reenter && run_test)
+ if(!p->nextSubcaseStack.empty() && run_test)
DOCTEST_ITERATE_THROUGH_REPORTERS(test_case_reenter, tc);
- if(!p->should_reenter)
+ if(p->nextSubcaseStack.empty())
run_test = false;
} while(run_test);
@@ -6775,7 +6978,7 @@ DOCTEST_MSVC_SUPPRESS_WARNING_POP
return cleanup_and_return();
}
-IReporter::~IReporter() = default;
+DOCTEST_DEFINE_INTERFACE(IReporter)
int IReporter::get_num_active_contexts() { return detail::g_infoContexts.size(); }
const IContextScope* const* IReporter::get_active_contexts() {
diff --git a/thirdparty/etcpak/AUTHORS.txt b/thirdparty/etcpak/AUTHORS.txt
index e7bae62c85..675b4eb2a9 100644
--- a/thirdparty/etcpak/AUTHORS.txt
+++ b/thirdparty/etcpak/AUTHORS.txt
@@ -1,3 +1,5 @@
Bartosz Taudul <wolf@nereid.pl>
Daniel Jungmann <el.3d.source@gmail.com>
Florian Penzkofer <fp@nullptr.de>
+Jae-Ho Nah <nahjaeho@gmail.com>
+Marcin Åawicki <marcin.lawicki@gmail.com>
diff --git a/thirdparty/etcpak/LICENSE.txt b/thirdparty/etcpak/LICENSE.txt
index 59e85d6ea5..9c71039b9b 100644
--- a/thirdparty/etcpak/LICENSE.txt
+++ b/thirdparty/etcpak/LICENSE.txt
@@ -1,6 +1,6 @@
etcpak, an extremely fast ETC compression utility (https://github.com/wolfpld/etcpak)
-Copyright (c) 2013-2021, Bartosz Taudul <wolf@nereid.pl>
+Copyright (c) 2013-2022, Bartosz Taudul <wolf@nereid.pl>
All rights reserved.
Redistribution and use in source and binary forms, with or without
diff --git a/thirdparty/freetype/patches/fix_gcc_lto_build.diff b/thirdparty/freetype/patches/fix_gcc_lto_build.diff
new file mode 100644
index 0000000000..3c22b464c2
--- /dev/null
+++ b/thirdparty/freetype/patches/fix_gcc_lto_build.diff
@@ -0,0 +1,34 @@
+diff --git a/thirdparty/freetype/src/smooth/ftgrays.c b/thirdparty/freetype/src/smooth/ftgrays.c
+index 622035aa79..5d9e1600b7 100644
+--- a/thirdparty/freetype/src/smooth/ftgrays.c
++++ b/thirdparty/freetype/src/smooth/ftgrays.c
+@@ -1907,6 +1907,9 @@ typedef ptrdiff_t FT_PtrDist;
+ 0 /* delta */
+ )
+
++// -- GODOT start --
++ static volatile int _lto_dummy = 0;
++// -- GODOT end --
+
+ static int
+ gray_convert_glyph_inner( RAS_ARG,
+@@ -1928,6 +1931,9 @@ typedef ptrdiff_t FT_PtrDist;
+ ras.max_ey,
+ ras.cell_null - ras.cell_free,
+ ras.cell_null - ras.cell_free == 1 ? "" : "s" ));
++// -- GODOT start --
++ _lto_dummy = error; // Prevents LTO from removing this branch.
++// -- GODOT end --
+ }
+ else
+ {
+@@ -1935,6 +1941,9 @@ typedef ptrdiff_t FT_PtrDist;
+
+ FT_TRACE7(( "band [%d..%d]: to be bisected\n",
+ ras.min_ey, ras.max_ey ));
++// -- GODOT start --
++ _lto_dummy = error; // Prevents LTO from removing this branch.
++// -- GODOT end --
+ }
+
+ return error;
diff --git a/thirdparty/freetype/src/smooth/ftgrays.c b/thirdparty/freetype/src/smooth/ftgrays.c
index 622035aa79..5d9e1600b7 100644
--- a/thirdparty/freetype/src/smooth/ftgrays.c
+++ b/thirdparty/freetype/src/smooth/ftgrays.c
@@ -1907,6 +1907,9 @@ typedef ptrdiff_t FT_PtrDist;
0 /* delta */
)
+// -- GODOT start --
+ static volatile int _lto_dummy = 0;
+// -- GODOT end --
static int
gray_convert_glyph_inner( RAS_ARG,
@@ -1928,6 +1931,9 @@ typedef ptrdiff_t FT_PtrDist;
ras.max_ey,
ras.cell_null - ras.cell_free,
ras.cell_null - ras.cell_free == 1 ? "" : "s" ));
+// -- GODOT start --
+ _lto_dummy = error; // Prevents LTO from removing this branch.
+// -- GODOT end --
}
else
{
@@ -1935,6 +1941,9 @@ typedef ptrdiff_t FT_PtrDist;
FT_TRACE7(( "band [%d..%d]: to be bisected\n",
ras.min_ey, ras.max_ey ));
+// -- GODOT start --
+ _lto_dummy = error; // Prevents LTO from removing this branch.
+// -- GODOT end --
}
return error;
diff --git a/thirdparty/jpeg-compressor/jpge.cpp b/thirdparty/jpeg-compressor/jpge.cpp
new file mode 100644
index 0000000000..5a36c19653
--- /dev/null
+++ b/thirdparty/jpeg-compressor/jpge.cpp
@@ -0,0 +1,1076 @@
+// jpge.cpp - C++ class for JPEG compression. Richard Geldreich <richgel99@gmail.com>
+// Supports grayscale, H1V1, H2V1, and H2V2 chroma subsampling factors, one or two pass Huffman table optimization, libjpeg-style quality 1-100 quality factors.
+// Also supports using luma quantization tables for chroma.
+//
+// Released under two licenses. You are free to choose which license you want:
+// License 1:
+// Public Domain
+//
+// License 2:
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// v1.01, Dec. 18, 2010 - Initial release
+// v1.02, Apr. 6, 2011 - Removed 2x2 ordered dither in H2V1 chroma subsampling method load_block_16_8_8(). (The rounding factor was 2, when it should have been 1. Either way, it wasn't helping.)
+// v1.03, Apr. 16, 2011 - Added support for optimized Huffman code tables, optimized dynamic memory allocation down to only 1 alloc.
+// Also from Alex Evans: Added RGBA support, linear memory allocator (no longer needed in v1.03).
+// v1.04, May. 19, 2012: Forgot to set m_pFile ptr to NULL in cfile_stream::close(). Thanks to Owen Kaluza for reporting this bug.
+// Code tweaks to fix VS2008 static code analysis warnings (all looked harmless).
+// Code review revealed method load_block_16_8_8() (used for the non-default H2V1 sampling mode to downsample chroma) somehow didn't get the rounding factor fix from v1.02.
+// v1.05, March 25, 2020: Added Apache 2.0 alternate license
+
+#include "jpge.h"
+
+#include <stdlib.h>
+#include <string.h>
+
+#define JPGE_MAX(a,b) (((a)>(b))?(a):(b))
+#define JPGE_MIN(a,b) (((a)<(b))?(a):(b))
+
+namespace jpge {
+
+ static inline void* jpge_malloc(size_t nSize) { return malloc(nSize); }
+ static inline void jpge_free(void* p) { free(p); }
+
+ // Various JPEG enums and tables.
+ enum { M_SOF0 = 0xC0, M_DHT = 0xC4, M_SOI = 0xD8, M_EOI = 0xD9, M_SOS = 0xDA, M_DQT = 0xDB, M_APP0 = 0xE0 };
+ enum { DC_LUM_CODES = 12, AC_LUM_CODES = 256, DC_CHROMA_CODES = 12, AC_CHROMA_CODES = 256, MAX_HUFF_SYMBOLS = 257, MAX_HUFF_CODESIZE = 32 };
+
+ static uint8 s_zag[64] = { 0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63 };
+ static int16 s_std_lum_quant[64] = { 16,11,12,14,12,10,16,14,13,14,18,17,16,19,24,40,26,24,22,22,24,49,35,37,29,40,58,51,61,60,57,51,56,55,64,72,92,78,64,68,87,69,55,56,80,109,81,87,95,98,103,104,103,62,77,113,121,112,100,120,92,101,103,99 };
+ static int16 s_std_croma_quant[64] = { 17,18,18,24,21,24,47,26,26,47,99,66,56,66,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99 };
+
+ // Table from http://www.imagemagick.org/discourse-server/viewtopic.php?f=22&t=20333&p=98008#p98008
+ // This is mozjpeg's default table, in zag order.
+ static int16 s_alt_quant[64] = { 16,16,16,16,17,16,18,20,20,18,25,27,24,27,25,37,34,31,31,34,37,56,40,43,40,43,40,56,85,53,62,53,53,62,53,85,75,91,74,69,74,91,75,135,106,94,94,106,135,156,131,124,131,156,189,169,169,189,238,226,238,311,311,418 };
+
+ static uint8 s_dc_lum_bits[17] = { 0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0 };
+ static uint8 s_dc_lum_val[DC_LUM_CODES] = { 0,1,2,3,4,5,6,7,8,9,10,11 };
+ static uint8 s_ac_lum_bits[17] = { 0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,0x7d };
+ static uint8 s_ac_lum_val[AC_LUM_CODES] =
+ {
+ 0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,
+ 0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,
+ 0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,
+ 0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,
+ 0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,
+ 0xf9,0xfa
+ };
+ static uint8 s_dc_chroma_bits[17] = { 0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0 };
+ static uint8 s_dc_chroma_val[DC_CHROMA_CODES] = { 0,1,2,3,4,5,6,7,8,9,10,11 };
+ static uint8 s_ac_chroma_bits[17] = { 0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,0x77 };
+ static uint8 s_ac_chroma_val[AC_CHROMA_CODES] =
+ {
+ 0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,
+ 0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26,0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,
+ 0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87,
+ 0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,
+ 0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,
+ 0xf9,0xfa
+ };
+
+ // Low-level helper functions.
+ template <class T> inline void clear_obj(T& obj) { memset(&obj, 0, sizeof(obj)); }
+
+ const int YR = 19595, YG = 38470, YB = 7471, CB_R = -11059, CB_G = -21709, CB_B = 32768, CR_R = 32768, CR_G = -27439, CR_B = -5329;
+ static inline uint8 clamp(int i) { if (static_cast<uint>(i) > 255U) { if (i < 0) i = 0; else if (i > 255) i = 255; } return static_cast<uint8>(i); }
+
+ static inline int left_shifti(int val, uint32 bits)
+ {
+ return static_cast<int>(static_cast<uint32>(val) << bits);
+ }
+
+ static void RGB_to_YCC(uint8* pDst, const uint8* pSrc, int num_pixels)
+ {
+ for (; num_pixels; pDst += 3, pSrc += 3, num_pixels--)
+ {
+ const int r = pSrc[0], g = pSrc[1], b = pSrc[2];
+ pDst[0] = static_cast<uint8>((r * YR + g * YG + b * YB + 32768) >> 16);
+ pDst[1] = clamp(128 + ((r * CB_R + g * CB_G + b * CB_B + 32768) >> 16));
+ pDst[2] = clamp(128 + ((r * CR_R + g * CR_G + b * CR_B + 32768) >> 16));
+ }
+ }
+
+ static void RGB_to_Y(uint8* pDst, const uint8* pSrc, int num_pixels)
+ {
+ for (; num_pixels; pDst++, pSrc += 3, num_pixels--)
+ pDst[0] = static_cast<uint8>((pSrc[0] * YR + pSrc[1] * YG + pSrc[2] * YB + 32768) >> 16);
+ }
+
+ static void RGBA_to_YCC(uint8* pDst, const uint8* pSrc, int num_pixels)
+ {
+ for (; num_pixels; pDst += 3, pSrc += 4, num_pixels--)
+ {
+ const int r = pSrc[0], g = pSrc[1], b = pSrc[2];
+ pDst[0] = static_cast<uint8>((r * YR + g * YG + b * YB + 32768) >> 16);
+ pDst[1] = clamp(128 + ((r * CB_R + g * CB_G + b * CB_B + 32768) >> 16));
+ pDst[2] = clamp(128 + ((r * CR_R + g * CR_G + b * CR_B + 32768) >> 16));
+ }
+ }
+
+ static void RGBA_to_Y(uint8* pDst, const uint8* pSrc, int num_pixels)
+ {
+ for (; num_pixels; pDst++, pSrc += 4, num_pixels--)
+ pDst[0] = static_cast<uint8>((pSrc[0] * YR + pSrc[1] * YG + pSrc[2] * YB + 32768) >> 16);
+ }
+
+ static void Y_to_YCC(uint8* pDst, const uint8* pSrc, int num_pixels)
+ {
+ for (; num_pixels; pDst += 3, pSrc++, num_pixels--) { pDst[0] = pSrc[0]; pDst[1] = 128; pDst[2] = 128; }
+ }
+
+ // Forward DCT - DCT derived from jfdctint.
+ enum { CONST_BITS = 13, ROW_BITS = 2 };
+#define DCT_DESCALE(x, n) (((x) + (((int32)1) << ((n) - 1))) >> (n))
+#define DCT_MUL(var, c) (static_cast<int16>(var) * static_cast<int32>(c))
+#define DCT1D(s0, s1, s2, s3, s4, s5, s6, s7) \
+ int32 t0 = s0 + s7, t7 = s0 - s7, t1 = s1 + s6, t6 = s1 - s6, t2 = s2 + s5, t5 = s2 - s5, t3 = s3 + s4, t4 = s3 - s4; \
+ int32 t10 = t0 + t3, t13 = t0 - t3, t11 = t1 + t2, t12 = t1 - t2; \
+ int32 u1 = DCT_MUL(t12 + t13, 4433); \
+ s2 = u1 + DCT_MUL(t13, 6270); \
+ s6 = u1 + DCT_MUL(t12, -15137); \
+ u1 = t4 + t7; \
+ int32 u2 = t5 + t6, u3 = t4 + t6, u4 = t5 + t7; \
+ int32 z5 = DCT_MUL(u3 + u4, 9633); \
+ t4 = DCT_MUL(t4, 2446); t5 = DCT_MUL(t5, 16819); \
+ t6 = DCT_MUL(t6, 25172); t7 = DCT_MUL(t7, 12299); \
+ u1 = DCT_MUL(u1, -7373); u2 = DCT_MUL(u2, -20995); \
+ u3 = DCT_MUL(u3, -16069); u4 = DCT_MUL(u4, -3196); \
+ u3 += z5; u4 += z5; \
+ s0 = t10 + t11; s1 = t7 + u1 + u4; s3 = t6 + u2 + u3; s4 = t10 - t11; s5 = t5 + u2 + u4; s7 = t4 + u1 + u3;
+
+ static void DCT2D(int32* p)
+ {
+ int32 c, * q = p;
+ for (c = 7; c >= 0; c--, q += 8)
+ {
+ int32 s0 = q[0], s1 = q[1], s2 = q[2], s3 = q[3], s4 = q[4], s5 = q[5], s6 = q[6], s7 = q[7];
+ DCT1D(s0, s1, s2, s3, s4, s5, s6, s7);
+ q[0] = left_shifti(s0, ROW_BITS); q[1] = DCT_DESCALE(s1, CONST_BITS - ROW_BITS); q[2] = DCT_DESCALE(s2, CONST_BITS - ROW_BITS); q[3] = DCT_DESCALE(s3, CONST_BITS - ROW_BITS);
+ q[4] = left_shifti(s4, ROW_BITS); q[5] = DCT_DESCALE(s5, CONST_BITS - ROW_BITS); q[6] = DCT_DESCALE(s6, CONST_BITS - ROW_BITS); q[7] = DCT_DESCALE(s7, CONST_BITS - ROW_BITS);
+ }
+ for (q = p, c = 7; c >= 0; c--, q++)
+ {
+ int32 s0 = q[0 * 8], s1 = q[1 * 8], s2 = q[2 * 8], s3 = q[3 * 8], s4 = q[4 * 8], s5 = q[5 * 8], s6 = q[6 * 8], s7 = q[7 * 8];
+ DCT1D(s0, s1, s2, s3, s4, s5, s6, s7);
+ q[0 * 8] = DCT_DESCALE(s0, ROW_BITS + 3); q[1 * 8] = DCT_DESCALE(s1, CONST_BITS + ROW_BITS + 3); q[2 * 8] = DCT_DESCALE(s2, CONST_BITS + ROW_BITS + 3); q[3 * 8] = DCT_DESCALE(s3, CONST_BITS + ROW_BITS + 3);
+ q[4 * 8] = DCT_DESCALE(s4, ROW_BITS + 3); q[5 * 8] = DCT_DESCALE(s5, CONST_BITS + ROW_BITS + 3); q[6 * 8] = DCT_DESCALE(s6, CONST_BITS + ROW_BITS + 3); q[7 * 8] = DCT_DESCALE(s7, CONST_BITS + ROW_BITS + 3);
+ }
+ }
+
+ struct sym_freq { uint m_key, m_sym_index; };
+
+ // Radix sorts sym_freq[] array by 32-bit key m_key. Returns ptr to sorted values.
+ static inline sym_freq* radix_sort_syms(uint num_syms, sym_freq* pSyms0, sym_freq* pSyms1)
+ {
+ const uint cMaxPasses = 4;
+ uint32 hist[256 * cMaxPasses]; clear_obj(hist);
+ for (uint i = 0; i < num_syms; i++) { uint freq = pSyms0[i].m_key; hist[freq & 0xFF]++; hist[256 + ((freq >> 8) & 0xFF)]++; hist[256 * 2 + ((freq >> 16) & 0xFF)]++; hist[256 * 3 + ((freq >> 24) & 0xFF)]++; }
+ sym_freq* pCur_syms = pSyms0, * pNew_syms = pSyms1;
+ uint total_passes = cMaxPasses; while ((total_passes > 1) && (num_syms == hist[(total_passes - 1) * 256])) total_passes--;
+ for (uint pass_shift = 0, pass = 0; pass < total_passes; pass++, pass_shift += 8)
+ {
+ const uint32* pHist = &hist[pass << 8];
+ uint offsets[256], cur_ofs = 0;
+ for (uint i = 0; i < 256; i++) { offsets[i] = cur_ofs; cur_ofs += pHist[i]; }
+ for (uint i = 0; i < num_syms; i++)
+ pNew_syms[offsets[(pCur_syms[i].m_key >> pass_shift) & 0xFF]++] = pCur_syms[i];
+ sym_freq* t = pCur_syms; pCur_syms = pNew_syms; pNew_syms = t;
+ }
+ return pCur_syms;
+ }
+
+ // calculate_minimum_redundancy() originally written by: Alistair Moffat, alistair@cs.mu.oz.au, Jyrki Katajainen, jyrki@diku.dk, November 1996.
+ static void calculate_minimum_redundancy(sym_freq* A, int n)
+ {
+ int root, leaf, next, avbl, used, dpth;
+ if (n == 0) return; else if (n == 1) { A[0].m_key = 1; return; }
+ A[0].m_key += A[1].m_key; root = 0; leaf = 2;
+ for (next = 1; next < n - 1; next++)
+ {
+ if (leaf >= n || A[root].m_key < A[leaf].m_key) { A[next].m_key = A[root].m_key; A[root++].m_key = next; }
+ else A[next].m_key = A[leaf++].m_key;
+ if (leaf >= n || (root < next && A[root].m_key < A[leaf].m_key)) { A[next].m_key += A[root].m_key; A[root++].m_key = next; }
+ else A[next].m_key += A[leaf++].m_key;
+ }
+ A[n - 2].m_key = 0;
+ for (next = n - 3; next >= 0; next--) A[next].m_key = A[A[next].m_key].m_key + 1;
+ avbl = 1; used = dpth = 0; root = n - 2; next = n - 1;
+ while (avbl > 0)
+ {
+ while (root >= 0 && (int)A[root].m_key == dpth) { used++; root--; }
+ while (avbl > used) { A[next--].m_key = dpth; avbl--; }
+ avbl = 2 * used; dpth++; used = 0;
+ }
+ }
+
+ // Limits canonical Huffman code table's max code size to max_code_size.
+ static void huffman_enforce_max_code_size(int* pNum_codes, int code_list_len, int max_code_size)
+ {
+ if (code_list_len <= 1) return;
+
+ for (int i = max_code_size + 1; i <= MAX_HUFF_CODESIZE; i++) pNum_codes[max_code_size] += pNum_codes[i];
+
+ uint32 total = 0;
+ for (int i = max_code_size; i > 0; i--)
+ total += (((uint32)pNum_codes[i]) << (max_code_size - i));
+
+ while (total != (1UL << max_code_size))
+ {
+ pNum_codes[max_code_size]--;
+ for (int i = max_code_size - 1; i > 0; i--)
+ {
+ if (pNum_codes[i]) { pNum_codes[i]--; pNum_codes[i + 1] += 2; break; }
+ }
+ total--;
+ }
+ }
+
+ // Generates an optimized offman table.
+ void jpeg_encoder::optimize_huffman_table(int table_num, int table_len)
+ {
+ sym_freq syms0[MAX_HUFF_SYMBOLS], syms1[MAX_HUFF_SYMBOLS];
+ syms0[0].m_key = 1; syms0[0].m_sym_index = 0; // dummy symbol, assures that no valid code contains all 1's
+ int num_used_syms = 1;
+ const uint32* pSym_count = &m_huff_count[table_num][0];
+ for (int i = 0; i < table_len; i++)
+ if (pSym_count[i]) { syms0[num_used_syms].m_key = pSym_count[i]; syms0[num_used_syms++].m_sym_index = i + 1; }
+ sym_freq* pSyms = radix_sort_syms(num_used_syms, syms0, syms1);
+ calculate_minimum_redundancy(pSyms, num_used_syms);
+
+ // Count the # of symbols of each code size.
+ int num_codes[1 + MAX_HUFF_CODESIZE]; clear_obj(num_codes);
+ for (int i = 0; i < num_used_syms; i++)
+ num_codes[pSyms[i].m_key]++;
+
+ const uint JPGE_CODE_SIZE_LIMIT = 16; // the maximum possible size of a JPEG Huffman code (valid range is [9,16] - 9 vs. 8 because of the dummy symbol)
+ huffman_enforce_max_code_size(num_codes, num_used_syms, JPGE_CODE_SIZE_LIMIT);
+
+ // Compute m_huff_bits array, which contains the # of symbols per code size.
+ clear_obj(m_huff_bits[table_num]);
+ for (int i = 1; i <= (int)JPGE_CODE_SIZE_LIMIT; i++)
+ m_huff_bits[table_num][i] = static_cast<uint8>(num_codes[i]);
+
+ // Remove the dummy symbol added above, which must be in largest bucket.
+ for (int i = JPGE_CODE_SIZE_LIMIT; i >= 1; i--)
+ {
+ if (m_huff_bits[table_num][i]) { m_huff_bits[table_num][i]--; break; }
+ }
+
+ // Compute the m_huff_val array, which contains the symbol indices sorted by code size (smallest to largest).
+ for (int i = num_used_syms - 1; i >= 1; i--)
+ m_huff_val[table_num][num_used_syms - 1 - i] = static_cast<uint8>(pSyms[i].m_sym_index - 1);
+ }
+
+ // JPEG marker generation.
+ void jpeg_encoder::emit_byte(uint8 i)
+ {
+ m_all_stream_writes_succeeded = m_all_stream_writes_succeeded && m_pStream->put_obj(i);
+ }
+
+ void jpeg_encoder::emit_word(uint i)
+ {
+ emit_byte(uint8(i >> 8)); emit_byte(uint8(i & 0xFF));
+ }
+
+ void jpeg_encoder::emit_marker(int marker)
+ {
+ emit_byte(uint8(0xFF)); emit_byte(uint8(marker));
+ }
+
+ // Emit JFIF marker
+ void jpeg_encoder::emit_jfif_app0()
+ {
+ emit_marker(M_APP0);
+ emit_word(2 + 4 + 1 + 2 + 1 + 2 + 2 + 1 + 1);
+ emit_byte(0x4A); emit_byte(0x46); emit_byte(0x49); emit_byte(0x46); /* Identifier: ASCII "JFIF" */
+ emit_byte(0);
+ emit_byte(1); /* Major version */
+ emit_byte(1); /* Minor version */
+ emit_byte(0); /* Density unit */
+ emit_word(1);
+ emit_word(1);
+ emit_byte(0); /* No thumbnail image */
+ emit_byte(0);
+ }
+
+ // Emit quantization tables
+ void jpeg_encoder::emit_dqt()
+ {
+ for (int i = 0; i < ((m_num_components == 3) ? 2 : 1); i++)
+ {
+ emit_marker(M_DQT);
+ emit_word(64 + 1 + 2);
+ emit_byte(static_cast<uint8>(i));
+ for (int j = 0; j < 64; j++)
+ emit_byte(static_cast<uint8>(m_quantization_tables[i][j]));
+ }
+ }
+
+ // Emit start of frame marker
+ void jpeg_encoder::emit_sof()
+ {
+ emit_marker(M_SOF0); /* baseline */
+ emit_word(3 * m_num_components + 2 + 5 + 1);
+ emit_byte(8); /* precision */
+ emit_word(m_image_y);
+ emit_word(m_image_x);
+ emit_byte(m_num_components);
+ for (int i = 0; i < m_num_components; i++)
+ {
+ emit_byte(static_cast<uint8>(i + 1)); /* component ID */
+ emit_byte((m_comp_h_samp[i] << 4) + m_comp_v_samp[i]); /* h and v sampling */
+ emit_byte(i > 0); /* quant. table num */
+ }
+ }
+
+ // Emit Huffman table.
+ void jpeg_encoder::emit_dht(uint8* bits, uint8* val, int index, bool ac_flag)
+ {
+ emit_marker(M_DHT);
+
+ int length = 0;
+ for (int i = 1; i <= 16; i++)
+ length += bits[i];
+
+ emit_word(length + 2 + 1 + 16);
+ emit_byte(static_cast<uint8>(index + (ac_flag << 4)));
+
+ for (int i = 1; i <= 16; i++)
+ emit_byte(bits[i]);
+
+ for (int i = 0; i < length; i++)
+ emit_byte(val[i]);
+ }
+
+ // Emit all Huffman tables.
+ void jpeg_encoder::emit_dhts()
+ {
+ emit_dht(m_huff_bits[0 + 0], m_huff_val[0 + 0], 0, false);
+ emit_dht(m_huff_bits[2 + 0], m_huff_val[2 + 0], 0, true);
+ if (m_num_components == 3)
+ {
+ emit_dht(m_huff_bits[0 + 1], m_huff_val[0 + 1], 1, false);
+ emit_dht(m_huff_bits[2 + 1], m_huff_val[2 + 1], 1, true);
+ }
+ }
+
+ // emit start of scan
+ void jpeg_encoder::emit_sos()
+ {
+ emit_marker(M_SOS);
+ emit_word(2 * m_num_components + 2 + 1 + 3);
+ emit_byte(m_num_components);
+ for (int i = 0; i < m_num_components; i++)
+ {
+ emit_byte(static_cast<uint8>(i + 1));
+ if (i == 0)
+ emit_byte((0 << 4) + 0);
+ else
+ emit_byte((1 << 4) + 1);
+ }
+ emit_byte(0); /* spectral selection */
+ emit_byte(63);
+ emit_byte(0);
+ }
+
+ // Emit all markers at beginning of image file.
+ void jpeg_encoder::emit_markers()
+ {
+ emit_marker(M_SOI);
+ emit_jfif_app0();
+ emit_dqt();
+ emit_sof();
+ emit_dhts();
+ emit_sos();
+ }
+
+ // Compute the actual canonical Huffman codes/code sizes given the JPEG huff bits and val arrays.
+ void jpeg_encoder::compute_huffman_table(uint* codes, uint8* code_sizes, uint8* bits, uint8* val)
+ {
+ int i, l, last_p, si;
+ uint8 huff_size[257];
+ uint huff_code[257];
+ uint code;
+
+ int p = 0;
+ for (l = 1; l <= 16; l++)
+ for (i = 1; i <= bits[l]; i++)
+ huff_size[p++] = (char)l;
+
+ huff_size[p] = 0; last_p = p; // write sentinel
+
+ code = 0; si = huff_size[0]; p = 0;
+
+ while (huff_size[p])
+ {
+ while (huff_size[p] == si)
+ huff_code[p++] = code++;
+ code <<= 1;
+ si++;
+ }
+
+ memset(codes, 0, sizeof(codes[0]) * 256);
+ memset(code_sizes, 0, sizeof(code_sizes[0]) * 256);
+ for (p = 0; p < last_p; p++)
+ {
+ codes[val[p]] = huff_code[p];
+ code_sizes[val[p]] = huff_size[p];
+ }
+ }
+
+ // Quantization table generation.
+ void jpeg_encoder::compute_quant_table(int32* pDst, int16* pSrc)
+ {
+ int32 q;
+ if (m_params.m_quality < 50)
+ q = 5000 / m_params.m_quality;
+ else
+ q = 200 - m_params.m_quality * 2;
+ for (int i = 0; i < 64; i++)
+ {
+ int32 j = *pSrc++; j = (j * q + 50L) / 100L;
+ *pDst++ = JPGE_MIN(JPGE_MAX(j, 1), 255);
+ }
+ }
+
+ // Higher-level methods.
+ void jpeg_encoder::first_pass_init()
+ {
+ m_bit_buffer = 0; m_bits_in = 0;
+ memset(m_last_dc_val, 0, 3 * sizeof(m_last_dc_val[0]));
+ m_mcu_y_ofs = 0;
+ m_pass_num = 1;
+ }
+
+ bool jpeg_encoder::second_pass_init()
+ {
+ compute_huffman_table(&m_huff_codes[0 + 0][0], &m_huff_code_sizes[0 + 0][0], m_huff_bits[0 + 0], m_huff_val[0 + 0]);
+ compute_huffman_table(&m_huff_codes[2 + 0][0], &m_huff_code_sizes[2 + 0][0], m_huff_bits[2 + 0], m_huff_val[2 + 0]);
+ if (m_num_components > 1)
+ {
+ compute_huffman_table(&m_huff_codes[0 + 1][0], &m_huff_code_sizes[0 + 1][0], m_huff_bits[0 + 1], m_huff_val[0 + 1]);
+ compute_huffman_table(&m_huff_codes[2 + 1][0], &m_huff_code_sizes[2 + 1][0], m_huff_bits[2 + 1], m_huff_val[2 + 1]);
+ }
+ first_pass_init();
+ emit_markers();
+ m_pass_num = 2;
+ return true;
+ }
+
+ bool jpeg_encoder::jpg_open(int p_x_res, int p_y_res, int src_channels)
+ {
+ m_num_components = 3;
+ switch (m_params.m_subsampling)
+ {
+ case Y_ONLY:
+ {
+ m_num_components = 1;
+ m_comp_h_samp[0] = 1; m_comp_v_samp[0] = 1;
+ m_mcu_x = 8; m_mcu_y = 8;
+ break;
+ }
+ case H1V1:
+ {
+ m_comp_h_samp[0] = 1; m_comp_v_samp[0] = 1;
+ m_comp_h_samp[1] = 1; m_comp_v_samp[1] = 1;
+ m_comp_h_samp[2] = 1; m_comp_v_samp[2] = 1;
+ m_mcu_x = 8; m_mcu_y = 8;
+ break;
+ }
+ case H2V1:
+ {
+ m_comp_h_samp[0] = 2; m_comp_v_samp[0] = 1;
+ m_comp_h_samp[1] = 1; m_comp_v_samp[1] = 1;
+ m_comp_h_samp[2] = 1; m_comp_v_samp[2] = 1;
+ m_mcu_x = 16; m_mcu_y = 8;
+ break;
+ }
+ case H2V2:
+ {
+ m_comp_h_samp[0] = 2; m_comp_v_samp[0] = 2;
+ m_comp_h_samp[1] = 1; m_comp_v_samp[1] = 1;
+ m_comp_h_samp[2] = 1; m_comp_v_samp[2] = 1;
+ m_mcu_x = 16; m_mcu_y = 16;
+ }
+ }
+
+ m_image_x = p_x_res; m_image_y = p_y_res;
+ m_image_bpp = src_channels;
+ m_image_bpl = m_image_x * src_channels;
+ m_image_x_mcu = (m_image_x + m_mcu_x - 1) & (~(m_mcu_x - 1));
+ m_image_y_mcu = (m_image_y + m_mcu_y - 1) & (~(m_mcu_y - 1));
+ m_image_bpl_xlt = m_image_x * m_num_components;
+ m_image_bpl_mcu = m_image_x_mcu * m_num_components;
+ m_mcus_per_row = m_image_x_mcu / m_mcu_x;
+
+ if ((m_mcu_lines[0] = static_cast<uint8*>(jpge_malloc(m_image_bpl_mcu * m_mcu_y))) == NULL) return false;
+ for (int i = 1; i < m_mcu_y; i++)
+ m_mcu_lines[i] = m_mcu_lines[i - 1] + m_image_bpl_mcu;
+
+ if (m_params.m_use_std_tables)
+ {
+ compute_quant_table(m_quantization_tables[0], s_std_lum_quant);
+ compute_quant_table(m_quantization_tables[1], m_params.m_no_chroma_discrim_flag ? s_std_lum_quant : s_std_croma_quant);
+ }
+ else
+ {
+ compute_quant_table(m_quantization_tables[0], s_alt_quant);
+ memcpy(m_quantization_tables[1], m_quantization_tables[0], sizeof(m_quantization_tables[1]));
+ }
+
+ m_out_buf_left = JPGE_OUT_BUF_SIZE;
+ m_pOut_buf = m_out_buf;
+
+ if (m_params.m_two_pass_flag)
+ {
+ clear_obj(m_huff_count);
+ first_pass_init();
+ }
+ else
+ {
+ memcpy(m_huff_bits[0 + 0], s_dc_lum_bits, 17); memcpy(m_huff_val[0 + 0], s_dc_lum_val, DC_LUM_CODES);
+ memcpy(m_huff_bits[2 + 0], s_ac_lum_bits, 17); memcpy(m_huff_val[2 + 0], s_ac_lum_val, AC_LUM_CODES);
+ memcpy(m_huff_bits[0 + 1], s_dc_chroma_bits, 17); memcpy(m_huff_val[0 + 1], s_dc_chroma_val, DC_CHROMA_CODES);
+ memcpy(m_huff_bits[2 + 1], s_ac_chroma_bits, 17); memcpy(m_huff_val[2 + 1], s_ac_chroma_val, AC_CHROMA_CODES);
+ if (!second_pass_init()) return false; // in effect, skip over the first pass
+ }
+ return m_all_stream_writes_succeeded;
+ }
+
+ void jpeg_encoder::load_block_8_8_grey(int x)
+ {
+ uint8* pSrc;
+ sample_array_t* pDst = m_sample_array;
+ x <<= 3;
+ for (int i = 0; i < 8; i++, pDst += 8)
+ {
+ pSrc = m_mcu_lines[i] + x;
+ pDst[0] = pSrc[0] - 128; pDst[1] = pSrc[1] - 128; pDst[2] = pSrc[2] - 128; pDst[3] = pSrc[3] - 128;
+ pDst[4] = pSrc[4] - 128; pDst[5] = pSrc[5] - 128; pDst[6] = pSrc[6] - 128; pDst[7] = pSrc[7] - 128;
+ }
+ }
+
+ void jpeg_encoder::load_block_8_8(int x, int y, int c)
+ {
+ uint8* pSrc;
+ sample_array_t* pDst = m_sample_array;
+ x = (x * (8 * 3)) + c;
+ y <<= 3;
+ for (int i = 0; i < 8; i++, pDst += 8)
+ {
+ pSrc = m_mcu_lines[y + i] + x;
+ pDst[0] = pSrc[0 * 3] - 128; pDst[1] = pSrc[1 * 3] - 128; pDst[2] = pSrc[2 * 3] - 128; pDst[3] = pSrc[3 * 3] - 128;
+ pDst[4] = pSrc[4 * 3] - 128; pDst[5] = pSrc[5 * 3] - 128; pDst[6] = pSrc[6 * 3] - 128; pDst[7] = pSrc[7 * 3] - 128;
+ }
+ }
+
+ void jpeg_encoder::load_block_16_8(int x, int c)
+ {
+ uint8* pSrc1, * pSrc2;
+ sample_array_t* pDst = m_sample_array;
+ x = (x * (16 * 3)) + c;
+ for (int i = 0; i < 16; i += 2, pDst += 8)
+ {
+ pSrc1 = m_mcu_lines[i + 0] + x;
+ pSrc2 = m_mcu_lines[i + 1] + x;
+ pDst[0] = ((pSrc1[0 * 3] + pSrc1[1 * 3] + pSrc2[0 * 3] + pSrc2[1 * 3] + 2) >> 2) - 128; pDst[1] = ((pSrc1[2 * 3] + pSrc1[3 * 3] + pSrc2[2 * 3] + pSrc2[3 * 3] + 2) >> 2) - 128;
+ pDst[2] = ((pSrc1[4 * 3] + pSrc1[5 * 3] + pSrc2[4 * 3] + pSrc2[5 * 3] + 2) >> 2) - 128; pDst[3] = ((pSrc1[6 * 3] + pSrc1[7 * 3] + pSrc2[6 * 3] + pSrc2[7 * 3] + 2) >> 2) - 128;
+ pDst[4] = ((pSrc1[8 * 3] + pSrc1[9 * 3] + pSrc2[8 * 3] + pSrc2[9 * 3] + 2) >> 2) - 128; pDst[5] = ((pSrc1[10 * 3] + pSrc1[11 * 3] + pSrc2[10 * 3] + pSrc2[11 * 3] + 2) >> 2) - 128;
+ pDst[6] = ((pSrc1[12 * 3] + pSrc1[13 * 3] + pSrc2[12 * 3] + pSrc2[13 * 3] + 2) >> 2) - 128; pDst[7] = ((pSrc1[14 * 3] + pSrc1[15 * 3] + pSrc2[14 * 3] + pSrc2[15 * 3] + 2) >> 2) - 128;
+ }
+ }
+
+ void jpeg_encoder::load_block_16_8_8(int x, int c)
+ {
+ uint8* pSrc1;
+ sample_array_t* pDst = m_sample_array;
+ x = (x * (16 * 3)) + c;
+ for (int i = 0; i < 8; i++, pDst += 8)
+ {
+ pSrc1 = m_mcu_lines[i + 0] + x;
+ pDst[0] = ((pSrc1[0 * 3] + pSrc1[1 * 3] + 1) >> 1) - 128; pDst[1] = ((pSrc1[2 * 3] + pSrc1[3 * 3] + 1) >> 1) - 128;
+ pDst[2] = ((pSrc1[4 * 3] + pSrc1[5 * 3] + 1) >> 1) - 128; pDst[3] = ((pSrc1[6 * 3] + pSrc1[7 * 3] + 1) >> 1) - 128;
+ pDst[4] = ((pSrc1[8 * 3] + pSrc1[9 * 3] + 1) >> 1) - 128; pDst[5] = ((pSrc1[10 * 3] + pSrc1[11 * 3] + 1) >> 1) - 128;
+ pDst[6] = ((pSrc1[12 * 3] + pSrc1[13 * 3] + 1) >> 1) - 128; pDst[7] = ((pSrc1[14 * 3] + pSrc1[15 * 3] + 1) >> 1) - 128;
+ }
+ }
+
+ void jpeg_encoder::load_quantized_coefficients(int component_num)
+ {
+ int32* q = m_quantization_tables[component_num > 0];
+ int16* pDst = m_coefficient_array;
+ for (int i = 0; i < 64; i++)
+ {
+ sample_array_t j = m_sample_array[s_zag[i]];
+ if (j < 0)
+ {
+ if ((j = -j + (*q >> 1)) < *q)
+ *pDst++ = 0;
+ else
+ *pDst++ = static_cast<int16>(-(j / *q));
+ }
+ else
+ {
+ if ((j = j + (*q >> 1)) < *q)
+ *pDst++ = 0;
+ else
+ *pDst++ = static_cast<int16>((j / *q));
+ }
+ q++;
+ }
+ }
+
+ void jpeg_encoder::flush_output_buffer()
+ {
+ if (m_out_buf_left != JPGE_OUT_BUF_SIZE)
+ m_all_stream_writes_succeeded = m_all_stream_writes_succeeded && m_pStream->put_buf(m_out_buf, JPGE_OUT_BUF_SIZE - m_out_buf_left);
+ m_pOut_buf = m_out_buf;
+ m_out_buf_left = JPGE_OUT_BUF_SIZE;
+ }
+
+ void jpeg_encoder::put_bits(uint bits, uint len)
+ {
+ m_bit_buffer |= ((uint32)bits << (24 - (m_bits_in += len)));
+ while (m_bits_in >= 8)
+ {
+ uint8 c;
+#define JPGE_PUT_BYTE(c) { *m_pOut_buf++ = (c); if (--m_out_buf_left == 0) flush_output_buffer(); }
+ JPGE_PUT_BYTE(c = (uint8)((m_bit_buffer >> 16) & 0xFF));
+ if (c == 0xFF) JPGE_PUT_BYTE(0);
+ m_bit_buffer <<= 8;
+ m_bits_in -= 8;
+ }
+ }
+
+ void jpeg_encoder::code_coefficients_pass_one(int component_num)
+ {
+ if (component_num >= 3) return; // just to shut up static analysis
+ int i, run_len, nbits, temp1;
+ int16* src = m_coefficient_array;
+ uint32* dc_count = component_num ? m_huff_count[0 + 1] : m_huff_count[0 + 0], * ac_count = component_num ? m_huff_count[2 + 1] : m_huff_count[2 + 0];
+
+ temp1 = src[0] - m_last_dc_val[component_num];
+ m_last_dc_val[component_num] = src[0];
+ if (temp1 < 0) temp1 = -temp1;
+
+ nbits = 0;
+ while (temp1)
+ {
+ nbits++; temp1 >>= 1;
+ }
+
+ dc_count[nbits]++;
+ for (run_len = 0, i = 1; i < 64; i++)
+ {
+ if ((temp1 = m_coefficient_array[i]) == 0)
+ run_len++;
+ else
+ {
+ while (run_len >= 16)
+ {
+ ac_count[0xF0]++;
+ run_len -= 16;
+ }
+ if (temp1 < 0) temp1 = -temp1;
+ nbits = 1;
+ while (temp1 >>= 1) nbits++;
+ ac_count[(run_len << 4) + nbits]++;
+ run_len = 0;
+ }
+ }
+ if (run_len) ac_count[0]++;
+ }
+
+ void jpeg_encoder::code_coefficients_pass_two(int component_num)
+ {
+ int i, j, run_len, nbits, temp1, temp2;
+ int16* pSrc = m_coefficient_array;
+ uint* codes[2];
+ uint8* code_sizes[2];
+
+ if (component_num == 0)
+ {
+ codes[0] = m_huff_codes[0 + 0]; codes[1] = m_huff_codes[2 + 0];
+ code_sizes[0] = m_huff_code_sizes[0 + 0]; code_sizes[1] = m_huff_code_sizes[2 + 0];
+ }
+ else
+ {
+ codes[0] = m_huff_codes[0 + 1]; codes[1] = m_huff_codes[2 + 1];
+ code_sizes[0] = m_huff_code_sizes[0 + 1]; code_sizes[1] = m_huff_code_sizes[2 + 1];
+ }
+
+ temp1 = temp2 = pSrc[0] - m_last_dc_val[component_num];
+ m_last_dc_val[component_num] = pSrc[0];
+
+ if (temp1 < 0)
+ {
+ temp1 = -temp1; temp2--;
+ }
+
+ nbits = 0;
+ while (temp1)
+ {
+ nbits++; temp1 >>= 1;
+ }
+
+ put_bits(codes[0][nbits], code_sizes[0][nbits]);
+ if (nbits) put_bits(temp2 & ((1 << nbits) - 1), nbits);
+
+ for (run_len = 0, i = 1; i < 64; i++)
+ {
+ if ((temp1 = m_coefficient_array[i]) == 0)
+ run_len++;
+ else
+ {
+ while (run_len >= 16)
+ {
+ put_bits(codes[1][0xF0], code_sizes[1][0xF0]);
+ run_len -= 16;
+ }
+ if ((temp2 = temp1) < 0)
+ {
+ temp1 = -temp1;
+ temp2--;
+ }
+ nbits = 1;
+ while (temp1 >>= 1)
+ nbits++;
+ j = (run_len << 4) + nbits;
+ put_bits(codes[1][j], code_sizes[1][j]);
+ put_bits(temp2 & ((1 << nbits) - 1), nbits);
+ run_len = 0;
+ }
+ }
+ if (run_len)
+ put_bits(codes[1][0], code_sizes[1][0]);
+ }
+
+ void jpeg_encoder::code_block(int component_num)
+ {
+ DCT2D(m_sample_array);
+ load_quantized_coefficients(component_num);
+ if (m_pass_num == 1)
+ code_coefficients_pass_one(component_num);
+ else
+ code_coefficients_pass_two(component_num);
+ }
+
+ void jpeg_encoder::process_mcu_row()
+ {
+ if (m_num_components == 1)
+ {
+ for (int i = 0; i < m_mcus_per_row; i++)
+ {
+ load_block_8_8_grey(i); code_block(0);
+ }
+ }
+ else if ((m_comp_h_samp[0] == 1) && (m_comp_v_samp[0] == 1))
+ {
+ for (int i = 0; i < m_mcus_per_row; i++)
+ {
+ load_block_8_8(i, 0, 0); code_block(0); load_block_8_8(i, 0, 1); code_block(1); load_block_8_8(i, 0, 2); code_block(2);
+ }
+ }
+ else if ((m_comp_h_samp[0] == 2) && (m_comp_v_samp[0] == 1))
+ {
+ for (int i = 0; i < m_mcus_per_row; i++)
+ {
+ load_block_8_8(i * 2 + 0, 0, 0); code_block(0); load_block_8_8(i * 2 + 1, 0, 0); code_block(0);
+ load_block_16_8_8(i, 1); code_block(1); load_block_16_8_8(i, 2); code_block(2);
+ }
+ }
+ else if ((m_comp_h_samp[0] == 2) && (m_comp_v_samp[0] == 2))
+ {
+ for (int i = 0; i < m_mcus_per_row; i++)
+ {
+ load_block_8_8(i * 2 + 0, 0, 0); code_block(0); load_block_8_8(i * 2 + 1, 0, 0); code_block(0);
+ load_block_8_8(i * 2 + 0, 1, 0); code_block(0); load_block_8_8(i * 2 + 1, 1, 0); code_block(0);
+ load_block_16_8(i, 1); code_block(1); load_block_16_8(i, 2); code_block(2);
+ }
+ }
+ }
+
+ bool jpeg_encoder::terminate_pass_one()
+ {
+ optimize_huffman_table(0 + 0, DC_LUM_CODES); optimize_huffman_table(2 + 0, AC_LUM_CODES);
+ if (m_num_components > 1)
+ {
+ optimize_huffman_table(0 + 1, DC_CHROMA_CODES); optimize_huffman_table(2 + 1, AC_CHROMA_CODES);
+ }
+ return second_pass_init();
+ }
+
+ bool jpeg_encoder::terminate_pass_two()
+ {
+ put_bits(0x7F, 7);
+ flush_output_buffer();
+ emit_marker(M_EOI);
+ m_pass_num++; // purposely bump up m_pass_num, for debugging
+ return true;
+ }
+
+ bool jpeg_encoder::process_end_of_image()
+ {
+ if (m_mcu_y_ofs)
+ {
+ if (m_mcu_y_ofs < 16) // check here just to shut up static analysis
+ {
+ for (int i = m_mcu_y_ofs; i < m_mcu_y; i++)
+ memcpy(m_mcu_lines[i], m_mcu_lines[m_mcu_y_ofs - 1], m_image_bpl_mcu);
+ }
+
+ process_mcu_row();
+ }
+
+ if (m_pass_num == 1)
+ return terminate_pass_one();
+ else
+ return terminate_pass_two();
+ }
+
+ void jpeg_encoder::load_mcu(const void* pSrc)
+ {
+ const uint8* Psrc = reinterpret_cast<const uint8*>(pSrc);
+
+ uint8* pDst = m_mcu_lines[m_mcu_y_ofs]; // OK to write up to m_image_bpl_xlt bytes to pDst
+
+ if (m_num_components == 1)
+ {
+ if (m_image_bpp == 4)
+ RGBA_to_Y(pDst, Psrc, m_image_x);
+ else if (m_image_bpp == 3)
+ RGB_to_Y(pDst, Psrc, m_image_x);
+ else
+ memcpy(pDst, Psrc, m_image_x);
+ }
+ else
+ {
+ if (m_image_bpp == 4)
+ RGBA_to_YCC(pDst, Psrc, m_image_x);
+ else if (m_image_bpp == 3)
+ RGB_to_YCC(pDst, Psrc, m_image_x);
+ else
+ Y_to_YCC(pDst, Psrc, m_image_x);
+ }
+
+ // Possibly duplicate pixels at end of scanline if not a multiple of 8 or 16
+ if (m_num_components == 1)
+ memset(m_mcu_lines[m_mcu_y_ofs] + m_image_bpl_xlt, pDst[m_image_bpl_xlt - 1], m_image_x_mcu - m_image_x);
+ else
+ {
+ const uint8 y = pDst[m_image_bpl_xlt - 3 + 0], cb = pDst[m_image_bpl_xlt - 3 + 1], cr = pDst[m_image_bpl_xlt - 3 + 2];
+ uint8* q = m_mcu_lines[m_mcu_y_ofs] + m_image_bpl_xlt;
+ for (int i = m_image_x; i < m_image_x_mcu; i++)
+ {
+ *q++ = y; *q++ = cb; *q++ = cr;
+ }
+ }
+
+ if (++m_mcu_y_ofs == m_mcu_y)
+ {
+ process_mcu_row();
+ m_mcu_y_ofs = 0;
+ }
+ }
+
+ void jpeg_encoder::clear()
+ {
+ m_mcu_lines[0] = NULL;
+ m_pass_num = 0;
+ m_all_stream_writes_succeeded = true;
+ }
+
+ jpeg_encoder::jpeg_encoder()
+ {
+ clear();
+ }
+
+ jpeg_encoder::~jpeg_encoder()
+ {
+ deinit();
+ }
+
+ bool jpeg_encoder::init(output_stream* pStream, int width, int height, int src_channels, const params& comp_params)
+ {
+ deinit();
+ if (((!pStream) || (width < 1) || (height < 1)) || ((src_channels != 1) && (src_channels != 3) && (src_channels != 4)) || (!comp_params.check())) return false;
+ m_pStream = pStream;
+ m_params = comp_params;
+ return jpg_open(width, height, src_channels);
+ }
+
+ void jpeg_encoder::deinit()
+ {
+ jpge_free(m_mcu_lines[0]);
+ clear();
+ }
+
+ bool jpeg_encoder::process_scanline(const void* pScanline)
+ {
+ if ((m_pass_num < 1) || (m_pass_num > 2)) return false;
+ if (m_all_stream_writes_succeeded)
+ {
+ if (!pScanline)
+ {
+ if (!process_end_of_image()) return false;
+ }
+ else
+ {
+ load_mcu(pScanline);
+ }
+ }
+ return m_all_stream_writes_succeeded;
+ }
+
+ // Higher level wrappers/examples (optional).
+#include <stdio.h>
+
+ class cfile_stream : public output_stream
+ {
+ cfile_stream(const cfile_stream&);
+ cfile_stream& operator= (const cfile_stream&);
+
+ FILE* m_pFile;
+ bool m_bStatus;
+
+ public:
+ cfile_stream() : m_pFile(NULL), m_bStatus(false) { }
+
+ virtual ~cfile_stream()
+ {
+ close();
+ }
+
+ bool open(const char* pFilename)
+ {
+ close();
+ m_pFile = fopen(pFilename, "wb");
+ m_bStatus = (m_pFile != NULL);
+ return m_bStatus;
+ }
+
+ bool close()
+ {
+ if (m_pFile)
+ {
+ if (fclose(m_pFile) == EOF)
+ {
+ m_bStatus = false;
+ }
+ m_pFile = NULL;
+ }
+ return m_bStatus;
+ }
+
+ virtual bool put_buf(const void* pBuf, int len)
+ {
+ m_bStatus = m_bStatus && (fwrite(pBuf, len, 1, m_pFile) == 1);
+ return m_bStatus;
+ }
+
+ uint get_size() const
+ {
+ return m_pFile ? ftell(m_pFile) : 0;
+ }
+ };
+
+ // Writes JPEG image to file.
+ bool compress_image_to_jpeg_file(const char* pFilename, int width, int height, int num_channels, const uint8* pImage_data, const params& comp_params)
+ {
+ cfile_stream dst_stream;
+ if (!dst_stream.open(pFilename))
+ return false;
+
+ jpge::jpeg_encoder dst_image;
+ if (!dst_image.init(&dst_stream, width, height, num_channels, comp_params))
+ return false;
+
+ for (uint pass_index = 0; pass_index < dst_image.get_total_passes(); pass_index++)
+ {
+ for (int i = 0; i < height; i++)
+ {
+ const uint8* pBuf = pImage_data + i * width * num_channels;
+ if (!dst_image.process_scanline(pBuf))
+ return false;
+ }
+ if (!dst_image.process_scanline(NULL))
+ return false;
+ }
+
+ dst_image.deinit();
+
+ return dst_stream.close();
+ }
+
+ class memory_stream : public output_stream
+ {
+ memory_stream(const memory_stream&);
+ memory_stream& operator= (const memory_stream&);
+
+ uint8* m_pBuf;
+ uint m_buf_size, m_buf_ofs;
+
+ public:
+ memory_stream(void* pBuf, uint buf_size) : m_pBuf(static_cast<uint8*>(pBuf)), m_buf_size(buf_size), m_buf_ofs(0) { }
+
+ virtual ~memory_stream() { }
+
+ virtual bool put_buf(const void* pBuf, int len)
+ {
+ uint buf_remaining = m_buf_size - m_buf_ofs;
+ if ((uint)len > buf_remaining)
+ return false;
+ memcpy(m_pBuf + m_buf_ofs, pBuf, len);
+ m_buf_ofs += len;
+ return true;
+ }
+
+ uint get_size() const
+ {
+ return m_buf_ofs;
+ }
+ };
+
+ bool compress_image_to_jpeg_file_in_memory(void* pDstBuf, int& buf_size, int width, int height, int num_channels, const uint8* pImage_data, const params& comp_params)
+ {
+ if ((!pDstBuf) || (!buf_size))
+ return false;
+
+ memory_stream dst_stream(pDstBuf, buf_size);
+
+ buf_size = 0;
+
+ jpge::jpeg_encoder dst_image;
+ if (!dst_image.init(&dst_stream, width, height, num_channels, comp_params))
+ return false;
+
+ for (uint pass_index = 0; pass_index < dst_image.get_total_passes(); pass_index++)
+ {
+ for (int i = 0; i < height; i++)
+ {
+ const uint8* pScanline = pImage_data + i * width * num_channels;
+ if (!dst_image.process_scanline(pScanline))
+ return false;
+ }
+ if (!dst_image.process_scanline(NULL))
+ return false;
+ }
+
+ dst_image.deinit();
+
+ buf_size = dst_stream.get_size();
+ return true;
+ }
+
+} // namespace jpge
+
diff --git a/thirdparty/jpeg-compressor/jpge.h b/thirdparty/jpeg-compressor/jpge.h
new file mode 100644
index 0000000000..d10510e553
--- /dev/null
+++ b/thirdparty/jpeg-compressor/jpge.h
@@ -0,0 +1,174 @@
+// jpge.h - C++ class for JPEG compression.
+// Public Domain or Apache 2.0, Richard Geldreich <richgel99@gmail.com>
+// Alex Evans: Added RGBA support, linear memory allocator.
+#ifndef JPEG_ENCODER_H
+#define JPEG_ENCODER_H
+
+namespace jpge
+{
+ typedef unsigned char uint8;
+ typedef signed short int16;
+ typedef signed int int32;
+ typedef unsigned short uint16;
+ typedef unsigned int uint32;
+ typedef unsigned int uint;
+
+ // JPEG chroma subsampling factors. Y_ONLY (grayscale images) and H2V2 (color images) are the most common.
+ enum subsampling_t { Y_ONLY = 0, H1V1 = 1, H2V1 = 2, H2V2 = 3 };
+
+ // JPEG compression parameters structure.
+ struct params
+ {
+ inline params() : m_quality(85), m_subsampling(H2V2), m_no_chroma_discrim_flag(false), m_two_pass_flag(false), m_use_std_tables(false) { }
+
+ inline bool check() const
+ {
+ if ((m_quality < 1) || (m_quality > 100)) return false;
+ if ((uint)m_subsampling > (uint)H2V2) return false;
+ return true;
+ }
+
+ // Quality: 1-100, higher is better. Typical values are around 50-95.
+ int m_quality;
+
+ // m_subsampling:
+ // 0 = Y (grayscale) only
+ // 1 = YCbCr, no subsampling (H1V1, YCbCr 1x1x1, 3 blocks per MCU)
+ // 2 = YCbCr, H2V1 subsampling (YCbCr 2x1x1, 4 blocks per MCU)
+ // 3 = YCbCr, H2V2 subsampling (YCbCr 4x1x1, 6 blocks per MCU-- very common)
+ subsampling_t m_subsampling;
+
+ // Disables CbCr discrimination - only intended for testing.
+ // If true, the Y quantization table is also used for the CbCr channels.
+ bool m_no_chroma_discrim_flag;
+
+ bool m_two_pass_flag;
+
+ // By default we use the same quantization tables as mozjpeg's default.
+ // Set to true to use the traditional tables from JPEG Annex K.
+ bool m_use_std_tables;
+ };
+
+ // Writes JPEG image to a file.
+ // num_channels must be 1 (Y) or 3 (RGB), image pitch must be width*num_channels.
+ bool compress_image_to_jpeg_file(const char* pFilename, int width, int height, int num_channels, const uint8* pImage_data, const params& comp_params = params());
+
+ // Writes JPEG image to memory buffer.
+ // On entry, buf_size is the size of the output buffer pointed at by pBuf, which should be at least ~1024 bytes.
+ // If return value is true, buf_size will be set to the size of the compressed data.
+ bool compress_image_to_jpeg_file_in_memory(void* pBuf, int& buf_size, int width, int height, int num_channels, const uint8* pImage_data, const params& comp_params = params());
+
+ // Output stream abstract class - used by the jpeg_encoder class to write to the output stream.
+ // put_buf() is generally called with len==JPGE_OUT_BUF_SIZE bytes, but for headers it'll be called with smaller amounts.
+ class output_stream
+ {
+ public:
+ virtual ~output_stream() { };
+ virtual bool put_buf(const void* Pbuf, int len) = 0;
+ template<class T> inline bool put_obj(const T& obj) { return put_buf(&obj, sizeof(T)); }
+ };
+
+ // Lower level jpeg_encoder class - useful if more control is needed than the above helper functions.
+ class jpeg_encoder
+ {
+ public:
+ jpeg_encoder();
+ ~jpeg_encoder();
+
+ // Initializes the compressor.
+ // pStream: The stream object to use for writing compressed data.
+ // params - Compression parameters structure, defined above.
+ // width, height - Image dimensions.
+ // channels - May be 1, or 3. 1 indicates grayscale, 3 indicates RGB source data.
+ // Returns false on out of memory or if a stream write fails.
+ bool init(output_stream* pStream, int width, int height, int src_channels, const params& comp_params = params());
+
+ const params& get_params() const { return m_params; }
+
+ // Deinitializes the compressor, freeing any allocated memory. May be called at any time.
+ void deinit();
+
+ uint get_total_passes() const { return m_params.m_two_pass_flag ? 2 : 1; }
+ inline uint get_cur_pass() { return m_pass_num; }
+
+ // Call this method with each source scanline.
+ // width * src_channels bytes per scanline is expected (RGB or Y format).
+ // You must call with NULL after all scanlines are processed to finish compression.
+ // Returns false on out of memory or if a stream write fails.
+ bool process_scanline(const void* pScanline);
+
+ private:
+ jpeg_encoder(const jpeg_encoder&);
+ jpeg_encoder& operator =(const jpeg_encoder&);
+
+ typedef int32 sample_array_t;
+
+ output_stream* m_pStream;
+ params m_params;
+ uint8 m_num_components;
+ uint8 m_comp_h_samp[3], m_comp_v_samp[3];
+ int m_image_x, m_image_y, m_image_bpp, m_image_bpl;
+ int m_image_x_mcu, m_image_y_mcu;
+ int m_image_bpl_xlt, m_image_bpl_mcu;
+ int m_mcus_per_row;
+ int m_mcu_x, m_mcu_y;
+ uint8* m_mcu_lines[16];
+ uint8 m_mcu_y_ofs;
+ sample_array_t m_sample_array[64];
+ int16 m_coefficient_array[64];
+ int32 m_quantization_tables[2][64];
+ uint m_huff_codes[4][256];
+ uint8 m_huff_code_sizes[4][256];
+ uint8 m_huff_bits[4][17];
+ uint8 m_huff_val[4][256];
+ uint32 m_huff_count[4][256];
+ int m_last_dc_val[3];
+ enum { JPGE_OUT_BUF_SIZE = 2048 };
+ uint8 m_out_buf[JPGE_OUT_BUF_SIZE];
+ uint8* m_pOut_buf;
+ uint m_out_buf_left;
+ uint32 m_bit_buffer;
+ uint m_bits_in;
+ uint8 m_pass_num;
+ bool m_all_stream_writes_succeeded;
+
+ void optimize_huffman_table(int table_num, int table_len);
+ void emit_byte(uint8 i);
+ void emit_word(uint i);
+ void emit_marker(int marker);
+ void emit_jfif_app0();
+ void emit_dqt();
+ void emit_sof();
+ void emit_dht(uint8* bits, uint8* val, int index, bool ac_flag);
+ void emit_dhts();
+ void emit_sos();
+ void emit_markers();
+ void compute_huffman_table(uint* codes, uint8* code_sizes, uint8* bits, uint8* val);
+ void compute_quant_table(int32* dst, int16* src);
+ void adjust_quant_table(int32* dst, int32* src);
+ void first_pass_init();
+ bool second_pass_init();
+ bool jpg_open(int p_x_res, int p_y_res, int src_channels);
+ void load_block_8_8_grey(int x);
+ void load_block_8_8(int x, int y, int c);
+ void load_block_16_8(int x, int c);
+ void load_block_16_8_8(int x, int c);
+ void load_quantized_coefficients(int component_num);
+ void flush_output_buffer();
+ void put_bits(uint bits, uint len);
+ void code_coefficients_pass_one(int component_num);
+ void code_coefficients_pass_two(int component_num);
+ void code_block(int component_num);
+ void process_mcu_row();
+ bool terminate_pass_one();
+ bool terminate_pass_two();
+ bool process_end_of_image();
+ void load_mcu(const void* src);
+ void clear();
+ void init();
+ };
+
+} // namespace jpge
+
+#endif // JPEG_ENCODER
+
diff --git a/thirdparty/meshoptimizer/patches/attribute-aware-simplify-distance-only-metric.patch b/thirdparty/meshoptimizer/patches/attribute-aware-simplify-distance-only-metric.patch
index 213f35dd69..21daac6eec 100644
--- a/thirdparty/meshoptimizer/patches/attribute-aware-simplify-distance-only-metric.patch
+++ b/thirdparty/meshoptimizer/patches/attribute-aware-simplify-distance-only-metric.patch
@@ -1,5 +1,5 @@
diff --git a/thirdparty/meshoptimizer/simplifier.cpp b/thirdparty/meshoptimizer/simplifier.cpp
-index e384046ffe..ccc99edb1a 100644
+index 5e92e2dc73..e40c141e76 100644
--- a/thirdparty/meshoptimizer/simplifier.cpp
+++ b/thirdparty/meshoptimizer/simplifier.cpp
@@ -20,7 +20,7 @@
@@ -11,7 +11,7 @@ index e384046ffe..ccc99edb1a 100644
// This work is based on:
// Michael Garland and Paul S. Heckbert. Surface simplification using quadric error metrics. 1997
-@@ -445,6 +445,7 @@ struct Collapse
+@@ -453,6 +453,7 @@ struct Collapse
float error;
unsigned int errorui;
};
@@ -19,7 +19,7 @@ index e384046ffe..ccc99edb1a 100644
};
static float normalize(Vector3& v)
-@@ -525,6 +526,34 @@ static float quadricError(const Quadric& Q, const Vector3& v)
+@@ -533,6 +534,34 @@ static float quadricError(const Quadric& Q, const Vector3& v)
return fabsf(r) * s;
}
@@ -54,7 +54,7 @@ index e384046ffe..ccc99edb1a 100644
static void quadricFromPlane(Quadric& Q, float a, float b, float c, float d, float w)
{
float aw = a * w;
-@@ -680,7 +709,7 @@ static void quadricUpdateAttributes(Quadric& Q, const Vector3& p0, const Vector3
+@@ -688,7 +717,7 @@ static void quadricUpdateAttributes(Quadric& Q, const Vector3& p0, const Vector3
}
#endif
@@ -63,7 +63,7 @@ index e384046ffe..ccc99edb1a 100644
{
for (size_t i = 0; i < index_count; i += 3)
{
-@@ -690,6 +719,9 @@ static void fillFaceQuadrics(Quadric* vertex_quadrics, const unsigned int* indic
+@@ -698,6 +727,9 @@ static void fillFaceQuadrics(Quadric* vertex_quadrics, const unsigned int* indic
Quadric Q;
quadricFromTriangle(Q, vertex_positions[i0], vertex_positions[i1], vertex_positions[i2], 1.f);
@@ -73,7 +73,7 @@ index e384046ffe..ccc99edb1a 100644
#if ATTRIBUTES
quadricUpdateAttributes(Q, vertex_positions[i0], vertex_positions[i1], vertex_positions[i2], Q.w);
-@@ -700,7 +732,7 @@ static void fillFaceQuadrics(Quadric* vertex_quadrics, const unsigned int* indic
+@@ -708,7 +740,7 @@ static void fillFaceQuadrics(Quadric* vertex_quadrics, const unsigned int* indic
}
}
@@ -82,7 +82,7 @@ index e384046ffe..ccc99edb1a 100644
{
for (size_t i = 0; i < index_count; i += 3)
{
-@@ -744,6 +776,9 @@ static void fillEdgeQuadrics(Quadric* vertex_quadrics, const unsigned int* indic
+@@ -752,6 +784,9 @@ static void fillEdgeQuadrics(Quadric* vertex_quadrics, const unsigned int* indic
quadricAdd(vertex_quadrics[remap[i0]], Q);
quadricAdd(vertex_quadrics[remap[i1]], Q);
@@ -92,7 +92,7 @@ index e384046ffe..ccc99edb1a 100644
}
}
}
-@@ -848,7 +883,7 @@ static size_t pickEdgeCollapses(Collapse* collapses, const unsigned int* indices
+@@ -856,7 +891,7 @@ static size_t pickEdgeCollapses(Collapse* collapses, const unsigned int* indices
return collapse_count;
}
@@ -101,7 +101,7 @@ index e384046ffe..ccc99edb1a 100644
{
for (size_t i = 0; i < collapse_count; ++i)
{
-@@ -868,10 +903,14 @@ static void rankEdgeCollapses(Collapse* collapses, size_t collapse_count, const
+@@ -876,10 +911,14 @@ static void rankEdgeCollapses(Collapse* collapses, size_t collapse_count, const
float ei = quadricError(qi, vertex_positions[i1]);
float ej = quadricError(qj, vertex_positions[j1]);
@@ -116,7 +116,7 @@ index e384046ffe..ccc99edb1a 100644
}
}
-@@ -968,7 +1007,7 @@ static void sortEdgeCollapses(unsigned int* sort_order, const Collapse* collapse
+@@ -976,7 +1015,7 @@ static void sortEdgeCollapses(unsigned int* sort_order, const Collapse* collapse
}
}
@@ -125,7 +125,7 @@ index e384046ffe..ccc99edb1a 100644
{
size_t edge_collapses = 0;
size_t triangle_collapses = 0;
-@@ -1030,6 +1069,7 @@ static size_t performEdgeCollapses(unsigned int* collapse_remap, unsigned char*
+@@ -1038,6 +1077,7 @@ static size_t performEdgeCollapses(unsigned int* collapse_remap, unsigned char*
assert(collapse_remap[r1] == r1);
quadricAdd(vertex_quadrics[r1], vertex_quadrics[r0]);
@@ -133,7 +133,7 @@ index e384046ffe..ccc99edb1a 100644
if (vertex_kind[i0] == Kind_Complex)
{
-@@ -1067,7 +1107,7 @@ static size_t performEdgeCollapses(unsigned int* collapse_remap, unsigned char*
+@@ -1075,7 +1115,7 @@ static size_t performEdgeCollapses(unsigned int* collapse_remap, unsigned char*
triangle_collapses += (vertex_kind[i0] == Kind_Border) ? 1 : 2;
edge_collapses++;
@@ -142,7 +142,7 @@ index e384046ffe..ccc99edb1a 100644
}
#if TRACE
-@@ -1455,9 +1495,11 @@ size_t meshopt_simplifyWithAttributes(unsigned int* destination, const unsigned
+@@ -1463,9 +1503,11 @@ size_t meshopt_simplifyWithAttributes(unsigned int* destination, const unsigned
Quadric* vertex_quadrics = allocator.allocate<Quadric>(vertex_count);
memset(vertex_quadrics, 0, vertex_count * sizeof(Quadric));
@@ -156,7 +156,7 @@ index e384046ffe..ccc99edb1a 100644
if (result != indices)
memcpy(result, indices, index_count * sizeof(unsigned int));
-@@ -1488,7 +1530,7 @@ size_t meshopt_simplifyWithAttributes(unsigned int* destination, const unsigned
+@@ -1496,7 +1538,7 @@ size_t meshopt_simplifyWithAttributes(unsigned int* destination, const unsigned
if (edge_collapse_count == 0)
break;
@@ -165,7 +165,7 @@ index e384046ffe..ccc99edb1a 100644
#if TRACE > 1
dumpEdgeCollapses(edge_collapses, edge_collapse_count, vertex_kind);
-@@ -1507,7 +1549,7 @@ size_t meshopt_simplifyWithAttributes(unsigned int* destination, const unsigned
+@@ -1515,7 +1557,7 @@ size_t meshopt_simplifyWithAttributes(unsigned int* destination, const unsigned
printf("pass %d: ", int(pass_count++));
#endif
diff --git a/thirdparty/meshoptimizer/patches/attribute-aware-simplify.patch b/thirdparty/meshoptimizer/patches/attribute-aware-simplify.patch
index 51a424765e..33a17fe9fa 100644
--- a/thirdparty/meshoptimizer/patches/attribute-aware-simplify.patch
+++ b/thirdparty/meshoptimizer/patches/attribute-aware-simplify.patch
@@ -15,7 +15,7 @@ index be4b765d97..463fad29da 100644
* Experimental: Mesh simplifier (sloppy)
* Reduces the number of triangles in the mesh, sacrificing mesh appearance for simplification performance
diff --git a/thirdparty/meshoptimizer/simplifier.cpp b/thirdparty/meshoptimizer/simplifier.cpp
-index bf1431269d..e384046ffe 100644
+index a74b08a97d..5e92e2dc73 100644
--- a/thirdparty/meshoptimizer/simplifier.cpp
+++ b/thirdparty/meshoptimizer/simplifier.cpp
@@ -20,6 +20,8 @@
@@ -27,7 +27,7 @@ index bf1431269d..e384046ffe 100644
// This work is based on:
// Michael Garland and Paul S. Heckbert. Surface simplification using quadric error metrics. 1997
// Michael Garland. Quadric-based polygonal surface simplification. 1999
-@@ -363,6 +365,10 @@ static void classifyVertices(unsigned char* result, unsigned int* loop, unsigned
+@@ -371,6 +373,10 @@ static void classifyVertices(unsigned char* result, unsigned int* loop, unsigned
struct Vector3
{
float x, y, z;
@@ -38,7 +38,7 @@ index bf1431269d..e384046ffe 100644
};
static float rescalePositions(Vector3* result, const float* vertex_positions_data, size_t vertex_count, size_t vertex_positions_stride)
-@@ -419,6 +425,13 @@ struct Quadric
+@@ -427,6 +433,13 @@ struct Quadric
float a10, a20, a21;
float b0, b1, b2, c;
float w;
@@ -52,7 +52,7 @@ index bf1431269d..e384046ffe 100644
};
struct Collapse
-@@ -461,6 +474,16 @@ static void quadricAdd(Quadric& Q, const Quadric& R)
+@@ -469,6 +482,16 @@ static void quadricAdd(Quadric& Q, const Quadric& R)
Q.b2 += R.b2;
Q.c += R.c;
Q.w += R.w;
@@ -69,7 +69,7 @@ index bf1431269d..e384046ffe 100644
}
static float quadricError(const Quadric& Q, const Vector3& v)
-@@ -486,6 +509,17 @@ static float quadricError(const Quadric& Q, const Vector3& v)
+@@ -494,6 +517,17 @@ static float quadricError(const Quadric& Q, const Vector3& v)
r += ry * v.y;
r += rz * v.z;
@@ -87,7 +87,7 @@ index bf1431269d..e384046ffe 100644
float s = Q.w == 0.f ? 0.f : 1.f / Q.w;
return fabsf(r) * s;
-@@ -509,6 +543,13 @@ static void quadricFromPlane(Quadric& Q, float a, float b, float c, float d, flo
+@@ -517,6 +551,13 @@ static void quadricFromPlane(Quadric& Q, float a, float b, float c, float d, flo
Q.b2 = c * dw;
Q.c = d * dw;
Q.w = w;
@@ -101,7 +101,7 @@ index bf1431269d..e384046ffe 100644
}
static void quadricFromPoint(Quadric& Q, float x, float y, float z, float w)
-@@ -561,6 +602,84 @@ static void quadricFromTriangleEdge(Quadric& Q, const Vector3& p0, const Vector3
+@@ -569,6 +610,84 @@ static void quadricFromTriangleEdge(Quadric& Q, const Vector3& p0, const Vector3
quadricFromPlane(Q, normal.x, normal.y, normal.z, -distance, length * weight);
}
@@ -186,7 +186,7 @@ index bf1431269d..e384046ffe 100644
static void fillFaceQuadrics(Quadric* vertex_quadrics, const unsigned int* indices, size_t index_count, const Vector3* vertex_positions, const unsigned int* remap)
{
for (size_t i = 0; i < index_count; i += 3)
-@@ -572,6 +691,9 @@ static void fillFaceQuadrics(Quadric* vertex_quadrics, const unsigned int* indic
+@@ -580,6 +699,9 @@ static void fillFaceQuadrics(Quadric* vertex_quadrics, const unsigned int* indic
Quadric Q;
quadricFromTriangle(Q, vertex_positions[i0], vertex_positions[i1], vertex_positions[i2], 1.f);
@@ -196,7 +196,7 @@ index bf1431269d..e384046ffe 100644
quadricAdd(vertex_quadrics[remap[i0]], Q);
quadricAdd(vertex_quadrics[remap[i1]], Q);
quadricAdd(vertex_quadrics[remap[i2]], Q);
-@@ -1265,13 +1387,19 @@ MESHOPTIMIZER_API unsigned int* meshopt_simplifyDebugLoopBack = 0;
+@@ -1273,13 +1395,19 @@ MESHOPTIMIZER_API unsigned int* meshopt_simplifyDebugLoopBack = 0;
#endif
size_t meshopt_simplify(unsigned int* destination, const unsigned int* indices, size_t index_count, const float* vertex_positions_data, size_t vertex_count, size_t vertex_positions_stride, size_t target_index_count, float target_error, float* out_result_error)
@@ -218,7 +218,7 @@ index bf1431269d..e384046ffe 100644
meshopt_Allocator allocator;
-@@ -1285,7 +1413,7 @@ size_t meshopt_simplify(unsigned int* destination, const unsigned int* indices,
+@@ -1293,7 +1421,7 @@ size_t meshopt_simplify(unsigned int* destination, const unsigned int* indices,
// build position remap that maps each vertex to the one with identical position
unsigned int* remap = allocator.allocate<unsigned int>(vertex_count);
unsigned int* wedge = allocator.allocate<unsigned int>(vertex_count);
@@ -227,7 +227,7 @@ index bf1431269d..e384046ffe 100644
// classify vertices; vertex kind determines collapse rules, see kCanCollapse
unsigned char* vertex_kind = allocator.allocate<unsigned char>(vertex_count);
-@@ -1309,7 +1437,21 @@ size_t meshopt_simplify(unsigned int* destination, const unsigned int* indices,
+@@ -1317,7 +1445,21 @@ size_t meshopt_simplify(unsigned int* destination, const unsigned int* indices,
#endif
Vector3* vertex_positions = allocator.allocate<Vector3>(vertex_count);
@@ -250,7 +250,7 @@ index bf1431269d..e384046ffe 100644
Quadric* vertex_quadrics = allocator.allocate<Quadric>(vertex_count);
memset(vertex_quadrics, 0, vertex_count * sizeof(Quadric));
-@@ -1401,7 +1543,9 @@ size_t meshopt_simplify(unsigned int* destination, const unsigned int* indices,
+@@ -1409,7 +1551,9 @@ size_t meshopt_simplify(unsigned int* destination, const unsigned int* indices,
// result_error is quadratic; we need to remap it back to linear
if (out_result_error)
diff --git a/thirdparty/meshoptimizer/simplifier.cpp b/thirdparty/meshoptimizer/simplifier.cpp
index ccc99edb1a..e40c141e76 100644
--- a/thirdparty/meshoptimizer/simplifier.cpp
+++ b/thirdparty/meshoptimizer/simplifier.cpp
@@ -276,7 +276,15 @@ static void classifyVertices(unsigned char* result, unsigned int* loop, unsigned
{
unsigned int target = edges[j].next;
- if (!hasEdge(adjacency, target, vertex))
+ if (target == vertex)
+ {
+ // degenerate triangles have two distinct edges instead of three, and the self edge
+ // is bi-directional by definition; this can break border/seam classification by "closing"
+ // the open edge from another triangle and falsely marking the vertex as manifold
+ // instead we mark the vertex as having >1 open edges which turns it into locked/complex
+ openinc[vertex] = openout[vertex] = vertex;
+ }
+ else if (!hasEdge(adjacency, target, vertex))
{
openinc[target] = (openinc[target] == ~0u) ? vertex : target;
openout[vertex] = (openout[vertex] == ~0u) ? target : vertex;
diff --git a/thirdparty/misc/ok_color.h b/thirdparty/misc/ok_color.h
new file mode 100644
index 0000000000..dbc7dafc36
--- /dev/null
+++ b/thirdparty/misc/ok_color.h
@@ -0,0 +1,688 @@
+// Copyright(c) 2021 Björn Ottosson
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of
+// this software and associated documentation files(the "Software"), to deal in
+// the Software without restriction, including without limitation the rights to
+// use, copy, modify, merge, publish, distribute, sublicense, and /or sell copies
+// of the Software, and to permit persons to whom the Software is furnished to do
+// so, subject to the following conditions :
+// The above copyright notice and this permission notice shall be included in all
+// copies or substantial portions of the Software.
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+// SOFTWARE.
+
+#ifndef OK_COLOR_H
+#define OK_COLOR_H
+
+#include <cmath>
+#include <cfloat>
+
+class ok_color
+{
+public:
+
+struct Lab { float L; float a; float b; };
+struct RGB { float r; float g; float b; };
+struct HSV { float h; float s; float v; };
+struct HSL { float h; float s; float l; };
+struct LC { float L; float C; };
+
+// Alternative representation of (L_cusp, C_cusp)
+// Encoded so S = C_cusp/L_cusp and T = C_cusp/(1-L_cusp)
+// The maximum value for C in the triangle is then found as fmin(S*L, T*(1-L)), for a given L
+struct ST { float S; float T; };
+
+static constexpr float pi = 3.1415926535897932384626433832795028841971693993751058209749445923078164062f;
+
+float clamp(float x, float min, float max)
+{
+ if (x < min)
+ return min;
+ if (x > max)
+ return max;
+
+ return x;
+}
+
+float sgn(float x)
+{
+ return (float)(0.f < x) - (float)(x < 0.f);
+}
+
+float srgb_transfer_function(float a)
+{
+ return .0031308f >= a ? 12.92f * a : 1.055f * powf(a, .4166666666666667f) - .055f;
+}
+
+float srgb_transfer_function_inv(float a)
+{
+ return .04045f < a ? powf((a + .055f) / 1.055f, 2.4f) : a / 12.92f;
+}
+
+Lab linear_srgb_to_oklab(RGB c)
+{
+ float l = 0.4122214708f * c.r + 0.5363325363f * c.g + 0.0514459929f * c.b;
+ float m = 0.2119034982f * c.r + 0.6806995451f * c.g + 0.1073969566f * c.b;
+ float s = 0.0883024619f * c.r + 0.2817188376f * c.g + 0.6299787005f * c.b;
+
+ float l_ = cbrtf(l);
+ float m_ = cbrtf(m);
+ float s_ = cbrtf(s);
+
+ return {
+ 0.2104542553f * l_ + 0.7936177850f * m_ - 0.0040720468f * s_,
+ 1.9779984951f * l_ - 2.4285922050f * m_ + 0.4505937099f * s_,
+ 0.0259040371f * l_ + 0.7827717662f * m_ - 0.8086757660f * s_,
+ };
+}
+
+RGB oklab_to_linear_srgb(Lab c)
+{
+ float l_ = c.L + 0.3963377774f * c.a + 0.2158037573f * c.b;
+ float m_ = c.L - 0.1055613458f * c.a - 0.0638541728f * c.b;
+ float s_ = c.L - 0.0894841775f * c.a - 1.2914855480f * c.b;
+
+ float l = l_ * l_ * l_;
+ float m = m_ * m_ * m_;
+ float s = s_ * s_ * s_;
+
+ return {
+ +4.0767416621f * l - 3.3077115913f * m + 0.2309699292f * s,
+ -1.2684380046f * l + 2.6097574011f * m - 0.3413193965f * s,
+ -0.0041960863f * l - 0.7034186147f * m + 1.7076147010f * s,
+ };
+}
+
+// Finds the maximum saturation possible for a given hue that fits in sRGB
+// Saturation here is defined as S = C/L
+// a and b must be normalized so a^2 + b^2 == 1
+float compute_max_saturation(float a, float b)
+{
+ // Max saturation will be when one of r, g or b goes below zero.
+
+ // Select different coefficients depending on which component goes below zero first
+ float k0, k1, k2, k3, k4, wl, wm, ws;
+
+ if (-1.88170328f * a - 0.80936493f * b > 1)
+ {
+ // Red component
+ k0 = +1.19086277f; k1 = +1.76576728f; k2 = +0.59662641f; k3 = +0.75515197f; k4 = +0.56771245f;
+ wl = +4.0767416621f; wm = -3.3077115913f; ws = +0.2309699292f;
+ }
+ else if (1.81444104f * a - 1.19445276f * b > 1)
+ {
+ // Green component
+ k0 = +0.73956515f; k1 = -0.45954404f; k2 = +0.08285427f; k3 = +0.12541070f; k4 = +0.14503204f;
+ wl = -1.2684380046f; wm = +2.6097574011f; ws = -0.3413193965f;
+ }
+ else
+ {
+ // Blue component
+ k0 = +1.35733652f; k1 = -0.00915799f; k2 = -1.15130210f; k3 = -0.50559606f; k4 = +0.00692167f;
+ wl = -0.0041960863f; wm = -0.7034186147f; ws = +1.7076147010f;
+ }
+
+ // Approximate max saturation using a polynomial:
+ float S = k0 + k1 * a + k2 * b + k3 * a * a + k4 * a * b;
+
+ // Do one step Halley's method to get closer
+ // this gives an error less than 10e6, except for some blue hues where the dS/dh is close to infinite
+ // this should be sufficient for most applications, otherwise do two/three steps
+
+ float k_l = +0.3963377774f * a + 0.2158037573f * b;
+ float k_m = -0.1055613458f * a - 0.0638541728f * b;
+ float k_s = -0.0894841775f * a - 1.2914855480f * b;
+
+ {
+ float l_ = 1.f + S * k_l;
+ float m_ = 1.f + S * k_m;
+ float s_ = 1.f + S * k_s;
+
+ float l = l_ * l_ * l_;
+ float m = m_ * m_ * m_;
+ float s = s_ * s_ * s_;
+
+ float l_dS = 3.f * k_l * l_ * l_;
+ float m_dS = 3.f * k_m * m_ * m_;
+ float s_dS = 3.f * k_s * s_ * s_;
+
+ float l_dS2 = 6.f * k_l * k_l * l_;
+ float m_dS2 = 6.f * k_m * k_m * m_;
+ float s_dS2 = 6.f * k_s * k_s * s_;
+
+ float f = wl * l + wm * m + ws * s;
+ float f1 = wl * l_dS + wm * m_dS + ws * s_dS;
+ float f2 = wl * l_dS2 + wm * m_dS2 + ws * s_dS2;
+
+ S = S - f * f1 / (f1 * f1 - 0.5f * f * f2);
+ }
+
+ return S;
+}
+
+// finds L_cusp and C_cusp for a given hue
+// a and b must be normalized so a^2 + b^2 == 1
+LC find_cusp(float a, float b)
+{
+ // First, find the maximum saturation (saturation S = C/L)
+ float S_cusp = compute_max_saturation(a, b);
+
+ // Convert to linear sRGB to find the first point where at least one of r,g or b >= 1:
+ RGB rgb_at_max = oklab_to_linear_srgb({ 1, S_cusp * a, S_cusp * b });
+ float L_cusp = cbrtf(1.f / fmax(fmax(rgb_at_max.r, rgb_at_max.g), rgb_at_max.b));
+ float C_cusp = L_cusp * S_cusp;
+
+ return { L_cusp , C_cusp };
+}
+
+// Finds intersection of the line defined by
+// L = L0 * (1 - t) + t * L1;
+// C = t * C1;
+// a and b must be normalized so a^2 + b^2 == 1
+float find_gamut_intersection(float a, float b, float L1, float C1, float L0, LC cusp)
+{
+ // Find the intersection for upper and lower half seprately
+ float t;
+ if (((L1 - L0) * cusp.C - (cusp.L - L0) * C1) <= 0.f)
+ {
+ // Lower half
+
+ t = cusp.C * L0 / (C1 * cusp.L + cusp.C * (L0 - L1));
+ }
+ else
+ {
+ // Upper half
+
+ // First intersect with triangle
+ t = cusp.C * (L0 - 1.f) / (C1 * (cusp.L - 1.f) + cusp.C * (L0 - L1));
+
+ // Then one step Halley's method
+ {
+ float dL = L1 - L0;
+ float dC = C1;
+
+ float k_l = +0.3963377774f * a + 0.2158037573f * b;
+ float k_m = -0.1055613458f * a - 0.0638541728f * b;
+ float k_s = -0.0894841775f * a - 1.2914855480f * b;
+
+ float l_dt = dL + dC * k_l;
+ float m_dt = dL + dC * k_m;
+ float s_dt = dL + dC * k_s;
+
+
+ // If higher accuracy is required, 2 or 3 iterations of the following block can be used:
+ {
+ float L = L0 * (1.f - t) + t * L1;
+ float C = t * C1;
+
+ float l_ = L + C * k_l;
+ float m_ = L + C * k_m;
+ float s_ = L + C * k_s;
+
+ float l = l_ * l_ * l_;
+ float m = m_ * m_ * m_;
+ float s = s_ * s_ * s_;
+
+ float ldt = 3 * l_dt * l_ * l_;
+ float mdt = 3 * m_dt * m_ * m_;
+ float sdt = 3 * s_dt * s_ * s_;
+
+ float ldt2 = 6 * l_dt * l_dt * l_;
+ float mdt2 = 6 * m_dt * m_dt * m_;
+ float sdt2 = 6 * s_dt * s_dt * s_;
+
+ float r = 4.0767416621f * l - 3.3077115913f * m + 0.2309699292f * s - 1;
+ float r1 = 4.0767416621f * ldt - 3.3077115913f * mdt + 0.2309699292f * sdt;
+ float r2 = 4.0767416621f * ldt2 - 3.3077115913f * mdt2 + 0.2309699292f * sdt2;
+
+ float u_r = r1 / (r1 * r1 - 0.5f * r * r2);
+ float t_r = -r * u_r;
+
+ float g = -1.2684380046f * l + 2.6097574011f * m - 0.3413193965f * s - 1;
+ float g1 = -1.2684380046f * ldt + 2.6097574011f * mdt - 0.3413193965f * sdt;
+ float g2 = -1.2684380046f * ldt2 + 2.6097574011f * mdt2 - 0.3413193965f * sdt2;
+
+ float u_g = g1 / (g1 * g1 - 0.5f * g * g2);
+ float t_g = -g * u_g;
+
+ b = -0.0041960863f * l - 0.7034186147f * m + 1.7076147010f * s - 1;
+ float b1 = -0.0041960863f * ldt - 0.7034186147f * mdt + 1.7076147010f * sdt;
+ float b2 = -0.0041960863f * ldt2 - 0.7034186147f * mdt2 + 1.7076147010f * sdt2;
+
+ float u_b = b1 / (b1 * b1 - 0.5f * b * b2);
+ float t_b = -b * u_b;
+
+ t_r = u_r >= 0.f ? t_r : FLT_MAX;
+ t_g = u_g >= 0.f ? t_g : FLT_MAX;
+ t_b = u_b >= 0.f ? t_b : FLT_MAX;
+
+ t += fmin(t_r, fmin(t_g, t_b));
+ }
+ }
+ }
+
+ return t;
+}
+
+float find_gamut_intersection(float a, float b, float L1, float C1, float L0)
+{
+ // Find the cusp of the gamut triangle
+ LC cusp = find_cusp(a, b);
+
+ return find_gamut_intersection(a, b, L1, C1, L0, cusp);
+}
+
+RGB gamut_clip_preserve_chroma(RGB rgb)
+{
+ if (rgb.r < 1 && rgb.g < 1 && rgb.b < 1 && rgb.r > 0 && rgb.g > 0 && rgb.b > 0)
+ return rgb;
+
+ Lab lab = linear_srgb_to_oklab(rgb);
+
+ float L = lab.L;
+ float eps = 0.00001f;
+ float C = fmax(eps, sqrtf(lab.a * lab.a + lab.b * lab.b));
+ float a_ = lab.a / C;
+ float b_ = lab.b / C;
+
+ float L0 = clamp(L, 0, 1);
+
+ float t = find_gamut_intersection(a_, b_, L, C, L0);
+ float L_clipped = L0 * (1 - t) + t * L;
+ float C_clipped = t * C;
+
+ return oklab_to_linear_srgb({ L_clipped, C_clipped * a_, C_clipped * b_ });
+}
+
+RGB gamut_clip_project_to_0_5(RGB rgb)
+{
+ if (rgb.r < 1 && rgb.g < 1 && rgb.b < 1 && rgb.r > 0 && rgb.g > 0 && rgb.b > 0)
+ return rgb;
+
+ Lab lab = linear_srgb_to_oklab(rgb);
+
+ float L = lab.L;
+ float eps = 0.00001f;
+ float C = fmax(eps, sqrtf(lab.a * lab.a + lab.b * lab.b));
+ float a_ = lab.a / C;
+ float b_ = lab.b / C;
+
+ float L0 = 0.5;
+
+ float t = find_gamut_intersection(a_, b_, L, C, L0);
+ float L_clipped = L0 * (1 - t) + t * L;
+ float C_clipped = t * C;
+
+ return oklab_to_linear_srgb({ L_clipped, C_clipped * a_, C_clipped * b_ });
+}
+
+RGB gamut_clip_project_to_L_cusp(RGB rgb)
+{
+ if (rgb.r < 1 && rgb.g < 1 && rgb.b < 1 && rgb.r > 0 && rgb.g > 0 && rgb.b > 0)
+ return rgb;
+
+ Lab lab = linear_srgb_to_oklab(rgb);
+
+ float L = lab.L;
+ float eps = 0.00001f;
+ float C = fmax(eps, sqrtf(lab.a * lab.a + lab.b * lab.b));
+ float a_ = lab.a / C;
+ float b_ = lab.b / C;
+
+ // The cusp is computed here and in find_gamut_intersection, an optimized solution would only compute it once.
+ LC cusp = find_cusp(a_, b_);
+
+ float L0 = cusp.L;
+
+ float t = find_gamut_intersection(a_, b_, L, C, L0);
+
+ float L_clipped = L0 * (1 - t) + t * L;
+ float C_clipped = t * C;
+
+ return oklab_to_linear_srgb({ L_clipped, C_clipped * a_, C_clipped * b_ });
+}
+
+RGB gamut_clip_adaptive_L0_0_5(RGB rgb, float alpha = 0.05f)
+{
+ if (rgb.r < 1 && rgb.g < 1 && rgb.b < 1 && rgb.r > 0 && rgb.g > 0 && rgb.b > 0)
+ return rgb;
+
+ Lab lab = linear_srgb_to_oklab(rgb);
+
+ float L = lab.L;
+ float eps = 0.00001f;
+ float C = fmax(eps, sqrtf(lab.a * lab.a + lab.b * lab.b));
+ float a_ = lab.a / C;
+ float b_ = lab.b / C;
+
+ float Ld = L - 0.5f;
+ float e1 = 0.5f + fabs(Ld) + alpha * C;
+ float L0 = 0.5f * (1.f + sgn(Ld) * (e1 - sqrtf(e1 * e1 - 2.f * fabs(Ld))));
+
+ float t = find_gamut_intersection(a_, b_, L, C, L0);
+ float L_clipped = L0 * (1.f - t) + t * L;
+ float C_clipped = t * C;
+
+ return oklab_to_linear_srgb({ L_clipped, C_clipped * a_, C_clipped * b_ });
+}
+
+RGB gamut_clip_adaptive_L0_L_cusp(RGB rgb, float alpha = 0.05f)
+{
+ if (rgb.r < 1 && rgb.g < 1 && rgb.b < 1 && rgb.r > 0 && rgb.g > 0 && rgb.b > 0)
+ return rgb;
+
+ Lab lab = linear_srgb_to_oklab(rgb);
+
+ float L = lab.L;
+ float eps = 0.00001f;
+ float C = fmax(eps, sqrtf(lab.a * lab.a + lab.b * lab.b));
+ float a_ = lab.a / C;
+ float b_ = lab.b / C;
+
+ // The cusp is computed here and in find_gamut_intersection, an optimized solution would only compute it once.
+ LC cusp = find_cusp(a_, b_);
+
+ float Ld = L - cusp.L;
+ float k = 2.f * (Ld > 0 ? 1.f - cusp.L : cusp.L);
+
+ float e1 = 0.5f * k + fabs(Ld) + alpha * C / k;
+ float L0 = cusp.L + 0.5f * (sgn(Ld) * (e1 - sqrtf(e1 * e1 - 2.f * k * fabs(Ld))));
+
+ float t = find_gamut_intersection(a_, b_, L, C, L0);
+ float L_clipped = L0 * (1.f - t) + t * L;
+ float C_clipped = t * C;
+
+ return oklab_to_linear_srgb({ L_clipped, C_clipped * a_, C_clipped * b_ });
+}
+
+float toe(float x)
+{
+ constexpr float k_1 = 0.206f;
+ constexpr float k_2 = 0.03f;
+ constexpr float k_3 = (1.f + k_1) / (1.f + k_2);
+ return 0.5f * (k_3 * x - k_1 + sqrtf((k_3 * x - k_1) * (k_3 * x - k_1) + 4 * k_2 * k_3 * x));
+}
+
+float toe_inv(float x)
+{
+ constexpr float k_1 = 0.206f;
+ constexpr float k_2 = 0.03f;
+ constexpr float k_3 = (1.f + k_1) / (1.f + k_2);
+ return (x * x + k_1 * x) / (k_3 * (x + k_2));
+}
+
+ST to_ST(LC cusp)
+{
+ float L = cusp.L;
+ float C = cusp.C;
+ return { C / L, C / (1 - L) };
+}
+
+// Returns a smooth approximation of the location of the cusp
+// This polynomial was created by an optimization process
+// It has been designed so that S_mid < S_max and T_mid < T_max
+ST get_ST_mid(float a_, float b_)
+{
+ float S = 0.11516993f + 1.f / (
+ +7.44778970f + 4.15901240f * b_
+ + a_ * (-2.19557347f + 1.75198401f * b_
+ + a_ * (-2.13704948f - 10.02301043f * b_
+ + a_ * (-4.24894561f + 5.38770819f * b_ + 4.69891013f * a_
+ )))
+ );
+
+ float T = 0.11239642f + 1.f / (
+ +1.61320320f - 0.68124379f * b_
+ + a_ * (+0.40370612f + 0.90148123f * b_
+ + a_ * (-0.27087943f + 0.61223990f * b_
+ + a_ * (+0.00299215f - 0.45399568f * b_ - 0.14661872f * a_
+ )))
+ );
+
+ return { S, T };
+}
+
+struct Cs { float C_0; float C_mid; float C_max; };
+Cs get_Cs(float L, float a_, float b_)
+{
+ LC cusp = find_cusp(a_, b_);
+
+ float C_max = find_gamut_intersection(a_, b_, L, 1, L, cusp);
+ ST ST_max = to_ST(cusp);
+
+ // Scale factor to compensate for the curved part of gamut shape:
+ float k = C_max / fmin((L * ST_max.S), (1 - L) * ST_max.T);
+
+ float C_mid;
+ {
+ ST ST_mid = get_ST_mid(a_, b_);
+
+ // Use a soft minimum function, instead of a sharp triangle shape to get a smooth value for chroma.
+ float C_a = L * ST_mid.S;
+ float C_b = (1.f - L) * ST_mid.T;
+ C_mid = 0.9f * k * sqrtf(sqrtf(1.f / (1.f / (C_a * C_a * C_a * C_a) + 1.f / (C_b * C_b * C_b * C_b))));
+ }
+
+ float C_0;
+ {
+ // for C_0, the shape is independent of hue, so ST are constant. Values picked to roughly be the average values of ST.
+ float C_a = L * 0.4f;
+ float C_b = (1.f - L) * 0.8f;
+
+ // Use a soft minimum function, instead of a sharp triangle shape to get a smooth value for chroma.
+ C_0 = sqrtf(1.f / (1.f / (C_a * C_a) + 1.f / (C_b * C_b)));
+ }
+
+ return { C_0, C_mid, C_max };
+}
+
+RGB okhsl_to_srgb(HSL hsl)
+{
+ float h = hsl.h;
+ float s = hsl.s;
+ float l = hsl.l;
+
+ if (l == 1.0f)
+ {
+ return { 1.f, 1.f, 1.f };
+ }
+
+ else if (l == 0.f)
+ {
+ return { 0.f, 0.f, 0.f };
+ }
+
+ float a_ = cosf(2.f * pi * h);
+ float b_ = sinf(2.f * pi * h);
+ float L = toe_inv(l);
+
+ Cs cs = get_Cs(L, a_, b_);
+ float C_0 = cs.C_0;
+ float C_mid = cs.C_mid;
+ float C_max = cs.C_max;
+
+ float mid = 0.8f;
+ float mid_inv = 1.25f;
+
+ float C, t, k_0, k_1, k_2;
+
+ if (s < mid)
+ {
+ t = mid_inv * s;
+
+ k_1 = mid * C_0;
+ k_2 = (1.f - k_1 / C_mid);
+
+ C = t * k_1 / (1.f - k_2 * t);
+ }
+ else
+ {
+ t = (s - mid)/ (1 - mid);
+
+ k_0 = C_mid;
+ k_1 = (1.f - mid) * C_mid * C_mid * mid_inv * mid_inv / C_0;
+ k_2 = (1.f - (k_1) / (C_max - C_mid));
+
+ C = k_0 + t * k_1 / (1.f - k_2 * t);
+ }
+
+ RGB rgb = oklab_to_linear_srgb({ L, C * a_, C * b_ });
+ return {
+ srgb_transfer_function(rgb.r),
+ srgb_transfer_function(rgb.g),
+ srgb_transfer_function(rgb.b),
+ };
+}
+
+HSL srgb_to_okhsl(RGB rgb)
+{
+ Lab lab = linear_srgb_to_oklab({
+ srgb_transfer_function_inv(rgb.r),
+ srgb_transfer_function_inv(rgb.g),
+ srgb_transfer_function_inv(rgb.b)
+ });
+
+ float C = sqrtf(lab.a * lab.a + lab.b * lab.b);
+ float a_ = lab.a / C;
+ float b_ = lab.b / C;
+
+ float L = lab.L;
+ float h = 0.5f + 0.5f * atan2f(-lab.b, -lab.a) / pi;
+
+ Cs cs = get_Cs(L, a_, b_);
+ float C_0 = cs.C_0;
+ float C_mid = cs.C_mid;
+ float C_max = cs.C_max;
+
+ // Inverse of the interpolation in okhsl_to_srgb:
+
+ float mid = 0.8f;
+ float mid_inv = 1.25f;
+
+ float s;
+ if (C < C_mid)
+ {
+ float k_1 = mid * C_0;
+ float k_2 = (1.f - k_1 / C_mid);
+
+ float t = C / (k_1 + k_2 * C);
+ s = t * mid;
+ }
+ else
+ {
+ float k_0 = C_mid;
+ float k_1 = (1.f - mid) * C_mid * C_mid * mid_inv * mid_inv / C_0;
+ float k_2 = (1.f - (k_1) / (C_max - C_mid));
+
+ float t = (C - k_0) / (k_1 + k_2 * (C - k_0));
+ s = mid + (1.f - mid) * t;
+ }
+
+ float l = toe(L);
+ return { h, s, l };
+}
+
+
+RGB okhsv_to_srgb(HSV hsv)
+{
+ float h = hsv.h;
+ float s = hsv.s;
+ float v = hsv.v;
+
+ float a_ = cosf(2.f * pi * h);
+ float b_ = sinf(2.f * pi * h);
+
+ LC cusp = find_cusp(a_, b_);
+ ST ST_max = to_ST(cusp);
+ float S_max = ST_max.S;
+ float T_max = ST_max.T;
+ float S_0 = 0.5f;
+ float k = 1 - S_0 / S_max;
+
+ // first we compute L and V as if the gamut is a perfect triangle:
+
+ // L, C when v==1:
+ float L_v = 1 - s * S_0 / (S_0 + T_max - T_max * k * s);
+ float C_v = s * T_max * S_0 / (S_0 + T_max - T_max * k * s);
+
+ float L = v * L_v;
+ float C = v * C_v;
+
+ // then we compensate for both toe and the curved top part of the triangle:
+ float L_vt = toe_inv(L_v);
+ float C_vt = C_v * L_vt / L_v;
+
+ float L_new = toe_inv(L);
+ C = C * L_new / L;
+ L = L_new;
+
+ RGB rgb_scale = oklab_to_linear_srgb({ L_vt, a_ * C_vt, b_ * C_vt });
+ float scale_L = cbrtf(1.f / fmax(fmax(rgb_scale.r, rgb_scale.g), fmax(rgb_scale.b, 0.f)));
+
+ L = L * scale_L;
+ C = C * scale_L;
+
+ RGB rgb = oklab_to_linear_srgb({ L, C * a_, C * b_ });
+ return {
+ srgb_transfer_function(rgb.r),
+ srgb_transfer_function(rgb.g),
+ srgb_transfer_function(rgb.b),
+ };
+}
+
+HSV srgb_to_okhsv(RGB rgb)
+{
+ Lab lab = linear_srgb_to_oklab({
+ srgb_transfer_function_inv(rgb.r),
+ srgb_transfer_function_inv(rgb.g),
+ srgb_transfer_function_inv(rgb.b)
+ });
+
+ float C = sqrtf(lab.a * lab.a + lab.b * lab.b);
+ float a_ = lab.a / C;
+ float b_ = lab.b / C;
+
+ float L = lab.L;
+ float h = 0.5f + 0.5f * atan2f(-lab.b, -lab.a) / pi;
+
+ LC cusp = find_cusp(a_, b_);
+ ST ST_max = to_ST(cusp);
+ float S_max = ST_max.S;
+ float T_max = ST_max.T;
+ float S_0 = 0.5f;
+ float k = 1 - S_0 / S_max;
+
+ // first we find L_v, C_v, L_vt and C_vt
+
+ float t = T_max / (C + L * T_max);
+ float L_v = t * L;
+ float C_v = t * C;
+
+ float L_vt = toe_inv(L_v);
+ float C_vt = C_v * L_vt / L_v;
+
+ // we can then use these to invert the step that compensates for the toe and the curved top part of the triangle:
+ RGB rgb_scale = oklab_to_linear_srgb({ L_vt, a_ * C_vt, b_ * C_vt });
+ float scale_L = cbrtf(1.f / fmax(fmax(rgb_scale.r, rgb_scale.g), fmax(rgb_scale.b, 0.f)));
+
+ L = L / scale_L;
+ C = C / scale_L;
+
+ C = C * toe(L) / L;
+ L = toe(L);
+
+ // we can now compute v and s:
+
+ float v = L / L_v;
+ float s = (S_0 + T_max) * C_v / ((T_max * S_0) + T_max * k * C_v);
+
+ return { h, s, v };
+}
+
+};
+#endif // OK_COLOR_H
diff --git a/thirdparty/misc/ok_color_shader.h b/thirdparty/misc/ok_color_shader.h
new file mode 100644
index 0000000000..40d83366ee
--- /dev/null
+++ b/thirdparty/misc/ok_color_shader.h
@@ -0,0 +1,663 @@
+// Copyright(c) 2021 Björn Ottosson
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of
+// this software and associated documentation files(the "Software"), to deal in
+// the Software without restriction, including without limitation the rights to
+// use, copy, modify, merge, publish, distribute, sublicense, and /or sell copies
+// of the Software, and to permit persons to whom the Software is furnished to do
+// so, subject to the following conditions :
+// The above copyright notice and this permission notice shall be included in all
+// copies or substantial portions of the Software.
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+// SOFTWARE.
+
+#ifndef OK_COLOR_SHADER_H
+#define OK_COLOR_SHADER_H
+
+#include "core/string/ustring.h"
+
+static String OK_COLOR_SHADER = R"(shader_type canvas_item;
+
+const float M_PI = 3.1415926535897932384626433832795;
+
+float cbrt( float x )
+{
+ return sign(x)*pow(abs(x),1.0f/3.0f);
+}
+
+float srgb_transfer_function(float a)
+{
+ return .0031308f >= a ? 12.92f * a : 1.055f * pow(a, .4166666666666667f) - .055f;
+}
+
+float srgb_transfer_function_inv(float a)
+{
+ return .04045f < a ? pow((a + .055f) / 1.055f, 2.4f) : a / 12.92f;
+}
+
+vec3 linear_srgb_to_oklab(vec3 c)
+{
+ float l = 0.4122214708f * c.r + 0.5363325363f * c.g + 0.0514459929f * c.b;
+ float m = 0.2119034982f * c.r + 0.6806995451f * c.g + 0.1073969566f * c.b;
+ float s = 0.0883024619f * c.r + 0.2817188376f * c.g + 0.6299787005f * c.b;
+
+ float l_ = cbrt(l);
+ float m_ = cbrt(m);
+ float s_ = cbrt(s);
+
+ return vec3(
+ 0.2104542553f * l_ + 0.7936177850f * m_ - 0.0040720468f * s_,
+ 1.9779984951f * l_ - 2.4285922050f * m_ + 0.4505937099f * s_,
+ 0.0259040371f * l_ + 0.7827717662f * m_ - 0.8086757660f * s_
+ );
+}
+
+vec3 oklab_to_linear_srgb(vec3 c)
+{
+ float l_ = c.x + 0.3963377774f * c.y + 0.2158037573f * c.z;
+ float m_ = c.x - 0.1055613458f * c.y - 0.0638541728f * c.z;
+ float s_ = c.x - 0.0894841775f * c.y - 1.2914855480f * c.z;
+
+ float l = l_ * l_ * l_;
+ float m = m_ * m_ * m_;
+ float s = s_ * s_ * s_;
+
+ return vec3(
+ +4.0767416621f * l - 3.3077115913f * m + 0.2309699292f * s,
+ -1.2684380046f * l + 2.6097574011f * m - 0.3413193965f * s,
+ -0.0041960863f * l - 0.7034186147f * m + 1.7076147010f * s
+ );
+}
+
+// Finds the maximum saturation possible for a given hue that fits in sRGB
+// Saturation here is defined as S = C/L
+// a and b must be normalized so a^2 + b^2 == 1
+float compute_max_saturation(float a, float b)
+{
+ // Max saturation will be when one of r, g or b goes below zero.
+
+ // Select different coefficients depending on which component goes below zero first
+ float k0, k1, k2, k3, k4, wl, wm, ws;
+
+ if (-1.88170328f * a - 0.80936493f * b > 1.f)
+ {
+ // Red component
+ k0 = +1.19086277f; k1 = +1.76576728f; k2 = +0.59662641f; k3 = +0.75515197f; k4 = +0.56771245f;
+ wl = +4.0767416621f; wm = -3.3077115913f; ws = +0.2309699292f;
+ }
+ else if (1.81444104f * a - 1.19445276f * b > 1.f)
+ {
+ // Green component
+ k0 = +0.73956515f; k1 = -0.45954404f; k2 = +0.08285427f; k3 = +0.12541070f; k4 = +0.14503204f;
+ wl = -1.2684380046f; wm = +2.6097574011f; ws = -0.3413193965f;
+ }
+ else
+ {
+ // Blue component
+ k0 = +1.35733652f; k1 = -0.00915799f; k2 = -1.15130210f; k3 = -0.50559606f; k4 = +0.00692167f;
+ wl = -0.0041960863f; wm = -0.7034186147f; ws = +1.7076147010f;
+ }
+
+ // Approximate max saturation using a polynomial:
+ float S = k0 + k1 * a + k2 * b + k3 * a * a + k4 * a * b;
+
+ // Do one step Halley's method to get closer
+ // this gives an error less than 10e6, except for some blue hues where the dS/dh is close to infinite
+ // this should be sufficient for most applications, otherwise do two/three steps
+
+ float k_l = +0.3963377774f * a + 0.2158037573f * b;
+ float k_m = -0.1055613458f * a - 0.0638541728f * b;
+ float k_s = -0.0894841775f * a - 1.2914855480f * b;
+
+ {
+ float l_ = 1.f + S * k_l;
+ float m_ = 1.f + S * k_m;
+ float s_ = 1.f + S * k_s;
+
+ float l = l_ * l_ * l_;
+ float m = m_ * m_ * m_;
+ float s = s_ * s_ * s_;
+
+ float l_dS = 3.f * k_l * l_ * l_;
+ float m_dS = 3.f * k_m * m_ * m_;
+ float s_dS = 3.f * k_s * s_ * s_;
+
+ float l_dS2 = 6.f * k_l * k_l * l_;
+ float m_dS2 = 6.f * k_m * k_m * m_;
+ float s_dS2 = 6.f * k_s * k_s * s_;
+
+ float f = wl * l + wm * m + ws * s;
+ float f1 = wl * l_dS + wm * m_dS + ws * s_dS;
+ float f2 = wl * l_dS2 + wm * m_dS2 + ws * s_dS2;
+
+ S = S - f * f1 / (f1 * f1 - 0.5f * f * f2);
+ }
+
+ return S;
+}
+
+// finds L_cusp and C_cusp for a given hue
+// a and b must be normalized so a^2 + b^2 == 1
+vec2 find_cusp(float a, float b)
+{
+ // First, find the maximum saturation (saturation S = C/L)
+ float S_cusp = compute_max_saturation(a, b);
+
+ // Convert to linear sRGB to find the first point where at least one of r,g or b >= 1:
+ vec3 rgb_at_max = oklab_to_linear_srgb(vec3( 1, S_cusp * a, S_cusp * b ));
+ float L_cusp = cbrt(1.f / max(max(rgb_at_max.r, rgb_at_max.g), rgb_at_max.b));
+ float C_cusp = L_cusp * S_cusp;
+
+ return vec2( L_cusp , C_cusp );
+} )"
+R"(// Finds intersection of the line defined by
+// L = L0 * (1 - t) + t * L1;
+// C = t * C1;
+// a and b must be normalized so a^2 + b^2 == 1
+float find_gamut_intersection(float a, float b, float L1, float C1, float L0, vec2 cusp)
+{
+ // Find the intersection for upper and lower half seprately
+ float t;
+ if (((L1 - L0) * cusp.y - (cusp.x - L0) * C1) <= 0.f)
+ {
+ // Lower half
+
+ t = cusp.y * L0 / (C1 * cusp.x + cusp.y * (L0 - L1));
+ }
+ else
+ {
+ // Upper half
+
+ // First intersect with triangle
+ t = cusp.y * (L0 - 1.f) / (C1 * (cusp.x - 1.f) + cusp.y * (L0 - L1));
+
+ // Then one step Halley's method
+ {
+ float dL = L1 - L0;
+ float dC = C1;
+
+ float k_l = +0.3963377774f * a + 0.2158037573f * b;
+ float k_m = -0.1055613458f * a - 0.0638541728f * b;
+ float k_s = -0.0894841775f * a - 1.2914855480f * b;
+
+ float l_dt = dL + dC * k_l;
+ float m_dt = dL + dC * k_m;
+ float s_dt = dL + dC * k_s;
+
+
+ // If higher accuracy is required, 2 or 3 iterations of the following block can be used:
+ {
+ float L = L0 * (1.f - t) + t * L1;
+ float C = t * C1;
+
+ float l_ = L + C * k_l;
+ float m_ = L + C * k_m;
+ float s_ = L + C * k_s;
+
+ float l = l_ * l_ * l_;
+ float m = m_ * m_ * m_;
+ float s = s_ * s_ * s_;
+
+ float ldt = 3.f * l_dt * l_ * l_;
+ float mdt = 3.f * m_dt * m_ * m_;
+ float sdt = 3.f * s_dt * s_ * s_;
+
+ float ldt2 = 6.f * l_dt * l_dt * l_;
+ float mdt2 = 6.f * m_dt * m_dt * m_;
+ float sdt2 = 6.f * s_dt * s_dt * s_;
+
+ float r = 4.0767416621f * l - 3.3077115913f * m + 0.2309699292f * s - 1.f;
+ float r1 = 4.0767416621f * ldt - 3.3077115913f * mdt + 0.2309699292f * sdt;
+ float r2 = 4.0767416621f * ldt2 - 3.3077115913f * mdt2 + 0.2309699292f * sdt2;
+
+ float u_r = r1 / (r1 * r1 - 0.5f * r * r2);
+ float t_r = -r * u_r;
+
+ float g = -1.2684380046f * l + 2.6097574011f * m - 0.3413193965f * s - 1.f;
+ float g1 = -1.2684380046f * ldt + 2.6097574011f * mdt - 0.3413193965f * sdt;
+ float g2 = -1.2684380046f * ldt2 + 2.6097574011f * mdt2 - 0.3413193965f * sdt2;
+
+ float u_g = g1 / (g1 * g1 - 0.5f * g * g2);
+ float t_g = -g * u_g;
+
+ float b = -0.0041960863f * l - 0.7034186147f * m + 1.7076147010f * s - 1.f;
+ float b1 = -0.0041960863f * ldt - 0.7034186147f * mdt + 1.7076147010f * sdt;
+ float b2 = -0.0041960863f * ldt2 - 0.7034186147f * mdt2 + 1.7076147010f * sdt2;
+
+ float u_b = b1 / (b1 * b1 - 0.5f * b * b2);
+ float t_b = -b * u_b;
+
+ t_r = u_r >= 0.f ? t_r : 10000.f;
+ t_g = u_g >= 0.f ? t_g : 10000.f;
+ t_b = u_b >= 0.f ? t_b : 10000.f;
+
+ t += min(t_r, min(t_g, t_b));
+ }
+ }
+ }
+
+ return t;
+}
+
+float find_gamut_intersection_5(float a, float b, float L1, float C1, float L0)
+{
+ // Find the cusp of the gamut triangle
+ vec2 cusp = find_cusp(a, b);
+
+ return find_gamut_intersection(a, b, L1, C1, L0, cusp);
+})"
+R"(
+
+vec3 gamut_clip_preserve_chroma(vec3 rgb)
+{
+ if (rgb.r < 1.f && rgb.g < 1.f && rgb.b < 1.f && rgb.r > 0.f && rgb.g > 0.f && rgb.b > 0.f)
+ return rgb;
+
+ vec3 lab = linear_srgb_to_oklab(rgb);
+
+ float L = lab.x;
+ float eps = 0.00001f;
+ float C = max(eps, sqrt(lab.y * lab.y + lab.z * lab.z));
+ float a_ = lab.y / C;
+ float b_ = lab.z / C;
+
+ float L0 = clamp(L, 0.f, 1.f);
+
+ float t = find_gamut_intersection_5(a_, b_, L, C, L0);
+ float L_clipped = L0 * (1.f - t) + t * L;
+ float C_clipped = t * C;
+
+ return oklab_to_linear_srgb(vec3( L_clipped, C_clipped * a_, C_clipped * b_ ));
+}
+
+vec3 gamut_clip_project_to_0_5(vec3 rgb)
+{
+ if (rgb.r < 1.f && rgb.g < 1.f && rgb.b < 1.f && rgb.r > 0.f && rgb.g > 0.f && rgb.b > 0.f)
+ return rgb;
+
+ vec3 lab = linear_srgb_to_oklab(rgb);
+
+ float L = lab.x;
+ float eps = 0.00001f;
+ float C = max(eps, sqrt(lab.y * lab.y + lab.z * lab.z));
+ float a_ = lab.y / C;
+ float b_ = lab.z / C;
+
+ float L0 = 0.5;
+
+ float t = find_gamut_intersection_5(a_, b_, L, C, L0);
+ float L_clipped = L0 * (1.f - t) + t * L;
+ float C_clipped = t * C;
+
+ return oklab_to_linear_srgb(vec3( L_clipped, C_clipped * a_, C_clipped * b_ ));
+}
+
+vec3 gamut_clip_project_to_L_cusp(vec3 rgb)
+{
+ if (rgb.r < 1.f && rgb.g < 1.f && rgb.b < 1.f && rgb.r > 0.f && rgb.g > 0.f && rgb.b > 0.f)
+ return rgb;
+
+ vec3 lab = linear_srgb_to_oklab(rgb);
+
+ float L = lab.x;
+ float eps = 0.00001f;
+ float C = max(eps, sqrt(lab.y * lab.y + lab.z * lab.z));
+ float a_ = lab.y / C;
+ float b_ = lab.z / C;
+
+ // The cusp is computed here and in find_gamut_intersection, an optimized solution would only compute it once.
+ vec2 cusp = find_cusp(a_, b_);
+
+ float L0 = cusp.x;
+
+ float t = find_gamut_intersection_5(a_, b_, L, C, L0);
+
+ float L_clipped = L0 * (1.f - t) + t * L;
+ float C_clipped = t * C;
+
+ return oklab_to_linear_srgb(vec3( L_clipped, C_clipped * a_, C_clipped * b_ ));
+}
+
+vec3 gamut_clip_adaptive_L0_0_5(vec3 rgb, float alpha)
+{
+ if (rgb.r < 1.f && rgb.g < 1.f && rgb.b < 1.f && rgb.r > 0.f && rgb.g > 0.f && rgb.b > 0.f)
+ return rgb;
+
+ vec3 lab = linear_srgb_to_oklab(rgb);
+
+ float L = lab.x;
+ float eps = 0.00001f;
+ float C = max(eps, sqrt(lab.y * lab.y + lab.z * lab.z));
+ float a_ = lab.y / C;
+ float b_ = lab.z / C;
+
+ float Ld = L - 0.5f;
+ float e1 = 0.5f + abs(Ld) + alpha * C;
+ float L0 = 0.5f * (1.f + sign(Ld) * (e1 - sqrt(e1 * e1 - 2.f * abs(Ld))));
+
+ float t = find_gamut_intersection_5(a_, b_, L, C, L0);
+ float L_clipped = L0 * (1.f - t) + t * L;
+ float C_clipped = t * C;
+
+ return oklab_to_linear_srgb(vec3( L_clipped, C_clipped * a_, C_clipped * b_ ));
+}
+
+vec3 gamut_clip_adaptive_L0_L_cusp(vec3 rgb, float alpha)
+{
+ if (rgb.r < 1.f && rgb.g < 1.f && rgb.b < 1.f && rgb.r > 0.f && rgb.g > 0.f && rgb.b > 0.f)
+ return rgb;
+
+ vec3 lab = linear_srgb_to_oklab(rgb);
+
+ float L = lab.x;
+ float eps = 0.00001f;
+ float C = max(eps, sqrt(lab.y * lab.y + lab.z * lab.z));
+ float a_ = lab.y / C;
+ float b_ = lab.z / C;
+
+ // The cusp is computed here and in find_gamut_intersection, an optimized solution would only compute it once.
+ vec2 cusp = find_cusp(a_, b_);
+
+ float Ld = L - cusp.x;
+ float k = 2.f * (Ld > 0.f ? 1.f - cusp.x : cusp.x);
+
+ float e1 = 0.5f * k + abs(Ld) + alpha * C / k;
+ float L0 = cusp.x + 0.5f * (sign(Ld) * (e1 - sqrt(e1 * e1 - 2.f * k * abs(Ld))));
+
+ float t = find_gamut_intersection_5(a_, b_, L, C, L0);
+ float L_clipped = L0 * (1.f - t) + t * L;
+ float C_clipped = t * C;
+
+ return oklab_to_linear_srgb(vec3( L_clipped, C_clipped * a_, C_clipped * b_ ));
+}
+
+float toe(float x)
+{
+ float k_1 = 0.206f;
+ float k_2 = 0.03f;
+ float k_3 = (1.f + k_1) / (1.f + k_2);
+ return 0.5f * (k_3 * x - k_1 + sqrt((k_3 * x - k_1) * (k_3 * x - k_1) + 4.f * k_2 * k_3 * x));
+}
+
+float toe_inv(float x)
+{
+ float k_1 = 0.206f;
+ float k_2 = 0.03f;
+ float k_3 = (1.f + k_1) / (1.f + k_2);
+ return (x * x + k_1 * x) / (k_3 * (x + k_2));
+}
+)"
+R"(vec2 to_ST(vec2 cusp)
+{
+ float L = cusp.x;
+ float C = cusp.y;
+ return vec2( C / L, C / (1.f - L) );
+}
+
+// Returns a smooth approximation of the location of the cusp
+// This polynomial was created by an optimization process
+// It has been designed so that S_mid < S_max and T_mid < T_max
+vec2 get_ST_mid(float a_, float b_)
+{
+ float S = 0.11516993f + 1.f / (
+ +7.44778970f + 4.15901240f * b_
+ + a_ * (-2.19557347f + 1.75198401f * b_
+ + a_ * (-2.13704948f - 10.02301043f * b_
+ + a_ * (-4.24894561f + 5.38770819f * b_ + 4.69891013f * a_
+ )))
+ );
+
+ float T = 0.11239642f + 1.f / (
+ +1.61320320f - 0.68124379f * b_
+ + a_ * (+0.40370612f + 0.90148123f * b_
+ + a_ * (-0.27087943f + 0.61223990f * b_
+ + a_ * (+0.00299215f - 0.45399568f * b_ - 0.14661872f * a_
+ )))
+ );
+
+ return vec2( S, T );
+}
+
+vec3 get_Cs(float L, float a_, float b_)
+{
+ vec2 cusp = find_cusp(a_, b_);
+
+ float C_max = find_gamut_intersection(a_, b_, L, 1.f, L, cusp);
+ vec2 ST_max = to_ST(cusp);
+
+ // Scale factor to compensate for the curved part of gamut shape:
+ float k = C_max / min((L * ST_max.x), (1.f - L) * ST_max.y);
+
+ float C_mid;
+ {
+ vec2 ST_mid = get_ST_mid(a_, b_);
+
+ // Use a soft minimum function, instead of a sharp triangle shape to get a smooth value for chroma.
+ float C_a = L * ST_mid.x;
+ float C_b = (1.f - L) * ST_mid.y;
+ C_mid = 0.9f * k * sqrt(sqrt(1.f / (1.f / (C_a * C_a * C_a * C_a) + 1.f / (C_b * C_b * C_b * C_b))));
+ }
+
+ float C_0;
+ {
+ // for C_0, the shape is independent of hue, so vec2 are constant. Values picked to roughly be the average values of vec2.
+ float C_a = L * 0.4f;
+ float C_b = (1.f - L) * 0.8f;
+
+ // Use a soft minimum function, instead of a sharp triangle shape to get a smooth value for chroma.
+ C_0 = sqrt(1.f / (1.f / (C_a * C_a) + 1.f / (C_b * C_b)));
+ }
+
+ return vec3( C_0, C_mid, C_max );
+}
+
+vec3 okhsl_to_srgb(vec3 hsl)
+{
+ float h = hsl.x;
+ float s = hsl.y;
+ float l = hsl.z;
+
+ if (l == 1.0f)
+ {
+ return vec3( 1.f, 1.f, 1.f );
+ }
+
+ else if (l == 0.f)
+ {
+ return vec3( 0.f, 0.f, 0.f );
+ }
+
+ float a_ = cos(2.f * M_PI * h);
+ float b_ = sin(2.f * M_PI * h);
+ float L = toe_inv(l);
+
+ vec3 cs = get_Cs(L, a_, b_);
+ float C_0 = cs.x;
+ float C_mid = cs.y;
+ float C_max = cs.z;
+
+ float mid = 0.8f;
+ float mid_inv = 1.25f;
+
+ float C, t, k_0, k_1, k_2;
+
+ if (s < mid)
+ {
+ t = mid_inv * s;
+
+ k_1 = mid * C_0;
+ k_2 = (1.f - k_1 / C_mid);
+
+ C = t * k_1 / (1.f - k_2 * t);
+ }
+ else
+ {
+ t = (s - mid)/ (1.f - mid);
+
+ k_0 = C_mid;
+ k_1 = (1.f - mid) * C_mid * C_mid * mid_inv * mid_inv / C_0;
+ k_2 = (1.f - (k_1) / (C_max - C_mid));
+
+ C = k_0 + t * k_1 / (1.f - k_2 * t);
+ }
+
+ vec3 rgb = oklab_to_linear_srgb(vec3( L, C * a_, C * b_ ));
+ return vec3(
+ srgb_transfer_function(rgb.r),
+ srgb_transfer_function(rgb.g),
+ srgb_transfer_function(rgb.b)
+ );
+}
+
+vec3 srgb_to_okhsl(vec3 rgb)
+{
+ vec3 lab = linear_srgb_to_oklab(vec3(
+ srgb_transfer_function_inv(rgb.r),
+ srgb_transfer_function_inv(rgb.g),
+ srgb_transfer_function_inv(rgb.b)
+ ));
+
+ float C = sqrt(lab.y * lab.y + lab.z * lab.z);
+ float a_ = lab.y / C;
+ float b_ = lab.z / C;
+
+ float L = lab.x;
+ float h = 0.5f + 0.5f * atan(-lab.z, -lab.y) / M_PI;
+
+ vec3 cs = get_Cs(L, a_, b_);
+ float C_0 = cs.x;
+ float C_mid = cs.y;
+ float C_max = cs.z;
+
+ // Inverse of the interpolation in okhsl_to_srgb:
+
+ float mid = 0.8f;
+ float mid_inv = 1.25f;
+
+ float s;
+ if (C < C_mid)
+ {
+ float k_1 = mid * C_0;
+ float k_2 = (1.f - k_1 / C_mid);
+
+ float t = C / (k_1 + k_2 * C);
+ s = t * mid;
+ }
+ else
+ {
+ float k_0 = C_mid;
+ float k_1 = (1.f - mid) * C_mid * C_mid * mid_inv * mid_inv / C_0;
+ float k_2 = (1.f - (k_1) / (C_max - C_mid));
+
+ float t = (C - k_0) / (k_1 + k_2 * (C - k_0));
+ s = mid + (1.f - mid) * t;
+ }
+
+ float l = toe(L);
+ return vec3( h, s, l );
+}
+
+
+vec3 okhsv_to_srgb(vec3 hsv)
+{
+ float h = hsv.x;
+ float s = hsv.y;
+ float v = hsv.z;
+
+ float a_ = cos(2.f * M_PI * h);
+ float b_ = sin(2.f * M_PI * h);
+
+ vec2 cusp = find_cusp(a_, b_);
+ vec2 ST_max = to_ST(cusp);
+ float S_max = ST_max.x;
+ float T_max = ST_max.y;
+ float S_0 = 0.5f;
+ float k = 1.f- S_0 / S_max;
+
+ // first we compute L and V as if the gamut is a perfect triangle:
+
+ // L, C when v==1:
+ float L_v = 1.f - s * S_0 / (S_0 + T_max - T_max * k * s);
+ float C_v = s * T_max * S_0 / (S_0 + T_max - T_max * k * s);
+
+ float L = v * L_v;
+ float C = v * C_v;
+
+ // then we compensate for both toe and the curved top part of the triangle:
+ float L_vt = toe_inv(L_v);
+ float C_vt = C_v * L_vt / L_v;
+
+ float L_new = toe_inv(L);
+ C = C * L_new / L;
+ L = L_new;
+
+ vec3 rgb_scale = oklab_to_linear_srgb(vec3( L_vt, a_ * C_vt, b_ * C_vt ));
+ float scale_L = cbrt(1.f / max(max(rgb_scale.r, rgb_scale.g), max(rgb_scale.b, 0.f)));
+
+ L = L * scale_L;
+ C = C * scale_L;
+
+ vec3 rgb = oklab_to_linear_srgb(vec3( L, C * a_, C * b_ ));
+ return vec3(
+ srgb_transfer_function(rgb.r),
+ srgb_transfer_function(rgb.g),
+ srgb_transfer_function(rgb.b)
+ );
+}
+)"
+R"(
+vec3 srgb_to_okhsv(vec3 rgb)
+{
+ vec3 lab = linear_srgb_to_oklab(vec3(
+ srgb_transfer_function_inv(rgb.r),
+ srgb_transfer_function_inv(rgb.g),
+ srgb_transfer_function_inv(rgb.b)
+ ));
+
+ float C = sqrt(lab.y * lab.y + lab.z * lab.z);
+ float a_ = lab.y / C;
+ float b_ = lab.z / C;
+
+ float L = lab.x;
+ float h = 0.5f + 0.5f * atan(-lab.z, -lab.y) / M_PI;
+
+ vec2 cusp = find_cusp(a_, b_);
+ vec2 ST_max = to_ST(cusp);
+ float S_max = ST_max.x;
+ float T_max = ST_max.y;
+ float S_0 = 0.5f;
+ float k = 1.f - S_0 / S_max;
+
+ // first we find L_v, C_v, L_vt and C_vt
+
+ float t = T_max / (C + L * T_max);
+ float L_v = t * L;
+ float C_v = t * C;
+
+ float L_vt = toe_inv(L_v);
+ float C_vt = C_v * L_vt / L_v;
+
+ // we can then use these to invert the step that compensates for the toe and the curved top part of the triangle:
+ vec3 rgb_scale = oklab_to_linear_srgb(vec3( L_vt, a_ * C_vt, b_ * C_vt ));
+ float scale_L = cbrt(1.f / max(max(rgb_scale.r, rgb_scale.g), max(rgb_scale.b, 0.f)));
+
+ L = L / scale_L;
+ C = C / scale_L;
+
+ C = C * toe(L) / L;
+ L = toe(L);
+
+ // we can now compute v and s:
+
+ float v = L / L_v;
+ float s = (S_0 + T_max) * C_v / ((T_max * S_0) + T_max * k * C_v);
+
+ return vec3 (h, s, v );
+})";
+
+#endif
diff --git a/thirdparty/openxr/include/openxr/openxr.h b/thirdparty/openxr/include/openxr/openxr.h
index 8798e5a6e0..6c6a52d27e 100644
--- a/thirdparty/openxr/include/openxr/openxr.h
+++ b/thirdparty/openxr/include/openxr/openxr.h
@@ -25,12 +25,15 @@ extern "C" {
((((major) & 0xffffULL) << 48) | (((minor) & 0xffffULL) << 32) | ((patch) & 0xffffffffULL))
// OpenXR current version number.
-#define XR_CURRENT_API_VERSION XR_MAKE_VERSION(1, 0, 22)
+#define XR_CURRENT_API_VERSION XR_MAKE_VERSION(1, 0, 23)
#define XR_VERSION_MAJOR(version) (uint16_t)(((uint64_t)(version) >> 48)& 0xffffULL)
#define XR_VERSION_MINOR(version) (uint16_t)(((uint64_t)(version) >> 32) & 0xffffULL)
#define XR_VERSION_PATCH(version) (uint32_t)((uint64_t)(version) & 0xffffffffULL)
+#define XR_MIN_COMPOSITION_LAYERS_SUPPORTED 16
+
+
#if !defined(XR_NULL_HANDLE)
#if (XR_PTR_SIZE == 8) && XR_CPP_NULLPTR_SUPPORTED
#define XR_NULL_HANDLE nullptr
@@ -120,7 +123,6 @@ XR_DEFINE_HANDLE(XrActionSet)
#define XR_MAX_PATH_LENGTH 256
#define XR_MAX_STRUCTURE_NAME_SIZE 64
#define XR_MAX_RESULT_STRING_SIZE 64
-#define XR_MIN_COMPOSITION_LAYERS_SUPPORTED 16
#define XR_MAX_ACTION_SET_NAME_SIZE 64
#define XR_MAX_LOCALIZED_ACTION_SET_NAME_SIZE 128
#define XR_MAX_ACTION_NAME_SIZE 64
@@ -196,6 +198,10 @@ typedef enum XrResult {
XR_ERROR_SCENE_COMPUTE_CONSISTENCY_MISMATCH_MSFT = -1000097005,
XR_ERROR_DISPLAY_REFRESH_RATE_UNSUPPORTED_FB = -1000101000,
XR_ERROR_COLOR_SPACE_UNSUPPORTED_FB = -1000108000,
+ XR_ERROR_SPACE_COMPONENT_NOT_SUPPORTED_FB = -1000113000,
+ XR_ERROR_SPACE_COMPONENT_NOT_ENABLED_FB = -1000113001,
+ XR_ERROR_SPACE_COMPONENT_STATUS_PENDING_FB = -1000113002,
+ XR_ERROR_SPACE_COMPONENT_STATUS_ALREADY_SET_FB = -1000113003,
XR_ERROR_UNEXPECTED_STATE_PASSTHROUGH_FB = -1000118000,
XR_ERROR_FEATURE_ALREADY_CREATED_PASSTHROUGH_FB = -1000118001,
XR_ERROR_FEATURE_REQUIRED_PASSTHROUGH_FB = -1000118002,
@@ -305,6 +311,9 @@ typedef enum XrStructureType {
XR_TYPE_VIEW_CONFIGURATION_DEPTH_RANGE_EXT = 1000046000,
XR_TYPE_GRAPHICS_BINDING_EGL_MNDX = 1000048004,
XR_TYPE_SPATIAL_GRAPH_NODE_SPACE_CREATE_INFO_MSFT = 1000049000,
+ XR_TYPE_SPATIAL_GRAPH_STATIC_NODE_BINDING_CREATE_INFO_MSFT = 1000049001,
+ XR_TYPE_SPATIAL_GRAPH_NODE_BINDING_PROPERTIES_GET_INFO_MSFT = 1000049002,
+ XR_TYPE_SPATIAL_GRAPH_NODE_BINDING_PROPERTIES_MSFT = 1000049003,
XR_TYPE_SYSTEM_HAND_TRACKING_PROPERTIES_EXT = 1000051000,
XR_TYPE_HAND_TRACKER_CREATE_INFO_EXT = 1000051001,
XR_TYPE_HAND_JOINTS_LOCATE_INFO_EXT = 1000051002,
@@ -332,6 +341,7 @@ typedef enum XrStructureType {
XR_TYPE_COMPOSITION_LAYER_REPROJECTION_PLANE_OVERRIDE_MSFT = 1000066001,
XR_TYPE_ANDROID_SURFACE_SWAPCHAIN_CREATE_INFO_FB = 1000070000,
XR_TYPE_COMPOSITION_LAYER_SECURE_CONTENT_FB = 1000072000,
+ XR_TYPE_INTERACTION_PROFILE_DPAD_BINDING_EXT = 1000078000,
XR_TYPE_INTERACTION_PROFILE_ANALOG_THRESHOLD_VALVE = 1000079000,
XR_TYPE_HAND_JOINTS_MOTION_RANGE_INFO_EXT = 1000080000,
XR_TYPE_LOADER_INIT_INFO_ANDROID_KHR = 1000089000,
@@ -371,6 +381,12 @@ typedef enum XrStructureType {
XR_TYPE_HAND_TRACKING_SCALE_FB = 1000110003,
XR_TYPE_HAND_TRACKING_AIM_STATE_FB = 1000111001,
XR_TYPE_HAND_TRACKING_CAPSULES_STATE_FB = 1000112000,
+ XR_TYPE_SYSTEM_SPATIAL_ENTITY_PROPERTIES_FB = 1000113004,
+ XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_FB = 1000113003,
+ XR_TYPE_SPACE_COMPONENT_STATUS_SET_INFO_FB = 1000113007,
+ XR_TYPE_SPACE_COMPONENT_STATUS_FB = 1000113001,
+ XR_TYPE_EVENT_DATA_SPATIAL_ANCHOR_CREATE_COMPLETE_FB = 1000113005,
+ XR_TYPE_EVENT_DATA_SPACE_SET_STATUS_COMPLETE_FB = 1000113006,
XR_TYPE_FOVEATION_PROFILE_CREATE_INFO_FB = 1000114000,
XR_TYPE_SWAPCHAIN_CREATE_INFO_FOVEATION_FB = 1000114001,
XR_TYPE_SWAPCHAIN_STATE_FOVEATION_FB = 1000114002,
@@ -388,12 +404,14 @@ typedef enum XrStructureType {
XR_TYPE_PASSTHROUGH_STYLE_FB = 1000118020,
XR_TYPE_PASSTHROUGH_COLOR_MAP_MONO_TO_RGBA_FB = 1000118021,
XR_TYPE_PASSTHROUGH_COLOR_MAP_MONO_TO_MONO_FB = 1000118022,
+ XR_TYPE_PASSTHROUGH_BRIGHTNESS_CONTRAST_SATURATION_FB = 1000118023,
XR_TYPE_EVENT_DATA_PASSTHROUGH_STATE_CHANGED_FB = 1000118030,
XR_TYPE_RENDER_MODEL_PATH_INFO_FB = 1000119000,
XR_TYPE_RENDER_MODEL_PROPERTIES_FB = 1000119001,
XR_TYPE_RENDER_MODEL_BUFFER_FB = 1000119002,
XR_TYPE_RENDER_MODEL_LOAD_INFO_FB = 1000119003,
XR_TYPE_SYSTEM_RENDER_MODEL_PROPERTIES_FB = 1000119004,
+ XR_TYPE_RENDER_MODEL_CAPABILITIES_REQUEST_FB = 1000119005,
XR_TYPE_BINDING_MODIFICATIONS_KHR = 1000120000,
XR_TYPE_VIEW_LOCATE_FOVEATED_RENDERING_VARJO = 1000121000,
XR_TYPE_FOVEATED_VIEW_CONFIGURATION_VIEW_VARJO = 1000121001,
@@ -404,6 +422,17 @@ typedef enum XrStructureType {
XR_TYPE_MARKER_SPACE_CREATE_INFO_VARJO = 1000124002,
XR_TYPE_SPATIAL_ANCHOR_PERSISTENCE_INFO_MSFT = 1000142000,
XR_TYPE_SPATIAL_ANCHOR_FROM_PERSISTED_ANCHOR_CREATE_INFO_MSFT = 1000142001,
+ XR_TYPE_SPACE_QUERY_INFO_FB = 1000156001,
+ XR_TYPE_SPACE_QUERY_RESULTS_FB = 1000156002,
+ XR_TYPE_SPACE_STORAGE_LOCATION_FILTER_INFO_FB = 1000156003,
+ XR_TYPE_SPACE_UUID_FILTER_INFO_FB = 1000156054,
+ XR_TYPE_SPACE_COMPONENT_FILTER_INFO_FB = 1000156052,
+ XR_TYPE_EVENT_DATA_SPACE_QUERY_RESULTS_AVAILABLE_FB = 1000156103,
+ XR_TYPE_EVENT_DATA_SPACE_QUERY_COMPLETE_FB = 1000156104,
+ XR_TYPE_SPACE_SAVE_INFO_FB = 1000158000,
+ XR_TYPE_SPACE_ERASE_INFO_FB = 1000158001,
+ XR_TYPE_EVENT_DATA_SPACE_SAVE_COMPLETE_FB = 1000158106,
+ XR_TYPE_EVENT_DATA_SPACE_ERASE_COMPLETE_FB = 1000158107,
XR_TYPE_SWAPCHAIN_IMAGE_FOVEATION_VULKAN_FB = 1000160000,
XR_TYPE_SWAPCHAIN_STATE_ANDROID_SURFACE_DIMENSIONS_FB = 1000161000,
XR_TYPE_SWAPCHAIN_STATE_SAMPLER_OPENGL_ES_FB = 1000162000,
@@ -411,7 +440,12 @@ typedef enum XrStructureType {
XR_TYPE_COMPOSITION_LAYER_SPACE_WARP_INFO_FB = 1000171000,
XR_TYPE_SYSTEM_SPACE_WARP_PROPERTIES_FB = 1000171001,
XR_TYPE_DIGITAL_LENS_CONTROL_ALMALENCE = 1000196000,
+ XR_TYPE_SPACE_CONTAINER_FB = 1000199000,
XR_TYPE_PASSTHROUGH_KEYBOARD_HANDS_INTENSITY_FB = 1000203002,
+ XR_TYPE_COMPOSITION_LAYER_SETTINGS_FB = 1000204000,
+ XR_TYPE_VULKAN_SWAPCHAIN_CREATE_INFO_META = 1000227000,
+ XR_TYPE_PERFORMANCE_METRICS_STATE_META = 1000232001,
+ XR_TYPE_PERFORMANCE_METRICS_COUNTER_META = 1000232002,
XR_TYPE_GRAPHICS_BINDING_VULKAN2_KHR = XR_TYPE_GRAPHICS_BINDING_VULKAN_KHR,
XR_TYPE_SWAPCHAIN_IMAGE_VULKAN2_KHR = XR_TYPE_SWAPCHAIN_IMAGE_VULKAN_KHR,
XR_TYPE_GRAPHICS_REQUIREMENTS_VULKAN2_KHR = XR_TYPE_GRAPHICS_REQUIREMENTS_VULKAN_KHR,
@@ -487,6 +521,7 @@ typedef enum XrObjectType {
XR_OBJECT_TYPE_ACTION = 6,
XR_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000019000,
XR_OBJECT_TYPE_SPATIAL_ANCHOR_MSFT = 1000039000,
+ XR_OBJECT_TYPE_SPATIAL_GRAPH_NODE_BINDING_MSFT = 1000049000,
XR_OBJECT_TYPE_HAND_TRACKER_EXT = 1000051000,
XR_OBJECT_TYPE_SCENE_OBSERVER_MSFT = 1000097000,
XR_OBJECT_TYPE_SCENE_MSFT = 1000097001,
@@ -1424,7 +1459,7 @@ typedef struct XrCompositionLayerCubeKHR {
#define XR_KHR_composition_layer_depth 1
-#define XR_KHR_composition_layer_depth_SPEC_VERSION 5
+#define XR_KHR_composition_layer_depth_SPEC_VERSION 6
#define XR_KHR_COMPOSITION_LAYER_DEPTH_EXTENSION_NAME "XR_KHR_composition_layer_depth"
// XrCompositionLayerDepthInfoKHR extends XrCompositionLayerProjectionView
typedef struct XrCompositionLayerDepthInfoKHR {
@@ -1766,7 +1801,7 @@ XRAPI_ATTR XrResult XRAPI_CALL xrSessionInsertDebugUtilsLabelEXT(
#define XR_EXT_eye_gaze_interaction 1
-#define XR_EXT_eye_gaze_interaction_SPEC_VERSION 1
+#define XR_EXT_eye_gaze_interaction_SPEC_VERSION 2
#define XR_EXT_EYE_GAZE_INTERACTION_EXTENSION_NAME "XR_EXT_eye_gaze_interaction"
// XrSystemEyeGazeInteractionPropertiesEXT extends XrSystemProperties
typedef struct XrSystemEyeGazeInteractionPropertiesEXT {
@@ -1977,8 +2012,10 @@ XRAPI_ATTR XrResult XRAPI_CALL xrSetInputDeviceLocationEXT(
#define XR_MSFT_spatial_graph_bridge 1
-#define XR_MSFT_spatial_graph_bridge_SPEC_VERSION 1
+XR_DEFINE_HANDLE(XrSpatialGraphNodeBindingMSFT)
+#define XR_MSFT_spatial_graph_bridge_SPEC_VERSION 2
#define XR_MSFT_SPATIAL_GRAPH_BRIDGE_EXTENSION_NAME "XR_MSFT_spatial_graph_bridge"
+#define XR_GUID_SIZE_MSFT 16
typedef enum XrSpatialGraphNodeTypeMSFT {
XR_SPATIAL_GRAPH_NODE_TYPE_STATIC_MSFT = 1,
@@ -1989,11 +2026,34 @@ typedef struct XrSpatialGraphNodeSpaceCreateInfoMSFT {
XrStructureType type;
const void* XR_MAY_ALIAS next;
XrSpatialGraphNodeTypeMSFT nodeType;
- uint8_t nodeId[16];
+ uint8_t nodeId[XR_GUID_SIZE_MSFT];
XrPosef pose;
} XrSpatialGraphNodeSpaceCreateInfoMSFT;
+typedef struct XrSpatialGraphStaticNodeBindingCreateInfoMSFT {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrSpace space;
+ XrPosef poseInSpace;
+ XrTime time;
+} XrSpatialGraphStaticNodeBindingCreateInfoMSFT;
+
+typedef struct XrSpatialGraphNodeBindingPropertiesGetInfoMSFT {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+} XrSpatialGraphNodeBindingPropertiesGetInfoMSFT;
+
+typedef struct XrSpatialGraphNodeBindingPropertiesMSFT {
+ XrStructureType type;
+ void* XR_MAY_ALIAS next;
+ uint8_t nodeId[XR_GUID_SIZE_MSFT];
+ XrPosef poseInNodeSpace;
+} XrSpatialGraphNodeBindingPropertiesMSFT;
+
typedef XrResult (XRAPI_PTR *PFN_xrCreateSpatialGraphNodeSpaceMSFT)(XrSession session, const XrSpatialGraphNodeSpaceCreateInfoMSFT* createInfo, XrSpace* space);
+typedef XrResult (XRAPI_PTR *PFN_xrTryCreateSpatialGraphStaticNodeBindingMSFT)(XrSession session, const XrSpatialGraphStaticNodeBindingCreateInfoMSFT* createInfo, XrSpatialGraphNodeBindingMSFT* nodeBinding);
+typedef XrResult (XRAPI_PTR *PFN_xrDestroySpatialGraphNodeBindingMSFT)(XrSpatialGraphNodeBindingMSFT nodeBinding);
+typedef XrResult (XRAPI_PTR *PFN_xrGetSpatialGraphNodeBindingPropertiesMSFT)(XrSpatialGraphNodeBindingMSFT nodeBinding, const XrSpatialGraphNodeBindingPropertiesGetInfoMSFT* getInfo, XrSpatialGraphNodeBindingPropertiesMSFT* properties);
#ifndef XR_NO_PROTOTYPES
#ifdef XR_EXTENSION_PROTOTYPES
@@ -2001,6 +2061,19 @@ XRAPI_ATTR XrResult XRAPI_CALL xrCreateSpatialGraphNodeSpaceMSFT(
XrSession session,
const XrSpatialGraphNodeSpaceCreateInfoMSFT* createInfo,
XrSpace* space);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrTryCreateSpatialGraphStaticNodeBindingMSFT(
+ XrSession session,
+ const XrSpatialGraphStaticNodeBindingCreateInfoMSFT* createInfo,
+ XrSpatialGraphNodeBindingMSFT* nodeBinding);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrDestroySpatialGraphNodeBindingMSFT(
+ XrSpatialGraphNodeBindingMSFT nodeBinding);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrGetSpatialGraphNodeBindingPropertiesMSFT(
+ XrSpatialGraphNodeBindingMSFT nodeBinding,
+ const XrSpatialGraphNodeBindingPropertiesGetInfoMSFT* getInfo,
+ XrSpatialGraphNodeBindingPropertiesMSFT* properties);
#endif /* XR_EXTENSION_PROTOTYPES */
#endif /* !XR_NO_PROTOTYPES */
@@ -2056,6 +2129,7 @@ typedef enum XrHandJointEXT {
typedef enum XrHandJointSetEXT {
XR_HAND_JOINT_SET_DEFAULT_EXT = 0,
+ XR_HAND_JOINT_SET_HAND_WITH_FOREARM_ULTRALEAP = 1000149000,
XR_HAND_JOINT_SET_MAX_ENUM_EXT = 0x7FFFFFFF
} XrHandJointSetEXT;
// XrSystemHandTrackingPropertiesEXT extends XrSystemProperties
@@ -2454,6 +2528,25 @@ typedef struct XrCompositionLayerSecureContentFB {
+#define XR_EXT_dpad_binding 1
+#define XR_EXT_dpad_binding_SPEC_VERSION 1
+#define XR_EXT_DPAD_BINDING_EXTENSION_NAME "XR_EXT_dpad_binding"
+typedef struct XrInteractionProfileDpadBindingEXT {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrPath binding;
+ XrActionSet actionSet;
+ float forceThreshold;
+ float forceThresholdReleased;
+ float centerRegion;
+ float wedgeAngle;
+ XrBool32 isSticky;
+ const XrHapticBaseHeader* onHaptic;
+ const XrHapticBaseHeader* offHaptic;
+} XrInteractionProfileDpadBindingEXT;
+
+
+
#define XR_VALVE_analog_threshold 1
#define XR_VALVE_analog_threshold_SPEC_VERSION 2
#define XR_VALVE_ANALOG_THRESHOLD_EXTENSION_NAME "XR_VALVE_analog_threshold"
@@ -3058,10 +3151,20 @@ XRAPI_ATTR XrResult XRAPI_CALL xrGetFacialExpressionsHTC(
#define XR_HTC_vive_focus3_controller_interaction 1
-#define XR_HTC_vive_focus3_controller_interaction_SPEC_VERSION 1
+#define XR_HTC_vive_focus3_controller_interaction_SPEC_VERSION 2
#define XR_HTC_VIVE_FOCUS3_CONTROLLER_INTERACTION_EXTENSION_NAME "XR_HTC_vive_focus3_controller_interaction"
+#define XR_HTC_hand_interaction 1
+#define XR_HTC_hand_interaction_SPEC_VERSION 1
+#define XR_HTC_HAND_INTERACTION_EXTENSION_NAME "XR_HTC_hand_interaction"
+
+
+#define XR_HTC_vive_wrist_tracker_interaction 1
+#define XR_HTC_vive_wrist_tracker_interaction_SPEC_VERSION 1
+#define XR_HTC_VIVE_WRIST_TRACKER_INTERACTION_EXTENSION_NAME "XR_HTC_vive_wrist_tracker_interaction"
+
+
#define XR_FB_color_space 1
#define XR_FB_color_space_SPEC_VERSION 2
#define XR_FB_COLOR_SPACE_EXTENSION_NAME "XR_FB_color_space"
@@ -3103,7 +3206,7 @@ XRAPI_ATTR XrResult XRAPI_CALL xrSetColorSpaceFB(
#define XR_FB_hand_tracking_mesh 1
-#define XR_FB_hand_tracking_mesh_SPEC_VERSION 1
+#define XR_FB_hand_tracking_mesh_SPEC_VERSION 2
#define XR_FB_HAND_TRACKING_MESH_EXTENSION_NAME "XR_FB_hand_tracking_mesh"
typedef struct XrVector4sFB {
int16_t x;
@@ -3132,7 +3235,7 @@ typedef struct XrHandTrackingMeshFB {
int16_t* indices;
} XrHandTrackingMeshFB;
-// XrHandTrackingScaleFB extends XrHandJointsLocateInfoEXT
+// XrHandTrackingScaleFB extends XrHandJointLocationsEXT
typedef struct XrHandTrackingScaleFB {
XrStructureType type;
void* XR_MAY_ALIAS next;
@@ -3154,7 +3257,7 @@ XRAPI_ATTR XrResult XRAPI_CALL xrGetHandMeshFB(
#define XR_FB_hand_tracking_aim 1
-#define XR_FB_hand_tracking_aim_SPEC_VERSION 1
+#define XR_FB_hand_tracking_aim_SPEC_VERSION 2
#define XR_FB_HAND_TRACKING_AIM_EXTENSION_NAME "XR_FB_hand_tracking_aim"
typedef XrFlags64 XrHandTrackingAimFlagsFB;
@@ -3169,7 +3272,7 @@ static const XrHandTrackingAimFlagsFB XR_HAND_TRACKING_AIM_SYSTEM_GESTURE_BIT_FB
static const XrHandTrackingAimFlagsFB XR_HAND_TRACKING_AIM_DOMINANT_HAND_BIT_FB = 0x00000080;
static const XrHandTrackingAimFlagsFB XR_HAND_TRACKING_AIM_MENU_PRESSED_BIT_FB = 0x00000100;
-// XrHandTrackingAimStateFB extends XrHandJointsLocateInfoEXT
+// XrHandTrackingAimStateFB extends XrHandJointLocationsEXT
typedef struct XrHandTrackingAimStateFB {
XrStructureType type;
void* XR_MAY_ALIAS next;
@@ -3185,26 +3288,128 @@ typedef struct XrHandTrackingAimStateFB {
#define XR_FB_hand_tracking_capsules 1
#define XR_HAND_TRACKING_CAPSULE_POINT_COUNT_FB 2
-#define XR_FB_HAND_TRACKING_CAPSULE_POINT_COUNT XR_HAND_TRACKING_CAPSULE_POINT_COUNT_FB
#define XR_HAND_TRACKING_CAPSULE_COUNT_FB 19
-#define XR_FB_HAND_TRACKING_CAPSULE_COUNT XR_HAND_TRACKING_CAPSULE_COUNT_FB
-#define XR_FB_hand_tracking_capsules_SPEC_VERSION 2
+#define XR_FB_hand_tracking_capsules_SPEC_VERSION 3
#define XR_FB_HAND_TRACKING_CAPSULES_EXTENSION_NAME "XR_FB_hand_tracking_capsules"
+#define XR_FB_HAND_TRACKING_CAPSULE_POINT_COUNT XR_HAND_TRACKING_CAPSULE_POINT_COUNT_FB
+#define XR_FB_HAND_TRACKING_CAPSULE_COUNT XR_HAND_TRACKING_CAPSULE_COUNT_FB
typedef struct XrHandCapsuleFB {
- XrVector3f points[XR_FB_HAND_TRACKING_CAPSULE_POINT_COUNT];
+ XrVector3f points[XR_HAND_TRACKING_CAPSULE_POINT_COUNT_FB];
float radius;
XrHandJointEXT joint;
} XrHandCapsuleFB;
-// XrHandTrackingCapsulesStateFB extends XrHandJointsLocateInfoEXT
+// XrHandTrackingCapsulesStateFB extends XrHandJointLocationsEXT
typedef struct XrHandTrackingCapsulesStateFB {
XrStructureType type;
void* XR_MAY_ALIAS next;
- XrHandCapsuleFB capsules[XR_FB_HAND_TRACKING_CAPSULE_COUNT];
+ XrHandCapsuleFB capsules[XR_HAND_TRACKING_CAPSULE_COUNT_FB];
} XrHandTrackingCapsulesStateFB;
+#define XR_FB_spatial_entity 1
+XR_DEFINE_ATOM(XrAsyncRequestIdFB)
+#define XR_UUID_SIZE_EXT 16
+#define XR_FB_spatial_entity_SPEC_VERSION 1
+#define XR_FB_SPATIAL_ENTITY_EXTENSION_NAME "XR_FB_spatial_entity"
+
+typedef enum XrSpaceComponentTypeFB {
+ XR_SPACE_COMPONENT_TYPE_LOCATABLE_FB = 0,
+ XR_SPACE_COMPONENT_TYPE_STORABLE_FB = 1,
+ XR_SPACE_COMPONENT_TYPE_SPACE_CONTAINER_FB = 7,
+ XR_SPACE_COMPONENT_TYPE_MAX_ENUM_FB = 0x7FFFFFFF
+} XrSpaceComponentTypeFB;
+// XrSystemSpatialEntityPropertiesFB extends XrSystemProperties
+typedef struct XrSystemSpatialEntityPropertiesFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrBool32 supportsSpatialEntity;
+} XrSystemSpatialEntityPropertiesFB;
+
+typedef struct XrSpatialAnchorCreateInfoFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrSpace space;
+ XrPosef poseInSpace;
+ XrTime time;
+} XrSpatialAnchorCreateInfoFB;
+
+typedef struct XrSpaceComponentStatusSetInfoFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrSpaceComponentTypeFB componentType;
+ XrBool32 enabled;
+ XrDuration timeout;
+} XrSpaceComponentStatusSetInfoFB;
+
+typedef struct XrSpaceComponentStatusFB {
+ XrStructureType type;
+ void* XR_MAY_ALIAS next;
+ XrBool32 enabled;
+ XrBool32 changePending;
+} XrSpaceComponentStatusFB;
+
+typedef struct XrUuidEXT {
+ uint8_t data[XR_UUID_SIZE_EXT];
+} XrUuidEXT;
+
+typedef struct XrEventDataSpatialAnchorCreateCompleteFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrAsyncRequestIdFB requestId;
+ XrResult result;
+ XrSpace space;
+ XrUuidEXT uuid;
+} XrEventDataSpatialAnchorCreateCompleteFB;
+
+typedef struct XrEventDataSpaceSetStatusCompleteFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrAsyncRequestIdFB requestId;
+ XrResult result;
+ XrSpace space;
+ XrUuidEXT uuid;
+ XrSpaceComponentTypeFB componentType;
+ XrBool32 enabled;
+} XrEventDataSpaceSetStatusCompleteFB;
+
+typedef XrResult (XRAPI_PTR *PFN_xrCreateSpatialAnchorFB)(XrSession session, const XrSpatialAnchorCreateInfoFB* info, XrAsyncRequestIdFB* requestId);
+typedef XrResult (XRAPI_PTR *PFN_xrGetSpaceUuidFB)(XrSpace space, XrUuidEXT* uuid);
+typedef XrResult (XRAPI_PTR *PFN_xrEnumerateSpaceSupportedComponentsFB)(XrSpace space, uint32_t componentTypeCapacityInput, uint32_t* componentTypeCountOutput, XrSpaceComponentTypeFB* componentTypes);
+typedef XrResult (XRAPI_PTR *PFN_xrSetSpaceComponentStatusFB)(XrSpace space, const XrSpaceComponentStatusSetInfoFB* info, XrAsyncRequestIdFB* requestId);
+typedef XrResult (XRAPI_PTR *PFN_xrGetSpaceComponentStatusFB)(XrSpace space, XrSpaceComponentTypeFB componentType, XrSpaceComponentStatusFB* status);
+
+#ifndef XR_NO_PROTOTYPES
+#ifdef XR_EXTENSION_PROTOTYPES
+XRAPI_ATTR XrResult XRAPI_CALL xrCreateSpatialAnchorFB(
+ XrSession session,
+ const XrSpatialAnchorCreateInfoFB* info,
+ XrAsyncRequestIdFB* requestId);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrGetSpaceUuidFB(
+ XrSpace space,
+ XrUuidEXT* uuid);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateSpaceSupportedComponentsFB(
+ XrSpace space,
+ uint32_t componentTypeCapacityInput,
+ uint32_t* componentTypeCountOutput,
+ XrSpaceComponentTypeFB* componentTypes);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrSetSpaceComponentStatusFB(
+ XrSpace space,
+ const XrSpaceComponentStatusSetInfoFB* info,
+ XrAsyncRequestIdFB* requestId);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrGetSpaceComponentStatusFB(
+ XrSpace space,
+ XrSpaceComponentTypeFB componentType,
+ XrSpaceComponentStatusFB* status);
+#endif /* XR_EXTENSION_PROTOTYPES */
+#endif /* !XR_NO_PROTOTYPES */
+
+
#define XR_FB_foveation 1
XR_DEFINE_HANDLE(XrFoveationProfileFB)
#define XR_FB_foveation_SPEC_VERSION 1
@@ -3346,7 +3551,7 @@ XRAPI_ATTR XrResult XRAPI_CALL xrCreateKeyboardSpaceFB(
#define XR_FB_triangle_mesh 1
XR_DEFINE_HANDLE(XrTriangleMeshFB)
-#define XR_FB_triangle_mesh_SPEC_VERSION 1
+#define XR_FB_triangle_mesh_SPEC_VERSION 2
#define XR_FB_TRIANGLE_MESH_EXTENSION_NAME "XR_FB_triangle_mesh"
typedef enum XrWindingOrderFB {
@@ -3420,7 +3625,7 @@ XRAPI_ATTR XrResult XRAPI_CALL xrTriangleMeshEndVertexBufferUpdateFB(
XR_DEFINE_HANDLE(XrPassthroughFB)
XR_DEFINE_HANDLE(XrPassthroughLayerFB)
XR_DEFINE_HANDLE(XrGeometryInstanceFB)
-#define XR_FB_passthrough_SPEC_VERSION 1
+#define XR_FB_passthrough_SPEC_VERSION 2
#define XR_FB_PASSTHROUGH_EXTENSION_NAME "XR_FB_passthrough"
#define XR_PASSTHROUGH_COLOR_MAP_MONO_SIZE_FB 256
@@ -3428,6 +3633,7 @@ typedef enum XrPassthroughLayerPurposeFB {
XR_PASSTHROUGH_LAYER_PURPOSE_RECONSTRUCTION_FB = 0,
XR_PASSTHROUGH_LAYER_PURPOSE_PROJECTED_FB = 1,
XR_PASSTHROUGH_LAYER_PURPOSE_TRACKED_KEYBOARD_HANDS_FB = 1000203001,
+ XR_PASSTHROUGH_LAYER_PURPOSE_TRACKED_KEYBOARD_MASKED_HANDS_FB = 1000203002,
XR_PASSTHROUGH_LAYER_PURPOSE_MAX_ENUM_FB = 0x7FFFFFFF
} XrPassthroughLayerPurposeFB;
typedef XrFlags64 XrPassthroughFlagsFB;
@@ -3499,18 +3705,29 @@ typedef struct XrPassthroughStyleFB {
XrColor4f edgeColor;
} XrPassthroughStyleFB;
+// XrPassthroughColorMapMonoToRgbaFB extends XrPassthroughStyleFB
typedef struct XrPassthroughColorMapMonoToRgbaFB {
XrStructureType type;
const void* XR_MAY_ALIAS next;
XrColor4f textureColorMap[XR_PASSTHROUGH_COLOR_MAP_MONO_SIZE_FB];
} XrPassthroughColorMapMonoToRgbaFB;
+// XrPassthroughColorMapMonoToMonoFB extends XrPassthroughStyleFB
typedef struct XrPassthroughColorMapMonoToMonoFB {
XrStructureType type;
const void* XR_MAY_ALIAS next;
uint8_t textureColorMap[XR_PASSTHROUGH_COLOR_MAP_MONO_SIZE_FB];
} XrPassthroughColorMapMonoToMonoFB;
+// XrPassthroughBrightnessContrastSaturationFB extends XrPassthroughStyleFB
+typedef struct XrPassthroughBrightnessContrastSaturationFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ float brightness;
+ float contrast;
+ float saturation;
+} XrPassthroughBrightnessContrastSaturationFB;
+
typedef struct XrEventDataPassthroughStateChangedFB {
XrStructureType type;
const void* XR_MAY_ALIAS next;
@@ -3584,12 +3801,14 @@ XRAPI_ATTR XrResult XRAPI_CALL xrGeometryInstanceSetTransformFB(
#define XR_NULL_RENDER_MODEL_KEY_FB 0
XR_DEFINE_ATOM(XrRenderModelKeyFB)
-#define XR_FB_render_model_SPEC_VERSION 1
+#define XR_FB_render_model_SPEC_VERSION 2
#define XR_FB_RENDER_MODEL_EXTENSION_NAME "XR_FB_render_model"
#define XR_MAX_RENDER_MODEL_NAME_SIZE_FB 64
typedef XrFlags64 XrRenderModelFlagsFB;
// Flag bits for XrRenderModelFlagsFB
+static const XrRenderModelFlagsFB XR_RENDER_MODEL_SUPPORTS_GLTF_2_0_SUBSET_1_BIT_FB = 0x00000001;
+static const XrRenderModelFlagsFB XR_RENDER_MODEL_SUPPORTS_GLTF_2_0_SUBSET_2_BIT_FB = 0x00000002;
typedef struct XrRenderModelPathInfoFB {
XrStructureType type;
@@ -3628,6 +3847,13 @@ typedef struct XrSystemRenderModelPropertiesFB {
XrBool32 supportsRenderModelLoading;
} XrSystemRenderModelPropertiesFB;
+// XrRenderModelCapabilitiesRequestFB extends XrSystemProperties
+typedef struct XrRenderModelCapabilitiesRequestFB {
+ XrStructureType type;
+ void* XR_MAY_ALIAS next;
+ XrRenderModelFlagsFB flags;
+} XrRenderModelCapabilitiesRequestFB;
+
typedef XrResult (XRAPI_PTR *PFN_xrEnumerateRenderModelPathsFB)(XrSession session, uint32_t pathCapacityInput, uint32_t* pathCountOutput, XrRenderModelPathInfoFB* paths);
typedef XrResult (XRAPI_PTR *PFN_xrGetRenderModelPropertiesFB)(XrSession session, XrPath path, XrRenderModelPropertiesFB* properties);
typedef XrResult (XRAPI_PTR *PFN_xrLoadRenderModelFB)(XrSession session, const XrRenderModelLoadInfoFB* info, XrRenderModelBufferFB* buffer);
@@ -3767,6 +3993,20 @@ XRAPI_ATTR XrResult XRAPI_CALL xrCreateMarkerSpaceVARJO(
#endif /* !XR_NO_PROTOTYPES */
+#define XR_VARJO_view_offset 1
+#define XR_VARJO_view_offset_SPEC_VERSION 1
+#define XR_VARJO_VIEW_OFFSET_EXTENSION_NAME "XR_VARJO_view_offset"
+typedef XrResult (XRAPI_PTR *PFN_xrSetViewOffsetVARJO)(XrSession session, float offset);
+
+#ifndef XR_NO_PROTOTYPES
+#ifdef XR_EXTENSION_PROTOTYPES
+XRAPI_ATTR XrResult XRAPI_CALL xrSetViewOffsetVARJO(
+ XrSession session,
+ float offset);
+#endif /* XR_EXTENSION_PROTOTYPES */
+#endif /* !XR_NO_PROTOTYPES */
+
+
#define XR_MSFT_spatial_anchor_persistence 1
XR_DEFINE_HANDLE(XrSpatialAnchorStoreConnectionMSFT)
#define XR_MAX_SPATIAL_ANCHOR_NAME_SIZE_MSFT 256
@@ -3832,12 +4072,212 @@ XRAPI_ATTR XrResult XRAPI_CALL xrClearSpatialAnchorStoreMSFT(
#endif /* !XR_NO_PROTOTYPES */
+#define XR_ULTRALEAP_hand_tracking_forearm 1
+
+#define XR_HAND_FOREARM_JOINT_COUNT_ULTRALEAP 27
+
+#define XR_ULTRALEAP_hand_tracking_forearm_SPEC_VERSION 1
+#define XR_ULTRALEAP_HAND_TRACKING_FOREARM_EXTENSION_NAME "XR_ULTRALEAP_hand_tracking_forearm"
+
+typedef enum XrHandForearmJointULTRALEAP {
+ XR_HAND_FOREARM_JOINT_PALM_ULTRALEAP = 0,
+ XR_HAND_FOREARM_JOINT_WRIST_ULTRALEAP = 1,
+ XR_HAND_FOREARM_JOINT_THUMB_METACARPAL_ULTRALEAP = 2,
+ XR_HAND_FOREARM_JOINT_THUMB_PROXIMAL_ULTRALEAP = 3,
+ XR_HAND_FOREARM_JOINT_THUMB_DISTAL_ULTRALEAP = 4,
+ XR_HAND_FOREARM_JOINT_THUMB_TIP_ULTRALEAP = 5,
+ XR_HAND_FOREARM_JOINT_INDEX_METACARPAL_ULTRALEAP = 6,
+ XR_HAND_FOREARM_JOINT_INDEX_PROXIMAL_ULTRALEAP = 7,
+ XR_HAND_FOREARM_JOINT_INDEX_INTERMEDIATE_ULTRALEAP = 8,
+ XR_HAND_FOREARM_JOINT_INDEX_DISTAL_ULTRALEAP = 9,
+ XR_HAND_FOREARM_JOINT_INDEX_TIP_ULTRALEAP = 10,
+ XR_HAND_FOREARM_JOINT_MIDDLE_METACARPAL_ULTRALEAP = 11,
+ XR_HAND_FOREARM_JOINT_MIDDLE_PROXIMAL_ULTRALEAP = 12,
+ XR_HAND_FOREARM_JOINT_MIDDLE_INTERMEDIATE_ULTRALEAP = 13,
+ XR_HAND_FOREARM_JOINT_MIDDLE_DISTAL_ULTRALEAP = 14,
+ XR_HAND_FOREARM_JOINT_MIDDLE_TIP_ULTRALEAP = 15,
+ XR_HAND_FOREARM_JOINT_RING_METACARPAL_ULTRALEAP = 16,
+ XR_HAND_FOREARM_JOINT_RING_PROXIMAL_ULTRALEAP = 17,
+ XR_HAND_FOREARM_JOINT_RING_INTERMEDIATE_ULTRALEAP = 18,
+ XR_HAND_FOREARM_JOINT_RING_DISTAL_ULTRALEAP = 19,
+ XR_HAND_FOREARM_JOINT_RING_TIP_ULTRALEAP = 20,
+ XR_HAND_FOREARM_JOINT_LITTLE_METACARPAL_ULTRALEAP = 21,
+ XR_HAND_FOREARM_JOINT_LITTLE_PROXIMAL_ULTRALEAP = 22,
+ XR_HAND_FOREARM_JOINT_LITTLE_INTERMEDIATE_ULTRALEAP = 23,
+ XR_HAND_FOREARM_JOINT_LITTLE_DISTAL_ULTRALEAP = 24,
+ XR_HAND_FOREARM_JOINT_LITTLE_TIP_ULTRALEAP = 25,
+ XR_HAND_FOREARM_JOINT_ELBOW_ULTRALEAP = 26,
+ XR_HAND_FOREARM_JOINT_MAX_ENUM_ULTRALEAP = 0x7FFFFFFF
+} XrHandForearmJointULTRALEAP;
+
+
+#define XR_FB_spatial_entity_query 1
+#define XR_FB_spatial_entity_query_SPEC_VERSION 1
+#define XR_FB_SPATIAL_ENTITY_QUERY_EXTENSION_NAME "XR_FB_spatial_entity_query"
+
+typedef enum XrSpaceQueryActionFB {
+ XR_SPACE_QUERY_ACTION_LOAD_FB = 0,
+ XR_SPACE_QUERY_ACTION_MAX_ENUM_FB = 0x7FFFFFFF
+} XrSpaceQueryActionFB;
+
+typedef enum XrSpaceStorageLocationFB {
+ XR_SPACE_STORAGE_LOCATION_INVALID_FB = 0,
+ XR_SPACE_STORAGE_LOCATION_LOCAL_FB = 1,
+ XR_SPACE_STORAGE_LOCATION_MAX_ENUM_FB = 0x7FFFFFFF
+} XrSpaceStorageLocationFB;
+typedef struct XR_MAY_ALIAS XrSpaceQueryInfoBaseHeaderFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+} XrSpaceQueryInfoBaseHeaderFB;
+
+typedef struct XR_MAY_ALIAS XrSpaceFilterInfoBaseHeaderFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+} XrSpaceFilterInfoBaseHeaderFB;
+
+typedef struct XrSpaceQueryInfoFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrSpaceQueryActionFB queryAction;
+ uint32_t maxResultCount;
+ XrDuration timeout;
+ const XrSpaceFilterInfoBaseHeaderFB* filter;
+ const XrSpaceFilterInfoBaseHeaderFB* excludeFilter;
+} XrSpaceQueryInfoFB;
+
+// XrSpaceStorageLocationFilterInfoFB extends XrSpaceFilterInfoBaseHeaderFB
+typedef struct XrSpaceStorageLocationFilterInfoFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrSpaceStorageLocationFB location;
+} XrSpaceStorageLocationFilterInfoFB;
+
+typedef struct XrSpaceUuidFilterInfoFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ uint32_t uuidCount;
+ XrUuidEXT* uuids;
+} XrSpaceUuidFilterInfoFB;
+
+typedef struct XrSpaceComponentFilterInfoFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrSpaceComponentTypeFB componentType;
+} XrSpaceComponentFilterInfoFB;
+
+typedef struct XrSpaceQueryResultFB {
+ XrSpace space;
+ XrUuidEXT uuid;
+} XrSpaceQueryResultFB;
+
+typedef struct XrSpaceQueryResultsFB {
+ XrStructureType type;
+ void* XR_MAY_ALIAS next;
+ uint32_t resultCapacityInput;
+ uint32_t resultCountOutput;
+ XrSpaceQueryResultFB* results;
+} XrSpaceQueryResultsFB;
+
+typedef struct XrEventDataSpaceQueryResultsAvailableFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrAsyncRequestIdFB requestId;
+} XrEventDataSpaceQueryResultsAvailableFB;
+
+typedef struct XrEventDataSpaceQueryCompleteFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrAsyncRequestIdFB requestId;
+ XrResult result;
+} XrEventDataSpaceQueryCompleteFB;
+
+typedef XrResult (XRAPI_PTR *PFN_xrQuerySpacesFB)(XrSession session, const XrSpaceQueryInfoBaseHeaderFB* info, XrAsyncRequestIdFB* requestId);
+typedef XrResult (XRAPI_PTR *PFN_xrRetrieveSpaceQueryResultsFB)(XrSession session, XrAsyncRequestIdFB requestId, XrSpaceQueryResultsFB* results);
+
+#ifndef XR_NO_PROTOTYPES
+#ifdef XR_EXTENSION_PROTOTYPES
+XRAPI_ATTR XrResult XRAPI_CALL xrQuerySpacesFB(
+ XrSession session,
+ const XrSpaceQueryInfoBaseHeaderFB* info,
+ XrAsyncRequestIdFB* requestId);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrRetrieveSpaceQueryResultsFB(
+ XrSession session,
+ XrAsyncRequestIdFB requestId,
+ XrSpaceQueryResultsFB* results);
+#endif /* XR_EXTENSION_PROTOTYPES */
+#endif /* !XR_NO_PROTOTYPES */
+
+
+#define XR_FB_spatial_entity_storage 1
+#define XR_FB_spatial_entity_storage_SPEC_VERSION 1
+#define XR_FB_SPATIAL_ENTITY_STORAGE_EXTENSION_NAME "XR_FB_spatial_entity_storage"
+
+typedef enum XrSpacePersistenceModeFB {
+ XR_SPACE_PERSISTENCE_MODE_INVALID_FB = 0,
+ XR_SPACE_PERSISTENCE_MODE_INDEFINITE_FB = 1,
+ XR_SPACE_PERSISTENCE_MODE_MAX_ENUM_FB = 0x7FFFFFFF
+} XrSpacePersistenceModeFB;
+typedef struct XrSpaceSaveInfoFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrSpace space;
+ XrSpaceStorageLocationFB location;
+ XrSpacePersistenceModeFB persistenceMode;
+} XrSpaceSaveInfoFB;
+
+typedef struct XrSpaceEraseInfoFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrSpace space;
+ XrSpaceStorageLocationFB location;
+} XrSpaceEraseInfoFB;
+
+typedef struct XrEventDataSpaceSaveCompleteFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrAsyncRequestIdFB requestId;
+ XrResult result;
+ XrSpace space;
+ XrUuidEXT uuid;
+ XrSpaceStorageLocationFB location;
+} XrEventDataSpaceSaveCompleteFB;
+
+typedef struct XrEventDataSpaceEraseCompleteFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrAsyncRequestIdFB requestId;
+ XrResult result;
+ XrSpace space;
+ XrUuidEXT uuid;
+ XrSpaceStorageLocationFB location;
+} XrEventDataSpaceEraseCompleteFB;
+
+typedef XrResult (XRAPI_PTR *PFN_xrSaveSpaceFB)(XrSession session, const XrSpaceSaveInfoFB* info, XrAsyncRequestIdFB* requestId);
+typedef XrResult (XRAPI_PTR *PFN_xrEraseSpaceFB)(XrSession session, const XrSpaceEraseInfoFB* info, XrAsyncRequestIdFB* requestId);
+
+#ifndef XR_NO_PROTOTYPES
+#ifdef XR_EXTENSION_PROTOTYPES
+XRAPI_ATTR XrResult XRAPI_CALL xrSaveSpaceFB(
+ XrSession session,
+ const XrSpaceSaveInfoFB* info,
+ XrAsyncRequestIdFB* requestId);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrEraseSpaceFB(
+ XrSession session,
+ const XrSpaceEraseInfoFB* info,
+ XrAsyncRequestIdFB* requestId);
+#endif /* XR_EXTENSION_PROTOTYPES */
+#endif /* !XR_NO_PROTOTYPES */
+
+
#define XR_FB_space_warp 1
-#define XR_FB_space_warp_SPEC_VERSION 1
+#define XR_FB_space_warp_SPEC_VERSION 2
#define XR_FB_SPACE_WARP_EXTENSION_NAME "XR_FB_space_warp"
typedef XrFlags64 XrCompositionLayerSpaceWarpInfoFlagsFB;
// Flag bits for XrCompositionLayerSpaceWarpInfoFlagsFB
+static const XrCompositionLayerSpaceWarpInfoFlagsFB XR_COMPOSITION_LAYER_SPACE_WARP_INFO_FRAME_SKIP_BIT_FB = 0x00000001;
// XrCompositionLayerSpaceWarpInfoFB extends XrCompositionLayerProjectionView
typedef struct XrCompositionLayerSpaceWarpInfoFB {
@@ -3888,8 +4328,31 @@ XRAPI_ATTR XrResult XRAPI_CALL xrSetDigitalLensControlALMALENCE(
#endif /* !XR_NO_PROTOTYPES */
+#define XR_FB_spatial_entity_container 1
+#define XR_FB_spatial_entity_container_SPEC_VERSION 1
+#define XR_FB_SPATIAL_ENTITY_CONTAINER_EXTENSION_NAME "XR_FB_spatial_entity_container"
+typedef struct XrSpaceContainerFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ uint32_t uuidCapacityInput;
+ uint32_t* uuidCountOutput;
+ XrUuidEXT* uuids;
+} XrSpaceContainerFB;
+
+typedef XrResult (XRAPI_PTR *PFN_xrGetSpaceContainerFB)(XrSession session, XrSpace space, XrSpaceContainerFB* spaceContainerOutput);
+
+#ifndef XR_NO_PROTOTYPES
+#ifdef XR_EXTENSION_PROTOTYPES
+XRAPI_ATTR XrResult XRAPI_CALL xrGetSpaceContainerFB(
+ XrSession session,
+ XrSpace space,
+ XrSpaceContainerFB* spaceContainerOutput);
+#endif /* XR_EXTENSION_PROTOTYPES */
+#endif /* !XR_NO_PROTOTYPES */
+
+
#define XR_FB_passthrough_keyboard_hands 1
-#define XR_FB_passthrough_keyboard_hands_SPEC_VERSION 1
+#define XR_FB_passthrough_keyboard_hands_SPEC_VERSION 2
#define XR_FB_PASSTHROUGH_KEYBOARD_HANDS_EXTENSION_NAME "XR_FB_passthrough_keyboard_hands"
typedef struct XrPassthroughKeyboardHandsIntensityFB {
XrStructureType type;
@@ -3909,14 +4372,92 @@ XRAPI_ATTR XrResult XRAPI_CALL xrPassthroughLayerSetKeyboardHandsIntensityFB(
#endif /* !XR_NO_PROTOTYPES */
+#define XR_FB_composition_layer_settings 1
+#define XR_FB_composition_layer_settings_SPEC_VERSION 1
+#define XR_FB_COMPOSITION_LAYER_SETTINGS_EXTENSION_NAME "XR_FB_composition_layer_settings"
+typedef XrFlags64 XrCompositionLayerSettingsFlagsFB;
+
+// Flag bits for XrCompositionLayerSettingsFlagsFB
+static const XrCompositionLayerSettingsFlagsFB XR_COMPOSITION_LAYER_SETTINGS_NORMAL_SUPER_SAMPLING_BIT_FB = 0x00000001;
+static const XrCompositionLayerSettingsFlagsFB XR_COMPOSITION_LAYER_SETTINGS_QUALITY_SUPER_SAMPLING_BIT_FB = 0x00000002;
+static const XrCompositionLayerSettingsFlagsFB XR_COMPOSITION_LAYER_SETTINGS_NORMAL_SHARPENING_BIT_FB = 0x00000004;
+static const XrCompositionLayerSettingsFlagsFB XR_COMPOSITION_LAYER_SETTINGS_QUALITY_SHARPENING_BIT_FB = 0x00000008;
+
+// XrCompositionLayerSettingsFB extends XrCompositionLayerBaseHeader
+typedef struct XrCompositionLayerSettingsFB {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrCompositionLayerSettingsFlagsFB layerFlags;
+} XrCompositionLayerSettingsFB;
+
+
+
+#define XR_META_performance_metrics 1
+#define XR_META_performance_metrics_SPEC_VERSION 1
+#define XR_META_PERFORMANCE_METRICS_EXTENSION_NAME "XR_META_performance_metrics"
+
+typedef enum XrPerformanceMetricsCounterUnitMETA {
+ XR_PERFORMANCE_METRICS_COUNTER_UNIT_GENERIC_META = 0,
+ XR_PERFORMANCE_METRICS_COUNTER_UNIT_PERCENTAGE_META = 1,
+ XR_PERFORMANCE_METRICS_COUNTER_UNIT_MILLISECONDS_META = 2,
+ XR_PERFORMANCE_METRICS_COUNTER_UNIT_BYTES_META = 3,
+ XR_PERFORMANCE_METRICS_COUNTER_UNIT_HERTZ_META = 4,
+ XR_PERFORMANCE_METRICS_COUNTER_UNIT_MAX_ENUM_META = 0x7FFFFFFF
+} XrPerformanceMetricsCounterUnitMETA;
+typedef XrFlags64 XrPerformanceMetricsCounterFlagsMETA;
+
+// Flag bits for XrPerformanceMetricsCounterFlagsMETA
+static const XrPerformanceMetricsCounterFlagsMETA XR_PERFORMANCE_METRICS_COUNTER_ANY_VALUE_VALID_BIT_META = 0x00000001;
+static const XrPerformanceMetricsCounterFlagsMETA XR_PERFORMANCE_METRICS_COUNTER_UINT_VALUE_VALID_BIT_META = 0x00000002;
+static const XrPerformanceMetricsCounterFlagsMETA XR_PERFORMANCE_METRICS_COUNTER_FLOAT_VALUE_VALID_BIT_META = 0x00000004;
+
+typedef struct XrPerformanceMetricsStateMETA {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrBool32 enabled;
+} XrPerformanceMetricsStateMETA;
+
+typedef struct XrPerformanceMetricsCounterMETA {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ XrPerformanceMetricsCounterFlagsMETA counterFlags;
+ XrPerformanceMetricsCounterUnitMETA counterUnit;
+ uint32_t uintValue;
+ float floatValue;
+} XrPerformanceMetricsCounterMETA;
+
+typedef XrResult (XRAPI_PTR *PFN_xrEnumeratePerformanceMetricsCounterPathsMETA)(XrInstance instance, uint32_t counterPathCapacityInput, uint32_t* counterPathCountOutput, XrPath* counterPaths);
+typedef XrResult (XRAPI_PTR *PFN_xrSetPerformanceMetricsStateMETA)(XrSession session, const XrPerformanceMetricsStateMETA* state);
+typedef XrResult (XRAPI_PTR *PFN_xrGetPerformanceMetricsStateMETA)(XrSession session, XrPerformanceMetricsStateMETA* state);
+typedef XrResult (XRAPI_PTR *PFN_xrQueryPerformanceMetricsCounterMETA)(XrSession session, XrPath counterPath, XrPerformanceMetricsCounterMETA* counter);
+
+#ifndef XR_NO_PROTOTYPES
+#ifdef XR_EXTENSION_PROTOTYPES
+XRAPI_ATTR XrResult XRAPI_CALL xrEnumeratePerformanceMetricsCounterPathsMETA(
+ XrInstance instance,
+ uint32_t counterPathCapacityInput,
+ uint32_t* counterPathCountOutput,
+ XrPath* counterPaths);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrSetPerformanceMetricsStateMETA(
+ XrSession session,
+ const XrPerformanceMetricsStateMETA* state);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrGetPerformanceMetricsStateMETA(
+ XrSession session,
+ XrPerformanceMetricsStateMETA* state);
+
+XRAPI_ATTR XrResult XRAPI_CALL xrQueryPerformanceMetricsCounterMETA(
+ XrSession session,
+ XrPath counterPath,
+ XrPerformanceMetricsCounterMETA* counter);
+#endif /* XR_EXTENSION_PROTOTYPES */
+#endif /* !XR_NO_PROTOTYPES */
+
+
#define XR_EXT_uuid 1
#define XR_EXT_uuid_SPEC_VERSION 1
#define XR_EXT_UUID_EXTENSION_NAME "XR_EXT_uuid"
-#define XR_UUID_SIZE_EXT 16
-typedef struct XrUuidEXT {
- uint8_t data[XR_UUID_SIZE_EXT];
-} XrUuidEXT;
-
#ifdef __cplusplus
}
diff --git a/thirdparty/openxr/include/openxr/openxr_platform.h b/thirdparty/openxr/include/openxr/openxr_platform.h
index eb5e5f8c4b..f0fbf6955a 100644
--- a/thirdparty/openxr/include/openxr/openxr_platform.h
+++ b/thirdparty/openxr/include/openxr/openxr_platform.h
@@ -275,7 +275,7 @@ XRAPI_ATTR XrResult XRAPI_CALL xrGetVulkanGraphicsRequirementsKHR(
#ifdef XR_USE_GRAPHICS_API_D3D11
#define XR_KHR_D3D11_enable 1
-#define XR_KHR_D3D11_enable_SPEC_VERSION 8
+#define XR_KHR_D3D11_enable_SPEC_VERSION 9
#define XR_KHR_D3D11_ENABLE_EXTENSION_NAME "XR_KHR_D3D11_enable"
// XrGraphicsBindingD3D11KHR extends XrSessionCreateInfo
typedef struct XrGraphicsBindingD3D11KHR {
@@ -312,7 +312,7 @@ XRAPI_ATTR XrResult XRAPI_CALL xrGetD3D11GraphicsRequirementsKHR(
#ifdef XR_USE_GRAPHICS_API_D3D12
#define XR_KHR_D3D12_enable 1
-#define XR_KHR_D3D12_enable_SPEC_VERSION 8
+#define XR_KHR_D3D12_enable_SPEC_VERSION 9
#define XR_KHR_D3D12_ENABLE_EXTENSION_NAME "XR_KHR_D3D12_enable"
// XrGraphicsBindingD3D12KHR extends XrSessionCreateInfo
typedef struct XrGraphicsBindingD3D12KHR {
@@ -668,6 +668,21 @@ typedef struct XrSwapchainStateSamplerVulkanFB {
#endif /* XR_USE_GRAPHICS_API_VULKAN */
+#ifdef XR_USE_GRAPHICS_API_VULKAN
+
+#define XR_META_vulkan_swapchain_create_info 1
+#define XR_META_vulkan_swapchain_create_info_SPEC_VERSION 1
+#define XR_META_VULKAN_SWAPCHAIN_CREATE_INFO_EXTENSION_NAME "XR_META_vulkan_swapchain_create_info"
+// XrVulkanSwapchainCreateInfoMETA extends XrSwapchainCreateInfo
+typedef struct XrVulkanSwapchainCreateInfoMETA {
+ XrStructureType type;
+ const void* XR_MAY_ALIAS next;
+ VkImageCreateFlags additionalCreateFlags;
+ VkImageUsageFlags additionalUsageFlags;
+} XrVulkanSwapchainCreateInfoMETA;
+
+#endif /* XR_USE_GRAPHICS_API_VULKAN */
+
#ifdef __cplusplus
}
#endif
diff --git a/thirdparty/openxr/include/openxr/openxr_reflection.h b/thirdparty/openxr/include/openxr/openxr_reflection.h
index 2bc14be600..163b54e4e4 100644
--- a/thirdparty/openxr/include/openxr/openxr_reflection.h
+++ b/thirdparty/openxr/include/openxr/openxr_reflection.h
@@ -100,6 +100,10 @@ XR_ENUM_STR(XrResult);
_(XR_ERROR_SCENE_COMPUTE_CONSISTENCY_MISMATCH_MSFT, -1000097005) \
_(XR_ERROR_DISPLAY_REFRESH_RATE_UNSUPPORTED_FB, -1000101000) \
_(XR_ERROR_COLOR_SPACE_UNSUPPORTED_FB, -1000108000) \
+ _(XR_ERROR_SPACE_COMPONENT_NOT_SUPPORTED_FB, -1000113000) \
+ _(XR_ERROR_SPACE_COMPONENT_NOT_ENABLED_FB, -1000113001) \
+ _(XR_ERROR_SPACE_COMPONENT_STATUS_PENDING_FB, -1000113002) \
+ _(XR_ERROR_SPACE_COMPONENT_STATUS_ALREADY_SET_FB, -1000113003) \
_(XR_ERROR_UNEXPECTED_STATE_PASSTHROUGH_FB, -1000118000) \
_(XR_ERROR_FEATURE_ALREADY_CREATED_PASSTHROUGH_FB, -1000118001) \
_(XR_ERROR_FEATURE_REQUIRED_PASSTHROUGH_FB, -1000118002) \
@@ -208,6 +212,9 @@ XR_ENUM_STR(XrResult);
_(XR_TYPE_VIEW_CONFIGURATION_DEPTH_RANGE_EXT, 1000046000) \
_(XR_TYPE_GRAPHICS_BINDING_EGL_MNDX, 1000048004) \
_(XR_TYPE_SPATIAL_GRAPH_NODE_SPACE_CREATE_INFO_MSFT, 1000049000) \
+ _(XR_TYPE_SPATIAL_GRAPH_STATIC_NODE_BINDING_CREATE_INFO_MSFT, 1000049001) \
+ _(XR_TYPE_SPATIAL_GRAPH_NODE_BINDING_PROPERTIES_GET_INFO_MSFT, 1000049002) \
+ _(XR_TYPE_SPATIAL_GRAPH_NODE_BINDING_PROPERTIES_MSFT, 1000049003) \
_(XR_TYPE_SYSTEM_HAND_TRACKING_PROPERTIES_EXT, 1000051000) \
_(XR_TYPE_HAND_TRACKER_CREATE_INFO_EXT, 1000051001) \
_(XR_TYPE_HAND_JOINTS_LOCATE_INFO_EXT, 1000051002) \
@@ -235,6 +242,7 @@ XR_ENUM_STR(XrResult);
_(XR_TYPE_COMPOSITION_LAYER_REPROJECTION_PLANE_OVERRIDE_MSFT, 1000066001) \
_(XR_TYPE_ANDROID_SURFACE_SWAPCHAIN_CREATE_INFO_FB, 1000070000) \
_(XR_TYPE_COMPOSITION_LAYER_SECURE_CONTENT_FB, 1000072000) \
+ _(XR_TYPE_INTERACTION_PROFILE_DPAD_BINDING_EXT, 1000078000) \
_(XR_TYPE_INTERACTION_PROFILE_ANALOG_THRESHOLD_VALVE, 1000079000) \
_(XR_TYPE_HAND_JOINTS_MOTION_RANGE_INFO_EXT, 1000080000) \
_(XR_TYPE_LOADER_INIT_INFO_ANDROID_KHR, 1000089000) \
@@ -274,6 +282,12 @@ XR_ENUM_STR(XrResult);
_(XR_TYPE_HAND_TRACKING_SCALE_FB, 1000110003) \
_(XR_TYPE_HAND_TRACKING_AIM_STATE_FB, 1000111001) \
_(XR_TYPE_HAND_TRACKING_CAPSULES_STATE_FB, 1000112000) \
+ _(XR_TYPE_SYSTEM_SPATIAL_ENTITY_PROPERTIES_FB, 1000113004) \
+ _(XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_FB, 1000113003) \
+ _(XR_TYPE_SPACE_COMPONENT_STATUS_SET_INFO_FB, 1000113007) \
+ _(XR_TYPE_SPACE_COMPONENT_STATUS_FB, 1000113001) \
+ _(XR_TYPE_EVENT_DATA_SPATIAL_ANCHOR_CREATE_COMPLETE_FB, 1000113005) \
+ _(XR_TYPE_EVENT_DATA_SPACE_SET_STATUS_COMPLETE_FB, 1000113006) \
_(XR_TYPE_FOVEATION_PROFILE_CREATE_INFO_FB, 1000114000) \
_(XR_TYPE_SWAPCHAIN_CREATE_INFO_FOVEATION_FB, 1000114001) \
_(XR_TYPE_SWAPCHAIN_STATE_FOVEATION_FB, 1000114002) \
@@ -291,12 +305,14 @@ XR_ENUM_STR(XrResult);
_(XR_TYPE_PASSTHROUGH_STYLE_FB, 1000118020) \
_(XR_TYPE_PASSTHROUGH_COLOR_MAP_MONO_TO_RGBA_FB, 1000118021) \
_(XR_TYPE_PASSTHROUGH_COLOR_MAP_MONO_TO_MONO_FB, 1000118022) \
+ _(XR_TYPE_PASSTHROUGH_BRIGHTNESS_CONTRAST_SATURATION_FB, 1000118023) \
_(XR_TYPE_EVENT_DATA_PASSTHROUGH_STATE_CHANGED_FB, 1000118030) \
_(XR_TYPE_RENDER_MODEL_PATH_INFO_FB, 1000119000) \
_(XR_TYPE_RENDER_MODEL_PROPERTIES_FB, 1000119001) \
_(XR_TYPE_RENDER_MODEL_BUFFER_FB, 1000119002) \
_(XR_TYPE_RENDER_MODEL_LOAD_INFO_FB, 1000119003) \
_(XR_TYPE_SYSTEM_RENDER_MODEL_PROPERTIES_FB, 1000119004) \
+ _(XR_TYPE_RENDER_MODEL_CAPABILITIES_REQUEST_FB, 1000119005) \
_(XR_TYPE_BINDING_MODIFICATIONS_KHR, 1000120000) \
_(XR_TYPE_VIEW_LOCATE_FOVEATED_RENDERING_VARJO, 1000121000) \
_(XR_TYPE_FOVEATED_VIEW_CONFIGURATION_VIEW_VARJO, 1000121001) \
@@ -307,6 +323,17 @@ XR_ENUM_STR(XrResult);
_(XR_TYPE_MARKER_SPACE_CREATE_INFO_VARJO, 1000124002) \
_(XR_TYPE_SPATIAL_ANCHOR_PERSISTENCE_INFO_MSFT, 1000142000) \
_(XR_TYPE_SPATIAL_ANCHOR_FROM_PERSISTED_ANCHOR_CREATE_INFO_MSFT, 1000142001) \
+ _(XR_TYPE_SPACE_QUERY_INFO_FB, 1000156001) \
+ _(XR_TYPE_SPACE_QUERY_RESULTS_FB, 1000156002) \
+ _(XR_TYPE_SPACE_STORAGE_LOCATION_FILTER_INFO_FB, 1000156003) \
+ _(XR_TYPE_SPACE_UUID_FILTER_INFO_FB, 1000156054) \
+ _(XR_TYPE_SPACE_COMPONENT_FILTER_INFO_FB, 1000156052) \
+ _(XR_TYPE_EVENT_DATA_SPACE_QUERY_RESULTS_AVAILABLE_FB, 1000156103) \
+ _(XR_TYPE_EVENT_DATA_SPACE_QUERY_COMPLETE_FB, 1000156104) \
+ _(XR_TYPE_SPACE_SAVE_INFO_FB, 1000158000) \
+ _(XR_TYPE_SPACE_ERASE_INFO_FB, 1000158001) \
+ _(XR_TYPE_EVENT_DATA_SPACE_SAVE_COMPLETE_FB, 1000158106) \
+ _(XR_TYPE_EVENT_DATA_SPACE_ERASE_COMPLETE_FB, 1000158107) \
_(XR_TYPE_SWAPCHAIN_IMAGE_FOVEATION_VULKAN_FB, 1000160000) \
_(XR_TYPE_SWAPCHAIN_STATE_ANDROID_SURFACE_DIMENSIONS_FB, 1000161000) \
_(XR_TYPE_SWAPCHAIN_STATE_SAMPLER_OPENGL_ES_FB, 1000162000) \
@@ -314,7 +341,12 @@ XR_ENUM_STR(XrResult);
_(XR_TYPE_COMPOSITION_LAYER_SPACE_WARP_INFO_FB, 1000171000) \
_(XR_TYPE_SYSTEM_SPACE_WARP_PROPERTIES_FB, 1000171001) \
_(XR_TYPE_DIGITAL_LENS_CONTROL_ALMALENCE, 1000196000) \
+ _(XR_TYPE_SPACE_CONTAINER_FB, 1000199000) \
_(XR_TYPE_PASSTHROUGH_KEYBOARD_HANDS_INTENSITY_FB, 1000203002) \
+ _(XR_TYPE_COMPOSITION_LAYER_SETTINGS_FB, 1000204000) \
+ _(XR_TYPE_VULKAN_SWAPCHAIN_CREATE_INFO_META, 1000227000) \
+ _(XR_TYPE_PERFORMANCE_METRICS_STATE_META, 1000232001) \
+ _(XR_TYPE_PERFORMANCE_METRICS_COUNTER_META, 1000232002) \
_(XR_STRUCTURE_TYPE_MAX_ENUM, 0x7FFFFFFF)
#define XR_LIST_ENUM_XrFormFactor(_) \
@@ -379,6 +411,7 @@ XR_ENUM_STR(XrResult);
_(XR_OBJECT_TYPE_ACTION, 6) \
_(XR_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT, 1000019000) \
_(XR_OBJECT_TYPE_SPATIAL_ANCHOR_MSFT, 1000039000) \
+ _(XR_OBJECT_TYPE_SPATIAL_GRAPH_NODE_BINDING_MSFT, 1000049000) \
_(XR_OBJECT_TYPE_HAND_TRACKER_EXT, 1000051000) \
_(XR_OBJECT_TYPE_SCENE_OBSERVER_MSFT, 1000097000) \
_(XR_OBJECT_TYPE_SCENE_MSFT, 1000097001) \
@@ -478,6 +511,7 @@ XR_ENUM_STR(XrResult);
#define XR_LIST_ENUM_XrHandJointSetEXT(_) \
_(XR_HAND_JOINT_SET_DEFAULT_EXT, 0) \
+ _(XR_HAND_JOINT_SET_HAND_WITH_FOREARM_ULTRALEAP, 1000149000) \
_(XR_HAND_JOINT_SET_MAX_ENUM_EXT, 0x7FFFFFFF)
#define XR_LIST_ENUM_XrHandPoseTypeMSFT(_) \
@@ -623,6 +657,12 @@ XR_ENUM_STR(XrResult);
_(XR_COLOR_SPACE_ADOBE_RGB_FB, 7) \
_(XR_COLOR_SPACE_MAX_ENUM_FB, 0x7FFFFFFF)
+#define XR_LIST_ENUM_XrSpaceComponentTypeFB(_) \
+ _(XR_SPACE_COMPONENT_TYPE_LOCATABLE_FB, 0) \
+ _(XR_SPACE_COMPONENT_TYPE_STORABLE_FB, 1) \
+ _(XR_SPACE_COMPONENT_TYPE_SPACE_CONTAINER_FB, 7) \
+ _(XR_SPACE_COMPONENT_TYPE_MAX_ENUM_FB, 0x7FFFFFFF)
+
#define XR_LIST_ENUM_XrFoveationLevelFB(_) \
_(XR_FOVEATION_LEVEL_NONE_FB, 0) \
_(XR_FOVEATION_LEVEL_LOW_FB, 1) \
@@ -645,8 +685,61 @@ XR_ENUM_STR(XrResult);
_(XR_PASSTHROUGH_LAYER_PURPOSE_RECONSTRUCTION_FB, 0) \
_(XR_PASSTHROUGH_LAYER_PURPOSE_PROJECTED_FB, 1) \
_(XR_PASSTHROUGH_LAYER_PURPOSE_TRACKED_KEYBOARD_HANDS_FB, 1000203001) \
+ _(XR_PASSTHROUGH_LAYER_PURPOSE_TRACKED_KEYBOARD_MASKED_HANDS_FB, 1000203002) \
_(XR_PASSTHROUGH_LAYER_PURPOSE_MAX_ENUM_FB, 0x7FFFFFFF)
+#define XR_LIST_ENUM_XrHandForearmJointULTRALEAP(_) \
+ _(XR_HAND_FOREARM_JOINT_PALM_ULTRALEAP, 0) \
+ _(XR_HAND_FOREARM_JOINT_WRIST_ULTRALEAP, 1) \
+ _(XR_HAND_FOREARM_JOINT_THUMB_METACARPAL_ULTRALEAP, 2) \
+ _(XR_HAND_FOREARM_JOINT_THUMB_PROXIMAL_ULTRALEAP, 3) \
+ _(XR_HAND_FOREARM_JOINT_THUMB_DISTAL_ULTRALEAP, 4) \
+ _(XR_HAND_FOREARM_JOINT_THUMB_TIP_ULTRALEAP, 5) \
+ _(XR_HAND_FOREARM_JOINT_INDEX_METACARPAL_ULTRALEAP, 6) \
+ _(XR_HAND_FOREARM_JOINT_INDEX_PROXIMAL_ULTRALEAP, 7) \
+ _(XR_HAND_FOREARM_JOINT_INDEX_INTERMEDIATE_ULTRALEAP, 8) \
+ _(XR_HAND_FOREARM_JOINT_INDEX_DISTAL_ULTRALEAP, 9) \
+ _(XR_HAND_FOREARM_JOINT_INDEX_TIP_ULTRALEAP, 10) \
+ _(XR_HAND_FOREARM_JOINT_MIDDLE_METACARPAL_ULTRALEAP, 11) \
+ _(XR_HAND_FOREARM_JOINT_MIDDLE_PROXIMAL_ULTRALEAP, 12) \
+ _(XR_HAND_FOREARM_JOINT_MIDDLE_INTERMEDIATE_ULTRALEAP, 13) \
+ _(XR_HAND_FOREARM_JOINT_MIDDLE_DISTAL_ULTRALEAP, 14) \
+ _(XR_HAND_FOREARM_JOINT_MIDDLE_TIP_ULTRALEAP, 15) \
+ _(XR_HAND_FOREARM_JOINT_RING_METACARPAL_ULTRALEAP, 16) \
+ _(XR_HAND_FOREARM_JOINT_RING_PROXIMAL_ULTRALEAP, 17) \
+ _(XR_HAND_FOREARM_JOINT_RING_INTERMEDIATE_ULTRALEAP, 18) \
+ _(XR_HAND_FOREARM_JOINT_RING_DISTAL_ULTRALEAP, 19) \
+ _(XR_HAND_FOREARM_JOINT_RING_TIP_ULTRALEAP, 20) \
+ _(XR_HAND_FOREARM_JOINT_LITTLE_METACARPAL_ULTRALEAP, 21) \
+ _(XR_HAND_FOREARM_JOINT_LITTLE_PROXIMAL_ULTRALEAP, 22) \
+ _(XR_HAND_FOREARM_JOINT_LITTLE_INTERMEDIATE_ULTRALEAP, 23) \
+ _(XR_HAND_FOREARM_JOINT_LITTLE_DISTAL_ULTRALEAP, 24) \
+ _(XR_HAND_FOREARM_JOINT_LITTLE_TIP_ULTRALEAP, 25) \
+ _(XR_HAND_FOREARM_JOINT_ELBOW_ULTRALEAP, 26) \
+ _(XR_HAND_FOREARM_JOINT_MAX_ENUM_ULTRALEAP, 0x7FFFFFFF)
+
+#define XR_LIST_ENUM_XrSpaceQueryActionFB(_) \
+ _(XR_SPACE_QUERY_ACTION_LOAD_FB, 0) \
+ _(XR_SPACE_QUERY_ACTION_MAX_ENUM_FB, 0x7FFFFFFF)
+
+#define XR_LIST_ENUM_XrSpaceStorageLocationFB(_) \
+ _(XR_SPACE_STORAGE_LOCATION_INVALID_FB, 0) \
+ _(XR_SPACE_STORAGE_LOCATION_LOCAL_FB, 1) \
+ _(XR_SPACE_STORAGE_LOCATION_MAX_ENUM_FB, 0x7FFFFFFF)
+
+#define XR_LIST_ENUM_XrSpacePersistenceModeFB(_) \
+ _(XR_SPACE_PERSISTENCE_MODE_INVALID_FB, 0) \
+ _(XR_SPACE_PERSISTENCE_MODE_INDEFINITE_FB, 1) \
+ _(XR_SPACE_PERSISTENCE_MODE_MAX_ENUM_FB, 0x7FFFFFFF)
+
+#define XR_LIST_ENUM_XrPerformanceMetricsCounterUnitMETA(_) \
+ _(XR_PERFORMANCE_METRICS_COUNTER_UNIT_GENERIC_META, 0) \
+ _(XR_PERFORMANCE_METRICS_COUNTER_UNIT_PERCENTAGE_META, 1) \
+ _(XR_PERFORMANCE_METRICS_COUNTER_UNIT_MILLISECONDS_META, 2) \
+ _(XR_PERFORMANCE_METRICS_COUNTER_UNIT_BYTES_META, 3) \
+ _(XR_PERFORMANCE_METRICS_COUNTER_UNIT_HERTZ_META, 4) \
+ _(XR_PERFORMANCE_METRICS_COUNTER_UNIT_MAX_ENUM_META, 0x7FFFFFFF)
+
#define XR_LIST_BITS_XrInstanceCreateFlags(_)
#define XR_LIST_BITS_XrSessionCreateFlags(_)
@@ -763,13 +856,27 @@ XR_ENUM_STR(XrResult);
_(XR_PASSTHROUGH_STATE_CHANGED_RECOVERABLE_ERROR_BIT_FB, 0x00000004) \
_(XR_PASSTHROUGH_STATE_CHANGED_RESTORED_ERROR_BIT_FB, 0x00000008) \
-#define XR_LIST_BITS_XrRenderModelFlagsFB(_)
+#define XR_LIST_BITS_XrRenderModelFlagsFB(_) \
+ _(XR_RENDER_MODEL_SUPPORTS_GLTF_2_0_SUBSET_1_BIT_FB, 0x00000001) \
+ _(XR_RENDER_MODEL_SUPPORTS_GLTF_2_0_SUBSET_2_BIT_FB, 0x00000002) \
-#define XR_LIST_BITS_XrCompositionLayerSpaceWarpInfoFlagsFB(_)
+#define XR_LIST_BITS_XrCompositionLayerSpaceWarpInfoFlagsFB(_) \
+ _(XR_COMPOSITION_LAYER_SPACE_WARP_INFO_FRAME_SKIP_BIT_FB, 0x00000001) \
#define XR_LIST_BITS_XrDigitalLensControlFlagsALMALENCE(_) \
_(XR_DIGITAL_LENS_CONTROL_PROCESSING_DISABLE_BIT_ALMALENCE, 0x00000001) \
+#define XR_LIST_BITS_XrCompositionLayerSettingsFlagsFB(_) \
+ _(XR_COMPOSITION_LAYER_SETTINGS_NORMAL_SUPER_SAMPLING_BIT_FB, 0x00000001) \
+ _(XR_COMPOSITION_LAYER_SETTINGS_QUALITY_SUPER_SAMPLING_BIT_FB, 0x00000002) \
+ _(XR_COMPOSITION_LAYER_SETTINGS_NORMAL_SHARPENING_BIT_FB, 0x00000004) \
+ _(XR_COMPOSITION_LAYER_SETTINGS_QUALITY_SHARPENING_BIT_FB, 0x00000008) \
+
+#define XR_LIST_BITS_XrPerformanceMetricsCounterFlagsMETA(_) \
+ _(XR_PERFORMANCE_METRICS_COUNTER_ANY_VALUE_VALID_BIT_META, 0x00000001) \
+ _(XR_PERFORMANCE_METRICS_COUNTER_UINT_VALUE_VALID_BIT_META, 0x00000002) \
+ _(XR_PERFORMANCE_METRICS_COUNTER_FLOAT_VALUE_VALID_BIT_META, 0x00000004) \
+
#define XR_LIST_STRUCT_XrApiLayerProperties(_) \
_(type) \
_(next) \
@@ -1568,6 +1675,23 @@ XR_ENUM_STR(XrResult);
_(nodeId) \
_(pose) \
+#define XR_LIST_STRUCT_XrSpatialGraphStaticNodeBindingCreateInfoMSFT(_) \
+ _(type) \
+ _(next) \
+ _(space) \
+ _(poseInSpace) \
+ _(time) \
+
+#define XR_LIST_STRUCT_XrSpatialGraphNodeBindingPropertiesGetInfoMSFT(_) \
+ _(type) \
+ _(next) \
+
+#define XR_LIST_STRUCT_XrSpatialGraphNodeBindingPropertiesMSFT(_) \
+ _(type) \
+ _(next) \
+ _(nodeId) \
+ _(poseInNodeSpace) \
+
#define XR_LIST_STRUCT_XrSystemHandTrackingPropertiesEXT(_) \
_(type) \
_(next) \
@@ -1762,6 +1886,19 @@ XR_ENUM_STR(XrResult);
_(next) \
_(flags) \
+#define XR_LIST_STRUCT_XrInteractionProfileDpadBindingEXT(_) \
+ _(type) \
+ _(next) \
+ _(binding) \
+ _(actionSet) \
+ _(forceThreshold) \
+ _(forceThresholdReleased) \
+ _(centerRegion) \
+ _(wedgeAngle) \
+ _(isSticky) \
+ _(onHaptic) \
+ _(offHaptic) \
+
#define XR_LIST_STRUCT_XrInteractionProfileAnalogThresholdVALVE(_) \
_(type) \
_(next) \
@@ -2047,6 +2184,52 @@ XR_ENUM_STR(XrResult);
_(next) \
_(capsules) \
+#define XR_LIST_STRUCT_XrSystemSpatialEntityPropertiesFB(_) \
+ _(type) \
+ _(next) \
+ _(supportsSpatialEntity) \
+
+#define XR_LIST_STRUCT_XrSpatialAnchorCreateInfoFB(_) \
+ _(type) \
+ _(next) \
+ _(space) \
+ _(poseInSpace) \
+ _(time) \
+
+#define XR_LIST_STRUCT_XrSpaceComponentStatusSetInfoFB(_) \
+ _(type) \
+ _(next) \
+ _(componentType) \
+ _(enabled) \
+ _(timeout) \
+
+#define XR_LIST_STRUCT_XrSpaceComponentStatusFB(_) \
+ _(type) \
+ _(next) \
+ _(enabled) \
+ _(changePending) \
+
+#define XR_LIST_STRUCT_XrUuidEXT(_) \
+ _(data) \
+
+#define XR_LIST_STRUCT_XrEventDataSpatialAnchorCreateCompleteFB(_) \
+ _(type) \
+ _(next) \
+ _(requestId) \
+ _(result) \
+ _(space) \
+ _(uuid) \
+
+#define XR_LIST_STRUCT_XrEventDataSpaceSetStatusCompleteFB(_) \
+ _(type) \
+ _(next) \
+ _(requestId) \
+ _(result) \
+ _(space) \
+ _(uuid) \
+ _(componentType) \
+ _(enabled) \
+
#define XR_LIST_STRUCT_XrFoveationProfileCreateInfoFB(_) \
_(type) \
_(next) \
@@ -2157,6 +2340,13 @@ XR_ENUM_STR(XrResult);
_(next) \
_(textureColorMap) \
+#define XR_LIST_STRUCT_XrPassthroughBrightnessContrastSaturationFB(_) \
+ _(type) \
+ _(next) \
+ _(brightness) \
+ _(contrast) \
+ _(saturation) \
+
#define XR_LIST_STRUCT_XrEventDataPassthroughStateChangedFB(_) \
_(type) \
_(next) \
@@ -2193,6 +2383,11 @@ XR_ENUM_STR(XrResult);
_(next) \
_(supportsRenderModelLoading) \
+#define XR_LIST_STRUCT_XrRenderModelCapabilitiesRequestFB(_) \
+ _(type) \
+ _(next) \
+ _(flags) \
+
#define XR_LIST_STRUCT_XrViewLocateFoveatedRenderingVARJO(_) \
_(type) \
_(next) \
@@ -2248,6 +2443,92 @@ XR_ENUM_STR(XrResult);
_(spatialAnchorStore) \
_(spatialAnchorPersistenceName) \
+#define XR_LIST_STRUCT_XrSpaceQueryInfoBaseHeaderFB(_) \
+ _(type) \
+ _(next) \
+
+#define XR_LIST_STRUCT_XrSpaceFilterInfoBaseHeaderFB(_) \
+ _(type) \
+ _(next) \
+
+#define XR_LIST_STRUCT_XrSpaceQueryInfoFB(_) \
+ _(type) \
+ _(next) \
+ _(queryAction) \
+ _(maxResultCount) \
+ _(timeout) \
+ _(filter) \
+ _(excludeFilter) \
+
+#define XR_LIST_STRUCT_XrSpaceStorageLocationFilterInfoFB(_) \
+ _(type) \
+ _(next) \
+ _(location) \
+
+#define XR_LIST_STRUCT_XrSpaceUuidFilterInfoFB(_) \
+ _(type) \
+ _(next) \
+ _(uuidCount) \
+ _(uuids) \
+
+#define XR_LIST_STRUCT_XrSpaceComponentFilterInfoFB(_) \
+ _(type) \
+ _(next) \
+ _(componentType) \
+
+#define XR_LIST_STRUCT_XrSpaceQueryResultFB(_) \
+ _(space) \
+ _(uuid) \
+
+#define XR_LIST_STRUCT_XrSpaceQueryResultsFB(_) \
+ _(type) \
+ _(next) \
+ _(resultCapacityInput) \
+ _(resultCountOutput) \
+ _(results) \
+
+#define XR_LIST_STRUCT_XrEventDataSpaceQueryResultsAvailableFB(_) \
+ _(type) \
+ _(next) \
+ _(requestId) \
+
+#define XR_LIST_STRUCT_XrEventDataSpaceQueryCompleteFB(_) \
+ _(type) \
+ _(next) \
+ _(requestId) \
+ _(result) \
+
+#define XR_LIST_STRUCT_XrSpaceSaveInfoFB(_) \
+ _(type) \
+ _(next) \
+ _(space) \
+ _(location) \
+ _(persistenceMode) \
+
+#define XR_LIST_STRUCT_XrSpaceEraseInfoFB(_) \
+ _(type) \
+ _(next) \
+ _(space) \
+ _(location) \
+
+#define XR_LIST_STRUCT_XrEventDataSpaceSaveCompleteFB(_) \
+ _(type) \
+ _(next) \
+ _(requestId) \
+ _(result) \
+ _(space) \
+ _(uuid) \
+ _(location) \
+
+#define XR_LIST_STRUCT_XrEventDataSpaceEraseCompleteFB(_) \
+ _(type) \
+ _(next) \
+ _(requestId) \
+ _(result) \
+ _(space) \
+ _(uuid) \
+ _(location) \
+
#define XR_LIST_STRUCT_XrSwapchainImageFoveationVulkanFB(_) \
_(type) \
_(next) \
@@ -2313,14 +2594,42 @@ XR_ENUM_STR(XrResult);
_(next) \
_(flags) \
+#define XR_LIST_STRUCT_XrSpaceContainerFB(_) \
+ _(type) \
+ _(next) \
+ _(uuidCapacityInput) \
+ _(uuidCountOutput) \
+ _(uuids) \
+
#define XR_LIST_STRUCT_XrPassthroughKeyboardHandsIntensityFB(_) \
_(type) \
_(next) \
_(leftHandIntensity) \
_(rightHandIntensity) \
-#define XR_LIST_STRUCT_XrUuidEXT(_) \
- _(data) \
+#define XR_LIST_STRUCT_XrCompositionLayerSettingsFB(_) \
+ _(type) \
+ _(next) \
+ _(layerFlags) \
+
+#define XR_LIST_STRUCT_XrVulkanSwapchainCreateInfoMETA(_) \
+ _(type) \
+ _(next) \
+ _(additionalCreateFlags) \
+ _(additionalUsageFlags) \
+
+#define XR_LIST_STRUCT_XrPerformanceMetricsStateMETA(_) \
+ _(type) \
+ _(next) \
+ _(enabled) \
+
+#define XR_LIST_STRUCT_XrPerformanceMetricsCounterMETA(_) \
+ _(type) \
+ _(next) \
+ _(counterFlags) \
+ _(counterUnit) \
+ _(uintValue) \
+ _(floatValue) \
@@ -2398,6 +2707,9 @@ XR_ENUM_STR(XrResult);
_(XrCompositionLayerAlphaBlendFB, XR_TYPE_COMPOSITION_LAYER_ALPHA_BLEND_FB) \
_(XrViewConfigurationDepthRangeEXT, XR_TYPE_VIEW_CONFIGURATION_DEPTH_RANGE_EXT) \
_(XrSpatialGraphNodeSpaceCreateInfoMSFT, XR_TYPE_SPATIAL_GRAPH_NODE_SPACE_CREATE_INFO_MSFT) \
+ _(XrSpatialGraphStaticNodeBindingCreateInfoMSFT, XR_TYPE_SPATIAL_GRAPH_STATIC_NODE_BINDING_CREATE_INFO_MSFT) \
+ _(XrSpatialGraphNodeBindingPropertiesGetInfoMSFT, XR_TYPE_SPATIAL_GRAPH_NODE_BINDING_PROPERTIES_GET_INFO_MSFT) \
+ _(XrSpatialGraphNodeBindingPropertiesMSFT, XR_TYPE_SPATIAL_GRAPH_NODE_BINDING_PROPERTIES_MSFT) \
_(XrSystemHandTrackingPropertiesEXT, XR_TYPE_SYSTEM_HAND_TRACKING_PROPERTIES_EXT) \
_(XrHandTrackerCreateInfoEXT, XR_TYPE_HAND_TRACKER_CREATE_INFO_EXT) \
_(XrHandJointsLocateInfoEXT, XR_TYPE_HAND_JOINTS_LOCATE_INFO_EXT) \
@@ -2423,6 +2735,7 @@ XR_ENUM_STR(XrResult);
_(XrCompositionLayerReprojectionInfoMSFT, XR_TYPE_COMPOSITION_LAYER_REPROJECTION_INFO_MSFT) \
_(XrCompositionLayerReprojectionPlaneOverrideMSFT, XR_TYPE_COMPOSITION_LAYER_REPROJECTION_PLANE_OVERRIDE_MSFT) \
_(XrCompositionLayerSecureContentFB, XR_TYPE_COMPOSITION_LAYER_SECURE_CONTENT_FB) \
+ _(XrInteractionProfileDpadBindingEXT, XR_TYPE_INTERACTION_PROFILE_DPAD_BINDING_EXT) \
_(XrInteractionProfileAnalogThresholdVALVE, XR_TYPE_INTERACTION_PROFILE_ANALOG_THRESHOLD_VALVE) \
_(XrHandJointsMotionRangeInfoEXT, XR_TYPE_HAND_JOINTS_MOTION_RANGE_INFO_EXT) \
_(XrSceneObserverCreateInfoMSFT, XR_TYPE_SCENE_OBSERVER_CREATE_INFO_MSFT) \
@@ -2457,6 +2770,12 @@ XR_ENUM_STR(XrResult);
_(XrHandTrackingScaleFB, XR_TYPE_HAND_TRACKING_SCALE_FB) \
_(XrHandTrackingAimStateFB, XR_TYPE_HAND_TRACKING_AIM_STATE_FB) \
_(XrHandTrackingCapsulesStateFB, XR_TYPE_HAND_TRACKING_CAPSULES_STATE_FB) \
+ _(XrSystemSpatialEntityPropertiesFB, XR_TYPE_SYSTEM_SPATIAL_ENTITY_PROPERTIES_FB) \
+ _(XrSpatialAnchorCreateInfoFB, XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_FB) \
+ _(XrSpaceComponentStatusSetInfoFB, XR_TYPE_SPACE_COMPONENT_STATUS_SET_INFO_FB) \
+ _(XrSpaceComponentStatusFB, XR_TYPE_SPACE_COMPONENT_STATUS_FB) \
+ _(XrEventDataSpatialAnchorCreateCompleteFB, XR_TYPE_EVENT_DATA_SPATIAL_ANCHOR_CREATE_COMPLETE_FB) \
+ _(XrEventDataSpaceSetStatusCompleteFB, XR_TYPE_EVENT_DATA_SPACE_SET_STATUS_COMPLETE_FB) \
_(XrFoveationProfileCreateInfoFB, XR_TYPE_FOVEATION_PROFILE_CREATE_INFO_FB) \
_(XrSwapchainCreateInfoFoveationFB, XR_TYPE_SWAPCHAIN_CREATE_INFO_FOVEATION_FB) \
_(XrSwapchainStateFoveationFB, XR_TYPE_SWAPCHAIN_STATE_FOVEATION_FB) \
@@ -2474,12 +2793,14 @@ XR_ENUM_STR(XrResult);
_(XrPassthroughStyleFB, XR_TYPE_PASSTHROUGH_STYLE_FB) \
_(XrPassthroughColorMapMonoToRgbaFB, XR_TYPE_PASSTHROUGH_COLOR_MAP_MONO_TO_RGBA_FB) \
_(XrPassthroughColorMapMonoToMonoFB, XR_TYPE_PASSTHROUGH_COLOR_MAP_MONO_TO_MONO_FB) \
+ _(XrPassthroughBrightnessContrastSaturationFB, XR_TYPE_PASSTHROUGH_BRIGHTNESS_CONTRAST_SATURATION_FB) \
_(XrEventDataPassthroughStateChangedFB, XR_TYPE_EVENT_DATA_PASSTHROUGH_STATE_CHANGED_FB) \
_(XrRenderModelPathInfoFB, XR_TYPE_RENDER_MODEL_PATH_INFO_FB) \
_(XrRenderModelPropertiesFB, XR_TYPE_RENDER_MODEL_PROPERTIES_FB) \
_(XrRenderModelBufferFB, XR_TYPE_RENDER_MODEL_BUFFER_FB) \
_(XrRenderModelLoadInfoFB, XR_TYPE_RENDER_MODEL_LOAD_INFO_FB) \
_(XrSystemRenderModelPropertiesFB, XR_TYPE_SYSTEM_RENDER_MODEL_PROPERTIES_FB) \
+ _(XrRenderModelCapabilitiesRequestFB, XR_TYPE_RENDER_MODEL_CAPABILITIES_REQUEST_FB) \
_(XrViewLocateFoveatedRenderingVARJO, XR_TYPE_VIEW_LOCATE_FOVEATED_RENDERING_VARJO) \
_(XrFoveatedViewConfigurationViewVARJO, XR_TYPE_FOVEATED_VIEW_CONFIGURATION_VIEW_VARJO) \
_(XrSystemFoveatedRenderingPropertiesVARJO, XR_TYPE_SYSTEM_FOVEATED_RENDERING_PROPERTIES_VARJO) \
@@ -2489,10 +2810,25 @@ XR_ENUM_STR(XrResult);
_(XrMarkerSpaceCreateInfoVARJO, XR_TYPE_MARKER_SPACE_CREATE_INFO_VARJO) \
_(XrSpatialAnchorPersistenceInfoMSFT, XR_TYPE_SPATIAL_ANCHOR_PERSISTENCE_INFO_MSFT) \
_(XrSpatialAnchorFromPersistedAnchorCreateInfoMSFT, XR_TYPE_SPATIAL_ANCHOR_FROM_PERSISTED_ANCHOR_CREATE_INFO_MSFT) \
+ _(XrSpaceQueryInfoFB, XR_TYPE_SPACE_QUERY_INFO_FB) \
+ _(XrSpaceStorageLocationFilterInfoFB, XR_TYPE_SPACE_STORAGE_LOCATION_FILTER_INFO_FB) \
+ _(XrSpaceUuidFilterInfoFB, XR_TYPE_SPACE_UUID_FILTER_INFO_FB) \
+ _(XrSpaceComponentFilterInfoFB, XR_TYPE_SPACE_COMPONENT_FILTER_INFO_FB) \
+ _(XrSpaceQueryResultsFB, XR_TYPE_SPACE_QUERY_RESULTS_FB) \
+ _(XrEventDataSpaceQueryResultsAvailableFB, XR_TYPE_EVENT_DATA_SPACE_QUERY_RESULTS_AVAILABLE_FB) \
+ _(XrEventDataSpaceQueryCompleteFB, XR_TYPE_EVENT_DATA_SPACE_QUERY_COMPLETE_FB) \
+ _(XrSpaceSaveInfoFB, XR_TYPE_SPACE_SAVE_INFO_FB) \
+ _(XrSpaceEraseInfoFB, XR_TYPE_SPACE_ERASE_INFO_FB) \
+ _(XrEventDataSpaceSaveCompleteFB, XR_TYPE_EVENT_DATA_SPACE_SAVE_COMPLETE_FB) \
+ _(XrEventDataSpaceEraseCompleteFB, XR_TYPE_EVENT_DATA_SPACE_ERASE_COMPLETE_FB) \
_(XrCompositionLayerSpaceWarpInfoFB, XR_TYPE_COMPOSITION_LAYER_SPACE_WARP_INFO_FB) \
_(XrSystemSpaceWarpPropertiesFB, XR_TYPE_SYSTEM_SPACE_WARP_PROPERTIES_FB) \
_(XrDigitalLensControlALMALENCE, XR_TYPE_DIGITAL_LENS_CONTROL_ALMALENCE) \
+ _(XrSpaceContainerFB, XR_TYPE_SPACE_CONTAINER_FB) \
_(XrPassthroughKeyboardHandsIntensityFB, XR_TYPE_PASSTHROUGH_KEYBOARD_HANDS_INTENSITY_FB) \
+ _(XrCompositionLayerSettingsFB, XR_TYPE_COMPOSITION_LAYER_SETTINGS_FB) \
+ _(XrPerformanceMetricsStateMETA, XR_TYPE_PERFORMANCE_METRICS_STATE_META) \
+ _(XrPerformanceMetricsCounterMETA, XR_TYPE_PERFORMANCE_METRICS_COUNTER_META) \
@@ -2596,6 +2932,7 @@ XR_ENUM_STR(XrResult);
_(XrVulkanGraphicsDeviceGetInfoKHR, XR_TYPE_VULKAN_GRAPHICS_DEVICE_GET_INFO_KHR) \
_(XrSwapchainImageFoveationVulkanFB, XR_TYPE_SWAPCHAIN_IMAGE_FOVEATION_VULKAN_FB) \
_(XrSwapchainStateSamplerVulkanFB, XR_TYPE_SWAPCHAIN_STATE_SAMPLER_VULKAN_FB) \
+ _(XrVulkanSwapchainCreateInfoMETA, XR_TYPE_VULKAN_SWAPCHAIN_CREATE_INFO_META) \
#else
@@ -2698,6 +3035,7 @@ XR_ENUM_STR(XrResult);
_(XR_FB_android_surface_swapchain_create, 71) \
_(XR_FB_swapchain_update_state, 72) \
_(XR_FB_composition_layer_secure_content, 73) \
+ _(XR_EXT_dpad_binding, 79) \
_(XR_VALVE_analog_threshold, 80) \
_(XR_EXT_hand_joints_motion_range, 81) \
_(XR_KHR_loader_init, 89) \
@@ -2714,10 +3052,13 @@ XR_ENUM_STR(XrResult);
_(XR_HTCX_vive_tracker_interaction, 104) \
_(XR_HTC_facial_tracking, 105) \
_(XR_HTC_vive_focus3_controller_interaction, 106) \
+ _(XR_HTC_hand_interaction, 107) \
+ _(XR_HTC_vive_wrist_tracker_interaction, 108) \
_(XR_FB_color_space, 109) \
_(XR_FB_hand_tracking_mesh, 111) \
_(XR_FB_hand_tracking_aim, 112) \
_(XR_FB_hand_tracking_capsules, 113) \
+ _(XR_FB_spatial_entity, 114) \
_(XR_FB_foveation, 115) \
_(XR_FB_foveation_configuration, 116) \
_(XR_FB_keyboard_tracking, 117) \
@@ -2729,7 +3070,11 @@ XR_ENUM_STR(XrResult);
_(XR_VARJO_composition_layer_depth_test, 123) \
_(XR_VARJO_environment_depth_estimation, 124) \
_(XR_VARJO_marker_tracking, 125) \
+ _(XR_VARJO_view_offset, 126) \
_(XR_MSFT_spatial_anchor_persistence, 143) \
+ _(XR_ULTRALEAP_hand_tracking_forearm, 150) \
+ _(XR_FB_spatial_entity_query, 157) \
+ _(XR_FB_spatial_entity_storage, 159) \
_(XR_OCULUS_audio_device_guid, 160) \
_(XR_FB_foveation_vulkan, 161) \
_(XR_FB_swapchain_update_state_android_surface, 162) \
@@ -2738,7 +3083,11 @@ XR_ENUM_STR(XrResult);
_(XR_KHR_swapchain_usage_input_attachment_bit, 166) \
_(XR_FB_space_warp, 172) \
_(XR_ALMALENCE_digital_lens_control, 197) \
+ _(XR_FB_spatial_entity_container, 200) \
_(XR_FB_passthrough_keyboard_hands, 204) \
+ _(XR_FB_composition_layer_settings, 205) \
+ _(XR_META_vulkan_swapchain_create_info, 228) \
+ _(XR_META_performance_metrics, 233) \
_(XR_EXT_uuid, 300) \
diff --git a/thirdparty/openxr/src/common/xr_linear.h b/thirdparty/openxr/src/common/xr_linear.h
index 9ffb49a4b6..1f0e803b7a 100644
--- a/thirdparty/openxr/src/common/xr_linear.h
+++ b/thirdparty/openxr/src/common/xr_linear.h
@@ -126,12 +126,12 @@ static const XrColor4f XrColorCyan = {0.0f, 1.0f, 1.0f, 1.0f};
static const XrColor4f XrColorLightGrey = {0.7f, 0.7f, 0.7f, 1.0f};
static const XrColor4f XrColorDarkGrey = {0.3f, 0.3f, 0.3f, 1.0f};
-enum GraphicsAPI { GRAPHICS_VULKAN, GRAPHICS_OPENGL, GRAPHICS_OPENGL_ES, GRAPHICS_D3D };
+typedef enum GraphicsAPI { GRAPHICS_VULKAN, GRAPHICS_OPENGL, GRAPHICS_OPENGL_ES, GRAPHICS_D3D } GraphicsAPI;
// Column-major, pre-multiplied. This type does not exist in the OpenXR API and is provided for convenience.
-struct XrMatrix4x4f {
+typedef struct XrMatrix4x4f {
float m[16];
-};
+} XrMatrix4x4f;
inline static float XrRcpSqrt(const float x) {
const float SMALLEST_NON_DENORMAL = 1.1754943508222875e-038f; // ( 1U << 23 )
diff --git a/thirdparty/openxr/src/xr_generated_dispatch_table.c b/thirdparty/openxr/src/xr_generated_dispatch_table.c
index 79fbefc52a..91fa0c3ca0 100644
--- a/thirdparty/openxr/src/xr_generated_dispatch_table.c
+++ b/thirdparty/openxr/src/xr_generated_dispatch_table.c
@@ -202,6 +202,9 @@ void GeneratedXrPopulateDispatchTable(struct XrGeneratedDispatchTable *table,
// ---- XR_MSFT_spatial_graph_bridge extension commands
(get_inst_proc_addr(instance, "xrCreateSpatialGraphNodeSpaceMSFT", (PFN_xrVoidFunction*)&table->CreateSpatialGraphNodeSpaceMSFT));
+ (get_inst_proc_addr(instance, "xrTryCreateSpatialGraphStaticNodeBindingMSFT", (PFN_xrVoidFunction*)&table->TryCreateSpatialGraphStaticNodeBindingMSFT));
+ (get_inst_proc_addr(instance, "xrDestroySpatialGraphNodeBindingMSFT", (PFN_xrVoidFunction*)&table->DestroySpatialGraphNodeBindingMSFT));
+ (get_inst_proc_addr(instance, "xrGetSpatialGraphNodeBindingPropertiesMSFT", (PFN_xrVoidFunction*)&table->GetSpatialGraphNodeBindingPropertiesMSFT));
// ---- XR_EXT_hand_tracking extension commands
(get_inst_proc_addr(instance, "xrCreateHandTrackerEXT", (PFN_xrVoidFunction*)&table->CreateHandTrackerEXT));
@@ -269,6 +272,13 @@ void GeneratedXrPopulateDispatchTable(struct XrGeneratedDispatchTable *table,
// ---- XR_FB_hand_tracking_mesh extension commands
(get_inst_proc_addr(instance, "xrGetHandMeshFB", (PFN_xrVoidFunction*)&table->GetHandMeshFB));
+ // ---- XR_FB_spatial_entity extension commands
+ (get_inst_proc_addr(instance, "xrCreateSpatialAnchorFB", (PFN_xrVoidFunction*)&table->CreateSpatialAnchorFB));
+ (get_inst_proc_addr(instance, "xrGetSpaceUuidFB", (PFN_xrVoidFunction*)&table->GetSpaceUuidFB));
+ (get_inst_proc_addr(instance, "xrEnumerateSpaceSupportedComponentsFB", (PFN_xrVoidFunction*)&table->EnumerateSpaceSupportedComponentsFB));
+ (get_inst_proc_addr(instance, "xrSetSpaceComponentStatusFB", (PFN_xrVoidFunction*)&table->SetSpaceComponentStatusFB));
+ (get_inst_proc_addr(instance, "xrGetSpaceComponentStatusFB", (PFN_xrVoidFunction*)&table->GetSpaceComponentStatusFB));
+
// ---- XR_FB_foveation extension commands
(get_inst_proc_addr(instance, "xrCreateFoveationProfileFB", (PFN_xrVoidFunction*)&table->CreateFoveationProfileFB));
(get_inst_proc_addr(instance, "xrDestroyFoveationProfileFB", (PFN_xrVoidFunction*)&table->DestroyFoveationProfileFB));
@@ -316,6 +326,9 @@ void GeneratedXrPopulateDispatchTable(struct XrGeneratedDispatchTable *table,
(get_inst_proc_addr(instance, "xrGetMarkerSizeVARJO", (PFN_xrVoidFunction*)&table->GetMarkerSizeVARJO));
(get_inst_proc_addr(instance, "xrCreateMarkerSpaceVARJO", (PFN_xrVoidFunction*)&table->CreateMarkerSpaceVARJO));
+ // ---- XR_VARJO_view_offset extension commands
+ (get_inst_proc_addr(instance, "xrSetViewOffsetVARJO", (PFN_xrVoidFunction*)&table->SetViewOffsetVARJO));
+
// ---- XR_MSFT_spatial_anchor_persistence extension commands
(get_inst_proc_addr(instance, "xrCreateSpatialAnchorStoreConnectionMSFT", (PFN_xrVoidFunction*)&table->CreateSpatialAnchorStoreConnectionMSFT));
(get_inst_proc_addr(instance, "xrDestroySpatialAnchorStoreConnectionMSFT", (PFN_xrVoidFunction*)&table->DestroySpatialAnchorStoreConnectionMSFT));
@@ -325,6 +338,14 @@ void GeneratedXrPopulateDispatchTable(struct XrGeneratedDispatchTable *table,
(get_inst_proc_addr(instance, "xrUnpersistSpatialAnchorMSFT", (PFN_xrVoidFunction*)&table->UnpersistSpatialAnchorMSFT));
(get_inst_proc_addr(instance, "xrClearSpatialAnchorStoreMSFT", (PFN_xrVoidFunction*)&table->ClearSpatialAnchorStoreMSFT));
+ // ---- XR_FB_spatial_entity_query extension commands
+ (get_inst_proc_addr(instance, "xrQuerySpacesFB", (PFN_xrVoidFunction*)&table->QuerySpacesFB));
+ (get_inst_proc_addr(instance, "xrRetrieveSpaceQueryResultsFB", (PFN_xrVoidFunction*)&table->RetrieveSpaceQueryResultsFB));
+
+ // ---- XR_FB_spatial_entity_storage extension commands
+ (get_inst_proc_addr(instance, "xrSaveSpaceFB", (PFN_xrVoidFunction*)&table->SaveSpaceFB));
+ (get_inst_proc_addr(instance, "xrEraseSpaceFB", (PFN_xrVoidFunction*)&table->EraseSpaceFB));
+
// ---- XR_OCULUS_audio_device_guid extension commands
#if defined(XR_USE_PLATFORM_WIN32)
(get_inst_proc_addr(instance, "xrGetAudioOutputDeviceGuidOculus", (PFN_xrVoidFunction*)&table->GetAudioOutputDeviceGuidOculus));
@@ -336,8 +357,17 @@ void GeneratedXrPopulateDispatchTable(struct XrGeneratedDispatchTable *table,
// ---- XR_ALMALENCE_digital_lens_control extension commands
(get_inst_proc_addr(instance, "xrSetDigitalLensControlALMALENCE", (PFN_xrVoidFunction*)&table->SetDigitalLensControlALMALENCE));
+ // ---- XR_FB_spatial_entity_container extension commands
+ (get_inst_proc_addr(instance, "xrGetSpaceContainerFB", (PFN_xrVoidFunction*)&table->GetSpaceContainerFB));
+
// ---- XR_FB_passthrough_keyboard_hands extension commands
(get_inst_proc_addr(instance, "xrPassthroughLayerSetKeyboardHandsIntensityFB", (PFN_xrVoidFunction*)&table->PassthroughLayerSetKeyboardHandsIntensityFB));
+
+ // ---- XR_META_performance_metrics extension commands
+ (get_inst_proc_addr(instance, "xrEnumeratePerformanceMetricsCounterPathsMETA", (PFN_xrVoidFunction*)&table->EnumeratePerformanceMetricsCounterPathsMETA));
+ (get_inst_proc_addr(instance, "xrSetPerformanceMetricsStateMETA", (PFN_xrVoidFunction*)&table->SetPerformanceMetricsStateMETA));
+ (get_inst_proc_addr(instance, "xrGetPerformanceMetricsStateMETA", (PFN_xrVoidFunction*)&table->GetPerformanceMetricsStateMETA));
+ (get_inst_proc_addr(instance, "xrQueryPerformanceMetricsCounterMETA", (PFN_xrVoidFunction*)&table->QueryPerformanceMetricsCounterMETA));
}
diff --git a/thirdparty/openxr/src/xr_generated_dispatch_table.h b/thirdparty/openxr/src/xr_generated_dispatch_table.h
index 34e0de93f5..51d48bef43 100644
--- a/thirdparty/openxr/src/xr_generated_dispatch_table.h
+++ b/thirdparty/openxr/src/xr_generated_dispatch_table.h
@@ -205,6 +205,9 @@ struct XrGeneratedDispatchTable {
// ---- XR_MSFT_spatial_graph_bridge extension commands
PFN_xrCreateSpatialGraphNodeSpaceMSFT CreateSpatialGraphNodeSpaceMSFT;
+ PFN_xrTryCreateSpatialGraphStaticNodeBindingMSFT TryCreateSpatialGraphStaticNodeBindingMSFT;
+ PFN_xrDestroySpatialGraphNodeBindingMSFT DestroySpatialGraphNodeBindingMSFT;
+ PFN_xrGetSpatialGraphNodeBindingPropertiesMSFT GetSpatialGraphNodeBindingPropertiesMSFT;
// ---- XR_EXT_hand_tracking extension commands
PFN_xrCreateHandTrackerEXT CreateHandTrackerEXT;
@@ -272,6 +275,13 @@ struct XrGeneratedDispatchTable {
// ---- XR_FB_hand_tracking_mesh extension commands
PFN_xrGetHandMeshFB GetHandMeshFB;
+ // ---- XR_FB_spatial_entity extension commands
+ PFN_xrCreateSpatialAnchorFB CreateSpatialAnchorFB;
+ PFN_xrGetSpaceUuidFB GetSpaceUuidFB;
+ PFN_xrEnumerateSpaceSupportedComponentsFB EnumerateSpaceSupportedComponentsFB;
+ PFN_xrSetSpaceComponentStatusFB SetSpaceComponentStatusFB;
+ PFN_xrGetSpaceComponentStatusFB GetSpaceComponentStatusFB;
+
// ---- XR_FB_foveation extension commands
PFN_xrCreateFoveationProfileFB CreateFoveationProfileFB;
PFN_xrDestroyFoveationProfileFB DestroyFoveationProfileFB;
@@ -319,6 +329,9 @@ struct XrGeneratedDispatchTable {
PFN_xrGetMarkerSizeVARJO GetMarkerSizeVARJO;
PFN_xrCreateMarkerSpaceVARJO CreateMarkerSpaceVARJO;
+ // ---- XR_VARJO_view_offset extension commands
+ PFN_xrSetViewOffsetVARJO SetViewOffsetVARJO;
+
// ---- XR_MSFT_spatial_anchor_persistence extension commands
PFN_xrCreateSpatialAnchorStoreConnectionMSFT CreateSpatialAnchorStoreConnectionMSFT;
PFN_xrDestroySpatialAnchorStoreConnectionMSFT DestroySpatialAnchorStoreConnectionMSFT;
@@ -328,6 +341,14 @@ struct XrGeneratedDispatchTable {
PFN_xrUnpersistSpatialAnchorMSFT UnpersistSpatialAnchorMSFT;
PFN_xrClearSpatialAnchorStoreMSFT ClearSpatialAnchorStoreMSFT;
+ // ---- XR_FB_spatial_entity_query extension commands
+ PFN_xrQuerySpacesFB QuerySpacesFB;
+ PFN_xrRetrieveSpaceQueryResultsFB RetrieveSpaceQueryResultsFB;
+
+ // ---- XR_FB_spatial_entity_storage extension commands
+ PFN_xrSaveSpaceFB SaveSpaceFB;
+ PFN_xrEraseSpaceFB EraseSpaceFB;
+
// ---- XR_OCULUS_audio_device_guid extension commands
#if defined(XR_USE_PLATFORM_WIN32)
PFN_xrGetAudioOutputDeviceGuidOculus GetAudioOutputDeviceGuidOculus;
@@ -339,8 +360,17 @@ struct XrGeneratedDispatchTable {
// ---- XR_ALMALENCE_digital_lens_control extension commands
PFN_xrSetDigitalLensControlALMALENCE SetDigitalLensControlALMALENCE;
+ // ---- XR_FB_spatial_entity_container extension commands
+ PFN_xrGetSpaceContainerFB GetSpaceContainerFB;
+
// ---- XR_FB_passthrough_keyboard_hands extension commands
PFN_xrPassthroughLayerSetKeyboardHandsIntensityFB PassthroughLayerSetKeyboardHandsIntensityFB;
+
+ // ---- XR_META_performance_metrics extension commands
+ PFN_xrEnumeratePerformanceMetricsCounterPathsMETA EnumeratePerformanceMetricsCounterPathsMETA;
+ PFN_xrSetPerformanceMetricsStateMETA SetPerformanceMetricsStateMETA;
+ PFN_xrGetPerformanceMetricsStateMETA GetPerformanceMetricsStateMETA;
+ PFN_xrQueryPerformanceMetricsCounterMETA QueryPerformanceMetricsCounterMETA;
};
diff --git a/thirdparty/vulkan/vk_mem_alloc.h b/thirdparty/vulkan/vk_mem_alloc.h
index d96f2dacc0..184ee005d8 100644
--- a/thirdparty/vulkan/vk_mem_alloc.h
+++ b/thirdparty/vulkan/vk_mem_alloc.h
@@ -25,7 +25,7 @@
/** \mainpage Vulkan Memory Allocator
-<b>Version 3.0.1-development (2022-03-28)</b>
+<b>Version 3.0.1 (2022-05-26)</b>
Copyright (c) 2017-2022 Advanced Micro Devices, Inc. All rights reserved. \n
License: MIT
@@ -300,9 +300,9 @@ extern "C" {
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
-//
+//
// INTERFACE
-//
+//
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
@@ -488,7 +488,7 @@ typedef enum VmaMemoryUsage
When using this flag, if you want to map the allocation (using vmaMapMemory() or #VMA_ALLOCATION_CREATE_MAPPED_BIT),
you must pass one of the flags: #VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT or #VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT
in VmaAllocationCreateInfo::flags.
-
+
It can be used only with functions that let the library know `VkBufferCreateInfo` or `VkImageCreateInfo`, e.g.
vmaCreateBuffer(), vmaCreateImage(), vmaFindMemoryTypeIndexForBufferInfo(), vmaFindMemoryTypeIndexForImageInfo()
and not with generic memory allocation functions.
@@ -552,7 +552,7 @@ typedef enum VmaAllocationCreateFlagBits
*/
VMA_ALLOCATION_CREATE_MAPPED_BIT = 0x00000004,
/** \deprecated Preserved for backward compatibility. Consider using vmaSetAllocationName() instead.
-
+
Set this flag to treat VmaAllocationCreateInfo::pUserData as pointer to a
null-terminated string. Instead of copying pointer value, a local copy of the
string is made and stored in allocation's `pName`. The string is automatically
@@ -579,14 +579,14 @@ typedef enum VmaAllocationCreateFlagBits
*/
VMA_ALLOCATION_CREATE_WITHIN_BUDGET_BIT = 0x00000100,
/** \brief Set this flag if the allocated memory will have aliasing resources.
-
+
Usage of this flag prevents supplying `VkMemoryDedicatedAllocateInfoKHR` when #VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT is specified.
Otherwise created dedicated memory will not be suitable for aliasing resources, resulting in Vulkan Validation Layer errors.
*/
VMA_ALLOCATION_CREATE_CAN_ALIAS_BIT = 0x00000200,
/**
Requests possibility to map the allocation (using vmaMapMemory() or #VMA_ALLOCATION_CREATE_MAPPED_BIT).
-
+
- If you use #VMA_MEMORY_USAGE_AUTO or other `VMA_MEMORY_USAGE_AUTO*` value,
you must use this flag to be able to map the allocation. Otherwise, mapping is incorrect.
- If you use other value of #VmaMemoryUsage, this flag is ignored and mapping is always possible in memory types that are `HOST_VISIBLE`.
@@ -602,7 +602,7 @@ typedef enum VmaAllocationCreateFlagBits
VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT = 0x00000400,
/**
Requests possibility to map the allocation (using vmaMapMemory() or #VMA_ALLOCATION_CREATE_MAPPED_BIT).
-
+
- If you use #VMA_MEMORY_USAGE_AUTO or other `VMA_MEMORY_USAGE_AUTO*` value,
you must use this flag to be able to map the allocation. Otherwise, mapping is incorrect.
- If you use other value of #VmaMemoryUsage, this flag is ignored and mapping is always possible in memory types that are `HOST_VISIBLE`.
@@ -724,7 +724,7 @@ typedef enum VmaDefragmentationFlagBits
VMA_DEFRAGMENTATION_FLAG_ALGORITHM_EXTENSIVE_BIT = 0x8,
/// A bit mask to extract only `ALGORITHM` bits from entire set of flags.
- VMA_DEFRAGMENTATION_FLAG_ALGORITHM_MASK =
+ VMA_DEFRAGMENTATION_FLAG_ALGORITHM_MASK =
VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FAST_BIT |
VMA_DEFRAGMENTATION_FLAG_ALGORITHM_BALANCED_BIT |
VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FULL_BIT |
@@ -980,7 +980,7 @@ typedef struct VmaVulkanFunctions
#if VMA_DEDICATED_ALLOCATION || VMA_VULKAN_VERSION >= 1001000
/// Fetch "vkGetBufferMemoryRequirements2" on Vulkan >= 1.1, fetch "vkGetBufferMemoryRequirements2KHR" when using VK_KHR_dedicated_allocation extension.
PFN_vkGetBufferMemoryRequirements2KHR VMA_NULLABLE vkGetBufferMemoryRequirements2KHR;
- /// Fetch "vkGetImageMemoryRequirements 2" on Vulkan >= 1.1, fetch "vkGetImageMemoryRequirements2KHR" when using VK_KHR_dedicated_allocation extension.
+ /// Fetch "vkGetImageMemoryRequirements2" on Vulkan >= 1.1, fetch "vkGetImageMemoryRequirements2KHR" when using VK_KHR_dedicated_allocation extension.
PFN_vkGetImageMemoryRequirements2KHR VMA_NULLABLE vkGetImageMemoryRequirements2KHR;
#endif
#if VMA_BIND_MEMORY2 || VMA_VULKAN_VERSION >= 1001000
@@ -1117,19 +1117,19 @@ typedef struct VmaStatistics
*/
uint32_t blockCount;
/** \brief Number of #VmaAllocation objects allocated.
-
+
Dedicated allocations have their own blocks, so each one adds 1 to `allocationCount` as well as `blockCount`.
*/
uint32_t allocationCount;
/** \brief Number of bytes allocated in `VkDeviceMemory` blocks.
-
+
\note To avoid confusion, please be aware that what Vulkan calls an "allocation" - a whole `VkDeviceMemory` object
(e.g. as in `VkPhysicalDeviceLimits::maxMemoryAllocationCount`) is called a "block" in VMA, while VMA calls
"allocation" a #VmaAllocation object that represents a memory region sub-allocated from such block, usually for a single buffer or image.
*/
VkDeviceSize blockBytes;
/** \brief Total number of bytes occupied by all #VmaAllocation objects.
-
+
Always less or equal than `blockBytes`.
Difference `(blockBytes - allocationBytes)` is the amount of memory allocated from Vulkan
but unused by any #VmaAllocation.
@@ -1387,9 +1387,9 @@ typedef struct VmaAllocationInfo
*/
void* VMA_NULLABLE pUserData;
/** \brief Custom allocation name that was set with vmaSetAllocationName().
-
+
It can change after call to vmaSetAllocationName() for this allocation.
-
+
Another way to set custom name is to pass it in VmaAllocationCreateInfo::pUserData with
additional flag #VMA_ALLOCATION_CREATE_USER_DATA_COPY_STRING_BIT set [DEPRECATED].
*/
@@ -1429,7 +1429,7 @@ typedef struct VmaDefragmentationMove
/// Allocation that should be moved.
VmaAllocation VMA_NOT_NULL srcAllocation;
/** \brief Temporary allocation pointing to destination memory that will replace `srcAllocation`.
-
+
\warning Do not store this allocation in your data structures! It exists only temporarily, for the duration of the defragmentation pass,
to be used for binding new buffer/image to the destination memory using e.g. vmaBindBufferMemory().
vmaEndDefragmentationPass() will destroy it and make `srcAllocation` point to this memory.
@@ -1446,16 +1446,16 @@ typedef struct VmaDefragmentationPassMoveInfo
/// Number of elements in the `pMoves` array.
uint32_t moveCount;
/** \brief Array of moves to be performed by the user in the current defragmentation pass.
-
+
Pointer to an array of `moveCount` elements, owned by VMA, created in vmaBeginDefragmentationPass(), destroyed in vmaEndDefragmentationPass().
For each element, you should:
-
+
1. Create a new buffer/image in the place pointed by VmaDefragmentationMove::dstMemory + VmaDefragmentationMove::dstOffset.
2. Copy data from the VmaDefragmentationMove::srcAllocation e.g. using `vkCmdCopyBuffer`, `vkCmdCopyImage`.
3. Make sure these commands finished executing on the GPU.
4. Destroy the old buffer/image.
-
+
Only then you can finish defragmentation pass by calling vmaEndDefragmentationPass().
After this call, the allocation will point to the new place in memory.
@@ -1539,7 +1539,7 @@ typedef struct VmaVirtualAllocationCreateInfo
typedef struct VmaVirtualAllocationInfo
{
/** \brief Offset of the allocation.
-
+
Offset at which the allocation was made.
*/
VkDeviceSize offset;
@@ -2364,7 +2364,7 @@ vkDestroyBuffer(device, buffer, allocationCallbacks);
vmaFreeMemory(allocator, allocation);
\endcode
-It it safe to pass null as buffer and/or allocation.
+It is safe to pass null as buffer and/or allocation.
*/
VMA_CALL_PRE void VMA_CALL_POST vmaDestroyBuffer(
VmaAllocator VMA_NOT_NULL allocator,
@@ -2396,7 +2396,7 @@ vkDestroyImage(device, image, allocationCallbacks);
vmaFreeMemory(allocator, allocation);
\endcode
-It it safe to pass null as image and/or allocation.
+It is safe to pass null as image and/or allocation.
*/
VMA_CALL_PRE void VMA_CALL_POST vmaDestroyImage(
VmaAllocator VMA_NOT_NULL allocator,
@@ -2555,9 +2555,9 @@ VMA_CALL_PRE void VMA_CALL_POST vmaFreeStatsString(
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
-//
+//
// IMPLEMENTATION
-//
+//
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
@@ -2578,6 +2578,9 @@ VMA_CALL_PRE void VMA_CALL_POST vmaFreeStatsString(
#ifdef _MSC_VER
#include <intrin.h> // For functions like __popcnt, _BitScanForward etc.
#endif
+#if __cplusplus >= 202002L || _MSVC_LANG >= 202002L // C++20
+ #include <bit> // For std::popcount
+#endif
/*******************************************************************************
CONFIGURATION SECTION
@@ -3180,12 +3183,16 @@ But you need to check in runtime whether user's CPU supports these, as some old
*/
static inline uint32_t VmaCountBitsSet(uint32_t v)
{
+#if __cplusplus >= 202002L || _MSVC_LANG >= 202002L // C++20
+ return std::popcount(v);
+#else
uint32_t c = v - ((v >> 1) & 0x55555555);
c = ((c >> 2) & 0x33333333) + (c & 0x33333333);
c = ((c >> 4) + c) & 0x0F0F0F0F;
c = ((c >> 8) + c) & 0x00FF00FF;
c = ((c >> 16) + c) & 0x0000FFFF;
return c;
+#endif
}
static inline uint8_t VmaBitScanLSB(uint64_t mask)
@@ -3374,60 +3381,6 @@ static inline bool VmaStrIsEmpty(const char* pStr)
return pStr == VMA_NULL || *pStr == '\0';
}
-#if VMA_STATS_STRING_ENABLED
-static const char* VmaAlgorithmToStr(uint32_t algorithm)
-{
- switch (algorithm)
- {
- case VMA_POOL_CREATE_LINEAR_ALGORITHM_BIT:
- return "Linear";
- case 0:
- return "TLSF";
- default:
- VMA_ASSERT(0);
- return "";
- }
-}
-#endif // VMA_STATS_STRING_ENABLED
-
-#ifndef VMA_SORT
-template<typename Iterator, typename Compare>
-Iterator VmaQuickSortPartition(Iterator beg, Iterator end, Compare cmp)
-{
- Iterator centerValue = end; --centerValue;
- Iterator insertIndex = beg;
- for (Iterator memTypeIndex = beg; memTypeIndex < centerValue; ++memTypeIndex)
- {
- if (cmp(*memTypeIndex, *centerValue))
- {
- if (insertIndex != memTypeIndex)
- {
- VMA_SWAP(*memTypeIndex, *insertIndex);
- }
- ++insertIndex;
- }
- }
- if (insertIndex != centerValue)
- {
- VMA_SWAP(*insertIndex, *centerValue);
- }
- return insertIndex;
-}
-
-template<typename Iterator, typename Compare>
-void VmaQuickSort(Iterator beg, Iterator end, Compare cmp)
-{
- if (beg < end)
- {
- Iterator it = VmaQuickSortPartition<Iterator, Compare>(beg, end, cmp);
- VmaQuickSort<Iterator, Compare>(beg, it, cmp);
- VmaQuickSort<Iterator, Compare>(it + 1, end, cmp);
- }
-}
-
-#define VMA_SORT(beg, end, cmp) VmaQuickSort(beg, end, cmp)
-#endif // VMA_SORT
-
/*
Returns true if two memory blocks occupy overlapping pages.
ResourceA must be in less memory offset than ResourceB.
@@ -5073,7 +5026,7 @@ public:
VmaIntrusiveLinkedList& operator=(VmaIntrusiveLinkedList&& src);
VmaIntrusiveLinkedList& operator=(const VmaIntrusiveLinkedList&) = delete;
~VmaIntrusiveLinkedList() { VMA_HEAVY_ASSERT(IsEmpty()); }
-
+
size_t GetCount() const { return m_Count; }
bool IsEmpty() const { return m_Count == 0; }
ItemType* Front() { return m_Front; }
@@ -5485,7 +5438,7 @@ public:
// Writes a string value inside "".
// pStr can contain any ANSI characters, including '"', new line etc. - they will be properly escaped.
void WriteString(const char* pStr);
-
+
// Begins writing a string value.
// Call BeginString, ContinueString, ContinueString, ..., EndString instead of
// WriteString to conveniently build the string content incrementally, made of
@@ -6463,7 +6416,7 @@ void VmaBlockMetadata::DebugLogAllocation(VkDeviceSize offset, VkDeviceSize size
(uint32_t)allocation->GetSuballocationType());
#endif // VMA_STATS_STRING_ENABLED
}
-
+
}
#if VMA_STATS_STRING_ENABLED
@@ -10941,7 +10894,7 @@ public:
uint32_t GetAlgorithm() const { return m_Algorithm; }
bool HasExplicitBlockSize() const { return m_ExplicitBlockSize; }
float GetPriority() const { return m_Priority; }
- void* const GetAllocationNextPtr() const { return m_pMemoryAllocateNext; }
+ const void* GetAllocationNextPtr() const { return m_pMemoryAllocateNext; }
// To be used only while the m_Mutex is locked. Used during defragmentation.
size_t GetBlockCount() const { return m_Blocks.size(); }
// To be used only while the m_Mutex is locked. Used during defragmentation.
@@ -12783,7 +12736,7 @@ void VmaBlockVector::IncrementallySortBlocks()
void VmaBlockVector::SortByFreeSize()
{
VMA_SORT(m_Blocks.begin(), m_Blocks.end(),
- [](auto* b1, auto* b2)
+ [](VmaDeviceMemoryBlock* b1, VmaDeviceMemoryBlock* b2) -> bool
{
return b1->m_pMetadata->GetSumFreeSize() < b2->m_pMetadata->GetSumFreeSize();
});
@@ -13029,7 +12982,7 @@ VmaDefragmentationContext_T::VmaDefragmentationContext_T(
}
}
}
-
+
switch (m_Algorithm)
{
case 0: // Default algorithm
@@ -13155,7 +13108,7 @@ VkResult VmaDefragmentationContext_T::DefragmentPassEnd(VmaDefragmentationPassMo
vector = m_pBlockVectors[vectorIndex];
VMA_ASSERT(vector != VMA_NULL);
}
-
+
switch (move.operation)
{
case VMA_DEFRAGMENTATION_MOVE_OPERATION_COPY:
@@ -13452,7 +13405,7 @@ bool VmaDefragmentationContext_T::ReallocWithinBlock(VmaBlockVector& vector, Vma
case CounterStatus::Pass:
break;
}
-
+
VkDeviceSize offset = moveData.move.srcAllocation->GetOffset();
if (offset != 0 && metadata->GetSumFreeSize() >= moveData.size)
{
@@ -13636,7 +13589,7 @@ bool VmaDefragmentationContext_T::ComputeDefragmentation_Balanced(VmaBlockVector
prevFreeRegionSize = nextFreeRegionSize;
}
}
-
+
// No moves perfomed, update statistics to current vector state
if (startMoveCount == m_Moves.size() && !update)
{
@@ -13923,7 +13876,7 @@ void VmaDefragmentationContext_T::UpdateVectorStatistics(VmaBlockVector& vector,
state.avgFreeSize /= freeCount;
}
-bool VmaDefragmentationContext_T::MoveDataToFreeBlocks(VmaSuballocationType currentType,
+bool VmaDefragmentationContext_T::MoveDataToFreeBlocks(VmaSuballocationType currentType,
VmaBlockVector& vector, size_t firstFreeBlock,
bool& texturePresent, bool& bufferPresent, bool& otherPresent)
{
@@ -15919,6 +15872,7 @@ void VmaAllocator_T::UpdateVulkanBudget()
void VmaAllocator_T::FillAllocation(const VmaAllocation hAllocation, uint8_t pattern)
{
if(VMA_DEBUG_INITIALIZE_ALLOCATIONS &&
+ hAllocation->IsMappingAllowed() &&
(m_MemProps.memoryTypes[hAllocation->GetMemoryTypeIndex()].propertyFlags & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT) != 0)
{
void* pData = VMA_NULL;
@@ -16010,8 +15964,8 @@ void VmaAllocator_T::PrintDetailedMap(VmaJsonWriter& json)
json.ContinueString_Size(index++);
if (pool->GetName())
{
- json.WriteString(" - ");
- json.WriteString(pool->GetName());
+ json.ContinueString(" - ");
+ json.ContinueString(pool->GetName());
}
json.EndString();
@@ -18427,7 +18381,7 @@ for(;;)
VmaAllocationInfo allocInfo;
vmaGetAllocationInfo(allocator, pMoves[i].srcAllocation, &allocInfo);
MyEngineResourceData* resData = (MyEngineResourceData*)allocInfo.pUserData;
-
+
// Recreate and bind this buffer/image at: pass.pMoves[i].dstMemory, pass.pMoves[i].dstOffset.
VkImageCreateInfo imgCreateInfo = ...
VkImage newImg;
@@ -18439,7 +18393,7 @@ for(;;)
// Issue a vkCmdCopyBuffer/vkCmdCopyImage to copy its content to the new place.
vkCmdCopyImage(cmdBuf, resData->img, ..., newImg, ...);
}
-
+
// Make sure the copy commands finished executing.
vkWaitForFences(...);
@@ -18451,7 +18405,7 @@ for(;;)
}
// Update appropriate descriptors to point to the new places...
-
+
res = vmaEndDefragmentationPass(allocator, defragCtx, &pass);
if(res == VK_SUCCESS)
break;
@@ -18605,7 +18559,7 @@ To do that, fill VmaAllocationCreateInfo::pUserData field when creating
an allocation. It is an opaque `void*` pointer. You can use it e.g. as a pointer,
some handle, index, key, ordinal number or any other value that would associate
the allocation with your custom metadata.
-It it useful to identify appropriate data structures in your engine given #VmaAllocation,
+It is useful to identify appropriate data structures in your engine given #VmaAllocation,
e.g. when doing \ref defragmentation.
\code
@@ -18836,14 +18790,14 @@ To do it, define macro `VMA_DEBUG_INITIALIZE_ALLOCATIONS` to 1.
#include "vk_mem_alloc.h"
\endcode
-It makes memory of all new allocations initialized to bit pattern `0xDCDCDCDC`.
+It makes memory of new allocations initialized to bit pattern `0xDCDCDCDC`.
Before an allocation is destroyed, its memory is filled with bit pattern `0xEFEFEFEF`.
Memory is automatically mapped and unmapped if necessary.
If you find these values while debugging your program, good chances are that you incorrectly
read Vulkan memory that is allocated but not initialized, or already freed, respectively.
-Memory initialization works only with memory types that are `HOST_VISIBLE`.
+Memory initialization works only with memory types that are `HOST_VISIBLE` and with allocations that can be mapped.
It works also with dedicated allocations.
\section debugging_memory_usage_margins Margins
@@ -19116,13 +19070,13 @@ so you need to create another "staging" allocation and perform explicit transfer
VkBufferCreateInfo bufCreateInfo = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO };
bufCreateInfo.size = 65536;
bufCreateInfo.usage = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT;
-
+
VmaAllocationCreateInfo allocCreateInfo = {};
allocCreateInfo.usage = VMA_MEMORY_USAGE_AUTO;
allocCreateInfo.flags = VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT |
VMA_ALLOCATION_CREATE_HOST_ACCESS_ALLOW_TRANSFER_INSTEAD_BIT |
VMA_ALLOCATION_CREATE_MAPPED_BIT;
-
+
VkBuffer buf;
VmaAllocation alloc;
VmaAllocationInfo allocInfo;